diff --git a/.github/workflows/contracts.yml b/.github/workflows/contracts.yml index ea5d333f..3dafdfe8 100644 --- a/.github/workflows/contracts.yml +++ b/.github/workflows/contracts.yml @@ -115,9 +115,6 @@ jobs: - name: Install dependencies run: yarn install --frozen-lockfile - - name: Resolve latest contracts - run: yarn upgrade @keep-network/keep-core@${{ github.event.inputs.environment }} - - name: Configure tenderly env: TENDERLY_TOKEN: ${{ secrets.TENDERLY_TOKEN }} @@ -186,13 +183,6 @@ jobs: - name: Install needed dependencies run: yarn install --frozen-lockfile - # If we don't remove the `keep-core` contracts from `node-modules`, the - # `etherscan-verify` plugins tries to verify them, which is not desired. - - name: Prepare for verification on Etherscan - run: | - rm -rf ./node_modules/@keep-network/keep-core - rm -rf ./external/npm - - name: Verify contracts on Etherscan env: ETHERSCAN_API_KEY: ${{ secrets.ETHERSCAN_API_KEY }} @@ -226,9 +216,6 @@ jobs: - name: Install dependencies run: yarn install --frozen-lockfile - - name: Resolve latest contracts - run: yarn upgrade @keep-network/keep-core@${{ github.event.inputs.environment }} - - name: Deploy contracts env: CHAIN_API_URL: ${{ secrets.SEPOLIA_ETH_HOSTNAME_HTTP }} diff --git a/.github/workflows/npm.yml b/.github/workflows/npm.yml index 3c054b81..5f1857b9 100644 --- a/.github/workflows/npm.yml +++ b/.github/workflows/npm.yml @@ -27,10 +27,8 @@ jobs: registry-url: "https://registry.npmjs.org" cache: "yarn" - - name: Resolve latest contracts - run: | - yarn upgrade --exact \ - @keep-network/keep-core + - name: Install needed dependencies + run: yarn install --frozen-lockfile # Deploy contracts to a local network to generate deployment artifacts that # are required by dashboard compilation. diff --git a/contracts/governance/StakerGovernorVotes.sol b/contracts/governance/StakerGovernorVotes.sol index c55c1413..a97228a9 100644 --- a/contracts/governance/StakerGovernorVotes.sol +++ b/contracts/governance/StakerGovernorVotes.sol @@ -19,8 +19,7 @@ import "./GovernorParameters.sol"; import "./IVotesHistory.sol"; /// @title StakerGovernorVotes -/// @notice Staker DAO voting power extraction from staked T positions, -// including legacy stakes (NU/KEEP). +/// @notice Staker DAO voting power extraction from staked T positions. abstract contract StakerGovernorVotes is GovernorParameters { IVotesHistory public immutable staking; @@ -29,8 +28,7 @@ abstract contract StakerGovernorVotes is GovernorParameters { } /// @notice Read the voting weight from the snapshot mechanism in the T - /// staking contracts. Note that this also tracks legacy stakes - /// (NU/KEEP). + /// staking contracts. /// @param account Delegate account with T staking voting power /// @param blockNumber The block number to get the vote balance at /// @dev See {IGovernor-getVotes} diff --git a/contracts/governance/TokenholderGovernorVotes.sol b/contracts/governance/TokenholderGovernorVotes.sol index 69a17ba8..79be03e6 100644 --- a/contracts/governance/TokenholderGovernorVotes.sol +++ b/contracts/governance/TokenholderGovernorVotes.sol @@ -20,7 +20,7 @@ import "./IVotesHistory.sol"; /// @title TokenholderGovernorVotes /// @notice Tokenholder DAO voting power extraction from both liquid and staked -/// T token positions, including legacy stakes (NU/KEEP). +/// T token positions. abstract contract TokenholderGovernorVotes is GovernorParameters { IVotesHistory public immutable token; IVotesHistory public immutable staking; @@ -35,10 +35,6 @@ abstract contract TokenholderGovernorVotes is GovernorParameters { /// two voting power sources: /// - Liquid T, tracked by the T token contract /// - Stakes in the T network, tracked by the T staking contract. - /// Note that this also tracks legacy stakes (NU/KEEP); legacy - /// stakes count for tokenholders' voting power, but not for the - /// total voting power of the Tokenholder DAO - /// (see {_getPastTotalSupply}). /// @param account Tokenholder account in the T network /// @param blockNumber The block number to get the vote balance at /// @dev See {IGovernor-getVotes} @@ -57,10 +53,7 @@ abstract contract TokenholderGovernorVotes is GovernorParameters { /// @notice Compute the total voting power for Tokenholder DAO. Note how it /// only uses the token total supply as source, as native T tokens /// that are staked continue existing, but as deposits in the - /// staking contract. However, legacy stakes can't contribute to the - /// total voting power as they're already implicitly counted as part - /// of Vending Machines' liquid balance; hence, we only need to read - /// total voting power from the token. + /// staking contract. /// @param blockNumber The block number to get the vote power at function _getPastTotalSupply(uint256 blockNumber) internal diff --git a/contracts/staking/IStaking.sol b/contracts/staking/IStaking.sol index fa5d60da..e15f1126 100644 --- a/contracts/staking/IStaking.sol +++ b/contracts/staking/IStaking.sol @@ -27,12 +27,6 @@ pragma solidity ^0.8.9; /// delegation optimizes the network throughput without compromising the /// security of the owners’ stake. interface IStaking { - enum StakeType { - NU, - KEEP, - T - } - // // // Delegating a stake @@ -174,41 +168,13 @@ interface IStaking { // // - /// @notice Reduces the liquid T stake amount by the provided amount and + /// @notice Reduces the T stake amount by the provided amount and /// withdraws T to the owner. Reverts if there is at least one - /// authorization higher than the sum of the legacy stake and - /// remaining liquid T stake or if the unstake amount is higher than - /// the liquid T stake amount. Can be called only by the delegation - /// owner or the staking provider. - function unstakeT(address stakingProvider, uint96 amount) external; - - /// @notice Sets the legacy KEEP staking contract active stake amount cached - /// in T staking contract to 0. Reverts if the amount of liquid T - /// staked in T staking contract is lower than the highest - /// application authorization. This function allows to unstake from - /// KEEP staking contract and still being able to operate in T - /// network and earning rewards based on the liquid T staked. Can be - /// called only by the delegation owner or the staking provider. - function unstakeKeep(address stakingProvider) external; - - /// @notice Sets to 0 the amount of T that is cached from the legacy - /// NU staking contract. Reverts if there is at least one - /// authorization higher than the sum of remaining legacy NU stake - /// and native T stake for that staking provider or if the unstaked - /// amount is higher than the cached legacy stake amount. If succeeded, - /// the legacy NU stake can be partially or fully undelegated on - /// the legacy NU staking contract. This function allows to unstake - /// from NU staking contract while still being able to operate in - /// T network and earning rewards based on the native T staked. - /// Can be called only by the stake owner or the staking provider. - function unstakeNu(address stakingProvider) external; - - /// @notice Sets cached legacy stake amount to 0, sets the liquid T stake - /// amount to 0 and withdraws all liquid T from the stake to the - /// owner. Reverts if there is at least one non-zero authorization. + /// authorization higher than the remaining T stake or + /// if the unstake amount is higher than the T stake amount. /// Can be called only by the delegation owner or the staking /// provider. - function unstakeAll(address stakingProvider) external; + function unstakeT(address stakingProvider, uint96 amount) external; // // @@ -265,17 +231,11 @@ interface IStaking { view returns (uint96); - /// @notice Returns staked amount of T, Keep and Nu for the specified - /// staking provider. - /// @dev All values are in T denomination - function stakes(address stakingProvider) + /// @notice Returns staked amount of T for the specified staking provider. + function stakeAmount(address stakingProvider) external view - returns ( - uint96 tStake, - uint96 keepInTStake, - uint96 nuInTStake - ); + returns (uint96); /// @notice Returns start staking timestamp. /// @dev This value is set at most once. @@ -290,9 +250,6 @@ interface IStaking { view returns (bool); - /// @notice Returns staked amount of NU for the specified staking provider. - function stakedNu(address stakingProvider) external view returns (uint256); - /// @notice Gets the stake owner, the beneficiary and the authorizer /// for the specified staking provider address. /// @return owner Stake owner address. @@ -313,23 +270,8 @@ interface IStaking { /// @notice Returns length of slashing queue function getSlashingQueueLength() external view returns (uint256); - /// @notice Returns minimum possible stake for T, KEEP or NU in T - /// denomination. - /// @dev For example, suppose the given staking provider has 10 T, 20 T worth - /// of KEEP, and 30 T worth of NU all staked, and the maximum - /// application authorization is 40 T, then `getMinStaked` for - /// that staking provider returns: - /// * 0 T if KEEP stake type specified i.e. - /// min = 40 T max - (10 T) = 30 T - /// * 10 T if NU stake type specified i.e. - /// min = 40 T max - (10 T) = 30 T - /// * 0 T if T stake type specified i.e. - /// min = 40 T max = 40 T - /// In other words, the minimum stake amount for the specified - /// stake type is the minimum amount of stake of the given type - /// needed to satisfy the maximum application authorization given - /// the staked amounts of the T stake types for that staking provider. - function getMinStaked(address stakingProvider, StakeType stakeTypes) + /// @notice Returns the maximum application authorization + function getMaxAuthorization(address stakingProvider) external view returns (uint96); diff --git a/contracts/staking/TokenStaking.sol b/contracts/staking/TokenStaking.sol index 29f50cd3..8ab19625 100644 --- a/contracts/staking/TokenStaking.sol +++ b/contracts/staking/TokenStaking.sol @@ -28,12 +28,8 @@ import "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol"; import "@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol"; /// @notice TokenStaking is the main staking contract of the Threshold Network. -/// Apart from the basic usage of enabling T stakes, it also acts as a -/// sort of "meta-staking" contract, accepting existing legacy NU/KEEP -/// stakes. Additionally, it serves as application manager for the apps -/// that run on the Threshold Network. Note that legacy NU/KEEP staking -/// contracts see TokenStaking as an application (e.g., slashing is -/// requested by TokenStaking and performed by the legacy contracts). +/// It serves as application manager for the apps that run on +/// the Threshold Network. /// @dev TokenStaking is upgradeable, using OpenZeppelin's Upgradeability /// framework. As such, it is required to satisfy OZ's guidelines, like /// restrictions on constructors, immutable variables, base contracts and @@ -43,6 +39,13 @@ contract TokenStaking is Initializable, IStaking, Checkpoints { using PercentUtils for uint256; using SafeCastUpgradeable for uint256; + // enum is used for Staked event to have backward compatibility + enum StakeType { + NU, + KEEP, + T + } + enum ApplicationStatus { NOT_APPROVED, APPROVED, @@ -86,9 +89,6 @@ contract TokenStaking is Initializable, IStaking, Checkpoints { /// @custom:oz-upgrades-unsafe-allow state-variable-immutable T internal immutable token; - /// @custom:oz-upgrades-unsafe-allow state-variable-immutable - uint256 internal immutable nucypherRatio; - address public governance; uint96 public minTStakeAmount; uint256 public authorizationCeiling; @@ -215,14 +215,11 @@ contract TokenStaking is Initializable, IStaking, Checkpoints { } /// @param _token Address of T token contract - /// @param _nucypherVendingMachine Address of NuCypher vending machine /// @custom:oz-upgrades-unsafe-allow constructor - constructor(T _token, VendingMachine _nucypherVendingMachine) { + constructor(T _token) { // calls to check contracts are working require(_token.totalSupply() > 0, "Wrong input parameters"); token = _token; - - nucypherRatio = _nucypherVendingMachine.ratio(); } function initialize() external initializer { @@ -653,13 +650,12 @@ contract TokenStaking is Initializable, IStaking, Checkpoints { // // - /// @notice Reduces the liquid T stake amount by the provided amount and + /// @notice Reduces the T stake amount by the provided amount and /// withdraws T to the owner. Reverts if there is at least one - /// authorization higher than the sum of the legacy stake and - /// remaining liquid T stake or if the unstake amount is higher than - /// the liquid T stake amount. Can be called only by the owner or - /// the staking provider. Can only be called when 24h passed since - /// the stake has been delegated. + /// authorization higher than the remaining T stake or + /// if the unstake amount is higher than the T stake amount. + /// Can be called only by the delegation owner or the staking + /// provider. function unstakeT(address stakingProvider, uint96 amount) external override @@ -670,7 +666,7 @@ contract TokenStaking is Initializable, IStaking, Checkpoints { ]; require( amount > 0 && - amount + getMinStaked(stakingProvider, StakeType.T) <= + amount + getMaxAuthorization(stakingProvider) <= stakingProviderStruct.tStake, "Too much to unstake" ); @@ -687,121 +683,6 @@ contract TokenStaking is Initializable, IStaking, Checkpoints { token.safeTransfer(stakingProviderStruct.owner, amount); } - /// @notice Sets the legacy KEEP staking contract active stake amount cached - /// in T staking contract to 0. Reverts if the amount of liquid T - /// staked in T staking contract is lower than the highest - /// application authorization. This function allows to unstake from - /// KEEP staking contract and still being able to operate in T - /// network and earning rewards based on the liquid T staked. Can be - /// called only by the delegation owner or the staking provider. - /// Can only be called when 24h passed since the stake has been - /// delegated. - /// @dev This function (or `unstakeAll`) must be called before - /// `undelegate`/`undelegateAt` in Keep staking contract. Otherwise - /// provider can be slashed by `notifyKeepStakeDiscrepancy` method. - function unstakeKeep(address stakingProvider) - external - override - onlyOwnerOrStakingProvider(stakingProvider) - { - StakingProviderInfo storage stakingProviderStruct = stakingProviders[ - stakingProvider - ]; - uint96 keepInTStake = stakingProviderStruct.keepInTStake; - require(keepInTStake != 0, "Nothing to unstake"); - require( - getMinStaked(stakingProvider, StakeType.KEEP) == 0, - "Keep stake still authorized" - ); - - emit Unstaked(stakingProvider, keepInTStake); - stakingProviderStruct.keepInTStake = 0; - decreaseStakeCheckpoint(stakingProvider, keepInTStake); - } - - /// @notice Sets to 0 the amount of T that is cached from the legacy - /// NU staking contract. Reverts if there is at least one - /// authorization higher than the sum of remaining legacy NU stake - /// and native T stake for that staking provider or if the unstaked - /// amount is higher than the cached legacy stake amount. If succeeded, - /// the legacy NU stake can be partially or fully undelegated on - /// the legacy NU staking contract. This function allows to unstake - /// from NU staking contract while still being able to operate in - /// T network and earning rewards based on the native T staked. - /// Can be called only by the stake owner or the staking provider. - /// @dev This function (or `unstakeAll`) must be called before `withdraw` - /// in NuCypher staking contract. Otherwise NU tokens can't be - /// unlocked. - /// @param stakingProvider Staking provider address - function unstakeNu(address stakingProvider) - external - override - onlyOwnerOrStakingProvider(stakingProvider) - { - StakingProviderInfo storage stakingProviderStruct = stakingProviders[ - stakingProvider - ]; - uint96 nuInTStake = stakingProviderStruct.nuInTStake; - require(nuInTStake != 0, "Nothing to unstake"); - require( - getMinStaked(stakingProvider, StakeType.NU) == 0, - "NU stake still authorized" - ); - - stakingProviderStruct.nuInTStake = 0; - decreaseStakeCheckpoint(stakingProvider, nuInTStake); - emit Unstaked(stakingProvider, nuInTStake); - } - - /// @notice Sets cached legacy stake amount to 0, sets the liquid T stake - /// amount to 0 and withdraws all liquid T from the stake to the - /// owner. Reverts if there is at least one non-zero authorization. - /// Can be called only by the delegation owner or the staking - /// provider. Can only be called when 24h passed since the stake - /// has been delegated. - function unstakeAll(address stakingProvider) - external - override - onlyOwnerOrStakingProvider(stakingProvider) - { - StakingProviderInfo storage stakingProviderStruct = stakingProviders[ - stakingProvider - ]; - require( - stakingProviderStruct.authorizedApplications.length == 0, - "Stake still authorized" - ); - require( - stakingProviderStruct.startStakingTimestamp + MIN_STAKE_TIME <= - /* solhint-disable-next-line not-rely-on-time */ - block.timestamp, - "Can't unstake earlier than 24h" - ); - - uint96 unstaked = stakingProviderStruct.tStake + - stakingProviderStruct.keepInTStake + - stakingProviderStruct.nuInTStake; - emit Unstaked(stakingProvider, unstaked); - uint96 amount = stakingProviderStruct.tStake; - stakingProviderStruct.tStake = 0; - stakingProviderStruct.keepInTStake = 0; - stakingProviderStruct.nuInTStake = 0; - decreaseStakeCheckpoint(stakingProvider, unstaked); - - if (amount > 0) { - token.safeTransfer(stakingProviderStruct.owner, amount); - } - } - - /// @notice Involuntary decrease authorization for all application up to T - /// stake amount for all staking providers in the list. - /// Sets cached legacy stake amount to 0. Can be called by anyone - function forceUnstakeLegacy(address[] memory _stakingProviders) external { - for (uint256 i = 0; i < _stakingProviders.length; i++) { - forceUnstakeLegacy(_stakingProviders[i]); - } - } - // // // Keeping information in sync @@ -941,25 +822,30 @@ contract TokenStaking is Initializable, IStaking, Checkpoints { .authorized; } - /// @notice Returns staked amount of T, Keep and Nu for the specified - /// staking provider. - /// @dev All values are in T denomination + /// @notice Returns staked amount of T for the specified staking provider. + /// @dev Method is deprecated. Use `stakeAmount` instead function stakes(address stakingProvider) external view - override returns ( uint96 tStake, uint96 keepInTStake, uint96 nuInTStake ) { - StakingProviderInfo storage stakingProviderStruct = stakingProviders[ - stakingProvider - ]; - tStake = stakingProviderStruct.tStake; - keepInTStake = stakingProviderStruct.keepInTStake; - nuInTStake = stakingProviderStruct.nuInTStake; + tStake = stakingProviders[stakingProvider].tStake; + keepInTStake = 0; + nuInTStake = 0; + } + + /// @notice Returns staked amount of T for the specified staking provider. + function stakeAmount(address stakingProvider) + external + view + override + returns (uint96) + { + return stakingProviders[stakingProvider].tStake; } /// @notice Returns start staking timestamp. @@ -983,19 +869,6 @@ contract TokenStaking is Initializable, IStaking, Checkpoints { return stakingProviders[stakingProvider].autoIncrease; } - /// @notice Returns staked amount of NU for the specified staking provider. - function stakedNu(address stakingProvider) - external - view - override - returns (uint256 nuAmount) - { - (nuAmount, ) = convertFromT( - stakingProviders[stakingProvider].nuInTStake, - nucypherRatio - ); - } - /// @notice Gets the stake owner, the beneficiary and the authorizer /// for the specified staking provider address. /// @return owner Stake owner address. @@ -1078,88 +951,8 @@ contract TokenStaking is Initializable, IStaking, Checkpoints { ); } - /// @notice Involuntary decrease authorization for all application up to T - /// stake amount. Sets cached legacy stake amount to 0. - /// Can be called by anyone - function forceUnstakeLegacy(address stakingProvider) public { - StakingProviderInfo storage stakingProviderStruct = stakingProviders[ - stakingProvider - ]; - uint96 legacyStake = stakingProviderStruct.keepInTStake + - stakingProviderStruct.nuInTStake; - require(legacyStake > 0, "No legacy stake"); - - // similar to authorizationDecrease method - uint256 applicationsToDelete = 0; - for ( - uint256 i = 0; - i < stakingProviderStruct.authorizedApplications.length; - i++ - ) { - address authorizedApplication = stakingProviderStruct - .authorizedApplications[i]; - AppAuthorization storage authorization = stakingProviderStruct - .authorizations[authorizedApplication]; - uint96 fromAmount = authorization.authorized; - - if (fromAmount <= stakingProviderStruct.tStake) { - continue; - } - authorization.authorized = stakingProviderStruct.tStake; - - bool successful = true; - //slither-disable-next-line calls-loop - try - IApplication(authorizedApplication) - .involuntaryAuthorizationDecrease{ - gas: GAS_LIMIT_AUTHORIZATION_DECREASE - }(stakingProvider, fromAmount, authorization.authorized) - {} catch { - successful = false; - } - if (authorization.deauthorizing > authorization.authorized) { - authorization.deauthorizing = authorization.authorized; - } - emit AuthorizationInvoluntaryDecreased( - stakingProvider, - authorizedApplication, - fromAmount, - authorization.authorized, - successful - ); - if (authorization.authorized == 0) { - applicationsToDelete++; - } - } - if (applicationsToDelete > 0) { - cleanAuthorizedApplications( - stakingProviderStruct, - applicationsToDelete - ); - } - - emit Unstaked(stakingProvider, legacyStake); - stakingProviderStruct.keepInTStake = 0; - stakingProviderStruct.nuInTStake = 0; - decreaseStakeCheckpoint(stakingProvider, legacyStake); - } - - /// @notice Returns minimum possible stake for T, KEEP or NU in T denomination - /// @dev For example, suppose the given staking provider has 10 T, 20 T worth - /// of KEEP, and 30 T worth of NU all staked, and the maximum - /// application authorization is 40 T, then `getMinStaked` for - /// that staking provider returns: - /// * 0 T if KEEP stake type specified i.e. - /// min = 40 T max - (10 T) = 30 T - /// * 10 T if NU stake type specified i.e. - /// min = 40 T max - (10 T) = 30 T - /// * 0 T if T stake type specified i.e. - /// min = 40 T max = 40 T - /// In other words, the minimum stake amount for the specified - /// stake type is the minimum amount of stake of the given type - /// needed to satisfy the maximum application authorization given - /// the staked amounts of the T stake types for that staking provider. - function getMinStaked(address stakingProvider, StakeType stakeTypes) + /// @notice Returns the maximum application authorization + function getMaxAuthorization(address stakingProvider) public view override @@ -1182,16 +975,6 @@ contract TokenStaking is Initializable, IStaking, Checkpoints { stakingProviderStruct.authorizations[application].authorized ); } - - if (maxAuthorization == 0) { - return 0; - } - if (stakeTypes != StakeType.T) { - maxAuthorization -= MathUpgradeable.min( - maxAuthorization, - stakingProviderStruct.tStake - ); - } return maxAuthorization.toUint96(); } @@ -1231,9 +1014,7 @@ contract TokenStaking is Initializable, IStaking, Checkpoints { StakingProviderInfo storage stakingProviderStruct = stakingProviders[ stakingProvider ]; - uint96 stakingProviderBalance = stakingProviderStruct.tStake + - stakingProviderStruct.keepInTStake + - stakingProviderStruct.nuInTStake; + uint96 stakingProviderBalance = stakingProviderStruct.tStake; address oldDelegatee = delegates(stakingProvider); _delegates[stakingProvider] = delegatee; emit DelegateChanged(stakingProvider, oldDelegatee, delegatee); @@ -1305,9 +1086,7 @@ contract TokenStaking is Initializable, IStaking, Checkpoints { slashing.stakingProvider ]; uint96 tAmountToSlash = slashing.amount; - uint96 oldStake = stakingProviderStruct.tStake + - stakingProviderStruct.keepInTStake + - stakingProviderStruct.nuInTStake; + uint96 oldStake = stakingProviderStruct.tStake; // slash T tAmountToBurn = MathUpgradeable .min(tAmountToSlash, stakingProviderStruct.tStake) @@ -1322,21 +1101,18 @@ contract TokenStaking is Initializable, IStaking, Checkpoints { stakingProviderStruct, slashedAmount ); - uint96 newStake = stakingProviderStruct.tStake + - stakingProviderStruct.keepInTStake + - stakingProviderStruct.nuInTStake; + uint96 newStake = stakingProviderStruct.tStake; decreaseStakeCheckpoint(slashing.stakingProvider, oldStake - newStake); } /// @notice Synchronize authorizations (if needed) after slashing stake + //slither-disable-next-line dead-code function authorizationDecrease( address stakingProvider, StakingProviderInfo storage stakingProviderStruct, uint96 slashedAmount ) internal { - uint96 totalStake = stakingProviderStruct.tStake + - stakingProviderStruct.nuInTStake + - stakingProviderStruct.keepInTStake; + uint96 totalStake = stakingProviderStruct.tStake; uint256 applicationsToDelete = 0; for ( uint256 i = 0; @@ -1479,18 +1255,4 @@ contract TokenStaking is Initializable, IStaking, Checkpoints { governance = newGuvnor; emit GovernanceTransferred(oldGuvnor, newGuvnor); } - - /// @notice Returns the amount of legacy tokens that's obtained from - /// `tAmount` T tokens for the given `ratio`, and the T remainder - /// that can't be converted. - function convertFromT(uint96 tAmount, uint256 ratio) - internal - pure - returns (uint256 amount, uint96 tRemainder) - { - //slither-disable-next-line weak-prng - tRemainder = (tAmount % ratio).toUint96(); - uint256 convertibleAmount = tAmount - tRemainder; - amount = (convertibleAmount * CONVERSION_DIVISOR) / ratio; - } } diff --git a/contracts/test/TokenStakingTestSet.sol b/contracts/test/TokenStakingTestSet.sol index abdadc2c..eb54e0b9 100644 --- a/contracts/test/TokenStakingTestSet.sol +++ b/contracts/test/TokenStakingTestSet.sol @@ -149,9 +149,7 @@ contract ManagedGrantMock { } contract ExtendedTokenStaking is TokenStaking { - constructor(T _token, VendingMachine _nucypherVendingMachine) - TokenStaking(_token, _nucypherVendingMachine) - {} + constructor(T _token) TokenStaking(_token) {} function cleanAuthorizedApplications( address stakingProvider, @@ -192,72 +190,3 @@ contract ExtendedTokenStaking is TokenStaking { return stakingProviders[stakingProvider].authorizedApplications; } } - -contract LegacyTokenStaking is TokenStaking { - /// @custom:oz-upgrades-unsafe-allow constructor - constructor(T _token, VendingMachine _nucypherVendingMachine) - TokenStaking(_token, _nucypherVendingMachine) - {} - - function setLegacyStakingProviderDefault(address stakingProvider) external { - setLegacyStakingProvider( - stakingProvider, - stakingProvider, - payable(stakingProvider), - stakingProvider - ); - } - - function addLegacyStake( - address stakingProvider, - uint96 keepInTStake, - uint96 nuInTStake - ) external { - StakingProviderInfo storage stakingProviderStruct = stakingProviders[ - stakingProvider - ]; - stakingProviderStruct.keepInTStake += keepInTStake; - stakingProviderStruct.nuInTStake += nuInTStake; - if (stakingProviderStruct.startStakingTimestamp == 0) { - /* solhint-disable-next-line not-rely-on-time */ - stakingProviderStruct.startStakingTimestamp = block.timestamp; - } - increaseStakeCheckpoint(stakingProvider, keepInTStake + nuInTStake); - } - - function forceIncreaseAuthorization( - address stakingProvider, - address application, - uint96 amount - ) external { - StakingProviderInfo storage stakingProviderStruct = stakingProviders[ - stakingProvider - ]; - AppAuthorization storage authorization = stakingProviderStruct - .authorizations[application]; - uint96 fromAmount = authorization.authorized; - if (fromAmount == 0) { - stakingProviderStruct.authorizedApplications.push(application); - } - authorization.authorized += amount; - IApplication(application).authorizationIncreased( - stakingProvider, - fromAmount, - authorization.authorized - ); - } - - function setLegacyStakingProvider( - address stakingProvider, - address owner, - address payable beneficiary, - address authorizer - ) public { - StakingProviderInfo storage stakingProviderStruct = stakingProviders[ - stakingProvider - ]; - stakingProviderStruct.owner = owner; - stakingProviderStruct.authorizer = authorizer; - stakingProviderStruct.beneficiary = beneficiary; - } -} diff --git a/deploy/07_deploy_token_staking.ts b/deploy/07_deploy_token_staking.ts index 1f96e7ae..67f6ccf3 100644 --- a/deploy/07_deploy_token_staking.ts +++ b/deploy/07_deploy_token_staking.ts @@ -9,12 +9,8 @@ const func: DeployFunction = async function (hre: HardhatRuntimeEnvironment) { const { deployer } = await getNamedAccounts() const T = await deployments.get("T") - const VendingMachineNuCypher = await deployments.get("VendingMachineNuCypher") - const tokenStakingConstructorArgs = [ - T.address, - VendingMachineNuCypher.address, - ] + const tokenStakingConstructorArgs = [T.address] const tokenStakingInitializerArgs = [] // TODO: Consider upgradable deployment also for sepolia. diff --git a/docs/rfc-1-staking-contract.adoc b/docs/rfc-1-staking-contract.adoc index 6a244fa9..644ef31b 100644 --- a/docs/rfc-1-staking-contract.adoc +++ b/docs/rfc-1-staking-contract.adoc @@ -296,37 +296,10 @@ will be added to already authorized applications. ==== `unstakeT(address stakingProvider, uint96 amount) external onlyOwnerOrStakingProvider(stakingProvider)` -Reduces the liquid T stake amount by `amount` and withdraws `amount` of T -to the owner. Reverts if there is at least one authorization higher than the sum -of a legacy stake and remaining liquid T stake or if the `amount` is higher than -the liquid T stake amount. Can be called only by the owner or the staking provider. - -==== `unstakeKeep(address stakingProvider) external onlyOwnerOrStakingProvider(stakingProvider)` - -Sets the legacy staking contract active stake amount cached in T staking -contract to 0. Reverts if the amount of liquid T staked in T staking contract is -lower than the highest application authorization. This function allows to -unstake from Keep staking contract and sill being able to operate in T network -and earning rewards based on the liquid T staked. Can be called only by the -delegation owner or the staking provider. - -==== `unstakeNu(address stakingProvider, uint96 amount) external onlyOwnerOrStakingProvider(stakingProvider)` - -Sets to 0 the amount of T that is cached from the legacy NU staking contract. -Reverts if there is at least one authorization higher than the sum of remaining -legacy NU stake and native T stake for that staking provider or if the unstaked -amount is higher than the cached legacy stake amount. If succeeded, the legacy -NU stake can be partially or fully undelegated on the legacy NU staking contract. -This function allows to unstake from NU staking contract while still being able -to operate in T network and earning rewards based on the native T staked. -Can be called only by the stake owner or the staking provider. - -==== `unstakeAll(address stakingProvider) external onlyOwnerOrStakingProvider(stakingProvider)` - -Sets cached legacy stake amount to 0, sets the liquid T stake amount to 0 and -withdraws all liquid T from the stake to the owner. Reverts if there is at least one -non-zero authorization. Can be called only by the delegation owner or the -staking provider. +Reduces the T stake amount by `amount` and withdraws `amount` of T +to the owner. Reverts if there is at least one authorization higher than the +remaining T stake or if the `amount` is higher than the T stake amount. +Can be called only by the owner or the staking provider. === Keeping information in sync @@ -371,14 +344,17 @@ Returns the authorized stake amount of the staking provider for the application. ==== `stakes(address stakingProvider) external view returns (uint96 tStake, uint96 keepInTStake, uint96 nuInTStake)` -Returns staked amount of T, Keep and Nu for the specified staking provider. All values -are in T denomination. +Returns staked amount of T for the specified staking provider. +Method is deprecated. Use `stakeAmount` instead. + +==== `stakeAmount(address stakingProvider) external view returns (uint96)` + +Returns staked amount of T for the specified staking provider. ==== `getStartStakingTimestamp(address stakingProvider) external view returns (uint256)` -Returns start staking timestamp for T/NU stake. This value is set at most once, -and only when a stake is created with T or NU tokens. If a stake is created -from a legacy KEEP stake, this value will remain as zero. +Returns start staking timestamp for T stake. This value is set at most once, +and only when a stake is created with. ==== `getAutoIncreaseFlag(address stakingProvider) external view returns (bool)` @@ -386,10 +362,6 @@ from a legacy KEEP stake, this value will remain as zero. Returns auto-increase flag. If flag is true then any topped up amount will be added to existing authorizations. -==== `stakedNu(address stakingProvider) external view returns (uint256)` - -Returns staked amount of NU for the specified staking provider - ==== `rolesOf(address stakingProvider) external view returns (address owner, address payable beneficiary, address authorizer)` Gets the stake owner, the beneficiary and the authorizer for the specified @@ -403,21 +375,9 @@ Returns length of application array Returns length of slashing queue -==== `getMinStaked(address stakingProvider, StakeType stakeTypes) external view returns (uint96)` - -Returns minimum possible stake for T, KEEP or NU (stake type) in T denomination. -For example, suppose the given staking provider has 10 T, 20 T worth of KEEP, -and 30 T worth of NU all staked, and the maximum application authorization is -40 T, then `getMinStaked` for that staking provider returns: - -* 0 T if KEEP stake type specified i.e. min = 40 T max - (10 T) = 30 T -* 10 T if NU stake type specified i.e. min = 40 T max - (10 T) = 30 T -* 0 T if T stake type specified i.e. min = 40 T max = 40 T +==== `getMaxAuthorization(address stakingProvider) external view returns (uint96)` -In other words, the minimum stake amount for -the specified stake type is the minimum amount of stake of the given type needed -to satisfy the maximum application authorization given the staked amounts of the -T stake type for that staking provider. +Returns the maximum application authorization. ==== `getAvailableToAuthorize(address stakingProvider, address application) external view returns (uint96)` diff --git a/external/sepolia/KeepRegistry.json b/external/sepolia/KeepRegistry.json deleted file mode 100644 index 747931b0..00000000 --- a/external/sepolia/KeepRegistry.json +++ /dev/null @@ -1,11685 +0,0 @@ -{ - "contractName": "KeepRegistry", - "abi": [ - { - "inputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "constructor" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "address", - "name": "defaultPanicButton", - "type": "address" - } - ], - "name": "DefaultPanicButtonUpdated", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "address", - "name": "governance", - "type": "address" - } - ], - "name": "GovernanceUpdated", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "address", - "name": "operatorContract", - "type": "address" - } - ], - "name": "OperatorContractApproved", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "address", - "name": "operatorContract", - "type": "address" - } - ], - "name": "OperatorContractDisabled", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "address", - "name": "operatorContract", - "type": "address" - } - ], - "name": "OperatorContractPanicButtonDisabled", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "address", - "name": "operatorContract", - "type": "address" - }, - { - "indexed": false, - "internalType": "address", - "name": "panicButton", - "type": "address" - } - ], - "name": "OperatorContractPanicButtonUpdated", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "address", - "name": "serviceContract", - "type": "address" - }, - { - "indexed": false, - "internalType": "address", - "name": "upgrader", - "type": "address" - } - ], - "name": "OperatorContractUpgraderUpdated", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "address", - "name": "registryKeeper", - "type": "address" - } - ], - "name": "RegistryKeeperUpdated", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "address", - "name": "operatorContract", - "type": "address" - }, - { - "indexed": false, - "internalType": "address", - "name": "keeper", - "type": "address" - } - ], - "name": "ServiceContractUpgraderUpdated", - "type": "event" - }, - { - "constant": true, - "inputs": [], - "name": "defaultPanicButton", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "governance", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "name": "operatorContractUpgraders", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "name": "operatorContracts", - "outputs": [ - { - "internalType": "enum KeepRegistry.ContractStatus", - "name": "", - "type": "uint8" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "name": "panicButtons", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "registryKeeper", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "name": "serviceContractUpgraders", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "_governance", - "type": "address" - } - ], - "name": "setGovernance", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "_registryKeeper", - "type": "address" - } - ], - "name": "setRegistryKeeper", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "_panicButton", - "type": "address" - } - ], - "name": "setDefaultPanicButton", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "_operatorContract", - "type": "address" - }, - { - "internalType": "address", - "name": "_panicButton", - "type": "address" - } - ], - "name": "setOperatorContractPanicButton", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "_operatorContract", - "type": "address" - } - ], - "name": "disableOperatorContractPanicButton", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "_serviceContract", - "type": "address" - }, - { - "internalType": "address", - "name": "_operatorContractUpgrader", - "type": "address" - } - ], - "name": "setOperatorContractUpgrader", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "_operatorContract", - "type": "address" - }, - { - "internalType": "address", - "name": "_serviceContractUpgrader", - "type": "address" - } - ], - "name": "setServiceContractUpgrader", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "operatorContract", - "type": "address" - } - ], - "name": "approveOperatorContract", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "operatorContract", - "type": "address" - } - ], - "name": "disableOperatorContract", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "internalType": "address", - "name": "operatorContract", - "type": "address" - } - ], - "name": "isNewOperatorContract", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "internalType": "address", - "name": "operatorContract", - "type": "address" - } - ], - "name": "isApprovedOperatorContract", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "internalType": "address", - "name": "_serviceContract", - "type": "address" - } - ], - "name": "operatorContractUpgraderFor", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "internalType": "address", - "name": "_operatorContract", - "type": "address" - } - ], - "name": "serviceContractUpgraderFor", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - } - ], - "metadata": "{\"compiler\":{\"version\":\"0.5.17+commit.d19bba13\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"defaultPanicButton\",\"type\":\"address\"}],\"name\":\"DefaultPanicButtonUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"governance\",\"type\":\"address\"}],\"name\":\"GovernanceUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"operatorContract\",\"type\":\"address\"}],\"name\":\"OperatorContractApproved\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"operatorContract\",\"type\":\"address\"}],\"name\":\"OperatorContractDisabled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"operatorContract\",\"type\":\"address\"}],\"name\":\"OperatorContractPanicButtonDisabled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"operatorContract\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"panicButton\",\"type\":\"address\"}],\"name\":\"OperatorContractPanicButtonUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"serviceContract\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"upgrader\",\"type\":\"address\"}],\"name\":\"OperatorContractUpgraderUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"registryKeeper\",\"type\":\"address\"}],\"name\":\"RegistryKeeperUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"operatorContract\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"keeper\",\"type\":\"address\"}],\"name\":\"ServiceContractUpgraderUpdated\",\"type\":\"event\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"operatorContract\",\"type\":\"address\"}],\"name\":\"approveOperatorContract\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"defaultPanicButton\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"operatorContract\",\"type\":\"address\"}],\"name\":\"disableOperatorContract\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"_operatorContract\",\"type\":\"address\"}],\"name\":\"disableOperatorContractPanicButton\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"governance\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"operatorContract\",\"type\":\"address\"}],\"name\":\"isApprovedOperatorContract\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"operatorContract\",\"type\":\"address\"}],\"name\":\"isNewOperatorContract\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"_serviceContract\",\"type\":\"address\"}],\"name\":\"operatorContractUpgraderFor\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"operatorContractUpgraders\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"operatorContracts\",\"outputs\":[{\"internalType\":\"enum KeepRegistry.ContractStatus\",\"name\":\"\",\"type\":\"uint8\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"panicButtons\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"registryKeeper\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"_operatorContract\",\"type\":\"address\"}],\"name\":\"serviceContractUpgraderFor\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"serviceContractUpgraders\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"_panicButton\",\"type\":\"address\"}],\"name\":\"setDefaultPanicButton\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"_governance\",\"type\":\"address\"}],\"name\":\"setGovernance\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"_operatorContract\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_panicButton\",\"type\":\"address\"}],\"name\":\"setOperatorContractPanicButton\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"_serviceContract\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_operatorContractUpgrader\",\"type\":\"address\"}],\"name\":\"setOperatorContractUpgrader\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"_registryKeeper\",\"type\":\"address\"}],\"name\":\"setRegistryKeeper\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"_operatorContract\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_serviceContractUpgrader\",\"type\":\"address\"}],\"name\":\"setServiceContractUpgrader\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"methods\":{},\"title\":\"KeepRegistry\"},\"userdoc\":{\"methods\":{},\"notice\":\"Governance owned registry of approved contracts and roles.\"}},\"settings\":{\"compilationTarget\":{\"project:/contracts/KeepRegistry.sol\":\"KeepRegistry\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"project:/contracts/KeepRegistry.sol\":{\"keccak256\":\"0xbc0e44a838bae38c1d11db28b5bfcfdfd79394d423ce6fd85dcb90a6420e1f10\",\"urls\":[\"bzz-raw://74b140b3a4547cc742785c613e2927bc3592e71f0f42eff5112462a9985083cb\",\"dweb:/ipfs/QmQLsNVWAcgHhtoJAfiXjipYaksfLpcoaa45c2LvRh9hfg\"]}},\"version\":1}", - "bytecode": "0x608060405234801561001057600080fd5b50336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555033600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555033600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061207d806100e26000396000f3fe608060405234801561001057600080fd5b506004361061012c5760003560e01c80636557eccf116100ad578063ab033ea911610071578063ab033ea914610691578063d82437f4146106d5578063d858008a14610739578063db816b62146107bd578063ff111e3b146108015761012c565b80636557eccf1461047f578063716d6061146105035780637b4df9381461056757806384c07bd2146105eb57806384d57689146106355761012c565b80635a9671f5116100f45780635a9671f5146102cd5780635aa6e67514610329578063618dae2014610373578063637e9dbe146103b757806363dc5fcf146103fb5761012c565b806302db580b1461013157806309a6f73f146101755780632afb015e146101b95780633ae70f46146102035780633dbcab4514610267575b600080fd5b6101736004803603602081101561014757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610885565b005b6101b76004803603602081101561018b57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610b2c565b005b6101c1610dfe565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6102656004803603604081101561021957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610e24565b005b6102a96004803603602081101561027d57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610fff565b604051808260028111156102b957fe5b60ff16815260200191505060405180910390f35b61030f600480360360208110156102e357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061101f565b604051808215151515815260200191505060405180910390f35b61033161108d565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6103b56004803603602081101561038957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506110b2565b005b6103f9600480360360208110156103cd57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061123d565b005b61043d6004803603602081101561041157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611546565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6104c16004803603602081101561049557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506115af565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6105656004803603604081101561051957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611618565b005b6105a96004803603602081101561057d57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506117f3565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6105f3611826565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6106776004803603602081101561064b57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061184c565b604051808215151515815260200191505060405180910390f35b6106d3600480360360208110156106a757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506118bb565b005b610737600480360360408110156106eb57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611a44565b005b61077b6004803603602081101561074f57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611dea565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6107ff600480360360208110156107d357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611e1d565b005b6108436004803603602081101561081757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611fa8565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b8061088f8161101f565b610901576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f4e6f742061206e6577206f70657261746f7220636f6e7472616374000000000081525060200191505060405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff16600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146109c4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600e8152602001807f4e6f7420617574686f72697a656400000000000000000000000000000000000081525060200191505060405180910390fd5b6001600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690836002811115610a2057fe5b0217905550600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507fb5d7fbd1d67a09be2dd3ba169be0ebfb43f1d3fd31b12e9dc9e5bd98517bfafb82604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a15050565b80610b368161184c565b610b8b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806120036021913960400191505060405180910390fd5b816000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610c93576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260158152602001807f50616e696320627574746f6e2064697361626c6564000000000000000000000081525060200191505060405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614610d34576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600e8152602001807f4e6f7420617574686f72697a656400000000000000000000000000000000000081525060200191505060405180910390fd5b6002600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690836002811115610d9057fe5b02179055507f61e8cab67fc6f073d7e3bbd8d936b519daf95f5655e8b22563c63eaba75f8fa384604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a150505050565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b3373ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ee6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600e8152602001807f4e6f7420617574686f72697a656400000000000000000000000000000000000081525060200191505060405180910390fd5b80600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f067d7db72df8e5428d719a48ef14b072cdb3942706bfc6becc7198a316d73b788282604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019250505060405180910390a15050565b60066020528060005260406000206000915054906101000a900460ff1681565b600080600281111561102d57fe5b600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16600281111561108557fe5b149050919050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b3373ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611174576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600e8152602001807f4e6f7420617574686f72697a656400000000000000000000000000000000000081525060200191505060405180910390fd5b80600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f06f6f3a56d213caa17abfd21597ab6f8660771e05f9d430505ce755a2fdbb551600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a150565b806112478161184c565b61129c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806120036021913960400191505060405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461135e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600e8152602001807f4e6f7420617574686f72697a656400000000000000000000000000000000000081525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415611460576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601d8152602001807f50616e696320627574746f6e20616c72656164792064697361626c656400000081525060200191505060405180910390fd5b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f825c13d61db27b3c0dae8523f70310e87c2dfd99ea7023664547208322ff679c82604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a15050565b6000600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b6000600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b3373ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146116da576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600e8152602001807f4e6f7420617574686f72697a656400000000000000000000000000000000000081525060200191505060405180910390fd5b80600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f6f5a686a46a4dd38461a6a5ce54c3b8dd7b989914b5a0748c8d6669c794778528282604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019250505060405180910390a15050565b60026020528060005260406000206000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60006001600281111561185b57fe5b600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1660028111156118b357fe5b149050919050565b3373ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461197d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600e8152602001807f4e6f7420617574686f72697a656400000000000000000000000000000000000081525060200191505060405180910390fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f9d3e522e1e47a2f6009739342b9cc7b252a1888154e843ab55ee1c81745795ab6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff16604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a150565b81611a4e8161184c565b611aa3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806120036021913960400191505060405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611b65576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600e8152602001807f4e6f7420617574686f72697a656400000000000000000000000000000000000081525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415611c4a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526027815260200180611fdc6027913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611cd0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260258152602001806120246025913960400191505060405180910390fd5b81600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f5f94d794a8a48b75e2ca89133a5b8748d14217648260c5247e57e3d314fd52a78383604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019250505060405180910390a1505050565b60046020528060005260406000206000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b3373ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611edf576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600e8152602001807f4e6f7420617574686f72697a656400000000000000000000000000000000000081525060200191505060405180910390fd5b80600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507fe5ecd8c922f03a416959a48c633d1bfdd1615ea46923a0a3e5d65ec90a38e038600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a150565b60056020528060005260406000206000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff168156fe44697361626c65642070616e696320627574746f6e2063616e6e6f7420626520757064617465644e6f7420616e20617070726f766564206f70657261746f7220636f6e747261637450616e696320627574746f6e206d757374206265206e6f6e2d7a65726f2061646472657373a265627a7a72315820b17bd18cfe39501ad377d66d1010e19430f6a267075322e32ef22e8e9651a4f664736f6c63430005110032", - "deployedBytecode": "0x608060405234801561001057600080fd5b506004361061012c5760003560e01c80636557eccf116100ad578063ab033ea911610071578063ab033ea914610691578063d82437f4146106d5578063d858008a14610739578063db816b62146107bd578063ff111e3b146108015761012c565b80636557eccf1461047f578063716d6061146105035780637b4df9381461056757806384c07bd2146105eb57806384d57689146106355761012c565b80635a9671f5116100f45780635a9671f5146102cd5780635aa6e67514610329578063618dae2014610373578063637e9dbe146103b757806363dc5fcf146103fb5761012c565b806302db580b1461013157806309a6f73f146101755780632afb015e146101b95780633ae70f46146102035780633dbcab4514610267575b600080fd5b6101736004803603602081101561014757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610885565b005b6101b76004803603602081101561018b57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610b2c565b005b6101c1610dfe565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6102656004803603604081101561021957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610e24565b005b6102a96004803603602081101561027d57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610fff565b604051808260028111156102b957fe5b60ff16815260200191505060405180910390f35b61030f600480360360208110156102e357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061101f565b604051808215151515815260200191505060405180910390f35b61033161108d565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6103b56004803603602081101561038957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506110b2565b005b6103f9600480360360208110156103cd57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061123d565b005b61043d6004803603602081101561041157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611546565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6104c16004803603602081101561049557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506115af565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6105656004803603604081101561051957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611618565b005b6105a96004803603602081101561057d57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506117f3565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6105f3611826565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6106776004803603602081101561064b57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061184c565b604051808215151515815260200191505060405180910390f35b6106d3600480360360208110156106a757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506118bb565b005b610737600480360360408110156106eb57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611a44565b005b61077b6004803603602081101561074f57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611dea565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6107ff600480360360208110156107d357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611e1d565b005b6108436004803603602081101561081757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611fa8565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b8061088f8161101f565b610901576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f4e6f742061206e6577206f70657261746f7220636f6e7472616374000000000081525060200191505060405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff16600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146109c4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600e8152602001807f4e6f7420617574686f72697a656400000000000000000000000000000000000081525060200191505060405180910390fd5b6001600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690836002811115610a2057fe5b0217905550600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507fb5d7fbd1d67a09be2dd3ba169be0ebfb43f1d3fd31b12e9dc9e5bd98517bfafb82604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a15050565b80610b368161184c565b610b8b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806120036021913960400191505060405180910390fd5b816000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610c93576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260158152602001807f50616e696320627574746f6e2064697361626c6564000000000000000000000081525060200191505060405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614610d34576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600e8152602001807f4e6f7420617574686f72697a656400000000000000000000000000000000000081525060200191505060405180910390fd5b6002600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690836002811115610d9057fe5b02179055507f61e8cab67fc6f073d7e3bbd8d936b519daf95f5655e8b22563c63eaba75f8fa384604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a150505050565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b3373ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ee6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600e8152602001807f4e6f7420617574686f72697a656400000000000000000000000000000000000081525060200191505060405180910390fd5b80600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f067d7db72df8e5428d719a48ef14b072cdb3942706bfc6becc7198a316d73b788282604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019250505060405180910390a15050565b60066020528060005260406000206000915054906101000a900460ff1681565b600080600281111561102d57fe5b600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16600281111561108557fe5b149050919050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b3373ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611174576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600e8152602001807f4e6f7420617574686f72697a656400000000000000000000000000000000000081525060200191505060405180910390fd5b80600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f06f6f3a56d213caa17abfd21597ab6f8660771e05f9d430505ce755a2fdbb551600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a150565b806112478161184c565b61129c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806120036021913960400191505060405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461135e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600e8152602001807f4e6f7420617574686f72697a656400000000000000000000000000000000000081525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415611460576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601d8152602001807f50616e696320627574746f6e20616c72656164792064697361626c656400000081525060200191505060405180910390fd5b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f825c13d61db27b3c0dae8523f70310e87c2dfd99ea7023664547208322ff679c82604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a15050565b6000600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b6000600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b3373ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146116da576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600e8152602001807f4e6f7420617574686f72697a656400000000000000000000000000000000000081525060200191505060405180910390fd5b80600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f6f5a686a46a4dd38461a6a5ce54c3b8dd7b989914b5a0748c8d6669c794778528282604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019250505060405180910390a15050565b60026020528060005260406000206000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60006001600281111561185b57fe5b600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1660028111156118b357fe5b149050919050565b3373ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461197d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600e8152602001807f4e6f7420617574686f72697a656400000000000000000000000000000000000081525060200191505060405180910390fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f9d3e522e1e47a2f6009739342b9cc7b252a1888154e843ab55ee1c81745795ab6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff16604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a150565b81611a4e8161184c565b611aa3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806120036021913960400191505060405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611b65576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600e8152602001807f4e6f7420617574686f72697a656400000000000000000000000000000000000081525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415611c4a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526027815260200180611fdc6027913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611cd0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260258152602001806120246025913960400191505060405180910390fd5b81600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f5f94d794a8a48b75e2ca89133a5b8748d14217648260c5247e57e3d314fd52a78383604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019250505060405180910390a1505050565b60046020528060005260406000206000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b3373ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611edf576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600e8152602001807f4e6f7420617574686f72697a656400000000000000000000000000000000000081525060200191505060405180910390fd5b80600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507fe5ecd8c922f03a416959a48c633d1bfdd1615ea46923a0a3e5d65ec90a38e038600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a150565b60056020528060005260406000206000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff168156fe44697361626c65642070616e696320627574746f6e2063616e6e6f7420626520757064617465644e6f7420616e20617070726f766564206f70657261746f7220636f6e747261637450616e696320627574746f6e206d757374206265206e6f6e2d7a65726f2061646472657373a265627a7a72315820b17bd18cfe39501ad377d66d1010e19430f6a267075322e32ef22e8e9651a4f664736f6c63430005110032", - "sourceMap": "120:7949:26:-;;;4164:139;8:9:-1;5:2;;;30:1;27;20:12;5:2;4164:139:26;4208:10;4195;;:23;;;;;;;;;;;;;;;;;;4245:10;4228:14;;:27;;;;;;;;;;;;;;;;;;4286:10;4265:18;;:31;;;;;;;;;;;;;;;;;;120:7949;;;;;;", - "deployedSourceMap": "120:7949:26:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;120:7949:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6614:346;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;6614:346:26;;;;;;;;;;;;;;;;;;;:::i;:::-;;6966:305;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;6966:305:26;;;;;;;;;;;;;;;;;;;:::i;:::-;;1449:33;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;6256:352;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;6256:352:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;2477:59;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;2477:59:26;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7277:193;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;7277:193:26;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;369:25;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;4647:185;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;4647:185:26;;;;;;;;;;;;;;;;;;;:::i;:::-;;5462:427;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;5462:427:26;;;;;;;;;;;;;;;;;;;:::i;:::-;;7685:188;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;7685:188:26;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;7879;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;7879:188:26;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;5895:355;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;5895:355:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;1266:47;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;1266:47:26;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;588:29;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;7476:203;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;7476:203:26;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;4309:151;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;4309:151:26;;;;;;;;;;;;;;;;;;;:::i;:::-;;4838:618;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;4838:618:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;1792:60;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;1792:60:26;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;4466:175;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;4466:175:26;;;;;;;;;;;;;;;;;;;:::i;:::-;;2369:59;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;2369:59:26;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;6614:346;6715:16;3828:40;3850:17;3828:21;:40::i;:::-;3807:114;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3419:10;3401:28;;:14;;;;;;;;;;;:28;;;3393:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6812:23;6774:17;:35;6792:16;6774:35;;;;;;;;;;;;;;;;:61;;;;;;;;;;;;;;;;;;;;;;;;6878:18;;;;;;;;;;;6845:12;:30;6858:16;6845:30;;;;;;;;;;;;;;;;:51;;;;;;;;;;;;;;;;;;6911:42;6936:16;6911:42;;;;;;;;;;;;;;;;;;;;;;6614:346;;:::o;6966:305::-;7072:16;4036:45;4063:17;4036:26;:45::i;:::-;4015:125;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7114:16;3534:19;3556:12;:31;3569:17;3556:31;;;;;;;;;;;;;;;;;;;;;;;;;3534:53;;3628:1;3605:25;;:11;:25;;;;3597:59;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3689:10;3674:25;;:11;:25;;;3666:52;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7184:23;7146:17;:35;7164:16;7146:35;;;;;;;;;;;;;;;;:61;;;;;;;;;;;;;;;;;;;;;;;;7222:42;7247:16;7222:42;;;;;;;;;;;;;;;;;;;;;;4150:1;;6966:305;;:::o;1449:33::-;;;;;;;;;;;;;:::o;6256:352::-;3300:10;3286:24;;:10;;;;;;;;;;;:24;;;3278:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6453:24;6407;:43;6432:17;6407:43;;;;;;;;;;;;;;;;:70;;;;;;;;;;;;;;;;;;6492:109;6536:17;6567:24;6492:109;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6256:352;;:::o;2477:59::-;;;;;;;;;;;;;;;;;;;;;;:::o;7277:193::-;7379:4;7445:18;7406:57;;;;;;;;:17;:35;7424:16;7406:35;;;;;;;;;;;;;;;;;;;;;;;;;:57;;;;;;;;;7399:64;;7277:193;;;:::o;369:25::-;;;;;;;;;;;;;:::o;4647:185::-;3300:10;3286:24;;:10;;;;;;;;;;;:24;;;3278:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4753:12;4732:18;;:33;;;;;;;;;;;;;;;;;;4780:45;4806:18;;;;;;;;;;;4780:45;;;;;;;;;;;;;;;;;;;;;;4647:185;:::o;5462:427::-;5580:17;4036:45;4063:17;4036:26;:45::i;:::-;4015:125;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3300:10;3286:24;;:10;;;;;;;;;;;:24;;;3278:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5700:1;5657:45;;:12;:31;5670:17;5657:31;;;;;;;;;;;;;;;;;;;;;;;;;:45;;;;5636:121;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5810:1;5768:12;:31;5781:17;5768:31;;;;;;;;;;;;;;;;:44;;;;;;;;;;;;;;;;;;5828:54;5864:17;5828:54;;;;;;;;;;;;;;;;;;;;;;5462:427;;:::o;7685:188::-;7793:7;7823:25;:43;7849:16;7823:43;;;;;;;;;;;;;;;;;;;;;;;;;7816:50;;7685:188;;;:::o;7879:::-;7987:7;8017:24;:43;8042:17;8017:43;;;;;;;;;;;;;;;;;;;;;;;;;8010:50;;7879:188;;;:::o;5895:355::-;3300:10;3286:24;;:10;;;;;;;;;;;:24;;;3278:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6093:25;6047;:43;6073:16;6047:43;;;;;;;;;;;;;;;;:71;;;;;;;;;;;;;;;;;;6133:110;6178:16;6208:25;6133:110;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5895:355;;:::o;1266:47::-;;;;;;;;;;;;;;;;;;;;;;:::o;588:29::-;;;;;;;;;;;;;:::o;7476:203::-;7583:4;7649:23;7610:62;;;;;;;;:17;:35;7628:16;7610:35;;;;;;;;;;;;;;;;;;;;;;;;;:62;;;;;;;;;7603:69;;7476:203;;;:::o;4309:151::-;3300:10;3286:24;;:10;;;;;;;;;;;:24;;;3278:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4398:11;4385:10;;:24;;;;;;;;;;;;;;;;;;4424:29;4442:10;;;;;;;;;;;4424:29;;;;;;;;;;;;;;;;;;;;;;4309:151;:::o;4838:618::-;4980:17;4036:45;4063:17;4036:26;:45::i;:::-;4015:125;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3300:10;3286:24;;:10;;;;;;;;;;;:24;;;3278:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5088:1;5045:45;;:12;:31;5058:17;5045:31;;;;;;;;;;;;;;;;;;;;;;;;;:45;;;;5024:131;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5210:1;5186:26;;:12;:26;;;;5165:110;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5320:12;5286;:31;5299:17;5286:31;;;;;;;;;;;;;;;;:46;;;;;;;;;;;;;;;;;;5348:101;5396:17;5427:12;5348:101;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4838:618;;;:::o;1792:60::-;;;;;;;;;;;;;;;;;;;;;;:::o;4466:175::-;3300:10;3286:24;;:10;;;;;;;;;;;:24;;;3278:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4567:15;4550:14;;:32;;;;;;;;;;;;;;;;;;4597:37;4619:14;;;;;;;;;;;4597:37;;;;;;;;;;;;;;;;;;;;;;4466:175;:::o;2369:59::-;;;;;;;;;;;;;;;;;;;;;;:::o", - "source": "pragma solidity 0.5.17;\n\n/// @title KeepRegistry\n/// @notice Governance owned registry of approved contracts and roles.\ncontract KeepRegistry {\n enum ContractStatus {New, Approved, Disabled}\n\n // Governance role is to enable recovery from key compromise by rekeying\n // other roles. Also, it can disable operator contract panic buttons\n // permanently.\n address public governance;\n\n // Registry Keeper maintains approved operator contracts. Each operator\n // contract must be approved before it can be authorized by a staker or\n // used by a service contract.\n address public registryKeeper;\n\n // Each operator contract has a Panic Button which can disable malicious\n // or malfunctioning contract that have been previously approved by the\n // Registry Keeper.\n //\n // New operator contract added to the registry has a default panic button\n // value assigned (defaultPanicButton). Panic button for each operator\n // contract can be later updated by Governance to individual value.\n //\n // It is possible to disable panic button for individual contract by\n // setting the panic button to zero address. In such case, operator contract\n // can not be disabled and is permanently approved in the registry.\n mapping(address => address) public panicButtons;\n\n // Default panic button for each new operator contract added to the\n // registry. Can be later updated for each contract.\n address public defaultPanicButton;\n\n // Each service contract has a Operator Contract Upgrader whose purpose\n // is to manage operator contracts for that specific service contract.\n // The Operator Contract Upgrader can add new operator contracts to the\n // service contract’s operator contract list, and deprecate old ones.\n mapping(address => address) public operatorContractUpgraders;\n\n // Operator contract may have a Service Contract Upgrader whose purpose is\n // to manage service contracts for that specific operator contract.\n // Service Contract Upgrader can add and remove service contracts\n // from the list of service contracts approved to work with the operator\n // contract. List of service contracts is maintained in the operator\n // contract and is optional - not every operator contract needs to have\n // a list of service contracts it wants to cooperate with.\n mapping(address => address) public serviceContractUpgraders;\n\n // The registry of operator contracts\n mapping(address => ContractStatus) public operatorContracts;\n\n event OperatorContractApproved(address operatorContract);\n event OperatorContractDisabled(address operatorContract);\n\n event GovernanceUpdated(address governance);\n event RegistryKeeperUpdated(address registryKeeper);\n event DefaultPanicButtonUpdated(address defaultPanicButton);\n event OperatorContractPanicButtonDisabled(address operatorContract);\n event OperatorContractPanicButtonUpdated(\n address operatorContract,\n address panicButton\n );\n event OperatorContractUpgraderUpdated(\n address serviceContract,\n address upgrader\n );\n event ServiceContractUpgraderUpdated(\n address operatorContract,\n address keeper\n );\n\n modifier onlyGovernance() {\n require(governance == msg.sender, \"Not authorized\");\n _;\n }\n\n modifier onlyRegistryKeeper() {\n require(registryKeeper == msg.sender, \"Not authorized\");\n _;\n }\n\n modifier onlyPanicButton(address _operatorContract) {\n address panicButton = panicButtons[_operatorContract];\n require(panicButton != address(0), \"Panic button disabled\");\n require(panicButton == msg.sender, \"Not authorized\");\n _;\n }\n\n modifier onlyForNewContract(address _operatorContract) {\n require(\n isNewOperatorContract(_operatorContract),\n \"Not a new operator contract\"\n );\n _;\n }\n\n modifier onlyForApprovedContract(address _operatorContract) {\n require(\n isApprovedOperatorContract(_operatorContract),\n \"Not an approved operator contract\"\n );\n _;\n }\n\n constructor() public {\n governance = msg.sender;\n registryKeeper = msg.sender;\n defaultPanicButton = msg.sender;\n }\n\n function setGovernance(address _governance) public onlyGovernance {\n governance = _governance;\n emit GovernanceUpdated(governance);\n }\n\n function setRegistryKeeper(address _registryKeeper) public onlyGovernance {\n registryKeeper = _registryKeeper;\n emit RegistryKeeperUpdated(registryKeeper);\n }\n\n function setDefaultPanicButton(address _panicButton) public onlyGovernance {\n defaultPanicButton = _panicButton;\n emit DefaultPanicButtonUpdated(defaultPanicButton);\n }\n\n function setOperatorContractPanicButton(\n address _operatorContract,\n address _panicButton\n ) public onlyForApprovedContract(_operatorContract) onlyGovernance {\n require(\n panicButtons[_operatorContract] != address(0),\n \"Disabled panic button cannot be updated\"\n );\n require(\n _panicButton != address(0),\n \"Panic button must be non-zero address\"\n );\n\n panicButtons[_operatorContract] = _panicButton;\n\n emit OperatorContractPanicButtonUpdated(\n _operatorContract,\n _panicButton\n );\n }\n\n function disableOperatorContractPanicButton(address _operatorContract)\n public\n onlyForApprovedContract(_operatorContract)\n onlyGovernance\n {\n require(\n panicButtons[_operatorContract] != address(0),\n \"Panic button already disabled\"\n );\n\n panicButtons[_operatorContract] = address(0);\n\n emit OperatorContractPanicButtonDisabled(_operatorContract);\n }\n\n function setOperatorContractUpgrader(\n address _serviceContract,\n address _operatorContractUpgrader\n ) public onlyGovernance {\n operatorContractUpgraders[_serviceContract] = _operatorContractUpgrader;\n emit OperatorContractUpgraderUpdated(\n _serviceContract,\n _operatorContractUpgrader\n );\n }\n\n function setServiceContractUpgrader(\n address _operatorContract,\n address _serviceContractUpgrader\n ) public onlyGovernance {\n serviceContractUpgraders[_operatorContract] = _serviceContractUpgrader;\n emit ServiceContractUpgraderUpdated(\n _operatorContract,\n _serviceContractUpgrader\n );\n }\n\n function approveOperatorContract(address operatorContract)\n public\n onlyForNewContract(operatorContract)\n onlyRegistryKeeper\n {\n operatorContracts[operatorContract] = ContractStatus.Approved;\n panicButtons[operatorContract] = defaultPanicButton;\n emit OperatorContractApproved(operatorContract);\n }\n\n function disableOperatorContract(address operatorContract)\n public\n onlyForApprovedContract(operatorContract)\n onlyPanicButton(operatorContract)\n {\n operatorContracts[operatorContract] = ContractStatus.Disabled;\n emit OperatorContractDisabled(operatorContract);\n }\n\n function isNewOperatorContract(address operatorContract)\n public\n view\n returns (bool)\n {\n return operatorContracts[operatorContract] == ContractStatus.New;\n }\n\n function isApprovedOperatorContract(address operatorContract)\n public\n view\n returns (bool)\n {\n return operatorContracts[operatorContract] == ContractStatus.Approved;\n }\n\n function operatorContractUpgraderFor(address _serviceContract)\n public\n view\n returns (address)\n {\n return operatorContractUpgraders[_serviceContract];\n }\n\n function serviceContractUpgraderFor(address _operatorContract)\n public\n view\n returns (address)\n {\n return serviceContractUpgraders[_operatorContract];\n }\n}\n", - "sourcePath": "/Users/michalina/workspace2/keep-core/solidity-v1/contracts/KeepRegistry.sol", - "ast": { - "absolutePath": "project:/contracts/KeepRegistry.sol", - "exportedSymbols": { - "KeepRegistry": [6120] - }, - "id": 6121, - "nodeType": "SourceUnit", - "nodes": [ - { - "id": 5680, - "literals": ["solidity", "0.5", ".17"], - "nodeType": "PragmaDirective", - "src": "0:23:26" - }, - { - "baseContracts": [], - "contractDependencies": [], - "contractKind": "contract", - "documentation": "@title KeepRegistry\n @notice Governance owned registry of approved contracts and roles.", - "fullyImplemented": true, - "id": 6120, - "linearizedBaseContracts": [6120], - "name": "KeepRegistry", - "nodeType": "ContractDefinition", - "nodes": [ - { - "canonicalName": "KeepRegistry.ContractStatus", - "id": 5684, - "members": [ - { - "id": 5681, - "name": "New", - "nodeType": "EnumValue", - "src": "169:3:26" - }, - { - "id": 5682, - "name": "Approved", - "nodeType": "EnumValue", - "src": "174:8:26" - }, - { - "id": 5683, - "name": "Disabled", - "nodeType": "EnumValue", - "src": "184:8:26" - } - ], - "name": "ContractStatus", - "nodeType": "EnumDefinition", - "src": "148:45:26" - }, - { - "constant": false, - "id": 5686, - "name": "governance", - "nodeType": "VariableDeclaration", - "scope": 6120, - "src": "369:25:26", - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 5685, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "369:7:26", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "public" - }, - { - "constant": false, - "id": 5688, - "name": "registryKeeper", - "nodeType": "VariableDeclaration", - "scope": 6120, - "src": "588:29:26", - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 5687, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "588:7:26", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "public" - }, - { - "constant": false, - "id": 5692, - "name": "panicButtons", - "nodeType": "VariableDeclaration", - "scope": 6120, - "src": "1266:47:26", - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_address_$", - "typeString": "mapping(address => address)" - }, - "typeName": { - "id": 5691, - "keyType": { - "id": 5689, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "1274:7:26", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "Mapping", - "src": "1266:27:26", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_address_$", - "typeString": "mapping(address => address)" - }, - "valueType": { - "id": 5690, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "1285:7:26", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - }, - "value": null, - "visibility": "public" - }, - { - "constant": false, - "id": 5694, - "name": "defaultPanicButton", - "nodeType": "VariableDeclaration", - "scope": 6120, - "src": "1449:33:26", - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 5693, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "1449:7:26", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "public" - }, - { - "constant": false, - "id": 5698, - "name": "operatorContractUpgraders", - "nodeType": "VariableDeclaration", - "scope": 6120, - "src": "1792:60:26", - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_address_$", - "typeString": "mapping(address => address)" - }, - "typeName": { - "id": 5697, - "keyType": { - "id": 5695, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "1800:7:26", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "Mapping", - "src": "1792:27:26", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_address_$", - "typeString": "mapping(address => address)" - }, - "valueType": { - "id": 5696, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "1811:7:26", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - }, - "value": null, - "visibility": "public" - }, - { - "constant": false, - "id": 5702, - "name": "serviceContractUpgraders", - "nodeType": "VariableDeclaration", - "scope": 6120, - "src": "2369:59:26", - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_address_$", - "typeString": "mapping(address => address)" - }, - "typeName": { - "id": 5701, - "keyType": { - "id": 5699, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "2377:7:26", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "Mapping", - "src": "2369:27:26", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_address_$", - "typeString": "mapping(address => address)" - }, - "valueType": { - "id": 5700, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "2388:7:26", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - }, - "value": null, - "visibility": "public" - }, - { - "constant": false, - "id": 5706, - "name": "operatorContracts", - "nodeType": "VariableDeclaration", - "scope": 6120, - "src": "2477:59:26", - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_enum$_ContractStatus_$5684_$", - "typeString": "mapping(address => enum KeepRegistry.ContractStatus)" - }, - "typeName": { - "id": 5705, - "keyType": { - "id": 5703, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "2485:7:26", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "Mapping", - "src": "2477:34:26", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_enum$_ContractStatus_$5684_$", - "typeString": "mapping(address => enum KeepRegistry.ContractStatus)" - }, - "valueType": { - "contractScope": null, - "id": 5704, - "name": "ContractStatus", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 5684, - "src": "2496:14:26", - "typeDescriptions": { - "typeIdentifier": "t_enum$_ContractStatus_$5684", - "typeString": "enum KeepRegistry.ContractStatus" - } - } - }, - "value": null, - "visibility": "public" - }, - { - "anonymous": false, - "documentation": null, - "id": 5710, - "name": "OperatorContractApproved", - "nodeType": "EventDefinition", - "parameters": { - "id": 5709, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 5708, - "indexed": false, - "name": "operatorContract", - "nodeType": "VariableDeclaration", - "scope": 5710, - "src": "2574:24:26", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 5707, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "2574:7:26", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "2573:26:26" - }, - "src": "2543:57:26" - }, - { - "anonymous": false, - "documentation": null, - "id": 5714, - "name": "OperatorContractDisabled", - "nodeType": "EventDefinition", - "parameters": { - "id": 5713, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 5712, - "indexed": false, - "name": "operatorContract", - "nodeType": "VariableDeclaration", - "scope": 5714, - "src": "2636:24:26", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 5711, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "2636:7:26", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "2635:26:26" - }, - "src": "2605:57:26" - }, - { - "anonymous": false, - "documentation": null, - "id": 5718, - "name": "GovernanceUpdated", - "nodeType": "EventDefinition", - "parameters": { - "id": 5717, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 5716, - "indexed": false, - "name": "governance", - "nodeType": "VariableDeclaration", - "scope": 5718, - "src": "2692:18:26", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 5715, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "2692:7:26", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "2691:20:26" - }, - "src": "2668:44:26" - }, - { - "anonymous": false, - "documentation": null, - "id": 5722, - "name": "RegistryKeeperUpdated", - "nodeType": "EventDefinition", - "parameters": { - "id": 5721, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 5720, - "indexed": false, - "name": "registryKeeper", - "nodeType": "VariableDeclaration", - "scope": 5722, - "src": "2745:22:26", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 5719, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "2745:7:26", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "2744:24:26" - }, - "src": "2717:52:26" - }, - { - "anonymous": false, - "documentation": null, - "id": 5726, - "name": "DefaultPanicButtonUpdated", - "nodeType": "EventDefinition", - "parameters": { - "id": 5725, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 5724, - "indexed": false, - "name": "defaultPanicButton", - "nodeType": "VariableDeclaration", - "scope": 5726, - "src": "2806:26:26", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 5723, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "2806:7:26", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "2805:28:26" - }, - "src": "2774:60:26" - }, - { - "anonymous": false, - "documentation": null, - "id": 5730, - "name": "OperatorContractPanicButtonDisabled", - "nodeType": "EventDefinition", - "parameters": { - "id": 5729, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 5728, - "indexed": false, - "name": "operatorContract", - "nodeType": "VariableDeclaration", - "scope": 5730, - "src": "2881:24:26", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 5727, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "2881:7:26", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "2880:26:26" - }, - "src": "2839:68:26" - }, - { - "anonymous": false, - "documentation": null, - "id": 5736, - "name": "OperatorContractPanicButtonUpdated", - "nodeType": "EventDefinition", - "parameters": { - "id": 5735, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 5732, - "indexed": false, - "name": "operatorContract", - "nodeType": "VariableDeclaration", - "scope": 5736, - "src": "2962:24:26", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 5731, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "2962:7:26", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 5734, - "indexed": false, - "name": "panicButton", - "nodeType": "VariableDeclaration", - "scope": 5736, - "src": "2996:19:26", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 5733, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "2996:7:26", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "2952:69:26" - }, - "src": "2912:110:26" - }, - { - "anonymous": false, - "documentation": null, - "id": 5742, - "name": "OperatorContractUpgraderUpdated", - "nodeType": "EventDefinition", - "parameters": { - "id": 5741, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 5738, - "indexed": false, - "name": "serviceContract", - "nodeType": "VariableDeclaration", - "scope": 5742, - "src": "3074:23:26", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 5737, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "3074:7:26", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 5740, - "indexed": false, - "name": "upgrader", - "nodeType": "VariableDeclaration", - "scope": 5742, - "src": "3107:16:26", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 5739, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "3107:7:26", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "3064:65:26" - }, - "src": "3027:103:26" - }, - { - "anonymous": false, - "documentation": null, - "id": 5748, - "name": "ServiceContractUpgraderUpdated", - "nodeType": "EventDefinition", - "parameters": { - "id": 5747, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 5744, - "indexed": false, - "name": "operatorContract", - "nodeType": "VariableDeclaration", - "scope": 5748, - "src": "3181:24:26", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 5743, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "3181:7:26", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 5746, - "indexed": false, - "name": "keeper", - "nodeType": "VariableDeclaration", - "scope": 5748, - "src": "3215:14:26", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 5745, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "3215:7:26", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "3171:64:26" - }, - "src": "3135:101:26" - }, - { - "body": { - "id": 5759, - "nodeType": "Block", - "src": "3268:79:26", - "statements": [ - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "id": 5754, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 5751, - "name": "governance", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 5686, - "src": "3286:10:26", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 5752, - "name": "msg", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 28146, - "src": "3300:3:26", - "typeDescriptions": { - "typeIdentifier": "t_magic_message", - "typeString": "msg" - } - }, - "id": 5753, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "sender", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "3300:10:26", - "typeDescriptions": { - "typeIdentifier": "t_address_payable", - "typeString": "address payable" - } - }, - "src": "3286:24:26", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - { - "argumentTypes": null, - "hexValue": "4e6f7420617574686f72697a6564", - "id": 5755, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "string", - "lValueRequested": false, - "nodeType": "Literal", - "src": "3312:16:26", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_stringliteral_fac3bac318c0d00994f57b0f2f4c643c313072b71db2302bf4b900309cc50b36", - "typeString": "literal_string \"Not authorized\"" - }, - "value": "Not authorized" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_stringliteral_fac3bac318c0d00994f57b0f2f4c643c313072b71db2302bf4b900309cc50b36", - "typeString": "literal_string \"Not authorized\"" - } - ], - "id": 5750, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [28149, 28150], - "referencedDeclaration": 28150, - "src": "3278:7:26", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", - "typeString": "function (bool,string memory) pure" - } - }, - "id": 5756, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "3278:51:26", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 5757, - "nodeType": "ExpressionStatement", - "src": "3278:51:26" - }, - { - "id": 5758, - "nodeType": "PlaceholderStatement", - "src": "3339:1:26" - } - ] - }, - "documentation": null, - "id": 5760, - "name": "onlyGovernance", - "nodeType": "ModifierDefinition", - "parameters": { - "id": 5749, - "nodeType": "ParameterList", - "parameters": [], - "src": "3265:2:26" - }, - "src": "3242:105:26", - "visibility": "internal" - }, - { - "body": { - "id": 5771, - "nodeType": "Block", - "src": "3383:83:26", - "statements": [ - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "id": 5766, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 5763, - "name": "registryKeeper", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 5688, - "src": "3401:14:26", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 5764, - "name": "msg", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 28146, - "src": "3419:3:26", - "typeDescriptions": { - "typeIdentifier": "t_magic_message", - "typeString": "msg" - } - }, - "id": 5765, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "sender", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "3419:10:26", - "typeDescriptions": { - "typeIdentifier": "t_address_payable", - "typeString": "address payable" - } - }, - "src": "3401:28:26", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - { - "argumentTypes": null, - "hexValue": "4e6f7420617574686f72697a6564", - "id": 5767, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "string", - "lValueRequested": false, - "nodeType": "Literal", - "src": "3431:16:26", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_stringliteral_fac3bac318c0d00994f57b0f2f4c643c313072b71db2302bf4b900309cc50b36", - "typeString": "literal_string \"Not authorized\"" - }, - "value": "Not authorized" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_stringliteral_fac3bac318c0d00994f57b0f2f4c643c313072b71db2302bf4b900309cc50b36", - "typeString": "literal_string \"Not authorized\"" - } - ], - "id": 5762, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [28149, 28150], - "referencedDeclaration": 28150, - "src": "3393:7:26", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", - "typeString": "function (bool,string memory) pure" - } - }, - "id": 5768, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "3393:55:26", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 5769, - "nodeType": "ExpressionStatement", - "src": "3393:55:26" - }, - { - "id": 5770, - "nodeType": "PlaceholderStatement", - "src": "3458:1:26" - } - ] - }, - "documentation": null, - "id": 5772, - "name": "onlyRegistryKeeper", - "nodeType": "ModifierDefinition", - "parameters": { - "id": 5761, - "nodeType": "ParameterList", - "parameters": [], - "src": "3380:2:26" - }, - "src": "3353:113:26", - "visibility": "internal" - }, - { - "body": { - "id": 5800, - "nodeType": "Block", - "src": "3524:212:26", - "statements": [ - { - "assignments": [5777], - "declarations": [ - { - "constant": false, - "id": 5777, - "name": "panicButton", - "nodeType": "VariableDeclaration", - "scope": 5800, - "src": "3534:19:26", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 5776, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "3534:7:26", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 5781, - "initialValue": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 5778, - "name": "panicButtons", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 5692, - "src": "3556:12:26", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_address_$", - "typeString": "mapping(address => address)" - } - }, - "id": 5780, - "indexExpression": { - "argumentTypes": null, - "id": 5779, - "name": "_operatorContract", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 5774, - "src": "3569:17:26", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "3556:31:26", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "3534:53:26" - }, - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "id": 5787, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 5783, - "name": "panicButton", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 5777, - "src": "3605:11:26", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "BinaryOperation", - "operator": "!=", - "rightExpression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "hexValue": "30", - "id": 5785, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "3628:1:26", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - } - ], - "id": 5784, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "3620:7:26", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_address_$", - "typeString": "type(address)" - }, - "typeName": "address" - }, - "id": 5786, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "typeConversion", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "3620:10:26", - "typeDescriptions": { - "typeIdentifier": "t_address_payable", - "typeString": "address payable" - } - }, - "src": "3605:25:26", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - { - "argumentTypes": null, - "hexValue": "50616e696320627574746f6e2064697361626c6564", - "id": 5788, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "string", - "lValueRequested": false, - "nodeType": "Literal", - "src": "3632:23:26", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_stringliteral_ade7d52768b2962ebe381899f913000013150b093135ace53d3db606894f67e1", - "typeString": "literal_string \"Panic button disabled\"" - }, - "value": "Panic button disabled" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_stringliteral_ade7d52768b2962ebe381899f913000013150b093135ace53d3db606894f67e1", - "typeString": "literal_string \"Panic button disabled\"" - } - ], - "id": 5782, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [28149, 28150], - "referencedDeclaration": 28150, - "src": "3597:7:26", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", - "typeString": "function (bool,string memory) pure" - } - }, - "id": 5789, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "3597:59:26", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 5790, - "nodeType": "ExpressionStatement", - "src": "3597:59:26" - }, - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "id": 5795, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 5792, - "name": "panicButton", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 5777, - "src": "3674:11:26", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 5793, - "name": "msg", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 28146, - "src": "3689:3:26", - "typeDescriptions": { - "typeIdentifier": "t_magic_message", - "typeString": "msg" - } - }, - "id": 5794, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "sender", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "3689:10:26", - "typeDescriptions": { - "typeIdentifier": "t_address_payable", - "typeString": "address payable" - } - }, - "src": "3674:25:26", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - { - "argumentTypes": null, - "hexValue": "4e6f7420617574686f72697a6564", - "id": 5796, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "string", - "lValueRequested": false, - "nodeType": "Literal", - "src": "3701:16:26", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_stringliteral_fac3bac318c0d00994f57b0f2f4c643c313072b71db2302bf4b900309cc50b36", - "typeString": "literal_string \"Not authorized\"" - }, - "value": "Not authorized" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_stringliteral_fac3bac318c0d00994f57b0f2f4c643c313072b71db2302bf4b900309cc50b36", - "typeString": "literal_string \"Not authorized\"" - } - ], - "id": 5791, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [28149, 28150], - "referencedDeclaration": 28150, - "src": "3666:7:26", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", - "typeString": "function (bool,string memory) pure" - } - }, - "id": 5797, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "3666:52:26", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 5798, - "nodeType": "ExpressionStatement", - "src": "3666:52:26" - }, - { - "id": 5799, - "nodeType": "PlaceholderStatement", - "src": "3728:1:26" - } - ] - }, - "documentation": null, - "id": 5801, - "name": "onlyPanicButton", - "nodeType": "ModifierDefinition", - "parameters": { - "id": 5775, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 5774, - "name": "_operatorContract", - "nodeType": "VariableDeclaration", - "scope": 5801, - "src": "3497:25:26", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 5773, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "3497:7:26", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "3496:27:26" - }, - "src": "3472:264:26", - "visibility": "internal" - }, - { - "body": { - "id": 5813, - "nodeType": "Block", - "src": "3797:142:26", - "statements": [ - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 5807, - "name": "_operatorContract", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 5803, - "src": "3850:17:26", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "id": 5806, - "name": "isNewOperatorContract", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 6080, - "src": "3828:21:26", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$", - "typeString": "function (address) view returns (bool)" - } - }, - "id": 5808, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "3828:40:26", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - { - "argumentTypes": null, - "hexValue": "4e6f742061206e6577206f70657261746f7220636f6e7472616374", - "id": 5809, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "string", - "lValueRequested": false, - "nodeType": "Literal", - "src": "3882:29:26", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_stringliteral_8c4324476717aecd1e569d3ba832c005a24f88be8c2ba65d585df6b95edd8a35", - "typeString": "literal_string \"Not a new operator contract\"" - }, - "value": "Not a new operator contract" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_stringliteral_8c4324476717aecd1e569d3ba832c005a24f88be8c2ba65d585df6b95edd8a35", - "typeString": "literal_string \"Not a new operator contract\"" - } - ], - "id": 5805, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [28149, 28150], - "referencedDeclaration": 28150, - "src": "3807:7:26", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", - "typeString": "function (bool,string memory) pure" - } - }, - "id": 5810, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "3807:114:26", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 5811, - "nodeType": "ExpressionStatement", - "src": "3807:114:26" - }, - { - "id": 5812, - "nodeType": "PlaceholderStatement", - "src": "3931:1:26" - } - ] - }, - "documentation": null, - "id": 5814, - "name": "onlyForNewContract", - "nodeType": "ModifierDefinition", - "parameters": { - "id": 5804, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 5803, - "name": "_operatorContract", - "nodeType": "VariableDeclaration", - "scope": 5814, - "src": "3770:25:26", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 5802, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "3770:7:26", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "3769:27:26" - }, - "src": "3742:197:26", - "visibility": "internal" - }, - { - "body": { - "id": 5826, - "nodeType": "Block", - "src": "4005:153:26", - "statements": [ - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 5820, - "name": "_operatorContract", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 5816, - "src": "4063:17:26", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "id": 5819, - "name": "isApprovedOperatorContract", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 6095, - "src": "4036:26:26", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$", - "typeString": "function (address) view returns (bool)" - } - }, - "id": 5821, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "4036:45:26", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - { - "argumentTypes": null, - "hexValue": "4e6f7420616e20617070726f766564206f70657261746f7220636f6e7472616374", - "id": 5822, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "string", - "lValueRequested": false, - "nodeType": "Literal", - "src": "4095:35:26", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_stringliteral_b6f9ff674e366ea74583b3402886a452ea021bd3f0dac1662124ff59e8062f7f", - "typeString": "literal_string \"Not an approved operator contract\"" - }, - "value": "Not an approved operator contract" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_stringliteral_b6f9ff674e366ea74583b3402886a452ea021bd3f0dac1662124ff59e8062f7f", - "typeString": "literal_string \"Not an approved operator contract\"" - } - ], - "id": 5818, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [28149, 28150], - "referencedDeclaration": 28150, - "src": "4015:7:26", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", - "typeString": "function (bool,string memory) pure" - } - }, - "id": 5823, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "4015:125:26", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 5824, - "nodeType": "ExpressionStatement", - "src": "4015:125:26" - }, - { - "id": 5825, - "nodeType": "PlaceholderStatement", - "src": "4150:1:26" - } - ] - }, - "documentation": null, - "id": 5827, - "name": "onlyForApprovedContract", - "nodeType": "ModifierDefinition", - "parameters": { - "id": 5817, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 5816, - "name": "_operatorContract", - "nodeType": "VariableDeclaration", - "scope": 5827, - "src": "3978:25:26", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 5815, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "3978:7:26", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "3977:27:26" - }, - "src": "3945:213:26", - "visibility": "internal" - }, - { - "body": { - "id": 5845, - "nodeType": "Block", - "src": "4185:118:26", - "statements": [ - { - "expression": { - "argumentTypes": null, - "id": 5833, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "id": 5830, - "name": "governance", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 5686, - "src": "4195:10:26", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 5831, - "name": "msg", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 28146, - "src": "4208:3:26", - "typeDescriptions": { - "typeIdentifier": "t_magic_message", - "typeString": "msg" - } - }, - "id": 5832, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "sender", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "4208:10:26", - "typeDescriptions": { - "typeIdentifier": "t_address_payable", - "typeString": "address payable" - } - }, - "src": "4195:23:26", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "id": 5834, - "nodeType": "ExpressionStatement", - "src": "4195:23:26" - }, - { - "expression": { - "argumentTypes": null, - "id": 5838, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "id": 5835, - "name": "registryKeeper", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 5688, - "src": "4228:14:26", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 5836, - "name": "msg", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 28146, - "src": "4245:3:26", - "typeDescriptions": { - "typeIdentifier": "t_magic_message", - "typeString": "msg" - } - }, - "id": 5837, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "sender", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "4245:10:26", - "typeDescriptions": { - "typeIdentifier": "t_address_payable", - "typeString": "address payable" - } - }, - "src": "4228:27:26", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "id": 5839, - "nodeType": "ExpressionStatement", - "src": "4228:27:26" - }, - { - "expression": { - "argumentTypes": null, - "id": 5843, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "id": 5840, - "name": "defaultPanicButton", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 5694, - "src": "4265:18:26", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 5841, - "name": "msg", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 28146, - "src": "4286:3:26", - "typeDescriptions": { - "typeIdentifier": "t_magic_message", - "typeString": "msg" - } - }, - "id": 5842, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "sender", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "4286:10:26", - "typeDescriptions": { - "typeIdentifier": "t_address_payable", - "typeString": "address payable" - } - }, - "src": "4265:31:26", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "id": 5844, - "nodeType": "ExpressionStatement", - "src": "4265:31:26" - } - ] - }, - "documentation": null, - "id": 5846, - "implemented": true, - "kind": "constructor", - "modifiers": [], - "name": "", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 5828, - "nodeType": "ParameterList", - "parameters": [], - "src": "4175:2:26" - }, - "returnParameters": { - "id": 5829, - "nodeType": "ParameterList", - "parameters": [], - "src": "4185:0:26" - }, - "scope": 6120, - "src": "4164:139:26", - "stateMutability": "nonpayable", - "superFunction": null, - "visibility": "public" - }, - { - "body": { - "id": 5861, - "nodeType": "Block", - "src": "4375:85:26", - "statements": [ - { - "expression": { - "argumentTypes": null, - "id": 5855, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "id": 5853, - "name": "governance", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 5686, - "src": "4385:10:26", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "id": 5854, - "name": "_governance", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 5848, - "src": "4398:11:26", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "src": "4385:24:26", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "id": 5856, - "nodeType": "ExpressionStatement", - "src": "4385:24:26" - }, - { - "eventCall": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 5858, - "name": "governance", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 5686, - "src": "4442:10:26", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "id": 5857, - "name": "GovernanceUpdated", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 5718, - "src": "4424:17:26", - "typeDescriptions": { - "typeIdentifier": "t_function_event_nonpayable$_t_address_$returns$__$", - "typeString": "function (address)" - } - }, - "id": 5859, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "4424:29:26", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 5860, - "nodeType": "EmitStatement", - "src": "4419:34:26" - } - ] - }, - "documentation": null, - "id": 5862, - "implemented": true, - "kind": "function", - "modifiers": [ - { - "arguments": null, - "id": 5851, - "modifierName": { - "argumentTypes": null, - "id": 5850, - "name": "onlyGovernance", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 5760, - "src": "4360:14:26", - "typeDescriptions": { - "typeIdentifier": "t_modifier$__$", - "typeString": "modifier ()" - } - }, - "nodeType": "ModifierInvocation", - "src": "4360:14:26" - } - ], - "name": "setGovernance", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 5849, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 5848, - "name": "_governance", - "nodeType": "VariableDeclaration", - "scope": 5862, - "src": "4332:19:26", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 5847, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "4332:7:26", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "4331:21:26" - }, - "returnParameters": { - "id": 5852, - "nodeType": "ParameterList", - "parameters": [], - "src": "4375:0:26" - }, - "scope": 6120, - "src": "4309:151:26", - "stateMutability": "nonpayable", - "superFunction": null, - "visibility": "public" - }, - { - "body": { - "id": 5877, - "nodeType": "Block", - "src": "4540:101:26", - "statements": [ - { - "expression": { - "argumentTypes": null, - "id": 5871, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "id": 5869, - "name": "registryKeeper", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 5688, - "src": "4550:14:26", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "id": 5870, - "name": "_registryKeeper", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 5864, - "src": "4567:15:26", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "src": "4550:32:26", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "id": 5872, - "nodeType": "ExpressionStatement", - "src": "4550:32:26" - }, - { - "eventCall": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 5874, - "name": "registryKeeper", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 5688, - "src": "4619:14:26", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "id": 5873, - "name": "RegistryKeeperUpdated", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 5722, - "src": "4597:21:26", - "typeDescriptions": { - "typeIdentifier": "t_function_event_nonpayable$_t_address_$returns$__$", - "typeString": "function (address)" - } - }, - "id": 5875, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "4597:37:26", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 5876, - "nodeType": "EmitStatement", - "src": "4592:42:26" - } - ] - }, - "documentation": null, - "id": 5878, - "implemented": true, - "kind": "function", - "modifiers": [ - { - "arguments": null, - "id": 5867, - "modifierName": { - "argumentTypes": null, - "id": 5866, - "name": "onlyGovernance", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 5760, - "src": "4525:14:26", - "typeDescriptions": { - "typeIdentifier": "t_modifier$__$", - "typeString": "modifier ()" - } - }, - "nodeType": "ModifierInvocation", - "src": "4525:14:26" - } - ], - "name": "setRegistryKeeper", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 5865, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 5864, - "name": "_registryKeeper", - "nodeType": "VariableDeclaration", - "scope": 5878, - "src": "4493:23:26", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 5863, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "4493:7:26", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "4492:25:26" - }, - "returnParameters": { - "id": 5868, - "nodeType": "ParameterList", - "parameters": [], - "src": "4540:0:26" - }, - "scope": 6120, - "src": "4466:175:26", - "stateMutability": "nonpayable", - "superFunction": null, - "visibility": "public" - }, - { - "body": { - "id": 5893, - "nodeType": "Block", - "src": "4722:110:26", - "statements": [ - { - "expression": { - "argumentTypes": null, - "id": 5887, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "id": 5885, - "name": "defaultPanicButton", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 5694, - "src": "4732:18:26", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "id": 5886, - "name": "_panicButton", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 5880, - "src": "4753:12:26", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "src": "4732:33:26", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "id": 5888, - "nodeType": "ExpressionStatement", - "src": "4732:33:26" - }, - { - "eventCall": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 5890, - "name": "defaultPanicButton", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 5694, - "src": "4806:18:26", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "id": 5889, - "name": "DefaultPanicButtonUpdated", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 5726, - "src": "4780:25:26", - "typeDescriptions": { - "typeIdentifier": "t_function_event_nonpayable$_t_address_$returns$__$", - "typeString": "function (address)" - } - }, - "id": 5891, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "4780:45:26", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 5892, - "nodeType": "EmitStatement", - "src": "4775:50:26" - } - ] - }, - "documentation": null, - "id": 5894, - "implemented": true, - "kind": "function", - "modifiers": [ - { - "arguments": null, - "id": 5883, - "modifierName": { - "argumentTypes": null, - "id": 5882, - "name": "onlyGovernance", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 5760, - "src": "4707:14:26", - "typeDescriptions": { - "typeIdentifier": "t_modifier$__$", - "typeString": "modifier ()" - } - }, - "nodeType": "ModifierInvocation", - "src": "4707:14:26" - } - ], - "name": "setDefaultPanicButton", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 5881, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 5880, - "name": "_panicButton", - "nodeType": "VariableDeclaration", - "scope": 5894, - "src": "4678:20:26", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 5879, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "4678:7:26", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "4677:22:26" - }, - "returnParameters": { - "id": 5884, - "nodeType": "ParameterList", - "parameters": [], - "src": "4722:0:26" - }, - "scope": 6120, - "src": "4647:185:26", - "stateMutability": "nonpayable", - "superFunction": null, - "visibility": "public" - }, - { - "body": { - "id": 5937, - "nodeType": "Block", - "src": "5014:442:26", - "statements": [ - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "id": 5913, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 5907, - "name": "panicButtons", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 5692, - "src": "5045:12:26", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_address_$", - "typeString": "mapping(address => address)" - } - }, - "id": 5909, - "indexExpression": { - "argumentTypes": null, - "id": 5908, - "name": "_operatorContract", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 5896, - "src": "5058:17:26", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "5045:31:26", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "BinaryOperation", - "operator": "!=", - "rightExpression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "hexValue": "30", - "id": 5911, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "5088:1:26", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - } - ], - "id": 5910, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "5080:7:26", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_address_$", - "typeString": "type(address)" - }, - "typeName": "address" - }, - "id": 5912, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "typeConversion", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "5080:10:26", - "typeDescriptions": { - "typeIdentifier": "t_address_payable", - "typeString": "address payable" - } - }, - "src": "5045:45:26", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - { - "argumentTypes": null, - "hexValue": "44697361626c65642070616e696320627574746f6e2063616e6e6f742062652075706461746564", - "id": 5914, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "string", - "lValueRequested": false, - "nodeType": "Literal", - "src": "5104:41:26", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_stringliteral_8d1b9aaf1a91db2554cb251884681dc026fd3d7a153bea70c79e510a6a54dd87", - "typeString": "literal_string \"Disabled panic button cannot be updated\"" - }, - "value": "Disabled panic button cannot be updated" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_stringliteral_8d1b9aaf1a91db2554cb251884681dc026fd3d7a153bea70c79e510a6a54dd87", - "typeString": "literal_string \"Disabled panic button cannot be updated\"" - } - ], - "id": 5906, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [28149, 28150], - "referencedDeclaration": 28150, - "src": "5024:7:26", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", - "typeString": "function (bool,string memory) pure" - } - }, - "id": 5915, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "5024:131:26", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 5916, - "nodeType": "ExpressionStatement", - "src": "5024:131:26" - }, - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "id": 5922, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 5918, - "name": "_panicButton", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 5898, - "src": "5186:12:26", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "BinaryOperation", - "operator": "!=", - "rightExpression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "hexValue": "30", - "id": 5920, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "5210:1:26", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - } - ], - "id": 5919, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "5202:7:26", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_address_$", - "typeString": "type(address)" - }, - "typeName": "address" - }, - "id": 5921, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "typeConversion", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "5202:10:26", - "typeDescriptions": { - "typeIdentifier": "t_address_payable", - "typeString": "address payable" - } - }, - "src": "5186:26:26", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - { - "argumentTypes": null, - "hexValue": "50616e696320627574746f6e206d757374206265206e6f6e2d7a65726f2061646472657373", - "id": 5923, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "string", - "lValueRequested": false, - "nodeType": "Literal", - "src": "5226:39:26", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_stringliteral_e5a7b2a0d032ae56f5d1e30bd631d28945ee32864ebe6c7d1d2b0c4e8cc78eb5", - "typeString": "literal_string \"Panic button must be non-zero address\"" - }, - "value": "Panic button must be non-zero address" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_stringliteral_e5a7b2a0d032ae56f5d1e30bd631d28945ee32864ebe6c7d1d2b0c4e8cc78eb5", - "typeString": "literal_string \"Panic button must be non-zero address\"" - } - ], - "id": 5917, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [28149, 28150], - "referencedDeclaration": 28150, - "src": "5165:7:26", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", - "typeString": "function (bool,string memory) pure" - } - }, - "id": 5924, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "5165:110:26", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 5925, - "nodeType": "ExpressionStatement", - "src": "5165:110:26" - }, - { - "expression": { - "argumentTypes": null, - "id": 5930, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 5926, - "name": "panicButtons", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 5692, - "src": "5286:12:26", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_address_$", - "typeString": "mapping(address => address)" - } - }, - "id": 5928, - "indexExpression": { - "argumentTypes": null, - "id": 5927, - "name": "_operatorContract", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 5896, - "src": "5299:17:26", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "nodeType": "IndexAccess", - "src": "5286:31:26", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "id": 5929, - "name": "_panicButton", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 5898, - "src": "5320:12:26", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "src": "5286:46:26", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "id": 5931, - "nodeType": "ExpressionStatement", - "src": "5286:46:26" - }, - { - "eventCall": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 5933, - "name": "_operatorContract", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 5896, - "src": "5396:17:26", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "argumentTypes": null, - "id": 5934, - "name": "_panicButton", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 5898, - "src": "5427:12:26", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "id": 5932, - "name": "OperatorContractPanicButtonUpdated", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 5736, - "src": "5348:34:26", - "typeDescriptions": { - "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$returns$__$", - "typeString": "function (address,address)" - } - }, - "id": 5935, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "5348:101:26", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 5936, - "nodeType": "EmitStatement", - "src": "5343:106:26" - } - ] - }, - "documentation": null, - "id": 5938, - "implemented": true, - "kind": "function", - "modifiers": [ - { - "arguments": [ - { - "argumentTypes": null, - "id": 5901, - "name": "_operatorContract", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 5896, - "src": "4980:17:26", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - ], - "id": 5902, - "modifierName": { - "argumentTypes": null, - "id": 5900, - "name": "onlyForApprovedContract", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 5827, - "src": "4956:23:26", - "typeDescriptions": { - "typeIdentifier": "t_modifier$_t_address_$", - "typeString": "modifier (address)" - } - }, - "nodeType": "ModifierInvocation", - "src": "4956:42:26" - }, - { - "arguments": null, - "id": 5904, - "modifierName": { - "argumentTypes": null, - "id": 5903, - "name": "onlyGovernance", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 5760, - "src": "4999:14:26", - "typeDescriptions": { - "typeIdentifier": "t_modifier$__$", - "typeString": "modifier ()" - } - }, - "nodeType": "ModifierInvocation", - "src": "4999:14:26" - } - ], - "name": "setOperatorContractPanicButton", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 5899, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 5896, - "name": "_operatorContract", - "nodeType": "VariableDeclaration", - "scope": 5938, - "src": "4887:25:26", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 5895, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "4887:7:26", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 5898, - "name": "_panicButton", - "nodeType": "VariableDeclaration", - "scope": 5938, - "src": "4922:20:26", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 5897, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "4922:7:26", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "4877:71:26" - }, - "returnParameters": { - "id": 5905, - "nodeType": "ParameterList", - "parameters": [], - "src": "5014:0:26" - }, - "scope": 6120, - "src": "4838:618:26", - "stateMutability": "nonpayable", - "superFunction": null, - "visibility": "public" - }, - { - "body": { - "id": 5971, - "nodeType": "Block", - "src": "5626:263:26", - "statements": [ - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "id": 5955, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 5949, - "name": "panicButtons", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 5692, - "src": "5657:12:26", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_address_$", - "typeString": "mapping(address => address)" - } - }, - "id": 5951, - "indexExpression": { - "argumentTypes": null, - "id": 5950, - "name": "_operatorContract", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 5940, - "src": "5670:17:26", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "5657:31:26", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "BinaryOperation", - "operator": "!=", - "rightExpression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "hexValue": "30", - "id": 5953, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "5700:1:26", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - } - ], - "id": 5952, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "5692:7:26", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_address_$", - "typeString": "type(address)" - }, - "typeName": "address" - }, - "id": 5954, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "typeConversion", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "5692:10:26", - "typeDescriptions": { - "typeIdentifier": "t_address_payable", - "typeString": "address payable" - } - }, - "src": "5657:45:26", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - { - "argumentTypes": null, - "hexValue": "50616e696320627574746f6e20616c72656164792064697361626c6564", - "id": 5956, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "string", - "lValueRequested": false, - "nodeType": "Literal", - "src": "5716:31:26", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_stringliteral_bb534723a179d6568d886b637fa707371e8c13170fa009941c10391cd4682512", - "typeString": "literal_string \"Panic button already disabled\"" - }, - "value": "Panic button already disabled" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_stringliteral_bb534723a179d6568d886b637fa707371e8c13170fa009941c10391cd4682512", - "typeString": "literal_string \"Panic button already disabled\"" - } - ], - "id": 5948, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [28149, 28150], - "referencedDeclaration": 28150, - "src": "5636:7:26", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", - "typeString": "function (bool,string memory) pure" - } - }, - "id": 5957, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "5636:121:26", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 5958, - "nodeType": "ExpressionStatement", - "src": "5636:121:26" - }, - { - "expression": { - "argumentTypes": null, - "id": 5965, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 5959, - "name": "panicButtons", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 5692, - "src": "5768:12:26", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_address_$", - "typeString": "mapping(address => address)" - } - }, - "id": 5961, - "indexExpression": { - "argumentTypes": null, - "id": 5960, - "name": "_operatorContract", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 5940, - "src": "5781:17:26", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "nodeType": "IndexAccess", - "src": "5768:31:26", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "hexValue": "30", - "id": 5963, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "5810:1:26", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - } - ], - "id": 5962, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "5802:7:26", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_address_$", - "typeString": "type(address)" - }, - "typeName": "address" - }, - "id": 5964, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "typeConversion", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "5802:10:26", - "typeDescriptions": { - "typeIdentifier": "t_address_payable", - "typeString": "address payable" - } - }, - "src": "5768:44:26", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "id": 5966, - "nodeType": "ExpressionStatement", - "src": "5768:44:26" - }, - { - "eventCall": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 5968, - "name": "_operatorContract", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 5940, - "src": "5864:17:26", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "id": 5967, - "name": "OperatorContractPanicButtonDisabled", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 5730, - "src": "5828:35:26", - "typeDescriptions": { - "typeIdentifier": "t_function_event_nonpayable$_t_address_$returns$__$", - "typeString": "function (address)" - } - }, - "id": 5969, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "5828:54:26", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 5970, - "nodeType": "EmitStatement", - "src": "5823:59:26" - } - ] - }, - "documentation": null, - "id": 5972, - "implemented": true, - "kind": "function", - "modifiers": [ - { - "arguments": [ - { - "argumentTypes": null, - "id": 5943, - "name": "_operatorContract", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 5940, - "src": "5580:17:26", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - ], - "id": 5944, - "modifierName": { - "argumentTypes": null, - "id": 5942, - "name": "onlyForApprovedContract", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 5827, - "src": "5556:23:26", - "typeDescriptions": { - "typeIdentifier": "t_modifier$_t_address_$", - "typeString": "modifier (address)" - } - }, - "nodeType": "ModifierInvocation", - "src": "5556:42:26" - }, - { - "arguments": null, - "id": 5946, - "modifierName": { - "argumentTypes": null, - "id": 5945, - "name": "onlyGovernance", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 5760, - "src": "5607:14:26", - "typeDescriptions": { - "typeIdentifier": "t_modifier$__$", - "typeString": "modifier ()" - } - }, - "nodeType": "ModifierInvocation", - "src": "5607:14:26" - } - ], - "name": "disableOperatorContractPanicButton", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 5941, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 5940, - "name": "_operatorContract", - "nodeType": "VariableDeclaration", - "scope": 5972, - "src": "5506:25:26", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 5939, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "5506:7:26", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "5505:27:26" - }, - "returnParameters": { - "id": 5947, - "nodeType": "ParameterList", - "parameters": [], - "src": "5626:0:26" - }, - "scope": 6120, - "src": "5462:427:26", - "stateMutability": "nonpayable", - "superFunction": null, - "visibility": "public" - }, - { - "body": { - "id": 5992, - "nodeType": "Block", - "src": "6037:213:26", - "statements": [ - { - "expression": { - "argumentTypes": null, - "id": 5985, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 5981, - "name": "operatorContractUpgraders", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 5698, - "src": "6047:25:26", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_address_$", - "typeString": "mapping(address => address)" - } - }, - "id": 5983, - "indexExpression": { - "argumentTypes": null, - "id": 5982, - "name": "_serviceContract", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 5974, - "src": "6073:16:26", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "nodeType": "IndexAccess", - "src": "6047:43:26", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "id": 5984, - "name": "_operatorContractUpgrader", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 5976, - "src": "6093:25:26", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "src": "6047:71:26", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "id": 5986, - "nodeType": "ExpressionStatement", - "src": "6047:71:26" - }, - { - "eventCall": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 5988, - "name": "_serviceContract", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 5974, - "src": "6178:16:26", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "argumentTypes": null, - "id": 5989, - "name": "_operatorContractUpgrader", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 5976, - "src": "6208:25:26", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "id": 5987, - "name": "OperatorContractUpgraderUpdated", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 5742, - "src": "6133:31:26", - "typeDescriptions": { - "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$returns$__$", - "typeString": "function (address,address)" - } - }, - "id": 5990, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "6133:110:26", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 5991, - "nodeType": "EmitStatement", - "src": "6128:115:26" - } - ] - }, - "documentation": null, - "id": 5993, - "implemented": true, - "kind": "function", - "modifiers": [ - { - "arguments": null, - "id": 5979, - "modifierName": { - "argumentTypes": null, - "id": 5978, - "name": "onlyGovernance", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 5760, - "src": "6022:14:26", - "typeDescriptions": { - "typeIdentifier": "t_modifier$__$", - "typeString": "modifier ()" - } - }, - "nodeType": "ModifierInvocation", - "src": "6022:14:26" - } - ], - "name": "setOperatorContractUpgrader", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 5977, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 5974, - "name": "_serviceContract", - "nodeType": "VariableDeclaration", - "scope": 5993, - "src": "5941:24:26", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 5973, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "5941:7:26", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 5976, - "name": "_operatorContractUpgrader", - "nodeType": "VariableDeclaration", - "scope": 5993, - "src": "5975:33:26", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 5975, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "5975:7:26", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "5931:83:26" - }, - "returnParameters": { - "id": 5980, - "nodeType": "ParameterList", - "parameters": [], - "src": "6037:0:26" - }, - "scope": 6120, - "src": "5895:355:26", - "stateMutability": "nonpayable", - "superFunction": null, - "visibility": "public" - }, - { - "body": { - "id": 6013, - "nodeType": "Block", - "src": "6397:211:26", - "statements": [ - { - "expression": { - "argumentTypes": null, - "id": 6006, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 6002, - "name": "serviceContractUpgraders", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 5702, - "src": "6407:24:26", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_address_$", - "typeString": "mapping(address => address)" - } - }, - "id": 6004, - "indexExpression": { - "argumentTypes": null, - "id": 6003, - "name": "_operatorContract", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 5995, - "src": "6432:17:26", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "nodeType": "IndexAccess", - "src": "6407:43:26", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "id": 6005, - "name": "_serviceContractUpgrader", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 5997, - "src": "6453:24:26", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "src": "6407:70:26", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "id": 6007, - "nodeType": "ExpressionStatement", - "src": "6407:70:26" - }, - { - "eventCall": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 6009, - "name": "_operatorContract", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 5995, - "src": "6536:17:26", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "argumentTypes": null, - "id": 6010, - "name": "_serviceContractUpgrader", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 5997, - "src": "6567:24:26", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "id": 6008, - "name": "ServiceContractUpgraderUpdated", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 5748, - "src": "6492:30:26", - "typeDescriptions": { - "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$returns$__$", - "typeString": "function (address,address)" - } - }, - "id": 6011, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "6492:109:26", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 6012, - "nodeType": "EmitStatement", - "src": "6487:114:26" - } - ] - }, - "documentation": null, - "id": 6014, - "implemented": true, - "kind": "function", - "modifiers": [ - { - "arguments": null, - "id": 6000, - "modifierName": { - "argumentTypes": null, - "id": 5999, - "name": "onlyGovernance", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 5760, - "src": "6382:14:26", - "typeDescriptions": { - "typeIdentifier": "t_modifier$__$", - "typeString": "modifier ()" - } - }, - "nodeType": "ModifierInvocation", - "src": "6382:14:26" - } - ], - "name": "setServiceContractUpgrader", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 5998, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 5995, - "name": "_operatorContract", - "nodeType": "VariableDeclaration", - "scope": 6014, - "src": "6301:25:26", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 5994, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "6301:7:26", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 5997, - "name": "_serviceContractUpgrader", - "nodeType": "VariableDeclaration", - "scope": 6014, - "src": "6336:32:26", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 5996, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "6336:7:26", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "6291:83:26" - }, - "returnParameters": { - "id": 6001, - "nodeType": "ParameterList", - "parameters": [], - "src": "6397:0:26" - }, - "scope": 6120, - "src": "6256:352:26", - "stateMutability": "nonpayable", - "superFunction": null, - "visibility": "public" - }, - { - "body": { - "id": 6041, - "nodeType": "Block", - "src": "6764:196:26", - "statements": [ - { - "expression": { - "argumentTypes": null, - "id": 6029, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 6024, - "name": "operatorContracts", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 5706, - "src": "6774:17:26", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_enum$_ContractStatus_$5684_$", - "typeString": "mapping(address => enum KeepRegistry.ContractStatus)" - } - }, - "id": 6026, - "indexExpression": { - "argumentTypes": null, - "id": 6025, - "name": "operatorContract", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 6016, - "src": "6792:16:26", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "nodeType": "IndexAccess", - "src": "6774:35:26", - "typeDescriptions": { - "typeIdentifier": "t_enum$_ContractStatus_$5684", - "typeString": "enum KeepRegistry.ContractStatus" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 6027, - "name": "ContractStatus", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 5684, - "src": "6812:14:26", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_enum$_ContractStatus_$5684_$", - "typeString": "type(enum KeepRegistry.ContractStatus)" - } - }, - "id": 6028, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "memberName": "Approved", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "6812:23:26", - "typeDescriptions": { - "typeIdentifier": "t_enum$_ContractStatus_$5684", - "typeString": "enum KeepRegistry.ContractStatus" - } - }, - "src": "6774:61:26", - "typeDescriptions": { - "typeIdentifier": "t_enum$_ContractStatus_$5684", - "typeString": "enum KeepRegistry.ContractStatus" - } - }, - "id": 6030, - "nodeType": "ExpressionStatement", - "src": "6774:61:26" - }, - { - "expression": { - "argumentTypes": null, - "id": 6035, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 6031, - "name": "panicButtons", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 5692, - "src": "6845:12:26", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_address_$", - "typeString": "mapping(address => address)" - } - }, - "id": 6033, - "indexExpression": { - "argumentTypes": null, - "id": 6032, - "name": "operatorContract", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 6016, - "src": "6858:16:26", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "nodeType": "IndexAccess", - "src": "6845:30:26", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "id": 6034, - "name": "defaultPanicButton", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 5694, - "src": "6878:18:26", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "src": "6845:51:26", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "id": 6036, - "nodeType": "ExpressionStatement", - "src": "6845:51:26" - }, - { - "eventCall": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 6038, - "name": "operatorContract", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 6016, - "src": "6936:16:26", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "id": 6037, - "name": "OperatorContractApproved", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 5710, - "src": "6911:24:26", - "typeDescriptions": { - "typeIdentifier": "t_function_event_nonpayable$_t_address_$returns$__$", - "typeString": "function (address)" - } - }, - "id": 6039, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "6911:42:26", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 6040, - "nodeType": "EmitStatement", - "src": "6906:47:26" - } - ] - }, - "documentation": null, - "id": 6042, - "implemented": true, - "kind": "function", - "modifiers": [ - { - "arguments": [ - { - "argumentTypes": null, - "id": 6019, - "name": "operatorContract", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 6016, - "src": "6715:16:26", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - ], - "id": 6020, - "modifierName": { - "argumentTypes": null, - "id": 6018, - "name": "onlyForNewContract", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 5814, - "src": "6696:18:26", - "typeDescriptions": { - "typeIdentifier": "t_modifier$_t_address_$", - "typeString": "modifier (address)" - } - }, - "nodeType": "ModifierInvocation", - "src": "6696:36:26" - }, - { - "arguments": null, - "id": 6022, - "modifierName": { - "argumentTypes": null, - "id": 6021, - "name": "onlyRegistryKeeper", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 5772, - "src": "6741:18:26", - "typeDescriptions": { - "typeIdentifier": "t_modifier$__$", - "typeString": "modifier ()" - } - }, - "nodeType": "ModifierInvocation", - "src": "6741:18:26" - } - ], - "name": "approveOperatorContract", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 6017, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 6016, - "name": "operatorContract", - "nodeType": "VariableDeclaration", - "scope": 6042, - "src": "6647:24:26", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 6015, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "6647:7:26", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "6646:26:26" - }, - "returnParameters": { - "id": 6023, - "nodeType": "ParameterList", - "parameters": [], - "src": "6764:0:26" - }, - "scope": 6120, - "src": "6614:346:26", - "stateMutability": "nonpayable", - "superFunction": null, - "visibility": "public" - }, - { - "body": { - "id": 6064, - "nodeType": "Block", - "src": "7136:135:26", - "statements": [ - { - "expression": { - "argumentTypes": null, - "id": 6058, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 6053, - "name": "operatorContracts", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 5706, - "src": "7146:17:26", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_enum$_ContractStatus_$5684_$", - "typeString": "mapping(address => enum KeepRegistry.ContractStatus)" - } - }, - "id": 6055, - "indexExpression": { - "argumentTypes": null, - "id": 6054, - "name": "operatorContract", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 6044, - "src": "7164:16:26", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "nodeType": "IndexAccess", - "src": "7146:35:26", - "typeDescriptions": { - "typeIdentifier": "t_enum$_ContractStatus_$5684", - "typeString": "enum KeepRegistry.ContractStatus" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 6056, - "name": "ContractStatus", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 5684, - "src": "7184:14:26", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_enum$_ContractStatus_$5684_$", - "typeString": "type(enum KeepRegistry.ContractStatus)" - } - }, - "id": 6057, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "memberName": "Disabled", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "7184:23:26", - "typeDescriptions": { - "typeIdentifier": "t_enum$_ContractStatus_$5684", - "typeString": "enum KeepRegistry.ContractStatus" - } - }, - "src": "7146:61:26", - "typeDescriptions": { - "typeIdentifier": "t_enum$_ContractStatus_$5684", - "typeString": "enum KeepRegistry.ContractStatus" - } - }, - "id": 6059, - "nodeType": "ExpressionStatement", - "src": "7146:61:26" - }, - { - "eventCall": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 6061, - "name": "operatorContract", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 6044, - "src": "7247:16:26", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "id": 6060, - "name": "OperatorContractDisabled", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 5714, - "src": "7222:24:26", - "typeDescriptions": { - "typeIdentifier": "t_function_event_nonpayable$_t_address_$returns$__$", - "typeString": "function (address)" - } - }, - "id": 6062, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "7222:42:26", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 6063, - "nodeType": "EmitStatement", - "src": "7217:47:26" - } - ] - }, - "documentation": null, - "id": 6065, - "implemented": true, - "kind": "function", - "modifiers": [ - { - "arguments": [ - { - "argumentTypes": null, - "id": 6047, - "name": "operatorContract", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 6044, - "src": "7072:16:26", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - ], - "id": 6048, - "modifierName": { - "argumentTypes": null, - "id": 6046, - "name": "onlyForApprovedContract", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 5827, - "src": "7048:23:26", - "typeDescriptions": { - "typeIdentifier": "t_modifier$_t_address_$", - "typeString": "modifier (address)" - } - }, - "nodeType": "ModifierInvocation", - "src": "7048:41:26" - }, - { - "arguments": [ - { - "argumentTypes": null, - "id": 6050, - "name": "operatorContract", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 6044, - "src": "7114:16:26", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - ], - "id": 6051, - "modifierName": { - "argumentTypes": null, - "id": 6049, - "name": "onlyPanicButton", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 5801, - "src": "7098:15:26", - "typeDescriptions": { - "typeIdentifier": "t_modifier$_t_address_$", - "typeString": "modifier (address)" - } - }, - "nodeType": "ModifierInvocation", - "src": "7098:33:26" - } - ], - "name": "disableOperatorContract", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 6045, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 6044, - "name": "operatorContract", - "nodeType": "VariableDeclaration", - "scope": 6065, - "src": "6999:24:26", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 6043, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "6999:7:26", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "6998:26:26" - }, - "returnParameters": { - "id": 6052, - "nodeType": "ParameterList", - "parameters": [], - "src": "7136:0:26" - }, - "scope": 6120, - "src": "6966:305:26", - "stateMutability": "nonpayable", - "superFunction": null, - "visibility": "public" - }, - { - "body": { - "id": 6079, - "nodeType": "Block", - "src": "7389:81:26", - "statements": [ - { - "expression": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_enum$_ContractStatus_$5684", - "typeString": "enum KeepRegistry.ContractStatus" - }, - "id": 6077, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 6072, - "name": "operatorContracts", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 5706, - "src": "7406:17:26", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_enum$_ContractStatus_$5684_$", - "typeString": "mapping(address => enum KeepRegistry.ContractStatus)" - } - }, - "id": 6074, - "indexExpression": { - "argumentTypes": null, - "id": 6073, - "name": "operatorContract", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 6067, - "src": "7424:16:26", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "7406:35:26", - "typeDescriptions": { - "typeIdentifier": "t_enum$_ContractStatus_$5684", - "typeString": "enum KeepRegistry.ContractStatus" - } - }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 6075, - "name": "ContractStatus", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 5684, - "src": "7445:14:26", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_enum$_ContractStatus_$5684_$", - "typeString": "type(enum KeepRegistry.ContractStatus)" - } - }, - "id": 6076, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "memberName": "New", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "7445:18:26", - "typeDescriptions": { - "typeIdentifier": "t_enum$_ContractStatus_$5684", - "typeString": "enum KeepRegistry.ContractStatus" - } - }, - "src": "7406:57:26", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "functionReturnParameters": 6071, - "id": 6078, - "nodeType": "Return", - "src": "7399:64:26" - } - ] - }, - "documentation": null, - "id": 6080, - "implemented": true, - "kind": "function", - "modifiers": [], - "name": "isNewOperatorContract", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 6068, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 6067, - "name": "operatorContract", - "nodeType": "VariableDeclaration", - "scope": 6080, - "src": "7308:24:26", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 6066, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "7308:7:26", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "7307:26:26" - }, - "returnParameters": { - "id": 6071, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 6070, - "name": "", - "nodeType": "VariableDeclaration", - "scope": 6080, - "src": "7379:4:26", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "typeName": { - "id": 6069, - "name": "bool", - "nodeType": "ElementaryTypeName", - "src": "7379:4:26", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "7378:6:26" - }, - "scope": 6120, - "src": "7277:193:26", - "stateMutability": "view", - "superFunction": null, - "visibility": "public" - }, - { - "body": { - "id": 6094, - "nodeType": "Block", - "src": "7593:86:26", - "statements": [ - { - "expression": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_enum$_ContractStatus_$5684", - "typeString": "enum KeepRegistry.ContractStatus" - }, - "id": 6092, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 6087, - "name": "operatorContracts", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 5706, - "src": "7610:17:26", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_enum$_ContractStatus_$5684_$", - "typeString": "mapping(address => enum KeepRegistry.ContractStatus)" - } - }, - "id": 6089, - "indexExpression": { - "argumentTypes": null, - "id": 6088, - "name": "operatorContract", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 6082, - "src": "7628:16:26", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "7610:35:26", - "typeDescriptions": { - "typeIdentifier": "t_enum$_ContractStatus_$5684", - "typeString": "enum KeepRegistry.ContractStatus" - } - }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 6090, - "name": "ContractStatus", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 5684, - "src": "7649:14:26", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_enum$_ContractStatus_$5684_$", - "typeString": "type(enum KeepRegistry.ContractStatus)" - } - }, - "id": 6091, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "memberName": "Approved", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "7649:23:26", - "typeDescriptions": { - "typeIdentifier": "t_enum$_ContractStatus_$5684", - "typeString": "enum KeepRegistry.ContractStatus" - } - }, - "src": "7610:62:26", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "functionReturnParameters": 6086, - "id": 6093, - "nodeType": "Return", - "src": "7603:69:26" - } - ] - }, - "documentation": null, - "id": 6095, - "implemented": true, - "kind": "function", - "modifiers": [], - "name": "isApprovedOperatorContract", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 6083, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 6082, - "name": "operatorContract", - "nodeType": "VariableDeclaration", - "scope": 6095, - "src": "7512:24:26", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 6081, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "7512:7:26", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "7511:26:26" - }, - "returnParameters": { - "id": 6086, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 6085, - "name": "", - "nodeType": "VariableDeclaration", - "scope": 6095, - "src": "7583:4:26", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "typeName": { - "id": 6084, - "name": "bool", - "nodeType": "ElementaryTypeName", - "src": "7583:4:26", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "7582:6:26" - }, - "scope": 6120, - "src": "7476:203:26", - "stateMutability": "view", - "superFunction": null, - "visibility": "public" - }, - { - "body": { - "id": 6106, - "nodeType": "Block", - "src": "7806:67:26", - "statements": [ - { - "expression": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 6102, - "name": "operatorContractUpgraders", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 5698, - "src": "7823:25:26", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_address_$", - "typeString": "mapping(address => address)" - } - }, - "id": 6104, - "indexExpression": { - "argumentTypes": null, - "id": 6103, - "name": "_serviceContract", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 6097, - "src": "7849:16:26", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "7823:43:26", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "functionReturnParameters": 6101, - "id": 6105, - "nodeType": "Return", - "src": "7816:50:26" - } - ] - }, - "documentation": null, - "id": 6107, - "implemented": true, - "kind": "function", - "modifiers": [], - "name": "operatorContractUpgraderFor", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 6098, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 6097, - "name": "_serviceContract", - "nodeType": "VariableDeclaration", - "scope": 6107, - "src": "7722:24:26", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 6096, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "7722:7:26", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "7721:26:26" - }, - "returnParameters": { - "id": 6101, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 6100, - "name": "", - "nodeType": "VariableDeclaration", - "scope": 6107, - "src": "7793:7:26", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 6099, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "7793:7:26", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "7792:9:26" - }, - "scope": 6120, - "src": "7685:188:26", - "stateMutability": "view", - "superFunction": null, - "visibility": "public" - }, - { - "body": { - "id": 6118, - "nodeType": "Block", - "src": "8000:67:26", - "statements": [ - { - "expression": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 6114, - "name": "serviceContractUpgraders", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 5702, - "src": "8017:24:26", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_address_$", - "typeString": "mapping(address => address)" - } - }, - "id": 6116, - "indexExpression": { - "argumentTypes": null, - "id": 6115, - "name": "_operatorContract", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 6109, - "src": "8042:17:26", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "8017:43:26", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "functionReturnParameters": 6113, - "id": 6117, - "nodeType": "Return", - "src": "8010:50:26" - } - ] - }, - "documentation": null, - "id": 6119, - "implemented": true, - "kind": "function", - "modifiers": [], - "name": "serviceContractUpgraderFor", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 6110, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 6109, - "name": "_operatorContract", - "nodeType": "VariableDeclaration", - "scope": 6119, - "src": "7915:25:26", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 6108, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "7915:7:26", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "7914:27:26" - }, - "returnParameters": { - "id": 6113, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 6112, - "name": "", - "nodeType": "VariableDeclaration", - "scope": 6119, - "src": "7987:7:26", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 6111, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "7987:7:26", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "7986:9:26" - }, - "scope": 6120, - "src": "7879:188:26", - "stateMutability": "view", - "superFunction": null, - "visibility": "public" - } - ], - "scope": 6121, - "src": "120:7949:26" - } - ], - "src": "0:8070:26" - }, - "legacyAST": { - "attributes": { - "absolutePath": "project:/contracts/KeepRegistry.sol", - "exportedSymbols": { - "KeepRegistry": [6120] - } - }, - "children": [ - { - "attributes": { - "literals": ["solidity", "0.5", ".17"] - }, - "id": 5680, - "name": "PragmaDirective", - "src": "0:23:26" - }, - { - "attributes": { - "baseContracts": [null], - "contractDependencies": [null], - "contractKind": "contract", - "documentation": "@title KeepRegistry\n @notice Governance owned registry of approved contracts and roles.", - "fullyImplemented": true, - "linearizedBaseContracts": [6120], - "name": "KeepRegistry", - "scope": 6121 - }, - "children": [ - { - "attributes": { - "canonicalName": "KeepRegistry.ContractStatus", - "name": "ContractStatus" - }, - "children": [ - { - "attributes": { - "name": "New" - }, - "id": 5681, - "name": "EnumValue", - "src": "169:3:26" - }, - { - "attributes": { - "name": "Approved" - }, - "id": 5682, - "name": "EnumValue", - "src": "174:8:26" - }, - { - "attributes": { - "name": "Disabled" - }, - "id": 5683, - "name": "EnumValue", - "src": "184:8:26" - } - ], - "id": 5684, - "name": "EnumDefinition", - "src": "148:45:26" - }, - { - "attributes": { - "constant": false, - "name": "governance", - "scope": 6120, - "stateVariable": true, - "storageLocation": "default", - "type": "address", - "value": null, - "visibility": "public" - }, - "children": [ - { - "attributes": { - "name": "address", - "stateMutability": "nonpayable", - "type": "address" - }, - "id": 5685, - "name": "ElementaryTypeName", - "src": "369:7:26" - } - ], - "id": 5686, - "name": "VariableDeclaration", - "src": "369:25:26" - }, - { - "attributes": { - "constant": false, - "name": "registryKeeper", - "scope": 6120, - "stateVariable": true, - "storageLocation": "default", - "type": "address", - "value": null, - "visibility": "public" - }, - "children": [ - { - "attributes": { - "name": "address", - "stateMutability": "nonpayable", - "type": "address" - }, - "id": 5687, - "name": "ElementaryTypeName", - "src": "588:7:26" - } - ], - "id": 5688, - "name": "VariableDeclaration", - "src": "588:29:26" - }, - { - "attributes": { - "constant": false, - "name": "panicButtons", - "scope": 6120, - "stateVariable": true, - "storageLocation": "default", - "type": "mapping(address => address)", - "value": null, - "visibility": "public" - }, - "children": [ - { - "attributes": { - "type": "mapping(address => address)" - }, - "children": [ - { - "attributes": { - "name": "address", - "type": "address" - }, - "id": 5689, - "name": "ElementaryTypeName", - "src": "1274:7:26" - }, - { - "attributes": { - "name": "address", - "stateMutability": "nonpayable", - "type": "address" - }, - "id": 5690, - "name": "ElementaryTypeName", - "src": "1285:7:26" - } - ], - "id": 5691, - "name": "Mapping", - "src": "1266:27:26" - } - ], - "id": 5692, - "name": "VariableDeclaration", - "src": "1266:47:26" - }, - { - "attributes": { - "constant": false, - "name": "defaultPanicButton", - "scope": 6120, - "stateVariable": true, - "storageLocation": "default", - "type": "address", - "value": null, - "visibility": "public" - }, - "children": [ - { - "attributes": { - "name": "address", - "stateMutability": "nonpayable", - "type": "address" - }, - "id": 5693, - "name": "ElementaryTypeName", - "src": "1449:7:26" - } - ], - "id": 5694, - "name": "VariableDeclaration", - "src": "1449:33:26" - }, - { - "attributes": { - "constant": false, - "name": "operatorContractUpgraders", - "scope": 6120, - "stateVariable": true, - "storageLocation": "default", - "type": "mapping(address => address)", - "value": null, - "visibility": "public" - }, - "children": [ - { - "attributes": { - "type": "mapping(address => address)" - }, - "children": [ - { - "attributes": { - "name": "address", - "type": "address" - }, - "id": 5695, - "name": "ElementaryTypeName", - "src": "1800:7:26" - }, - { - "attributes": { - "name": "address", - "stateMutability": "nonpayable", - "type": "address" - }, - "id": 5696, - "name": "ElementaryTypeName", - "src": "1811:7:26" - } - ], - "id": 5697, - "name": "Mapping", - "src": "1792:27:26" - } - ], - "id": 5698, - "name": "VariableDeclaration", - "src": "1792:60:26" - }, - { - "attributes": { - "constant": false, - "name": "serviceContractUpgraders", - "scope": 6120, - "stateVariable": true, - "storageLocation": "default", - "type": "mapping(address => address)", - "value": null, - "visibility": "public" - }, - "children": [ - { - "attributes": { - "type": "mapping(address => address)" - }, - "children": [ - { - "attributes": { - "name": "address", - "type": "address" - }, - "id": 5699, - "name": "ElementaryTypeName", - "src": "2377:7:26" - }, - { - "attributes": { - "name": "address", - "stateMutability": "nonpayable", - "type": "address" - }, - "id": 5700, - "name": "ElementaryTypeName", - "src": "2388:7:26" - } - ], - "id": 5701, - "name": "Mapping", - "src": "2369:27:26" - } - ], - "id": 5702, - "name": "VariableDeclaration", - "src": "2369:59:26" - }, - { - "attributes": { - "constant": false, - "name": "operatorContracts", - "scope": 6120, - "stateVariable": true, - "storageLocation": "default", - "type": "mapping(address => enum KeepRegistry.ContractStatus)", - "value": null, - "visibility": "public" - }, - "children": [ - { - "attributes": { - "type": "mapping(address => enum KeepRegistry.ContractStatus)" - }, - "children": [ - { - "attributes": { - "name": "address", - "type": "address" - }, - "id": 5703, - "name": "ElementaryTypeName", - "src": "2485:7:26" - }, - { - "attributes": { - "contractScope": null, - "name": "ContractStatus", - "referencedDeclaration": 5684, - "type": "enum KeepRegistry.ContractStatus" - }, - "id": 5704, - "name": "UserDefinedTypeName", - "src": "2496:14:26" - } - ], - "id": 5705, - "name": "Mapping", - "src": "2477:34:26" - } - ], - "id": 5706, - "name": "VariableDeclaration", - "src": "2477:59:26" - }, - { - "attributes": { - "anonymous": false, - "documentation": null, - "name": "OperatorContractApproved" - }, - "children": [ - { - "children": [ - { - "attributes": { - "constant": false, - "indexed": false, - "name": "operatorContract", - "scope": 5710, - "stateVariable": false, - "storageLocation": "default", - "type": "address", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "address", - "stateMutability": "nonpayable", - "type": "address" - }, - "id": 5707, - "name": "ElementaryTypeName", - "src": "2574:7:26" - } - ], - "id": 5708, - "name": "VariableDeclaration", - "src": "2574:24:26" - } - ], - "id": 5709, - "name": "ParameterList", - "src": "2573:26:26" - } - ], - "id": 5710, - "name": "EventDefinition", - "src": "2543:57:26" - }, - { - "attributes": { - "anonymous": false, - "documentation": null, - "name": "OperatorContractDisabled" - }, - "children": [ - { - "children": [ - { - "attributes": { - "constant": false, - "indexed": false, - "name": "operatorContract", - "scope": 5714, - "stateVariable": false, - "storageLocation": "default", - "type": "address", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "address", - "stateMutability": "nonpayable", - "type": "address" - }, - "id": 5711, - "name": "ElementaryTypeName", - "src": "2636:7:26" - } - ], - "id": 5712, - "name": "VariableDeclaration", - "src": "2636:24:26" - } - ], - "id": 5713, - "name": "ParameterList", - "src": "2635:26:26" - } - ], - "id": 5714, - "name": "EventDefinition", - "src": "2605:57:26" - }, - { - "attributes": { - "anonymous": false, - "documentation": null, - "name": "GovernanceUpdated" - }, - "children": [ - { - "children": [ - { - "attributes": { - "constant": false, - "indexed": false, - "name": "governance", - "scope": 5718, - "stateVariable": false, - "storageLocation": "default", - "type": "address", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "address", - "stateMutability": "nonpayable", - "type": "address" - }, - "id": 5715, - "name": "ElementaryTypeName", - "src": "2692:7:26" - } - ], - "id": 5716, - "name": "VariableDeclaration", - "src": "2692:18:26" - } - ], - "id": 5717, - "name": "ParameterList", - "src": "2691:20:26" - } - ], - "id": 5718, - "name": "EventDefinition", - "src": "2668:44:26" - }, - { - "attributes": { - "anonymous": false, - "documentation": null, - "name": "RegistryKeeperUpdated" - }, - "children": [ - { - "children": [ - { - "attributes": { - "constant": false, - "indexed": false, - "name": "registryKeeper", - "scope": 5722, - "stateVariable": false, - "storageLocation": "default", - "type": "address", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "address", - "stateMutability": "nonpayable", - "type": "address" - }, - "id": 5719, - "name": "ElementaryTypeName", - "src": "2745:7:26" - } - ], - "id": 5720, - "name": "VariableDeclaration", - "src": "2745:22:26" - } - ], - "id": 5721, - "name": "ParameterList", - "src": "2744:24:26" - } - ], - "id": 5722, - "name": "EventDefinition", - "src": "2717:52:26" - }, - { - "attributes": { - "anonymous": false, - "documentation": null, - "name": "DefaultPanicButtonUpdated" - }, - "children": [ - { - "children": [ - { - "attributes": { - "constant": false, - "indexed": false, - "name": "defaultPanicButton", - "scope": 5726, - "stateVariable": false, - "storageLocation": "default", - "type": "address", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "address", - "stateMutability": "nonpayable", - "type": "address" - }, - "id": 5723, - "name": "ElementaryTypeName", - "src": "2806:7:26" - } - ], - "id": 5724, - "name": "VariableDeclaration", - "src": "2806:26:26" - } - ], - "id": 5725, - "name": "ParameterList", - "src": "2805:28:26" - } - ], - "id": 5726, - "name": "EventDefinition", - "src": "2774:60:26" - }, - { - "attributes": { - "anonymous": false, - "documentation": null, - "name": "OperatorContractPanicButtonDisabled" - }, - "children": [ - { - "children": [ - { - "attributes": { - "constant": false, - "indexed": false, - "name": "operatorContract", - "scope": 5730, - "stateVariable": false, - "storageLocation": "default", - "type": "address", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "address", - "stateMutability": "nonpayable", - "type": "address" - }, - "id": 5727, - "name": "ElementaryTypeName", - "src": "2881:7:26" - } - ], - "id": 5728, - "name": "VariableDeclaration", - "src": "2881:24:26" - } - ], - "id": 5729, - "name": "ParameterList", - "src": "2880:26:26" - } - ], - "id": 5730, - "name": "EventDefinition", - "src": "2839:68:26" - }, - { - "attributes": { - "anonymous": false, - "documentation": null, - "name": "OperatorContractPanicButtonUpdated" - }, - "children": [ - { - "children": [ - { - "attributes": { - "constant": false, - "indexed": false, - "name": "operatorContract", - "scope": 5736, - "stateVariable": false, - "storageLocation": "default", - "type": "address", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "address", - "stateMutability": "nonpayable", - "type": "address" - }, - "id": 5731, - "name": "ElementaryTypeName", - "src": "2962:7:26" - } - ], - "id": 5732, - "name": "VariableDeclaration", - "src": "2962:24:26" - }, - { - "attributes": { - "constant": false, - "indexed": false, - "name": "panicButton", - "scope": 5736, - "stateVariable": false, - "storageLocation": "default", - "type": "address", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "address", - "stateMutability": "nonpayable", - "type": "address" - }, - "id": 5733, - "name": "ElementaryTypeName", - "src": "2996:7:26" - } - ], - "id": 5734, - "name": "VariableDeclaration", - "src": "2996:19:26" - } - ], - "id": 5735, - "name": "ParameterList", - "src": "2952:69:26" - } - ], - "id": 5736, - "name": "EventDefinition", - "src": "2912:110:26" - }, - { - "attributes": { - "anonymous": false, - "documentation": null, - "name": "OperatorContractUpgraderUpdated" - }, - "children": [ - { - "children": [ - { - "attributes": { - "constant": false, - "indexed": false, - "name": "serviceContract", - "scope": 5742, - "stateVariable": false, - "storageLocation": "default", - "type": "address", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "address", - "stateMutability": "nonpayable", - "type": "address" - }, - "id": 5737, - "name": "ElementaryTypeName", - "src": "3074:7:26" - } - ], - "id": 5738, - "name": "VariableDeclaration", - "src": "3074:23:26" - }, - { - "attributes": { - "constant": false, - "indexed": false, - "name": "upgrader", - "scope": 5742, - "stateVariable": false, - "storageLocation": "default", - "type": "address", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "address", - "stateMutability": "nonpayable", - "type": "address" - }, - "id": 5739, - "name": "ElementaryTypeName", - "src": "3107:7:26" - } - ], - "id": 5740, - "name": "VariableDeclaration", - "src": "3107:16:26" - } - ], - "id": 5741, - "name": "ParameterList", - "src": "3064:65:26" - } - ], - "id": 5742, - "name": "EventDefinition", - "src": "3027:103:26" - }, - { - "attributes": { - "anonymous": false, - "documentation": null, - "name": "ServiceContractUpgraderUpdated" - }, - "children": [ - { - "children": [ - { - "attributes": { - "constant": false, - "indexed": false, - "name": "operatorContract", - "scope": 5748, - "stateVariable": false, - "storageLocation": "default", - "type": "address", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "address", - "stateMutability": "nonpayable", - "type": "address" - }, - "id": 5743, - "name": "ElementaryTypeName", - "src": "3181:7:26" - } - ], - "id": 5744, - "name": "VariableDeclaration", - "src": "3181:24:26" - }, - { - "attributes": { - "constant": false, - "indexed": false, - "name": "keeper", - "scope": 5748, - "stateVariable": false, - "storageLocation": "default", - "type": "address", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "address", - "stateMutability": "nonpayable", - "type": "address" - }, - "id": 5745, - "name": "ElementaryTypeName", - "src": "3215:7:26" - } - ], - "id": 5746, - "name": "VariableDeclaration", - "src": "3215:14:26" - } - ], - "id": 5747, - "name": "ParameterList", - "src": "3171:64:26" - } - ], - "id": 5748, - "name": "EventDefinition", - "src": "3135:101:26" - }, - { - "attributes": { - "documentation": null, - "name": "onlyGovernance", - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "parameters": [null] - }, - "children": [], - "id": 5749, - "name": "ParameterList", - "src": "3265:2:26" - }, - { - "children": [ - { - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [null], - "type": "tuple()", - "type_conversion": false - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_stringliteral_fac3bac318c0d00994f57b0f2f4c643c313072b71db2302bf4b900309cc50b36", - "typeString": "literal_string \"Not authorized\"" - } - ], - "overloadedDeclarations": [28149, 28150], - "referencedDeclaration": 28150, - "type": "function (bool,string memory) pure", - "value": "require" - }, - "id": 5750, - "name": "Identifier", - "src": "3278:7:26" - }, - { - "attributes": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "operator": "==", - "type": "bool" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 5686, - "type": "address", - "value": "governance" - }, - "id": 5751, - "name": "Identifier", - "src": "3286:10:26" - }, - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "member_name": "sender", - "referencedDeclaration": null, - "type": "address payable" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 28146, - "type": "msg", - "value": "msg" - }, - "id": 5752, - "name": "Identifier", - "src": "3300:3:26" - } - ], - "id": 5753, - "name": "MemberAccess", - "src": "3300:10:26" - } - ], - "id": 5754, - "name": "BinaryOperation", - "src": "3286:24:26" - }, - { - "attributes": { - "argumentTypes": null, - "hexvalue": "4e6f7420617574686f72697a6564", - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "subdenomination": null, - "token": "string", - "type": "literal_string \"Not authorized\"", - "value": "Not authorized" - }, - "id": 5755, - "name": "Literal", - "src": "3312:16:26" - } - ], - "id": 5756, - "name": "FunctionCall", - "src": "3278:51:26" - } - ], - "id": 5757, - "name": "ExpressionStatement", - "src": "3278:51:26" - }, - { - "id": 5758, - "name": "PlaceholderStatement", - "src": "3339:1:26" - } - ], - "id": 5759, - "name": "Block", - "src": "3268:79:26" - } - ], - "id": 5760, - "name": "ModifierDefinition", - "src": "3242:105:26" - }, - { - "attributes": { - "documentation": null, - "name": "onlyRegistryKeeper", - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "parameters": [null] - }, - "children": [], - "id": 5761, - "name": "ParameterList", - "src": "3380:2:26" - }, - { - "children": [ - { - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [null], - "type": "tuple()", - "type_conversion": false - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_stringliteral_fac3bac318c0d00994f57b0f2f4c643c313072b71db2302bf4b900309cc50b36", - "typeString": "literal_string \"Not authorized\"" - } - ], - "overloadedDeclarations": [28149, 28150], - "referencedDeclaration": 28150, - "type": "function (bool,string memory) pure", - "value": "require" - }, - "id": 5762, - "name": "Identifier", - "src": "3393:7:26" - }, - { - "attributes": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "operator": "==", - "type": "bool" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 5688, - "type": "address", - "value": "registryKeeper" - }, - "id": 5763, - "name": "Identifier", - "src": "3401:14:26" - }, - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "member_name": "sender", - "referencedDeclaration": null, - "type": "address payable" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 28146, - "type": "msg", - "value": "msg" - }, - "id": 5764, - "name": "Identifier", - "src": "3419:3:26" - } - ], - "id": 5765, - "name": "MemberAccess", - "src": "3419:10:26" - } - ], - "id": 5766, - "name": "BinaryOperation", - "src": "3401:28:26" - }, - { - "attributes": { - "argumentTypes": null, - "hexvalue": "4e6f7420617574686f72697a6564", - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "subdenomination": null, - "token": "string", - "type": "literal_string \"Not authorized\"", - "value": "Not authorized" - }, - "id": 5767, - "name": "Literal", - "src": "3431:16:26" - } - ], - "id": 5768, - "name": "FunctionCall", - "src": "3393:55:26" - } - ], - "id": 5769, - "name": "ExpressionStatement", - "src": "3393:55:26" - }, - { - "id": 5770, - "name": "PlaceholderStatement", - "src": "3458:1:26" - } - ], - "id": 5771, - "name": "Block", - "src": "3383:83:26" - } - ], - "id": 5772, - "name": "ModifierDefinition", - "src": "3353:113:26" - }, - { - "attributes": { - "documentation": null, - "name": "onlyPanicButton", - "visibility": "internal" - }, - "children": [ - { - "children": [ - { - "attributes": { - "constant": false, - "name": "_operatorContract", - "scope": 5801, - "stateVariable": false, - "storageLocation": "default", - "type": "address", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "address", - "stateMutability": "nonpayable", - "type": "address" - }, - "id": 5773, - "name": "ElementaryTypeName", - "src": "3497:7:26" - } - ], - "id": 5774, - "name": "VariableDeclaration", - "src": "3497:25:26" - } - ], - "id": 5775, - "name": "ParameterList", - "src": "3496:27:26" - }, - { - "children": [ - { - "attributes": { - "assignments": [5777] - }, - "children": [ - { - "attributes": { - "constant": false, - "name": "panicButton", - "scope": 5800, - "stateVariable": false, - "storageLocation": "default", - "type": "address", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "address", - "stateMutability": "nonpayable", - "type": "address" - }, - "id": 5776, - "name": "ElementaryTypeName", - "src": "3534:7:26" - } - ], - "id": 5777, - "name": "VariableDeclaration", - "src": "3534:19:26" - }, - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "type": "address" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 5692, - "type": "mapping(address => address)", - "value": "panicButtons" - }, - "id": 5778, - "name": "Identifier", - "src": "3556:12:26" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 5774, - "type": "address", - "value": "_operatorContract" - }, - "id": 5779, - "name": "Identifier", - "src": "3569:17:26" - } - ], - "id": 5780, - "name": "IndexAccess", - "src": "3556:31:26" - } - ], - "id": 5781, - "name": "VariableDeclarationStatement", - "src": "3534:53:26" - }, - { - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [null], - "type": "tuple()", - "type_conversion": false - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_stringliteral_ade7d52768b2962ebe381899f913000013150b093135ace53d3db606894f67e1", - "typeString": "literal_string \"Panic button disabled\"" - } - ], - "overloadedDeclarations": [28149, 28150], - "referencedDeclaration": 28150, - "type": "function (bool,string memory) pure", - "value": "require" - }, - "id": 5782, - "name": "Identifier", - "src": "3597:7:26" - }, - { - "attributes": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "operator": "!=", - "type": "bool" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 5777, - "type": "address", - "value": "panicButton" - }, - "id": 5783, - "name": "Identifier", - "src": "3605:11:26" - }, - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": true, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [null], - "type": "address payable", - "type_conversion": true - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - } - ], - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "type": "type(address)", - "value": "address" - }, - "id": 5784, - "name": "ElementaryTypeNameExpression", - "src": "3620:7:26" - }, - { - "attributes": { - "argumentTypes": null, - "hexvalue": "30", - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "subdenomination": null, - "token": "number", - "type": "int_const 0", - "value": "0" - }, - "id": 5785, - "name": "Literal", - "src": "3628:1:26" - } - ], - "id": 5786, - "name": "FunctionCall", - "src": "3620:10:26" - } - ], - "id": 5787, - "name": "BinaryOperation", - "src": "3605:25:26" - }, - { - "attributes": { - "argumentTypes": null, - "hexvalue": "50616e696320627574746f6e2064697361626c6564", - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "subdenomination": null, - "token": "string", - "type": "literal_string \"Panic button disabled\"", - "value": "Panic button disabled" - }, - "id": 5788, - "name": "Literal", - "src": "3632:23:26" - } - ], - "id": 5789, - "name": "FunctionCall", - "src": "3597:59:26" - } - ], - "id": 5790, - "name": "ExpressionStatement", - "src": "3597:59:26" - }, - { - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [null], - "type": "tuple()", - "type_conversion": false - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_stringliteral_fac3bac318c0d00994f57b0f2f4c643c313072b71db2302bf4b900309cc50b36", - "typeString": "literal_string \"Not authorized\"" - } - ], - "overloadedDeclarations": [28149, 28150], - "referencedDeclaration": 28150, - "type": "function (bool,string memory) pure", - "value": "require" - }, - "id": 5791, - "name": "Identifier", - "src": "3666:7:26" - }, - { - "attributes": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "operator": "==", - "type": "bool" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 5777, - "type": "address", - "value": "panicButton" - }, - "id": 5792, - "name": "Identifier", - "src": "3674:11:26" - }, - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "member_name": "sender", - "referencedDeclaration": null, - "type": "address payable" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 28146, - "type": "msg", - "value": "msg" - }, - "id": 5793, - "name": "Identifier", - "src": "3689:3:26" - } - ], - "id": 5794, - "name": "MemberAccess", - "src": "3689:10:26" - } - ], - "id": 5795, - "name": "BinaryOperation", - "src": "3674:25:26" - }, - { - "attributes": { - "argumentTypes": null, - "hexvalue": "4e6f7420617574686f72697a6564", - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "subdenomination": null, - "token": "string", - "type": "literal_string \"Not authorized\"", - "value": "Not authorized" - }, - "id": 5796, - "name": "Literal", - "src": "3701:16:26" - } - ], - "id": 5797, - "name": "FunctionCall", - "src": "3666:52:26" - } - ], - "id": 5798, - "name": "ExpressionStatement", - "src": "3666:52:26" - }, - { - "id": 5799, - "name": "PlaceholderStatement", - "src": "3728:1:26" - } - ], - "id": 5800, - "name": "Block", - "src": "3524:212:26" - } - ], - "id": 5801, - "name": "ModifierDefinition", - "src": "3472:264:26" - }, - { - "attributes": { - "documentation": null, - "name": "onlyForNewContract", - "visibility": "internal" - }, - "children": [ - { - "children": [ - { - "attributes": { - "constant": false, - "name": "_operatorContract", - "scope": 5814, - "stateVariable": false, - "storageLocation": "default", - "type": "address", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "address", - "stateMutability": "nonpayable", - "type": "address" - }, - "id": 5802, - "name": "ElementaryTypeName", - "src": "3770:7:26" - } - ], - "id": 5803, - "name": "VariableDeclaration", - "src": "3770:25:26" - } - ], - "id": 5804, - "name": "ParameterList", - "src": "3769:27:26" - }, - { - "children": [ - { - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [null], - "type": "tuple()", - "type_conversion": false - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_stringliteral_8c4324476717aecd1e569d3ba832c005a24f88be8c2ba65d585df6b95edd8a35", - "typeString": "literal_string \"Not a new operator contract\"" - } - ], - "overloadedDeclarations": [28149, 28150], - "referencedDeclaration": 28150, - "type": "function (bool,string memory) pure", - "value": "require" - }, - "id": 5805, - "name": "Identifier", - "src": "3807:7:26" - }, - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [null], - "type": "bool", - "type_conversion": false - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "overloadedDeclarations": [null], - "referencedDeclaration": 6080, - "type": "function (address) view returns (bool)", - "value": "isNewOperatorContract" - }, - "id": 5806, - "name": "Identifier", - "src": "3828:21:26" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 5803, - "type": "address", - "value": "_operatorContract" - }, - "id": 5807, - "name": "Identifier", - "src": "3850:17:26" - } - ], - "id": 5808, - "name": "FunctionCall", - "src": "3828:40:26" - }, - { - "attributes": { - "argumentTypes": null, - "hexvalue": "4e6f742061206e6577206f70657261746f7220636f6e7472616374", - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "subdenomination": null, - "token": "string", - "type": "literal_string \"Not a new operator contract\"", - "value": "Not a new operator contract" - }, - "id": 5809, - "name": "Literal", - "src": "3882:29:26" - } - ], - "id": 5810, - "name": "FunctionCall", - "src": "3807:114:26" - } - ], - "id": 5811, - "name": "ExpressionStatement", - "src": "3807:114:26" - }, - { - "id": 5812, - "name": "PlaceholderStatement", - "src": "3931:1:26" - } - ], - "id": 5813, - "name": "Block", - "src": "3797:142:26" - } - ], - "id": 5814, - "name": "ModifierDefinition", - "src": "3742:197:26" - }, - { - "attributes": { - "documentation": null, - "name": "onlyForApprovedContract", - "visibility": "internal" - }, - "children": [ - { - "children": [ - { - "attributes": { - "constant": false, - "name": "_operatorContract", - "scope": 5827, - "stateVariable": false, - "storageLocation": "default", - "type": "address", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "address", - "stateMutability": "nonpayable", - "type": "address" - }, - "id": 5815, - "name": "ElementaryTypeName", - "src": "3978:7:26" - } - ], - "id": 5816, - "name": "VariableDeclaration", - "src": "3978:25:26" - } - ], - "id": 5817, - "name": "ParameterList", - "src": "3977:27:26" - }, - { - "children": [ - { - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [null], - "type": "tuple()", - "type_conversion": false - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_stringliteral_b6f9ff674e366ea74583b3402886a452ea021bd3f0dac1662124ff59e8062f7f", - "typeString": "literal_string \"Not an approved operator contract\"" - } - ], - "overloadedDeclarations": [28149, 28150], - "referencedDeclaration": 28150, - "type": "function (bool,string memory) pure", - "value": "require" - }, - "id": 5818, - "name": "Identifier", - "src": "4015:7:26" - }, - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [null], - "type": "bool", - "type_conversion": false - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "overloadedDeclarations": [null], - "referencedDeclaration": 6095, - "type": "function (address) view returns (bool)", - "value": "isApprovedOperatorContract" - }, - "id": 5819, - "name": "Identifier", - "src": "4036:26:26" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 5816, - "type": "address", - "value": "_operatorContract" - }, - "id": 5820, - "name": "Identifier", - "src": "4063:17:26" - } - ], - "id": 5821, - "name": "FunctionCall", - "src": "4036:45:26" - }, - { - "attributes": { - "argumentTypes": null, - "hexvalue": "4e6f7420616e20617070726f766564206f70657261746f7220636f6e7472616374", - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "subdenomination": null, - "token": "string", - "type": "literal_string \"Not an approved operator contract\"", - "value": "Not an approved operator contract" - }, - "id": 5822, - "name": "Literal", - "src": "4095:35:26" - } - ], - "id": 5823, - "name": "FunctionCall", - "src": "4015:125:26" - } - ], - "id": 5824, - "name": "ExpressionStatement", - "src": "4015:125:26" - }, - { - "id": 5825, - "name": "PlaceholderStatement", - "src": "4150:1:26" - } - ], - "id": 5826, - "name": "Block", - "src": "4005:153:26" - } - ], - "id": 5827, - "name": "ModifierDefinition", - "src": "3945:213:26" - }, - { - "attributes": { - "documentation": null, - "implemented": true, - "isConstructor": true, - "kind": "constructor", - "modifiers": [null], - "name": "", - "scope": 6120, - "stateMutability": "nonpayable", - "superFunction": null, - "visibility": "public" - }, - "children": [ - { - "attributes": { - "parameters": [null] - }, - "children": [], - "id": 5828, - "name": "ParameterList", - "src": "4175:2:26" - }, - { - "attributes": { - "parameters": [null] - }, - "children": [], - "id": 5829, - "name": "ParameterList", - "src": "4185:0:26" - }, - { - "children": [ - { - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "operator": "=", - "type": "address" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 5686, - "type": "address", - "value": "governance" - }, - "id": 5830, - "name": "Identifier", - "src": "4195:10:26" - }, - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "member_name": "sender", - "referencedDeclaration": null, - "type": "address payable" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 28146, - "type": "msg", - "value": "msg" - }, - "id": 5831, - "name": "Identifier", - "src": "4208:3:26" - } - ], - "id": 5832, - "name": "MemberAccess", - "src": "4208:10:26" - } - ], - "id": 5833, - "name": "Assignment", - "src": "4195:23:26" - } - ], - "id": 5834, - "name": "ExpressionStatement", - "src": "4195:23:26" - }, - { - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "operator": "=", - "type": "address" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 5688, - "type": "address", - "value": "registryKeeper" - }, - "id": 5835, - "name": "Identifier", - "src": "4228:14:26" - }, - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "member_name": "sender", - "referencedDeclaration": null, - "type": "address payable" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 28146, - "type": "msg", - "value": "msg" - }, - "id": 5836, - "name": "Identifier", - "src": "4245:3:26" - } - ], - "id": 5837, - "name": "MemberAccess", - "src": "4245:10:26" - } - ], - "id": 5838, - "name": "Assignment", - "src": "4228:27:26" - } - ], - "id": 5839, - "name": "ExpressionStatement", - "src": "4228:27:26" - }, - { - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "operator": "=", - "type": "address" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 5694, - "type": "address", - "value": "defaultPanicButton" - }, - "id": 5840, - "name": "Identifier", - "src": "4265:18:26" - }, - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "member_name": "sender", - "referencedDeclaration": null, - "type": "address payable" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 28146, - "type": "msg", - "value": "msg" - }, - "id": 5841, - "name": "Identifier", - "src": "4286:3:26" - } - ], - "id": 5842, - "name": "MemberAccess", - "src": "4286:10:26" - } - ], - "id": 5843, - "name": "Assignment", - "src": "4265:31:26" - } - ], - "id": 5844, - "name": "ExpressionStatement", - "src": "4265:31:26" - } - ], - "id": 5845, - "name": "Block", - "src": "4185:118:26" - } - ], - "id": 5846, - "name": "FunctionDefinition", - "src": "4164:139:26" - }, - { - "attributes": { - "documentation": null, - "implemented": true, - "isConstructor": false, - "kind": "function", - "name": "setGovernance", - "scope": 6120, - "stateMutability": "nonpayable", - "superFunction": null, - "visibility": "public" - }, - "children": [ - { - "children": [ - { - "attributes": { - "constant": false, - "name": "_governance", - "scope": 5862, - "stateVariable": false, - "storageLocation": "default", - "type": "address", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "address", - "stateMutability": "nonpayable", - "type": "address" - }, - "id": 5847, - "name": "ElementaryTypeName", - "src": "4332:7:26" - } - ], - "id": 5848, - "name": "VariableDeclaration", - "src": "4332:19:26" - } - ], - "id": 5849, - "name": "ParameterList", - "src": "4331:21:26" - }, - { - "attributes": { - "parameters": [null] - }, - "children": [], - "id": 5852, - "name": "ParameterList", - "src": "4375:0:26" - }, - { - "attributes": { - "arguments": null - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 5760, - "type": "modifier ()", - "value": "onlyGovernance" - }, - "id": 5850, - "name": "Identifier", - "src": "4360:14:26" - } - ], - "id": 5851, - "name": "ModifierInvocation", - "src": "4360:14:26" - }, - { - "children": [ - { - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "operator": "=", - "type": "address" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 5686, - "type": "address", - "value": "governance" - }, - "id": 5853, - "name": "Identifier", - "src": "4385:10:26" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 5848, - "type": "address", - "value": "_governance" - }, - "id": 5854, - "name": "Identifier", - "src": "4398:11:26" - } - ], - "id": 5855, - "name": "Assignment", - "src": "4385:24:26" - } - ], - "id": 5856, - "name": "ExpressionStatement", - "src": "4385:24:26" - }, - { - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [null], - "type": "tuple()", - "type_conversion": false - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "overloadedDeclarations": [null], - "referencedDeclaration": 5718, - "type": "function (address)", - "value": "GovernanceUpdated" - }, - "id": 5857, - "name": "Identifier", - "src": "4424:17:26" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 5686, - "type": "address", - "value": "governance" - }, - "id": 5858, - "name": "Identifier", - "src": "4442:10:26" - } - ], - "id": 5859, - "name": "FunctionCall", - "src": "4424:29:26" - } - ], - "id": 5860, - "name": "EmitStatement", - "src": "4419:34:26" - } - ], - "id": 5861, - "name": "Block", - "src": "4375:85:26" - } - ], - "id": 5862, - "name": "FunctionDefinition", - "src": "4309:151:26" - }, - { - "attributes": { - "documentation": null, - "implemented": true, - "isConstructor": false, - "kind": "function", - "name": "setRegistryKeeper", - "scope": 6120, - "stateMutability": "nonpayable", - "superFunction": null, - "visibility": "public" - }, - "children": [ - { - "children": [ - { - "attributes": { - "constant": false, - "name": "_registryKeeper", - "scope": 5878, - "stateVariable": false, - "storageLocation": "default", - "type": "address", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "address", - "stateMutability": "nonpayable", - "type": "address" - }, - "id": 5863, - "name": "ElementaryTypeName", - "src": "4493:7:26" - } - ], - "id": 5864, - "name": "VariableDeclaration", - "src": "4493:23:26" - } - ], - "id": 5865, - "name": "ParameterList", - "src": "4492:25:26" - }, - { - "attributes": { - "parameters": [null] - }, - "children": [], - "id": 5868, - "name": "ParameterList", - "src": "4540:0:26" - }, - { - "attributes": { - "arguments": null - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 5760, - "type": "modifier ()", - "value": "onlyGovernance" - }, - "id": 5866, - "name": "Identifier", - "src": "4525:14:26" - } - ], - "id": 5867, - "name": "ModifierInvocation", - "src": "4525:14:26" - }, - { - "children": [ - { - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "operator": "=", - "type": "address" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 5688, - "type": "address", - "value": "registryKeeper" - }, - "id": 5869, - "name": "Identifier", - "src": "4550:14:26" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 5864, - "type": "address", - "value": "_registryKeeper" - }, - "id": 5870, - "name": "Identifier", - "src": "4567:15:26" - } - ], - "id": 5871, - "name": "Assignment", - "src": "4550:32:26" - } - ], - "id": 5872, - "name": "ExpressionStatement", - "src": "4550:32:26" - }, - { - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [null], - "type": "tuple()", - "type_conversion": false - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "overloadedDeclarations": [null], - "referencedDeclaration": 5722, - "type": "function (address)", - "value": "RegistryKeeperUpdated" - }, - "id": 5873, - "name": "Identifier", - "src": "4597:21:26" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 5688, - "type": "address", - "value": "registryKeeper" - }, - "id": 5874, - "name": "Identifier", - "src": "4619:14:26" - } - ], - "id": 5875, - "name": "FunctionCall", - "src": "4597:37:26" - } - ], - "id": 5876, - "name": "EmitStatement", - "src": "4592:42:26" - } - ], - "id": 5877, - "name": "Block", - "src": "4540:101:26" - } - ], - "id": 5878, - "name": "FunctionDefinition", - "src": "4466:175:26" - }, - { - "attributes": { - "documentation": null, - "implemented": true, - "isConstructor": false, - "kind": "function", - "name": "setDefaultPanicButton", - "scope": 6120, - "stateMutability": "nonpayable", - "superFunction": null, - "visibility": "public" - }, - "children": [ - { - "children": [ - { - "attributes": { - "constant": false, - "name": "_panicButton", - "scope": 5894, - "stateVariable": false, - "storageLocation": "default", - "type": "address", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "address", - "stateMutability": "nonpayable", - "type": "address" - }, - "id": 5879, - "name": "ElementaryTypeName", - "src": "4678:7:26" - } - ], - "id": 5880, - "name": "VariableDeclaration", - "src": "4678:20:26" - } - ], - "id": 5881, - "name": "ParameterList", - "src": "4677:22:26" - }, - { - "attributes": { - "parameters": [null] - }, - "children": [], - "id": 5884, - "name": "ParameterList", - "src": "4722:0:26" - }, - { - "attributes": { - "arguments": null - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 5760, - "type": "modifier ()", - "value": "onlyGovernance" - }, - "id": 5882, - "name": "Identifier", - "src": "4707:14:26" - } - ], - "id": 5883, - "name": "ModifierInvocation", - "src": "4707:14:26" - }, - { - "children": [ - { - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "operator": "=", - "type": "address" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 5694, - "type": "address", - "value": "defaultPanicButton" - }, - "id": 5885, - "name": "Identifier", - "src": "4732:18:26" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 5880, - "type": "address", - "value": "_panicButton" - }, - "id": 5886, - "name": "Identifier", - "src": "4753:12:26" - } - ], - "id": 5887, - "name": "Assignment", - "src": "4732:33:26" - } - ], - "id": 5888, - "name": "ExpressionStatement", - "src": "4732:33:26" - }, - { - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [null], - "type": "tuple()", - "type_conversion": false - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "overloadedDeclarations": [null], - "referencedDeclaration": 5726, - "type": "function (address)", - "value": "DefaultPanicButtonUpdated" - }, - "id": 5889, - "name": "Identifier", - "src": "4780:25:26" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 5694, - "type": "address", - "value": "defaultPanicButton" - }, - "id": 5890, - "name": "Identifier", - "src": "4806:18:26" - } - ], - "id": 5891, - "name": "FunctionCall", - "src": "4780:45:26" - } - ], - "id": 5892, - "name": "EmitStatement", - "src": "4775:50:26" - } - ], - "id": 5893, - "name": "Block", - "src": "4722:110:26" - } - ], - "id": 5894, - "name": "FunctionDefinition", - "src": "4647:185:26" - }, - { - "attributes": { - "documentation": null, - "implemented": true, - "isConstructor": false, - "kind": "function", - "name": "setOperatorContractPanicButton", - "scope": 6120, - "stateMutability": "nonpayable", - "superFunction": null, - "visibility": "public" - }, - "children": [ - { - "children": [ - { - "attributes": { - "constant": false, - "name": "_operatorContract", - "scope": 5938, - "stateVariable": false, - "storageLocation": "default", - "type": "address", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "address", - "stateMutability": "nonpayable", - "type": "address" - }, - "id": 5895, - "name": "ElementaryTypeName", - "src": "4887:7:26" - } - ], - "id": 5896, - "name": "VariableDeclaration", - "src": "4887:25:26" - }, - { - "attributes": { - "constant": false, - "name": "_panicButton", - "scope": 5938, - "stateVariable": false, - "storageLocation": "default", - "type": "address", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "address", - "stateMutability": "nonpayable", - "type": "address" - }, - "id": 5897, - "name": "ElementaryTypeName", - "src": "4922:7:26" - } - ], - "id": 5898, - "name": "VariableDeclaration", - "src": "4922:20:26" - } - ], - "id": 5899, - "name": "ParameterList", - "src": "4877:71:26" - }, - { - "attributes": { - "parameters": [null] - }, - "children": [], - "id": 5905, - "name": "ParameterList", - "src": "5014:0:26" - }, - { - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 5827, - "type": "modifier (address)", - "value": "onlyForApprovedContract" - }, - "id": 5900, - "name": "Identifier", - "src": "4956:23:26" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 5896, - "type": "address", - "value": "_operatorContract" - }, - "id": 5901, - "name": "Identifier", - "src": "4980:17:26" - } - ], - "id": 5902, - "name": "ModifierInvocation", - "src": "4956:42:26" - }, - { - "attributes": { - "arguments": null - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 5760, - "type": "modifier ()", - "value": "onlyGovernance" - }, - "id": 5903, - "name": "Identifier", - "src": "4999:14:26" - } - ], - "id": 5904, - "name": "ModifierInvocation", - "src": "4999:14:26" - }, - { - "children": [ - { - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [null], - "type": "tuple()", - "type_conversion": false - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_stringliteral_8d1b9aaf1a91db2554cb251884681dc026fd3d7a153bea70c79e510a6a54dd87", - "typeString": "literal_string \"Disabled panic button cannot be updated\"" - } - ], - "overloadedDeclarations": [28149, 28150], - "referencedDeclaration": 28150, - "type": "function (bool,string memory) pure", - "value": "require" - }, - "id": 5906, - "name": "Identifier", - "src": "5024:7:26" - }, - { - "attributes": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "operator": "!=", - "type": "bool" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "type": "address" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 5692, - "type": "mapping(address => address)", - "value": "panicButtons" - }, - "id": 5907, - "name": "Identifier", - "src": "5045:12:26" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 5896, - "type": "address", - "value": "_operatorContract" - }, - "id": 5908, - "name": "Identifier", - "src": "5058:17:26" - } - ], - "id": 5909, - "name": "IndexAccess", - "src": "5045:31:26" - }, - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": true, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [null], - "type": "address payable", - "type_conversion": true - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - } - ], - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "type": "type(address)", - "value": "address" - }, - "id": 5910, - "name": "ElementaryTypeNameExpression", - "src": "5080:7:26" - }, - { - "attributes": { - "argumentTypes": null, - "hexvalue": "30", - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "subdenomination": null, - "token": "number", - "type": "int_const 0", - "value": "0" - }, - "id": 5911, - "name": "Literal", - "src": "5088:1:26" - } - ], - "id": 5912, - "name": "FunctionCall", - "src": "5080:10:26" - } - ], - "id": 5913, - "name": "BinaryOperation", - "src": "5045:45:26" - }, - { - "attributes": { - "argumentTypes": null, - "hexvalue": "44697361626c65642070616e696320627574746f6e2063616e6e6f742062652075706461746564", - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "subdenomination": null, - "token": "string", - "type": "literal_string \"Disabled panic button cannot be updated\"", - "value": "Disabled panic button cannot be updated" - }, - "id": 5914, - "name": "Literal", - "src": "5104:41:26" - } - ], - "id": 5915, - "name": "FunctionCall", - "src": "5024:131:26" - } - ], - "id": 5916, - "name": "ExpressionStatement", - "src": "5024:131:26" - }, - { - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [null], - "type": "tuple()", - "type_conversion": false - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_stringliteral_e5a7b2a0d032ae56f5d1e30bd631d28945ee32864ebe6c7d1d2b0c4e8cc78eb5", - "typeString": "literal_string \"Panic button must be non-zero address\"" - } - ], - "overloadedDeclarations": [28149, 28150], - "referencedDeclaration": 28150, - "type": "function (bool,string memory) pure", - "value": "require" - }, - "id": 5917, - "name": "Identifier", - "src": "5165:7:26" - }, - { - "attributes": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "operator": "!=", - "type": "bool" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 5898, - "type": "address", - "value": "_panicButton" - }, - "id": 5918, - "name": "Identifier", - "src": "5186:12:26" - }, - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": true, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [null], - "type": "address payable", - "type_conversion": true - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - } - ], - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "type": "type(address)", - "value": "address" - }, - "id": 5919, - "name": "ElementaryTypeNameExpression", - "src": "5202:7:26" - }, - { - "attributes": { - "argumentTypes": null, - "hexvalue": "30", - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "subdenomination": null, - "token": "number", - "type": "int_const 0", - "value": "0" - }, - "id": 5920, - "name": "Literal", - "src": "5210:1:26" - } - ], - "id": 5921, - "name": "FunctionCall", - "src": "5202:10:26" - } - ], - "id": 5922, - "name": "BinaryOperation", - "src": "5186:26:26" - }, - { - "attributes": { - "argumentTypes": null, - "hexvalue": "50616e696320627574746f6e206d757374206265206e6f6e2d7a65726f2061646472657373", - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "subdenomination": null, - "token": "string", - "type": "literal_string \"Panic button must be non-zero address\"", - "value": "Panic button must be non-zero address" - }, - "id": 5923, - "name": "Literal", - "src": "5226:39:26" - } - ], - "id": 5924, - "name": "FunctionCall", - "src": "5165:110:26" - } - ], - "id": 5925, - "name": "ExpressionStatement", - "src": "5165:110:26" - }, - { - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "operator": "=", - "type": "address" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "type": "address" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 5692, - "type": "mapping(address => address)", - "value": "panicButtons" - }, - "id": 5926, - "name": "Identifier", - "src": "5286:12:26" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 5896, - "type": "address", - "value": "_operatorContract" - }, - "id": 5927, - "name": "Identifier", - "src": "5299:17:26" - } - ], - "id": 5928, - "name": "IndexAccess", - "src": "5286:31:26" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 5898, - "type": "address", - "value": "_panicButton" - }, - "id": 5929, - "name": "Identifier", - "src": "5320:12:26" - } - ], - "id": 5930, - "name": "Assignment", - "src": "5286:46:26" - } - ], - "id": 5931, - "name": "ExpressionStatement", - "src": "5286:46:26" - }, - { - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [null], - "type": "tuple()", - "type_conversion": false - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "overloadedDeclarations": [null], - "referencedDeclaration": 5736, - "type": "function (address,address)", - "value": "OperatorContractPanicButtonUpdated" - }, - "id": 5932, - "name": "Identifier", - "src": "5348:34:26" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 5896, - "type": "address", - "value": "_operatorContract" - }, - "id": 5933, - "name": "Identifier", - "src": "5396:17:26" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 5898, - "type": "address", - "value": "_panicButton" - }, - "id": 5934, - "name": "Identifier", - "src": "5427:12:26" - } - ], - "id": 5935, - "name": "FunctionCall", - "src": "5348:101:26" - } - ], - "id": 5936, - "name": "EmitStatement", - "src": "5343:106:26" - } - ], - "id": 5937, - "name": "Block", - "src": "5014:442:26" - } - ], - "id": 5938, - "name": "FunctionDefinition", - "src": "4838:618:26" - }, - { - "attributes": { - "documentation": null, - "implemented": true, - "isConstructor": false, - "kind": "function", - "name": "disableOperatorContractPanicButton", - "scope": 6120, - "stateMutability": "nonpayable", - "superFunction": null, - "visibility": "public" - }, - "children": [ - { - "children": [ - { - "attributes": { - "constant": false, - "name": "_operatorContract", - "scope": 5972, - "stateVariable": false, - "storageLocation": "default", - "type": "address", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "address", - "stateMutability": "nonpayable", - "type": "address" - }, - "id": 5939, - "name": "ElementaryTypeName", - "src": "5506:7:26" - } - ], - "id": 5940, - "name": "VariableDeclaration", - "src": "5506:25:26" - } - ], - "id": 5941, - "name": "ParameterList", - "src": "5505:27:26" - }, - { - "attributes": { - "parameters": [null] - }, - "children": [], - "id": 5947, - "name": "ParameterList", - "src": "5626:0:26" - }, - { - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 5827, - "type": "modifier (address)", - "value": "onlyForApprovedContract" - }, - "id": 5942, - "name": "Identifier", - "src": "5556:23:26" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 5940, - "type": "address", - "value": "_operatorContract" - }, - "id": 5943, - "name": "Identifier", - "src": "5580:17:26" - } - ], - "id": 5944, - "name": "ModifierInvocation", - "src": "5556:42:26" - }, - { - "attributes": { - "arguments": null - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 5760, - "type": "modifier ()", - "value": "onlyGovernance" - }, - "id": 5945, - "name": "Identifier", - "src": "5607:14:26" - } - ], - "id": 5946, - "name": "ModifierInvocation", - "src": "5607:14:26" - }, - { - "children": [ - { - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [null], - "type": "tuple()", - "type_conversion": false - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_stringliteral_bb534723a179d6568d886b637fa707371e8c13170fa009941c10391cd4682512", - "typeString": "literal_string \"Panic button already disabled\"" - } - ], - "overloadedDeclarations": [28149, 28150], - "referencedDeclaration": 28150, - "type": "function (bool,string memory) pure", - "value": "require" - }, - "id": 5948, - "name": "Identifier", - "src": "5636:7:26" - }, - { - "attributes": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "operator": "!=", - "type": "bool" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "type": "address" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 5692, - "type": "mapping(address => address)", - "value": "panicButtons" - }, - "id": 5949, - "name": "Identifier", - "src": "5657:12:26" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 5940, - "type": "address", - "value": "_operatorContract" - }, - "id": 5950, - "name": "Identifier", - "src": "5670:17:26" - } - ], - "id": 5951, - "name": "IndexAccess", - "src": "5657:31:26" - }, - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": true, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [null], - "type": "address payable", - "type_conversion": true - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - } - ], - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "type": "type(address)", - "value": "address" - }, - "id": 5952, - "name": "ElementaryTypeNameExpression", - "src": "5692:7:26" - }, - { - "attributes": { - "argumentTypes": null, - "hexvalue": "30", - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "subdenomination": null, - "token": "number", - "type": "int_const 0", - "value": "0" - }, - "id": 5953, - "name": "Literal", - "src": "5700:1:26" - } - ], - "id": 5954, - "name": "FunctionCall", - "src": "5692:10:26" - } - ], - "id": 5955, - "name": "BinaryOperation", - "src": "5657:45:26" - }, - { - "attributes": { - "argumentTypes": null, - "hexvalue": "50616e696320627574746f6e20616c72656164792064697361626c6564", - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "subdenomination": null, - "token": "string", - "type": "literal_string \"Panic button already disabled\"", - "value": "Panic button already disabled" - }, - "id": 5956, - "name": "Literal", - "src": "5716:31:26" - } - ], - "id": 5957, - "name": "FunctionCall", - "src": "5636:121:26" - } - ], - "id": 5958, - "name": "ExpressionStatement", - "src": "5636:121:26" - }, - { - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "operator": "=", - "type": "address" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "type": "address" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 5692, - "type": "mapping(address => address)", - "value": "panicButtons" - }, - "id": 5959, - "name": "Identifier", - "src": "5768:12:26" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 5940, - "type": "address", - "value": "_operatorContract" - }, - "id": 5960, - "name": "Identifier", - "src": "5781:17:26" - } - ], - "id": 5961, - "name": "IndexAccess", - "src": "5768:31:26" - }, - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": true, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [null], - "type": "address payable", - "type_conversion": true - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - } - ], - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "type": "type(address)", - "value": "address" - }, - "id": 5962, - "name": "ElementaryTypeNameExpression", - "src": "5802:7:26" - }, - { - "attributes": { - "argumentTypes": null, - "hexvalue": "30", - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "subdenomination": null, - "token": "number", - "type": "int_const 0", - "value": "0" - }, - "id": 5963, - "name": "Literal", - "src": "5810:1:26" - } - ], - "id": 5964, - "name": "FunctionCall", - "src": "5802:10:26" - } - ], - "id": 5965, - "name": "Assignment", - "src": "5768:44:26" - } - ], - "id": 5966, - "name": "ExpressionStatement", - "src": "5768:44:26" - }, - { - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [null], - "type": "tuple()", - "type_conversion": false - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "overloadedDeclarations": [null], - "referencedDeclaration": 5730, - "type": "function (address)", - "value": "OperatorContractPanicButtonDisabled" - }, - "id": 5967, - "name": "Identifier", - "src": "5828:35:26" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 5940, - "type": "address", - "value": "_operatorContract" - }, - "id": 5968, - "name": "Identifier", - "src": "5864:17:26" - } - ], - "id": 5969, - "name": "FunctionCall", - "src": "5828:54:26" - } - ], - "id": 5970, - "name": "EmitStatement", - "src": "5823:59:26" - } - ], - "id": 5971, - "name": "Block", - "src": "5626:263:26" - } - ], - "id": 5972, - "name": "FunctionDefinition", - "src": "5462:427:26" - }, - { - "attributes": { - "documentation": null, - "implemented": true, - "isConstructor": false, - "kind": "function", - "name": "setOperatorContractUpgrader", - "scope": 6120, - "stateMutability": "nonpayable", - "superFunction": null, - "visibility": "public" - }, - "children": [ - { - "children": [ - { - "attributes": { - "constant": false, - "name": "_serviceContract", - "scope": 5993, - "stateVariable": false, - "storageLocation": "default", - "type": "address", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "address", - "stateMutability": "nonpayable", - "type": "address" - }, - "id": 5973, - "name": "ElementaryTypeName", - "src": "5941:7:26" - } - ], - "id": 5974, - "name": "VariableDeclaration", - "src": "5941:24:26" - }, - { - "attributes": { - "constant": false, - "name": "_operatorContractUpgrader", - "scope": 5993, - "stateVariable": false, - "storageLocation": "default", - "type": "address", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "address", - "stateMutability": "nonpayable", - "type": "address" - }, - "id": 5975, - "name": "ElementaryTypeName", - "src": "5975:7:26" - } - ], - "id": 5976, - "name": "VariableDeclaration", - "src": "5975:33:26" - } - ], - "id": 5977, - "name": "ParameterList", - "src": "5931:83:26" - }, - { - "attributes": { - "parameters": [null] - }, - "children": [], - "id": 5980, - "name": "ParameterList", - "src": "6037:0:26" - }, - { - "attributes": { - "arguments": null - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 5760, - "type": "modifier ()", - "value": "onlyGovernance" - }, - "id": 5978, - "name": "Identifier", - "src": "6022:14:26" - } - ], - "id": 5979, - "name": "ModifierInvocation", - "src": "6022:14:26" - }, - { - "children": [ - { - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "operator": "=", - "type": "address" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "type": "address" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 5698, - "type": "mapping(address => address)", - "value": "operatorContractUpgraders" - }, - "id": 5981, - "name": "Identifier", - "src": "6047:25:26" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 5974, - "type": "address", - "value": "_serviceContract" - }, - "id": 5982, - "name": "Identifier", - "src": "6073:16:26" - } - ], - "id": 5983, - "name": "IndexAccess", - "src": "6047:43:26" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 5976, - "type": "address", - "value": "_operatorContractUpgrader" - }, - "id": 5984, - "name": "Identifier", - "src": "6093:25:26" - } - ], - "id": 5985, - "name": "Assignment", - "src": "6047:71:26" - } - ], - "id": 5986, - "name": "ExpressionStatement", - "src": "6047:71:26" - }, - { - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [null], - "type": "tuple()", - "type_conversion": false - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "overloadedDeclarations": [null], - "referencedDeclaration": 5742, - "type": "function (address,address)", - "value": "OperatorContractUpgraderUpdated" - }, - "id": 5987, - "name": "Identifier", - "src": "6133:31:26" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 5974, - "type": "address", - "value": "_serviceContract" - }, - "id": 5988, - "name": "Identifier", - "src": "6178:16:26" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 5976, - "type": "address", - "value": "_operatorContractUpgrader" - }, - "id": 5989, - "name": "Identifier", - "src": "6208:25:26" - } - ], - "id": 5990, - "name": "FunctionCall", - "src": "6133:110:26" - } - ], - "id": 5991, - "name": "EmitStatement", - "src": "6128:115:26" - } - ], - "id": 5992, - "name": "Block", - "src": "6037:213:26" - } - ], - "id": 5993, - "name": "FunctionDefinition", - "src": "5895:355:26" - }, - { - "attributes": { - "documentation": null, - "implemented": true, - "isConstructor": false, - "kind": "function", - "name": "setServiceContractUpgrader", - "scope": 6120, - "stateMutability": "nonpayable", - "superFunction": null, - "visibility": "public" - }, - "children": [ - { - "children": [ - { - "attributes": { - "constant": false, - "name": "_operatorContract", - "scope": 6014, - "stateVariable": false, - "storageLocation": "default", - "type": "address", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "address", - "stateMutability": "nonpayable", - "type": "address" - }, - "id": 5994, - "name": "ElementaryTypeName", - "src": "6301:7:26" - } - ], - "id": 5995, - "name": "VariableDeclaration", - "src": "6301:25:26" - }, - { - "attributes": { - "constant": false, - "name": "_serviceContractUpgrader", - "scope": 6014, - "stateVariable": false, - "storageLocation": "default", - "type": "address", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "address", - "stateMutability": "nonpayable", - "type": "address" - }, - "id": 5996, - "name": "ElementaryTypeName", - "src": "6336:7:26" - } - ], - "id": 5997, - "name": "VariableDeclaration", - "src": "6336:32:26" - } - ], - "id": 5998, - "name": "ParameterList", - "src": "6291:83:26" - }, - { - "attributes": { - "parameters": [null] - }, - "children": [], - "id": 6001, - "name": "ParameterList", - "src": "6397:0:26" - }, - { - "attributes": { - "arguments": null - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 5760, - "type": "modifier ()", - "value": "onlyGovernance" - }, - "id": 5999, - "name": "Identifier", - "src": "6382:14:26" - } - ], - "id": 6000, - "name": "ModifierInvocation", - "src": "6382:14:26" - }, - { - "children": [ - { - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "operator": "=", - "type": "address" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "type": "address" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 5702, - "type": "mapping(address => address)", - "value": "serviceContractUpgraders" - }, - "id": 6002, - "name": "Identifier", - "src": "6407:24:26" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 5995, - "type": "address", - "value": "_operatorContract" - }, - "id": 6003, - "name": "Identifier", - "src": "6432:17:26" - } - ], - "id": 6004, - "name": "IndexAccess", - "src": "6407:43:26" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 5997, - "type": "address", - "value": "_serviceContractUpgrader" - }, - "id": 6005, - "name": "Identifier", - "src": "6453:24:26" - } - ], - "id": 6006, - "name": "Assignment", - "src": "6407:70:26" - } - ], - "id": 6007, - "name": "ExpressionStatement", - "src": "6407:70:26" - }, - { - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [null], - "type": "tuple()", - "type_conversion": false - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "overloadedDeclarations": [null], - "referencedDeclaration": 5748, - "type": "function (address,address)", - "value": "ServiceContractUpgraderUpdated" - }, - "id": 6008, - "name": "Identifier", - "src": "6492:30:26" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 5995, - "type": "address", - "value": "_operatorContract" - }, - "id": 6009, - "name": "Identifier", - "src": "6536:17:26" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 5997, - "type": "address", - "value": "_serviceContractUpgrader" - }, - "id": 6010, - "name": "Identifier", - "src": "6567:24:26" - } - ], - "id": 6011, - "name": "FunctionCall", - "src": "6492:109:26" - } - ], - "id": 6012, - "name": "EmitStatement", - "src": "6487:114:26" - } - ], - "id": 6013, - "name": "Block", - "src": "6397:211:26" - } - ], - "id": 6014, - "name": "FunctionDefinition", - "src": "6256:352:26" - }, - { - "attributes": { - "documentation": null, - "implemented": true, - "isConstructor": false, - "kind": "function", - "name": "approveOperatorContract", - "scope": 6120, - "stateMutability": "nonpayable", - "superFunction": null, - "visibility": "public" - }, - "children": [ - { - "children": [ - { - "attributes": { - "constant": false, - "name": "operatorContract", - "scope": 6042, - "stateVariable": false, - "storageLocation": "default", - "type": "address", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "address", - "stateMutability": "nonpayable", - "type": "address" - }, - "id": 6015, - "name": "ElementaryTypeName", - "src": "6647:7:26" - } - ], - "id": 6016, - "name": "VariableDeclaration", - "src": "6647:24:26" - } - ], - "id": 6017, - "name": "ParameterList", - "src": "6646:26:26" - }, - { - "attributes": { - "parameters": [null] - }, - "children": [], - "id": 6023, - "name": "ParameterList", - "src": "6764:0:26" - }, - { - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 5814, - "type": "modifier (address)", - "value": "onlyForNewContract" - }, - "id": 6018, - "name": "Identifier", - "src": "6696:18:26" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 6016, - "type": "address", - "value": "operatorContract" - }, - "id": 6019, - "name": "Identifier", - "src": "6715:16:26" - } - ], - "id": 6020, - "name": "ModifierInvocation", - "src": "6696:36:26" - }, - { - "attributes": { - "arguments": null - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 5772, - "type": "modifier ()", - "value": "onlyRegistryKeeper" - }, - "id": 6021, - "name": "Identifier", - "src": "6741:18:26" - } - ], - "id": 6022, - "name": "ModifierInvocation", - "src": "6741:18:26" - }, - { - "children": [ - { - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "operator": "=", - "type": "enum KeepRegistry.ContractStatus" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "type": "enum KeepRegistry.ContractStatus" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 5706, - "type": "mapping(address => enum KeepRegistry.ContractStatus)", - "value": "operatorContracts" - }, - "id": 6024, - "name": "Identifier", - "src": "6774:17:26" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 6016, - "type": "address", - "value": "operatorContract" - }, - "id": 6025, - "name": "Identifier", - "src": "6792:16:26" - } - ], - "id": 6026, - "name": "IndexAccess", - "src": "6774:35:26" - }, - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "member_name": "Approved", - "referencedDeclaration": null, - "type": "enum KeepRegistry.ContractStatus" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 5684, - "type": "type(enum KeepRegistry.ContractStatus)", - "value": "ContractStatus" - }, - "id": 6027, - "name": "Identifier", - "src": "6812:14:26" - } - ], - "id": 6028, - "name": "MemberAccess", - "src": "6812:23:26" - } - ], - "id": 6029, - "name": "Assignment", - "src": "6774:61:26" - } - ], - "id": 6030, - "name": "ExpressionStatement", - "src": "6774:61:26" - }, - { - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "operator": "=", - "type": "address" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "type": "address" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 5692, - "type": "mapping(address => address)", - "value": "panicButtons" - }, - "id": 6031, - "name": "Identifier", - "src": "6845:12:26" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 6016, - "type": "address", - "value": "operatorContract" - }, - "id": 6032, - "name": "Identifier", - "src": "6858:16:26" - } - ], - "id": 6033, - "name": "IndexAccess", - "src": "6845:30:26" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 5694, - "type": "address", - "value": "defaultPanicButton" - }, - "id": 6034, - "name": "Identifier", - "src": "6878:18:26" - } - ], - "id": 6035, - "name": "Assignment", - "src": "6845:51:26" - } - ], - "id": 6036, - "name": "ExpressionStatement", - "src": "6845:51:26" - }, - { - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [null], - "type": "tuple()", - "type_conversion": false - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "overloadedDeclarations": [null], - "referencedDeclaration": 5710, - "type": "function (address)", - "value": "OperatorContractApproved" - }, - "id": 6037, - "name": "Identifier", - "src": "6911:24:26" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 6016, - "type": "address", - "value": "operatorContract" - }, - "id": 6038, - "name": "Identifier", - "src": "6936:16:26" - } - ], - "id": 6039, - "name": "FunctionCall", - "src": "6911:42:26" - } - ], - "id": 6040, - "name": "EmitStatement", - "src": "6906:47:26" - } - ], - "id": 6041, - "name": "Block", - "src": "6764:196:26" - } - ], - "id": 6042, - "name": "FunctionDefinition", - "src": "6614:346:26" - }, - { - "attributes": { - "documentation": null, - "implemented": true, - "isConstructor": false, - "kind": "function", - "name": "disableOperatorContract", - "scope": 6120, - "stateMutability": "nonpayable", - "superFunction": null, - "visibility": "public" - }, - "children": [ - { - "children": [ - { - "attributes": { - "constant": false, - "name": "operatorContract", - "scope": 6065, - "stateVariable": false, - "storageLocation": "default", - "type": "address", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "address", - "stateMutability": "nonpayable", - "type": "address" - }, - "id": 6043, - "name": "ElementaryTypeName", - "src": "6999:7:26" - } - ], - "id": 6044, - "name": "VariableDeclaration", - "src": "6999:24:26" - } - ], - "id": 6045, - "name": "ParameterList", - "src": "6998:26:26" - }, - { - "attributes": { - "parameters": [null] - }, - "children": [], - "id": 6052, - "name": "ParameterList", - "src": "7136:0:26" - }, - { - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 5827, - "type": "modifier (address)", - "value": "onlyForApprovedContract" - }, - "id": 6046, - "name": "Identifier", - "src": "7048:23:26" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 6044, - "type": "address", - "value": "operatorContract" - }, - "id": 6047, - "name": "Identifier", - "src": "7072:16:26" - } - ], - "id": 6048, - "name": "ModifierInvocation", - "src": "7048:41:26" - }, - { - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 5801, - "type": "modifier (address)", - "value": "onlyPanicButton" - }, - "id": 6049, - "name": "Identifier", - "src": "7098:15:26" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 6044, - "type": "address", - "value": "operatorContract" - }, - "id": 6050, - "name": "Identifier", - "src": "7114:16:26" - } - ], - "id": 6051, - "name": "ModifierInvocation", - "src": "7098:33:26" - }, - { - "children": [ - { - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "operator": "=", - "type": "enum KeepRegistry.ContractStatus" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "type": "enum KeepRegistry.ContractStatus" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 5706, - "type": "mapping(address => enum KeepRegistry.ContractStatus)", - "value": "operatorContracts" - }, - "id": 6053, - "name": "Identifier", - "src": "7146:17:26" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 6044, - "type": "address", - "value": "operatorContract" - }, - "id": 6054, - "name": "Identifier", - "src": "7164:16:26" - } - ], - "id": 6055, - "name": "IndexAccess", - "src": "7146:35:26" - }, - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "member_name": "Disabled", - "referencedDeclaration": null, - "type": "enum KeepRegistry.ContractStatus" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 5684, - "type": "type(enum KeepRegistry.ContractStatus)", - "value": "ContractStatus" - }, - "id": 6056, - "name": "Identifier", - "src": "7184:14:26" - } - ], - "id": 6057, - "name": "MemberAccess", - "src": "7184:23:26" - } - ], - "id": 6058, - "name": "Assignment", - "src": "7146:61:26" - } - ], - "id": 6059, - "name": "ExpressionStatement", - "src": "7146:61:26" - }, - { - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [null], - "type": "tuple()", - "type_conversion": false - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "overloadedDeclarations": [null], - "referencedDeclaration": 5714, - "type": "function (address)", - "value": "OperatorContractDisabled" - }, - "id": 6060, - "name": "Identifier", - "src": "7222:24:26" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 6044, - "type": "address", - "value": "operatorContract" - }, - "id": 6061, - "name": "Identifier", - "src": "7247:16:26" - } - ], - "id": 6062, - "name": "FunctionCall", - "src": "7222:42:26" - } - ], - "id": 6063, - "name": "EmitStatement", - "src": "7217:47:26" - } - ], - "id": 6064, - "name": "Block", - "src": "7136:135:26" - } - ], - "id": 6065, - "name": "FunctionDefinition", - "src": "6966:305:26" - }, - { - "attributes": { - "documentation": null, - "implemented": true, - "isConstructor": false, - "kind": "function", - "modifiers": [null], - "name": "isNewOperatorContract", - "scope": 6120, - "stateMutability": "view", - "superFunction": null, - "visibility": "public" - }, - "children": [ - { - "children": [ - { - "attributes": { - "constant": false, - "name": "operatorContract", - "scope": 6080, - "stateVariable": false, - "storageLocation": "default", - "type": "address", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "address", - "stateMutability": "nonpayable", - "type": "address" - }, - "id": 6066, - "name": "ElementaryTypeName", - "src": "7308:7:26" - } - ], - "id": 6067, - "name": "VariableDeclaration", - "src": "7308:24:26" - } - ], - "id": 6068, - "name": "ParameterList", - "src": "7307:26:26" - }, - { - "children": [ - { - "attributes": { - "constant": false, - "name": "", - "scope": 6080, - "stateVariable": false, - "storageLocation": "default", - "type": "bool", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "bool", - "type": "bool" - }, - "id": 6069, - "name": "ElementaryTypeName", - "src": "7379:4:26" - } - ], - "id": 6070, - "name": "VariableDeclaration", - "src": "7379:4:26" - } - ], - "id": 6071, - "name": "ParameterList", - "src": "7378:6:26" - }, - { - "children": [ - { - "attributes": { - "functionReturnParameters": 6071 - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_enum$_ContractStatus_$5684", - "typeString": "enum KeepRegistry.ContractStatus" - }, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "operator": "==", - "type": "bool" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "type": "enum KeepRegistry.ContractStatus" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 5706, - "type": "mapping(address => enum KeepRegistry.ContractStatus)", - "value": "operatorContracts" - }, - "id": 6072, - "name": "Identifier", - "src": "7406:17:26" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 6067, - "type": "address", - "value": "operatorContract" - }, - "id": 6073, - "name": "Identifier", - "src": "7424:16:26" - } - ], - "id": 6074, - "name": "IndexAccess", - "src": "7406:35:26" - }, - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "member_name": "New", - "referencedDeclaration": null, - "type": "enum KeepRegistry.ContractStatus" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 5684, - "type": "type(enum KeepRegistry.ContractStatus)", - "value": "ContractStatus" - }, - "id": 6075, - "name": "Identifier", - "src": "7445:14:26" - } - ], - "id": 6076, - "name": "MemberAccess", - "src": "7445:18:26" - } - ], - "id": 6077, - "name": "BinaryOperation", - "src": "7406:57:26" - } - ], - "id": 6078, - "name": "Return", - "src": "7399:64:26" - } - ], - "id": 6079, - "name": "Block", - "src": "7389:81:26" - } - ], - "id": 6080, - "name": "FunctionDefinition", - "src": "7277:193:26" - }, - { - "attributes": { - "documentation": null, - "implemented": true, - "isConstructor": false, - "kind": "function", - "modifiers": [null], - "name": "isApprovedOperatorContract", - "scope": 6120, - "stateMutability": "view", - "superFunction": null, - "visibility": "public" - }, - "children": [ - { - "children": [ - { - "attributes": { - "constant": false, - "name": "operatorContract", - "scope": 6095, - "stateVariable": false, - "storageLocation": "default", - "type": "address", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "address", - "stateMutability": "nonpayable", - "type": "address" - }, - "id": 6081, - "name": "ElementaryTypeName", - "src": "7512:7:26" - } - ], - "id": 6082, - "name": "VariableDeclaration", - "src": "7512:24:26" - } - ], - "id": 6083, - "name": "ParameterList", - "src": "7511:26:26" - }, - { - "children": [ - { - "attributes": { - "constant": false, - "name": "", - "scope": 6095, - "stateVariable": false, - "storageLocation": "default", - "type": "bool", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "bool", - "type": "bool" - }, - "id": 6084, - "name": "ElementaryTypeName", - "src": "7583:4:26" - } - ], - "id": 6085, - "name": "VariableDeclaration", - "src": "7583:4:26" - } - ], - "id": 6086, - "name": "ParameterList", - "src": "7582:6:26" - }, - { - "children": [ - { - "attributes": { - "functionReturnParameters": 6086 - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_enum$_ContractStatus_$5684", - "typeString": "enum KeepRegistry.ContractStatus" - }, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "operator": "==", - "type": "bool" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "type": "enum KeepRegistry.ContractStatus" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 5706, - "type": "mapping(address => enum KeepRegistry.ContractStatus)", - "value": "operatorContracts" - }, - "id": 6087, - "name": "Identifier", - "src": "7610:17:26" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 6082, - "type": "address", - "value": "operatorContract" - }, - "id": 6088, - "name": "Identifier", - "src": "7628:16:26" - } - ], - "id": 6089, - "name": "IndexAccess", - "src": "7610:35:26" - }, - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "member_name": "Approved", - "referencedDeclaration": null, - "type": "enum KeepRegistry.ContractStatus" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 5684, - "type": "type(enum KeepRegistry.ContractStatus)", - "value": "ContractStatus" - }, - "id": 6090, - "name": "Identifier", - "src": "7649:14:26" - } - ], - "id": 6091, - "name": "MemberAccess", - "src": "7649:23:26" - } - ], - "id": 6092, - "name": "BinaryOperation", - "src": "7610:62:26" - } - ], - "id": 6093, - "name": "Return", - "src": "7603:69:26" - } - ], - "id": 6094, - "name": "Block", - "src": "7593:86:26" - } - ], - "id": 6095, - "name": "FunctionDefinition", - "src": "7476:203:26" - }, - { - "attributes": { - "documentation": null, - "implemented": true, - "isConstructor": false, - "kind": "function", - "modifiers": [null], - "name": "operatorContractUpgraderFor", - "scope": 6120, - "stateMutability": "view", - "superFunction": null, - "visibility": "public" - }, - "children": [ - { - "children": [ - { - "attributes": { - "constant": false, - "name": "_serviceContract", - "scope": 6107, - "stateVariable": false, - "storageLocation": "default", - "type": "address", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "address", - "stateMutability": "nonpayable", - "type": "address" - }, - "id": 6096, - "name": "ElementaryTypeName", - "src": "7722:7:26" - } - ], - "id": 6097, - "name": "VariableDeclaration", - "src": "7722:24:26" - } - ], - "id": 6098, - "name": "ParameterList", - "src": "7721:26:26" - }, - { - "children": [ - { - "attributes": { - "constant": false, - "name": "", - "scope": 6107, - "stateVariable": false, - "storageLocation": "default", - "type": "address", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "address", - "stateMutability": "nonpayable", - "type": "address" - }, - "id": 6099, - "name": "ElementaryTypeName", - "src": "7793:7:26" - } - ], - "id": 6100, - "name": "VariableDeclaration", - "src": "7793:7:26" - } - ], - "id": 6101, - "name": "ParameterList", - "src": "7792:9:26" - }, - { - "children": [ - { - "attributes": { - "functionReturnParameters": 6101 - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "type": "address" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 5698, - "type": "mapping(address => address)", - "value": "operatorContractUpgraders" - }, - "id": 6102, - "name": "Identifier", - "src": "7823:25:26" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 6097, - "type": "address", - "value": "_serviceContract" - }, - "id": 6103, - "name": "Identifier", - "src": "7849:16:26" - } - ], - "id": 6104, - "name": "IndexAccess", - "src": "7823:43:26" - } - ], - "id": 6105, - "name": "Return", - "src": "7816:50:26" - } - ], - "id": 6106, - "name": "Block", - "src": "7806:67:26" - } - ], - "id": 6107, - "name": "FunctionDefinition", - "src": "7685:188:26" - }, - { - "attributes": { - "documentation": null, - "implemented": true, - "isConstructor": false, - "kind": "function", - "modifiers": [null], - "name": "serviceContractUpgraderFor", - "scope": 6120, - "stateMutability": "view", - "superFunction": null, - "visibility": "public" - }, - "children": [ - { - "children": [ - { - "attributes": { - "constant": false, - "name": "_operatorContract", - "scope": 6119, - "stateVariable": false, - "storageLocation": "default", - "type": "address", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "address", - "stateMutability": "nonpayable", - "type": "address" - }, - "id": 6108, - "name": "ElementaryTypeName", - "src": "7915:7:26" - } - ], - "id": 6109, - "name": "VariableDeclaration", - "src": "7915:25:26" - } - ], - "id": 6110, - "name": "ParameterList", - "src": "7914:27:26" - }, - { - "children": [ - { - "attributes": { - "constant": false, - "name": "", - "scope": 6119, - "stateVariable": false, - "storageLocation": "default", - "type": "address", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "address", - "stateMutability": "nonpayable", - "type": "address" - }, - "id": 6111, - "name": "ElementaryTypeName", - "src": "7987:7:26" - } - ], - "id": 6112, - "name": "VariableDeclaration", - "src": "7987:7:26" - } - ], - "id": 6113, - "name": "ParameterList", - "src": "7986:9:26" - }, - { - "children": [ - { - "attributes": { - "functionReturnParameters": 6113 - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "type": "address" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 5702, - "type": "mapping(address => address)", - "value": "serviceContractUpgraders" - }, - "id": 6114, - "name": "Identifier", - "src": "8017:24:26" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 6109, - "type": "address", - "value": "_operatorContract" - }, - "id": 6115, - "name": "Identifier", - "src": "8042:17:26" - } - ], - "id": 6116, - "name": "IndexAccess", - "src": "8017:43:26" - } - ], - "id": 6117, - "name": "Return", - "src": "8010:50:26" - } - ], - "id": 6118, - "name": "Block", - "src": "8000:67:26" - } - ], - "id": 6119, - "name": "FunctionDefinition", - "src": "7879:188:26" - } - ], - "id": 6120, - "name": "ContractDefinition", - "src": "120:7949:26" - } - ], - "id": 6121, - "name": "SourceUnit", - "src": "0:8070:26" - }, - "compiler": { - "name": "solc", - "version": "0.5.17+commit.d19bba13.Emscripten.clang" - }, - "networks": { - "11155111": { - "events": { - "0x06f6f3a56d213caa17abfd21597ab6f8660771e05f9d430505ce755a2fdbb551": { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "address", - "name": "defaultPanicButton", - "type": "address" - } - ], - "name": "DefaultPanicButtonUpdated", - "type": "event" - }, - "0x9d3e522e1e47a2f6009739342b9cc7b252a1888154e843ab55ee1c81745795ab": { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "address", - "name": "governance", - "type": "address" - } - ], - "name": "GovernanceUpdated", - "type": "event" - }, - "0xb5d7fbd1d67a09be2dd3ba169be0ebfb43f1d3fd31b12e9dc9e5bd98517bfafb": { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "address", - "name": "operatorContract", - "type": "address" - } - ], - "name": "OperatorContractApproved", - "type": "event" - }, - "0x61e8cab67fc6f073d7e3bbd8d936b519daf95f5655e8b22563c63eaba75f8fa3": { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "address", - "name": "operatorContract", - "type": "address" - } - ], - "name": "OperatorContractDisabled", - "type": "event" - }, - "0x825c13d61db27b3c0dae8523f70310e87c2dfd99ea7023664547208322ff679c": { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "address", - "name": "operatorContract", - "type": "address" - } - ], - "name": "OperatorContractPanicButtonDisabled", - "type": "event" - }, - "0x5f94d794a8a48b75e2ca89133a5b8748d14217648260c5247e57e3d314fd52a7": { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "address", - "name": "operatorContract", - "type": "address" - }, - { - "indexed": false, - "internalType": "address", - "name": "panicButton", - "type": "address" - } - ], - "name": "OperatorContractPanicButtonUpdated", - "type": "event" - }, - "0x6f5a686a46a4dd38461a6a5ce54c3b8dd7b989914b5a0748c8d6669c79477852": { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "address", - "name": "serviceContract", - "type": "address" - }, - { - "indexed": false, - "internalType": "address", - "name": "upgrader", - "type": "address" - } - ], - "name": "OperatorContractUpgraderUpdated", - "type": "event" - }, - "0xe5ecd8c922f03a416959a48c633d1bfdd1615ea46923a0a3e5d65ec90a38e038": { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "address", - "name": "registryKeeper", - "type": "address" - } - ], - "name": "RegistryKeeperUpdated", - "type": "event" - }, - "0x067d7db72df8e5428d719a48ef14b072cdb3942706bfc6becc7198a316d73b78": { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "address", - "name": "operatorContract", - "type": "address" - }, - { - "indexed": false, - "internalType": "address", - "name": "keeper", - "type": "address" - } - ], - "name": "ServiceContractUpgraderUpdated", - "type": "event" - } - }, - "links": {}, - "address": "0x22647FfAe391540d584599818CA22fdF18890753", - "transactionHash": "0xd2331365137c15daabaaf9e62f5345ed9088410462cec1f28f9c45050ab53467" - } - }, - "schemaVersion": "3.4.8", - "updatedAt": "2023-09-12T08:42:13.375Z", - "networkType": "ethereum", - "devdoc": { - "methods": {}, - "title": "KeepRegistry" - }, - "userdoc": { - "methods": {}, - "notice": "Governance owned registry of approved contracts and roles." - } -} diff --git a/external/sepolia/KeepToken.json b/external/sepolia/KeepToken.json deleted file mode 100644 index f8cfdf06..00000000 --- a/external/sepolia/KeepToken.json +++ /dev/null @@ -1,2811 +0,0 @@ -{ - "contractName": "KeepToken", - "abi": [ - { - "inputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "constructor" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "owner", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "spender", - "type": "address" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "value", - "type": "uint256" - } - ], - "name": "Approval", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "from", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "to", - "type": "address" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "value", - "type": "uint256" - } - ], - "name": "Transfer", - "type": "event" - }, - { - "constant": true, - "inputs": [], - "name": "DECIMALS", - "outputs": [ - { - "internalType": "uint8", - "name": "", - "type": "uint8" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "INITIAL_SUPPLY", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "NAME", - "outputs": [ - { - "internalType": "string", - "name": "", - "type": "string" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "SYMBOL", - "outputs": [ - { - "internalType": "string", - "name": "", - "type": "string" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "internalType": "address", - "name": "owner", - "type": "address" - }, - { - "internalType": "address", - "name": "spender", - "type": "address" - } - ], - "name": "allowance", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "spender", - "type": "address" - }, - { - "internalType": "uint256", - "name": "amount", - "type": "uint256" - } - ], - "name": "approve", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "internalType": "address", - "name": "account", - "type": "address" - } - ], - "name": "balanceOf", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "uint256", - "name": "amount", - "type": "uint256" - } - ], - "name": "burn", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "account", - "type": "address" - }, - { - "internalType": "uint256", - "name": "amount", - "type": "uint256" - } - ], - "name": "burnFrom", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "decimals", - "outputs": [ - { - "internalType": "uint8", - "name": "", - "type": "uint8" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "spender", - "type": "address" - }, - { - "internalType": "uint256", - "name": "subtractedValue", - "type": "uint256" - } - ], - "name": "decreaseAllowance", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "spender", - "type": "address" - }, - { - "internalType": "uint256", - "name": "addedValue", - "type": "uint256" - } - ], - "name": "increaseAllowance", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "name", - "outputs": [ - { - "internalType": "string", - "name": "", - "type": "string" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "symbol", - "outputs": [ - { - "internalType": "string", - "name": "", - "type": "string" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "totalSupply", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "recipient", - "type": "address" - }, - { - "internalType": "uint256", - "name": "amount", - "type": "uint256" - } - ], - "name": "transfer", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "sender", - "type": "address" - }, - { - "internalType": "address", - "name": "recipient", - "type": "address" - }, - { - "internalType": "uint256", - "name": "amount", - "type": "uint256" - } - ], - "name": "transferFrom", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "_spender", - "type": "address" - }, - { - "internalType": "uint256", - "name": "_value", - "type": "uint256" - }, - { - "internalType": "bytes", - "name": "_extraData", - "type": "bytes" - } - ], - "name": "approveAndCall", - "outputs": [ - { - "internalType": "bool", - "name": "success", - "type": "bool" - } - ], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - } - ], - "metadata": "{\"compiler\":{\"version\":\"0.5.17+commit.d19bba13\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"constant\":true,\"inputs\":[],\"name\":\"DECIMALS\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"INITIAL_SUPPLY\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"NAME\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"SYMBOL\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"_spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_value\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"_extraData\",\"type\":\"bytes\"}],\"name\":\"approveAndCall\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"success\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"burn\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"burnFrom\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"subtractedValue\",\"type\":\"uint256\"}],\"name\":\"decreaseAllowance\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"addedValue\",\"type\":\"uint256\"}],\"name\":\"increaseAllowance\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Standard ERC20Burnable token\",\"methods\":{\"allowance(address,address)\":{\"details\":\"See {IERC20-allowance}.\"},\"approve(address,uint256)\":{\"details\":\"See {IERC20-approve}. * Requirements: * - `spender` cannot be the zero address.\"},\"approveAndCall(address,uint256,bytes)\":{\"params\":{\"_extraData\":\"Extra information to send to the approved contract.\",\"_spender\":\"The address authorized to spend.\",\"_value\":\"The max amount they can spend.\"}},\"balanceOf(address)\":{\"details\":\"See {IERC20-balanceOf}.\"},\"burn(uint256)\":{\"details\":\"Destroys `amount` tokens from the caller. * See {ERC20-_burn}.\"},\"burnFrom(address,uint256)\":{\"details\":\"See {ERC20-_burnFrom}.\"},\"constructor\":{\"details\":\"Gives msg.sender all of existing tokens.\"},\"decimals()\":{\"details\":\"Returns the number of decimals used to get its user representation. For example, if `decimals` equals `2`, a balance of `505` tokens should be displayed to a user as `5,05` (`505 / 10 ** 2`). * Tokens usually opt for a value of 18, imitating the relationship between Ether and Wei. * NOTE: This information is only used for _display_ purposes: it in no way affects any of the arithmetic of the contract, including {IERC20-balanceOf} and {IERC20-transfer}.\"},\"decreaseAllowance(address,uint256)\":{\"details\":\"Atomically decreases the allowance granted to `spender` by the caller. * This is an alternative to {approve} that can be used as a mitigation for problems described in {IERC20-approve}. * Emits an {Approval} event indicating the updated allowance. * Requirements: * - `spender` cannot be the zero address. - `spender` must have allowance for the caller of at least `subtractedValue`.\"},\"increaseAllowance(address,uint256)\":{\"details\":\"Atomically increases the allowance granted to `spender` by the caller. * This is an alternative to {approve} that can be used as a mitigation for problems described in {IERC20-approve}. * Emits an {Approval} event indicating the updated allowance. * Requirements: * - `spender` cannot be the zero address.\"},\"name()\":{\"details\":\"Returns the name of the token.\"},\"symbol()\":{\"details\":\"Returns the symbol of the token, usually a shorter version of the name.\"},\"totalSupply()\":{\"details\":\"See {IERC20-totalSupply}.\"},\"transfer(address,uint256)\":{\"details\":\"See {IERC20-transfer}. * Requirements: * - `recipient` cannot be the zero address. - the caller must have a balance of at least `amount`.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"See {IERC20-transferFrom}. * Emits an {Approval} event indicating the updated allowance. This is not required by the EIP. See the note at the beginning of {ERC20}; * Requirements: - `sender` and `recipient` cannot be the zero address. - `sender` must have a balance of at least `amount`. - the caller must have allowance for `sender`'s tokens of at least `amount`.\"}},\"title\":\"KEEP Token\"},\"userdoc\":{\"methods\":{\"approveAndCall(address,uint256,bytes)\":{\"notice\":\"Set allowance for other address and notify. Allows `_spender` to spend no more than `_value` tokens on your behalf and then ping the contract about it.\"}}}},\"settings\":{\"compilationTarget\":{\"project:/contracts/KeepToken.sol\":\"KeepToken\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"openzeppelin-solidity/contracts/GSN/Context.sol\":{\"keccak256\":\"0x90a3995645af7562d84b9d69363ffa5ae7217714ab61e951bf7bc450f40e4061\",\"urls\":[\"bzz-raw://216ef9d6b614db4eb46970b4e84903f2534a45572dd30a79f0041f1a5830f436\",\"dweb:/ipfs/QmNPrJ4MWKUAWzKXpUqeyKRUfosaoANZAqXgvepdrCwZAG\"]},\"openzeppelin-solidity/contracts/math/SafeMath.sol\":{\"keccak256\":\"0x640b6dee7a4b830bdfd52b5031a07fc2b12209f5b2e29e5d364a7d37f69d8076\",\"urls\":[\"bzz-raw://31113152e1ddb78fe7a4197f247591ca894e93f916867beb708d8e747b6cc74f\",\"dweb:/ipfs/QmbZaJyXdpsYGykVhHH9qpVGQg9DGCxE2QufbCUy3daTgq\"]},\"openzeppelin-solidity/contracts/token/ERC20/ERC20.sol\":{\"keccak256\":\"0x65a4078c03875c25413a068ce9cfdd7e68a90f8786612d1189c89341e6e3b802\",\"urls\":[\"bzz-raw://45c0d95495b944fbb1aa09d900b0ab530903a432125ab8fddfa05064a7988991\",\"dweb:/ipfs/Qma2VeknkKA1THeubGzshWFk44BktXkXP1UKp9Un2uDSsu\"]},\"openzeppelin-solidity/contracts/token/ERC20/ERC20Burnable.sol\":{\"keccak256\":\"0x9b94356691f3cbf90a5d83ae3fdf6a5a662bb004d2bd8b034160d60221807e64\",\"urls\":[\"bzz-raw://14a9d33db455302b8bb9fdb28998efefbe5a1cb41b29e31391609f646b2ab351\",\"dweb:/ipfs/Qmd4wFr6GEMZnnxgXeq3gmp7cs8tqDuHp3TVNhCbjnux2V\"]},\"openzeppelin-solidity/contracts/token/ERC20/ERC20Detailed.sol\":{\"keccak256\":\"0x4a3a810b7ebe742e897e1fd428b3eeed2196d3acea58eaf9c566ed10d545d2ed\",\"urls\":[\"bzz-raw://28d03f328e19e4099d5013de0649afaeaabac1a614e130767ab1cb4aca9775b6\",\"dweb:/ipfs/Qmb9iW7yNuYehB2NfhRMs9TakqbLVQhBhmGMkaDZ5g1Eb4\"]},\"openzeppelin-solidity/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xe5bb0f57cff3e299f360052ba50f1ea0fff046df2be070b6943e0e3c3fdad8a9\",\"urls\":[\"bzz-raw://59fd025151435da35faa8093a5c7a17de02de9d08ad27275c5cdf05050820d91\",\"dweb:/ipfs/QmQMvwEcPhoRXzbXyrdoeRtvLoifUW9Qh7Luho7bmUPRkc\"]},\"project:/contracts/KeepToken.sol\":{\"keccak256\":\"0x42abcd9c9c67d8d83b91a01e42abde3355b3a67fb7c510d7d8b63b5e23d3defe\",\"urls\":[\"bzz-raw://ef26e4ad4042c74e230a343f9e69c2d142b581e4a2c7ee27ec51a1f7e9f91a68\",\"dweb:/ipfs/QmfJ9cEpzj2WQ5upvizC16pthvC2vQP8geFeUATFb4ov2G\"]}},\"version\":1}", - "bytecode": "0x60806040523480156200001157600080fd5b506040518060400160405280600a81526020017f4b45455020546f6b656e000000000000000000000000000000000000000000008152506040518060400160405280600481526020017f4b45455000000000000000000000000000000000000000000000000000000000815250601282600390805190602001906200009892919062000347565b508160049080519060200190620000b192919062000347565b5080600560006101000a81548160ff021916908360ff160217905550505050620000ee336b033b2e3c9fd0803ce8000000620000f460201b60201c565b620003f6565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141562000198576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f45524332303a206d696e7420746f20746865207a65726f20616464726573730081525060200191505060405180910390fd5b620001b481600254620002be60201b620014611790919060201c565b60028190555062000212816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054620002be60201b620014611790919060201c565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35050565b6000808284019050838110156200033d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200038a57805160ff1916838001178555620003bb565b82800160010185558215620003bb579182015b82811115620003ba5782518255916020019190600101906200039d565b5b509050620003ca9190620003ce565b5090565b620003f391905b80821115620003ef576000816000905550600101620003d5565b5090565b90565b61195780620004066000396000f3fe608060405234801561001057600080fd5b50600436106101165760003560e01c806370a08231116100a2578063a457c2d711610071578063a457c2d71461054e578063a9059cbb146105b4578063cae9ca511461061a578063dd62ed3e14610717578063f76f8d781461078f57610116565b806370a08231146103a257806379cc6790146103fa57806395d89b4114610448578063a3f4df7e146104cb57610116565b80632e0f2625116100e95780632e0f2625146102a85780632ff2e9dc146102cc578063313ce567146102ea578063395093511461030e57806342966c681461037457610116565b806306fdde031461011b578063095ea7b31461019e57806318160ddd1461020457806323b872dd14610222575b600080fd5b610123610812565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610163578082015181840152602081019050610148565b50505050905090810190601f1680156101905780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6101ea600480360360408110156101b457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506108b4565b604051808215151515815260200191505060405180910390f35b61020c6108d2565b6040518082815260200191505060405180910390f35b61028e6004803603606081101561023857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506108dc565b604051808215151515815260200191505060405180910390f35b6102b06109b5565b604051808260ff1660ff16815260200191505060405180910390f35b6102d46109ba565b6040518082815260200191505060405180910390f35b6102f26109ca565b604051808260ff1660ff16815260200191505060405180910390f35b61035a6004803603604081101561032457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506109e1565b604051808215151515815260200191505060405180910390f35b6103a06004803603602081101561038a57600080fd5b8101908080359060200190929190505050610a94565b005b6103e4600480360360208110156103b857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610aa8565b6040518082815260200191505060405180910390f35b6104466004803603604081101561041057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610af0565b005b610450610afe565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610490578082015181840152602081019050610475565b50505050905090810190601f1680156104bd5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6104d3610ba0565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156105135780820151818401526020810190506104f8565b50505050905090810190601f1680156105405780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b61059a6004803603604081101561056457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610bd9565b604051808215151515815260200191505060405180910390f35b610600600480360360408110156105ca57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610ca6565b604051808215151515815260200191505060405180910390f35b6106fd6004803603606081101561063057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291908035906020019064010000000081111561067757600080fd5b82018360208201111561068957600080fd5b803590602001918460018302840111640100000000831117156106ab57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290505050610cc4565b604051808215151515815260200191505060405180910390f35b6107796004803603604081101561072d57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610e2c565b6040518082815260200191505060405180910390f35b610797610eb3565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156107d75780820151818401526020810190506107bc565b50505050905090810190601f1680156108045780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b606060038054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156108aa5780601f1061087f576101008083540402835291602001916108aa565b820191906000526020600020905b81548152906001019060200180831161088d57829003601f168201915b5050505050905090565b60006108c86108c1610eec565b8484610ef4565b6001905092915050565b6000600254905090565b60006108e98484846110eb565b6109aa846108f5610eec565b6109a58560405180606001604052806028815260200161184860289139600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600061095b610eec565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546113a19092919063ffffffff16565b610ef4565b600190509392505050565b601281565b6b033b2e3c9fd0803ce800000081565b6000600560009054906101000a900460ff16905090565b6000610a8a6109ee610eec565b84610a8585600160006109ff610eec565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461146190919063ffffffff16565b610ef4565b6001905092915050565b610aa5610a9f610eec565b826114e9565b50565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610afa82826116a1565b5050565b606060048054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610b965780601f10610b6b57610100808354040283529160200191610b96565b820191906000526020600020905b815481529060010190602001808311610b7957829003601f168201915b5050505050905090565b6040518060400160405280600a81526020017f4b45455020546f6b656e0000000000000000000000000000000000000000000081525081565b6000610c9c610be6610eec565b84610c97856040518060600160405280602581526020016118fe6025913960016000610c10610eec565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546113a19092919063ffffffff16565b610ef4565b6001905092915050565b6000610cba610cb3610eec565b84846110eb565b6001905092915050565b600080849050610cd485856108b4565b15610e23578073ffffffffffffffffffffffffffffffffffffffff16638f4ffcb1338630876040518563ffffffff1660e01b8152600401808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018481526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200180602001828103825283818151815260200191508051906020019080838360005b83811015610db2578082015181840152602081019050610d97565b50505050905090810190601f168015610ddf5780820380516001836020036101000a031916815260200191505b5095505050505050600060405180830381600087803b158015610e0157600080fd5b505af1158015610e15573d6000803e3d6000fd5b505050506001915050610e25565b505b9392505050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6040518060400160405280600481526020017f4b4545500000000000000000000000000000000000000000000000000000000081525081565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610f7a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001806118da6024913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611000576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001806118006022913960400191505060405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040518082815260200191505060405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611171576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260258152602001806118b56025913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156111f7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260238152602001806117bb6023913960400191505060405180910390fd5b61126281604051806060016040528060268152602001611822602691396000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546113a19092919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506112f5816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461146190919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a3505050565b600083831115829061144e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b838110156114135780820151818401526020810190506113f8565b50505050905090810190601f1680156114405780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385039050809150509392505050565b6000808284019050838110156114df576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561156f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806118946021913960400191505060405180910390fd5b6115da816040518060600160405280602281526020016117de602291396000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546113a19092919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506116318160025461177090919063ffffffff16565b600281905550600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35050565b6116ab82826114e9565b61176c826116b7610eec565b6117678460405180606001604052806024815260200161187060249139600160008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600061171d610eec565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546113a19092919063ffffffff16565b610ef4565b5050565b60006117b283836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506113a1565b90509291505056fe45524332303a207472616e7366657220746f20746865207a65726f206164647265737345524332303a206275726e20616d6f756e7420657863656564732062616c616e636545524332303a20617070726f766520746f20746865207a65726f206164647265737345524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a206275726e20616d6f756e74206578636565647320616c6c6f77616e636545524332303a206275726e2066726f6d20746865207a65726f206164647265737345524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f206164647265737345524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa265627a7a7231582062a8022795cdd33f6a780bff96fff436a005b6449d7676f71c97c01cb511a6b864736f6c63430005110032", - "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106101165760003560e01c806370a08231116100a2578063a457c2d711610071578063a457c2d71461054e578063a9059cbb146105b4578063cae9ca511461061a578063dd62ed3e14610717578063f76f8d781461078f57610116565b806370a08231146103a257806379cc6790146103fa57806395d89b4114610448578063a3f4df7e146104cb57610116565b80632e0f2625116100e95780632e0f2625146102a85780632ff2e9dc146102cc578063313ce567146102ea578063395093511461030e57806342966c681461037457610116565b806306fdde031461011b578063095ea7b31461019e57806318160ddd1461020457806323b872dd14610222575b600080fd5b610123610812565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610163578082015181840152602081019050610148565b50505050905090810190601f1680156101905780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6101ea600480360360408110156101b457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506108b4565b604051808215151515815260200191505060405180910390f35b61020c6108d2565b6040518082815260200191505060405180910390f35b61028e6004803603606081101561023857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506108dc565b604051808215151515815260200191505060405180910390f35b6102b06109b5565b604051808260ff1660ff16815260200191505060405180910390f35b6102d46109ba565b6040518082815260200191505060405180910390f35b6102f26109ca565b604051808260ff1660ff16815260200191505060405180910390f35b61035a6004803603604081101561032457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506109e1565b604051808215151515815260200191505060405180910390f35b6103a06004803603602081101561038a57600080fd5b8101908080359060200190929190505050610a94565b005b6103e4600480360360208110156103b857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610aa8565b6040518082815260200191505060405180910390f35b6104466004803603604081101561041057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610af0565b005b610450610afe565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610490578082015181840152602081019050610475565b50505050905090810190601f1680156104bd5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6104d3610ba0565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156105135780820151818401526020810190506104f8565b50505050905090810190601f1680156105405780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b61059a6004803603604081101561056457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610bd9565b604051808215151515815260200191505060405180910390f35b610600600480360360408110156105ca57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610ca6565b604051808215151515815260200191505060405180910390f35b6106fd6004803603606081101561063057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291908035906020019064010000000081111561067757600080fd5b82018360208201111561068957600080fd5b803590602001918460018302840111640100000000831117156106ab57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290505050610cc4565b604051808215151515815260200191505060405180910390f35b6107796004803603604081101561072d57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610e2c565b6040518082815260200191505060405180910390f35b610797610eb3565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156107d75780820151818401526020810190506107bc565b50505050905090810190601f1680156108045780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b606060038054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156108aa5780601f1061087f576101008083540402835291602001916108aa565b820191906000526020600020905b81548152906001019060200180831161088d57829003601f168201915b5050505050905090565b60006108c86108c1610eec565b8484610ef4565b6001905092915050565b6000600254905090565b60006108e98484846110eb565b6109aa846108f5610eec565b6109a58560405180606001604052806028815260200161184860289139600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600061095b610eec565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546113a19092919063ffffffff16565b610ef4565b600190509392505050565b601281565b6b033b2e3c9fd0803ce800000081565b6000600560009054906101000a900460ff16905090565b6000610a8a6109ee610eec565b84610a8585600160006109ff610eec565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461146190919063ffffffff16565b610ef4565b6001905092915050565b610aa5610a9f610eec565b826114e9565b50565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610afa82826116a1565b5050565b606060048054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610b965780601f10610b6b57610100808354040283529160200191610b96565b820191906000526020600020905b815481529060010190602001808311610b7957829003601f168201915b5050505050905090565b6040518060400160405280600a81526020017f4b45455020546f6b656e0000000000000000000000000000000000000000000081525081565b6000610c9c610be6610eec565b84610c97856040518060600160405280602581526020016118fe6025913960016000610c10610eec565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546113a19092919063ffffffff16565b610ef4565b6001905092915050565b6000610cba610cb3610eec565b84846110eb565b6001905092915050565b600080849050610cd485856108b4565b15610e23578073ffffffffffffffffffffffffffffffffffffffff16638f4ffcb1338630876040518563ffffffff1660e01b8152600401808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018481526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200180602001828103825283818151815260200191508051906020019080838360005b83811015610db2578082015181840152602081019050610d97565b50505050905090810190601f168015610ddf5780820380516001836020036101000a031916815260200191505b5095505050505050600060405180830381600087803b158015610e0157600080fd5b505af1158015610e15573d6000803e3d6000fd5b505050506001915050610e25565b505b9392505050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6040518060400160405280600481526020017f4b4545500000000000000000000000000000000000000000000000000000000081525081565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610f7a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001806118da6024913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611000576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001806118006022913960400191505060405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040518082815260200191505060405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611171576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260258152602001806118b56025913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156111f7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260238152602001806117bb6023913960400191505060405180910390fd5b61126281604051806060016040528060268152602001611822602691396000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546113a19092919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506112f5816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461146190919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a3505050565b600083831115829061144e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b838110156114135780820151818401526020810190506113f8565b50505050905090810190601f1680156114405780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385039050809150509392505050565b6000808284019050838110156114df576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561156f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806118946021913960400191505060405180910390fd5b6115da816040518060600160405280602281526020016117de602291396000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546113a19092919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506116318160025461177090919063ffffffff16565b600281905550600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35050565b6116ab82826114e9565b61176c826116b7610eec565b6117678460405180606001604052806024815260200161187060249139600160008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600061171d610eec565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546113a19092919063ffffffff16565b610ef4565b5050565b60006117b283836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506113a1565b90509291505056fe45524332303a207472616e7366657220746f20746865207a65726f206164647265737345524332303a206275726e20616d6f756e7420657863656564732062616c616e636545524332303a20617070726f766520746f20746865207a65726f206164647265737345524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a206275726e20616d6f756e74206578636565647320616c6c6f77616e636545524332303a206275726e2066726f6d20746865207a65726f206164647265737345524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f206164647265737345524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa265627a7a7231582062a8022795cdd33f6a780bff96fff436a005b6449d7676f71c97c01cb511a6b864736f6c63430005110032", - "sourceMap": "480:1362:27:-;;;906:109;8:9:-1;5:2;;;30:1;27;20:12;5:2;906:109:27;941:4;;;;;;;;;;;;;;;;;947:6;;;;;;;;;;;;;;;;;662:2;512:4:9;504:5;:12;;;;;;;;;;;;:::i;:::-;;536:6;526:7;:16;;;;;;;;;;;;:::i;:::-;;564:8;552:9;;:20;;;;;;;;;;;;;;;;;;416:163;;;975:33:27;981:10;799:6;975:5;;;:33;;:::i;:::-;480:1362;;5962:302:7;6056:1;6037:21;;:7;:21;;;;6029:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6120:24;6137:6;6120:12;;:16;;;;;;:24;;;;:::i;:::-;6105:12;:39;;;;6175:30;6198:6;6175:9;:18;6185:7;6175:18;;;;;;;;;;;;;;;;:22;;;;;;:30;;;;:::i;:::-;6154:9;:18;6164:7;6154:18;;;;;;;;;;;;;;;:51;;;;6241:7;6220:37;;6237:1;6220:37;;;6250:6;6220:37;;;;;;;;;;;;;;;;;;5962:302;;:::o;834:176:5:-;892:7;911:9;927:1;923;:5;911:17;;951:1;946;:6;;938:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1002:1;995:8;;;834:176;;;;:::o;480:1362:27:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;", - "deployedSourceMap": "480:1362:27:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;480:1362:27;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;644:81:9;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;644:81:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2500:149:7;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;2500:149:7;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;1559:89;;;:::i;:::-;;;;;;;;;;;;;;;;;;;3107:300;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;3107:300:7;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;629:35:27;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;758:47;;;:::i;:::-;;;;;;;;;;;;;;;;;;;1472:81:9;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;3802:207:7;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;3802:207:7;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;439:81:8;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;439:81:8;;;;;;;;;;;;;;;;;:::i;:::-;;1706:108:7;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;1706:108:7;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;577:101:8;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;577:101:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;838:85:9;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;838:85:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;537:42:27;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;537:42:27;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4496:258:7;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;4496:258:7;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;2017:155;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;2017:155:7;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;1393:447:27;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;1393:447:27;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21:11:-1;8;5:28;2:2;;;46:1;43;36:12;2:2;1393:447:27;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;1393:447:27;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;39:11;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;1393:447:27;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;93:3;85:6;81:16;74:27;137:4;133:9;126:4;121:3;117:14;113:30;106:37;;169:3;161:6;157:16;147:26;;1393:447:27;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;2230:132:7;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;2230:132:7;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;585:38:27;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;585:38:27;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;644:81:9;681:13;713:5;706:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;644:81;:::o;2500:149:7:-;2566:4;2582:39;2591:12;:10;:12::i;:::-;2605:7;2614:6;2582:8;:39::i;:::-;2638:4;2631:11;;2500:149;;;;:::o;1559:89::-;1603:7;1629:12;;1622:19;;1559:89;:::o;3107:300::-;3196:4;3212:36;3222:6;3230:9;3241:6;3212:9;:36::i;:::-;3258:121;3267:6;3275:12;:10;:12::i;:::-;3289:89;3327:6;3289:89;;;;;;;;;;;;;;;;;:11;:19;3301:6;3289:19;;;;;;;;;;;;;;;:33;3309:12;:10;:12::i;:::-;3289:33;;;;;;;;;;;;;;;;:37;;:89;;;;;:::i;:::-;3258:8;:121::i;:::-;3396:4;3389:11;;3107:300;;;;;:::o;629:35:27:-;662:2;629:35;:::o;758:47::-;799:6;758:47;:::o;1472:81:9:-;1513:5;1537:9;;;;;;;;;;;1530:16;;1472:81;:::o;3802:207:7:-;3882:4;3898:83;3907:12;:10;:12::i;:::-;3921:7;3930:50;3969:10;3930:11;:25;3942:12;:10;:12::i;:::-;3930:25;;;;;;;;;;;;;;;:34;3956:7;3930:34;;;;;;;;;;;;;;;;:38;;:50;;;;:::i;:::-;3898:8;:83::i;:::-;3998:4;3991:11;;3802:207;;;;:::o;439:81:8:-;486:27;492:12;:10;:12::i;:::-;506:6;486:5;:27::i;:::-;439:81;:::o;1706:108:7:-;1763:7;1789:9;:18;1799:7;1789:18;;;;;;;;;;;;;;;;1782:25;;1706:108;;;:::o;577:101:8:-;645:26;655:7;664:6;645:9;:26::i;:::-;577:101;;:::o;838:85:9:-;877:13;909:7;902:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;838:85;:::o;537:42:27:-;;;;;;;;;;;;;;;;;;;:::o;4496:258:7:-;4581:4;4597:129;4606:12;:10;:12::i;:::-;4620:7;4629:96;4668:15;4629:96;;;;;;;;;;;;;;;;;:11;:25;4641:12;:10;:12::i;:::-;4629:25;;;;;;;;;;;;;;;:34;4655:7;4629:34;;;;;;;;;;;;;;;;:38;;:96;;;;;:::i;:::-;4597:8;:129::i;:::-;4743:4;4736:11;;4496:258;;;;:::o;2017:155::-;2086:4;2102:42;2112:12;:10;:12::i;:::-;2126:9;2137:6;2102:9;:42::i;:::-;2161:4;2154:11;;2017:155;;;;:::o;1393:447:27:-;1522:12;1546:22;1586:8;1546:49;;1609:25;1617:8;1627:6;1609:7;:25::i;:::-;1605:229;;;1650:7;:23;;;1691:10;1719:6;1751:4;1774:10;1650:148;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;1650:148:27;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1650:148:27;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1650:148:27;;;;1819:4;1812:11;;;;;1605:229;1393:447;;;;;;;:::o;2230:132:7:-;2302:7;2328:11;:18;2340:5;2328:18;;;;;;;;;;;;;;;:27;2347:7;2328:27;;;;;;;;;;;;;;;;2321:34;;2230:132;;;;:::o;585:38:27:-;;;;;;;;;;;;;;;;;;;:::o;788:96:1:-;833:15;867:10;860:17;;788:96;:::o;7351:332:7:-;7461:1;7444:19;;:5;:19;;;;7436:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7541:1;7522:21;;:7;:21;;;;7514:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7623:6;7593:11;:18;7605:5;7593:18;;;;;;;;;;;;;;;:27;7612:7;7593:27;;;;;;;;;;;;;;;:36;;;;7660:7;7644:32;;7653:5;7644:32;;;7669:6;7644:32;;;;;;;;;;;;;;;;;;7351:332;;;:::o;5228:464::-;5343:1;5325:20;;:6;:20;;;;5317:70;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5426:1;5405:23;;:9;:23;;;;5397:71;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5499;5521:6;5499:71;;;;;;;;;;;;;;;;;:9;:17;5509:6;5499:17;;;;;;;;;;;;;;;;:21;;:71;;;;;:::i;:::-;5479:9;:17;5489:6;5479:17;;;;;;;;;;;;;;;:91;;;;5603:32;5628:6;5603:9;:20;5613:9;5603:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;5580:9;:20;5590:9;5580:20;;;;;;;;;;;;;;;:55;;;;5667:9;5650:35;;5659:6;5650:35;;;5678:6;5650:35;;;;;;;;;;;;;;;;;;5228:464;;;:::o;1732:187:5:-;1818:7;1850:1;1845;:6;;1853:12;1837:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;1837:29:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1876:9;1892:1;1888;:5;1876:17;;1911:1;1904:8;;;1732:187;;;;;:::o;834:176::-;892:7;911:9;927:1;923;:5;911:17;;951:1;946;:6;;938:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1002:1;995:8;;;834:176;;;;:::o;6584:342:7:-;6678:1;6659:21;;:7;:21;;;;6651:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6750:68;6773:6;6750:68;;;;;;;;;;;;;;;;;:9;:18;6760:7;6750:18;;;;;;;;;;;;;;;;:22;;:68;;;;;:::i;:::-;6729:9;:18;6739:7;6729:18;;;;;;;;;;;;;;;:89;;;;6843:24;6860:6;6843:12;;:16;;:24;;;;:::i;:::-;6828:12;:39;;;;6908:1;6882:37;;6891:7;6882:37;;;6912:6;6882:37;;;;;;;;;;;;;;;;;;6584:342;;:::o;7861:229::-;7932:22;7938:7;7947:6;7932:5;:22::i;:::-;7964:119;7973:7;7982:12;:10;:12::i;:::-;7996:86;8035:6;7996:86;;;;;;;;;;;;;;;;;:11;:20;8008:7;7996:20;;;;;;;;;;;;;;;:34;8017:12;:10;:12::i;:::-;7996:34;;;;;;;;;;;;;;;;:38;;:86;;;;;:::i;:::-;7964:8;:119::i;:::-;7861:229;;:::o;1274:134:5:-;1332:7;1358:43;1362:1;1365;1358:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;1351:50;;1274:134;;;;:::o", - "source": "pragma solidity 0.5.17;\n\nimport \"openzeppelin-solidity/contracts/token/ERC20/ERC20Burnable.sol\";\nimport \"openzeppelin-solidity/contracts/token/ERC20/ERC20Detailed.sol\";\n\n/// @dev Interface of recipient contract for approveAndCall pattern.\ninterface tokenRecipient {\n function receiveApproval(\n address _from,\n uint256 _value,\n address _token,\n bytes calldata _extraData\n ) external;\n}\n\n/// @title KEEP Token\n/// @dev Standard ERC20Burnable token\ncontract KeepToken is ERC20Burnable, ERC20Detailed {\n string public constant NAME = \"KEEP Token\";\n string public constant SYMBOL = \"KEEP\";\n uint8 public constant DECIMALS = 18; // The number of digits after the decimal place when displaying token values on-screen.\n uint256 public constant INITIAL_SUPPLY = 10**27; // 1 billion tokens, 18 decimal places.\n\n /// @dev Gives msg.sender all of existing tokens.\n constructor() public ERC20Detailed(NAME, SYMBOL, DECIMALS) {\n _mint(msg.sender, INITIAL_SUPPLY);\n }\n\n /// @notice Set allowance for other address and notify.\n /// Allows `_spender` to spend no more than `_value` tokens\n /// on your behalf and then ping the contract about it.\n /// @param _spender The address authorized to spend.\n /// @param _value The max amount they can spend.\n /// @param _extraData Extra information to send to the approved contract.\n function approveAndCall(\n address _spender,\n uint256 _value,\n bytes memory _extraData\n ) public returns (bool success) {\n tokenRecipient spender = tokenRecipient(_spender);\n if (approve(_spender, _value)) {\n spender.receiveApproval(\n msg.sender,\n _value,\n address(this),\n _extraData\n );\n return true;\n }\n }\n}\n", - "sourcePath": "/Users/michalina/workspace2/keep-core/solidity-v1/contracts/KeepToken.sol", - "ast": { - "absolutePath": "project:/contracts/KeepToken.sol", - "exportedSymbols": { - "KeepToken": [6208], - "tokenRecipient": [6136] - }, - "id": 6209, - "nodeType": "SourceUnit", - "nodes": [ - { - "id": 6122, - "literals": ["solidity", "0.5", ".17"], - "nodeType": "PragmaDirective", - "src": "0:23:27" - }, - { - "absolutePath": "openzeppelin-solidity/contracts/token/ERC20/ERC20Burnable.sol", - "file": "openzeppelin-solidity/contracts/token/ERC20/ERC20Burnable.sol", - "id": 6123, - "nodeType": "ImportDirective", - "scope": 6209, - "sourceUnit": 1024, - "src": "25:71:27", - "symbolAliases": [], - "unitAlias": "" - }, - { - "absolutePath": "openzeppelin-solidity/contracts/token/ERC20/ERC20Detailed.sol", - "file": "openzeppelin-solidity/contracts/token/ERC20/ERC20Detailed.sol", - "id": 6124, - "nodeType": "ImportDirective", - "scope": 6209, - "sourceUnit": 1082, - "src": "97:71:27", - "symbolAliases": [], - "unitAlias": "" - }, - { - "baseContracts": [], - "contractDependencies": [], - "contractKind": "interface", - "documentation": "@dev Interface of recipient contract for approveAndCall pattern.", - "fullyImplemented": false, - "id": 6136, - "linearizedBaseContracts": [6136], - "name": "tokenRecipient", - "nodeType": "ContractDefinition", - "nodes": [ - { - "body": null, - "documentation": null, - "id": 6135, - "implemented": false, - "kind": "function", - "modifiers": [], - "name": "receiveApproval", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 6133, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 6126, - "name": "_from", - "nodeType": "VariableDeclaration", - "scope": 6135, - "src": "304:13:27", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 6125, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "304:7:27", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 6128, - "name": "_value", - "nodeType": "VariableDeclaration", - "scope": 6135, - "src": "327:14:27", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 6127, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "327:7:27", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 6130, - "name": "_token", - "nodeType": "VariableDeclaration", - "scope": 6135, - "src": "351:14:27", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 6129, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "351:7:27", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 6132, - "name": "_extraData", - "nodeType": "VariableDeclaration", - "scope": 6135, - "src": "375:25:27", - "stateVariable": false, - "storageLocation": "calldata", - "typeDescriptions": { - "typeIdentifier": "t_bytes_calldata_ptr", - "typeString": "bytes" - }, - "typeName": { - "id": 6131, - "name": "bytes", - "nodeType": "ElementaryTypeName", - "src": "375:5:27", - "typeDescriptions": { - "typeIdentifier": "t_bytes_storage_ptr", - "typeString": "bytes" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "294:112:27" - }, - "returnParameters": { - "id": 6134, - "nodeType": "ParameterList", - "parameters": [], - "src": "415:0:27" - }, - "scope": 6136, - "src": "270:146:27", - "stateMutability": "nonpayable", - "superFunction": null, - "visibility": "external" - } - ], - "scope": 6209, - "src": "239:179:27" - }, - { - "baseContracts": [ - { - "arguments": null, - "baseName": { - "contractScope": null, - "id": 6137, - "name": "ERC20Burnable", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 1023, - "src": "502:13:27", - "typeDescriptions": { - "typeIdentifier": "t_contract$_ERC20Burnable_$1023", - "typeString": "contract ERC20Burnable" - } - }, - "id": 6138, - "nodeType": "InheritanceSpecifier", - "src": "502:13:27" - }, - { - "arguments": null, - "baseName": { - "contractScope": null, - "id": 6139, - "name": "ERC20Detailed", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 1081, - "src": "517:13:27", - "typeDescriptions": { - "typeIdentifier": "t_contract$_ERC20Detailed_$1081", - "typeString": "contract ERC20Detailed" - } - }, - "id": 6140, - "nodeType": "InheritanceSpecifier", - "src": "517:13:27" - } - ], - "contractDependencies": [64, 989, 1023, 1081, 1150], - "contractKind": "contract", - "documentation": "@title KEEP Token\n @dev Standard ERC20Burnable token", - "fullyImplemented": true, - "id": 6208, - "linearizedBaseContracts": [6208, 1081, 1023, 989, 1150, 64], - "name": "KeepToken", - "nodeType": "ContractDefinition", - "nodes": [ - { - "constant": true, - "id": 6143, - "name": "NAME", - "nodeType": "VariableDeclaration", - "scope": 6208, - "src": "537:42:27", - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_string_memory", - "typeString": "string" - }, - "typeName": { - "id": 6141, - "name": "string", - "nodeType": "ElementaryTypeName", - "src": "537:6:27", - "typeDescriptions": { - "typeIdentifier": "t_string_storage_ptr", - "typeString": "string" - } - }, - "value": { - "argumentTypes": null, - "hexValue": "4b45455020546f6b656e", - "id": 6142, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "string", - "lValueRequested": false, - "nodeType": "Literal", - "src": "567:12:27", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_stringliteral_5bd5b25213f8ed00c4212a1ed70b62617987e94979746b839bc5d419491f2cd2", - "typeString": "literal_string \"KEEP Token\"" - }, - "value": "KEEP Token" - }, - "visibility": "public" - }, - { - "constant": true, - "id": 6146, - "name": "SYMBOL", - "nodeType": "VariableDeclaration", - "scope": 6208, - "src": "585:38:27", - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_string_memory", - "typeString": "string" - }, - "typeName": { - "id": 6144, - "name": "string", - "nodeType": "ElementaryTypeName", - "src": "585:6:27", - "typeDescriptions": { - "typeIdentifier": "t_string_storage_ptr", - "typeString": "string" - } - }, - "value": { - "argumentTypes": null, - "hexValue": "4b454550", - "id": 6145, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "string", - "lValueRequested": false, - "nodeType": "Literal", - "src": "617:6:27", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_stringliteral_cc1c7d1875340db4414c4b13e888160517f4e3358e62546848352d867e16bb21", - "typeString": "literal_string \"KEEP\"" - }, - "value": "KEEP" - }, - "visibility": "public" - }, - { - "constant": true, - "id": 6149, - "name": "DECIMALS", - "nodeType": "VariableDeclaration", - "scope": 6208, - "src": "629:35:27", - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - }, - "typeName": { - "id": 6147, - "name": "uint8", - "nodeType": "ElementaryTypeName", - "src": "629:5:27", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "value": { - "argumentTypes": null, - "hexValue": "3138", - "id": 6148, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "662:2:27", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_18_by_1", - "typeString": "int_const 18" - }, - "value": "18" - }, - "visibility": "public" - }, - { - "constant": true, - "id": 6154, - "name": "INITIAL_SUPPLY", - "nodeType": "VariableDeclaration", - "scope": 6208, - "src": "758:47:27", - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 6150, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "758:7:27", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_rational_1000000000000000000000000000_by_1", - "typeString": "int_const 1000000000000000000000000000" - }, - "id": 6153, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "hexValue": "3130", - "id": 6151, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "799:2:27", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_10_by_1", - "typeString": "int_const 10" - }, - "value": "10" - }, - "nodeType": "BinaryOperation", - "operator": "**", - "rightExpression": { - "argumentTypes": null, - "hexValue": "3237", - "id": 6152, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "803:2:27", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_27_by_1", - "typeString": "int_const 27" - }, - "value": "27" - }, - "src": "799:6:27", - "typeDescriptions": { - "typeIdentifier": "t_rational_1000000000000000000000000000_by_1", - "typeString": "int_const 1000000000000000000000000000" - } - }, - "visibility": "public" - }, - { - "body": { - "id": 6168, - "nodeType": "Block", - "src": "965:50:27", - "statements": [ - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 6163, - "name": "msg", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 28146, - "src": "981:3:27", - "typeDescriptions": { - "typeIdentifier": "t_magic_message", - "typeString": "msg" - } - }, - "id": 6164, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "sender", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "981:10:27", - "typeDescriptions": { - "typeIdentifier": "t_address_payable", - "typeString": "address payable" - } - }, - { - "argumentTypes": null, - "id": 6165, - "name": "INITIAL_SUPPLY", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 6154, - "src": "993:14:27", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address_payable", - "typeString": "address payable" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 6162, - "name": "_mint", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 873, - "src": "975:5:27", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$", - "typeString": "function (address,uint256)" - } - }, - "id": 6166, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "975:33:27", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 6167, - "nodeType": "ExpressionStatement", - "src": "975:33:27" - } - ] - }, - "documentation": "@dev Gives msg.sender all of existing tokens.", - "id": 6169, - "implemented": true, - "kind": "constructor", - "modifiers": [ - { - "arguments": [ - { - "argumentTypes": null, - "id": 6157, - "name": "NAME", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 6143, - "src": "941:4:27", - "typeDescriptions": { - "typeIdentifier": "t_string_memory", - "typeString": "string memory" - } - }, - { - "argumentTypes": null, - "id": 6158, - "name": "SYMBOL", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 6146, - "src": "947:6:27", - "typeDescriptions": { - "typeIdentifier": "t_string_memory", - "typeString": "string memory" - } - }, - { - "argumentTypes": null, - "id": 6159, - "name": "DECIMALS", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 6149, - "src": "955:8:27", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - } - ], - "id": 6160, - "modifierName": { - "argumentTypes": null, - "id": 6156, - "name": "ERC20Detailed", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1081, - "src": "927:13:27", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_ERC20Detailed_$1081_$", - "typeString": "type(contract ERC20Detailed)" - } - }, - "nodeType": "ModifierInvocation", - "src": "927:37:27" - } - ], - "name": "", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 6155, - "nodeType": "ParameterList", - "parameters": [], - "src": "917:2:27" - }, - "returnParameters": { - "id": 6161, - "nodeType": "ParameterList", - "parameters": [], - "src": "965:0:27" - }, - "scope": 6208, - "src": "906:109:27", - "stateMutability": "nonpayable", - "superFunction": null, - "visibility": "public" - }, - { - "body": { - "id": 6206, - "nodeType": "Block", - "src": "1536:304:27", - "statements": [ - { - "assignments": [6181], - "declarations": [ - { - "constant": false, - "id": 6181, - "name": "spender", - "nodeType": "VariableDeclaration", - "scope": 6206, - "src": "1546:22:27", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_contract$_tokenRecipient_$6136", - "typeString": "contract tokenRecipient" - }, - "typeName": { - "contractScope": null, - "id": 6180, - "name": "tokenRecipient", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 6136, - "src": "1546:14:27", - "typeDescriptions": { - "typeIdentifier": "t_contract$_tokenRecipient_$6136", - "typeString": "contract tokenRecipient" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 6185, - "initialValue": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 6183, - "name": "_spender", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 6171, - "src": "1586:8:27", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "id": 6182, - "name": "tokenRecipient", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 6136, - "src": "1571:14:27", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_tokenRecipient_$6136_$", - "typeString": "type(contract tokenRecipient)" - } - }, - "id": 6184, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "typeConversion", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "1571:24:27", - "typeDescriptions": { - "typeIdentifier": "t_contract$_tokenRecipient_$6136", - "typeString": "contract tokenRecipient" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "1546:49:27" - }, - { - "condition": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 6187, - "name": "_spender", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 6171, - "src": "1617:8:27", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "argumentTypes": null, - "id": 6188, - "name": "_value", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 6173, - "src": "1627:6:27", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 6186, - "name": "approve", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 682, - "src": "1609:7:27", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$", - "typeString": "function (address,uint256) returns (bool)" - } - }, - "id": 6189, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "1609:25:27", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "falseBody": null, - "id": 6205, - "nodeType": "IfStatement", - "src": "1605:229:27", - "trueBody": { - "id": 6204, - "nodeType": "Block", - "src": "1636:198:27", - "statements": [ - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 6193, - "name": "msg", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 28146, - "src": "1691:3:27", - "typeDescriptions": { - "typeIdentifier": "t_magic_message", - "typeString": "msg" - } - }, - "id": 6194, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "sender", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "1691:10:27", - "typeDescriptions": { - "typeIdentifier": "t_address_payable", - "typeString": "address payable" - } - }, - { - "argumentTypes": null, - "id": 6195, - "name": "_value", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 6173, - "src": "1719:6:27", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 6197, - "name": "this", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 28212, - "src": "1751:4:27", - "typeDescriptions": { - "typeIdentifier": "t_contract$_KeepToken_$6208", - "typeString": "contract KeepToken" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_contract$_KeepToken_$6208", - "typeString": "contract KeepToken" - } - ], - "id": 6196, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "1743:7:27", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_address_$", - "typeString": "type(address)" - }, - "typeName": "address" - }, - "id": 6198, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "typeConversion", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "1743:13:27", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "argumentTypes": null, - "id": 6199, - "name": "_extraData", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 6175, - "src": "1774:10:27", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address_payable", - "typeString": "address payable" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - ], - "expression": { - "argumentTypes": null, - "id": 6190, - "name": "spender", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 6181, - "src": "1650:7:27", - "typeDescriptions": { - "typeIdentifier": "t_contract$_tokenRecipient_$6136", - "typeString": "contract tokenRecipient" - } - }, - "id": 6192, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "receiveApproval", - "nodeType": "MemberAccess", - "referencedDeclaration": 6135, - "src": "1650:23:27", - "typeDescriptions": { - "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$_t_address_$_t_bytes_memory_ptr_$returns$__$", - "typeString": "function (address,uint256,address,bytes memory) external" - } - }, - "id": 6200, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "1650:148:27", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 6201, - "nodeType": "ExpressionStatement", - "src": "1650:148:27" - }, - { - "expression": { - "argumentTypes": null, - "hexValue": "74727565", - "id": 6202, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "bool", - "lValueRequested": false, - "nodeType": "Literal", - "src": "1819:4:27", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "value": "true" - }, - "functionReturnParameters": 6179, - "id": 6203, - "nodeType": "Return", - "src": "1812:11:27" - } - ] - } - } - ] - }, - "documentation": "@notice Set allowance for other address and notify.\n Allows `_spender` to spend no more than `_value` tokens\n on your behalf and then ping the contract about it.\n @param _spender The address authorized to spend.\n @param _value The max amount they can spend.\n @param _extraData Extra information to send to the approved contract.", - "id": 6207, - "implemented": true, - "kind": "function", - "modifiers": [], - "name": "approveAndCall", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 6176, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 6171, - "name": "_spender", - "nodeType": "VariableDeclaration", - "scope": 6207, - "src": "1426:16:27", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 6170, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "1426:7:27", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 6173, - "name": "_value", - "nodeType": "VariableDeclaration", - "scope": 6207, - "src": "1452:14:27", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 6172, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "1452:7:27", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 6175, - "name": "_extraData", - "nodeType": "VariableDeclaration", - "scope": 6207, - "src": "1476:23:27", - "stateVariable": false, - "storageLocation": "memory", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes" - }, - "typeName": { - "id": 6174, - "name": "bytes", - "nodeType": "ElementaryTypeName", - "src": "1476:5:27", - "typeDescriptions": { - "typeIdentifier": "t_bytes_storage_ptr", - "typeString": "bytes" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "1416:89:27" - }, - "returnParameters": { - "id": 6179, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 6178, - "name": "success", - "nodeType": "VariableDeclaration", - "scope": 6207, - "src": "1522:12:27", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "typeName": { - "id": 6177, - "name": "bool", - "nodeType": "ElementaryTypeName", - "src": "1522:4:27", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "1521:14:27" - }, - "scope": 6208, - "src": "1393:447:27", - "stateMutability": "nonpayable", - "superFunction": null, - "visibility": "public" - } - ], - "scope": 6209, - "src": "480:1362:27" - } - ], - "src": "0:1843:27" - }, - "legacyAST": { - "attributes": { - "absolutePath": "project:/contracts/KeepToken.sol", - "exportedSymbols": { - "KeepToken": [6208], - "tokenRecipient": [6136] - } - }, - "children": [ - { - "attributes": { - "literals": ["solidity", "0.5", ".17"] - }, - "id": 6122, - "name": "PragmaDirective", - "src": "0:23:27" - }, - { - "attributes": { - "SourceUnit": 1024, - "absolutePath": "openzeppelin-solidity/contracts/token/ERC20/ERC20Burnable.sol", - "file": "openzeppelin-solidity/contracts/token/ERC20/ERC20Burnable.sol", - "scope": 6209, - "symbolAliases": [null], - "unitAlias": "" - }, - "id": 6123, - "name": "ImportDirective", - "src": "25:71:27" - }, - { - "attributes": { - "SourceUnit": 1082, - "absolutePath": "openzeppelin-solidity/contracts/token/ERC20/ERC20Detailed.sol", - "file": "openzeppelin-solidity/contracts/token/ERC20/ERC20Detailed.sol", - "scope": 6209, - "symbolAliases": [null], - "unitAlias": "" - }, - "id": 6124, - "name": "ImportDirective", - "src": "97:71:27" - }, - { - "attributes": { - "baseContracts": [null], - "contractDependencies": [null], - "contractKind": "interface", - "documentation": "@dev Interface of recipient contract for approveAndCall pattern.", - "fullyImplemented": false, - "linearizedBaseContracts": [6136], - "name": "tokenRecipient", - "scope": 6209 - }, - "children": [ - { - "attributes": { - "body": null, - "documentation": null, - "implemented": false, - "isConstructor": false, - "kind": "function", - "modifiers": [null], - "name": "receiveApproval", - "scope": 6136, - "stateMutability": "nonpayable", - "superFunction": null, - "visibility": "external" - }, - "children": [ - { - "children": [ - { - "attributes": { - "constant": false, - "name": "_from", - "scope": 6135, - "stateVariable": false, - "storageLocation": "default", - "type": "address", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "address", - "stateMutability": "nonpayable", - "type": "address" - }, - "id": 6125, - "name": "ElementaryTypeName", - "src": "304:7:27" - } - ], - "id": 6126, - "name": "VariableDeclaration", - "src": "304:13:27" - }, - { - "attributes": { - "constant": false, - "name": "_value", - "scope": 6135, - "stateVariable": false, - "storageLocation": "default", - "type": "uint256", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "uint256", - "type": "uint256" - }, - "id": 6127, - "name": "ElementaryTypeName", - "src": "327:7:27" - } - ], - "id": 6128, - "name": "VariableDeclaration", - "src": "327:14:27" - }, - { - "attributes": { - "constant": false, - "name": "_token", - "scope": 6135, - "stateVariable": false, - "storageLocation": "default", - "type": "address", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "address", - "stateMutability": "nonpayable", - "type": "address" - }, - "id": 6129, - "name": "ElementaryTypeName", - "src": "351:7:27" - } - ], - "id": 6130, - "name": "VariableDeclaration", - "src": "351:14:27" - }, - { - "attributes": { - "constant": false, - "name": "_extraData", - "scope": 6135, - "stateVariable": false, - "storageLocation": "calldata", - "type": "bytes", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "bytes", - "type": "bytes" - }, - "id": 6131, - "name": "ElementaryTypeName", - "src": "375:5:27" - } - ], - "id": 6132, - "name": "VariableDeclaration", - "src": "375:25:27" - } - ], - "id": 6133, - "name": "ParameterList", - "src": "294:112:27" - }, - { - "attributes": { - "parameters": [null] - }, - "children": [], - "id": 6134, - "name": "ParameterList", - "src": "415:0:27" - } - ], - "id": 6135, - "name": "FunctionDefinition", - "src": "270:146:27" - } - ], - "id": 6136, - "name": "ContractDefinition", - "src": "239:179:27" - }, - { - "attributes": { - "contractDependencies": [64, 989, 1023, 1081, 1150], - "contractKind": "contract", - "documentation": "@title KEEP Token\n @dev Standard ERC20Burnable token", - "fullyImplemented": true, - "linearizedBaseContracts": [6208, 1081, 1023, 989, 1150, 64], - "name": "KeepToken", - "scope": 6209 - }, - "children": [ - { - "attributes": { - "arguments": null - }, - "children": [ - { - "attributes": { - "contractScope": null, - "name": "ERC20Burnable", - "referencedDeclaration": 1023, - "type": "contract ERC20Burnable" - }, - "id": 6137, - "name": "UserDefinedTypeName", - "src": "502:13:27" - } - ], - "id": 6138, - "name": "InheritanceSpecifier", - "src": "502:13:27" - }, - { - "attributes": { - "arguments": null - }, - "children": [ - { - "attributes": { - "contractScope": null, - "name": "ERC20Detailed", - "referencedDeclaration": 1081, - "type": "contract ERC20Detailed" - }, - "id": 6139, - "name": "UserDefinedTypeName", - "src": "517:13:27" - } - ], - "id": 6140, - "name": "InheritanceSpecifier", - "src": "517:13:27" - }, - { - "attributes": { - "constant": true, - "name": "NAME", - "scope": 6208, - "stateVariable": true, - "storageLocation": "default", - "type": "string", - "visibility": "public" - }, - "children": [ - { - "attributes": { - "name": "string", - "type": "string" - }, - "id": 6141, - "name": "ElementaryTypeName", - "src": "537:6:27" - }, - { - "attributes": { - "argumentTypes": null, - "hexvalue": "4b45455020546f6b656e", - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "subdenomination": null, - "token": "string", - "type": "literal_string \"KEEP Token\"", - "value": "KEEP Token" - }, - "id": 6142, - "name": "Literal", - "src": "567:12:27" - } - ], - "id": 6143, - "name": "VariableDeclaration", - "src": "537:42:27" - }, - { - "attributes": { - "constant": true, - "name": "SYMBOL", - "scope": 6208, - "stateVariable": true, - "storageLocation": "default", - "type": "string", - "visibility": "public" - }, - "children": [ - { - "attributes": { - "name": "string", - "type": "string" - }, - "id": 6144, - "name": "ElementaryTypeName", - "src": "585:6:27" - }, - { - "attributes": { - "argumentTypes": null, - "hexvalue": "4b454550", - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "subdenomination": null, - "token": "string", - "type": "literal_string \"KEEP\"", - "value": "KEEP" - }, - "id": 6145, - "name": "Literal", - "src": "617:6:27" - } - ], - "id": 6146, - "name": "VariableDeclaration", - "src": "585:38:27" - }, - { - "attributes": { - "constant": true, - "name": "DECIMALS", - "scope": 6208, - "stateVariable": true, - "storageLocation": "default", - "type": "uint8", - "visibility": "public" - }, - "children": [ - { - "attributes": { - "name": "uint8", - "type": "uint8" - }, - "id": 6147, - "name": "ElementaryTypeName", - "src": "629:5:27" - }, - { - "attributes": { - "argumentTypes": null, - "hexvalue": "3138", - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "subdenomination": null, - "token": "number", - "type": "int_const 18", - "value": "18" - }, - "id": 6148, - "name": "Literal", - "src": "662:2:27" - } - ], - "id": 6149, - "name": "VariableDeclaration", - "src": "629:35:27" - }, - { - "attributes": { - "constant": true, - "name": "INITIAL_SUPPLY", - "scope": 6208, - "stateVariable": true, - "storageLocation": "default", - "type": "uint256", - "visibility": "public" - }, - "children": [ - { - "attributes": { - "name": "uint256", - "type": "uint256" - }, - "id": 6150, - "name": "ElementaryTypeName", - "src": "758:7:27" - }, - { - "attributes": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_rational_1000000000000000000000000000_by_1", - "typeString": "int_const 1000000000000000000000000000" - }, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "operator": "**", - "type": "int_const 1000000000000000000000000000" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "hexvalue": "3130", - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "subdenomination": null, - "token": "number", - "type": "int_const 10", - "value": "10" - }, - "id": 6151, - "name": "Literal", - "src": "799:2:27" - }, - { - "attributes": { - "argumentTypes": null, - "hexvalue": "3237", - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "subdenomination": null, - "token": "number", - "type": "int_const 27", - "value": "27" - }, - "id": 6152, - "name": "Literal", - "src": "803:2:27" - } - ], - "id": 6153, - "name": "BinaryOperation", - "src": "799:6:27" - } - ], - "id": 6154, - "name": "VariableDeclaration", - "src": "758:47:27" - }, - { - "attributes": { - "documentation": "@dev Gives msg.sender all of existing tokens.", - "implemented": true, - "isConstructor": true, - "kind": "constructor", - "name": "", - "scope": 6208, - "stateMutability": "nonpayable", - "superFunction": null, - "visibility": "public" - }, - "children": [ - { - "attributes": { - "parameters": [null] - }, - "children": [], - "id": 6155, - "name": "ParameterList", - "src": "917:2:27" - }, - { - "attributes": { - "parameters": [null] - }, - "children": [], - "id": 6161, - "name": "ParameterList", - "src": "965:0:27" - }, - { - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 1081, - "type": "type(contract ERC20Detailed)", - "value": "ERC20Detailed" - }, - "id": 6156, - "name": "Identifier", - "src": "927:13:27" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 6143, - "type": "string memory", - "value": "NAME" - }, - "id": 6157, - "name": "Identifier", - "src": "941:4:27" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 6146, - "type": "string memory", - "value": "SYMBOL" - }, - "id": 6158, - "name": "Identifier", - "src": "947:6:27" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 6149, - "type": "uint8", - "value": "DECIMALS" - }, - "id": 6159, - "name": "Identifier", - "src": "955:8:27" - } - ], - "id": 6160, - "name": "ModifierInvocation", - "src": "927:37:27" - }, - { - "children": [ - { - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [null], - "type": "tuple()", - "type_conversion": false - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_address_payable", - "typeString": "address payable" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "overloadedDeclarations": [null], - "referencedDeclaration": 873, - "type": "function (address,uint256)", - "value": "_mint" - }, - "id": 6162, - "name": "Identifier", - "src": "975:5:27" - }, - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "member_name": "sender", - "referencedDeclaration": null, - "type": "address payable" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 28146, - "type": "msg", - "value": "msg" - }, - "id": 6163, - "name": "Identifier", - "src": "981:3:27" - } - ], - "id": 6164, - "name": "MemberAccess", - "src": "981:10:27" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 6154, - "type": "uint256", - "value": "INITIAL_SUPPLY" - }, - "id": 6165, - "name": "Identifier", - "src": "993:14:27" - } - ], - "id": 6166, - "name": "FunctionCall", - "src": "975:33:27" - } - ], - "id": 6167, - "name": "ExpressionStatement", - "src": "975:33:27" - } - ], - "id": 6168, - "name": "Block", - "src": "965:50:27" - } - ], - "id": 6169, - "name": "FunctionDefinition", - "src": "906:109:27" - }, - { - "attributes": { - "documentation": "@notice Set allowance for other address and notify.\n Allows `_spender` to spend no more than `_value` tokens\n on your behalf and then ping the contract about it.\n @param _spender The address authorized to spend.\n @param _value The max amount they can spend.\n @param _extraData Extra information to send to the approved contract.", - "implemented": true, - "isConstructor": false, - "kind": "function", - "modifiers": [null], - "name": "approveAndCall", - "scope": 6208, - "stateMutability": "nonpayable", - "superFunction": null, - "visibility": "public" - }, - "children": [ - { - "children": [ - { - "attributes": { - "constant": false, - "name": "_spender", - "scope": 6207, - "stateVariable": false, - "storageLocation": "default", - "type": "address", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "address", - "stateMutability": "nonpayable", - "type": "address" - }, - "id": 6170, - "name": "ElementaryTypeName", - "src": "1426:7:27" - } - ], - "id": 6171, - "name": "VariableDeclaration", - "src": "1426:16:27" - }, - { - "attributes": { - "constant": false, - "name": "_value", - "scope": 6207, - "stateVariable": false, - "storageLocation": "default", - "type": "uint256", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "uint256", - "type": "uint256" - }, - "id": 6172, - "name": "ElementaryTypeName", - "src": "1452:7:27" - } - ], - "id": 6173, - "name": "VariableDeclaration", - "src": "1452:14:27" - }, - { - "attributes": { - "constant": false, - "name": "_extraData", - "scope": 6207, - "stateVariable": false, - "storageLocation": "memory", - "type": "bytes", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "bytes", - "type": "bytes" - }, - "id": 6174, - "name": "ElementaryTypeName", - "src": "1476:5:27" - } - ], - "id": 6175, - "name": "VariableDeclaration", - "src": "1476:23:27" - } - ], - "id": 6176, - "name": "ParameterList", - "src": "1416:89:27" - }, - { - "children": [ - { - "attributes": { - "constant": false, - "name": "success", - "scope": 6207, - "stateVariable": false, - "storageLocation": "default", - "type": "bool", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "bool", - "type": "bool" - }, - "id": 6177, - "name": "ElementaryTypeName", - "src": "1522:4:27" - } - ], - "id": 6178, - "name": "VariableDeclaration", - "src": "1522:12:27" - } - ], - "id": 6179, - "name": "ParameterList", - "src": "1521:14:27" - }, - { - "children": [ - { - "attributes": { - "assignments": [6181] - }, - "children": [ - { - "attributes": { - "constant": false, - "name": "spender", - "scope": 6206, - "stateVariable": false, - "storageLocation": "default", - "type": "contract tokenRecipient", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "contractScope": null, - "name": "tokenRecipient", - "referencedDeclaration": 6136, - "type": "contract tokenRecipient" - }, - "id": 6180, - "name": "UserDefinedTypeName", - "src": "1546:14:27" - } - ], - "id": 6181, - "name": "VariableDeclaration", - "src": "1546:22:27" - }, - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [null], - "type": "contract tokenRecipient", - "type_conversion": true - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "overloadedDeclarations": [null], - "referencedDeclaration": 6136, - "type": "type(contract tokenRecipient)", - "value": "tokenRecipient" - }, - "id": 6182, - "name": "Identifier", - "src": "1571:14:27" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 6171, - "type": "address", - "value": "_spender" - }, - "id": 6183, - "name": "Identifier", - "src": "1586:8:27" - } - ], - "id": 6184, - "name": "FunctionCall", - "src": "1571:24:27" - } - ], - "id": 6185, - "name": "VariableDeclarationStatement", - "src": "1546:49:27" - }, - { - "attributes": { - "falseBody": null - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [null], - "type": "bool", - "type_conversion": false - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "overloadedDeclarations": [null], - "referencedDeclaration": 682, - "type": "function (address,uint256) returns (bool)", - "value": "approve" - }, - "id": 6186, - "name": "Identifier", - "src": "1609:7:27" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 6171, - "type": "address", - "value": "_spender" - }, - "id": 6187, - "name": "Identifier", - "src": "1617:8:27" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 6173, - "type": "uint256", - "value": "_value" - }, - "id": 6188, - "name": "Identifier", - "src": "1627:6:27" - } - ], - "id": 6189, - "name": "FunctionCall", - "src": "1609:25:27" - }, - { - "children": [ - { - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [null], - "type": "tuple()", - "type_conversion": false - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_address_payable", - "typeString": "address payable" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - ], - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "member_name": "receiveApproval", - "referencedDeclaration": 6135, - "type": "function (address,uint256,address,bytes memory) external" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 6181, - "type": "contract tokenRecipient", - "value": "spender" - }, - "id": 6190, - "name": "Identifier", - "src": "1650:7:27" - } - ], - "id": 6192, - "name": "MemberAccess", - "src": "1650:23:27" - }, - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "member_name": "sender", - "referencedDeclaration": null, - "type": "address payable" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 28146, - "type": "msg", - "value": "msg" - }, - "id": 6193, - "name": "Identifier", - "src": "1691:3:27" - } - ], - "id": 6194, - "name": "MemberAccess", - "src": "1691:10:27" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 6173, - "type": "uint256", - "value": "_value" - }, - "id": 6195, - "name": "Identifier", - "src": "1719:6:27" - }, - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [null], - "type": "address", - "type_conversion": true - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_contract$_KeepToken_$6208", - "typeString": "contract KeepToken" - } - ], - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "type": "type(address)", - "value": "address" - }, - "id": 6196, - "name": "ElementaryTypeNameExpression", - "src": "1743:7:27" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 28212, - "type": "contract KeepToken", - "value": "this" - }, - "id": 6197, - "name": "Identifier", - "src": "1751:4:27" - } - ], - "id": 6198, - "name": "FunctionCall", - "src": "1743:13:27" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 6175, - "type": "bytes memory", - "value": "_extraData" - }, - "id": 6199, - "name": "Identifier", - "src": "1774:10:27" - } - ], - "id": 6200, - "name": "FunctionCall", - "src": "1650:148:27" - } - ], - "id": 6201, - "name": "ExpressionStatement", - "src": "1650:148:27" - }, - { - "attributes": { - "functionReturnParameters": 6179 - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "hexvalue": "74727565", - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "subdenomination": null, - "token": "bool", - "type": "bool", - "value": "true" - }, - "id": 6202, - "name": "Literal", - "src": "1819:4:27" - } - ], - "id": 6203, - "name": "Return", - "src": "1812:11:27" - } - ], - "id": 6204, - "name": "Block", - "src": "1636:198:27" - } - ], - "id": 6205, - "name": "IfStatement", - "src": "1605:229:27" - } - ], - "id": 6206, - "name": "Block", - "src": "1536:304:27" - } - ], - "id": 6207, - "name": "FunctionDefinition", - "src": "1393:447:27" - } - ], - "id": 6208, - "name": "ContractDefinition", - "src": "480:1362:27" - } - ], - "id": 6209, - "name": "SourceUnit", - "src": "0:1843:27" - }, - "compiler": { - "name": "solc", - "version": "0.5.17+commit.d19bba13.Emscripten.clang" - }, - "networks": { - "11155111": { - "events": {}, - "links": {}, - "address": "0xa07f4E37C2E7089Ea3AFffbe51A6A281833a4D14", - "transactionHash": "0x44191b3e2a0bfbacca64d01739cd98f91ed47e34cbe3853e31535e8dc6542f51" - } - }, - "schemaVersion": "3.4.8", - "updatedAt": "2023-09-12T08:40:37.348Z", - "networkType": "ethereum", - "devdoc": { - "details": "Standard ERC20Burnable token", - "methods": { - "allowance(address,address)": { - "details": "See {IERC20-allowance}." - }, - "approve(address,uint256)": { - "details": "See {IERC20-approve}. * Requirements: * - `spender` cannot be the zero address." - }, - "approveAndCall(address,uint256,bytes)": { - "params": { - "_extraData": "Extra information to send to the approved contract.", - "_spender": "The address authorized to spend.", - "_value": "The max amount they can spend." - } - }, - "balanceOf(address)": { - "details": "See {IERC20-balanceOf}." - }, - "burn(uint256)": { - "details": "Destroys `amount` tokens from the caller. * See {ERC20-_burn}." - }, - "burnFrom(address,uint256)": { - "details": "See {ERC20-_burnFrom}." - }, - "constructor": { - "details": "Gives msg.sender all of existing tokens." - }, - "decimals()": { - "details": "Returns the number of decimals used to get its user representation. For example, if `decimals` equals `2`, a balance of `505` tokens should be displayed to a user as `5,05` (`505 / 10 ** 2`). * Tokens usually opt for a value of 18, imitating the relationship between Ether and Wei. * NOTE: This information is only used for _display_ purposes: it in no way affects any of the arithmetic of the contract, including {IERC20-balanceOf} and {IERC20-transfer}." - }, - "decreaseAllowance(address,uint256)": { - "details": "Atomically decreases the allowance granted to `spender` by the caller. * This is an alternative to {approve} that can be used as a mitigation for problems described in {IERC20-approve}. * Emits an {Approval} event indicating the updated allowance. * Requirements: * - `spender` cannot be the zero address. - `spender` must have allowance for the caller of at least `subtractedValue`." - }, - "increaseAllowance(address,uint256)": { - "details": "Atomically increases the allowance granted to `spender` by the caller. * This is an alternative to {approve} that can be used as a mitigation for problems described in {IERC20-approve}. * Emits an {Approval} event indicating the updated allowance. * Requirements: * - `spender` cannot be the zero address." - }, - "name()": { - "details": "Returns the name of the token." - }, - "symbol()": { - "details": "Returns the symbol of the token, usually a shorter version of the name." - }, - "totalSupply()": { - "details": "See {IERC20-totalSupply}." - }, - "transfer(address,uint256)": { - "details": "See {IERC20-transfer}. * Requirements: * - `recipient` cannot be the zero address. - the caller must have a balance of at least `amount`." - }, - "transferFrom(address,address,uint256)": { - "details": "See {IERC20-transferFrom}. * Emits an {Approval} event indicating the updated allowance. This is not required by the EIP. See the note at the beginning of {ERC20}; * Requirements: - `sender` and `recipient` cannot be the zero address. - `sender` must have a balance of at least `amount`. - the caller must have allowance for `sender`'s tokens of at least `amount`." - } - }, - "title": "KEEP Token" - }, - "userdoc": { - "methods": { - "approveAndCall(address,uint256,bytes)": { - "notice": "Set allowance for other address and notify. Allows `_spender` to spend no more than `_value` tokens on your behalf and then ping the contract about it." - } - } - } -} diff --git a/external/sepolia/KeepTokenStaking.json b/external/sepolia/KeepTokenStaking.json deleted file mode 100644 index dfbab92d..00000000 --- a/external/sepolia/KeepTokenStaking.json +++ /dev/null @@ -1,41590 +0,0 @@ -{ - "contractName": "TokenStaking", - "abi": [ - { - "inputs": [ - { - "internalType": "contract ERC20Burnable", - "name": "_token", - "type": "address" - }, - { - "internalType": "contract TokenGrant", - "name": "_tokenGrant", - "type": "address" - }, - { - "internalType": "contract TokenStakingEscrow", - "name": "_escrow", - "type": "address" - }, - { - "internalType": "contract KeepRegistry", - "name": "_registry", - "type": "address" - }, - { - "internalType": "uint256", - "name": "_initializationPeriod", - "type": "uint256" - } - ], - "payable": false, - "stateMutability": "nonpayable", - "type": "constructor" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "operator", - "type": "address" - }, - { - "indexed": false, - "internalType": "address", - "name": "lockCreator", - "type": "address" - } - ], - "name": "ExpiredLockReleased", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "operator", - "type": "address" - }, - { - "indexed": false, - "internalType": "address", - "name": "lockCreator", - "type": "address" - } - ], - "name": "LockReleased", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "operator", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "beneficiary", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "authorizer", - "type": "address" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "value", - "type": "uint256" - } - ], - "name": "OperatorStaked", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "address", - "name": "operator", - "type": "address" - } - ], - "name": "RecoveredStake", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "owner", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "operator", - "type": "address" - } - ], - "name": "StakeDelegated", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "operator", - "type": "address" - }, - { - "indexed": false, - "internalType": "address", - "name": "lockCreator", - "type": "address" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "until", - "type": "uint256" - } - ], - "name": "StakeLocked", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "operator", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "newOwner", - "type": "address" - } - ], - "name": "StakeOwnershipTransferred", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "operator", - "type": "address" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "amount", - "type": "uint256" - } - ], - "name": "TokensSeized", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "operator", - "type": "address" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "amount", - "type": "uint256" - } - ], - "name": "TokensSlashed", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "operator", - "type": "address" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "newAmount", - "type": "uint256" - } - ], - "name": "TopUpCompleted", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "operator", - "type": "address" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "topUp", - "type": "uint256" - } - ], - "name": "TopUpInitiated", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "operator", - "type": "address" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "undelegatedAt", - "type": "uint256" - } - ], - "name": "Undelegated", - "type": "event" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "_operator", - "type": "address" - }, - { - "internalType": "address", - "name": "_operatorContract", - "type": "address" - } - ], - "name": "authorizeOperatorContract", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "internalType": "address", - "name": "_operator", - "type": "address" - } - ], - "name": "authorizerOf", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "internalType": "address", - "name": "_address", - "type": "address" - } - ], - "name": "balanceOf", - "outputs": [ - { - "internalType": "uint256", - "name": "balance", - "type": "uint256" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "internalType": "address", - "name": "_operator", - "type": "address" - } - ], - "name": "beneficiaryOf", - "outputs": [ - { - "internalType": "address payable", - "name": "", - "type": "address" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "delegatedAuthoritySource", - "type": "address" - } - ], - "name": "claimDelegatedAuthority", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "deployedAt", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "internalType": "address", - "name": "operatorContract", - "type": "address" - } - ], - "name": "getAuthoritySource", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "initializationPeriod", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "internalType": "address", - "name": "_operatorContract", - "type": "address" - } - ], - "name": "isApprovedOperatorContract", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "internalType": "address", - "name": "_operator", - "type": "address" - }, - { - "internalType": "address", - "name": "_operatorContract", - "type": "address" - } - ], - "name": "isAuthorizedForOperator", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "internalType": "address", - "name": "_operator", - "type": "address" - } - ], - "name": "ownerOf", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "minimumStake", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "undelegationPeriod", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "_from", - "type": "address" - }, - { - "internalType": "uint256", - "name": "_value", - "type": "uint256" - }, - { - "internalType": "address", - "name": "_token", - "type": "address" - }, - { - "internalType": "bytes", - "name": "_extraData", - "type": "bytes" - } - ], - "name": "receiveApproval", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "_operator", - "type": "address" - } - ], - "name": "commitTopUp", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "_operator", - "type": "address" - } - ], - "name": "cancelStake", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "_operator", - "type": "address" - } - ], - "name": "undelegate", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "_operator", - "type": "address" - }, - { - "internalType": "uint256", - "name": "_undelegationTimestamp", - "type": "uint256" - } - ], - "name": "undelegateAt", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "_operator", - "type": "address" - } - ], - "name": "recoverStake", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "internalType": "address", - "name": "_operator", - "type": "address" - } - ], - "name": "getDelegationInfo", - "outputs": [ - { - "internalType": "uint256", - "name": "amount", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "createdAt", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "undelegatedAt", - "type": "uint256" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "operator", - "type": "address" - }, - { - "internalType": "uint256", - "name": "duration", - "type": "uint256" - } - ], - "name": "lockStake", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "operator", - "type": "address" - } - ], - "name": "unlockStake", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "operator", - "type": "address" - }, - { - "internalType": "address", - "name": "operatorContract", - "type": "address" - } - ], - "name": "releaseExpiredLock", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "internalType": "address", - "name": "operator", - "type": "address" - } - ], - "name": "isStakeLocked", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "internalType": "address", - "name": "operator", - "type": "address" - } - ], - "name": "getLocks", - "outputs": [ - { - "internalType": "address[]", - "name": "creators", - "type": "address[]" - }, - { - "internalType": "uint256[]", - "name": "expirations", - "type": "uint256[]" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "uint256", - "name": "amountToSlash", - "type": "uint256" - }, - { - "internalType": "address[]", - "name": "misbehavedOperators", - "type": "address[]" - } - ], - "name": "slash", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "uint256", - "name": "amountToSeize", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "rewardMultiplier", - "type": "uint256" - }, - { - "internalType": "address", - "name": "tattletale", - "type": "address" - }, - { - "internalType": "address[]", - "name": "misbehavedOperators", - "type": "address[]" - } - ], - "name": "seize", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "internalType": "address", - "name": "operator", - "type": "address" - }, - { - "internalType": "address", - "name": "newOwner", - "type": "address" - } - ], - "name": "transferStakeOwnership", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "internalType": "address", - "name": "_operator", - "type": "address" - }, - { - "internalType": "address", - "name": "_operatorContract", - "type": "address" - } - ], - "name": "eligibleStake", - "outputs": [ - { - "internalType": "uint256", - "name": "balance", - "type": "uint256" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "internalType": "address", - "name": "_operator", - "type": "address" - }, - { - "internalType": "address", - "name": "_operatorContract", - "type": "address" - } - ], - "name": "activeStake", - "outputs": [ - { - "internalType": "uint256", - "name": "balance", - "type": "uint256" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "internalType": "address", - "name": "staker", - "type": "address" - }, - { - "internalType": "address", - "name": "operatorContract", - "type": "address" - } - ], - "name": "hasMinimumStake", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - } - ], - "metadata": "{\"compiler\":{\"version\":\"0.5.17+commit.d19bba13\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract ERC20Burnable\",\"name\":\"_token\",\"type\":\"address\"},{\"internalType\":\"contract TokenGrant\",\"name\":\"_tokenGrant\",\"type\":\"address\"},{\"internalType\":\"contract TokenStakingEscrow\",\"name\":\"_escrow\",\"type\":\"address\"},{\"internalType\":\"contract KeepRegistry\",\"name\":\"_registry\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_initializationPeriod\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"lockCreator\",\"type\":\"address\"}],\"name\":\"ExpiredLockReleased\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"lockCreator\",\"type\":\"address\"}],\"name\":\"LockReleased\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"beneficiary\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"authorizer\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"OperatorStaked\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"RecoveredStake\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"StakeDelegated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"lockCreator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"until\",\"type\":\"uint256\"}],\"name\":\"StakeLocked\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"StakeOwnershipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"TokensSeized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"TokensSlashed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"newAmount\",\"type\":\"uint256\"}],\"name\":\"TopUpCompleted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"topUp\",\"type\":\"uint256\"}],\"name\":\"TopUpInitiated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"undelegatedAt\",\"type\":\"uint256\"}],\"name\":\"Undelegated\",\"type\":\"event\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"_operator\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_operatorContract\",\"type\":\"address\"}],\"name\":\"activeStake\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"_operator\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_operatorContract\",\"type\":\"address\"}],\"name\":\"authorizeOperatorContract\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"_operator\",\"type\":\"address\"}],\"name\":\"authorizerOf\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"_address\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"_operator\",\"type\":\"address\"}],\"name\":\"beneficiaryOf\",\"outputs\":[{\"internalType\":\"address payable\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"_operator\",\"type\":\"address\"}],\"name\":\"cancelStake\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"delegatedAuthoritySource\",\"type\":\"address\"}],\"name\":\"claimDelegatedAuthority\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"_operator\",\"type\":\"address\"}],\"name\":\"commitTopUp\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"deployedAt\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"_operator\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_operatorContract\",\"type\":\"address\"}],\"name\":\"eligibleStake\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"operatorContract\",\"type\":\"address\"}],\"name\":\"getAuthoritySource\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"_operator\",\"type\":\"address\"}],\"name\":\"getDelegationInfo\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"createdAt\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"undelegatedAt\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"getLocks\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"creators\",\"type\":\"address[]\"},{\"internalType\":\"uint256[]\",\"name\":\"expirations\",\"type\":\"uint256[]\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"staker\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"operatorContract\",\"type\":\"address\"}],\"name\":\"hasMinimumStake\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"initializationPeriod\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"_operatorContract\",\"type\":\"address\"}],\"name\":\"isApprovedOperatorContract\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"_operator\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_operatorContract\",\"type\":\"address\"}],\"name\":\"isAuthorizedForOperator\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"isStakeLocked\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"duration\",\"type\":\"uint256\"}],\"name\":\"lockStake\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"minimumStake\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"_operator\",\"type\":\"address\"}],\"name\":\"ownerOf\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"_from\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_value\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_token\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"_extraData\",\"type\":\"bytes\"}],\"name\":\"receiveApproval\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"_operator\",\"type\":\"address\"}],\"name\":\"recoverStake\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"operatorContract\",\"type\":\"address\"}],\"name\":\"releaseExpiredLock\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountToSeize\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"rewardMultiplier\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"tattletale\",\"type\":\"address\"},{\"internalType\":\"address[]\",\"name\":\"misbehavedOperators\",\"type\":\"address[]\"}],\"name\":\"seize\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountToSlash\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"misbehavedOperators\",\"type\":\"address[]\"}],\"name\":\"slash\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferStakeOwnership\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"_operator\",\"type\":\"address\"}],\"name\":\"undelegate\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"_operator\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_undelegationTimestamp\",\"type\":\"uint256\"}],\"name\":\"undelegateAt\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"undelegationPeriod\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"unlockStake\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"methods\":{\"activeStake(address,address)\":{\"params\":{\"_operator\":\"address of stake operator.\",\"_operatorContract\":\"address of operator contract.\"},\"return\":\"an uint256 representing the eligible stake balance.\"},\"authorizeOperatorContract(address,address)\":{\"params\":{\"_operator\":\"address of stake operator.\",\"_operatorContract\":\"address of operator contract.\"}},\"authorizerOf(address)\":{\"return\":\"Authorizer address.\"},\"balanceOf(address)\":{\"params\":{\"_address\":\"The address to query the balance of.\"},\"return\":\"An uint256 representing the amount staked by the passed address.\"},\"beneficiaryOf(address)\":{\"return\":\"Beneficiary address.\"},\"cancelStake(address)\":{\"params\":{\"_operator\":\"Address of the stake operator.\"}},\"claimDelegatedAuthority(address)\":{\"details\":\"If `delegatedAuthoritySource` is an approved operator contract and recognizes the claimant, this relationship will be recorded in `delegatedAuthority`. Later, the claimant can slash, seize, place locks etc. on operators that have authorized the `delegatedAuthoritySource`. If the `delegatedAuthoritySource` is disabled with the panic button, any recipients of delegated authority from it will also be disabled.\"},\"commitTopUp(address)\":{\"params\":{\"_operator\":\"The operator with a pending top-up that is getting committed.\"}},\"constructor\":{\"params\":{\"_escrow\":\"Escrow dedicated for this staking contract.\",\"_initializationPeriod\":\"To avoid certain attacks on work selection, recently created operators must wait for a specific period of time before being eligible for work selection.\",\"_registry\":\"Keep contract registry contract.\",\"_token\":\"KEEP token contract.\",\"_tokenGrant\":\"KEEP token grant contract.\"}},\"eligibleStake(address,address)\":{\"params\":{\"_operator\":\"address of stake operator.\",\"_operatorContract\":\"address of operator contract.\"},\"return\":\"an uint256 representing the eligible stake balance.\"},\"getDelegationInfo(address)\":{\"params\":{\"_operator\":\"Operator address.\"},\"return\":\"amount The amount of tokens the given operator delegated.createdAt The time when the stake has been delegated.undelegatedAt The time when undelegation has been requested. If undelegation has not been requested, 0 is returned.\"},\"getLocks(address)\":{\"return\":\"creators The addresses of operator contracts that have placed a lock on the operator.expirations The expiration times of the locks placed on the operator.\"},\"hasMinimumStake(address,address)\":{\"params\":{\"operatorContract\":\"Operator contract's address\",\"staker\":\"Staker's address\"},\"return\":\"True if has enough active stake to participate in the network, false otherwise.\"},\"isApprovedOperatorContract(address)\":{\"params\":{\"_operatorContract\":\"address of operator contract.\"},\"return\":\"True if operator contract is approved, false if operator contract has not been approved or if it was disabled by the panic button.\"},\"isAuthorizedForOperator(address,address)\":{\"params\":{\"_operator\":\"address of stake operator.\",\"_operatorContract\":\"address of operator contract.\"}},\"lockStake(address,uint256)\":{\"params\":{\"duration\":\"Lock duration in seconds.\",\"operator\":\"Operator address.\"}},\"ownerOf(address)\":{\"return\":\"Stake owner address.\"},\"receiveApproval(address,uint256,address,bytes)\":{\"details\":\"Requires that the provided token contract be the same one linked to this contract.\",\"params\":{\"_extraData\":\"Data for stake delegation. This byte array must have the following values concatenated: - Beneficiary address (20 bytes), ignored for a top-up - Operator address (20 bytes) - Authorizer address (20 bytes), ignored for a top-up - Grant ID (32 bytes) - required only when called by TokenStakingEscrow\",\"_from\":\"The owner of the tokens who approved them to transfer.\",\"_token\":\"Token contract address.\",\"_value\":\"Approved amount for the transfer and stake.\"}},\"recoverStake(address)\":{\"params\":{\"_operator\":\"Operator address.\"}},\"releaseExpiredLock(address,address)\":{\"details\":\"Necessary for removing locks placed by contracts that have been disabled by the panic button. Also applicable to prevent inadvertent DoS of `recoverStake` if too many operator contracts have failed to clean up their locks.\"},\"seize(uint256,uint256,address,address[])\":{\"params\":{\"amountToSeize\":\"Token amount to seize from every misbehaved operator.\",\"misbehavedOperators\":\"Array of addresses to seize the tokens from.\",\"rewardMultiplier\":\"Reward adjustment in percentage. Min 1% and 100% max.\",\"tattletale\":\"Address to receive the 5% reward.\"}},\"slash(uint256,address[])\":{\"params\":{\"amountToSlash\":\"Token amount to slash from every misbehaved operator.\",\"misbehavedOperators\":\"Array of addresses to seize the tokens from.\"}},\"transferStakeOwnership(address,address)\":{\"params\":{\"newOwner\":\"Address of the new staking relationship owner.\",\"operator\":\"Address of the stake operator.\"}},\"undelegate(address)\":{\"params\":{\"_operator\":\"Address of the stake operator.\"}},\"undelegateAt(address,uint256)\":{\"params\":{\"_operator\":\"Address of the stake operator.\",\"_undelegationTimestamp\":\"The timestamp undelegation is to start at.\"}},\"unlockStake(address)\":{\"details\":\"Only for operator contracts. To remove expired or disabled locks, use `releaseExpiredLocks`. The authorization check ensures that the caller must have been able to place a lock on the operator sometime in the past. We don't need to check for current approval status of the caller because unlocking stake cannot harm the operator nor interfere with other operator contracts. Therefore even disabled operator contracts may freely unlock stake.\",\"params\":{\"operator\":\"Operator address.\"}}},\"title\":\"TokenStaking\"},\"userdoc\":{\"methods\":{\"activeStake(address,address)\":{\"notice\":\"Gets the active stake balance of the specified address. An active stake is a stake that passed the initialization period, and may be in the process of undelegation but has not been released yet, either because the undelegation period is not over, or because the operator contract has an active lock on the operator. Also, the operator had to approve the specified operator contract. /// The difference between eligible stake is that active stake does not make the operator eligible for work selection but it may be still finishing earlier work until the stake is released. Operator with a minimum required amount of active stake can join the network but cannot be selected to any new work. \"},\"authorizeOperatorContract(address,address)\":{\"notice\":\"Authorizes operator contract to access staked token balance of the provided operator. Can only be executed by stake operator authorizer. Contracts using delegated authority cannot be authorized with `authorizeOperatorContract`. Instead, authorize `getAuthoritySource(_operatorContract)`.\"},\"authorizerOf(address)\":{\"notice\":\"Gets the authorizer for the specified operator address.\"},\"balanceOf(address)\":{\"notice\":\"Gets the stake balance of the specified address.\"},\"beneficiaryOf(address)\":{\"notice\":\"Gets the beneficiary for the specified operator address.\"},\"cancelStake(address)\":{\"notice\":\"Cancels stake of tokens within the operator initialization period without being subjected to the token lockup for the undelegation period. This can be used to undo mistaken delegation to the wrong operator address.\"},\"claimDelegatedAuthority(address)\":{\"notice\":\"Grant the sender the same authority as `delegatedAuthoritySource`\"},\"commitTopUp(address)\":{\"notice\":\"Commits pending top-up for the provided operator. If the top-up did not pass the initialization period, the function fails.\"},\"constructor\":\"Creates a token staking contract for a provided Standard ERC20Burnable token.\",\"eligibleStake(address,address)\":{\"notice\":\"Gets the eligible stake balance of the specified address. An eligible stake is a stake that passed the initialization period and is not currently undelegating. Also, the operator had to approve the specified operator contract. /// Operator with a minimum required amount of eligible stake can join the network and participate in new work selection. \"},\"getAuthoritySource(address)\":{\"notice\":\"Get the source of the operator contract's authority. If the contract uses delegated authority, returns the original source of the delegated authority. If the contract doesn't use delegated authority, returns the contract itself. Authorize `getAuthoritySource(operatorContract)` to grant `operatorContract` the authority to penalize an operator.\"},\"getDelegationInfo(address)\":{\"notice\":\"Gets stake delegation info for the given operator.\"},\"getLocks(address)\":{\"notice\":\"Get the locks placed on the operator.\"},\"hasMinimumStake(address,address)\":{\"notice\":\"Checks if the specified account has enough active stake to become network operator and that the specified operator contract has been authorized for potential slashing. /// Having the required minimum of active stake makes the operator eligible to join the network. If the active stake is not currently undelegating, operator is also eligible for work selection. \"},\"isApprovedOperatorContract(address)\":{\"notice\":\"Checks if the operator contract is authorized in the registry. If the contract uses delegated authority it checks authorization of the source contract.\"},\"isAuthorizedForOperator(address,address)\":{\"notice\":\"Checks if operator contract has access to the staked token balance of the provided operator.\"},\"isStakeLocked(address)\":{\"notice\":\"Check whether the operator has any active locks that haven't expired yet and whose creators aren't disabled by the panic button.\"},\"lockStake(address,uint256)\":{\"notice\":\"Locks given operator stake for the specified duration. Locked stake may not be recovered until the lock expires or is released, even if the normal undelegation period has passed. Only previously authorized operator contract can lock the stake.\"},\"minimumStake()\":{\"notice\":\"Returns minimum amount of KEEP that allows sMPC cluster client to participate in the Keep network. Expressed as number with 18-decimal places. Initial minimum stake is higher than the final and lowered periodically based on the amount of steps and the length of the minimum stake schedule in seconds.\"},\"ownerOf(address)\":{\"notice\":\"Gets the stake owner for the specified operator address.\"},\"receiveApproval(address,uint256,address,bytes)\":{\"notice\":\"Receives approval of token transfer and stakes the approved amount or adds the approved amount to an existing delegation (a \\u201ctop-up\\u201d). In case of a top-up, it is expected that the operator stake is not undelegated and that the top-up is performed from the same source of tokens as the initial delegation. That is, if the tokens were delegated from a grant, top-up has to be performed from the same grant. If the delegation was done using liquid tokens, only liquid tokens from the same owner can be used to top-up the stake. Top-up can not be cancelled so it is important to be careful with the amount of KEEP added to the stake.\"},\"recoverStake(address)\":{\"notice\":\"Recovers staked tokens and transfers them back to the owner. Recovering tokens can only be performed when the operator finished undelegating.\"},\"releaseExpiredLock(address,address)\":{\"notice\":\"Removes the lock of the specified operator contract if the lock has expired or the contract has been disabled.\"},\"seize(uint256,uint256,address,address[])\":{\"notice\":\"Seize provided token amount from every member in the misbehaved operators array. The tattletale is rewarded with 5% of the total seized amount scaled by the reward adjustment parameter and the rest 95% is burned.\"},\"slash(uint256,address[])\":{\"notice\":\"Slash provided token amount from every member in the misbehaved operators array and burn 100% of all the tokens.\"},\"transferStakeOwnership(address,address)\":{\"notice\":\"Allows the current staking relationship owner to transfer the ownership to someone else.\"},\"undelegate(address)\":{\"notice\":\"Undelegates staked tokens. You will be able to recover your stake by calling `recoverStake()` with operator address once undelegation period is over.\"},\"undelegateAt(address,uint256)\":{\"notice\":\"Set an undelegation time for staked tokens. Undelegation will begin at the specified timestamp. You will be able to recover your stake by calling `recoverStake()` with operator address once undelegation period is over.\"},\"undelegationPeriod()\":{\"notice\":\"Returns the current value of the undelegation period. The staking contract guarantees that an undelegated operator\\u2019s stakes will stay locked for a period of time after undelegation, and thus available as collateral for any work the operator is engaged in. The undelegation period is two weeks for the first two months and two months after that.\"},\"unlockStake(address)\":{\"notice\":\"Removes a lock the caller had previously placed on the operator.\"}},\"notice\":\"A token staking contract for a specified standard ERC20Burnable token. A holder of the specified token can stake delegate its tokens to this contract and recover the stake after undelegation period is over.\"}},\"settings\":{\"compilationTarget\":{\"project:/contracts/TokenStaking.sol\":\"TokenStaking\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"openzeppelin-solidity/contracts/GSN/Context.sol\":{\"keccak256\":\"0x90a3995645af7562d84b9d69363ffa5ae7217714ab61e951bf7bc450f40e4061\",\"urls\":[\"bzz-raw://216ef9d6b614db4eb46970b4e84903f2534a45572dd30a79f0041f1a5830f436\",\"dweb:/ipfs/QmNPrJ4MWKUAWzKXpUqeyKRUfosaoANZAqXgvepdrCwZAG\"]},\"openzeppelin-solidity/contracts/math/SafeMath.sol\":{\"keccak256\":\"0x640b6dee7a4b830bdfd52b5031a07fc2b12209f5b2e29e5d364a7d37f69d8076\",\"urls\":[\"bzz-raw://31113152e1ddb78fe7a4197f247591ca894e93f916867beb708d8e747b6cc74f\",\"dweb:/ipfs/QmbZaJyXdpsYGykVhHH9qpVGQg9DGCxE2QufbCUy3daTgq\"]},\"openzeppelin-solidity/contracts/ownership/Ownable.sol\":{\"keccak256\":\"0xecd8ab29d9a5771c3964d0cd1788c4a5098a0081b20fb275da850a22b1c59806\",\"urls\":[\"bzz-raw://696a75bc2c55407ce8251ccc7d19ecb1b7b2be1796a160a6524312babcc7e3d4\",\"dweb:/ipfs/QmQViKEp3y99h9uhRssE29TmjBKRnFMaoz3eJZ4eggggg2\"]},\"openzeppelin-solidity/contracts/token/ERC20/ERC20.sol\":{\"keccak256\":\"0x65a4078c03875c25413a068ce9cfdd7e68a90f8786612d1189c89341e6e3b802\",\"urls\":[\"bzz-raw://45c0d95495b944fbb1aa09d900b0ab530903a432125ab8fddfa05064a7988991\",\"dweb:/ipfs/Qma2VeknkKA1THeubGzshWFk44BktXkXP1UKp9Un2uDSsu\"]},\"openzeppelin-solidity/contracts/token/ERC20/ERC20Burnable.sol\":{\"keccak256\":\"0x9b94356691f3cbf90a5d83ae3fdf6a5a662bb004d2bd8b034160d60221807e64\",\"urls\":[\"bzz-raw://14a9d33db455302b8bb9fdb28998efefbe5a1cb41b29e31391609f646b2ab351\",\"dweb:/ipfs/Qmd4wFr6GEMZnnxgXeq3gmp7cs8tqDuHp3TVNhCbjnux2V\"]},\"openzeppelin-solidity/contracts/token/ERC20/ERC20Detailed.sol\":{\"keccak256\":\"0x4a3a810b7ebe742e897e1fd428b3eeed2196d3acea58eaf9c566ed10d545d2ed\",\"urls\":[\"bzz-raw://28d03f328e19e4099d5013de0649afaeaabac1a614e130767ab1cb4aca9775b6\",\"dweb:/ipfs/Qmb9iW7yNuYehB2NfhRMs9TakqbLVQhBhmGMkaDZ5g1Eb4\"]},\"openzeppelin-solidity/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xe5bb0f57cff3e299f360052ba50f1ea0fff046df2be070b6943e0e3c3fdad8a9\",\"urls\":[\"bzz-raw://59fd025151435da35faa8093a5c7a17de02de9d08ad27275c5cdf05050820d91\",\"dweb:/ipfs/QmQMvwEcPhoRXzbXyrdoeRtvLoifUW9Qh7Luho7bmUPRkc\"]},\"openzeppelin-solidity/contracts/token/ERC20/SafeERC20.sol\":{\"keccak256\":\"0x6f2c9955d65c522b80f4b8792f076512d2df947d2112cbc4d98a4781ed42ede2\",\"urls\":[\"bzz-raw://7d8ec81683520c06baeef3f7e06cd82bd6fd5fa611f26857f475f6c829540aff\",\"dweb:/ipfs/QmTDkFzKnrpiV1UKnSoiZAHPuguWzokrr4pFbSPvyaSo56\"]},\"openzeppelin-solidity/contracts/utils/Address.sol\":{\"keccak256\":\"0x70df50e240407aa50915ad14f61b1a901fa335b37de20955b99ed647be756af0\",\"urls\":[\"bzz-raw://9404711f3206610c08ea97fa52c7b6b4d2e9d536e96fc4b7210aa7e24f796c36\",\"dweb:/ipfs/QmZDzpVzjoap13SuPEq5pVCrmdjoKVZnTsQPLKXAbynTTW\"]},\"project:/contracts/Authorizations.sol\":{\"keccak256\":\"0x340bb3d18b59fde20dce41ecd5128d891f871a274f8384a89f14754cd293c3cf\",\"urls\":[\"bzz-raw://b9084255d117f6f6307247a0bebc87387a2e5c7a7eec420ff976736ab9417af4\",\"dweb:/ipfs/QmZ7tx4ued84cXNmi7mmvaEAhcpNCWeisiivnbM4aSHeFw\"]},\"project:/contracts/GrantStakingPolicy.sol\":{\"keccak256\":\"0x433e1f5c70af09ca1b9fac5e602be3ffec7e8e50b34b07f5141bd14e8cca0674\",\"urls\":[\"bzz-raw://d0b4ad0aa3c174856ca32c3ffd7685141873b9549f941894cca8118b5ae99275\",\"dweb:/ipfs/QmdMA1csXSSQHmnsSQs2tmeDJ6zdoKdyD2EneKJfM9VtRj\"]},\"project:/contracts/KeepRegistry.sol\":{\"keccak256\":\"0xbc0e44a838bae38c1d11db28b5bfcfdfd79394d423ce6fd85dcb90a6420e1f10\",\"urls\":[\"bzz-raw://74b140b3a4547cc742785c613e2927bc3592e71f0f42eff5112462a9985083cb\",\"dweb:/ipfs/QmQLsNVWAcgHhtoJAfiXjipYaksfLpcoaa45c2LvRh9hfg\"]},\"project:/contracts/KeepToken.sol\":{\"keccak256\":\"0x42abcd9c9c67d8d83b91a01e42abde3355b3a67fb7c510d7d8b63b5e23d3defe\",\"urls\":[\"bzz-raw://ef26e4ad4042c74e230a343f9e69c2d142b581e4a2c7ee27ec51a1f7e9f91a68\",\"dweb:/ipfs/QmfJ9cEpzj2WQ5upvizC16pthvC2vQP8geFeUATFb4ov2G\"]},\"project:/contracts/ManagedGrant.sol\":{\"keccak256\":\"0x3f0f6e2107f6154a619b02dbc694c9e3341005dd0879a10e7f105d2a540a1158\",\"urls\":[\"bzz-raw://f6559e8ad8bea87d1d7a1f333935c8e42d7979e2de47f1a34a7cb7121f35f021\",\"dweb:/ipfs/QmSKdVqS9AiEQ2UjtpPGnz3UBgaVA6enGadZHjqsxaSnHj\"]},\"project:/contracts/StakeDelegatable.sol\":{\"keccak256\":\"0x328b20a9f89222294dd8aaff19097bcbe427e211f7e8006ffb107d5813ce7522\",\"urls\":[\"bzz-raw://65316b2733aa23fac341170a9d668a78ddef663d59c7fa6aa68ad4b1c98c3e03\",\"dweb:/ipfs/QmShjVArh35v93n5erjbZMxHnBcctNS3tkgd1jRqTNWaEA\"]},\"project:/contracts/TokenGrant.sol\":{\"keccak256\":\"0x8aa80561282a5e4eeb3de864e7d3425314f45442c7aa8af3ba8991f13de8f3fe\",\"urls\":[\"bzz-raw://e7d993377146c0fa2b494cbb03120e781d5b50f08866b542bcb483f2bf7f607e\",\"dweb:/ipfs/QmR4MWgYhyZRhQZfgqEL2yd2FebgLx9Nabr9mGwRU5hzPz\"]},\"project:/contracts/TokenGrantStake.sol\":{\"keccak256\":\"0x55f16cd0566659da7db27f136f13db4d5b9be5d970ae481caf50ae1066339758\",\"urls\":[\"bzz-raw://289afc90c055062a781434e4a15adec36e22a85caf6a0f923d44dbdccab3abad\",\"dweb:/ipfs/Qme5dAkEGG5gkydFsCAKURU7a4PGKwwEL4iutBpoJyEqFX\"]},\"project:/contracts/TokenSender.sol\":{\"keccak256\":\"0xd2209f6cb3122bf4b6367ff80dcd24a108885e37fd86a87d127467c5782ae12f\",\"urls\":[\"bzz-raw://c0496338c50a4e29eea1702780b7887418f5df4a251c3512308f109187a20d71\",\"dweb:/ipfs/QmP6seRmXzSf59g8iAFEvbwmtcQyU4x8H523auAM9KhujG\"]},\"project:/contracts/TokenStaking.sol\":{\"keccak256\":\"0x285142cb59dea7e8ed3291eee412e49522bab77108805e24cadbf7bc4cac5966\",\"urls\":[\"bzz-raw://e046efc9d63d925b77d01be60d7f75b755ab1dc2c84c44a17198dc748debef6f\",\"dweb:/ipfs/QmNc2X9Cby4T1LzHCELKhfS6qe33wgXgLzWzssGyDGJ99R\"]},\"project:/contracts/TokenStakingEscrow.sol\":{\"keccak256\":\"0x046fc3b328b1b9ecb8a85b595dcdc5a1519ffcf1c49e72d8ffab675b29fa7ef6\",\"urls\":[\"bzz-raw://36c5ea56265974bcf13ecb6cf7425169f71d287754436ecbea6f1ef8344dfe3e\",\"dweb:/ipfs/QmVkeiBXzEMpPuGoer9n2JWoxV7DHjkVPfYsF5Nh4uPqTM\"]},\"project:/contracts/libraries/RolesLookup.sol\":{\"keccak256\":\"0x3f5750a8cf219f35fc5d2233c4db2812083f8e53949b315b44ad342c70bec4c7\",\"urls\":[\"bzz-raw://47a0350004b4fc99bf22c07684129665111512603fd167bd87da91bd027a87b7\",\"dweb:/ipfs/Qmd6EfqiMrg4xbrQcs1Zk6aZ4YW1d1egfrXfr45HVUoXaR\"]},\"project:/contracts/libraries/grant/UnlockingSchedule.sol\":{\"keccak256\":\"0xf1704afe7ae23810b02ec5f64a752a2217dcc6a03d0be6422372a3b106156e69\",\"urls\":[\"bzz-raw://4792dee0044b1748d80e083387911f417e0367001a5aa649b7e59a2e7507a8d5\",\"dweb:/ipfs/QmWNgFNmFUiRQvKCEiyJed8wCF8GzmMw315GrhPGsMWetw\"]},\"project:/contracts/libraries/staking/GrantStaking.sol\":{\"keccak256\":\"0x281e5716582e26b3c4ee63aad71f130c2b9b40be94a337826872b45daf4c0afe\",\"urls\":[\"bzz-raw://4e17a1ca3b362f303bdc09205db719e8e49b5a49e17ac576a0ab310f07fa63b6\",\"dweb:/ipfs/QmcvQHF1mUuMiwfBM3op55zmYuJCpffCU3yT7pUax7yjyh\"]},\"project:/contracts/libraries/staking/LockUtils.sol\":{\"keccak256\":\"0x8bde6802329174c60343acdb2ac9914a05a7bc7c1c0ce4e981d3f797f6190dab\",\"urls\":[\"bzz-raw://1c847315d4a132e7363b3eba918ea7e44921a65e82580e61885400d921cbd8d3\",\"dweb:/ipfs/Qmdg7ECyE3r4Q1n3fQWFtBJvMDMj6kvzKQMpPCGfQFwNnP\"]},\"project:/contracts/libraries/staking/Locks.sol\":{\"keccak256\":\"0x60c93b4a1964e06087ddb6ebd6e20b80728e24cc24956a952eb7d1267be45fe0\",\"urls\":[\"bzz-raw://912540915aaa83a10be70b22b9f67197e63df48fcb60a4c92819da628a1844e5\",\"dweb:/ipfs/QmeYjotXEQruDqZCxh7tUhfLM34Bvq6n2gbGVsd7aaQbaG\"]},\"project:/contracts/libraries/staking/MinimumStakeSchedule.sol\":{\"keccak256\":\"0xf99053f84873f54d036ebffac7245aa899227ef3673ed1b9dc86bde6add76fbf\",\"urls\":[\"bzz-raw://1f8bc44e7058fbbc9410495651dce3b358834022ae0fd2c66824e404cbbe0b17\",\"dweb:/ipfs/QmV3csHqadQ5gdQiFRUSP64t8a11q8Znbr8Szstm7hiN1G\"]},\"project:/contracts/libraries/staking/TopUps.sol\":{\"keccak256\":\"0x2454e61ed5f91ec7d086cc5555ce50e5b402cb3a96e19480840ceb51ea5c6a00\",\"urls\":[\"bzz-raw://37e118f637389cefb040c241c3af268b4a9847ac86ca455c6fa59effd2925ad7\",\"dweb:/ipfs/QmdWwcDwXpREsx15mGqMmu9z64gqAbvaY1PN1j6mG578XR\"]},\"project:/contracts/utils/AddressArrayUtils.sol\":{\"keccak256\":\"0x4f05678830599afa325ec43ac007f6a17e66037a66d258cb46294bfcf4572dcd\",\"urls\":[\"bzz-raw://1704df5b46bb2868337bfaaf6472eba5466b60d1963495c0683cb4b062e1565f\",\"dweb:/ipfs/QmVVN4uF8dzGsGYAvtqJF3Ut8Ssfmx4LGGhksT1Gr3JV4i\"]},\"project:/contracts/utils/BytesLib.sol\":{\"keccak256\":\"0xad3f2453f490e1f74fcb3c278f82e26e75f074eaeaa023168c687d96f0b35b9d\",\"urls\":[\"bzz-raw://001f36244a08a9f306415c25b0812bd0a37389e878fbad3a682d59301d9da0c8\",\"dweb:/ipfs/QmXurBXY19xmJKL6ABDqwn6BKwuBgW2qxiM6V58EHB5s3s\"]},\"project:/contracts/utils/OperatorParams.sol\":{\"keccak256\":\"0xba9b216c249d6c30081b23ec0322104ce729b9c51adc8fd8c80a38dba09461b0\",\"urls\":[\"bzz-raw://a8602b066c13018255a685a77aa637eb91305d30f856a20efd3bd9d1dbcffed2\",\"dweb:/ipfs/QmRYxLLEgN5p2MLp29DGYFq3J3BYhV2RiZC2dahVgkcmfD\"]},\"project:/contracts/utils/PercentUtils.sol\":{\"keccak256\":\"0x696b15997a739e6c47c5bc29e1f9023998bb188405221a6b337377bca4ab3f68\",\"urls\":[\"bzz-raw://e93e2287fe6b6e1c5cc45ebc92b9d682e19a5b1302e00cb037391da753282bbf\",\"dweb:/ipfs/QmRXmEopRWNaL7mvY5nTyNNob3EPHF67R6Nxhm3F4VsDoo\"]}},\"version\":1}", - "bytecode": "0x60806040523480156200001157600080fd5b5060405162005f6c38038062005f6c833981810160405260a08110156200003757600080fd5b8101908080519060200190929190805190602001909291908051906020019092919080519060200190929190805190602001909291905050508180600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505084600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555083600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555082600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600581905550426004819055505050505050615d9280620001da6000396000f3fe608060405234801561001057600080fd5b50600436106101e55760003560e01c80639557e0bb1161010f578063e064172e116100a2578063f165478311610071578063f165478314610d58578063fab46d6614610dbc578063fb1677b114610e22578063fdd1f98614610ea6576101e5565b8063e064172e14610c5c578063eae4c19f14610ca0578063ec5ffac214610cbe578063ef1f966114610cdc576101e5565b8063ba7bffd3116100de578063ba7bffd314610aac578063cbe945dc14610b30578063d98f233d14610bb4578063da8be86414610c18576101e5565b80639557e0bb1461095a578063a590ae36146109d2578063aed1ec7214610a16578063afff33ef14610a34576101e5565b80635139a6c511610187578063719f308911610156578063719f30891461065657806384d57689146107375780638e49aa7a146107935780638f4ffcb114610855576101e5565b80635139a6c514610528578063525835f9146105765780635fce5b17146105ba57806370a08231146105fe576101e5565b806320018d27116101c357806320018d27146103d657806321e1625e1461043a578063335e91a1146104885780634a1ce599146104e4576101e5565b806309055e90146101ea57806310a63ec0146102d657806314afd79e14610352575b600080fd5b6102d46004803603608081101561020057600080fd5b810190808035906020019092919080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019064010000000081111561025157600080fd5b82018360208201111561026357600080fd5b8035906020019184602083028401116401000000008311171561028557600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f820116905080830192505050505050509192919290505050610ec4565b005b610338600480360360408110156102ec57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611487565b604051808215151515815260200191505060405180910390f35b6103946004803603602081101561036857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506114a5565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610438600480360360408110156103ec57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611511565b005b6104866004803603604081101561045057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506116f3565b005b6104ca6004803603602081101561049e57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506119d5565b604051808215151515815260200191505060405180910390f35b610526600480360360208110156104fa57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611ad3565b005b6105746004803603604081101561053e57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611bf0565b005b6105b86004803603602081101561058c57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061209c565b005b6105fc600480360360208110156105d057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061246a565b005b6106406004803603602081101561061457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506125c8565b6040518082815260200191505060405180910390f35b6106986004803603602081101561066c57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061261c565b604051808060200180602001838103835285818151815260200191508051906020019060200280838360005b838110156106df5780820151818401526020810190506106c4565b50505050905001838103825284818151815260200191508051906020019060200280838360005b83811015610721578082015181840152602081019050610706565b5050505090500194505050505060405180910390f35b6107796004803603602081101561074d57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612816565b604051808215151515815260200191505060405180910390f35b610853600480360360408110156107a957600080fd5b8101908080359060200190929190803590602001906401000000008111156107d057600080fd5b8201836020820111156107e257600080fd5b8035906020019184602083028401116401000000008311171561080457600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f820116905080830192505050505050509192919290505050612901565b005b6109586004803603608081101561086b57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001906401000000008111156108d257600080fd5b8201836020820111156108e457600080fd5b8035906020019184600183028401116401000000008311171561090657600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290505050612e38565b005b6109bc6004803603604081101561097057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050613052565b6040518082815260200191505060405180910390f35b610a14600480360360208110156109e857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506130e1565b005b610a1e61330b565b6040518082815260200191505060405180910390f35b610a9660048036036040811015610a4a57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050613311565b6040518082815260200191505060405180910390f35b610aee60048036036020811015610ac257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061339e565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610b7260048036036020811015610b4657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061340a565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610c1660048036036040811015610bca57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506134bf565b005b610c5a60048036036020811015610c2e57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506135c9565b005b610c9e60048036036020811015610c7257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506135d6565b005b610ca861396d565b6040518082815260200191505060405180910390f35b610cc6613973565b6040518082815260200191505060405180910390f35b610d3e60048036036040811015610cf257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050613987565b604051808215151515815260200191505060405180910390f35b610dba60048036036040811015610d6e57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050613a22565b005b610dfe60048036036020811015610dd257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050613c89565b60405180848152602001838152602001828152602001935050505060405180910390f35b610e6460048036036020811015610e3857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050613ce6565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610eae613d52565b6040518082815260200191505060405180910390f35b33610ece81612816565b610f40576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601c8152602001807f4f70657261746f7220636f6e747261637420756e617070726f7665640000000081525060200191505060405180910390fd5b600080610f4c3361340a565b905060008090505b8451811015611366576000858281518110610f6b57fe5b602002602001015190506000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16611070576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600e8152602001807f4e6f7420617574686f72697a656400000000000000000000000000000000000081525060200191505060405180910390fd5b6000600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000015490506110c081613d85565b611132576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600e8152602001807f496e616374697665207374616b6500000000000000000000000000000000000081525060200191505060405180910390fd5b61113d828233613dad565b156111b0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260118152602001807f5374616b652069732072656c656173656400000000000000000000000000000081525060200191505060405180910390fd5b60006111bb82613ebe565b90508a811015611287576111d88187613ed890919063ffffffff16565b95506111ee600083613f6090919063ffffffff16565b600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001819055508273ffffffffffffffffffffffffffffffffffffffff167fc5c18d4a60510957a4dc6dbd6d40ecfcfa32ab9517528a6b4052729e48e183d3826040518082815260200191505060405180910390a2611356565b61129a8b87613ed890919063ffffffff16565b95506112c16112b28c83613f8590919063ffffffff16565b83613f6090919063ffffffff16565b600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001819055508273ffffffffffffffffffffffffffffffffffffffff167fc5c18d4a60510957a4dc6dbd6d40ecfcfa32ab9517528a6b4052729e48e183d38c6040518082815260200191505060405180910390a25b5050508080600101915050610f54565b50600061138f87611381600586613fcf90919063ffffffff16565b613fcf90919063ffffffff16565b90506113de8682600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16613fff9092919063ffffffff16565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166342966c6861142f8386613f8590919063ffffffff16565b6040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b15801561146557600080fd5b505af1158015611479573d6000803e3d6000fd5b505050505050505050505050565b6000611491613973565b61149b8484613052565b1015905092915050565b6000600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611614576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600e8152602001807f4e6f7420617574686f72697a656400000000000000000000000000000000000081525060200191505060405180910390fd5b80600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f53c9cc0a3dd0a95beb5f7bf6f604aecacd38455e718ebce597fb058856166fef60405160405180910390a35050565b336116fd81612816565b61176f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601c8152602001807f4f70657261746f7220636f6e747261637420756e617070726f7665640000000081525060200191505060405180910390fd5b6117798333613987565b6117eb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600e8152602001807f4e6f7420617574686f72697a656400000000000000000000000000000000000081525060200191505060405180910390fd5b6000600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154905061183b81613d85565b6118ad576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600e8152602001807f496e616374697665207374616b6500000000000000000000000000000000000081525060200191505060405180910390fd5b6118b6816140d0565b15611929576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f556e64656c65676174696e67207374616b65000000000000000000000000000081525060200191505060405180910390fd5b600a73__Locks_________________________________63f5d13cd0909186866040518463ffffffff1660e01b8152600401808481526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001828152602001935050505060006040518083038186803b1580156119b757600080fd5b505af41580156119cb573d6000803e3d6000fd5b5050505050505050565b6000600a73__Locks_________________________________6361e15686909184306040518463ffffffff1660e01b8152600401808481526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001935050505060206040518083038186803b158015611a9157600080fd5b505af4158015611aa5573d6000803e3d6000fd5b505050506040513d6020811015611abb57600080fd5b81019080805190602001909291905050509050919050565b611add8133613987565b611b4f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600e8152602001807f4e6f7420617574686f72697a656400000000000000000000000000000000000081525060200191505060405180910390fd5b600a73__Locks_________________________________63075e89949091836040518363ffffffff1660e01b8152600401808381526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019250505060006040518083038186803b158015611bd557600080fd5b505af4158015611be9573d6000803e3d6000fd5b5050505050565b8173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480611cb75750600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b80611dd55750600973__GrantStaking__________________________63283338ed909184600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518463ffffffff1660e01b8152600401808481526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001935050505060206040518083038186803b158015611d9957600080fd5b505af4158015611dad573d6000803e3d6000fd5b505050506040513d6020811015611dc357600080fd5b81019080805190602001909291905050505b611e47576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600e8152602001807f4e6f7420617574686f72697a656400000000000000000000000000000000000081525060200191505060405180910390fd5b6000600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001549050428210158015611eb95750611eb6600554611ea8836140f6565b613ed890919063ffffffff16565b82115b611f2b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260118152602001807f496e76616c69642074696d657374616d7000000000000000000000000000000081525060200191505060405180910390fd5b6000611f368261410d565b90506000811480611f4657508281115b80611f7d57508373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614155b611fef576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260198152602001807f4f70657261746f72206d6179206e6f7420706f7374706f6e650000000000000081525060200191505060405180910390fd5b612002838361412090919063ffffffff16565b600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001819055508373ffffffffffffffffffffffffffffffffffffffff167f4ae68879209bc4b489a38251122202a3653305e3d95a27baf7a5681410c90b38846040518082815260200191505060405180910390a250505050565b6000600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154905060006120ee8261410d565b1415612162576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600f8152602001807f4e6f7420756e64656c656761746564000000000000000000000000000000000081525060200191505060405180910390fd5b61216b81614145565b6121dd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f5374696c6c20756e64656c65676174696e67000000000000000000000000000081525060200191505060405180910390fd5b6121e6826119d5565b15612259576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600c8152602001807f4c6f636b6564207374616b65000000000000000000000000000000000000000081525060200191505060405180910390fd5b600061226482613ebe565b9050612339600b73__TopUps________________________________63b171f47b9091866040518363ffffffff1660e01b8152600401808381526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019250505060206040518083038186803b1580156122ef57600080fd5b505af4158015612303573d6000803e3d6000fd5b505050506040513d602081101561231957600080fd5b810190808051906020019092919050505082613ed890919063ffffffff16565b905061234f600083613f6090919063ffffffff16565b600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000181905550612402600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168483614184565b7fd8d7d3f648c98e58aaabbb17253dc4a04c610cf9d36f0a42400015b56d74107283604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a1505050565b600b73__TopUps________________________________6360be99f8909183600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001546005546040518563ffffffff1660e01b8152600401808581526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200183815260200182815260200194505050505060206040518083038186803b15801561254457600080fd5b505af4158015612558573d6000803e3d6000fd5b505050506040513d602081101561256e57600080fd5b8101908080519060200190929190505050600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000018190555050565b6000612615600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154613ebe565b9050919050565b606080600a73__Locks_________________________________637b5e35e19091856040518363ffffffff1660e01b8152600401808381526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019250505060006040518083038186803b1580156126a557600080fd5b505af41580156126b9573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f8201168201806040525060408110156126e357600080fd5b810190808051604051939291908464010000000082111561270357600080fd5b8382019150602082018581111561271957600080fd5b825186602082028301116401000000008211171561273657600080fd5b8083526020830192505050908051906020019060200280838360005b8381101561276d578082015181840152602081019050612752565b505050509050016040526020018051604051939291908464010000000082111561279657600080fd5b838201915060208201858111156127ac57600080fd5b82518660208202830111640100000000821117156127c957600080fd5b8083526020830192505050908051906020019060200280838360005b838110156128005780820151818401526020810190506127e5565b5050505090500160405250505091509150915091565b6000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166384d5768961285f8461340a565b6040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b1580156128bf57600080fd5b505afa1580156128d3573d6000803e3d6000fd5b505050506040513d60208110156128e957600080fd5b81019080805190602001909291905050509050919050565b3361290b81612816565b61297d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601c8152602001807f4f70657261746f7220636f6e747261637420756e617070726f7665640000000081525060200191505060405180910390fd5b6000806129893361340a565b905060008090505b8451811015612da35760008582815181106129a857fe5b602002602001015190506000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16612aad576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600e8152602001807f4e6f7420617574686f72697a656400000000000000000000000000000000000081525060200191505060405180910390fd5b6000600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001549050612afd81613d85565b612b6f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600e8152602001807f496e616374697665207374616b6500000000000000000000000000000000000081525060200191505060405180910390fd5b612b7a828233613dad565b15612bed576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260118152602001807f5374616b652069732072656c656173656400000000000000000000000000000081525060200191505060405180910390fd5b6000612bf882613ebe565b905088811015612cc457612c158187613ed890919063ffffffff16565b9550612c2b600083613f6090919063ffffffff16565b600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001819055508273ffffffffffffffffffffffffffffffffffffffff167ff71d4eeef63c86ffc692e306c623b01b8373e091da8ee455aa0fe26305a4981c826040518082815260200191505060405180910390a2612d93565b612cd78987613ed890919063ffffffff16565b9550612cfe612cef8a83613f8590919063ffffffff16565b83613f6090919063ffffffff16565b600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001819055508273ffffffffffffffffffffffffffffffffffffffff167ff71d4eeef63c86ffc692e306c623b01b8373e091da8ee455aa0fe26305a4981c8a6040518082815260200191505060405180910390a25b5050508080600101915050612991565b50600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166342966c68836040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b158015612e1957600080fd5b505af1158015612e2d573d6000803e3d6000fd5b505050505050505050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614612efb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f556e7265636f676e697a656420746f6b656e000000000000000000000000000081525060200191505060405180910390fd5b603c81511015612f73576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260198152602001807f436f727275707465642064656c65676174696f6e20646174610000000000000081525060200191505060405180910390fd5b612fc2843085600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16614505909392919063ffffffff16565b6000612fd860148361460b90919063ffffffff16565b90506000613027600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001546140f6565b141561303e576130398585838561469e565b61304b565b61304a85858385614bd1565b5b5050505050565b600080600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000015490506130a48484613987565b80156130b557506130b481613d85565b5b80156130c957506130c7848285613dad565b155b156130da576130d781613ebe565b91505b5092915050565b806130eb81612816565b61315d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601c8152602001807f4f70657261746f7220636f6e747261637420756e617070726f7665640000000081525060200191505060405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff1663d870c034336040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b1580156131dc57600080fd5b505af11580156131f0573d6000803e3d6000fd5b505050506040513d602081101561320657600080fd5b8101908080519060200190929190505050613289576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260158152602001807f556e7265636f676e697a656420636c61696d616e74000000000000000000000081525060200191505060405180910390fd5b81600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b60055481565b600080600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000015490506133638484613987565b8015613374575061337381613d85565b5b80156133865750613384816140d0565b155b156133975761339481613ebe565b91505b5092915050565b6000600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060020160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b600080600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156134ad57829150506134ba565b6134b68161340a565b9150505b919050565b600a73__Locks_________________________________6318bc8f0190918484306040518563ffffffff1660e01b8152600401808581526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200194505050505060006040518083038186803b1580156135ad57600080fd5b505af41580156135c1573d6000803e3d6000fd5b505050505050565b6135d38142611bf0565b50565b6000600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614806136a257508173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b806137c05750600973__GrantStaking__________________________63283338ed909184600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518463ffffffff1660e01b8152600401808481526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001935050505060206040518083038186803b15801561378457600080fd5b505af4158015613798573d6000803e3d6000fd5b505050506040513d60208110156137ae57600080fd5b81019080805190602001909291905050505b613832576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600e8152602001807f4e6f7420617574686f72697a656400000000000000000000000000000000000081525060200191505060405180910390fd5b6000600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154905061388281613d85565b156138f5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260118152602001807f496e697469616c697a6564207374616b6500000000000000000000000000000081525060200191505060405180910390fd5b600061390082613ebe565b9050613916600083613f6090919063ffffffff16565b600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000181905550613967838583614184565b50505050565b60045481565b6000613982635ea79a7e615616565b905090565b60008060006139958461340a565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b80613a2c81612816565b613a9e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601c8152602001807f4f70657261746f7220636f6e747261637420756e617070726f7665640000000081525060200191505060405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff16613abe84613ce6565b73ffffffffffffffffffffffffffffffffffffffff1614613b47576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260178152602001807f4e6f74206f70657261746f7220617574686f72697a657200000000000000000081525060200191505060405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff16613b678361340a565b73ffffffffffffffffffffffffffffffffffffffff1614613bf0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260188152602001807f44656c65676174656420617574686f726974792075736564000000000000000081525060200191505060405180910390fd5b60016000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550505050565b6000806000613cd9600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001546156c1565b9250925092509193909250565b6000600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060030160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b6000613d6c624f1a00600454613ed890919063ffffffff16565b4210613d7b57624f1a00613d80565b621275005b905090565b6000613da4600554613d96846140f6565b613ed890919063ffffffff16565b42119050919050565b6000613db883614145565b8015613eb55750600a73__Locks_________________________________63d4224f9a909186856040518463ffffffff1660e01b8152600401808481526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001935050505060206040518083038186803b158015613e7957600080fd5b505af4158015613e8d573d6000803e3d6000fd5b505050506040513d6020811015613ea357600080fd5b81019080805190602001909291905050505b90509392505050565b60006001608060020a03604060020283901c169050919050565b600080828401905083811015613f56576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b6000613f7d82613f6f856140f6565b613f788661410d565b6156ee565b905092915050565b6000613fc783836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250615805565b905092915050565b6000613ff76064613fe984866158c590919063ffffffff16565b61594b90919063ffffffff16565b905092915050565b6140cb838473ffffffffffffffffffffffffffffffffffffffff1663a9059cbb905060e01b8484604051602401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050615995565b505050565b6000806140dc8361410d565b9050600081141580156140ee57508042115b915050919050565b60006001604060020a03604083901c169050919050565b60006001604060020a0382169050919050565b600061413d61412e84613ebe565b614137856140f6565b846156ee565b905092915050565b6000806141518361410d565b90506000811415801561417c575061417961416a613d52565b82613ed890919063ffffffff16565b42115b915050919050565b600973__GrantStaking__________________________63ae4ae2db9091846040518363ffffffff1660e01b8152600401808381526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019250505060206040518083038186803b15801561420a57600080fd5b505af415801561421e573d6000803e3d6000fd5b505050506040513d602081101561423457600080fd5b8101908080519060200190929190505050156144b257600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663cae9ca51600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168385600973__GrantStaking__________________________63548756ca9091896040518363ffffffff1660e01b8152600401808381526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019250505060206040518083038186803b15801561433357600080fd5b505af4158015614347573d6000803e3d6000fd5b505050506040513d602081101561435d57600080fd5b8101908080519060200190929190505050604051602001808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001828152602001925050506040516020818303038152906040526040518463ffffffff1660e01b8152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b8381101561444757808201518184015260208101905061442c565b50505050905090810190601f1680156144745780820380516001836020036101000a031916815260200191505b50945050505050600060405180830381600087803b15801561449557600080fd5b505af11580156144a9573d6000803e3d6000fd5b50505050614500565b6144ff8382600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16613fff9092919063ffffffff16565b5b505050565b614605848573ffffffffffffffffffffffffffffffffffffffff166323b872dd905060e01b858585604051602401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050615995565b50505050565b6000806014830190508281118015614624575080845110155b614679576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526021815260200180615cf26021913960400191505060405180910390fd5b60006c0100000000000000000000000084602087010151049050809250505092915050565b6146a6613973565b83101561471b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f4c657373207468616e20746865206d696e696d756d207374616b65000000000081525060200191505060405180910390fd5b600061473160008361460b90919063ffffffff16565b9050600061474960288461460b90919063ffffffff16565b90506040518060800160405280614762874260006156ee565b81526020018773ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff16815250600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000820151816000015560208201518160010160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060408201518160020160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060608201518160030160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550905050600973__GrantStaking__________________________63adb3e4c59091600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168a89896040518763ffffffff1660e01b8152600401808781526020018673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200180602001828103825283818151815260200191508051906020019080838360005b83811015614a5e578082015181840152602081019050614a43565b50505050905090810190601f168015614a8b5780820380516001836020036101000a031916815260200191505b50975050505050505050604080518083038186803b158015614aac57600080fd5b505af4158015614ac0573d6000803e3d6000fd5b505050506040513d6040811015614ad657600080fd5b81019080805190602001909291908051906020019092919050505050508373ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167f83455714d30de40b1396056e44480074130d2ac0a2a7bd7cb1dfcd6d619e172460405160405180910390a38073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167f175a298cbf37645403c82164f78783abb2869a97657c362fe979817d3184cc51886040518082815260200191505060405180910390a4505050505050565b60008473ffffffffffffffffffffffffffffffffffffffff16600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632496bfb3856040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015614c8957600080fd5b505afa158015614c9d573d6000803e3d6000fd5b505050506040513d6020811015614cb357600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff161480614d3357508473ffffffffffffffffffffffffffffffffffffffff16600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16145b9050600973__GrantStaking__________________________63ae4ae2db9091856040518363ffffffff1660e01b8152600401808381526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019250505060206040518083038186803b158015614dbb57600080fd5b505af4158015614dcf573d6000803e3d6000fd5b505050506040513d6020811015614de557600080fd5b8101908080519060200190929190505050156151cb5780614e6e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f4d7573742062652066726f6d2061206772616e7400000000000000000000000081525060200191505060405180910390fd5b6000600973__GrantStaking__________________________63548756ca9091866040518363ffffffff1660e01b8152600401808381526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019250505060206040518083038186803b158015614ef657600080fd5b505af4158015614f0a573d6000803e3d6000fd5b505050506040513d6020811015614f2057600080fd5b810190808051906020019092919050505090506000600973__GrantStaking__________________________63adb3e4c59091600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168b8a8a6040518763ffffffff1660e01b8152600401808781526020018673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200180602001828103825283818151815260200191508051906020019080838360005b838110156150b957808201518184015260208101905061509e565b50505050905090810190601f1680156150e65780820380516001836020036101000a031916815260200191505b50975050505050505050604080518083038186803b15801561510757600080fd5b505af415801561511b573d6000803e3d6000fd5b505050506040513d604081101561513157600080fd5b8101908080519060200190929190805190602001909291905050509150508181146151c4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f4e6f74207468652073616d65206772616e74000000000000000000000000000081525060200191505060405180910390fd5b5050615343565b801561523f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260188152602001807f4d757374206e6f742062652066726f6d2061206772616e74000000000000000081525060200191505060405180910390fd5b8473ffffffffffffffffffffffffffffffffffffffff16600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614615342576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f4e6f74207468652073616d65206f776e6572000000000000000000000000000081525060200191505060405180910390fd5b5b6000600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154905061539381613d85565b61550957600b73__TopUps________________________________63fea2b7189091878785600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518663ffffffff1660e01b8152600401808681526020018581526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018381526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019550505050505060206040518083038186803b15801561548357600080fd5b505af4158015615497573d6000803e3d6000fd5b505050506040513d60208110156154ad57600080fd5b8101908080519060200190929190505050600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000018190555061560e565b600b73__TopUps________________________________63fd9a58f29091878785600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518663ffffffff1660e01b8152600401808681526020018581526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018381526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019550505050505060006040518083038186803b1580156155f557600080fd5b505af4158015615609573d6000803e3d6000fd5b505050505b505050505050565b600061562f6303c2670083613ed890919063ffffffff16565b4210156156ae5760006156746303c267006156666156568642613f8590919063ffffffff16565b600a6158c590919063ffffffff16565b61594b90919063ffffffff16565b90506156a661568d82600a613f8590919063ffffffff16565b69021e19e0c9bab24000006158c590919063ffffffff16565b9150506156bc565b69021e19e0c9bab240000090505b919050565b60008060006156cf84613ebe565b92506156da846140f6565b91506156e58461410d565b90509193909250565b60006001608060020a0384111561576d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260108152602001807f75696e74313238206f766572666c6f770000000000000000000000000000000081525060200191505060405180910390fd5b6001604060020a0382841711156157ec576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600f8152602001807f75696e743634206f766572666c6f77000000000000000000000000000000000081525060200191505060405180910390fd5b81604084901b604060020286901b171790509392505050565b60008383111582906158b2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561587757808201518184015260208101905061585c565b50505050905090810190601f1680156158a45780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385039050809150509392505050565b6000808314156158d85760009050615945565b60008284029050828482816158e957fe5b0414615940576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526021815260200180615d136021913960400191505060405180910390fd5b809150505b92915050565b600061598d83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250615be0565b905092915050565b6159b48273ffffffffffffffffffffffffffffffffffffffff16615ca6565b615a26576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e74726163740081525060200191505060405180910390fd5b600060608373ffffffffffffffffffffffffffffffffffffffff16836040518082805190602001908083835b60208310615a755780518252602082019150602081019050602083039250615a52565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114615ad7576040519150601f19603f3d011682016040523d82523d6000602084013e615adc565b606091505b509150915081615b54576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c656481525060200191505060405180910390fd5b600081511115615bda57808060200190516020811015615b7357600080fd5b8101908080519060200190929190505050615bd9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a815260200180615d34602a913960400191505060405180910390fd5b5b50505050565b60008083118290615c8c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015615c51578082015181840152602081019050615c36565b50505050905090810190601f168015615c7e5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b506000838581615c9857fe5b049050809150509392505050565b60008060007fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47060001b9050833f91506000801b8214158015615ce85750808214155b9250505091905056fe4164647265737320636f6e76657273696f6e206f7574206f6620626f756e64732e536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f775361666545524332303a204552433230206f7065726174696f6e20646964206e6f742073756363656564a265627a7a72315820a53415a466c1329c0dce2f58f65f6948e1ec4a6c1c647d3a33615b313bd8757a64736f6c63430005110032", - "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106101e55760003560e01c80639557e0bb1161010f578063e064172e116100a2578063f165478311610071578063f165478314610d58578063fab46d6614610dbc578063fb1677b114610e22578063fdd1f98614610ea6576101e5565b8063e064172e14610c5c578063eae4c19f14610ca0578063ec5ffac214610cbe578063ef1f966114610cdc576101e5565b8063ba7bffd3116100de578063ba7bffd314610aac578063cbe945dc14610b30578063d98f233d14610bb4578063da8be86414610c18576101e5565b80639557e0bb1461095a578063a590ae36146109d2578063aed1ec7214610a16578063afff33ef14610a34576101e5565b80635139a6c511610187578063719f308911610156578063719f30891461065657806384d57689146107375780638e49aa7a146107935780638f4ffcb114610855576101e5565b80635139a6c514610528578063525835f9146105765780635fce5b17146105ba57806370a08231146105fe576101e5565b806320018d27116101c357806320018d27146103d657806321e1625e1461043a578063335e91a1146104885780634a1ce599146104e4576101e5565b806309055e90146101ea57806310a63ec0146102d657806314afd79e14610352575b600080fd5b6102d46004803603608081101561020057600080fd5b810190808035906020019092919080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019064010000000081111561025157600080fd5b82018360208201111561026357600080fd5b8035906020019184602083028401116401000000008311171561028557600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f820116905080830192505050505050509192919290505050610ec4565b005b610338600480360360408110156102ec57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611487565b604051808215151515815260200191505060405180910390f35b6103946004803603602081101561036857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506114a5565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610438600480360360408110156103ec57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611511565b005b6104866004803603604081101561045057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506116f3565b005b6104ca6004803603602081101561049e57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506119d5565b604051808215151515815260200191505060405180910390f35b610526600480360360208110156104fa57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611ad3565b005b6105746004803603604081101561053e57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611bf0565b005b6105b86004803603602081101561058c57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061209c565b005b6105fc600480360360208110156105d057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061246a565b005b6106406004803603602081101561061457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506125c8565b6040518082815260200191505060405180910390f35b6106986004803603602081101561066c57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061261c565b604051808060200180602001838103835285818151815260200191508051906020019060200280838360005b838110156106df5780820151818401526020810190506106c4565b50505050905001838103825284818151815260200191508051906020019060200280838360005b83811015610721578082015181840152602081019050610706565b5050505090500194505050505060405180910390f35b6107796004803603602081101561074d57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612816565b604051808215151515815260200191505060405180910390f35b610853600480360360408110156107a957600080fd5b8101908080359060200190929190803590602001906401000000008111156107d057600080fd5b8201836020820111156107e257600080fd5b8035906020019184602083028401116401000000008311171561080457600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f820116905080830192505050505050509192919290505050612901565b005b6109586004803603608081101561086b57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001906401000000008111156108d257600080fd5b8201836020820111156108e457600080fd5b8035906020019184600183028401116401000000008311171561090657600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290505050612e38565b005b6109bc6004803603604081101561097057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050613052565b6040518082815260200191505060405180910390f35b610a14600480360360208110156109e857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506130e1565b005b610a1e61330b565b6040518082815260200191505060405180910390f35b610a9660048036036040811015610a4a57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050613311565b6040518082815260200191505060405180910390f35b610aee60048036036020811015610ac257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061339e565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610b7260048036036020811015610b4657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061340a565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610c1660048036036040811015610bca57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506134bf565b005b610c5a60048036036020811015610c2e57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506135c9565b005b610c9e60048036036020811015610c7257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506135d6565b005b610ca861396d565b6040518082815260200191505060405180910390f35b610cc6613973565b6040518082815260200191505060405180910390f35b610d3e60048036036040811015610cf257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050613987565b604051808215151515815260200191505060405180910390f35b610dba60048036036040811015610d6e57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050613a22565b005b610dfe60048036036020811015610dd257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050613c89565b60405180848152602001838152602001828152602001935050505060405180910390f35b610e6460048036036020811015610e3857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050613ce6565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610eae613d52565b6040518082815260200191505060405180910390f35b33610ece81612816565b610f40576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601c8152602001807f4f70657261746f7220636f6e747261637420756e617070726f7665640000000081525060200191505060405180910390fd5b600080610f4c3361340a565b905060008090505b8451811015611366576000858281518110610f6b57fe5b602002602001015190506000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16611070576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600e8152602001807f4e6f7420617574686f72697a656400000000000000000000000000000000000081525060200191505060405180910390fd5b6000600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000015490506110c081613d85565b611132576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600e8152602001807f496e616374697665207374616b6500000000000000000000000000000000000081525060200191505060405180910390fd5b61113d828233613dad565b156111b0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260118152602001807f5374616b652069732072656c656173656400000000000000000000000000000081525060200191505060405180910390fd5b60006111bb82613ebe565b90508a811015611287576111d88187613ed890919063ffffffff16565b95506111ee600083613f6090919063ffffffff16565b600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001819055508273ffffffffffffffffffffffffffffffffffffffff167fc5c18d4a60510957a4dc6dbd6d40ecfcfa32ab9517528a6b4052729e48e183d3826040518082815260200191505060405180910390a2611356565b61129a8b87613ed890919063ffffffff16565b95506112c16112b28c83613f8590919063ffffffff16565b83613f6090919063ffffffff16565b600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001819055508273ffffffffffffffffffffffffffffffffffffffff167fc5c18d4a60510957a4dc6dbd6d40ecfcfa32ab9517528a6b4052729e48e183d38c6040518082815260200191505060405180910390a25b5050508080600101915050610f54565b50600061138f87611381600586613fcf90919063ffffffff16565b613fcf90919063ffffffff16565b90506113de8682600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16613fff9092919063ffffffff16565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166342966c6861142f8386613f8590919063ffffffff16565b6040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b15801561146557600080fd5b505af1158015611479573d6000803e3d6000fd5b505050505050505050505050565b6000611491613973565b61149b8484613052565b1015905092915050565b6000600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611614576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600e8152602001807f4e6f7420617574686f72697a656400000000000000000000000000000000000081525060200191505060405180910390fd5b80600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f53c9cc0a3dd0a95beb5f7bf6f604aecacd38455e718ebce597fb058856166fef60405160405180910390a35050565b336116fd81612816565b61176f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601c8152602001807f4f70657261746f7220636f6e747261637420756e617070726f7665640000000081525060200191505060405180910390fd5b6117798333613987565b6117eb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600e8152602001807f4e6f7420617574686f72697a656400000000000000000000000000000000000081525060200191505060405180910390fd5b6000600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154905061183b81613d85565b6118ad576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600e8152602001807f496e616374697665207374616b6500000000000000000000000000000000000081525060200191505060405180910390fd5b6118b6816140d0565b15611929576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f556e64656c65676174696e67207374616b65000000000000000000000000000081525060200191505060405180910390fd5b600a73__Locks_________________________________63f5d13cd0909186866040518463ffffffff1660e01b8152600401808481526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001828152602001935050505060006040518083038186803b1580156119b757600080fd5b505af41580156119cb573d6000803e3d6000fd5b5050505050505050565b6000600a73__Locks_________________________________6361e15686909184306040518463ffffffff1660e01b8152600401808481526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001935050505060206040518083038186803b158015611a9157600080fd5b505af4158015611aa5573d6000803e3d6000fd5b505050506040513d6020811015611abb57600080fd5b81019080805190602001909291905050509050919050565b611add8133613987565b611b4f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600e8152602001807f4e6f7420617574686f72697a656400000000000000000000000000000000000081525060200191505060405180910390fd5b600a73__Locks_________________________________63075e89949091836040518363ffffffff1660e01b8152600401808381526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019250505060006040518083038186803b158015611bd557600080fd5b505af4158015611be9573d6000803e3d6000fd5b5050505050565b8173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480611cb75750600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b80611dd55750600973__GrantStaking__________________________63283338ed909184600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518463ffffffff1660e01b8152600401808481526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001935050505060206040518083038186803b158015611d9957600080fd5b505af4158015611dad573d6000803e3d6000fd5b505050506040513d6020811015611dc357600080fd5b81019080805190602001909291905050505b611e47576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600e8152602001807f4e6f7420617574686f72697a656400000000000000000000000000000000000081525060200191505060405180910390fd5b6000600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001549050428210158015611eb95750611eb6600554611ea8836140f6565b613ed890919063ffffffff16565b82115b611f2b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260118152602001807f496e76616c69642074696d657374616d7000000000000000000000000000000081525060200191505060405180910390fd5b6000611f368261410d565b90506000811480611f4657508281115b80611f7d57508373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614155b611fef576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260198152602001807f4f70657261746f72206d6179206e6f7420706f7374706f6e650000000000000081525060200191505060405180910390fd5b612002838361412090919063ffffffff16565b600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001819055508373ffffffffffffffffffffffffffffffffffffffff167f4ae68879209bc4b489a38251122202a3653305e3d95a27baf7a5681410c90b38846040518082815260200191505060405180910390a250505050565b6000600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154905060006120ee8261410d565b1415612162576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600f8152602001807f4e6f7420756e64656c656761746564000000000000000000000000000000000081525060200191505060405180910390fd5b61216b81614145565b6121dd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f5374696c6c20756e64656c65676174696e67000000000000000000000000000081525060200191505060405180910390fd5b6121e6826119d5565b15612259576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600c8152602001807f4c6f636b6564207374616b65000000000000000000000000000000000000000081525060200191505060405180910390fd5b600061226482613ebe565b9050612339600b73__TopUps________________________________63b171f47b9091866040518363ffffffff1660e01b8152600401808381526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019250505060206040518083038186803b1580156122ef57600080fd5b505af4158015612303573d6000803e3d6000fd5b505050506040513d602081101561231957600080fd5b810190808051906020019092919050505082613ed890919063ffffffff16565b905061234f600083613f6090919063ffffffff16565b600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000181905550612402600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168483614184565b7fd8d7d3f648c98e58aaabbb17253dc4a04c610cf9d36f0a42400015b56d74107283604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a1505050565b600b73__TopUps________________________________6360be99f8909183600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001546005546040518563ffffffff1660e01b8152600401808581526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200183815260200182815260200194505050505060206040518083038186803b15801561254457600080fd5b505af4158015612558573d6000803e3d6000fd5b505050506040513d602081101561256e57600080fd5b8101908080519060200190929190505050600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000018190555050565b6000612615600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154613ebe565b9050919050565b606080600a73__Locks_________________________________637b5e35e19091856040518363ffffffff1660e01b8152600401808381526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019250505060006040518083038186803b1580156126a557600080fd5b505af41580156126b9573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f8201168201806040525060408110156126e357600080fd5b810190808051604051939291908464010000000082111561270357600080fd5b8382019150602082018581111561271957600080fd5b825186602082028301116401000000008211171561273657600080fd5b8083526020830192505050908051906020019060200280838360005b8381101561276d578082015181840152602081019050612752565b505050509050016040526020018051604051939291908464010000000082111561279657600080fd5b838201915060208201858111156127ac57600080fd5b82518660208202830111640100000000821117156127c957600080fd5b8083526020830192505050908051906020019060200280838360005b838110156128005780820151818401526020810190506127e5565b5050505090500160405250505091509150915091565b6000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166384d5768961285f8461340a565b6040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b1580156128bf57600080fd5b505afa1580156128d3573d6000803e3d6000fd5b505050506040513d60208110156128e957600080fd5b81019080805190602001909291905050509050919050565b3361290b81612816565b61297d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601c8152602001807f4f70657261746f7220636f6e747261637420756e617070726f7665640000000081525060200191505060405180910390fd5b6000806129893361340a565b905060008090505b8451811015612da35760008582815181106129a857fe5b602002602001015190506000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16612aad576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600e8152602001807f4e6f7420617574686f72697a656400000000000000000000000000000000000081525060200191505060405180910390fd5b6000600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001549050612afd81613d85565b612b6f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600e8152602001807f496e616374697665207374616b6500000000000000000000000000000000000081525060200191505060405180910390fd5b612b7a828233613dad565b15612bed576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260118152602001807f5374616b652069732072656c656173656400000000000000000000000000000081525060200191505060405180910390fd5b6000612bf882613ebe565b905088811015612cc457612c158187613ed890919063ffffffff16565b9550612c2b600083613f6090919063ffffffff16565b600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001819055508273ffffffffffffffffffffffffffffffffffffffff167ff71d4eeef63c86ffc692e306c623b01b8373e091da8ee455aa0fe26305a4981c826040518082815260200191505060405180910390a2612d93565b612cd78987613ed890919063ffffffff16565b9550612cfe612cef8a83613f8590919063ffffffff16565b83613f6090919063ffffffff16565b600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001819055508273ffffffffffffffffffffffffffffffffffffffff167ff71d4eeef63c86ffc692e306c623b01b8373e091da8ee455aa0fe26305a4981c8a6040518082815260200191505060405180910390a25b5050508080600101915050612991565b50600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166342966c68836040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b158015612e1957600080fd5b505af1158015612e2d573d6000803e3d6000fd5b505050505050505050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614612efb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f556e7265636f676e697a656420746f6b656e000000000000000000000000000081525060200191505060405180910390fd5b603c81511015612f73576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260198152602001807f436f727275707465642064656c65676174696f6e20646174610000000000000081525060200191505060405180910390fd5b612fc2843085600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16614505909392919063ffffffff16565b6000612fd860148361460b90919063ffffffff16565b90506000613027600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001546140f6565b141561303e576130398585838561469e565b61304b565b61304a85858385614bd1565b5b5050505050565b600080600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000015490506130a48484613987565b80156130b557506130b481613d85565b5b80156130c957506130c7848285613dad565b155b156130da576130d781613ebe565b91505b5092915050565b806130eb81612816565b61315d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601c8152602001807f4f70657261746f7220636f6e747261637420756e617070726f7665640000000081525060200191505060405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff1663d870c034336040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b1580156131dc57600080fd5b505af11580156131f0573d6000803e3d6000fd5b505050506040513d602081101561320657600080fd5b8101908080519060200190929190505050613289576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260158152602001807f556e7265636f676e697a656420636c61696d616e74000000000000000000000081525060200191505060405180910390fd5b81600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b60055481565b600080600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000015490506133638484613987565b8015613374575061337381613d85565b5b80156133865750613384816140d0565b155b156133975761339481613ebe565b91505b5092915050565b6000600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060020160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b600080600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156134ad57829150506134ba565b6134b68161340a565b9150505b919050565b600a73__Locks_________________________________6318bc8f0190918484306040518563ffffffff1660e01b8152600401808581526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200194505050505060006040518083038186803b1580156135ad57600080fd5b505af41580156135c1573d6000803e3d6000fd5b505050505050565b6135d38142611bf0565b50565b6000600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614806136a257508173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b806137c05750600973__GrantStaking__________________________63283338ed909184600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518463ffffffff1660e01b8152600401808481526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001935050505060206040518083038186803b15801561378457600080fd5b505af4158015613798573d6000803e3d6000fd5b505050506040513d60208110156137ae57600080fd5b81019080805190602001909291905050505b613832576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600e8152602001807f4e6f7420617574686f72697a656400000000000000000000000000000000000081525060200191505060405180910390fd5b6000600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154905061388281613d85565b156138f5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260118152602001807f496e697469616c697a6564207374616b6500000000000000000000000000000081525060200191505060405180910390fd5b600061390082613ebe565b9050613916600083613f6090919063ffffffff16565b600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000181905550613967838583614184565b50505050565b60045481565b6000613982635ea79a7e615616565b905090565b60008060006139958461340a565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b80613a2c81612816565b613a9e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601c8152602001807f4f70657261746f7220636f6e747261637420756e617070726f7665640000000081525060200191505060405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff16613abe84613ce6565b73ffffffffffffffffffffffffffffffffffffffff1614613b47576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260178152602001807f4e6f74206f70657261746f7220617574686f72697a657200000000000000000081525060200191505060405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff16613b678361340a565b73ffffffffffffffffffffffffffffffffffffffff1614613bf0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260188152602001807f44656c65676174656420617574686f726974792075736564000000000000000081525060200191505060405180910390fd5b60016000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550505050565b6000806000613cd9600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001546156c1565b9250925092509193909250565b6000600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060030160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b6000613d6c624f1a00600454613ed890919063ffffffff16565b4210613d7b57624f1a00613d80565b621275005b905090565b6000613da4600554613d96846140f6565b613ed890919063ffffffff16565b42119050919050565b6000613db883614145565b8015613eb55750600a73__Locks_________________________________63d4224f9a909186856040518463ffffffff1660e01b8152600401808481526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001935050505060206040518083038186803b158015613e7957600080fd5b505af4158015613e8d573d6000803e3d6000fd5b505050506040513d6020811015613ea357600080fd5b81019080805190602001909291905050505b90509392505050565b60006001608060020a03604060020283901c169050919050565b600080828401905083811015613f56576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b6000613f7d82613f6f856140f6565b613f788661410d565b6156ee565b905092915050565b6000613fc783836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250615805565b905092915050565b6000613ff76064613fe984866158c590919063ffffffff16565b61594b90919063ffffffff16565b905092915050565b6140cb838473ffffffffffffffffffffffffffffffffffffffff1663a9059cbb905060e01b8484604051602401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050615995565b505050565b6000806140dc8361410d565b9050600081141580156140ee57508042115b915050919050565b60006001604060020a03604083901c169050919050565b60006001604060020a0382169050919050565b600061413d61412e84613ebe565b614137856140f6565b846156ee565b905092915050565b6000806141518361410d565b90506000811415801561417c575061417961416a613d52565b82613ed890919063ffffffff16565b42115b915050919050565b600973__GrantStaking__________________________63ae4ae2db9091846040518363ffffffff1660e01b8152600401808381526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019250505060206040518083038186803b15801561420a57600080fd5b505af415801561421e573d6000803e3d6000fd5b505050506040513d602081101561423457600080fd5b8101908080519060200190929190505050156144b257600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663cae9ca51600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168385600973__GrantStaking__________________________63548756ca9091896040518363ffffffff1660e01b8152600401808381526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019250505060206040518083038186803b15801561433357600080fd5b505af4158015614347573d6000803e3d6000fd5b505050506040513d602081101561435d57600080fd5b8101908080519060200190929190505050604051602001808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001828152602001925050506040516020818303038152906040526040518463ffffffff1660e01b8152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b8381101561444757808201518184015260208101905061442c565b50505050905090810190601f1680156144745780820380516001836020036101000a031916815260200191505b50945050505050600060405180830381600087803b15801561449557600080fd5b505af11580156144a9573d6000803e3d6000fd5b50505050614500565b6144ff8382600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16613fff9092919063ffffffff16565b5b505050565b614605848573ffffffffffffffffffffffffffffffffffffffff166323b872dd905060e01b858585604051602401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050615995565b50505050565b6000806014830190508281118015614624575080845110155b614679576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526021815260200180615cf26021913960400191505060405180910390fd5b60006c0100000000000000000000000084602087010151049050809250505092915050565b6146a6613973565b83101561471b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f4c657373207468616e20746865206d696e696d756d207374616b65000000000081525060200191505060405180910390fd5b600061473160008361460b90919063ffffffff16565b9050600061474960288461460b90919063ffffffff16565b90506040518060800160405280614762874260006156ee565b81526020018773ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff16815250600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000820151816000015560208201518160010160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060408201518160020160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060608201518160030160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550905050600973__GrantStaking__________________________63adb3e4c59091600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168a89896040518763ffffffff1660e01b8152600401808781526020018673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200180602001828103825283818151815260200191508051906020019080838360005b83811015614a5e578082015181840152602081019050614a43565b50505050905090810190601f168015614a8b5780820380516001836020036101000a031916815260200191505b50975050505050505050604080518083038186803b158015614aac57600080fd5b505af4158015614ac0573d6000803e3d6000fd5b505050506040513d6040811015614ad657600080fd5b81019080805190602001909291908051906020019092919050505050508373ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167f83455714d30de40b1396056e44480074130d2ac0a2a7bd7cb1dfcd6d619e172460405160405180910390a38073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167f175a298cbf37645403c82164f78783abb2869a97657c362fe979817d3184cc51886040518082815260200191505060405180910390a4505050505050565b60008473ffffffffffffffffffffffffffffffffffffffff16600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632496bfb3856040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015614c8957600080fd5b505afa158015614c9d573d6000803e3d6000fd5b505050506040513d6020811015614cb357600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff161480614d3357508473ffffffffffffffffffffffffffffffffffffffff16600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16145b9050600973__GrantStaking__________________________63ae4ae2db9091856040518363ffffffff1660e01b8152600401808381526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019250505060206040518083038186803b158015614dbb57600080fd5b505af4158015614dcf573d6000803e3d6000fd5b505050506040513d6020811015614de557600080fd5b8101908080519060200190929190505050156151cb5780614e6e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f4d7573742062652066726f6d2061206772616e7400000000000000000000000081525060200191505060405180910390fd5b6000600973__GrantStaking__________________________63548756ca9091866040518363ffffffff1660e01b8152600401808381526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019250505060206040518083038186803b158015614ef657600080fd5b505af4158015614f0a573d6000803e3d6000fd5b505050506040513d6020811015614f2057600080fd5b810190808051906020019092919050505090506000600973__GrantStaking__________________________63adb3e4c59091600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168b8a8a6040518763ffffffff1660e01b8152600401808781526020018673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200180602001828103825283818151815260200191508051906020019080838360005b838110156150b957808201518184015260208101905061509e565b50505050905090810190601f1680156150e65780820380516001836020036101000a031916815260200191505b50975050505050505050604080518083038186803b15801561510757600080fd5b505af415801561511b573d6000803e3d6000fd5b505050506040513d604081101561513157600080fd5b8101908080519060200190929190805190602001909291905050509150508181146151c4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f4e6f74207468652073616d65206772616e74000000000000000000000000000081525060200191505060405180910390fd5b5050615343565b801561523f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260188152602001807f4d757374206e6f742062652066726f6d2061206772616e74000000000000000081525060200191505060405180910390fd5b8473ffffffffffffffffffffffffffffffffffffffff16600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614615342576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f4e6f74207468652073616d65206f776e6572000000000000000000000000000081525060200191505060405180910390fd5b5b6000600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154905061539381613d85565b61550957600b73__TopUps________________________________63fea2b7189091878785600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518663ffffffff1660e01b8152600401808681526020018581526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018381526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019550505050505060206040518083038186803b15801561548357600080fd5b505af4158015615497573d6000803e3d6000fd5b505050506040513d60208110156154ad57600080fd5b8101908080519060200190929190505050600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000018190555061560e565b600b73__TopUps________________________________63fd9a58f29091878785600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518663ffffffff1660e01b8152600401808681526020018581526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018381526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019550505050505060006040518083038186803b1580156155f557600080fd5b505af4158015615609573d6000803e3d6000fd5b505050505b505050505050565b600061562f6303c2670083613ed890919063ffffffff16565b4210156156ae5760006156746303c267006156666156568642613f8590919063ffffffff16565b600a6158c590919063ffffffff16565b61594b90919063ffffffff16565b90506156a661568d82600a613f8590919063ffffffff16565b69021e19e0c9bab24000006158c590919063ffffffff16565b9150506156bc565b69021e19e0c9bab240000090505b919050565b60008060006156cf84613ebe565b92506156da846140f6565b91506156e58461410d565b90509193909250565b60006001608060020a0384111561576d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260108152602001807f75696e74313238206f766572666c6f770000000000000000000000000000000081525060200191505060405180910390fd5b6001604060020a0382841711156157ec576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600f8152602001807f75696e743634206f766572666c6f77000000000000000000000000000000000081525060200191505060405180910390fd5b81604084901b604060020286901b171790509392505050565b60008383111582906158b2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561587757808201518184015260208101905061585c565b50505050905090810190601f1680156158a45780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385039050809150509392505050565b6000808314156158d85760009050615945565b60008284029050828482816158e957fe5b0414615940576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526021815260200180615d136021913960400191505060405180910390fd5b809150505b92915050565b600061598d83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250615be0565b905092915050565b6159b48273ffffffffffffffffffffffffffffffffffffffff16615ca6565b615a26576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e74726163740081525060200191505060405180910390fd5b600060608373ffffffffffffffffffffffffffffffffffffffff16836040518082805190602001908083835b60208310615a755780518252602082019150602081019050602083039250615a52565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114615ad7576040519150601f19603f3d011682016040523d82523d6000602084013e615adc565b606091505b509150915081615b54576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c656481525060200191505060405180910390fd5b600081511115615bda57808060200190516020811015615b7357600080fd5b8101908080519060200190929190505050615bd9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a815260200180615d34602a913960400191505060405180910390fd5b5b50505050565b60008083118290615c8c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015615c51578082015181840152602081019050615c36565b50505050905090810190601f168015615c7e5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b506000838581615c9857fe5b049050809150509392505050565b60008060007fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47060001b9050833f91506000801b8214158015615ce85750808214155b9250505091905056fe4164647265737320636f6e76657273696f6e206f7574206f6620626f756e64732e536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f775361666545524332303a204552433230206f7065726174696f6e20646964206e6f742073756363656564a265627a7a72315820a53415a466c1329c0dce2f58f65f6948e1ec4a6c1c647d3a33615b313bd8757a64736f6c63430005110032", - "sourceMap": "2690:30370:39:-;;;5191:433;8:9:-1;5:2;;;30:1;27;20:12;5:2;5191:433:39;;;;;;;;;;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;5191:433:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5400:9;4296::15;4285:8;;:20;;;;;;;;;;;;;;;;;;4232:80;5429:6:39;5421:5;;:14;;;;;;;;;;;;;;;;;;5458:11;5445:10;;:24;;;;;;;;;;;;;;;;;;5488:7;5479:6;;:16;;;;;;;;;;;;;;;;;;5516:9;5505:8;;:20;;;;;;;;;;;;;;;;;;5558:21;5535:20;:44;;;;5602:15;5589:10;:28;;;;5191:433;;;;;2690:30370;;;;;;", - "deployedSourceMap": "2690:30370:39:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2690:30370:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19725:1738;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;19725:1738:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21:11:-1;8;5:28;2:2;;;46:1;43;36:12;2:2;19725:1738:39;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;19725:1738:39;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;39:11;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;19725:1738:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;93:3;85:6;81:16;74:27;137:4;133:9;126:4;121:3;117:14;113:30;106:37;;169:3;161:6;157:16;147:26;;19725:1738:39;;;;;;;;;;;;;;;:::i;:::-;;25574:201;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;25574:201:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;2744:116:34;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;2744:116:34;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;21708:264:39;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;21708:264:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;14689:501;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;14689:501:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;16779:136;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;16779:136:39;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;15830:206;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;15830:206:39;;;;;;;;;;;;;;;;;;;:::i;:::-;;11163:1494;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;11163:1494:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;12880:762;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;12880:762:39;;;;;;;;;;;;;;;;;;;:::i;:::-;;9257:227;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;9257:227:39;;;;;;;;;;;;;;;;;;;:::i;:::-;;2485:143:34;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;2485:143:34;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;17179:190:39;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;17179:190:39;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;17179:190:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;17179:190:39;;;;;;;;;;;;;;;;;;;7252:258:15;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;7252:258:15;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;17675:1490:39;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;17675:1490:39;;;;;;;;;;;;;;;;;;;21:11:-1;8;5:28;2:2;;;46:1;43;36:12;2:2;17675:1490:39;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;17675:1490:39;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;39:11;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;17675:1490:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;93:3;85:6;81:16;74:27;137:4;133:9;126:4;121:3;117:14;113:30;106:37;;169:3;161:6;157:16;147:26;;17675:1490:39;;;;;;;;;;;;;;;:::i;:::-;;8060:948;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;8060:948:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21:11:-1;8;5:28;2:2;;;46:1;43;36:12;2:2;8060:948:39;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;8060:948:39;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;39:11;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;8060:948:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;93:3;85:6;81:16;74:27;137:4;133:9;126:4;121:3;117:14;113:30;106:37;;169:3;161:6;157:16;147:26;;8060:948:39;;;;;;;;;;;;;;;:::i;:::-;;24451:484;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;24451:484:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;6442:402:15;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;6442:402:15;;;;;;;;;;;;;;;;;;;:::i;:::-;;4044:35:39;;;:::i;:::-;;;;;;;;;;;;;;;;;;;22578:870;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;22578:870:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;2976:164:34;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;2976:164:34;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;7925:362:15;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;7925:362:15;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;16437:175:39;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;16437:175:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;10658:103;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;10658:103:39;;;;;;;;;;;;;;;;;;;:::i;:::-;;9793:629;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;9793:629:39;;;;;;;;;;;;;;;;;;;:::i;:::-;;4013:25;;;:::i;:::-;;;;;;;;;;;;;;;;;;;5971:133;;;:::i;:::-;;;;;;;;;;;;;;;;;;;5674:216:15;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;5674:216:15;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;4954:482;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;4954:482:15;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;14042:265:39;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;14042:265:39;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3254:126:34;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;3254:126:34;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;6513:162:39;;;:::i;:::-;;;;;;;;;;;;;;;;;;;19725:1738;19921:10;4110:44:15;4137:16;4110:26;:44::i;:::-;4089:119;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19943:25:39;19978:23;20004:30;20023:10;20004:18;:30::i;:::-;19978:56;;20049:9;20061:1;20049:13;;20044:1187;20068:19;:26;20064:1;:30;20044:1187;;;20115:16;20134:19;20154:1;20134:22;;;;;;;;;;;;;;20115:41;;20195:14;:31;20210:15;20195:31;;;;;;;;;;;;;;;:41;20227:8;20195:41;;;;;;;;;;;;;;;;;;;;;;;;;20170:114;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20299:22;20324:9;:19;20334:8;20324:19;;;;;;;;;;;;;;;:32;;;20299:57;;20378:30;20393:14;20378;:30::i;:::-;20370:57;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20468:54;20485:8;20495:14;20511:10;20468:16;:54::i;:::-;20467:55;20442:131;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20588:21;20612:26;:14;:24;:26::i;:::-;20588:50;;20673:13;20657;:29;20653:568;;;20726:36;20748:13;20726:17;:21;;:36;;;;:::i;:::-;20706:56;;20815:27;20840:1;20815:14;:24;;:27;;;;:::i;:::-;20780:9;:19;20790:8;20780:19;;;;;;;;;;;;;;;:32;;:62;;;;20878:8;20865:37;;;20888:13;20865:37;;;;;;;;;;;;;;;;;;20653:568;;;20961:36;20983:13;20961:17;:21;;:36;;;;:::i;:::-;20941:56;;21050:96;21096:32;21114:13;21096;:17;;:32;;;;:::i;:::-;21050:14;:24;;:96;;;;:::i;:::-;21015:9;:19;21025:8;21015:19;;;;;;;;;;;;;;;:32;;:131;;;;21182:8;21169:37;;;21192:13;21169:37;;;;;;;;;;;;;;;;;;20653:568;20044:1187;;;20096:3;;;;;;;20044:1187;;;;21241:24;21280:56;21319:16;21281:28;21307:1;21281:17;:25;;:28;;;;:::i;:::-;21280:38;;:56;;;;:::i;:::-;21241:95;;21347:48;21366:10;21378:16;21347:5;;;;;;;;;;;:18;;;;:48;;;;;:::i;:::-;21405:5;;;;;;;;;;;:10;;;21416:39;21438:16;21416:17;:21;;:39;;;;:::i;:::-;21405:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;21405:51:39;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;21405:51:39;;;;4218:1:15;;;19725:1738:39;;;;;:::o;25574:201::-;25686:4;25754:14;:12;:14::i;:::-;25713:37;25725:6;25733:16;25713:11;:37::i;:::-;:55;;25706:62;;25574:201;;;;:::o;2744:116:34:-;2801:7;2827:9;:20;2837:9;2827:20;;;;;;;;;;;;;;;:26;;;;;;;;;;;;2820:33;;2744:116;;;:::o;21708:264:39:-;21815:9;:19;21825:8;21815:19;;;;;;;;;;;;;;;:25;;;;;;;;;;;;21801:39;;:10;:39;;;21793:66;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21897:8;21869:9;:19;21879:8;21869:19;;;;;;;;;;;;;;;:25;;;:36;;;;;;;;;;;;;;;;;;21956:8;21920:45;;21946:8;21920:45;;;;;;;;;;;;21708:264;;:::o;14689:501::-;14796:10;4110:44:15;4137:16;4110:26;:44::i;:::-;4089:119;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14843:45:39;14867:8;14877:10;14843:23;:45::i;:::-;14822:106;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14939:22;14964:9;:19;14974:8;14964:19;;;;;;;;;;;;;;;:32;;;14939:57;;15015:30;15030:14;15015;:30::i;:::-;15007:57;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15083:31;15099:14;15083:15;:31::i;:::-;15082:32;15074:63;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15148:5;:15;;;;15164:8;15174;15148:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;15148:35:39;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;15148:35:39;;;;4218:1:15;14689:501:39;;;:::o;16779:136::-;16841:4;16864:5;:19;;;;16884:8;16902:4;16864:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;16864:44:39;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;16864:44:39;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;16864:44:39;;;;;;;;;;;;;;;;16857:51;;16779:136;;;:::o;15830:206::-;15907:45;15931:8;15941:10;15907:23;:45::i;:::-;15886:106;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16002:5;:17;;;;16020:8;16002:27;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;16002:27:39;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;16002:27:39;;;;15830:206;:::o;11163:1494::-;11300:9;11286:23;;:10;:23;;;:83;;;;11343:9;:20;11353:9;11343:20;;;;;;;;;;;;;;;:26;;;;;;;;;;;;11329:40;;:10;:40;;;11286:83;:152;;;;11389:12;:26;;;;11416:9;11427:10;;;;;;;;;;;11389:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;11389:49:39;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;11389:49:39;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;11389:49:39;;;;;;;;;;;;;;;;11286:152;11265:213;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11488:17;11508:9;:20;11518:9;11508:20;;;;;;;;;;;;;;;:33;;;11488:53;;11598:15;11572:22;:41;;:160;;;;;11674:58;11711:20;;11674:32;:9;:30;:32::i;:::-;:36;;:58;;;;:::i;:::-;11633:22;:99;11572:160;11551:224;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11785:37;11837:36;:9;:34;:36::i;:::-;11785:88;;11984:1;11951:29;:34;:175;;;;12104:22;12072:29;:54;11951:175;:461;;;;12403:9;12389:23;;:10;:23;;;;11951:461;11883:580;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12509:80;12557:22;12509:9;:34;;:80;;;;:::i;:::-;12473:9;:20;12483:9;12473:20;;;;;;;;;;;;;;;:33;;:116;;;;12616:9;12604:46;;;12627:22;12604:46;;;;;;;;;;;;;;;;;;11163:1494;;;;:::o;12880:762::-;12938:22;12963:9;:20;12973:9;12963:20;;;;;;;;;;;;;;;:33;;;12938:58;;13072:1;13027:41;:14;:39;:41::i;:::-;:46;;13006:108;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13132:39;13156:14;13132:23;:39::i;:::-;13124:70;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13213:24;13227:9;13213:13;:24::i;:::-;13212:25;13204:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13265:14;13282:26;:14;:24;:26::i;:::-;13265:43;;13410:36;13421:6;:13;;;;13435:9;13421:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;13421:24:39;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;13421:24:39;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;13421:24:39;;;;;;;;;;;;;;;;13410:6;:10;;:36;;;;:::i;:::-;13401:45;;13493:27;13518:1;13493:14;:24;;:27;;;;:::i;:::-;13457:9;:20;13467:9;13457:20;;;;;;;;;;;;;;;:33;;:63;;;;13530:64;13548:9;:20;13558:9;13548:20;;;;;;;;;;;;;;;:26;;;;;;;;;;;;13576:9;13587:6;13530:17;:64::i;:::-;13610:25;13625:9;13610:25;;;;;;;;;;;;;;;;;;;;;;12880:762;;;:::o;9257:227::-;9350:6;:13;;;;9377:9;9400;:20;9410:9;9400:20;;;;;;;;;;;;;;;:33;;;9447:20;;9350:127;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;9350:127:39;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;9350:127:39;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;9350:127:39;;;;;;;;;;;;;;;;9314:9;:20;9324:9;9314:20;;;;;;;;;;;;;;;:33;;:163;;;;9257:227;:::o;2485:143:34:-;2543:15;2577:44;:9;:19;2587:8;2577:19;;;;;;;;;;;;;;;:32;;;:42;:44::i;:::-;2570:51;;2485:143;;;:::o;17179:190:39:-;17260:25;17287:28;17338:5;:14;;;;17353:8;17338:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;17338:24:39;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;17338:24:39;;;;;;39:16:-1;36:1;17:17;2:54;17338:24:39;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;13:2;8:3;5:11;2:2;;;29:1;26;19:12;2:2;17338:24:39;;;;;;;;;;;;;19:11:-1;14:3;11:20;8:2;;;44:1;41;34:12;8:2;71:11;66:3;62:21;55:28;;123:4;118:3;114:14;159:9;141:16;138:31;135:2;;;182:1;179;172:12;135:2;219:3;213:10;331:9;325:2;311:12;307:21;289:16;285:44;282:59;261:11;247:12;244:29;233:116;230:2;;;362:1;359;352:12;230:2;385:12;380:3;373:25;421:4;416:3;412:14;405:21;;0:433;;17338:24:39;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;17338:24:39;;;;;;;;;;;;;;;;;;;19:11:-1;14:3;11:20;8:2;;;44:1;41;34:12;8:2;71:11;66:3;62:21;55:28;;123:4;118:3;114:14;159:9;141:16;138:31;135:2;;;182:1;179;172:12;135:2;219:3;213:10;331:9;325:2;311:12;307:21;289:16;285:44;282:59;261:11;247:12;244:29;233:116;230:2;;;362:1;359;352:12;230:2;385:12;380:3;373:25;421:4;416:3;412:14;405:21;;0:433;;17338:24:39;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;17338:24:39;;;;;;;;;;;17331:31;;;;17179:190;;;:::o;7252:258:15:-;7360:4;7399:8;;;;;;;;;;;:35;;;7452:37;7471:17;7452:18;:37::i;:::-;7399:104;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7399:104:15;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;7399:104:15;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;7399:104:15;;;;;;;;;;;;;;;;7380:123;;7252:258;;;:::o;17675:1490:39:-;17803:10;4110:44:15;4137:16;4110:26;:44::i;:::-;4089:119;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17829:25:39;17864:23;17890:30;17909:10;17890:18;:30::i;:::-;17864:56;;17935:9;17947:1;17935:13;;17930:1189;17954:19;:26;17950:1;:30;17930:1189;;;18001:16;18020:19;18040:1;18020:22;;;;;;;;;;;;;;18001:41;;18081:14;:31;18096:15;18081:31;;;;;;;;;;;;;;;:41;18113:8;18081:41;;;;;;;;;;;;;;;;;;;;;;;;;18056:114;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18185:22;18210:9;:19;18220:8;18210:19;;;;;;;;;;;;;;;:32;;;18185:57;;18264:30;18279:14;18264;:30::i;:::-;18256:57;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18354:54;18371:8;18381:14;18397:10;18354:16;:54::i;:::-;18353:55;18328:131;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18474:21;18498:26;:14;:24;:26::i;:::-;18474:50;;18559:13;18543;:29;18539:570;;;18612:36;18634:13;18612:17;:21;;:36;;;;:::i;:::-;18592:56;;18701:27;18726:1;18701:14;:24;;:27;;;;:::i;:::-;18666:9;:19;18676:8;18666:19;;;;;;;;;;;;;;;:32;;:62;;;;18765:8;18751:38;;;18775:13;18751:38;;;;;;;;;;;;;;;;;;18539:570;;;18848:36;18870:13;18848:17;:21;;:36;;;;:::i;:::-;18828:56;;18937:96;18983:32;19001:13;18983;:17;;:32;;;;:::i;:::-;18937:14;:24;;:96;;;;:::i;:::-;18902:9;:19;18912:8;18902:19;;;;;;;;;;;;;;;:32;;:131;;;;19070:8;19056:38;;;19080:13;19056:38;;;;;;;;;;;;;;;;;;18539:570;17930:1189;;;17982:3;;;;;;;17930:1189;;;;19129:5;;;;;;;;;;;:10;;;19140:17;19129:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;19129:29:39;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;19129:29:39;;;;4218:1:15;;17675:1490:39;;;:::o;8060:948::-;8245:5;;;;;;;;;;;8220:30;;8234:6;8220:30;;;8212:61;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8312:2;8291:10;:17;:23;;8283:61;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8400:52;8423:5;8438:4;8445:6;8400:5;;;;;;;;;;;:22;;;;:52;;;;;;:::i;:::-;8463:16;8482:24;8503:2;8482:10;:20;;:24;;;;:::i;:::-;8463:43;;8650:1;8591:55;:9;:19;8601:8;8591:19;;;;;;;;;;;;;;;:32;;;:53;:55::i;:::-;:60;8587:415;;;8804:45;8813:5;8820:6;8828:8;8838:10;8804:8;:45::i;:::-;8587:415;;;8949:42;8955:5;8962:6;8970:8;8980:10;8949:5;:42::i;:::-;8587:415;8060:948;;;;;:::o;24451:484::-;24563:15;24594:22;24619:9;:20;24629:9;24619:20;;;;;;;;;;;;;;;:33;;;24594:58;;24679:53;24703:9;24714:17;24679:23;:53::i;:::-;:99;;;;;24748:30;24763:14;24748;:30::i;:::-;24679:99;:178;;;;;24795:62;24812:9;24823:14;24839:17;24795:16;:62::i;:::-;24794:63;24679:178;24662:267;;;24892:26;:14;:24;:26::i;:::-;24882:36;;24662:267;24451:484;;;;;:::o;6442:402:15:-;6561:24;4110:44;4137:16;4110:26;:44::i;:::-;4089:119;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6641:24;6622:59;;;6699:10;6622:101;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6622:101:15;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;6622:101:15;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;6622:101:15;;;;;;;;;;;;;;;;6601:169;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6813:24;6780:18;:30;6799:10;6780:30;;;;;;;;;;;;;;;;:57;;;;;;;;;;;;;;;;;;6442:402;;:::o;4044:35:39:-;;;;:::o;22578:870::-;22692:15;22723:22;22748:9;:20;22758:9;22748:20;;;;;;;;;;;;;;;:33;;;22723:58;;23223:53;23247:9;23258:17;23223:23;:53::i;:::-;:99;;;;;23292:30;23307:14;23292;:30::i;:::-;23223:99;:147;;;;;23339:31;23355:14;23339:15;:31::i;:::-;23338:32;23223:147;23206:236;;;23405:26;:14;:24;:26::i;:::-;23395:36;;23206:236;22578:870;;;;;:::o;2976:164:34:-;3063:15;3101:9;:20;3111:9;3101:20;;;;;;;;;;;;;;;:32;;;;;;;;;;;;3094:39;;2976:164;;;:::o;7925:362:15:-;8024:7;8047:32;8082:18;:36;8101:16;8082:36;;;;;;;;;;;;;;;;;;;;;;;;;8047:71;;8168:1;8132:38;;:24;:38;;;8128:92;;;8193:16;8186:23;;;;;8128:92;8236:44;8255:24;8236:18;:44::i;:::-;8229:51;;;7925:362;;;;:::o;16437:175:39:-;16538:5;:24;;;;16563:8;16573:16;16599:4;16538:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;16538:67:39;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;16538:67:39;;;;16437:175;;:::o;10658:103::-;10714:40;10727:9;10738:15;10714:12;:40::i;:::-;10658:103;:::o;9793:629::-;9850:13;9866:9;:20;9876:9;9866:20;;;;;;;;;;;;;;;:26;;;;;;;;;;;;9850:42;;9937:5;9923:19;;:10;:19;;;:62;;;;9976:9;9962:23;;:10;:23;;;9923:62;:131;;;;10005:12;:26;;;;10032:9;10043:10;;;;;;;;;;;10005:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;10005:49:39;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;10005:49:39;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;10005:49:39;;;;;;;;;;;;;;;;9923:131;9902:192;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10104:22;10129:9;:20;10139:9;10129:20;;;;;;;;;;;;;;;:33;;;10104:58;;10182:30;10197:14;10182;:30::i;:::-;10181:31;10173:61;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10245:14;10262:26;:14;:24;:26::i;:::-;10245:43;;10334:27;10359:1;10334:14;:24;;:27;;;;:::i;:::-;10298:9;:20;10308:9;10298:20;;;;;;;;;;;;;;;:33;;:63;;;;10372:43;10390:5;10397:9;10408:6;10372:17;:43::i;:::-;9793:629;;;;:::o;4013:25::-;;;;:::o;5971:133::-;6016:7;6042:55;4660:10;6042:28;:55::i;:::-;6035:62;;5971:133;:::o;5674:216:15:-;5796:4;5819:14;:53;5834:37;5853:17;5834:18;:37::i;:::-;5819:53;;;;;;;;;;;;;;;:64;5873:9;5819:64;;;;;;;;;;;;;;;;;;;;;;;;;5812:71;;5674:216;;;;:::o;4954:482::-;5093:17;4110:44;4137:16;4110:26;:44::i;:::-;4089:119;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5170:10;5143:37;;:23;5156:9;5143:12;:23::i;:::-;:37;;;5122:107;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5301:17;5260:58;;:37;5279:17;5260:18;:37::i;:::-;:58;;;5239:129;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5425:4;5378:14;:33;5393:17;5378:33;;;;;;;;;;;;;;;:44;5412:9;5378:44;;;;;;;;;;;;;;;;:51;;;;;;;;;;;;;;;;;;4954:482;;;:::o;14042:265:39:-;14146:14;14174:17;14205:21;14258:42;:9;:20;14268:9;14258:20;;;;;;;;;;;;;;;:33;;;:40;:42::i;:::-;14251:49;;;;;;14042:265;;;;;:::o;3254:126:34:-;3316:7;3342:9;:20;3352:9;3342:20;;;;;;;;;;;;;;;:31;;;;;;;;;;;;3335:38;;3254:126;;;:::o;6513:162:39:-;6564:7;6620:25;4451:7;6620:10;;:14;;:25;;;;:::i;:::-;6602:15;:43;:66;;4451:7;6602:66;;;4391:7;6602:66;6583:85;;6513:162;:::o;30763:236::-;30859:4;30928:64;30971:20;;30928:38;:15;:36;:38::i;:::-;:42;;:64;;;;:::i;:::-;30898:15;:94;30879:113;;30763:236;;;:::o;32071:299::-;32221:4;32256:40;32280:15;32256:23;:40::i;:::-;:107;;;;;32312:5;:21;;;;32334:9;32345:17;32312:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;32312:51:39;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;32312:51:39;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;32312:51:39;;;;;;;;;;;;;;;;32256:107;32237:126;;32071:299;;;;;:::o;2228:140:102:-;2292:7;1022:1;899:3;1003:1;:15;1002:21;859:2;1117:1;:19;2319:12;:28;;2318:43;2311:50;;2228:140;;;:::o;834:176:5:-;892:7;911:9;927:1;923;:5;911:17;;951:1;946;:6;;938:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1002:1;995:8;;;834:176;;;;:::o;2374:303:102:-;2478:7;2520:150;2542:6;2566:34;2587:12;2566:20;:34::i;:::-;2618:38;2643:12;2618:24;:38::i;:::-;2520:4;:150::i;:::-;2501:169;;2374:303;;;;:::o;1274:134:5:-;1332:7;1358:43;1362:1;1365;1358:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;1351:50;;1274:134;;;;:::o;237:112:103:-;299:7;325:17;338:3;325:8;331:1;325;:5;;:8;;;;:::i;:::-;:12;;:17;;;;:::i;:::-;318:24;;237:112;;;;:::o;662:174:11:-;744:85;763:5;793;:14;;;:23;;;;818:2;822:5;770:58;;;;;;;;;;;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;770:58:11;;;;;;;38:4:-1;29:7;25:18;67:10;61:17;96:58;199:8;192:4;186;182:15;179:29;167:10;160:49;0:215;;;770:58:11;744:18;:85::i;:::-;662:174;;;:::o;31072:264:39:-;31169:4;31189:21;31213:42;:15;:40;:42::i;:::-;31189:66;;31290:1;31273:13;:18;;31272:57;;;;;31315:13;31297:15;:31;31272:57;31265:64;;;31072:264;;;:::o;2683:184:102:-;2782:7;965:1;859:2;943:1;:18;942:24;859:2;2813:12;:30;;2812:48;2805:55;;2683:184;;;:::o;3198:168::-;3301:7;965:1;859:2;943:1;:18;942:24;3331:12;:28;3324:35;;3198:168;;;:::o;3372:327::-;3504:7;3542:150;3564:23;3574:12;3564:9;:23::i;:::-;3605:34;3626:12;3605:20;:34::i;:::-;3657:21;3542:4;:150::i;:::-;3523:169;;3372:327;;;;:::o;31419:322:39:-;31524:4;31544:21;31568:42;:15;:40;:42::i;:::-;31544:66;;31657:1;31640:13;:18;;31639:95;;;;;31694:39;31712:20;:18;:20::i;:::-;31694:13;:17;;:39;;;;:::i;:::-;31676:15;:57;31639:95;31620:114;;;31419:322;;;:::o;32376:682::-;32508:12;:30;;;;32539:9;32508:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;32508:41:39;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;32508:41:39;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;32508:41:39;;;;;;;;;;;;;;;;32504:548;;;32661:5;;;;;;;;;;;32641:42;;;32709:6;;;;;;;;;;;32734:7;32791:9;32822:12;:32;;;;32855:9;32822:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;32822:43:39;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;32822:43:39;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;32822:43:39;;;;;;;;;;;;;;;;32759:124;;;;;;;;;;;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;32759:124:39;;;32641:256;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;32641:256:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;32641:256:39;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;32641:256:39;;;;32504:548;;;33006:35;33025:6;33033:7;33006:5;;;;;;;;;;;:18;;;;:35;;;;;:::i;:::-;32504:548;32376:682;;;:::o;842:202:11:-;942:95;961:5;991;:18;;;:27;;;;1020:4;1026:2;1030:5;968:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;968:68:11;;;;;;;38:4:-1;29:7;25:18;67:10;61:17;96:58;199:8;192:4;186;182:15;179:29;167:10;160:49;0:215;;;968:68:11;942:18;:95::i;:::-;842:202;;;;:::o;11990:535:100:-;12093:7;12116:17;12145:2;12136:6;:11;12116:31;;12190:6;12178:9;:18;:48;;;;;12217:9;12200:6;:13;:26;;12178:48;12157:128;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12295:19;12439:27;12413:6;12406:4;12398:6;12394:17;12390:30;12384:37;12363:117;12348:132;;12507:11;12500:18;;;;11990:535;;;;:::o;26180:839:39:-;26348:14;:12;:14::i;:::-;26338:6;:24;;26330:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26405:27;26451:23;26472:1;26451:10;:20;;:23;;;;:::i;:::-;26405:71;;26486:18;26507:24;26528:2;26507:10;:20;;:24;;;;:::i;:::-;26486:45;;26565:147;;;;;;;;26587:47;26607:6;26615:15;26632:1;26587:19;:47::i;:::-;26565:147;;;;26648:5;26565:147;;;;;;26667:11;26565:147;;;;;;26692:10;26565:147;;;;;26542:9;:20;26552:9;26542:20;;;;;;;;;;;;;;;:170;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26723:12;:39;;;;26776:10;;;;;;;;;;;26808:6;;;;;;;;;;;26829:5;26848:9;26871:10;26723:168;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;26723:168:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;26723:168:39;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;26723:168:39;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;26723:168:39;;;;;;;;;;;;;;;;;;;;;;;;;;;26929:9;26907:32;;26922:5;26907:32;;;;;;;;;;;;26993:10;26954:58;;26980:11;26954:58;;26969:9;26954:58;;;27005:6;26954:58;;;;;;;;;;;;;;;;;;26180:839;;;;;;:::o;28283:2408::-;28609:16;28686:5;28640:51;;28648:10;;;;;;;;;;;:22;;;28671:9;28648:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;28648:33:39;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;28648:33:39;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;28648:33:39;;;;;;;;;;;;;;;;28640:51;;;:95;;;;28730:5;28711:24;;28719:6;;;;;;;;;;;28711:24;;;28640:95;28609:126;;28750:12;:30;;;;28781:9;28750:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;28750:41:39;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;28750:41:39;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;28750:41:39;;;;;;;;;;;;;;;;28746:1163;;;28936:11;28928:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;29171:23;29213:12;:32;;;;29246:9;29213:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;29213:43:39;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;29213:43:39;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;29213:43:39;;;;;;;;;;;;;;;;29171:85;;29273:15;29308:12;:39;;;;29369:10;;;;;;;;;;;29409:6;;;;;;;;;;;29438:5;29465:9;29496:10;29308:216;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;29308:216:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;29308:216:39;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;29308:216:39;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;29308:216:39;;;;;;;;;;;;;;;;;;;;;;;;;29270:254;;;29557:15;29546:7;:26;29538:57;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;28746:1163;;;;;29778:11;29777:12;29769:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;29870:5;29840:35;;:9;:20;29850:9;29840:20;;;;;;;;;;;;;;;:26;;;;;;;;;;;;:35;;;29832:66;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;28746:1163;29919:22;29944:9;:20;29954:9;29944:20;;;;;;;;;;;;;;;:33;;;29919:58;;29992:30;30007:14;29992;:30::i;:::-;29987:698;;30220:6;:22;;;;30260:6;30284:9;30311:14;30343:6;;;;;;;;;;;30220:143;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;30220:143:39;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;30220:143:39;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;30220:143:39;;;;;;;;;;;;;;;;30184:9;:20;30194:9;30184:20;;;;;;;;;;;;;;;:33;;:179;;;;29987:698;;;30616:6;:15;;;;30632:6;30640:9;30651:14;30667:6;;;;;;;;;;;30616:58;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;30616:58:39;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;30616:58:39;;;;29987:698;28283:2408;;;;;;:::o;864:311:60:-;927:7;956:27;535:15;956:13;:17;;:27;;;;:::i;:::-;950:3;:33;946:202;;;999:19;1037:47;535:15;1037:33;1047:22;1055:13;1047:3;:7;;:22;;;;:::i;:::-;588:2;1037:9;;:33;;;;:::i;:::-;:37;;:47;;;;:::i;:::-;999:85;;1105:32;1114:22;1124:11;588:2;1114:9;;:22;;;;:::i;:::-;627:12;1105:8;;:32;;;;:::i;:::-;1098:39;;;;;946:202;627:12;1157:11;;864:311;;;;:::o;1860:362:102:-;1958:14;1986:17;2017:21;2072:23;2082:12;2072:9;:23::i;:::-;2063:32;;2117:34;2138:12;2117:20;:34::i;:::-;2105:46;;2177:38;2202:12;2177:24;:38::i;:::-;2161:54;;1860:362;;;;;:::o;1143:711::-;1268:7;1022:1;899:3;1003:1;:15;1002:21;1389:6;:20;;1381:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;965:1;859:2;943:1;:18;942:24;1659:13;1647:9;:25;1646:44;;1625:106;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1833:13;859:2;1790:9;:27;;859:2;1117:1;:19;1751:6;:22;;1750:68;:96;1742:105;;1143:711;;;;;:::o;1732:187:5:-;1818:7;1850:1;1845;:6;;1853:12;1837:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;1837:29:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1876:9;1892:1;1888;:5;1876:17;;1911:1;1904:8;;;1732:187;;;;;:::o;2159:459::-;2217:7;2463:1;2458;:6;2454:45;;;2487:1;2480:8;;;;2454:45;2509:9;2525:1;2521;:5;2509:17;;2553:1;2548;2544;:5;;;;;;:10;2536:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2610:1;2603:8;;;2159:459;;;;;:::o;3073:130::-;3131:7;3157:39;3161:1;3164;3157:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;3150:46;;3073:130;;;;:::o;2666:1095:11:-;3261:27;3269:5;3261:25;;;:27::i;:::-;3253:71;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3395:12;3409:23;3444:5;3436:19;;3456:4;3436:25;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;36:153;;182:3;176:10;171:3;164:23;98:2;93:3;89:12;82:19;;123:2;118:3;114:12;107:19;;148:2;143:3;139:12;132:19;;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;;;3436:25:11;;;;;;;;;;;;;;;;;;;;;;;;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;;3394:67:11;;;;3479:7;3471:52;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3558:1;3538:10;:17;:21;3534:221;;;3678:10;3667:30;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;3667:30:11;;;;;;;;;;;;;;;;3659:85;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3534:221;2666:1095;;;;:::o;3718:338:5:-;3804:7;3901:1;3897;:5;3904:12;3889:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;3889:28:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3927:9;3943:1;3939;:5;;;;;;3927:17;;4048:1;4041:8;;;3718:338;;;;;:::o;557:797:12:-;617:4;1062:16;1088:19;1110:66;1088:88;;;;1277:7;1265:20;1253:32;;1316:3;1304:15;;:8;:15;;:42;;;;;1335:11;1323:8;:23;;1304:42;1296:51;;;;557:797;;;:::o", - "source": "/**\n▓▓▌ ▓▓ ▐▓▓ ▓▓▓▓▓▓▓▓▓▓▌▐▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓ ▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓ ▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▄\n▓▓▓▓▓▓▓▓▓▓ ▓▓▓▓▓▓▓▓▓▓▌▐▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓ ▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓ ▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓\n ▓▓▓▓▓▓ ▓▓▓▓▓▓▓▀ ▐▓▓▓▓▓▓ ▐▓▓▓▓▓ ▓▓▓▓▓▓ ▓▓▓▓▓ ▐▓▓▓▓▓▌ ▐▓▓▓▓▓▓\n ▓▓▓▓▓▓▄▄▓▓▓▓▓▓▓▀ ▐▓▓▓▓▓▓▄▄▄▄ ▓▓▓▓▓▓▄▄▄▄ ▐▓▓▓▓▓▌ ▐▓▓▓▓▓▓\n ▓▓▓▓▓▓▓▓▓▓▓▓▓▀ ▐▓▓▓▓▓▓▓▓▓▓ ▓▓▓▓▓▓▓▓▓▓▌ ▐▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓\n ▓▓▓▓▓▓▀▀▓▓▓▓▓▓▄ ▐▓▓▓▓▓▓▀▀▀▀ ▓▓▓▓▓▓▀▀▀▀ ▐▓▓▓▓▓▓▓▓▓▓▓▓▓▓▀\n ▓▓▓▓▓▓ ▀▓▓▓▓▓▓▄ ▐▓▓▓▓▓▓ ▓▓▓▓▓ ▓▓▓▓▓▓ ▓▓▓▓▓ ▐▓▓▓▓▓▌\n▓▓▓▓▓▓▓▓▓▓ █▓▓▓▓▓▓▓▓▓ ▐▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓ ▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓ ▓▓▓▓▓▓▓▓▓▓\n▓▓▓▓▓▓▓▓▓▓ ▓▓▓▓▓▓▓▓▓▓ ▐▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓ ▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓ ▓▓▓▓▓▓▓▓▓▓\n\n Trust math, not hardware.\n*/\n\npragma solidity 0.5.17;\n\nimport \"openzeppelin-solidity/contracts/token/ERC20/ERC20Burnable.sol\";\nimport \"openzeppelin-solidity/contracts/token/ERC20/SafeERC20.sol\";\nimport \"openzeppelin-solidity/contracts/math/SafeMath.sol\";\nimport \"./StakeDelegatable.sol\";\nimport \"./libraries/staking/MinimumStakeSchedule.sol\";\nimport \"./libraries/staking/GrantStaking.sol\";\nimport \"./libraries/staking/Locks.sol\";\nimport \"./libraries/staking/TopUps.sol\";\nimport \"./utils/PercentUtils.sol\";\nimport \"./utils/BytesLib.sol\";\nimport \"./Authorizations.sol\";\nimport \"./TokenStakingEscrow.sol\";\nimport \"./TokenSender.sol\";\n\n/// @title TokenStaking\n/// @notice A token staking contract for a specified standard ERC20Burnable token.\n/// A holder of the specified token can stake delegate its tokens to this contract\n/// and recover the stake after undelegation period is over.\ncontract TokenStaking is Authorizations, StakeDelegatable {\n using BytesLib for bytes;\n using SafeMath for uint256;\n using PercentUtils for uint256;\n using SafeERC20 for ERC20Burnable;\n using GrantStaking for GrantStaking.Storage;\n using Locks for Locks.Storage;\n using TopUps for TopUps.Storage;\n\n event StakeDelegated(address indexed owner, address indexed operator);\n event OperatorStaked(\n address indexed operator,\n address indexed beneficiary,\n address indexed authorizer,\n uint256 value\n );\n event StakeOwnershipTransferred(\n address indexed operator,\n address indexed newOwner\n );\n event TopUpInitiated(address indexed operator, uint256 topUp);\n event TopUpCompleted(address indexed operator, uint256 newAmount);\n event Undelegated(address indexed operator, uint256 undelegatedAt);\n event RecoveredStake(address operator);\n event TokensSlashed(address indexed operator, uint256 amount);\n event TokensSeized(address indexed operator, uint256 amount);\n event StakeLocked(\n address indexed operator,\n address lockCreator,\n uint256 until\n );\n event LockReleased(address indexed operator, address lockCreator);\n event ExpiredLockReleased(address indexed operator, address lockCreator);\n\n uint256 public deployedAt;\n uint256 public initializationPeriod; // varies between mainnet and testnet\n\n ERC20Burnable internal token;\n TokenGrant internal tokenGrant;\n TokenStakingEscrow internal escrow;\n\n GrantStaking.Storage internal grantStaking;\n Locks.Storage internal locks;\n TopUps.Storage internal topUps;\n\n uint256 internal constant twoWeeks = 1209600; // [sec]\n uint256 internal constant twoMonths = 5184000; // [sec]\n\n // 2020-04-28; the date of deploying KEEP token.\n // TX: 0xea22d72bc7de4c82798df7194734024a1f2fd57b173d0e065864ff4e9d3dc014\n uint256 internal constant minimumStakeScheduleStart = 1588042366;\n\n /// @notice Creates a token staking contract for a provided Standard ERC20Burnable token.\n /// @param _token KEEP token contract.\n /// @param _tokenGrant KEEP token grant contract.\n /// @param _escrow Escrow dedicated for this staking contract.\n /// @param _registry Keep contract registry contract.\n /// @param _initializationPeriod To avoid certain attacks on work selection, recently created\n /// operators must wait for a specific period of time before being eligible for work selection.\n constructor(\n ERC20Burnable _token,\n TokenGrant _tokenGrant,\n TokenStakingEscrow _escrow,\n KeepRegistry _registry,\n uint256 _initializationPeriod\n ) public Authorizations(_registry) {\n token = _token;\n tokenGrant = _tokenGrant;\n escrow = _escrow;\n registry = _registry;\n initializationPeriod = _initializationPeriod;\n deployedAt = block.timestamp;\n }\n\n /// @notice Returns minimum amount of KEEP that allows sMPC cluster client to\n /// participate in the Keep network. Expressed as number with 18-decimal places.\n /// Initial minimum stake is higher than the final and lowered periodically based\n /// on the amount of steps and the length of the minimum stake schedule in seconds.\n function minimumStake() public view returns (uint256) {\n return MinimumStakeSchedule.current(minimumStakeScheduleStart);\n }\n\n /// @notice Returns the current value of the undelegation period.\n /// The staking contract guarantees that an undelegated operator’s stakes\n /// will stay locked for a period of time after undelegation, and thus\n /// available as collateral for any work the operator is engaged in.\n /// The undelegation period is two weeks for the first two months and\n /// two months after that.\n function undelegationPeriod() public view returns (uint256) {\n return\n block.timestamp < deployedAt.add(twoMonths) ? twoWeeks : twoMonths;\n }\n\n /// @notice Receives approval of token transfer and stakes the approved\n /// amount or adds the approved amount to an existing delegation (a “top-up”).\n /// In case of a top-up, it is expected that the operator stake is not\n /// undelegated and that the top-up is performed from the same source of\n /// tokens as the initial delegation. That is, if the tokens were delegated\n /// from a grant, top-up has to be performed from the same grant. If the\n /// delegation was done using liquid tokens, only liquid tokens from the\n /// same owner can be used to top-up the stake.\n /// Top-up can not be cancelled so it is important to be careful with the\n /// amount of KEEP added to the stake.\n /// @dev Requires that the provided token contract be the same one linked to\n /// this contract.\n /// @param _from The owner of the tokens who approved them to transfer.\n /// @param _value Approved amount for the transfer and stake.\n /// @param _token Token contract address.\n /// @param _extraData Data for stake delegation. This byte array must have\n /// the following values concatenated:\n /// - Beneficiary address (20 bytes), ignored for a top-up\n /// - Operator address (20 bytes)\n /// - Authorizer address (20 bytes), ignored for a top-up\n /// - Grant ID (32 bytes) - required only when called by TokenStakingEscrow\n function receiveApproval(\n address _from,\n uint256 _value,\n address _token,\n bytes memory _extraData\n ) public {\n require(ERC20Burnable(_token) == token, \"Unrecognized token\");\n require(_extraData.length >= 60, \"Corrupted delegation data\");\n\n // Transfer tokens to this contract.\n token.safeTransferFrom(_from, address(this), _value);\n\n address operator = _extraData.toAddress(20);\n // See if there is an existing delegation for this operator...\n if (operators[operator].packedParams.getCreationTimestamp() == 0) {\n // If there is no existing delegation, delegate tokens using\n // beneficiary and authorizer passed in _extraData.\n delegate(_from, _value, operator, _extraData);\n } else {\n // If there is an existing delegation, top-up the stake.\n topUp(_from, _value, operator, _extraData);\n }\n }\n\n /// @notice Commits pending top-up for the provided operator. If the top-up\n /// did not pass the initialization period, the function fails.\n /// @param _operator The operator with a pending top-up that is getting\n /// committed.\n function commitTopUp(address _operator) public {\n operators[_operator].packedParams = topUps.commit(\n _operator,\n operators[_operator].packedParams,\n initializationPeriod\n );\n }\n\n /// @notice Cancels stake of tokens within the operator initialization period\n /// without being subjected to the token lockup for the undelegation period.\n /// This can be used to undo mistaken delegation to the wrong operator address.\n /// @param _operator Address of the stake operator.\n function cancelStake(address _operator) public {\n address owner = operators[_operator].owner;\n require(\n msg.sender == owner ||\n msg.sender == _operator ||\n grantStaking.canUndelegate(_operator, tokenGrant),\n \"Not authorized\"\n );\n uint256 operatorParams = operators[_operator].packedParams;\n\n require(!_isInitialized(operatorParams), \"Initialized stake\");\n\n uint256 amount = operatorParams.getAmount();\n operators[_operator].packedParams = operatorParams.setAmount(0);\n\n transferOrDeposit(owner, _operator, amount);\n }\n\n /// @notice Undelegates staked tokens. You will be able to recover your stake by calling\n /// `recoverStake()` with operator address once undelegation period is over.\n /// @param _operator Address of the stake operator.\n function undelegate(address _operator) public {\n undelegateAt(_operator, block.timestamp);\n }\n\n /// @notice Set an undelegation time for staked tokens.\n /// Undelegation will begin at the specified timestamp.\n /// You will be able to recover your stake by calling\n /// `recoverStake()` with operator address once undelegation period is over.\n /// @param _operator Address of the stake operator.\n /// @param _undelegationTimestamp The timestamp undelegation is to start at.\n function undelegateAt(address _operator, uint256 _undelegationTimestamp)\n public\n {\n require(\n msg.sender == _operator ||\n msg.sender == operators[_operator].owner ||\n grantStaking.canUndelegate(_operator, tokenGrant),\n \"Not authorized\"\n );\n uint256 oldParams = operators[_operator].packedParams;\n require(\n _undelegationTimestamp >= block.timestamp &&\n _undelegationTimestamp >\n oldParams.getCreationTimestamp().add(initializationPeriod),\n \"Invalid timestamp\"\n );\n uint256 existingUndelegationTimestamp =\n oldParams.getUndelegationTimestamp();\n require(\n // Undelegation not in progress OR\n existingUndelegationTimestamp == 0 ||\n // Undelegating sooner than previously set time OR\n existingUndelegationTimestamp > _undelegationTimestamp ||\n // We have already checked above that msg.sender is owner, grantee,\n // or operator. Only owner and grantee are eligible to postpone the\n // delegation so it is enough if we exclude operator here.\n msg.sender != _operator,\n \"Operator may not postpone\"\n );\n operators[_operator].packedParams = oldParams.setUndelegationTimestamp(\n _undelegationTimestamp\n );\n emit Undelegated(_operator, _undelegationTimestamp);\n }\n\n /// @notice Recovers staked tokens and transfers them back to the owner.\n /// Recovering tokens can only be performed when the operator finished\n /// undelegating.\n /// @param _operator Operator address.\n function recoverStake(address _operator) public {\n uint256 operatorParams = operators[_operator].packedParams;\n require(\n operatorParams.getUndelegationTimestamp() != 0,\n \"Not undelegated\"\n );\n require(_isUndelegatingFinished(operatorParams), \"Still undelegating\");\n require(!isStakeLocked(_operator), \"Locked stake\");\n\n uint256 amount = operatorParams.getAmount();\n\n // If there is a pending top-up, force-commit it before returning tokens.\n amount = amount.add(topUps.cancel(_operator));\n\n operators[_operator].packedParams = operatorParams.setAmount(0);\n transferOrDeposit(operators[_operator].owner, _operator, amount);\n\n emit RecoveredStake(_operator);\n }\n\n /// @notice Gets stake delegation info for the given operator.\n /// @param _operator Operator address.\n /// @return amount The amount of tokens the given operator delegated.\n /// @return createdAt The time when the stake has been delegated.\n /// @return undelegatedAt The time when undelegation has been requested.\n /// If undelegation has not been requested, 0 is returned.\n function getDelegationInfo(address _operator)\n public\n view\n returns (\n uint256 amount,\n uint256 createdAt,\n uint256 undelegatedAt\n )\n {\n return operators[_operator].packedParams.unpack();\n }\n\n /// @notice Locks given operator stake for the specified duration.\n /// Locked stake may not be recovered until the lock expires or is released,\n /// even if the normal undelegation period has passed.\n /// Only previously authorized operator contract can lock the stake.\n /// @param operator Operator address.\n /// @param duration Lock duration in seconds.\n function lockStake(address operator, uint256 duration)\n public\n onlyApprovedOperatorContract(msg.sender)\n {\n require(\n isAuthorizedForOperator(operator, msg.sender),\n \"Not authorized\"\n );\n\n uint256 operatorParams = operators[operator].packedParams;\n\n require(_isInitialized(operatorParams), \"Inactive stake\");\n require(!_isUndelegating(operatorParams), \"Undelegating stake\");\n\n locks.lockStake(operator, duration);\n }\n\n /// @notice Removes a lock the caller had previously placed on the operator.\n /// @dev Only for operator contracts.\n /// To remove expired or disabled locks, use `releaseExpiredLocks`.\n /// The authorization check ensures that the caller must have been able\n /// to place a lock on the operator sometime in the past.\n /// We don't need to check for current approval status of the caller\n /// because unlocking stake cannot harm the operator\n /// nor interfere with other operator contracts.\n /// Therefore even disabled operator contracts may freely unlock stake.\n /// @param operator Operator address.\n function unlockStake(address operator) public {\n require(\n isAuthorizedForOperator(operator, msg.sender),\n \"Not authorized\"\n );\n locks.releaseLock(operator);\n }\n\n /// @notice Removes the lock of the specified operator contract\n /// if the lock has expired or the contract has been disabled.\n /// @dev Necessary for removing locks placed by contracts\n /// that have been disabled by the panic button.\n /// Also applicable to prevent inadvertent DoS of `recoverStake`\n /// if too many operator contracts have failed to clean up their locks.\n function releaseExpiredLock(address operator, address operatorContract)\n public\n {\n locks.releaseExpiredLock(operator, operatorContract, address(this));\n }\n\n /// @notice Check whether the operator has any active locks\n /// that haven't expired yet\n /// and whose creators aren't disabled by the panic button.\n function isStakeLocked(address operator) public view returns (bool) {\n return locks.isStakeLocked(operator, address(this));\n }\n\n /// @notice Get the locks placed on the operator.\n /// @return creators The addresses of operator contracts\n /// that have placed a lock on the operator.\n /// @return expirations The expiration times\n /// of the locks placed on the operator.\n function getLocks(address operator)\n public\n view\n returns (address[] memory creators, uint256[] memory expirations)\n {\n return locks.getLocks(operator);\n }\n\n /// @notice Slash provided token amount from every member in the misbehaved\n /// operators array and burn 100% of all the tokens.\n /// @param amountToSlash Token amount to slash from every misbehaved operator.\n /// @param misbehavedOperators Array of addresses to seize the tokens from.\n function slash(uint256 amountToSlash, address[] memory misbehavedOperators)\n public\n onlyApprovedOperatorContract(msg.sender)\n {\n uint256 totalAmountToBurn;\n address authoritySource = getAuthoritySource(msg.sender);\n for (uint256 i = 0; i < misbehavedOperators.length; i++) {\n address operator = misbehavedOperators[i];\n require(\n authorizations[authoritySource][operator],\n \"Not authorized\"\n );\n\n uint256 operatorParams = operators[operator].packedParams;\n require(_isInitialized(operatorParams), \"Inactive stake\");\n\n require(\n !_isStakeReleased(operator, operatorParams, msg.sender),\n \"Stake is released\"\n );\n\n uint256 currentAmount = operatorParams.getAmount();\n\n if (currentAmount < amountToSlash) {\n totalAmountToBurn = totalAmountToBurn.add(currentAmount);\n operators[operator].packedParams = operatorParams.setAmount(0);\n emit TokensSlashed(operator, currentAmount);\n } else {\n totalAmountToBurn = totalAmountToBurn.add(amountToSlash);\n operators[operator].packedParams = operatorParams.setAmount(\n currentAmount.sub(amountToSlash)\n );\n emit TokensSlashed(operator, amountToSlash);\n }\n }\n\n token.burn(totalAmountToBurn);\n }\n\n /// @notice Seize provided token amount from every member in the misbehaved\n /// operators array. The tattletale is rewarded with 5% of the total seized\n /// amount scaled by the reward adjustment parameter and the rest 95% is burned.\n /// @param amountToSeize Token amount to seize from every misbehaved operator.\n /// @param rewardMultiplier Reward adjustment in percentage. Min 1% and 100% max.\n /// @param tattletale Address to receive the 5% reward.\n /// @param misbehavedOperators Array of addresses to seize the tokens from.\n function seize(\n uint256 amountToSeize,\n uint256 rewardMultiplier,\n address tattletale,\n address[] memory misbehavedOperators\n ) public onlyApprovedOperatorContract(msg.sender) {\n uint256 totalAmountToBurn;\n address authoritySource = getAuthoritySource(msg.sender);\n for (uint256 i = 0; i < misbehavedOperators.length; i++) {\n address operator = misbehavedOperators[i];\n require(\n authorizations[authoritySource][operator],\n \"Not authorized\"\n );\n\n uint256 operatorParams = operators[operator].packedParams;\n require(_isInitialized(operatorParams), \"Inactive stake\");\n\n require(\n !_isStakeReleased(operator, operatorParams, msg.sender),\n \"Stake is released\"\n );\n\n uint256 currentAmount = operatorParams.getAmount();\n\n if (currentAmount < amountToSeize) {\n totalAmountToBurn = totalAmountToBurn.add(currentAmount);\n operators[operator].packedParams = operatorParams.setAmount(0);\n emit TokensSeized(operator, currentAmount);\n } else {\n totalAmountToBurn = totalAmountToBurn.add(amountToSeize);\n operators[operator].packedParams = operatorParams.setAmount(\n currentAmount.sub(amountToSeize)\n );\n emit TokensSeized(operator, amountToSeize);\n }\n }\n\n uint256 tattletaleReward =\n (totalAmountToBurn.percent(5)).percent(rewardMultiplier);\n\n token.safeTransfer(tattletale, tattletaleReward);\n token.burn(totalAmountToBurn.sub(tattletaleReward));\n }\n\n /// @notice Allows the current staking relationship owner to transfer the\n /// ownership to someone else.\n /// @param operator Address of the stake operator.\n /// @param newOwner Address of the new staking relationship owner.\n function transferStakeOwnership(address operator, address newOwner) public {\n require(msg.sender == operators[operator].owner, \"Not authorized\");\n operators[operator].owner = newOwner;\n emit StakeOwnershipTransferred(operator, newOwner);\n }\n\n /// @notice Gets the eligible stake balance of the specified address.\n /// An eligible stake is a stake that passed the initialization period\n /// and is not currently undelegating. Also, the operator had to approve\n /// the specified operator contract.\n ///\n /// Operator with a minimum required amount of eligible stake can join the\n /// network and participate in new work selection.\n ///\n /// @param _operator address of stake operator.\n /// @param _operatorContract address of operator contract.\n /// @return an uint256 representing the eligible stake balance.\n function eligibleStake(address _operator, address _operatorContract)\n public\n view\n returns (uint256 balance)\n {\n uint256 operatorParams = operators[_operator].packedParams;\n // To be eligible for work selection, the operator must:\n // - have the operator contract authorized\n // - have the stake initialized\n // - must not be undelegating; keep in mind the `undelegatedAt` may be\n // set to a time in the future, to schedule undelegation in advance.\n // In this case the operator is still eligible until the timestamp\n // `undelegatedAt`.\n if (\n isAuthorizedForOperator(_operator, _operatorContract) &&\n _isInitialized(operatorParams) &&\n !_isUndelegating(operatorParams)\n ) {\n balance = operatorParams.getAmount();\n }\n }\n\n /// @notice Gets the active stake balance of the specified address.\n /// An active stake is a stake that passed the initialization period,\n /// and may be in the process of undelegation\n /// but has not been released yet,\n /// either because the undelegation period is not over,\n /// or because the operator contract has an active lock on the operator.\n /// Also, the operator had to approve the specified operator contract.\n ///\n /// The difference between eligible stake is that active stake does not make\n /// the operator eligible for work selection but it may be still finishing\n /// earlier work until the stake is released.\n /// Operator with a minimum required\n /// amount of active stake can join the network but cannot be selected to any\n /// new work.\n ///\n /// @param _operator address of stake operator.\n /// @param _operatorContract address of operator contract.\n /// @return an uint256 representing the eligible stake balance.\n function activeStake(address _operator, address _operatorContract)\n public\n view\n returns (uint256 balance)\n {\n uint256 operatorParams = operators[_operator].packedParams;\n if (\n isAuthorizedForOperator(_operator, _operatorContract) &&\n _isInitialized(operatorParams) &&\n !_isStakeReleased(_operator, operatorParams, _operatorContract)\n ) {\n balance = operatorParams.getAmount();\n }\n }\n\n /// @notice Checks if the specified account has enough active stake to become\n /// network operator and that the specified operator contract has been\n /// authorized for potential slashing.\n ///\n /// Having the required minimum of active stake makes the operator eligible\n /// to join the network. If the active stake is not currently undelegating,\n /// operator is also eligible for work selection.\n ///\n /// @param staker Staker's address\n /// @param operatorContract Operator contract's address\n /// @return True if has enough active stake to participate in the network,\n /// false otherwise.\n function hasMinimumStake(address staker, address operatorContract)\n public\n view\n returns (bool)\n {\n return activeStake(staker, operatorContract) >= minimumStake();\n }\n\n /// @notice Delegates tokens to a new operator using beneficiary and\n /// authorizer passed in _extraData parameter.\n /// @param _from The owner of the tokens who approved them to transfer.\n /// @param _value Approved amount for the transfer and stake.\n /// @param _operator The new operator address.\n /// @param _extraData Data for stake delegation as passed to receiveApproval.\n function delegate(\n address _from,\n uint256 _value,\n address _operator,\n bytes memory _extraData\n ) internal {\n require(_value >= minimumStake(), \"Less than the minimum stake\");\n\n address payable beneficiary = address(uint160(_extraData.toAddress(0)));\n address authorizer = _extraData.toAddress(40);\n\n operators[_operator] = Operator(\n OperatorParams.pack(_value, block.timestamp, 0),\n _from,\n beneficiary,\n authorizer\n );\n\n grantStaking.tryCapturingDelegationData(\n tokenGrant,\n address(escrow),\n _from,\n _operator,\n _extraData\n );\n\n emit StakeDelegated(_from, _operator);\n emit OperatorStaked(_operator, beneficiary, authorizer, _value);\n }\n\n /// @notice Performs top-up to an existing operator. Tokens added during\n /// stake initialization period are immediatelly added to the stake and\n /// stake initialization timer is reset to the current block. Tokens added\n /// in a top-up after the stake initialization period is over are not\n /// included in the operator stake until the initialization period for\n /// a top-up passes and top-up is committed. Operator must not have the stake\n /// undelegated. It is expected that the top-up is done from the same source\n /// of tokens as the initial delegation. That is, if the tokens were\n /// delegated from a grant, top-up has to be performed from the same grant.\n /// If the delegation was done using liquid tokens, only liquid tokens from\n /// the same owner can be used to top-up the stake.\n /// Top-up can not be cancelled so it is important to be careful with the\n /// amount of KEEP added to the stake.\n /// @param _from The owner of the tokens who approved them to transfer.\n /// @param _value Approved amount for the transfer and top-up to\n /// an existing stake.\n /// @param _operator The new operator address.\n /// @param _extraData Data for stake delegation as passed to receiveApproval\n function topUp(\n address _from,\n uint256 _value,\n address _operator,\n bytes memory _extraData\n ) internal {\n // Top-up comes from a grant if it's been initiated from TokenGrantStake\n // contract or if it's been initiated from TokenStakingEscrow by\n // redelegation.\n bool isFromGrant =\n address(tokenGrant.grantStakes(_operator)) == _from ||\n address(escrow) == _from;\n\n if (grantStaking.hasGrantDelegated(_operator)) {\n // Operator has grant delegated. We need to see if the top-up\n // is performed also from a grant.\n require(isFromGrant, \"Must be from a grant\");\n // If it is from a grant, we need to make sure it's from the same\n // grant as the original delegation. We do not want to mix unlocking\n // schedules.\n uint256 previousGrantId =\n grantStaking.getGrantForOperator(_operator);\n (, uint256 grantId) =\n grantStaking.tryCapturingDelegationData(\n tokenGrant,\n address(escrow),\n _from,\n _operator,\n _extraData\n );\n require(grantId == previousGrantId, \"Not the same grant\");\n } else {\n // Operator has no grant delegated. We need to see if the top-up\n // is performed from liquid tokens of the same owner.\n require(!isFromGrant, \"Must not be from a grant\");\n require(operators[_operator].owner == _from, \"Not the same owner\");\n }\n\n uint256 operatorParams = operators[_operator].packedParams;\n if (!_isInitialized(operatorParams)) {\n // If the stake is not yet initialized, we add tokens immediately\n // but we also reset stake initialization time counter.\n operators[_operator].packedParams = topUps.instantComplete(\n _value,\n _operator,\n operatorParams,\n escrow\n );\n } else {\n // If the stake is initialized, we do NOT add tokens immediately.\n // We initiate the top-up and will add tokens to the stake only\n // after the initialization period for a top-up passes.\n topUps.initiate(_value, _operator, operatorParams, escrow);\n }\n }\n\n /// @notice Is the operator with the given params initialized\n function _isInitialized(uint256 _operatorParams)\n internal\n view\n returns (bool)\n {\n return\n block.timestamp >\n _operatorParams.getCreationTimestamp().add(initializationPeriod);\n }\n\n /// @notice Is the operator with the given params undelegating\n function _isUndelegating(uint256 _operatorParams)\n internal\n view\n returns (bool)\n {\n uint256 undelegatedAt = _operatorParams.getUndelegationTimestamp();\n return (undelegatedAt != 0) && (block.timestamp > undelegatedAt);\n }\n\n /// @notice Has the operator with the given params finished undelegating\n function _isUndelegatingFinished(uint256 _operatorParams)\n internal\n view\n returns (bool)\n {\n uint256 undelegatedAt = _operatorParams.getUndelegationTimestamp();\n return\n (undelegatedAt != 0) &&\n (block.timestamp > undelegatedAt.add(undelegationPeriod()));\n }\n\n /// @notice Get whether the operator's stake is released\n /// as far as the operator contract is concerned.\n /// If the operator contract has a lock on the operator,\n /// the operator's stake is be released when the lock expires.\n /// Otherwise the stake is released when the operator finishes undelegating.\n function _isStakeReleased(\n address _operator,\n uint256 _operatorParams,\n address _operatorContract\n ) internal view returns (bool) {\n return\n _isUndelegatingFinished(_operatorParams) &&\n locks.isStakeReleased(_operator, _operatorContract);\n }\n\n function transferOrDeposit(\n address _owner,\n address _operator,\n uint256 _amount\n ) internal {\n if (grantStaking.hasGrantDelegated(_operator)) {\n // For tokens staked from a grant, transfer them to the escrow.\n TokenSender(address(token)).approveAndCall(\n address(escrow),\n _amount,\n abi.encode(\n _operator,\n grantStaking.getGrantForOperator(_operator)\n )\n );\n } else {\n // For liquid tokens staked, transfer them straight to the owner.\n token.safeTransfer(_owner, _amount);\n }\n }\n}\n", - "sourcePath": "/Users/michalina/workspace2/keep-core/solidity-v1/contracts/TokenStaking.sol", - "ast": { - "absolutePath": "project:/contracts/TokenStaking.sol", - "exportedSymbols": { - "TokenStaking": [12435] - }, - "id": 12436, - "nodeType": "SourceUnit", - "nodes": [ - { - "id": 10973, - "literals": ["solidity", "0.5", ".17"], - "nodeType": "PragmaDirective", - "src": "1837:23:39" - }, - { - "absolutePath": "openzeppelin-solidity/contracts/token/ERC20/ERC20Burnable.sol", - "file": "openzeppelin-solidity/contracts/token/ERC20/ERC20Burnable.sol", - "id": 10974, - "nodeType": "ImportDirective", - "scope": 12436, - "sourceUnit": 1024, - "src": "1862:71:39", - "symbolAliases": [], - "unitAlias": "" - }, - { - "absolutePath": "openzeppelin-solidity/contracts/token/ERC20/SafeERC20.sol", - "file": "openzeppelin-solidity/contracts/token/ERC20/SafeERC20.sol", - "id": 10975, - "nodeType": "ImportDirective", - "scope": 12436, - "sourceUnit": 1371, - "src": "1934:67:39", - "symbolAliases": [], - "unitAlias": "" - }, - { - "absolutePath": "openzeppelin-solidity/contracts/math/SafeMath.sol", - "file": "openzeppelin-solidity/contracts/math/SafeMath.sol", - "id": 10976, - "nodeType": "ImportDirective", - "scope": 12436, - "sourceUnit": 471, - "src": "2002:59:39", - "symbolAliases": [], - "unitAlias": "" - }, - { - "absolutePath": "project:/contracts/StakeDelegatable.sol", - "file": "./StakeDelegatable.sol", - "id": 10977, - "nodeType": "ImportDirective", - "scope": 12436, - "sourceUnit": 8890, - "src": "2062:32:39", - "symbolAliases": [], - "unitAlias": "" - }, - { - "absolutePath": "project:/contracts/libraries/staking/MinimumStakeSchedule.sol", - "file": "./libraries/staking/MinimumStakeSchedule.sol", - "id": 10978, - "nodeType": "ImportDirective", - "scope": 12436, - "sourceUnit": 20127, - "src": "2095:54:39", - "symbolAliases": [], - "unitAlias": "" - }, - { - "absolutePath": "project:/contracts/libraries/staking/GrantStaking.sol", - "file": "./libraries/staking/GrantStaking.sol", - "id": 10979, - "nodeType": "ImportDirective", - "scope": 12436, - "sourceUnit": 19500, - "src": "2150:46:39", - "symbolAliases": [], - "unitAlias": "" - }, - { - "absolutePath": "project:/contracts/libraries/staking/Locks.sol", - "file": "./libraries/staking/Locks.sol", - "id": 10980, - "nodeType": "ImportDirective", - "scope": 12436, - "sourceUnit": 20066, - "src": "2197:39:39", - "symbolAliases": [], - "unitAlias": "" - }, - { - "absolutePath": "project:/contracts/libraries/staking/TopUps.sol", - "file": "./libraries/staking/TopUps.sol", - "id": 10981, - "nodeType": "ImportDirective", - "scope": 12436, - "sourceUnit": 20408, - "src": "2237:40:39", - "symbolAliases": [], - "unitAlias": "" - }, - { - "absolutePath": "project:/contracts/utils/PercentUtils.sol", - "file": "./utils/PercentUtils.sol", - "id": 10982, - "nodeType": "ImportDirective", - "scope": 12436, - "sourceUnit": 28062, - "src": "2278:34:39", - "symbolAliases": [], - "unitAlias": "" - }, - { - "absolutePath": "project:/contracts/utils/BytesLib.sol", - "file": "./utils/BytesLib.sol", - "id": 10983, - "nodeType": "ImportDirective", - "scope": 12436, - "sourceUnit": 27493, - "src": "2313:30:39", - "symbolAliases": [], - "unitAlias": "" - }, - { - "absolutePath": "project:/contracts/Authorizations.sol", - "file": "./Authorizations.sol", - "id": 10984, - "nodeType": "ImportDirective", - "scope": 12436, - "sourceUnit": 1784, - "src": "2344:30:39", - "symbolAliases": [], - "unitAlias": "" - }, - { - "absolutePath": "project:/contracts/TokenStakingEscrow.sol", - "file": "./TokenStakingEscrow.sol", - "id": 10985, - "nodeType": "ImportDirective", - "scope": 12436, - "sourceUnit": 13400, - "src": "2375:34:39", - "symbolAliases": [], - "unitAlias": "" - }, - { - "absolutePath": "project:/contracts/TokenSender.sol", - "file": "./TokenSender.sol", - "id": 10986, - "nodeType": "ImportDirective", - "scope": 12436, - "sourceUnit": 10972, - "src": "2410:27:39", - "symbolAliases": [], - "unitAlias": "" - }, - { - "baseContracts": [ - { - "arguments": null, - "baseName": { - "contractScope": null, - "id": 10987, - "name": "Authorizations", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 1783, - "src": "2715:14:39", - "typeDescriptions": { - "typeIdentifier": "t_contract$_Authorizations_$1783", - "typeString": "contract Authorizations" - } - }, - "id": 10988, - "nodeType": "InheritanceSpecifier", - "src": "2715:14:39" - }, - { - "arguments": null, - "baseName": { - "contractScope": null, - "id": 10989, - "name": "StakeDelegatable", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 8889, - "src": "2731:16:39", - "typeDescriptions": { - "typeIdentifier": "t_contract$_StakeDelegatable_$8889", - "typeString": "contract StakeDelegatable" - } - }, - "id": 10990, - "nodeType": "InheritanceSpecifier", - "src": "2731:16:39" - } - ], - "contractDependencies": [1613, 1783, 8889], - "contractKind": "contract", - "documentation": "@title TokenStaking\n @notice A token staking contract for a specified standard ERC20Burnable token.\n A holder of the specified token can stake delegate its tokens to this contract\n and recover the stake after undelegation period is over.", - "fullyImplemented": true, - "id": 12435, - "linearizedBaseContracts": [12435, 8889, 1783, 1613], - "name": "TokenStaking", - "nodeType": "ContractDefinition", - "nodes": [ - { - "id": 10993, - "libraryName": { - "contractScope": null, - "id": 10991, - "name": "BytesLib", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 27492, - "src": "2760:8:39", - "typeDescriptions": { - "typeIdentifier": "t_contract$_BytesLib_$27492", - "typeString": "library BytesLib" - } - }, - "nodeType": "UsingForDirective", - "src": "2754:25:39", - "typeName": { - "id": 10992, - "name": "bytes", - "nodeType": "ElementaryTypeName", - "src": "2773:5:39", - "typeDescriptions": { - "typeIdentifier": "t_bytes_storage_ptr", - "typeString": "bytes" - } - } - }, - { - "id": 10996, - "libraryName": { - "contractScope": null, - "id": 10994, - "name": "SafeMath", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 470, - "src": "2790:8:39", - "typeDescriptions": { - "typeIdentifier": "t_contract$_SafeMath_$470", - "typeString": "library SafeMath" - } - }, - "nodeType": "UsingForDirective", - "src": "2784:27:39", - "typeName": { - "id": 10995, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "2803:7:39", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - }, - { - "id": 10999, - "libraryName": { - "contractScope": null, - "id": 10997, - "name": "PercentUtils", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 28061, - "src": "2822:12:39", - "typeDescriptions": { - "typeIdentifier": "t_contract$_PercentUtils_$28061", - "typeString": "library PercentUtils" - } - }, - "nodeType": "UsingForDirective", - "src": "2816:31:39", - "typeName": { - "id": 10998, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "2839:7:39", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - }, - { - "id": 11002, - "libraryName": { - "contractScope": null, - "id": 11000, - "name": "SafeERC20", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 1370, - "src": "2858:9:39", - "typeDescriptions": { - "typeIdentifier": "t_contract$_SafeERC20_$1370", - "typeString": "library SafeERC20" - } - }, - "nodeType": "UsingForDirective", - "src": "2852:34:39", - "typeName": { - "contractScope": null, - "id": 11001, - "name": "ERC20Burnable", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 1023, - "src": "2872:13:39", - "typeDescriptions": { - "typeIdentifier": "t_contract$_ERC20Burnable_$1023", - "typeString": "contract ERC20Burnable" - } - } - }, - { - "id": 11005, - "libraryName": { - "contractScope": null, - "id": 11003, - "name": "GrantStaking", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 19499, - "src": "2897:12:39", - "typeDescriptions": { - "typeIdentifier": "t_contract$_GrantStaking_$19499", - "typeString": "library GrantStaking" - } - }, - "nodeType": "UsingForDirective", - "src": "2891:44:39", - "typeName": { - "contractScope": null, - "id": 11004, - "name": "GrantStaking.Storage", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 19231, - "src": "2914:20:39", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Storage_$19231_storage_ptr", - "typeString": "struct GrantStaking.Storage" - } - } - }, - { - "id": 11008, - "libraryName": { - "contractScope": null, - "id": 11006, - "name": "Locks", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 20065, - "src": "2946:5:39", - "typeDescriptions": { - "typeIdentifier": "t_contract$_Locks_$20065", - "typeString": "library Locks" - } - }, - "nodeType": "UsingForDirective", - "src": "2940:30:39", - "typeName": { - "contractScope": null, - "id": 11007, - "name": "Locks.Storage", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 19752, - "src": "2956:13:39", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Storage_$19752_storage_ptr", - "typeString": "struct Locks.Storage" - } - } - }, - { - "id": 11011, - "libraryName": { - "contractScope": null, - "id": 11009, - "name": "TopUps", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 20407, - "src": "2981:6:39", - "typeDescriptions": { - "typeIdentifier": "t_contract$_TopUps_$20407", - "typeString": "library TopUps" - } - }, - "nodeType": "UsingForDirective", - "src": "2975:32:39", - "typeName": { - "contractScope": null, - "id": 11010, - "name": "TopUps.Storage", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 20159, - "src": "2992:14:39", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Storage_$20159_storage_ptr", - "typeString": "struct TopUps.Storage" - } - } - }, - { - "anonymous": false, - "documentation": null, - "id": 11017, - "name": "StakeDelegated", - "nodeType": "EventDefinition", - "parameters": { - "id": 11016, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 11013, - "indexed": true, - "name": "owner", - "nodeType": "VariableDeclaration", - "scope": 11017, - "src": "3034:21:39", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 11012, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "3034:7:39", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 11015, - "indexed": true, - "name": "operator", - "nodeType": "VariableDeclaration", - "scope": 11017, - "src": "3057:24:39", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 11014, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "3057:7:39", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "3033:49:39" - }, - "src": "3013:70:39" - }, - { - "anonymous": false, - "documentation": null, - "id": 11027, - "name": "OperatorStaked", - "nodeType": "EventDefinition", - "parameters": { - "id": 11026, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 11019, - "indexed": true, - "name": "operator", - "nodeType": "VariableDeclaration", - "scope": 11027, - "src": "3118:24:39", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 11018, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "3118:7:39", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 11021, - "indexed": true, - "name": "beneficiary", - "nodeType": "VariableDeclaration", - "scope": 11027, - "src": "3152:27:39", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 11020, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "3152:7:39", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 11023, - "indexed": true, - "name": "authorizer", - "nodeType": "VariableDeclaration", - "scope": 11027, - "src": "3189:26:39", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 11022, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "3189:7:39", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 11025, - "indexed": false, - "name": "value", - "nodeType": "VariableDeclaration", - "scope": 11027, - "src": "3225:13:39", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 11024, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "3225:7:39", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "3108:136:39" - }, - "src": "3088:157:39" - }, - { - "anonymous": false, - "documentation": null, - "id": 11033, - "name": "StakeOwnershipTransferred", - "nodeType": "EventDefinition", - "parameters": { - "id": 11032, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 11029, - "indexed": true, - "name": "operator", - "nodeType": "VariableDeclaration", - "scope": 11033, - "src": "3291:24:39", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 11028, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "3291:7:39", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 11031, - "indexed": true, - "name": "newOwner", - "nodeType": "VariableDeclaration", - "scope": 11033, - "src": "3325:24:39", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 11030, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "3325:7:39", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "3281:74:39" - }, - "src": "3250:106:39" - }, - { - "anonymous": false, - "documentation": null, - "id": 11039, - "name": "TopUpInitiated", - "nodeType": "EventDefinition", - "parameters": { - "id": 11038, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 11035, - "indexed": true, - "name": "operator", - "nodeType": "VariableDeclaration", - "scope": 11039, - "src": "3382:24:39", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 11034, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "3382:7:39", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 11037, - "indexed": false, - "name": "topUp", - "nodeType": "VariableDeclaration", - "scope": 11039, - "src": "3408:13:39", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 11036, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "3408:7:39", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "3381:41:39" - }, - "src": "3361:62:39" - }, - { - "anonymous": false, - "documentation": null, - "id": 11045, - "name": "TopUpCompleted", - "nodeType": "EventDefinition", - "parameters": { - "id": 11044, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 11041, - "indexed": true, - "name": "operator", - "nodeType": "VariableDeclaration", - "scope": 11045, - "src": "3449:24:39", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 11040, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "3449:7:39", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 11043, - "indexed": false, - "name": "newAmount", - "nodeType": "VariableDeclaration", - "scope": 11045, - "src": "3475:17:39", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 11042, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "3475:7:39", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "3448:45:39" - }, - "src": "3428:66:39" - }, - { - "anonymous": false, - "documentation": null, - "id": 11051, - "name": "Undelegated", - "nodeType": "EventDefinition", - "parameters": { - "id": 11050, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 11047, - "indexed": true, - "name": "operator", - "nodeType": "VariableDeclaration", - "scope": 11051, - "src": "3517:24:39", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 11046, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "3517:7:39", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 11049, - "indexed": false, - "name": "undelegatedAt", - "nodeType": "VariableDeclaration", - "scope": 11051, - "src": "3543:21:39", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 11048, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "3543:7:39", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "3516:49:39" - }, - "src": "3499:67:39" - }, - { - "anonymous": false, - "documentation": null, - "id": 11055, - "name": "RecoveredStake", - "nodeType": "EventDefinition", - "parameters": { - "id": 11054, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 11053, - "indexed": false, - "name": "operator", - "nodeType": "VariableDeclaration", - "scope": 11055, - "src": "3592:16:39", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 11052, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "3592:7:39", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "3591:18:39" - }, - "src": "3571:39:39" - }, - { - "anonymous": false, - "documentation": null, - "id": 11061, - "name": "TokensSlashed", - "nodeType": "EventDefinition", - "parameters": { - "id": 11060, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 11057, - "indexed": true, - "name": "operator", - "nodeType": "VariableDeclaration", - "scope": 11061, - "src": "3635:24:39", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 11056, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "3635:7:39", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 11059, - "indexed": false, - "name": "amount", - "nodeType": "VariableDeclaration", - "scope": 11061, - "src": "3661:14:39", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 11058, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "3661:7:39", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "3634:42:39" - }, - "src": "3615:62:39" - }, - { - "anonymous": false, - "documentation": null, - "id": 11067, - "name": "TokensSeized", - "nodeType": "EventDefinition", - "parameters": { - "id": 11066, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 11063, - "indexed": true, - "name": "operator", - "nodeType": "VariableDeclaration", - "scope": 11067, - "src": "3701:24:39", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 11062, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "3701:7:39", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 11065, - "indexed": false, - "name": "amount", - "nodeType": "VariableDeclaration", - "scope": 11067, - "src": "3727:14:39", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 11064, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "3727:7:39", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "3700:42:39" - }, - "src": "3682:61:39" - }, - { - "anonymous": false, - "documentation": null, - "id": 11075, - "name": "StakeLocked", - "nodeType": "EventDefinition", - "parameters": { - "id": 11074, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 11069, - "indexed": true, - "name": "operator", - "nodeType": "VariableDeclaration", - "scope": 11075, - "src": "3775:24:39", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 11068, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "3775:7:39", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 11071, - "indexed": false, - "name": "lockCreator", - "nodeType": "VariableDeclaration", - "scope": 11075, - "src": "3809:19:39", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 11070, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "3809:7:39", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 11073, - "indexed": false, - "name": "until", - "nodeType": "VariableDeclaration", - "scope": 11075, - "src": "3838:13:39", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 11072, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "3838:7:39", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "3765:92:39" - }, - "src": "3748:110:39" - }, - { - "anonymous": false, - "documentation": null, - "id": 11081, - "name": "LockReleased", - "nodeType": "EventDefinition", - "parameters": { - "id": 11080, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 11077, - "indexed": true, - "name": "operator", - "nodeType": "VariableDeclaration", - "scope": 11081, - "src": "3882:24:39", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 11076, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "3882:7:39", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 11079, - "indexed": false, - "name": "lockCreator", - "nodeType": "VariableDeclaration", - "scope": 11081, - "src": "3908:19:39", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 11078, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "3908:7:39", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "3881:47:39" - }, - "src": "3863:66:39" - }, - { - "anonymous": false, - "documentation": null, - "id": 11087, - "name": "ExpiredLockReleased", - "nodeType": "EventDefinition", - "parameters": { - "id": 11086, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 11083, - "indexed": true, - "name": "operator", - "nodeType": "VariableDeclaration", - "scope": 11087, - "src": "3960:24:39", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 11082, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "3960:7:39", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 11085, - "indexed": false, - "name": "lockCreator", - "nodeType": "VariableDeclaration", - "scope": 11087, - "src": "3986:19:39", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 11084, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "3986:7:39", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "3959:47:39" - }, - "src": "3934:73:39" - }, - { - "constant": false, - "id": 11089, - "name": "deployedAt", - "nodeType": "VariableDeclaration", - "scope": 12435, - "src": "4013:25:39", - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 11088, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "4013:7:39", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "public" - }, - { - "constant": false, - "id": 11091, - "name": "initializationPeriod", - "nodeType": "VariableDeclaration", - "scope": 12435, - "src": "4044:35:39", - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 11090, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "4044:7:39", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "public" - }, - { - "constant": false, - "id": 11093, - "name": "token", - "nodeType": "VariableDeclaration", - "scope": 12435, - "src": "4124:28:39", - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_contract$_ERC20Burnable_$1023", - "typeString": "contract ERC20Burnable" - }, - "typeName": { - "contractScope": null, - "id": 11092, - "name": "ERC20Burnable", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 1023, - "src": "4124:13:39", - "typeDescriptions": { - "typeIdentifier": "t_contract$_ERC20Burnable_$1023", - "typeString": "contract ERC20Burnable" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 11095, - "name": "tokenGrant", - "nodeType": "VariableDeclaration", - "scope": 12435, - "src": "4158:30:39", - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_contract$_TokenGrant_$10702", - "typeString": "contract TokenGrant" - }, - "typeName": { - "contractScope": null, - "id": 11094, - "name": "TokenGrant", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 10702, - "src": "4158:10:39", - "typeDescriptions": { - "typeIdentifier": "t_contract$_TokenGrant_$10702", - "typeString": "contract TokenGrant" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 11097, - "name": "escrow", - "nodeType": "VariableDeclaration", - "scope": 12435, - "src": "4194:34:39", - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_contract$_TokenStakingEscrow_$13399", - "typeString": "contract TokenStakingEscrow" - }, - "typeName": { - "contractScope": null, - "id": 11096, - "name": "TokenStakingEscrow", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 13399, - "src": "4194:18:39", - "typeDescriptions": { - "typeIdentifier": "t_contract$_TokenStakingEscrow_$13399", - "typeString": "contract TokenStakingEscrow" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 11099, - "name": "grantStaking", - "nodeType": "VariableDeclaration", - "scope": 12435, - "src": "4235:42:39", - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Storage_$19231_storage", - "typeString": "struct GrantStaking.Storage" - }, - "typeName": { - "contractScope": null, - "id": 11098, - "name": "GrantStaking.Storage", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 19231, - "src": "4235:20:39", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Storage_$19231_storage_ptr", - "typeString": "struct GrantStaking.Storage" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 11101, - "name": "locks", - "nodeType": "VariableDeclaration", - "scope": 12435, - "src": "4283:28:39", - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Storage_$19752_storage", - "typeString": "struct Locks.Storage" - }, - "typeName": { - "contractScope": null, - "id": 11100, - "name": "Locks.Storage", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 19752, - "src": "4283:13:39", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Storage_$19752_storage_ptr", - "typeString": "struct Locks.Storage" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 11103, - "name": "topUps", - "nodeType": "VariableDeclaration", - "scope": 12435, - "src": "4317:30:39", - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Storage_$20159_storage", - "typeString": "struct TopUps.Storage" - }, - "typeName": { - "contractScope": null, - "id": 11102, - "name": "TopUps.Storage", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 20159, - "src": "4317:14:39", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Storage_$20159_storage_ptr", - "typeString": "struct TopUps.Storage" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": true, - "id": 11106, - "name": "twoWeeks", - "nodeType": "VariableDeclaration", - "scope": 12435, - "src": "4354:44:39", - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 11104, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "4354:7:39", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": { - "argumentTypes": null, - "hexValue": "31323039363030", - "id": 11105, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "4391:7:39", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_1209600_by_1", - "typeString": "int_const 1209600" - }, - "value": "1209600" - }, - "visibility": "internal" - }, - { - "constant": true, - "id": 11109, - "name": "twoMonths", - "nodeType": "VariableDeclaration", - "scope": 12435, - "src": "4413:45:39", - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 11107, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "4413:7:39", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": { - "argumentTypes": null, - "hexValue": "35313834303030", - "id": 11108, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "4451:7:39", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_5184000_by_1", - "typeString": "int_const 5184000" - }, - "value": "5184000" - }, - "visibility": "internal" - }, - { - "constant": true, - "id": 11112, - "name": "minimumStakeScheduleStart", - "nodeType": "VariableDeclaration", - "scope": 12435, - "src": "4606:64:39", - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 11110, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "4606:7:39", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": { - "argumentTypes": null, - "hexValue": "31353838303432333636", - "id": 11111, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "4660:10:39", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_1588042366_by_1", - "typeString": "int_const 1588042366" - }, - "value": "1588042366" - }, - "visibility": "internal" - }, - { - "body": { - "id": 11153, - "nodeType": "Block", - "src": "5411:213:39", - "statements": [ - { - "expression": { - "argumentTypes": null, - "id": 11130, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "id": 11128, - "name": "token", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 11093, - "src": "5421:5:39", - "typeDescriptions": { - "typeIdentifier": "t_contract$_ERC20Burnable_$1023", - "typeString": "contract ERC20Burnable" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "id": 11129, - "name": "_token", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 11114, - "src": "5429:6:39", - "typeDescriptions": { - "typeIdentifier": "t_contract$_ERC20Burnable_$1023", - "typeString": "contract ERC20Burnable" - } - }, - "src": "5421:14:39", - "typeDescriptions": { - "typeIdentifier": "t_contract$_ERC20Burnable_$1023", - "typeString": "contract ERC20Burnable" - } - }, - "id": 11131, - "nodeType": "ExpressionStatement", - "src": "5421:14:39" - }, - { - "expression": { - "argumentTypes": null, - "id": 11134, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "id": 11132, - "name": "tokenGrant", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 11095, - "src": "5445:10:39", - "typeDescriptions": { - "typeIdentifier": "t_contract$_TokenGrant_$10702", - "typeString": "contract TokenGrant" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "id": 11133, - "name": "_tokenGrant", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 11116, - "src": "5458:11:39", - "typeDescriptions": { - "typeIdentifier": "t_contract$_TokenGrant_$10702", - "typeString": "contract TokenGrant" - } - }, - "src": "5445:24:39", - "typeDescriptions": { - "typeIdentifier": "t_contract$_TokenGrant_$10702", - "typeString": "contract TokenGrant" - } - }, - "id": 11135, - "nodeType": "ExpressionStatement", - "src": "5445:24:39" - }, - { - "expression": { - "argumentTypes": null, - "id": 11138, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "id": 11136, - "name": "escrow", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 11097, - "src": "5479:6:39", - "typeDescriptions": { - "typeIdentifier": "t_contract$_TokenStakingEscrow_$13399", - "typeString": "contract TokenStakingEscrow" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "id": 11137, - "name": "_escrow", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 11118, - "src": "5488:7:39", - "typeDescriptions": { - "typeIdentifier": "t_contract$_TokenStakingEscrow_$13399", - "typeString": "contract TokenStakingEscrow" - } - }, - "src": "5479:16:39", - "typeDescriptions": { - "typeIdentifier": "t_contract$_TokenStakingEscrow_$13399", - "typeString": "contract TokenStakingEscrow" - } - }, - "id": 11139, - "nodeType": "ExpressionStatement", - "src": "5479:16:39" - }, - { - "expression": { - "argumentTypes": null, - "id": 11142, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "id": 11140, - "name": "registry", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1627, - "src": "5505:8:39", - "typeDescriptions": { - "typeIdentifier": "t_contract$_KeepRegistry_$6120", - "typeString": "contract KeepRegistry" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "id": 11141, - "name": "_registry", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 11120, - "src": "5516:9:39", - "typeDescriptions": { - "typeIdentifier": "t_contract$_KeepRegistry_$6120", - "typeString": "contract KeepRegistry" - } - }, - "src": "5505:20:39", - "typeDescriptions": { - "typeIdentifier": "t_contract$_KeepRegistry_$6120", - "typeString": "contract KeepRegistry" - } - }, - "id": 11143, - "nodeType": "ExpressionStatement", - "src": "5505:20:39" - }, - { - "expression": { - "argumentTypes": null, - "id": 11146, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "id": 11144, - "name": "initializationPeriod", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 11091, - "src": "5535:20:39", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "id": 11145, - "name": "_initializationPeriod", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 11122, - "src": "5558:21:39", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "5535:44:39", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 11147, - "nodeType": "ExpressionStatement", - "src": "5535:44:39" - }, - { - "expression": { - "argumentTypes": null, - "id": 11151, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "id": 11148, - "name": "deployedAt", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 11089, - "src": "5589:10:39", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 11149, - "name": "block", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 28136, - "src": "5602:5:39", - "typeDescriptions": { - "typeIdentifier": "t_magic_block", - "typeString": "block" - } - }, - "id": 11150, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "timestamp", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "5602:15:39", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "5589:28:39", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 11152, - "nodeType": "ExpressionStatement", - "src": "5589:28:39" - } - ] - }, - "documentation": "@notice Creates a token staking contract for a provided Standard ERC20Burnable token.\n @param _token KEEP token contract.\n @param _tokenGrant KEEP token grant contract.\n @param _escrow Escrow dedicated for this staking contract.\n @param _registry Keep contract registry contract.\n @param _initializationPeriod To avoid certain attacks on work selection, recently created\n operators must wait for a specific period of time before being eligible for work selection.", - "id": 11154, - "implemented": true, - "kind": "constructor", - "modifiers": [ - { - "arguments": [ - { - "argumentTypes": null, - "id": 11125, - "name": "_registry", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 11120, - "src": "5400:9:39", - "typeDescriptions": { - "typeIdentifier": "t_contract$_KeepRegistry_$6120", - "typeString": "contract KeepRegistry" - } - } - ], - "id": 11126, - "modifierName": { - "argumentTypes": null, - "id": 11124, - "name": "Authorizations", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1783, - "src": "5385:14:39", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_Authorizations_$1783_$", - "typeString": "type(contract Authorizations)" - } - }, - "nodeType": "ModifierInvocation", - "src": "5385:25:39" - } - ], - "name": "", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 11123, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 11114, - "name": "_token", - "nodeType": "VariableDeclaration", - "scope": 11154, - "src": "5212:20:39", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_contract$_ERC20Burnable_$1023", - "typeString": "contract ERC20Burnable" - }, - "typeName": { - "contractScope": null, - "id": 11113, - "name": "ERC20Burnable", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 1023, - "src": "5212:13:39", - "typeDescriptions": { - "typeIdentifier": "t_contract$_ERC20Burnable_$1023", - "typeString": "contract ERC20Burnable" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 11116, - "name": "_tokenGrant", - "nodeType": "VariableDeclaration", - "scope": 11154, - "src": "5242:22:39", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_contract$_TokenGrant_$10702", - "typeString": "contract TokenGrant" - }, - "typeName": { - "contractScope": null, - "id": 11115, - "name": "TokenGrant", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 10702, - "src": "5242:10:39", - "typeDescriptions": { - "typeIdentifier": "t_contract$_TokenGrant_$10702", - "typeString": "contract TokenGrant" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 11118, - "name": "_escrow", - "nodeType": "VariableDeclaration", - "scope": 11154, - "src": "5274:26:39", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_contract$_TokenStakingEscrow_$13399", - "typeString": "contract TokenStakingEscrow" - }, - "typeName": { - "contractScope": null, - "id": 11117, - "name": "TokenStakingEscrow", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 13399, - "src": "5274:18:39", - "typeDescriptions": { - "typeIdentifier": "t_contract$_TokenStakingEscrow_$13399", - "typeString": "contract TokenStakingEscrow" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 11120, - "name": "_registry", - "nodeType": "VariableDeclaration", - "scope": 11154, - "src": "5310:22:39", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_contract$_KeepRegistry_$6120", - "typeString": "contract KeepRegistry" - }, - "typeName": { - "contractScope": null, - "id": 11119, - "name": "KeepRegistry", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 6120, - "src": "5310:12:39", - "typeDescriptions": { - "typeIdentifier": "t_contract$_KeepRegistry_$6120", - "typeString": "contract KeepRegistry" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 11122, - "name": "_initializationPeriod", - "nodeType": "VariableDeclaration", - "scope": 11154, - "src": "5342:29:39", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 11121, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "5342:7:39", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "5202:175:39" - }, - "returnParameters": { - "id": 11127, - "nodeType": "ParameterList", - "parameters": [], - "src": "5411:0:39" - }, - "scope": 12435, - "src": "5191:433:39", - "stateMutability": "nonpayable", - "superFunction": null, - "visibility": "public" - }, - { - "body": { - "id": 11164, - "nodeType": "Block", - "src": "6025:79:39", - "statements": [ - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 11161, - "name": "minimumStakeScheduleStart", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 11112, - "src": "6071:25:39", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "expression": { - "argumentTypes": null, - "id": 11159, - "name": "MinimumStakeSchedule", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 20126, - "src": "6042:20:39", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_MinimumStakeSchedule_$20126_$", - "typeString": "type(library MinimumStakeSchedule)" - } - }, - "id": 11160, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "current", - "nodeType": "MemberAccess", - "referencedDeclaration": 20125, - "src": "6042:28:39", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_uint256_$", - "typeString": "function (uint256) view returns (uint256)" - } - }, - "id": 11162, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "6042:55:39", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "functionReturnParameters": 11158, - "id": 11163, - "nodeType": "Return", - "src": "6035:62:39" - } - ] - }, - "documentation": "@notice Returns minimum amount of KEEP that allows sMPC cluster client to\n participate in the Keep network. Expressed as number with 18-decimal places.\n Initial minimum stake is higher than the final and lowered periodically based\n on the amount of steps and the length of the minimum stake schedule in seconds.", - "id": 11165, - "implemented": true, - "kind": "function", - "modifiers": [], - "name": "minimumStake", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 11155, - "nodeType": "ParameterList", - "parameters": [], - "src": "5992:2:39" - }, - "returnParameters": { - "id": 11158, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 11157, - "name": "", - "nodeType": "VariableDeclaration", - "scope": 11165, - "src": "6016:7:39", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 11156, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "6016:7:39", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "6015:9:39" - }, - "scope": 12435, - "src": "5971:133:39", - "stateMutability": "view", - "superFunction": null, - "visibility": "public" - }, - { - "body": { - "id": 11181, - "nodeType": "Block", - "src": "6573:102:39", - "statements": [ - { - "expression": { - "argumentTypes": null, - "condition": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 11176, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 11170, - "name": "block", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 28136, - "src": "6602:5:39", - "typeDescriptions": { - "typeIdentifier": "t_magic_block", - "typeString": "block" - } - }, - "id": 11171, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "timestamp", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "6602:15:39", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "<", - "rightExpression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 11174, - "name": "twoMonths", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 11109, - "src": "6635:9:39", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "expression": { - "argumentTypes": null, - "id": 11172, - "name": "deployedAt", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 11089, - "src": "6620:10:39", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 11173, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "add", - "nodeType": "MemberAccess", - "referencedDeclaration": 310, - "src": "6620:14:39", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", - "typeString": "function (uint256,uint256) pure returns (uint256)" - } - }, - "id": 11175, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "6620:25:39", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "6602:43:39", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "falseExpression": { - "argumentTypes": null, - "id": 11178, - "name": "twoMonths", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 11109, - "src": "6659:9:39", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 11179, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "Conditional", - "src": "6602:66:39", - "trueExpression": { - "argumentTypes": null, - "id": 11177, - "name": "twoWeeks", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 11106, - "src": "6648:8:39", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "functionReturnParameters": 11169, - "id": 11180, - "nodeType": "Return", - "src": "6583:85:39" - } - ] - }, - "documentation": "@notice Returns the current value of the undelegation period.\n The staking contract guarantees that an undelegated operator’s stakes\n will stay locked for a period of time after undelegation, and thus\n available as collateral for any work the operator is engaged in.\n The undelegation period is two weeks for the first two months and\n two months after that.", - "id": 11182, - "implemented": true, - "kind": "function", - "modifiers": [], - "name": "undelegationPeriod", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 11166, - "nodeType": "ParameterList", - "parameters": [], - "src": "6540:2:39" - }, - "returnParameters": { - "id": 11169, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 11168, - "name": "", - "nodeType": "VariableDeclaration", - "scope": 11182, - "src": "6564:7:39", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 11167, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "6564:7:39", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "6563:9:39" - }, - "scope": 12435, - "src": "6513:162:39", - "stateMutability": "view", - "superFunction": null, - "visibility": "public" - }, - { - "body": { - "id": 11252, - "nodeType": "Block", - "src": "8202:806:39", - "statements": [ - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_contract$_ERC20Burnable_$1023", - "typeString": "contract ERC20Burnable" - }, - "id": 11198, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 11195, - "name": "_token", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 11188, - "src": "8234:6:39", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "id": 11194, - "name": "ERC20Burnable", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1023, - "src": "8220:13:39", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_ERC20Burnable_$1023_$", - "typeString": "type(contract ERC20Burnable)" - } - }, - "id": 11196, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "typeConversion", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "8220:21:39", - "typeDescriptions": { - "typeIdentifier": "t_contract$_ERC20Burnable_$1023", - "typeString": "contract ERC20Burnable" - } - }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "argumentTypes": null, - "id": 11197, - "name": "token", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 11093, - "src": "8245:5:39", - "typeDescriptions": { - "typeIdentifier": "t_contract$_ERC20Burnable_$1023", - "typeString": "contract ERC20Burnable" - } - }, - "src": "8220:30:39", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - { - "argumentTypes": null, - "hexValue": "556e7265636f676e697a656420746f6b656e", - "id": 11199, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "string", - "lValueRequested": false, - "nodeType": "Literal", - "src": "8252:20:39", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_stringliteral_47da9b5e57c99f8cbef65229ca937f6f890e1990ca30174cbf7cd659ecff7e04", - "typeString": "literal_string \"Unrecognized token\"" - }, - "value": "Unrecognized token" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_stringliteral_47da9b5e57c99f8cbef65229ca937f6f890e1990ca30174cbf7cd659ecff7e04", - "typeString": "literal_string \"Unrecognized token\"" - } - ], - "id": 11193, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [28149, 28150], - "referencedDeclaration": 28150, - "src": "8212:7:39", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", - "typeString": "function (bool,string memory) pure" - } - }, - "id": 11200, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "8212:61:39", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 11201, - "nodeType": "ExpressionStatement", - "src": "8212:61:39" - }, - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 11206, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 11203, - "name": "_extraData", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 11190, - "src": "8291:10:39", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - }, - "id": 11204, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "length", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "8291:17:39", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": ">=", - "rightExpression": { - "argumentTypes": null, - "hexValue": "3630", - "id": 11205, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "8312:2:39", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_60_by_1", - "typeString": "int_const 60" - }, - "value": "60" - }, - "src": "8291:23:39", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - { - "argumentTypes": null, - "hexValue": "436f727275707465642064656c65676174696f6e2064617461", - "id": 11207, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "string", - "lValueRequested": false, - "nodeType": "Literal", - "src": "8316:27:39", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_stringliteral_09b162eddeba70a64d1881921f98280925c4cc9ff91d7d7c2c0dbd107c95b48b", - "typeString": "literal_string \"Corrupted delegation data\"" - }, - "value": "Corrupted delegation data" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_stringliteral_09b162eddeba70a64d1881921f98280925c4cc9ff91d7d7c2c0dbd107c95b48b", - "typeString": "literal_string \"Corrupted delegation data\"" - } - ], - "id": 11202, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [28149, 28150], - "referencedDeclaration": 28150, - "src": "8283:7:39", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", - "typeString": "function (bool,string memory) pure" - } - }, - "id": 11208, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "8283:61:39", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 11209, - "nodeType": "ExpressionStatement", - "src": "8283:61:39" - }, - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 11213, - "name": "_from", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 11184, - "src": "8423:5:39", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 11215, - "name": "this", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 28238, - "src": "8438:4:39", - "typeDescriptions": { - "typeIdentifier": "t_contract$_TokenStaking_$12435", - "typeString": "contract TokenStaking" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_contract$_TokenStaking_$12435", - "typeString": "contract TokenStaking" - } - ], - "id": 11214, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "8430:7:39", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_address_$", - "typeString": "type(address)" - }, - "typeName": "address" - }, - "id": 11216, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "typeConversion", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "8430:13:39", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "argumentTypes": null, - "id": 11217, - "name": "_value", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 11186, - "src": "8445:6:39", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "expression": { - "argumentTypes": null, - "id": 11210, - "name": "token", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 11093, - "src": "8400:5:39", - "typeDescriptions": { - "typeIdentifier": "t_contract$_ERC20Burnable_$1023", - "typeString": "contract ERC20Burnable" - } - }, - "id": 11212, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "safeTransferFrom", - "nodeType": "MemberAccess", - "referencedDeclaration": 1208, - "src": "8400:22:39", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$1150_$_t_address_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IERC20_$1150_$", - "typeString": "function (contract IERC20,address,address,uint256)" - } - }, - "id": 11218, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "8400:52:39", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 11219, - "nodeType": "ExpressionStatement", - "src": "8400:52:39" - }, - { - "assignments": [11221], - "declarations": [ - { - "constant": false, - "id": 11221, - "name": "operator", - "nodeType": "VariableDeclaration", - "scope": 11252, - "src": "8463:16:39", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 11220, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "8463:7:39", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 11226, - "initialValue": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "hexValue": "3230", - "id": 11224, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "8503:2:39", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_20_by_1", - "typeString": "int_const 20" - }, - "value": "20" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_rational_20_by_1", - "typeString": "int_const 20" - } - ], - "expression": { - "argumentTypes": null, - "id": 11222, - "name": "_extraData", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 11190, - "src": "8482:10:39", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - }, - "id": 11223, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "toAddress", - "nodeType": "MemberAccess", - "referencedDeclaration": 27348, - "src": "8482:20:39", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_address_$bound_to$_t_bytes_memory_ptr_$", - "typeString": "function (bytes memory,uint256) pure returns (address)" - } - }, - "id": 11225, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "8482:24:39", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "8463:43:39" - }, - { - "condition": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 11234, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "arguments": [], - "expression": { - "argumentTypes": [], - "expression": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 11227, - "name": "operators", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 8825, - "src": "8591:9:39", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Operator_$8834_storage_$", - "typeString": "mapping(address => struct StakeDelegatable.Operator storage ref)" - } - }, - "id": 11229, - "indexExpression": { - "argumentTypes": null, - "id": 11228, - "name": "operator", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 11221, - "src": "8601:8:39", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "8591:19:39", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Operator_$8834_storage", - "typeString": "struct StakeDelegatable.Operator storage ref" - } - }, - "id": 11230, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberName": "packedParams", - "nodeType": "MemberAccess", - "referencedDeclaration": 8827, - "src": "8591:32:39", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 11231, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "getCreationTimestamp", - "nodeType": "MemberAccess", - "referencedDeclaration": 27945, - "src": "8591:53:39", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", - "typeString": "function (uint256) pure returns (uint256)" - } - }, - "id": 11232, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "8591:55:39", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "argumentTypes": null, - "hexValue": "30", - "id": 11233, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "8650:1:39", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "8591:60:39", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "falseBody": { - "id": 11250, - "nodeType": "Block", - "src": "8866:136:39", - "statements": [ - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 11244, - "name": "_from", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 11184, - "src": "8955:5:39", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "argumentTypes": null, - "id": 11245, - "name": "_value", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 11186, - "src": "8962:6:39", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "id": 11246, - "name": "operator", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 11221, - "src": "8970:8:39", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "argumentTypes": null, - "id": 11247, - "name": "_extraData", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 11190, - "src": "8980:10:39", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - ], - "id": 11243, - "name": "topUp", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 12296, - "src": "8949:5:39", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_address_$_t_bytes_memory_ptr_$returns$__$", - "typeString": "function (address,uint256,address,bytes memory)" - } - }, - "id": 11248, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "8949:42:39", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 11249, - "nodeType": "ExpressionStatement", - "src": "8949:42:39" - } - ] - }, - "id": 11251, - "nodeType": "IfStatement", - "src": "8587:415:39", - "trueBody": { - "id": 11242, - "nodeType": "Block", - "src": "8653:207:39", - "statements": [ - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 11236, - "name": "_from", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 11184, - "src": "8813:5:39", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "argumentTypes": null, - "id": 11237, - "name": "_value", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 11186, - "src": "8820:6:39", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "id": 11238, - "name": "operator", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 11221, - "src": "8828:8:39", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "argumentTypes": null, - "id": 11239, - "name": "_extraData", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 11190, - "src": "8838:10:39", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - ], - "id": 11235, - "name": "delegate", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 12176, - "src": "8804:8:39", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_address_$_t_bytes_memory_ptr_$returns$__$", - "typeString": "function (address,uint256,address,bytes memory)" - } - }, - "id": 11240, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "8804:45:39", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 11241, - "nodeType": "ExpressionStatement", - "src": "8804:45:39" - } - ] - } - } - ] - }, - "documentation": "@notice Receives approval of token transfer and stakes the approved\n amount or adds the approved amount to an existing delegation (a “top-up”).\n In case of a top-up, it is expected that the operator stake is not\n undelegated and that the top-up is performed from the same source of\n tokens as the initial delegation. That is, if the tokens were delegated\n from a grant, top-up has to be performed from the same grant. If the\n delegation was done using liquid tokens, only liquid tokens from the\n same owner can be used to top-up the stake.\n Top-up can not be cancelled so it is important to be careful with the\n amount of KEEP added to the stake.\n @dev Requires that the provided token contract be the same one linked to\n this contract.\n @param _from The owner of the tokens who approved them to transfer.\n @param _value Approved amount for the transfer and stake.\n @param _token Token contract address.\n @param _extraData Data for stake delegation. This byte array must have\n the following values concatenated:\n - Beneficiary address (20 bytes), ignored for a top-up\n - Operator address (20 bytes)\n - Authorizer address (20 bytes), ignored for a top-up\n - Grant ID (32 bytes) - required only when called by TokenStakingEscrow", - "id": 11253, - "implemented": true, - "kind": "function", - "modifiers": [], - "name": "receiveApproval", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 11191, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 11184, - "name": "_from", - "nodeType": "VariableDeclaration", - "scope": 11253, - "src": "8094:13:39", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 11183, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "8094:7:39", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 11186, - "name": "_value", - "nodeType": "VariableDeclaration", - "scope": 11253, - "src": "8117:14:39", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 11185, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "8117:7:39", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 11188, - "name": "_token", - "nodeType": "VariableDeclaration", - "scope": 11253, - "src": "8141:14:39", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 11187, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "8141:7:39", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 11190, - "name": "_extraData", - "nodeType": "VariableDeclaration", - "scope": 11253, - "src": "8165:23:39", - "stateVariable": false, - "storageLocation": "memory", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes" - }, - "typeName": { - "id": 11189, - "name": "bytes", - "nodeType": "ElementaryTypeName", - "src": "8165:5:39", - "typeDescriptions": { - "typeIdentifier": "t_bytes_storage_ptr", - "typeString": "bytes" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "8084:110:39" - }, - "returnParameters": { - "id": 11192, - "nodeType": "ParameterList", - "parameters": [], - "src": "8202:0:39" - }, - "scope": 12435, - "src": "8060:948:39", - "stateMutability": "nonpayable", - "superFunction": null, - "visibility": "public" - }, - { - "body": { - "id": 11273, - "nodeType": "Block", - "src": "9304:180:39", - "statements": [ - { - "expression": { - "argumentTypes": null, - "id": 11271, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 11258, - "name": "operators", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 8825, - "src": "9314:9:39", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Operator_$8834_storage_$", - "typeString": "mapping(address => struct StakeDelegatable.Operator storage ref)" - } - }, - "id": 11260, - "indexExpression": { - "argumentTypes": null, - "id": 11259, - "name": "_operator", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 11255, - "src": "9324:9:39", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "9314:20:39", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Operator_$8834_storage", - "typeString": "struct StakeDelegatable.Operator storage ref" - } - }, - "id": 11261, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "memberName": "packedParams", - "nodeType": "MemberAccess", - "referencedDeclaration": 8827, - "src": "9314:33:39", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 11264, - "name": "_operator", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 11255, - "src": "9377:9:39", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 11265, - "name": "operators", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 8825, - "src": "9400:9:39", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Operator_$8834_storage_$", - "typeString": "mapping(address => struct StakeDelegatable.Operator storage ref)" - } - }, - "id": 11267, - "indexExpression": { - "argumentTypes": null, - "id": 11266, - "name": "_operator", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 11255, - "src": "9410:9:39", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "9400:20:39", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Operator_$8834_storage", - "typeString": "struct StakeDelegatable.Operator storage ref" - } - }, - "id": 11268, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberName": "packedParams", - "nodeType": "MemberAccess", - "referencedDeclaration": 8827, - "src": "9400:33:39", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "id": 11269, - "name": "initializationPeriod", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 11091, - "src": "9447:20:39", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "expression": { - "argumentTypes": null, - "id": 11262, - "name": "topUps", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 11103, - "src": "9350:6:39", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Storage_$20159_storage", - "typeString": "struct TopUps.Storage storage ref" - } - }, - "id": 11263, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberName": "commit", - "nodeType": "MemberAccess", - "referencedDeclaration": 20347, - "src": "9350:13:39", - "typeDescriptions": { - "typeIdentifier": "t_function_delegatecall_nonpayable$_t_struct$_Storage_$20159_storage_ptr_$_t_address_$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_struct$_Storage_$20159_storage_ptr_$", - "typeString": "function (struct TopUps.Storage storage pointer,address,uint256,uint256) returns (uint256)" - } - }, - "id": 11270, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "9350:127:39", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "9314:163:39", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 11272, - "nodeType": "ExpressionStatement", - "src": "9314:163:39" - } - ] - }, - "documentation": "@notice Commits pending top-up for the provided operator. If the top-up\n did not pass the initialization period, the function fails.\n @param _operator The operator with a pending top-up that is getting\n committed.", - "id": 11274, - "implemented": true, - "kind": "function", - "modifiers": [], - "name": "commitTopUp", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 11256, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 11255, - "name": "_operator", - "nodeType": "VariableDeclaration", - "scope": 11274, - "src": "9278:17:39", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 11254, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "9278:7:39", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "9277:19:39" - }, - "returnParameters": { - "id": 11257, - "nodeType": "ParameterList", - "parameters": [], - "src": "9304:0:39" - }, - "scope": 12435, - "src": "9257:227:39", - "stateMutability": "nonpayable", - "superFunction": null, - "visibility": "public" - }, - { - "body": { - "id": 11342, - "nodeType": "Block", - "src": "9840:582:39", - "statements": [ - { - "assignments": [11280], - "declarations": [ - { - "constant": false, - "id": 11280, - "name": "owner", - "nodeType": "VariableDeclaration", - "scope": 11342, - "src": "9850:13:39", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 11279, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "9850:7:39", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 11285, - "initialValue": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 11281, - "name": "operators", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 8825, - "src": "9866:9:39", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Operator_$8834_storage_$", - "typeString": "mapping(address => struct StakeDelegatable.Operator storage ref)" - } - }, - "id": 11283, - "indexExpression": { - "argumentTypes": null, - "id": 11282, - "name": "_operator", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 11276, - "src": "9876:9:39", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "9866:20:39", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Operator_$8834_storage", - "typeString": "struct StakeDelegatable.Operator storage ref" - } - }, - "id": 11284, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberName": "owner", - "nodeType": "MemberAccess", - "referencedDeclaration": 8829, - "src": "9866:26:39", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "9850:42:39" - }, - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "id": 11301, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "id": 11295, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "id": 11290, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 11287, - "name": "msg", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 28146, - "src": "9923:3:39", - "typeDescriptions": { - "typeIdentifier": "t_magic_message", - "typeString": "msg" - } - }, - "id": 11288, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "sender", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "9923:10:39", - "typeDescriptions": { - "typeIdentifier": "t_address_payable", - "typeString": "address payable" - } - }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "argumentTypes": null, - "id": 11289, - "name": "owner", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 11280, - "src": "9937:5:39", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "src": "9923:19:39", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "nodeType": "BinaryOperation", - "operator": "||", - "rightExpression": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "id": 11294, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 11291, - "name": "msg", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 28146, - "src": "9962:3:39", - "typeDescriptions": { - "typeIdentifier": "t_magic_message", - "typeString": "msg" - } - }, - "id": 11292, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "sender", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "9962:10:39", - "typeDescriptions": { - "typeIdentifier": "t_address_payable", - "typeString": "address payable" - } - }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "argumentTypes": null, - "id": 11293, - "name": "_operator", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 11276, - "src": "9976:9:39", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "src": "9962:23:39", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "src": "9923:62:39", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "nodeType": "BinaryOperation", - "operator": "||", - "rightExpression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 11298, - "name": "_operator", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 11276, - "src": "10032:9:39", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "argumentTypes": null, - "id": 11299, - "name": "tokenGrant", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 11095, - "src": "10043:10:39", - "typeDescriptions": { - "typeIdentifier": "t_contract$_TokenGrant_$10702", - "typeString": "contract TokenGrant" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_contract$_TokenGrant_$10702", - "typeString": "contract TokenGrant" - } - ], - "expression": { - "argumentTypes": null, - "id": 11296, - "name": "grantStaking", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 11099, - "src": "10005:12:39", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Storage_$19231_storage", - "typeString": "struct GrantStaking.Storage storage ref" - } - }, - "id": 11297, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberName": "canUndelegate", - "nodeType": "MemberAccess", - "referencedDeclaration": 19498, - "src": "10005:26:39", - "typeDescriptions": { - "typeIdentifier": "t_function_delegatecall_nonpayable$_t_struct$_Storage_$19231_storage_ptr_$_t_address_$_t_contract$_TokenGrant_$10702_$returns$_t_bool_$bound_to$_t_struct$_Storage_$19231_storage_ptr_$", - "typeString": "function (struct GrantStaking.Storage storage pointer,address,contract TokenGrant) returns (bool)" - } - }, - "id": 11300, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "10005:49:39", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "src": "9923:131:39", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - { - "argumentTypes": null, - "hexValue": "4e6f7420617574686f72697a6564", - "id": 11302, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "string", - "lValueRequested": false, - "nodeType": "Literal", - "src": "10068:16:39", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_stringliteral_fac3bac318c0d00994f57b0f2f4c643c313072b71db2302bf4b900309cc50b36", - "typeString": "literal_string \"Not authorized\"" - }, - "value": "Not authorized" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_stringliteral_fac3bac318c0d00994f57b0f2f4c643c313072b71db2302bf4b900309cc50b36", - "typeString": "literal_string \"Not authorized\"" - } - ], - "id": 11286, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [28149, 28150], - "referencedDeclaration": 28150, - "src": "9902:7:39", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", - "typeString": "function (bool,string memory) pure" - } - }, - "id": 11303, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "9902:192:39", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 11304, - "nodeType": "ExpressionStatement", - "src": "9902:192:39" - }, - { - "assignments": [11306], - "declarations": [ - { - "constant": false, - "id": 11306, - "name": "operatorParams", - "nodeType": "VariableDeclaration", - "scope": 11342, - "src": "10104:22:39", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 11305, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "10104:7:39", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 11311, - "initialValue": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 11307, - "name": "operators", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 8825, - "src": "10129:9:39", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Operator_$8834_storage_$", - "typeString": "mapping(address => struct StakeDelegatable.Operator storage ref)" - } - }, - "id": 11309, - "indexExpression": { - "argumentTypes": null, - "id": 11308, - "name": "_operator", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 11276, - "src": "10139:9:39", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "10129:20:39", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Operator_$8834_storage", - "typeString": "struct StakeDelegatable.Operator storage ref" - } - }, - "id": 11310, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberName": "packedParams", - "nodeType": "MemberAccess", - "referencedDeclaration": 8827, - "src": "10129:33:39", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "10104:58:39" - }, - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 11316, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "UnaryOperation", - "operator": "!", - "prefix": true, - "src": "10181:31:39", - "subExpression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 11314, - "name": "operatorParams", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 11306, - "src": "10197:14:39", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 11313, - "name": "_isInitialized", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 12314, - "src": "10182:14:39", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_bool_$", - "typeString": "function (uint256) view returns (bool)" - } - }, - "id": 11315, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "10182:30:39", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - { - "argumentTypes": null, - "hexValue": "496e697469616c697a6564207374616b65", - "id": 11317, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "string", - "lValueRequested": false, - "nodeType": "Literal", - "src": "10214:19:39", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_stringliteral_655beb0bac13ffbbd358a950ddf7097242083984e0d10b43e52c0ce160d829ea", - "typeString": "literal_string \"Initialized stake\"" - }, - "value": "Initialized stake" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_stringliteral_655beb0bac13ffbbd358a950ddf7097242083984e0d10b43e52c0ce160d829ea", - "typeString": "literal_string \"Initialized stake\"" - } - ], - "id": 11312, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [28149, 28150], - "referencedDeclaration": 28150, - "src": "10173:7:39", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", - "typeString": "function (bool,string memory) pure" - } - }, - "id": 11318, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "10173:61:39", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 11319, - "nodeType": "ExpressionStatement", - "src": "10173:61:39" - }, - { - "assignments": [11321], - "declarations": [ - { - "constant": false, - "id": 11321, - "name": "amount", - "nodeType": "VariableDeclaration", - "scope": 11342, - "src": "10245:14:39", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 11320, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "10245:7:39", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 11325, - "initialValue": { - "argumentTypes": null, - "arguments": [], - "expression": { - "argumentTypes": [], - "expression": { - "argumentTypes": null, - "id": 11322, - "name": "operatorParams", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 11306, - "src": "10262:14:39", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 11323, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "getAmount", - "nodeType": "MemberAccess", - "referencedDeclaration": 27910, - "src": "10262:24:39", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", - "typeString": "function (uint256) pure returns (uint256)" - } - }, - "id": 11324, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "10262:26:39", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "10245:43:39" - }, - { - "expression": { - "argumentTypes": null, - "id": 11334, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 11326, - "name": "operators", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 8825, - "src": "10298:9:39", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Operator_$8834_storage_$", - "typeString": "mapping(address => struct StakeDelegatable.Operator storage ref)" - } - }, - "id": 11328, - "indexExpression": { - "argumentTypes": null, - "id": 11327, - "name": "_operator", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 11276, - "src": "10308:9:39", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "10298:20:39", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Operator_$8834_storage", - "typeString": "struct StakeDelegatable.Operator storage ref" - } - }, - "id": 11329, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "memberName": "packedParams", - "nodeType": "MemberAccess", - "referencedDeclaration": 8827, - "src": "10298:33:39", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "hexValue": "30", - "id": 11332, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "10359:1:39", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - } - ], - "expression": { - "argumentTypes": null, - "id": 11330, - "name": "operatorParams", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 11306, - "src": "10334:14:39", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 11331, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "setAmount", - "nodeType": "MemberAccess", - "referencedDeclaration": 27930, - "src": "10334:24:39", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", - "typeString": "function (uint256,uint256) pure returns (uint256)" - } - }, - "id": 11333, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "10334:27:39", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "10298:63:39", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 11335, - "nodeType": "ExpressionStatement", - "src": "10298:63:39" - }, - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 11337, - "name": "owner", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 11280, - "src": "10390:5:39", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "argumentTypes": null, - "id": 11338, - "name": "_operator", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 11276, - "src": "10397:9:39", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "argumentTypes": null, - "id": 11339, - "name": "amount", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 11321, - "src": "10408:6:39", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 11336, - "name": "transferOrDeposit", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 12434, - "src": "10372:17:39", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", - "typeString": "function (address,address,uint256)" - } - }, - "id": 11340, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "10372:43:39", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 11341, - "nodeType": "ExpressionStatement", - "src": "10372:43:39" - } - ] - }, - "documentation": "@notice Cancels stake of tokens within the operator initialization period\n without being subjected to the token lockup for the undelegation period.\n This can be used to undo mistaken delegation to the wrong operator address.\n @param _operator Address of the stake operator.", - "id": 11343, - "implemented": true, - "kind": "function", - "modifiers": [], - "name": "cancelStake", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 11277, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 11276, - "name": "_operator", - "nodeType": "VariableDeclaration", - "scope": 11343, - "src": "9814:17:39", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 11275, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "9814:7:39", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "9813:19:39" - }, - "returnParameters": { - "id": 11278, - "nodeType": "ParameterList", - "parameters": [], - "src": "9840:0:39" - }, - "scope": 12435, - "src": "9793:629:39", - "stateMutability": "nonpayable", - "superFunction": null, - "visibility": "public" - }, - { - "body": { - "id": 11354, - "nodeType": "Block", - "src": "10704:57:39", - "statements": [ - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 11349, - "name": "_operator", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 11345, - "src": "10727:9:39", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 11350, - "name": "block", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 28136, - "src": "10738:5:39", - "typeDescriptions": { - "typeIdentifier": "t_magic_block", - "typeString": "block" - } - }, - "id": 11351, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "timestamp", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "10738:15:39", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 11348, - "name": "undelegateAt", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 11446, - "src": "10714:12:39", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$", - "typeString": "function (address,uint256)" - } - }, - "id": 11352, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "10714:40:39", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 11353, - "nodeType": "ExpressionStatement", - "src": "10714:40:39" - } - ] - }, - "documentation": "@notice Undelegates staked tokens. You will be able to recover your stake by calling\n `recoverStake()` with operator address once undelegation period is over.\n @param _operator Address of the stake operator.", - "id": 11355, - "implemented": true, - "kind": "function", - "modifiers": [], - "name": "undelegate", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 11346, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 11345, - "name": "_operator", - "nodeType": "VariableDeclaration", - "scope": 11355, - "src": "10678:17:39", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 11344, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "10678:7:39", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "10677:19:39" - }, - "returnParameters": { - "id": 11347, - "nodeType": "ParameterList", - "parameters": [], - "src": "10704:0:39" - }, - "scope": 12435, - "src": "10658:103:39", - "stateMutability": "nonpayable", - "superFunction": null, - "visibility": "public" - }, - { - "body": { - "id": 11445, - "nodeType": "Block", - "src": "11255:1402:39", - "statements": [ - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "id": 11380, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "id": 11374, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "id": 11366, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 11363, - "name": "msg", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 28146, - "src": "11286:3:39", - "typeDescriptions": { - "typeIdentifier": "t_magic_message", - "typeString": "msg" - } - }, - "id": 11364, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "sender", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "11286:10:39", - "typeDescriptions": { - "typeIdentifier": "t_address_payable", - "typeString": "address payable" - } - }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "argumentTypes": null, - "id": 11365, - "name": "_operator", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 11357, - "src": "11300:9:39", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "src": "11286:23:39", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "nodeType": "BinaryOperation", - "operator": "||", - "rightExpression": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "id": 11373, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 11367, - "name": "msg", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 28146, - "src": "11329:3:39", - "typeDescriptions": { - "typeIdentifier": "t_magic_message", - "typeString": "msg" - } - }, - "id": 11368, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "sender", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "11329:10:39", - "typeDescriptions": { - "typeIdentifier": "t_address_payable", - "typeString": "address payable" - } - }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 11369, - "name": "operators", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 8825, - "src": "11343:9:39", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Operator_$8834_storage_$", - "typeString": "mapping(address => struct StakeDelegatable.Operator storage ref)" - } - }, - "id": 11371, - "indexExpression": { - "argumentTypes": null, - "id": 11370, - "name": "_operator", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 11357, - "src": "11353:9:39", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "11343:20:39", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Operator_$8834_storage", - "typeString": "struct StakeDelegatable.Operator storage ref" - } - }, - "id": 11372, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberName": "owner", - "nodeType": "MemberAccess", - "referencedDeclaration": 8829, - "src": "11343:26:39", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "src": "11329:40:39", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "src": "11286:83:39", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "nodeType": "BinaryOperation", - "operator": "||", - "rightExpression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 11377, - "name": "_operator", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 11357, - "src": "11416:9:39", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "argumentTypes": null, - "id": 11378, - "name": "tokenGrant", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 11095, - "src": "11427:10:39", - "typeDescriptions": { - "typeIdentifier": "t_contract$_TokenGrant_$10702", - "typeString": "contract TokenGrant" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_contract$_TokenGrant_$10702", - "typeString": "contract TokenGrant" - } - ], - "expression": { - "argumentTypes": null, - "id": 11375, - "name": "grantStaking", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 11099, - "src": "11389:12:39", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Storage_$19231_storage", - "typeString": "struct GrantStaking.Storage storage ref" - } - }, - "id": 11376, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberName": "canUndelegate", - "nodeType": "MemberAccess", - "referencedDeclaration": 19498, - "src": "11389:26:39", - "typeDescriptions": { - "typeIdentifier": "t_function_delegatecall_nonpayable$_t_struct$_Storage_$19231_storage_ptr_$_t_address_$_t_contract$_TokenGrant_$10702_$returns$_t_bool_$bound_to$_t_struct$_Storage_$19231_storage_ptr_$", - "typeString": "function (struct GrantStaking.Storage storage pointer,address,contract TokenGrant) returns (bool)" - } - }, - "id": 11379, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "11389:49:39", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "src": "11286:152:39", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - { - "argumentTypes": null, - "hexValue": "4e6f7420617574686f72697a6564", - "id": 11381, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "string", - "lValueRequested": false, - "nodeType": "Literal", - "src": "11452:16:39", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_stringliteral_fac3bac318c0d00994f57b0f2f4c643c313072b71db2302bf4b900309cc50b36", - "typeString": "literal_string \"Not authorized\"" - }, - "value": "Not authorized" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_stringliteral_fac3bac318c0d00994f57b0f2f4c643c313072b71db2302bf4b900309cc50b36", - "typeString": "literal_string \"Not authorized\"" - } - ], - "id": 11362, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [28149, 28150], - "referencedDeclaration": 28150, - "src": "11265:7:39", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", - "typeString": "function (bool,string memory) pure" - } - }, - "id": 11382, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "11265:213:39", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 11383, - "nodeType": "ExpressionStatement", - "src": "11265:213:39" - }, - { - "assignments": [11385], - "declarations": [ - { - "constant": false, - "id": 11385, - "name": "oldParams", - "nodeType": "VariableDeclaration", - "scope": 11445, - "src": "11488:17:39", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 11384, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "11488:7:39", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 11390, - "initialValue": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 11386, - "name": "operators", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 8825, - "src": "11508:9:39", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Operator_$8834_storage_$", - "typeString": "mapping(address => struct StakeDelegatable.Operator storage ref)" - } - }, - "id": 11388, - "indexExpression": { - "argumentTypes": null, - "id": 11387, - "name": "_operator", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 11357, - "src": "11518:9:39", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "11508:20:39", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Operator_$8834_storage", - "typeString": "struct StakeDelegatable.Operator storage ref" - } - }, - "id": 11389, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberName": "packedParams", - "nodeType": "MemberAccess", - "referencedDeclaration": 8827, - "src": "11508:33:39", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "11488:53:39" - }, - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "id": 11404, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 11395, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 11392, - "name": "_undelegationTimestamp", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 11359, - "src": "11572:22:39", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": ">=", - "rightExpression": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 11393, - "name": "block", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 28136, - "src": "11598:5:39", - "typeDescriptions": { - "typeIdentifier": "t_magic_block", - "typeString": "block" - } - }, - "id": 11394, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "timestamp", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "11598:15:39", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "11572:41:39", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "nodeType": "BinaryOperation", - "operator": "&&", - "rightExpression": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 11403, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 11396, - "name": "_undelegationTimestamp", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 11359, - "src": "11633:22:39", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": ">", - "rightExpression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 11401, - "name": "initializationPeriod", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 11091, - "src": "11711:20:39", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "expression": { - "argumentTypes": null, - "arguments": [], - "expression": { - "argumentTypes": [], - "expression": { - "argumentTypes": null, - "id": 11397, - "name": "oldParams", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 11385, - "src": "11674:9:39", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 11398, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "getCreationTimestamp", - "nodeType": "MemberAccess", - "referencedDeclaration": 27945, - "src": "11674:30:39", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", - "typeString": "function (uint256) pure returns (uint256)" - } - }, - "id": 11399, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "11674:32:39", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 11400, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "add", - "nodeType": "MemberAccess", - "referencedDeclaration": 310, - "src": "11674:36:39", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", - "typeString": "function (uint256,uint256) pure returns (uint256)" - } - }, - "id": 11402, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "11674:58:39", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "11633:99:39", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "src": "11572:160:39", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - { - "argumentTypes": null, - "hexValue": "496e76616c69642074696d657374616d70", - "id": 11405, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "string", - "lValueRequested": false, - "nodeType": "Literal", - "src": "11746:19:39", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_stringliteral_4680df59cce98ccd6dc27cbb13244303b66976f7ccd9420f7c7d47834ac73bbf", - "typeString": "literal_string \"Invalid timestamp\"" - }, - "value": "Invalid timestamp" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_stringliteral_4680df59cce98ccd6dc27cbb13244303b66976f7ccd9420f7c7d47834ac73bbf", - "typeString": "literal_string \"Invalid timestamp\"" - } - ], - "id": 11391, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [28149, 28150], - "referencedDeclaration": 28150, - "src": "11551:7:39", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", - "typeString": "function (bool,string memory) pure" - } - }, - "id": 11406, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "11551:224:39", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 11407, - "nodeType": "ExpressionStatement", - "src": "11551:224:39" - }, - { - "assignments": [11409], - "declarations": [ - { - "constant": false, - "id": 11409, - "name": "existingUndelegationTimestamp", - "nodeType": "VariableDeclaration", - "scope": 11445, - "src": "11785:37:39", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 11408, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "11785:7:39", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 11413, - "initialValue": { - "argumentTypes": null, - "arguments": [], - "expression": { - "argumentTypes": [], - "expression": { - "argumentTypes": null, - "id": 11410, - "name": "oldParams", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 11385, - "src": "11837:9:39", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 11411, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "getUndelegationTimestamp", - "nodeType": "MemberAccess", - "referencedDeclaration": 27977, - "src": "11837:34:39", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", - "typeString": "function (uint256) pure returns (uint256)" - } - }, - "id": 11412, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "11837:36:39", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "11785:88:39" - }, - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "id": 11426, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "id": 11421, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 11417, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 11415, - "name": "existingUndelegationTimestamp", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 11409, - "src": "11951:29:39", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "argumentTypes": null, - "hexValue": "30", - "id": 11416, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "11984:1:39", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "11951:34:39", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "nodeType": "BinaryOperation", - "operator": "||", - "rightExpression": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 11420, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 11418, - "name": "existingUndelegationTimestamp", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 11409, - "src": "12072:29:39", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": ">", - "rightExpression": { - "argumentTypes": null, - "id": 11419, - "name": "_undelegationTimestamp", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 11359, - "src": "12104:22:39", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "12072:54:39", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "src": "11951:175:39", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "nodeType": "BinaryOperation", - "operator": "||", - "rightExpression": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "id": 11425, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 11422, - "name": "msg", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 28146, - "src": "12389:3:39", - "typeDescriptions": { - "typeIdentifier": "t_magic_message", - "typeString": "msg" - } - }, - "id": 11423, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "sender", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "12389:10:39", - "typeDescriptions": { - "typeIdentifier": "t_address_payable", - "typeString": "address payable" - } - }, - "nodeType": "BinaryOperation", - "operator": "!=", - "rightExpression": { - "argumentTypes": null, - "id": 11424, - "name": "_operator", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 11357, - "src": "12403:9:39", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "src": "12389:23:39", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "src": "11951:461:39", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - { - "argumentTypes": null, - "hexValue": "4f70657261746f72206d6179206e6f7420706f7374706f6e65", - "id": 11427, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "string", - "lValueRequested": false, - "nodeType": "Literal", - "src": "12426:27:39", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_stringliteral_baae0451dc8b8787f0833fc6d6ecd4fa4fec50c467d7195249ba2e75960b24d2", - "typeString": "literal_string \"Operator may not postpone\"" - }, - "value": "Operator may not postpone" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_stringliteral_baae0451dc8b8787f0833fc6d6ecd4fa4fec50c467d7195249ba2e75960b24d2", - "typeString": "literal_string \"Operator may not postpone\"" - } - ], - "id": 11414, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [28149, 28150], - "referencedDeclaration": 28150, - "src": "11883:7:39", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", - "typeString": "function (bool,string memory) pure" - } - }, - "id": 11428, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "11883:580:39", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 11429, - "nodeType": "ExpressionStatement", - "src": "11883:580:39" - }, - { - "expression": { - "argumentTypes": null, - "id": 11438, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 11430, - "name": "operators", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 8825, - "src": "12473:9:39", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Operator_$8834_storage_$", - "typeString": "mapping(address => struct StakeDelegatable.Operator storage ref)" - } - }, - "id": 11432, - "indexExpression": { - "argumentTypes": null, - "id": 11431, - "name": "_operator", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 11357, - "src": "12483:9:39", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "12473:20:39", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Operator_$8834_storage", - "typeString": "struct StakeDelegatable.Operator storage ref" - } - }, - "id": 11433, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "memberName": "packedParams", - "nodeType": "MemberAccess", - "referencedDeclaration": 8827, - "src": "12473:33:39", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 11436, - "name": "_undelegationTimestamp", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 11359, - "src": "12557:22:39", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "expression": { - "argumentTypes": null, - "id": 11434, - "name": "oldParams", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 11385, - "src": "12509:9:39", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 11435, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "setUndelegationTimestamp", - "nodeType": "MemberAccess", - "referencedDeclaration": 27997, - "src": "12509:34:39", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", - "typeString": "function (uint256,uint256) pure returns (uint256)" - } - }, - "id": 11437, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "12509:80:39", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "12473:116:39", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 11439, - "nodeType": "ExpressionStatement", - "src": "12473:116:39" - }, - { - "eventCall": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 11441, - "name": "_operator", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 11357, - "src": "12616:9:39", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "argumentTypes": null, - "id": 11442, - "name": "_undelegationTimestamp", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 11359, - "src": "12627:22:39", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 11440, - "name": "Undelegated", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 11051, - "src": "12604:11:39", - "typeDescriptions": { - "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$returns$__$", - "typeString": "function (address,uint256)" - } - }, - "id": 11443, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "12604:46:39", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 11444, - "nodeType": "EmitStatement", - "src": "12599:51:39" - } - ] - }, - "documentation": "@notice Set an undelegation time for staked tokens.\n Undelegation will begin at the specified timestamp.\n You will be able to recover your stake by calling\n `recoverStake()` with operator address once undelegation period is over.\n @param _operator Address of the stake operator.\n @param _undelegationTimestamp The timestamp undelegation is to start at.", - "id": 11446, - "implemented": true, - "kind": "function", - "modifiers": [], - "name": "undelegateAt", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 11360, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 11357, - "name": "_operator", - "nodeType": "VariableDeclaration", - "scope": 11446, - "src": "11185:17:39", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 11356, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "11185:7:39", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 11359, - "name": "_undelegationTimestamp", - "nodeType": "VariableDeclaration", - "scope": 11446, - "src": "11204:30:39", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 11358, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "11204:7:39", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "11184:51:39" - }, - "returnParameters": { - "id": 11361, - "nodeType": "ParameterList", - "parameters": [], - "src": "11255:0:39" - }, - "scope": 12435, - "src": "11163:1494:39", - "stateMutability": "nonpayable", - "superFunction": null, - "visibility": "public" - }, - { - "body": { - "id": 11521, - "nodeType": "Block", - "src": "12928:714:39", - "statements": [ - { - "assignments": [11452], - "declarations": [ - { - "constant": false, - "id": 11452, - "name": "operatorParams", - "nodeType": "VariableDeclaration", - "scope": 11521, - "src": "12938:22:39", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 11451, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "12938:7:39", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 11457, - "initialValue": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 11453, - "name": "operators", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 8825, - "src": "12963:9:39", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Operator_$8834_storage_$", - "typeString": "mapping(address => struct StakeDelegatable.Operator storage ref)" - } - }, - "id": 11455, - "indexExpression": { - "argumentTypes": null, - "id": 11454, - "name": "_operator", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 11448, - "src": "12973:9:39", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "12963:20:39", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Operator_$8834_storage", - "typeString": "struct StakeDelegatable.Operator storage ref" - } - }, - "id": 11456, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberName": "packedParams", - "nodeType": "MemberAccess", - "referencedDeclaration": 8827, - "src": "12963:33:39", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "12938:58:39" - }, - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 11463, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "arguments": [], - "expression": { - "argumentTypes": [], - "expression": { - "argumentTypes": null, - "id": 11459, - "name": "operatorParams", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 11452, - "src": "13027:14:39", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 11460, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "getUndelegationTimestamp", - "nodeType": "MemberAccess", - "referencedDeclaration": 27977, - "src": "13027:39:39", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", - "typeString": "function (uint256) pure returns (uint256)" - } - }, - "id": 11461, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "13027:41:39", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "!=", - "rightExpression": { - "argumentTypes": null, - "hexValue": "30", - "id": 11462, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "13072:1:39", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "13027:46:39", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - { - "argumentTypes": null, - "hexValue": "4e6f7420756e64656c656761746564", - "id": 11464, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "string", - "lValueRequested": false, - "nodeType": "Literal", - "src": "13087:17:39", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_stringliteral_fd3788beb72580329c2ed9b644188a5c4298fa00d0816077221edccdf7627650", - "typeString": "literal_string \"Not undelegated\"" - }, - "value": "Not undelegated" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_stringliteral_fd3788beb72580329c2ed9b644188a5c4298fa00d0816077221edccdf7627650", - "typeString": "literal_string \"Not undelegated\"" - } - ], - "id": 11458, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [28149, 28150], - "referencedDeclaration": 28150, - "src": "13006:7:39", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", - "typeString": "function (bool,string memory) pure" - } - }, - "id": 11465, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "13006:108:39", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 11466, - "nodeType": "ExpressionStatement", - "src": "13006:108:39" - }, - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 11469, - "name": "operatorParams", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 11452, - "src": "13156:14:39", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 11468, - "name": "_isUndelegatingFinished", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 12368, - "src": "13132:23:39", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_bool_$", - "typeString": "function (uint256) view returns (bool)" - } - }, - "id": 11470, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "13132:39:39", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - { - "argumentTypes": null, - "hexValue": "5374696c6c20756e64656c65676174696e67", - "id": 11471, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "string", - "lValueRequested": false, - "nodeType": "Literal", - "src": "13173:20:39", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_stringliteral_5c8b6b2d9bfe0bc7cfe7f71992388de2796b749ab7f9953c19a7d0dfb8e9822c", - "typeString": "literal_string \"Still undelegating\"" - }, - "value": "Still undelegating" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_stringliteral_5c8b6b2d9bfe0bc7cfe7f71992388de2796b749ab7f9953c19a7d0dfb8e9822c", - "typeString": "literal_string \"Still undelegating\"" - } - ], - "id": 11467, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [28149, 28150], - "referencedDeclaration": 28150, - "src": "13124:7:39", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", - "typeString": "function (bool,string memory) pure" - } - }, - "id": 11472, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "13124:70:39", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 11473, - "nodeType": "ExpressionStatement", - "src": "13124:70:39" - }, - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 11478, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "UnaryOperation", - "operator": "!", - "prefix": true, - "src": "13212:25:39", - "subExpression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 11476, - "name": "_operator", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 11448, - "src": "13227:9:39", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "id": 11475, - "name": "isStakeLocked", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 11646, - "src": "13213:13:39", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$", - "typeString": "function (address) view returns (bool)" - } - }, - "id": 11477, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "13213:24:39", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - { - "argumentTypes": null, - "hexValue": "4c6f636b6564207374616b65", - "id": 11479, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "string", - "lValueRequested": false, - "nodeType": "Literal", - "src": "13239:14:39", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_stringliteral_8cc71fd1e5a33aeba89e955430eb2e4809478d33099b44ae4ac9a199c189ae53", - "typeString": "literal_string \"Locked stake\"" - }, - "value": "Locked stake" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_stringliteral_8cc71fd1e5a33aeba89e955430eb2e4809478d33099b44ae4ac9a199c189ae53", - "typeString": "literal_string \"Locked stake\"" - } - ], - "id": 11474, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [28149, 28150], - "referencedDeclaration": 28150, - "src": "13204:7:39", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", - "typeString": "function (bool,string memory) pure" - } - }, - "id": 11480, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "13204:50:39", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 11481, - "nodeType": "ExpressionStatement", - "src": "13204:50:39" - }, - { - "assignments": [11483], - "declarations": [ - { - "constant": false, - "id": 11483, - "name": "amount", - "nodeType": "VariableDeclaration", - "scope": 11521, - "src": "13265:14:39", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 11482, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "13265:7:39", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 11487, - "initialValue": { - "argumentTypes": null, - "arguments": [], - "expression": { - "argumentTypes": [], - "expression": { - "argumentTypes": null, - "id": 11484, - "name": "operatorParams", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 11452, - "src": "13282:14:39", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 11485, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "getAmount", - "nodeType": "MemberAccess", - "referencedDeclaration": 27910, - "src": "13282:24:39", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", - "typeString": "function (uint256) pure returns (uint256)" - } - }, - "id": 11486, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "13282:26:39", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "13265:43:39" - }, - { - "expression": { - "argumentTypes": null, - "id": 11496, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "id": 11488, - "name": "amount", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 11483, - "src": "13401:6:39", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 11493, - "name": "_operator", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 11448, - "src": "13435:9:39", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "expression": { - "argumentTypes": null, - "id": 11491, - "name": "topUps", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 11103, - "src": "13421:6:39", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Storage_$20159_storage", - "typeString": "struct TopUps.Storage storage ref" - } - }, - "id": 11492, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberName": "cancel", - "nodeType": "MemberAccess", - "referencedDeclaration": 20381, - "src": "13421:13:39", - "typeDescriptions": { - "typeIdentifier": "t_function_delegatecall_nonpayable$_t_struct$_Storage_$20159_storage_ptr_$_t_address_$returns$_t_uint256_$bound_to$_t_struct$_Storage_$20159_storage_ptr_$", - "typeString": "function (struct TopUps.Storage storage pointer,address) returns (uint256)" - } - }, - "id": 11494, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "13421:24:39", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "expression": { - "argumentTypes": null, - "id": 11489, - "name": "amount", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 11483, - "src": "13410:6:39", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 11490, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "add", - "nodeType": "MemberAccess", - "referencedDeclaration": 310, - "src": "13410:10:39", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", - "typeString": "function (uint256,uint256) pure returns (uint256)" - } - }, - "id": 11495, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "13410:36:39", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "13401:45:39", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 11497, - "nodeType": "ExpressionStatement", - "src": "13401:45:39" - }, - { - "expression": { - "argumentTypes": null, - "id": 11506, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 11498, - "name": "operators", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 8825, - "src": "13457:9:39", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Operator_$8834_storage_$", - "typeString": "mapping(address => struct StakeDelegatable.Operator storage ref)" - } - }, - "id": 11500, - "indexExpression": { - "argumentTypes": null, - "id": 11499, - "name": "_operator", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 11448, - "src": "13467:9:39", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "13457:20:39", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Operator_$8834_storage", - "typeString": "struct StakeDelegatable.Operator storage ref" - } - }, - "id": 11501, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "memberName": "packedParams", - "nodeType": "MemberAccess", - "referencedDeclaration": 8827, - "src": "13457:33:39", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "hexValue": "30", - "id": 11504, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "13518:1:39", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - } - ], - "expression": { - "argumentTypes": null, - "id": 11502, - "name": "operatorParams", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 11452, - "src": "13493:14:39", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 11503, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "setAmount", - "nodeType": "MemberAccess", - "referencedDeclaration": 27930, - "src": "13493:24:39", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", - "typeString": "function (uint256,uint256) pure returns (uint256)" - } - }, - "id": 11505, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "13493:27:39", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "13457:63:39", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 11507, - "nodeType": "ExpressionStatement", - "src": "13457:63:39" - }, - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 11509, - "name": "operators", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 8825, - "src": "13548:9:39", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Operator_$8834_storage_$", - "typeString": "mapping(address => struct StakeDelegatable.Operator storage ref)" - } - }, - "id": 11511, - "indexExpression": { - "argumentTypes": null, - "id": 11510, - "name": "_operator", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 11448, - "src": "13558:9:39", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "13548:20:39", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Operator_$8834_storage", - "typeString": "struct StakeDelegatable.Operator storage ref" - } - }, - "id": 11512, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberName": "owner", - "nodeType": "MemberAccess", - "referencedDeclaration": 8829, - "src": "13548:26:39", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "argumentTypes": null, - "id": 11513, - "name": "_operator", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 11448, - "src": "13576:9:39", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "argumentTypes": null, - "id": 11514, - "name": "amount", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 11483, - "src": "13587:6:39", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 11508, - "name": "transferOrDeposit", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 12434, - "src": "13530:17:39", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", - "typeString": "function (address,address,uint256)" - } - }, - "id": 11515, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "13530:64:39", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 11516, - "nodeType": "ExpressionStatement", - "src": "13530:64:39" - }, - { - "eventCall": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 11518, - "name": "_operator", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 11448, - "src": "13625:9:39", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "id": 11517, - "name": "RecoveredStake", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 11055, - "src": "13610:14:39", - "typeDescriptions": { - "typeIdentifier": "t_function_event_nonpayable$_t_address_$returns$__$", - "typeString": "function (address)" - } - }, - "id": 11519, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "13610:25:39", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 11520, - "nodeType": "EmitStatement", - "src": "13605:30:39" - } - ] - }, - "documentation": "@notice Recovers staked tokens and transfers them back to the owner.\n Recovering tokens can only be performed when the operator finished\n undelegating.\n @param _operator Operator address.", - "id": 11522, - "implemented": true, - "kind": "function", - "modifiers": [], - "name": "recoverStake", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 11449, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 11448, - "name": "_operator", - "nodeType": "VariableDeclaration", - "scope": 11522, - "src": "12902:17:39", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 11447, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "12902:7:39", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "12901:19:39" - }, - "returnParameters": { - "id": 11450, - "nodeType": "ParameterList", - "parameters": [], - "src": "12928:0:39" - }, - "scope": 12435, - "src": "12880:762:39", - "stateMutability": "nonpayable", - "superFunction": null, - "visibility": "public" - }, - { - "body": { - "id": 11540, - "nodeType": "Block", - "src": "14241:66:39", - "statements": [ - { - "expression": { - "argumentTypes": null, - "arguments": [], - "expression": { - "argumentTypes": [], - "expression": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 11533, - "name": "operators", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 8825, - "src": "14258:9:39", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Operator_$8834_storage_$", - "typeString": "mapping(address => struct StakeDelegatable.Operator storage ref)" - } - }, - "id": 11535, - "indexExpression": { - "argumentTypes": null, - "id": 11534, - "name": "_operator", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 11524, - "src": "14268:9:39", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "14258:20:39", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Operator_$8834_storage", - "typeString": "struct StakeDelegatable.Operator storage ref" - } - }, - "id": 11536, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberName": "packedParams", - "nodeType": "MemberAccess", - "referencedDeclaration": 8827, - "src": "14258:33:39", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 11537, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "unpack", - "nodeType": "MemberAccess", - "referencedDeclaration": 27895, - "src": "14258:40:39", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint256_$_t_uint256_$_t_uint256_$bound_to$_t_uint256_$", - "typeString": "function (uint256) pure returns (uint256,uint256,uint256)" - } - }, - "id": 11538, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "14258:42:39", - "typeDescriptions": { - "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$_t_uint256_$", - "typeString": "tuple(uint256,uint256,uint256)" - } - }, - "functionReturnParameters": 11532, - "id": 11539, - "nodeType": "Return", - "src": "14251:49:39" - } - ] - }, - "documentation": "@notice Gets stake delegation info for the given operator.\n @param _operator Operator address.\n @return amount The amount of tokens the given operator delegated.\n @return createdAt The time when the stake has been delegated.\n @return undelegatedAt The time when undelegation has been requested.\n If undelegation has not been requested, 0 is returned.", - "id": 11541, - "implemented": true, - "kind": "function", - "modifiers": [], - "name": "getDelegationInfo", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 11525, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 11524, - "name": "_operator", - "nodeType": "VariableDeclaration", - "scope": 11541, - "src": "14069:17:39", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 11523, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "14069:7:39", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "14068:19:39" - }, - "returnParameters": { - "id": 11532, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 11527, - "name": "amount", - "nodeType": "VariableDeclaration", - "scope": 11541, - "src": "14146:14:39", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 11526, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "14146:7:39", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 11529, - "name": "createdAt", - "nodeType": "VariableDeclaration", - "scope": 11541, - "src": "14174:17:39", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 11528, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "14174:7:39", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 11531, - "name": "undelegatedAt", - "nodeType": "VariableDeclaration", - "scope": 11541, - "src": "14205:21:39", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 11530, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "14205:7:39", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "14132:104:39" - }, - "scope": 12435, - "src": "14042:265:39", - "stateMutability": "view", - "superFunction": null, - "visibility": "public" - }, - { - "body": { - "id": 11590, - "nodeType": "Block", - "src": "14812:378:39", - "statements": [ - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 11554, - "name": "operator", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 11543, - "src": "14867:8:39", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 11555, - "name": "msg", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 28146, - "src": "14877:3:39", - "typeDescriptions": { - "typeIdentifier": "t_magic_message", - "typeString": "msg" - } - }, - "id": 11556, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "sender", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "14877:10:39", - "typeDescriptions": { - "typeIdentifier": "t_address_payable", - "typeString": "address payable" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_address_payable", - "typeString": "address payable" - } - ], - "id": 11553, - "name": "isAuthorizedForOperator", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1713, - "src": "14843:23:39", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$_t_address_$_t_address_$returns$_t_bool_$", - "typeString": "function (address,address) view returns (bool)" - } - }, - "id": 11557, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "14843:45:39", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - { - "argumentTypes": null, - "hexValue": "4e6f7420617574686f72697a6564", - "id": 11558, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "string", - "lValueRequested": false, - "nodeType": "Literal", - "src": "14902:16:39", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_stringliteral_fac3bac318c0d00994f57b0f2f4c643c313072b71db2302bf4b900309cc50b36", - "typeString": "literal_string \"Not authorized\"" - }, - "value": "Not authorized" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_stringliteral_fac3bac318c0d00994f57b0f2f4c643c313072b71db2302bf4b900309cc50b36", - "typeString": "literal_string \"Not authorized\"" - } - ], - "id": 11552, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [28149, 28150], - "referencedDeclaration": 28150, - "src": "14822:7:39", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", - "typeString": "function (bool,string memory) pure" - } - }, - "id": 11559, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "14822:106:39", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 11560, - "nodeType": "ExpressionStatement", - "src": "14822:106:39" - }, - { - "assignments": [11562], - "declarations": [ - { - "constant": false, - "id": 11562, - "name": "operatorParams", - "nodeType": "VariableDeclaration", - "scope": 11590, - "src": "14939:22:39", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 11561, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "14939:7:39", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 11567, - "initialValue": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 11563, - "name": "operators", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 8825, - "src": "14964:9:39", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Operator_$8834_storage_$", - "typeString": "mapping(address => struct StakeDelegatable.Operator storage ref)" - } - }, - "id": 11565, - "indexExpression": { - "argumentTypes": null, - "id": 11564, - "name": "operator", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 11543, - "src": "14974:8:39", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "14964:19:39", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Operator_$8834_storage", - "typeString": "struct StakeDelegatable.Operator storage ref" - } - }, - "id": 11566, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberName": "packedParams", - "nodeType": "MemberAccess", - "referencedDeclaration": 8827, - "src": "14964:32:39", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "14939:57:39" - }, - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 11570, - "name": "operatorParams", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 11562, - "src": "15030:14:39", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 11569, - "name": "_isInitialized", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 12314, - "src": "15015:14:39", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_bool_$", - "typeString": "function (uint256) view returns (bool)" - } - }, - "id": 11571, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "15015:30:39", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - { - "argumentTypes": null, - "hexValue": "496e616374697665207374616b65", - "id": 11572, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "string", - "lValueRequested": false, - "nodeType": "Literal", - "src": "15047:16:39", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_stringliteral_ae87db1d2a9d5943a68599fd130a5c06015402b6c91f840c2a2e288f87f41ea4", - "typeString": "literal_string \"Inactive stake\"" - }, - "value": "Inactive stake" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_stringliteral_ae87db1d2a9d5943a68599fd130a5c06015402b6c91f840c2a2e288f87f41ea4", - "typeString": "literal_string \"Inactive stake\"" - } - ], - "id": 11568, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [28149, 28150], - "referencedDeclaration": 28150, - "src": "15007:7:39", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", - "typeString": "function (bool,string memory) pure" - } - }, - "id": 11573, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "15007:57:39", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 11574, - "nodeType": "ExpressionStatement", - "src": "15007:57:39" - }, - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 11579, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "UnaryOperation", - "operator": "!", - "prefix": true, - "src": "15082:32:39", - "subExpression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 11577, - "name": "operatorParams", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 11562, - "src": "15099:14:39", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 11576, - "name": "_isUndelegating", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 12339, - "src": "15083:15:39", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_bool_$", - "typeString": "function (uint256) view returns (bool)" - } - }, - "id": 11578, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "15083:31:39", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - { - "argumentTypes": null, - "hexValue": "556e64656c65676174696e67207374616b65", - "id": 11580, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "string", - "lValueRequested": false, - "nodeType": "Literal", - "src": "15116:20:39", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_stringliteral_7ff35c91519e88e5ca900aeb20aea0affdbc614d349d23939fe23d06949b79f3", - "typeString": "literal_string \"Undelegating stake\"" - }, - "value": "Undelegating stake" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_stringliteral_7ff35c91519e88e5ca900aeb20aea0affdbc614d349d23939fe23d06949b79f3", - "typeString": "literal_string \"Undelegating stake\"" - } - ], - "id": 11575, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [28149, 28150], - "referencedDeclaration": 28150, - "src": "15074:7:39", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", - "typeString": "function (bool,string memory) pure" - } - }, - "id": 11581, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "15074:63:39", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 11582, - "nodeType": "ExpressionStatement", - "src": "15074:63:39" - }, - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 11586, - "name": "operator", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 11543, - "src": "15164:8:39", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "argumentTypes": null, - "id": 11587, - "name": "duration", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 11545, - "src": "15174:8:39", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "expression": { - "argumentTypes": null, - "id": 11583, - "name": "locks", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 11101, - "src": "15148:5:39", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Storage_$19752_storage", - "typeString": "struct Locks.Storage storage ref" - } - }, - "id": 11585, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberName": "lockStake", - "nodeType": "MemberAccess", - "referencedDeclaration": 19797, - "src": "15148:15:39", - "typeDescriptions": { - "typeIdentifier": "t_function_delegatecall_nonpayable$_t_struct$_Storage_$19752_storage_ptr_$_t_address_$_t_uint256_$returns$__$bound_to$_t_struct$_Storage_$19752_storage_ptr_$", - "typeString": "function (struct Locks.Storage storage pointer,address,uint256)" - } - }, - "id": 11588, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "15148:35:39", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 11589, - "nodeType": "ExpressionStatement", - "src": "15148:35:39" - } - ] - }, - "documentation": "@notice Locks given operator stake for the specified duration.\n Locked stake may not be recovered until the lock expires or is released,\n even if the normal undelegation period has passed.\n Only previously authorized operator contract can lock the stake.\n @param operator Operator address.\n @param duration Lock duration in seconds.", - "id": 11591, - "implemented": true, - "kind": "function", - "modifiers": [ - { - "arguments": [ - { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 11548, - "name": "msg", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 28146, - "src": "14796:3:39", - "typeDescriptions": { - "typeIdentifier": "t_magic_message", - "typeString": "msg" - } - }, - "id": 11549, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "sender", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "14796:10:39", - "typeDescriptions": { - "typeIdentifier": "t_address_payable", - "typeString": "address payable" - } - } - ], - "id": 11550, - "modifierName": { - "argumentTypes": null, - "id": 11547, - "name": "onlyApprovedOperatorContract", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1640, - "src": "14767:28:39", - "typeDescriptions": { - "typeIdentifier": "t_modifier$_t_address_$", - "typeString": "modifier (address)" - } - }, - "nodeType": "ModifierInvocation", - "src": "14767:40:39" - } - ], - "name": "lockStake", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 11546, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 11543, - "name": "operator", - "nodeType": "VariableDeclaration", - "scope": 11591, - "src": "14708:16:39", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 11542, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "14708:7:39", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 11545, - "name": "duration", - "nodeType": "VariableDeclaration", - "scope": 11591, - "src": "14726:16:39", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 11544, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "14726:7:39", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "14707:36:39" - }, - "returnParameters": { - "id": 11551, - "nodeType": "ParameterList", - "parameters": [], - "src": "14812:0:39" - }, - "scope": 12435, - "src": "14689:501:39", - "stateMutability": "nonpayable", - "superFunction": null, - "visibility": "public" - }, - { - "body": { - "id": 11611, - "nodeType": "Block", - "src": "15876:160:39", - "statements": [ - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 11598, - "name": "operator", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 11593, - "src": "15931:8:39", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 11599, - "name": "msg", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 28146, - "src": "15941:3:39", - "typeDescriptions": { - "typeIdentifier": "t_magic_message", - "typeString": "msg" - } - }, - "id": 11600, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "sender", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "15941:10:39", - "typeDescriptions": { - "typeIdentifier": "t_address_payable", - "typeString": "address payable" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_address_payable", - "typeString": "address payable" - } - ], - "id": 11597, - "name": "isAuthorizedForOperator", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1713, - "src": "15907:23:39", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$_t_address_$_t_address_$returns$_t_bool_$", - "typeString": "function (address,address) view returns (bool)" - } - }, - "id": 11601, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "15907:45:39", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - { - "argumentTypes": null, - "hexValue": "4e6f7420617574686f72697a6564", - "id": 11602, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "string", - "lValueRequested": false, - "nodeType": "Literal", - "src": "15966:16:39", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_stringliteral_fac3bac318c0d00994f57b0f2f4c643c313072b71db2302bf4b900309cc50b36", - "typeString": "literal_string \"Not authorized\"" - }, - "value": "Not authorized" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_stringliteral_fac3bac318c0d00994f57b0f2f4c643c313072b71db2302bf4b900309cc50b36", - "typeString": "literal_string \"Not authorized\"" - } - ], - "id": 11596, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [28149, 28150], - "referencedDeclaration": 28150, - "src": "15886:7:39", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", - "typeString": "function (bool,string memory) pure" - } - }, - "id": 11603, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "15886:106:39", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 11604, - "nodeType": "ExpressionStatement", - "src": "15886:106:39" - }, - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 11608, - "name": "operator", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 11593, - "src": "16020:8:39", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "expression": { - "argumentTypes": null, - "id": 11605, - "name": "locks", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 11101, - "src": "16002:5:39", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Storage_$19752_storage", - "typeString": "struct Locks.Storage storage ref" - } - }, - "id": 11607, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberName": "releaseLock", - "nodeType": "MemberAccess", - "referencedDeclaration": 19821, - "src": "16002:17:39", - "typeDescriptions": { - "typeIdentifier": "t_function_delegatecall_nonpayable$_t_struct$_Storage_$19752_storage_ptr_$_t_address_$returns$__$bound_to$_t_struct$_Storage_$19752_storage_ptr_$", - "typeString": "function (struct Locks.Storage storage pointer,address)" - } - }, - "id": 11609, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "16002:27:39", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 11610, - "nodeType": "ExpressionStatement", - "src": "16002:27:39" - } - ] - }, - "documentation": "@notice Removes a lock the caller had previously placed on the operator.\n @dev Only for operator contracts.\n To remove expired or disabled locks, use `releaseExpiredLocks`.\n The authorization check ensures that the caller must have been able\n to place a lock on the operator sometime in the past.\n We don't need to check for current approval status of the caller\n because unlocking stake cannot harm the operator\n nor interfere with other operator contracts.\n Therefore even disabled operator contracts may freely unlock stake.\n @param operator Operator address.", - "id": 11612, - "implemented": true, - "kind": "function", - "modifiers": [], - "name": "unlockStake", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 11594, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 11593, - "name": "operator", - "nodeType": "VariableDeclaration", - "scope": 11612, - "src": "15851:16:39", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 11592, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "15851:7:39", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "15850:18:39" - }, - "returnParameters": { - "id": 11595, - "nodeType": "ParameterList", - "parameters": [], - "src": "15876:0:39" - }, - "scope": 12435, - "src": "15830:206:39", - "stateMutability": "nonpayable", - "superFunction": null, - "visibility": "public" - }, - { - "body": { - "id": 11629, - "nodeType": "Block", - "src": "16528:84:39", - "statements": [ - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 11622, - "name": "operator", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 11614, - "src": "16563:8:39", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "argumentTypes": null, - "id": 11623, - "name": "operatorContract", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 11616, - "src": "16573:16:39", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 11625, - "name": "this", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 28238, - "src": "16599:4:39", - "typeDescriptions": { - "typeIdentifier": "t_contract$_TokenStaking_$12435", - "typeString": "contract TokenStaking" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_contract$_TokenStaking_$12435", - "typeString": "contract TokenStaking" - } - ], - "id": 11624, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "16591:7:39", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_address_$", - "typeString": "type(address)" - }, - "typeName": "address" - }, - "id": 11626, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "typeConversion", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "16591:13:39", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "expression": { - "argumentTypes": null, - "id": 11619, - "name": "locks", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 11101, - "src": "16538:5:39", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Storage_$19752_storage", - "typeString": "struct Locks.Storage storage ref" - } - }, - "id": 11621, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberName": "releaseExpiredLock", - "nodeType": "MemberAccess", - "referencedDeclaration": 19888, - "src": "16538:24:39", - "typeDescriptions": { - "typeIdentifier": "t_function_delegatecall_nonpayable$_t_struct$_Storage_$19752_storage_ptr_$_t_address_$_t_address_$_t_address_$returns$__$bound_to$_t_struct$_Storage_$19752_storage_ptr_$", - "typeString": "function (struct Locks.Storage storage pointer,address,address,address)" - } - }, - "id": 11627, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "16538:67:39", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 11628, - "nodeType": "ExpressionStatement", - "src": "16538:67:39" - } - ] - }, - "documentation": "@notice Removes the lock of the specified operator contract\n if the lock has expired or the contract has been disabled.\n @dev Necessary for removing locks placed by contracts\n that have been disabled by the panic button.\n Also applicable to prevent inadvertent DoS of `recoverStake`\n if too many operator contracts have failed to clean up their locks.", - "id": 11630, - "implemented": true, - "kind": "function", - "modifiers": [], - "name": "releaseExpiredLock", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 11617, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 11614, - "name": "operator", - "nodeType": "VariableDeclaration", - "scope": 11630, - "src": "16465:16:39", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 11613, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "16465:7:39", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 11616, - "name": "operatorContract", - "nodeType": "VariableDeclaration", - "scope": 11630, - "src": "16483:24:39", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 11615, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "16483:7:39", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "16464:44:39" - }, - "returnParameters": { - "id": 11618, - "nodeType": "ParameterList", - "parameters": [], - "src": "16528:0:39" - }, - "scope": 12435, - "src": "16437:175:39", - "stateMutability": "nonpayable", - "superFunction": null, - "visibility": "public" - }, - { - "body": { - "id": 11645, - "nodeType": "Block", - "src": "16847:68:39", - "statements": [ - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 11639, - "name": "operator", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 11632, - "src": "16884:8:39", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 11641, - "name": "this", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 28238, - "src": "16902:4:39", - "typeDescriptions": { - "typeIdentifier": "t_contract$_TokenStaking_$12435", - "typeString": "contract TokenStaking" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_contract$_TokenStaking_$12435", - "typeString": "contract TokenStaking" - } - ], - "id": 11640, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "16894:7:39", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_address_$", - "typeString": "type(address)" - }, - "typeName": "address" - }, - "id": 11642, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "typeConversion", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "16894:13:39", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "expression": { - "argumentTypes": null, - "id": 11637, - "name": "locks", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 11101, - "src": "16864:5:39", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Storage_$19752_storage", - "typeString": "struct Locks.Storage storage ref" - } - }, - "id": 11638, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberName": "isStakeLocked", - "nodeType": "MemberAccess", - "referencedDeclaration": 19955, - "src": "16864:19:39", - "typeDescriptions": { - "typeIdentifier": "t_function_delegatecall_view$_t_struct$_Storage_$19752_storage_ptr_$_t_address_$_t_address_$returns$_t_bool_$bound_to$_t_struct$_Storage_$19752_storage_ptr_$", - "typeString": "function (struct Locks.Storage storage pointer,address,address) view returns (bool)" - } - }, - "id": 11643, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "16864:44:39", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "functionReturnParameters": 11636, - "id": 11644, - "nodeType": "Return", - "src": "16857:51:39" - } - ] - }, - "documentation": "@notice Check whether the operator has any active locks\n that haven't expired yet\n and whose creators aren't disabled by the panic button.", - "id": 11646, - "implemented": true, - "kind": "function", - "modifiers": [], - "name": "isStakeLocked", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 11633, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 11632, - "name": "operator", - "nodeType": "VariableDeclaration", - "scope": 11646, - "src": "16802:16:39", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 11631, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "16802:7:39", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "16801:18:39" - }, - "returnParameters": { - "id": 11636, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 11635, - "name": "", - "nodeType": "VariableDeclaration", - "scope": 11646, - "src": "16841:4:39", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "typeName": { - "id": 11634, - "name": "bool", - "nodeType": "ElementaryTypeName", - "src": "16841:4:39", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "16840:6:39" - }, - "scope": 12435, - "src": "16779:136:39", - "stateMutability": "view", - "superFunction": null, - "visibility": "public" - }, - { - "body": { - "id": 11662, - "nodeType": "Block", - "src": "17321:48:39", - "statements": [ - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 11659, - "name": "operator", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 11648, - "src": "17353:8:39", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "expression": { - "argumentTypes": null, - "id": 11657, - "name": "locks", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 11101, - "src": "17338:5:39", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Storage_$19752_storage", - "typeString": "struct Locks.Storage storage ref" - } - }, - "id": 11658, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberName": "getLocks", - "nodeType": "MemberAccess", - "referencedDeclaration": 20064, - "src": "17338:14:39", - "typeDescriptions": { - "typeIdentifier": "t_function_delegatecall_view$_t_struct$_Storage_$19752_storage_ptr_$_t_address_$returns$_t_array$_t_address_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$bound_to$_t_struct$_Storage_$19752_storage_ptr_$", - "typeString": "function (struct Locks.Storage storage pointer,address) view returns (address[] memory,uint256[] memory)" - } - }, - "id": 11660, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "17338:24:39", - "typeDescriptions": { - "typeIdentifier": "t_tuple$_t_array$_t_address_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$", - "typeString": "tuple(address[] memory,uint256[] memory)" - } - }, - "functionReturnParameters": 11656, - "id": 11661, - "nodeType": "Return", - "src": "17331:31:39" - } - ] - }, - "documentation": "@notice Get the locks placed on the operator.\n @return creators The addresses of operator contracts\n that have placed a lock on the operator.\n @return expirations The expiration times\n of the locks placed on the operator.", - "id": 11663, - "implemented": true, - "kind": "function", - "modifiers": [], - "name": "getLocks", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 11649, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 11648, - "name": "operator", - "nodeType": "VariableDeclaration", - "scope": 11663, - "src": "17197:16:39", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 11647, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "17197:7:39", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "17196:18:39" - }, - "returnParameters": { - "id": 11656, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 11652, - "name": "creators", - "nodeType": "VariableDeclaration", - "scope": 11663, - "src": "17260:25:39", - "stateVariable": false, - "storageLocation": "memory", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", - "typeString": "address[]" - }, - "typeName": { - "baseType": { - "id": 11650, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "17260:7:39", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "id": 11651, - "length": null, - "nodeType": "ArrayTypeName", - "src": "17260:9:39", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", - "typeString": "address[]" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 11655, - "name": "expirations", - "nodeType": "VariableDeclaration", - "scope": 11663, - "src": "17287:28:39", - "stateVariable": false, - "storageLocation": "memory", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", - "typeString": "uint256[]" - }, - "typeName": { - "baseType": { - "id": 11653, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "17287:7:39", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 11654, - "length": null, - "nodeType": "ArrayTypeName", - "src": "17287:9:39", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", - "typeString": "uint256[]" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "17259:57:39" - }, - "scope": 12435, - "src": "17179:190:39", - "stateMutability": "view", - "superFunction": null, - "visibility": "public" - }, - { - "body": { - "id": 11803, - "nodeType": "Block", - "src": "17819:1346:39", - "statements": [ - { - "assignments": [11676], - "declarations": [ - { - "constant": false, - "id": 11676, - "name": "totalAmountToBurn", - "nodeType": "VariableDeclaration", - "scope": 11803, - "src": "17829:25:39", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 11675, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "17829:7:39", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 11677, - "initialValue": null, - "nodeType": "VariableDeclarationStatement", - "src": "17829:25:39" - }, - { - "assignments": [11679], - "declarations": [ - { - "constant": false, - "id": 11679, - "name": "authoritySource", - "nodeType": "VariableDeclaration", - "scope": 11803, - "src": "17864:23:39", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 11678, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "17864:7:39", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 11684, - "initialValue": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 11681, - "name": "msg", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 28146, - "src": "17909:3:39", - "typeDescriptions": { - "typeIdentifier": "t_magic_message", - "typeString": "msg" - } - }, - "id": 11682, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "sender", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "17909:10:39", - "typeDescriptions": { - "typeIdentifier": "t_address_payable", - "typeString": "address payable" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address_payable", - "typeString": "address payable" - } - ], - "id": 11680, - "name": "getAuthoritySource", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1782, - "src": "17890:18:39", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_address_$", - "typeString": "function (address) view returns (address)" - } - }, - "id": 11683, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "17890:30:39", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "17864:56:39" - }, - { - "body": { - "id": 11795, - "nodeType": "Block", - "src": "17987:1132:39", - "statements": [ - { - "assignments": [11697], - "declarations": [ - { - "constant": false, - "id": 11697, - "name": "operator", - "nodeType": "VariableDeclaration", - "scope": 11795, - "src": "18001:16:39", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 11696, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "18001:7:39", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 11701, - "initialValue": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 11698, - "name": "misbehavedOperators", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 11668, - "src": "18020:19:39", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", - "typeString": "address[] memory" - } - }, - "id": 11700, - "indexExpression": { - "argumentTypes": null, - "id": 11699, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 11686, - "src": "18040:1:39", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "18020:22:39", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "18001:41:39" - }, - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 11703, - "name": "authorizations", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1621, - "src": "18081:14:39", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$", - "typeString": "mapping(address => mapping(address => bool))" - } - }, - "id": 11705, - "indexExpression": { - "argumentTypes": null, - "id": 11704, - "name": "authoritySource", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 11679, - "src": "18096:15:39", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "18081:31:39", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", - "typeString": "mapping(address => bool)" - } - }, - "id": 11707, - "indexExpression": { - "argumentTypes": null, - "id": 11706, - "name": "operator", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 11697, - "src": "18113:8:39", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "18081:41:39", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - { - "argumentTypes": null, - "hexValue": "4e6f7420617574686f72697a6564", - "id": 11708, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "string", - "lValueRequested": false, - "nodeType": "Literal", - "src": "18140:16:39", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_stringliteral_fac3bac318c0d00994f57b0f2f4c643c313072b71db2302bf4b900309cc50b36", - "typeString": "literal_string \"Not authorized\"" - }, - "value": "Not authorized" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_stringliteral_fac3bac318c0d00994f57b0f2f4c643c313072b71db2302bf4b900309cc50b36", - "typeString": "literal_string \"Not authorized\"" - } - ], - "id": 11702, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [28149, 28150], - "referencedDeclaration": 28150, - "src": "18056:7:39", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", - "typeString": "function (bool,string memory) pure" - } - }, - "id": 11709, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "18056:114:39", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 11710, - "nodeType": "ExpressionStatement", - "src": "18056:114:39" - }, - { - "assignments": [11712], - "declarations": [ - { - "constant": false, - "id": 11712, - "name": "operatorParams", - "nodeType": "VariableDeclaration", - "scope": 11795, - "src": "18185:22:39", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 11711, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "18185:7:39", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 11717, - "initialValue": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 11713, - "name": "operators", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 8825, - "src": "18210:9:39", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Operator_$8834_storage_$", - "typeString": "mapping(address => struct StakeDelegatable.Operator storage ref)" - } - }, - "id": 11715, - "indexExpression": { - "argumentTypes": null, - "id": 11714, - "name": "operator", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 11697, - "src": "18220:8:39", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "18210:19:39", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Operator_$8834_storage", - "typeString": "struct StakeDelegatable.Operator storage ref" - } - }, - "id": 11716, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberName": "packedParams", - "nodeType": "MemberAccess", - "referencedDeclaration": 8827, - "src": "18210:32:39", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "18185:57:39" - }, - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 11720, - "name": "operatorParams", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 11712, - "src": "18279:14:39", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 11719, - "name": "_isInitialized", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 12314, - "src": "18264:14:39", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_bool_$", - "typeString": "function (uint256) view returns (bool)" - } - }, - "id": 11721, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "18264:30:39", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - { - "argumentTypes": null, - "hexValue": "496e616374697665207374616b65", - "id": 11722, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "string", - "lValueRequested": false, - "nodeType": "Literal", - "src": "18296:16:39", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_stringliteral_ae87db1d2a9d5943a68599fd130a5c06015402b6c91f840c2a2e288f87f41ea4", - "typeString": "literal_string \"Inactive stake\"" - }, - "value": "Inactive stake" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_stringliteral_ae87db1d2a9d5943a68599fd130a5c06015402b6c91f840c2a2e288f87f41ea4", - "typeString": "literal_string \"Inactive stake\"" - } - ], - "id": 11718, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [28149, 28150], - "referencedDeclaration": 28150, - "src": "18256:7:39", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", - "typeString": "function (bool,string memory) pure" - } - }, - "id": 11723, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "18256:57:39", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 11724, - "nodeType": "ExpressionStatement", - "src": "18256:57:39" - }, - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 11732, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "UnaryOperation", - "operator": "!", - "prefix": true, - "src": "18353:55:39", - "subExpression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 11727, - "name": "operator", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 11697, - "src": "18371:8:39", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "argumentTypes": null, - "id": 11728, - "name": "operatorParams", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 11712, - "src": "18381:14:39", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 11729, - "name": "msg", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 28146, - "src": "18397:3:39", - "typeDescriptions": { - "typeIdentifier": "t_magic_message", - "typeString": "msg" - } - }, - "id": 11730, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "sender", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "18397:10:39", - "typeDescriptions": { - "typeIdentifier": "t_address_payable", - "typeString": "address payable" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_address_payable", - "typeString": "address payable" - } - ], - "id": 11726, - "name": "_isStakeReleased", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 12390, - "src": "18354:16:39", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$_t_address_$_t_uint256_$_t_address_$returns$_t_bool_$", - "typeString": "function (address,uint256,address) view returns (bool)" - } - }, - "id": 11731, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "18354:54:39", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - { - "argumentTypes": null, - "hexValue": "5374616b652069732072656c6561736564", - "id": 11733, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "string", - "lValueRequested": false, - "nodeType": "Literal", - "src": "18426:19:39", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_stringliteral_eacc7041583461b566bb72ab4a1f41f0ad993156a94a31407aa7727e352e2fa7", - "typeString": "literal_string \"Stake is released\"" - }, - "value": "Stake is released" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_stringliteral_eacc7041583461b566bb72ab4a1f41f0ad993156a94a31407aa7727e352e2fa7", - "typeString": "literal_string \"Stake is released\"" - } - ], - "id": 11725, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [28149, 28150], - "referencedDeclaration": 28150, - "src": "18328:7:39", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", - "typeString": "function (bool,string memory) pure" - } - }, - "id": 11734, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "18328:131:39", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 11735, - "nodeType": "ExpressionStatement", - "src": "18328:131:39" - }, - { - "assignments": [11737], - "declarations": [ - { - "constant": false, - "id": 11737, - "name": "currentAmount", - "nodeType": "VariableDeclaration", - "scope": 11795, - "src": "18474:21:39", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 11736, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "18474:7:39", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 11741, - "initialValue": { - "argumentTypes": null, - "arguments": [], - "expression": { - "argumentTypes": [], - "expression": { - "argumentTypes": null, - "id": 11738, - "name": "operatorParams", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 11712, - "src": "18498:14:39", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 11739, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "getAmount", - "nodeType": "MemberAccess", - "referencedDeclaration": 27910, - "src": "18498:24:39", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", - "typeString": "function (uint256) pure returns (uint256)" - } - }, - "id": 11740, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "18498:26:39", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "18474:50:39" - }, - { - "condition": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 11744, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 11742, - "name": "currentAmount", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 11737, - "src": "18543:13:39", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "<", - "rightExpression": { - "argumentTypes": null, - "id": 11743, - "name": "amountToSlash", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 11665, - "src": "18559:13:39", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "18543:29:39", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "falseBody": { - "id": 11793, - "nodeType": "Block", - "src": "18810:299:39", - "statements": [ - { - "expression": { - "argumentTypes": null, - "id": 11773, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "id": 11768, - "name": "totalAmountToBurn", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 11676, - "src": "18828:17:39", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 11771, - "name": "amountToSlash", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 11665, - "src": "18870:13:39", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "expression": { - "argumentTypes": null, - "id": 11769, - "name": "totalAmountToBurn", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 11676, - "src": "18848:17:39", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 11770, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "add", - "nodeType": "MemberAccess", - "referencedDeclaration": 310, - "src": "18848:21:39", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", - "typeString": "function (uint256,uint256) pure returns (uint256)" - } - }, - "id": 11772, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "18848:36:39", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "18828:56:39", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 11774, - "nodeType": "ExpressionStatement", - "src": "18828:56:39" - }, - { - "expression": { - "argumentTypes": null, - "id": 11786, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 11775, - "name": "operators", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 8825, - "src": "18902:9:39", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Operator_$8834_storage_$", - "typeString": "mapping(address => struct StakeDelegatable.Operator storage ref)" - } - }, - "id": 11777, - "indexExpression": { - "argumentTypes": null, - "id": 11776, - "name": "operator", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 11697, - "src": "18912:8:39", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "18902:19:39", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Operator_$8834_storage", - "typeString": "struct StakeDelegatable.Operator storage ref" - } - }, - "id": 11778, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "memberName": "packedParams", - "nodeType": "MemberAccess", - "referencedDeclaration": 8827, - "src": "18902:32:39", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 11783, - "name": "amountToSlash", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 11665, - "src": "19001:13:39", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "expression": { - "argumentTypes": null, - "id": 11781, - "name": "currentAmount", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 11737, - "src": "18983:13:39", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 11782, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "sub", - "nodeType": "MemberAccess", - "referencedDeclaration": 326, - "src": "18983:17:39", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", - "typeString": "function (uint256,uint256) pure returns (uint256)" - } - }, - "id": 11784, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "18983:32:39", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "expression": { - "argumentTypes": null, - "id": 11779, - "name": "operatorParams", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 11712, - "src": "18937:14:39", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 11780, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "setAmount", - "nodeType": "MemberAccess", - "referencedDeclaration": 27930, - "src": "18937:24:39", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", - "typeString": "function (uint256,uint256) pure returns (uint256)" - } - }, - "id": 11785, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "18937:96:39", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "18902:131:39", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 11787, - "nodeType": "ExpressionStatement", - "src": "18902:131:39" - }, - { - "eventCall": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 11789, - "name": "operator", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 11697, - "src": "19070:8:39", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "argumentTypes": null, - "id": 11790, - "name": "amountToSlash", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 11665, - "src": "19080:13:39", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 11788, - "name": "TokensSlashed", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 11061, - "src": "19056:13:39", - "typeDescriptions": { - "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$returns$__$", - "typeString": "function (address,uint256)" - } - }, - "id": 11791, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "19056:38:39", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 11792, - "nodeType": "EmitStatement", - "src": "19051:43:39" - } - ] - }, - "id": 11794, - "nodeType": "IfStatement", - "src": "18539:570:39", - "trueBody": { - "id": 11767, - "nodeType": "Block", - "src": "18574:230:39", - "statements": [ - { - "expression": { - "argumentTypes": null, - "id": 11750, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "id": 11745, - "name": "totalAmountToBurn", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 11676, - "src": "18592:17:39", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 11748, - "name": "currentAmount", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 11737, - "src": "18634:13:39", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "expression": { - "argumentTypes": null, - "id": 11746, - "name": "totalAmountToBurn", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 11676, - "src": "18612:17:39", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 11747, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "add", - "nodeType": "MemberAccess", - "referencedDeclaration": 310, - "src": "18612:21:39", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", - "typeString": "function (uint256,uint256) pure returns (uint256)" - } - }, - "id": 11749, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "18612:36:39", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "18592:56:39", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 11751, - "nodeType": "ExpressionStatement", - "src": "18592:56:39" - }, - { - "expression": { - "argumentTypes": null, - "id": 11760, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 11752, - "name": "operators", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 8825, - "src": "18666:9:39", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Operator_$8834_storage_$", - "typeString": "mapping(address => struct StakeDelegatable.Operator storage ref)" - } - }, - "id": 11754, - "indexExpression": { - "argumentTypes": null, - "id": 11753, - "name": "operator", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 11697, - "src": "18676:8:39", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "18666:19:39", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Operator_$8834_storage", - "typeString": "struct StakeDelegatable.Operator storage ref" - } - }, - "id": 11755, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "memberName": "packedParams", - "nodeType": "MemberAccess", - "referencedDeclaration": 8827, - "src": "18666:32:39", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "hexValue": "30", - "id": 11758, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "18726:1:39", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - } - ], - "expression": { - "argumentTypes": null, - "id": 11756, - "name": "operatorParams", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 11712, - "src": "18701:14:39", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 11757, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "setAmount", - "nodeType": "MemberAccess", - "referencedDeclaration": 27930, - "src": "18701:24:39", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", - "typeString": "function (uint256,uint256) pure returns (uint256)" - } - }, - "id": 11759, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "18701:27:39", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "18666:62:39", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 11761, - "nodeType": "ExpressionStatement", - "src": "18666:62:39" - }, - { - "eventCall": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 11763, - "name": "operator", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 11697, - "src": "18765:8:39", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "argumentTypes": null, - "id": 11764, - "name": "currentAmount", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 11737, - "src": "18775:13:39", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 11762, - "name": "TokensSlashed", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 11061, - "src": "18751:13:39", - "typeDescriptions": { - "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$returns$__$", - "typeString": "function (address,uint256)" - } - }, - "id": 11765, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "18751:38:39", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 11766, - "nodeType": "EmitStatement", - "src": "18746:43:39" - } - ] - } - } - ] - }, - "condition": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 11692, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 11689, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 11686, - "src": "17950:1:39", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "<", - "rightExpression": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 11690, - "name": "misbehavedOperators", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 11668, - "src": "17954:19:39", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", - "typeString": "address[] memory" - } - }, - "id": 11691, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "length", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "17954:26:39", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "17950:30:39", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 11796, - "initializationExpression": { - "assignments": [11686], - "declarations": [ - { - "constant": false, - "id": 11686, - "name": "i", - "nodeType": "VariableDeclaration", - "scope": 11796, - "src": "17935:9:39", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 11685, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "17935:7:39", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 11688, - "initialValue": { - "argumentTypes": null, - "hexValue": "30", - "id": 11687, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "17947:1:39", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "nodeType": "VariableDeclarationStatement", - "src": "17935:13:39" - }, - "loopExpression": { - "expression": { - "argumentTypes": null, - "id": 11694, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "UnaryOperation", - "operator": "++", - "prefix": false, - "src": "17982:3:39", - "subExpression": { - "argumentTypes": null, - "id": 11693, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 11686, - "src": "17982:1:39", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 11695, - "nodeType": "ExpressionStatement", - "src": "17982:3:39" - }, - "nodeType": "ForStatement", - "src": "17930:1189:39" - }, - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 11800, - "name": "totalAmountToBurn", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 11676, - "src": "19140:17:39", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "expression": { - "argumentTypes": null, - "id": 11797, - "name": "token", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 11093, - "src": "19129:5:39", - "typeDescriptions": { - "typeIdentifier": "t_contract$_ERC20Burnable_$1023", - "typeString": "contract ERC20Burnable" - } - }, - "id": 11799, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "burn", - "nodeType": "MemberAccess", - "referencedDeclaration": 1009, - "src": "19129:10:39", - "typeDescriptions": { - "typeIdentifier": "t_function_external_nonpayable$_t_uint256_$returns$__$", - "typeString": "function (uint256) external" - } - }, - "id": 11801, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "19129:29:39", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 11802, - "nodeType": "ExpressionStatement", - "src": "19129:29:39" - } - ] - }, - "documentation": "@notice Slash provided token amount from every member in the misbehaved\n operators array and burn 100% of all the tokens.\n @param amountToSlash Token amount to slash from every misbehaved operator.\n @param misbehavedOperators Array of addresses to seize the tokens from.", - "id": 11804, - "implemented": true, - "kind": "function", - "modifiers": [ - { - "arguments": [ - { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 11671, - "name": "msg", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 28146, - "src": "17803:3:39", - "typeDescriptions": { - "typeIdentifier": "t_magic_message", - "typeString": "msg" - } - }, - "id": 11672, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "sender", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "17803:10:39", - "typeDescriptions": { - "typeIdentifier": "t_address_payable", - "typeString": "address payable" - } - } - ], - "id": 11673, - "modifierName": { - "argumentTypes": null, - "id": 11670, - "name": "onlyApprovedOperatorContract", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1640, - "src": "17774:28:39", - "typeDescriptions": { - "typeIdentifier": "t_modifier$_t_address_$", - "typeString": "modifier (address)" - } - }, - "nodeType": "ModifierInvocation", - "src": "17774:40:39" - } - ], - "name": "slash", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 11669, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 11665, - "name": "amountToSlash", - "nodeType": "VariableDeclaration", - "scope": 11804, - "src": "17690:21:39", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 11664, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "17690:7:39", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 11668, - "name": "misbehavedOperators", - "nodeType": "VariableDeclaration", - "scope": 11804, - "src": "17713:36:39", - "stateVariable": false, - "storageLocation": "memory", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", - "typeString": "address[]" - }, - "typeName": { - "baseType": { - "id": 11666, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "17713:7:39", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "id": 11667, - "length": null, - "nodeType": "ArrayTypeName", - "src": "17713:9:39", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", - "typeString": "address[]" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "17689:61:39" - }, - "returnParameters": { - "id": 11674, - "nodeType": "ParameterList", - "parameters": [], - "src": "17819:0:39" - }, - "scope": 12435, - "src": "17675:1490:39", - "stateMutability": "nonpayable", - "superFunction": null, - "visibility": "public" - }, - { - "body": { - "id": 11969, - "nodeType": "Block", - "src": "19933:1530:39", - "statements": [ - { - "assignments": [11821], - "declarations": [ - { - "constant": false, - "id": 11821, - "name": "totalAmountToBurn", - "nodeType": "VariableDeclaration", - "scope": 11969, - "src": "19943:25:39", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 11820, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "19943:7:39", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 11822, - "initialValue": null, - "nodeType": "VariableDeclarationStatement", - "src": "19943:25:39" - }, - { - "assignments": [11824], - "declarations": [ - { - "constant": false, - "id": 11824, - "name": "authoritySource", - "nodeType": "VariableDeclaration", - "scope": 11969, - "src": "19978:23:39", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 11823, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "19978:7:39", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 11829, - "initialValue": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 11826, - "name": "msg", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 28146, - "src": "20023:3:39", - "typeDescriptions": { - "typeIdentifier": "t_magic_message", - "typeString": "msg" - } - }, - "id": 11827, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "sender", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "20023:10:39", - "typeDescriptions": { - "typeIdentifier": "t_address_payable", - "typeString": "address payable" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address_payable", - "typeString": "address payable" - } - ], - "id": 11825, - "name": "getAuthoritySource", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1782, - "src": "20004:18:39", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_address_$", - "typeString": "function (address) view returns (address)" - } - }, - "id": 11828, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "20004:30:39", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "19978:56:39" - }, - { - "body": { - "id": 11940, - "nodeType": "Block", - "src": "20101:1130:39", - "statements": [ - { - "assignments": [11842], - "declarations": [ - { - "constant": false, - "id": 11842, - "name": "operator", - "nodeType": "VariableDeclaration", - "scope": 11940, - "src": "20115:16:39", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 11841, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "20115:7:39", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 11846, - "initialValue": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 11843, - "name": "misbehavedOperators", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 11813, - "src": "20134:19:39", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", - "typeString": "address[] memory" - } - }, - "id": 11845, - "indexExpression": { - "argumentTypes": null, - "id": 11844, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 11831, - "src": "20154:1:39", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "20134:22:39", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "20115:41:39" - }, - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 11848, - "name": "authorizations", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1621, - "src": "20195:14:39", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$", - "typeString": "mapping(address => mapping(address => bool))" - } - }, - "id": 11850, - "indexExpression": { - "argumentTypes": null, - "id": 11849, - "name": "authoritySource", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 11824, - "src": "20210:15:39", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "20195:31:39", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", - "typeString": "mapping(address => bool)" - } - }, - "id": 11852, - "indexExpression": { - "argumentTypes": null, - "id": 11851, - "name": "operator", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 11842, - "src": "20227:8:39", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "20195:41:39", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - { - "argumentTypes": null, - "hexValue": "4e6f7420617574686f72697a6564", - "id": 11853, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "string", - "lValueRequested": false, - "nodeType": "Literal", - "src": "20254:16:39", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_stringliteral_fac3bac318c0d00994f57b0f2f4c643c313072b71db2302bf4b900309cc50b36", - "typeString": "literal_string \"Not authorized\"" - }, - "value": "Not authorized" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_stringliteral_fac3bac318c0d00994f57b0f2f4c643c313072b71db2302bf4b900309cc50b36", - "typeString": "literal_string \"Not authorized\"" - } - ], - "id": 11847, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [28149, 28150], - "referencedDeclaration": 28150, - "src": "20170:7:39", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", - "typeString": "function (bool,string memory) pure" - } - }, - "id": 11854, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "20170:114:39", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 11855, - "nodeType": "ExpressionStatement", - "src": "20170:114:39" - }, - { - "assignments": [11857], - "declarations": [ - { - "constant": false, - "id": 11857, - "name": "operatorParams", - "nodeType": "VariableDeclaration", - "scope": 11940, - "src": "20299:22:39", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 11856, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "20299:7:39", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 11862, - "initialValue": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 11858, - "name": "operators", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 8825, - "src": "20324:9:39", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Operator_$8834_storage_$", - "typeString": "mapping(address => struct StakeDelegatable.Operator storage ref)" - } - }, - "id": 11860, - "indexExpression": { - "argumentTypes": null, - "id": 11859, - "name": "operator", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 11842, - "src": "20334:8:39", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "20324:19:39", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Operator_$8834_storage", - "typeString": "struct StakeDelegatable.Operator storage ref" - } - }, - "id": 11861, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberName": "packedParams", - "nodeType": "MemberAccess", - "referencedDeclaration": 8827, - "src": "20324:32:39", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "20299:57:39" - }, - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 11865, - "name": "operatorParams", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 11857, - "src": "20393:14:39", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 11864, - "name": "_isInitialized", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 12314, - "src": "20378:14:39", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_bool_$", - "typeString": "function (uint256) view returns (bool)" - } - }, - "id": 11866, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "20378:30:39", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - { - "argumentTypes": null, - "hexValue": "496e616374697665207374616b65", - "id": 11867, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "string", - "lValueRequested": false, - "nodeType": "Literal", - "src": "20410:16:39", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_stringliteral_ae87db1d2a9d5943a68599fd130a5c06015402b6c91f840c2a2e288f87f41ea4", - "typeString": "literal_string \"Inactive stake\"" - }, - "value": "Inactive stake" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_stringliteral_ae87db1d2a9d5943a68599fd130a5c06015402b6c91f840c2a2e288f87f41ea4", - "typeString": "literal_string \"Inactive stake\"" - } - ], - "id": 11863, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [28149, 28150], - "referencedDeclaration": 28150, - "src": "20370:7:39", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", - "typeString": "function (bool,string memory) pure" - } - }, - "id": 11868, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "20370:57:39", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 11869, - "nodeType": "ExpressionStatement", - "src": "20370:57:39" - }, - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 11877, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "UnaryOperation", - "operator": "!", - "prefix": true, - "src": "20467:55:39", - "subExpression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 11872, - "name": "operator", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 11842, - "src": "20485:8:39", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "argumentTypes": null, - "id": 11873, - "name": "operatorParams", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 11857, - "src": "20495:14:39", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 11874, - "name": "msg", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 28146, - "src": "20511:3:39", - "typeDescriptions": { - "typeIdentifier": "t_magic_message", - "typeString": "msg" - } - }, - "id": 11875, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "sender", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "20511:10:39", - "typeDescriptions": { - "typeIdentifier": "t_address_payable", - "typeString": "address payable" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_address_payable", - "typeString": "address payable" - } - ], - "id": 11871, - "name": "_isStakeReleased", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 12390, - "src": "20468:16:39", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$_t_address_$_t_uint256_$_t_address_$returns$_t_bool_$", - "typeString": "function (address,uint256,address) view returns (bool)" - } - }, - "id": 11876, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "20468:54:39", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - { - "argumentTypes": null, - "hexValue": "5374616b652069732072656c6561736564", - "id": 11878, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "string", - "lValueRequested": false, - "nodeType": "Literal", - "src": "20540:19:39", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_stringliteral_eacc7041583461b566bb72ab4a1f41f0ad993156a94a31407aa7727e352e2fa7", - "typeString": "literal_string \"Stake is released\"" - }, - "value": "Stake is released" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_stringliteral_eacc7041583461b566bb72ab4a1f41f0ad993156a94a31407aa7727e352e2fa7", - "typeString": "literal_string \"Stake is released\"" - } - ], - "id": 11870, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [28149, 28150], - "referencedDeclaration": 28150, - "src": "20442:7:39", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", - "typeString": "function (bool,string memory) pure" - } - }, - "id": 11879, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "20442:131:39", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 11880, - "nodeType": "ExpressionStatement", - "src": "20442:131:39" - }, - { - "assignments": [11882], - "declarations": [ - { - "constant": false, - "id": 11882, - "name": "currentAmount", - "nodeType": "VariableDeclaration", - "scope": 11940, - "src": "20588:21:39", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 11881, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "20588:7:39", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 11886, - "initialValue": { - "argumentTypes": null, - "arguments": [], - "expression": { - "argumentTypes": [], - "expression": { - "argumentTypes": null, - "id": 11883, - "name": "operatorParams", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 11857, - "src": "20612:14:39", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 11884, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "getAmount", - "nodeType": "MemberAccess", - "referencedDeclaration": 27910, - "src": "20612:24:39", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", - "typeString": "function (uint256) pure returns (uint256)" - } - }, - "id": 11885, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "20612:26:39", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "20588:50:39" - }, - { - "condition": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 11889, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 11887, - "name": "currentAmount", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 11882, - "src": "20657:13:39", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "<", - "rightExpression": { - "argumentTypes": null, - "id": 11888, - "name": "amountToSeize", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 11806, - "src": "20673:13:39", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "20657:29:39", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "falseBody": { - "id": 11938, - "nodeType": "Block", - "src": "20923:298:39", - "statements": [ - { - "expression": { - "argumentTypes": null, - "id": 11918, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "id": 11913, - "name": "totalAmountToBurn", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 11821, - "src": "20941:17:39", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 11916, - "name": "amountToSeize", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 11806, - "src": "20983:13:39", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "expression": { - "argumentTypes": null, - "id": 11914, - "name": "totalAmountToBurn", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 11821, - "src": "20961:17:39", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 11915, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "add", - "nodeType": "MemberAccess", - "referencedDeclaration": 310, - "src": "20961:21:39", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", - "typeString": "function (uint256,uint256) pure returns (uint256)" - } - }, - "id": 11917, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "20961:36:39", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "20941:56:39", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 11919, - "nodeType": "ExpressionStatement", - "src": "20941:56:39" - }, - { - "expression": { - "argumentTypes": null, - "id": 11931, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 11920, - "name": "operators", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 8825, - "src": "21015:9:39", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Operator_$8834_storage_$", - "typeString": "mapping(address => struct StakeDelegatable.Operator storage ref)" - } - }, - "id": 11922, - "indexExpression": { - "argumentTypes": null, - "id": 11921, - "name": "operator", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 11842, - "src": "21025:8:39", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "21015:19:39", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Operator_$8834_storage", - "typeString": "struct StakeDelegatable.Operator storage ref" - } - }, - "id": 11923, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "memberName": "packedParams", - "nodeType": "MemberAccess", - "referencedDeclaration": 8827, - "src": "21015:32:39", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 11928, - "name": "amountToSeize", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 11806, - "src": "21114:13:39", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "expression": { - "argumentTypes": null, - "id": 11926, - "name": "currentAmount", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 11882, - "src": "21096:13:39", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 11927, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "sub", - "nodeType": "MemberAccess", - "referencedDeclaration": 326, - "src": "21096:17:39", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", - "typeString": "function (uint256,uint256) pure returns (uint256)" - } - }, - "id": 11929, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "21096:32:39", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "expression": { - "argumentTypes": null, - "id": 11924, - "name": "operatorParams", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 11857, - "src": "21050:14:39", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 11925, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "setAmount", - "nodeType": "MemberAccess", - "referencedDeclaration": 27930, - "src": "21050:24:39", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", - "typeString": "function (uint256,uint256) pure returns (uint256)" - } - }, - "id": 11930, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "21050:96:39", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "21015:131:39", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 11932, - "nodeType": "ExpressionStatement", - "src": "21015:131:39" - }, - { - "eventCall": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 11934, - "name": "operator", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 11842, - "src": "21182:8:39", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "argumentTypes": null, - "id": 11935, - "name": "amountToSeize", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 11806, - "src": "21192:13:39", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 11933, - "name": "TokensSeized", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 11067, - "src": "21169:12:39", - "typeDescriptions": { - "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$returns$__$", - "typeString": "function (address,uint256)" - } - }, - "id": 11936, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "21169:37:39", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 11937, - "nodeType": "EmitStatement", - "src": "21164:42:39" - } - ] - }, - "id": 11939, - "nodeType": "IfStatement", - "src": "20653:568:39", - "trueBody": { - "id": 11912, - "nodeType": "Block", - "src": "20688:229:39", - "statements": [ - { - "expression": { - "argumentTypes": null, - "id": 11895, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "id": 11890, - "name": "totalAmountToBurn", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 11821, - "src": "20706:17:39", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 11893, - "name": "currentAmount", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 11882, - "src": "20748:13:39", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "expression": { - "argumentTypes": null, - "id": 11891, - "name": "totalAmountToBurn", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 11821, - "src": "20726:17:39", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 11892, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "add", - "nodeType": "MemberAccess", - "referencedDeclaration": 310, - "src": "20726:21:39", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", - "typeString": "function (uint256,uint256) pure returns (uint256)" - } - }, - "id": 11894, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "20726:36:39", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "20706:56:39", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 11896, - "nodeType": "ExpressionStatement", - "src": "20706:56:39" - }, - { - "expression": { - "argumentTypes": null, - "id": 11905, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 11897, - "name": "operators", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 8825, - "src": "20780:9:39", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Operator_$8834_storage_$", - "typeString": "mapping(address => struct StakeDelegatable.Operator storage ref)" - } - }, - "id": 11899, - "indexExpression": { - "argumentTypes": null, - "id": 11898, - "name": "operator", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 11842, - "src": "20790:8:39", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "20780:19:39", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Operator_$8834_storage", - "typeString": "struct StakeDelegatable.Operator storage ref" - } - }, - "id": 11900, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "memberName": "packedParams", - "nodeType": "MemberAccess", - "referencedDeclaration": 8827, - "src": "20780:32:39", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "hexValue": "30", - "id": 11903, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "20840:1:39", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - } - ], - "expression": { - "argumentTypes": null, - "id": 11901, - "name": "operatorParams", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 11857, - "src": "20815:14:39", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 11902, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "setAmount", - "nodeType": "MemberAccess", - "referencedDeclaration": 27930, - "src": "20815:24:39", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", - "typeString": "function (uint256,uint256) pure returns (uint256)" - } - }, - "id": 11904, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "20815:27:39", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "20780:62:39", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 11906, - "nodeType": "ExpressionStatement", - "src": "20780:62:39" - }, - { - "eventCall": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 11908, - "name": "operator", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 11842, - "src": "20878:8:39", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "argumentTypes": null, - "id": 11909, - "name": "currentAmount", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 11882, - "src": "20888:13:39", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 11907, - "name": "TokensSeized", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 11067, - "src": "20865:12:39", - "typeDescriptions": { - "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$returns$__$", - "typeString": "function (address,uint256)" - } - }, - "id": 11910, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "20865:37:39", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 11911, - "nodeType": "EmitStatement", - "src": "20860:42:39" - } - ] - } - } - ] - }, - "condition": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 11837, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 11834, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 11831, - "src": "20064:1:39", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "<", - "rightExpression": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 11835, - "name": "misbehavedOperators", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 11813, - "src": "20068:19:39", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", - "typeString": "address[] memory" - } - }, - "id": 11836, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "length", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "20068:26:39", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "20064:30:39", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 11941, - "initializationExpression": { - "assignments": [11831], - "declarations": [ - { - "constant": false, - "id": 11831, - "name": "i", - "nodeType": "VariableDeclaration", - "scope": 11941, - "src": "20049:9:39", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 11830, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "20049:7:39", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 11833, - "initialValue": { - "argumentTypes": null, - "hexValue": "30", - "id": 11832, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "20061:1:39", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "nodeType": "VariableDeclarationStatement", - "src": "20049:13:39" - }, - "loopExpression": { - "expression": { - "argumentTypes": null, - "id": 11839, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "UnaryOperation", - "operator": "++", - "prefix": false, - "src": "20096:3:39", - "subExpression": { - "argumentTypes": null, - "id": 11838, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 11831, - "src": "20096:1:39", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 11840, - "nodeType": "ExpressionStatement", - "src": "20096:3:39" - }, - "nodeType": "ForStatement", - "src": "20044:1187:39" - }, - { - "assignments": [11943], - "declarations": [ - { - "constant": false, - "id": 11943, - "name": "tattletaleReward", - "nodeType": "VariableDeclaration", - "scope": 11969, - "src": "21241:24:39", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 11942, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "21241:7:39", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 11952, - "initialValue": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 11950, - "name": "rewardMultiplier", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 11808, - "src": "21319:16:39", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "expression": { - "argumentTypes": null, - "components": [ - { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "hexValue": "35", - "id": 11946, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "21307:1:39", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_5_by_1", - "typeString": "int_const 5" - }, - "value": "5" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_rational_5_by_1", - "typeString": "int_const 5" - } - ], - "expression": { - "argumentTypes": null, - "id": 11944, - "name": "totalAmountToBurn", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 11821, - "src": "21281:17:39", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 11945, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "percent", - "nodeType": "MemberAccess", - "referencedDeclaration": 28042, - "src": "21281:25:39", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", - "typeString": "function (uint256,uint256) pure returns (uint256)" - } - }, - "id": 11947, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "21281:28:39", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "id": 11948, - "isConstant": false, - "isInlineArray": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "TupleExpression", - "src": "21280:30:39", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 11949, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "percent", - "nodeType": "MemberAccess", - "referencedDeclaration": 28042, - "src": "21280:38:39", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", - "typeString": "function (uint256,uint256) pure returns (uint256)" - } - }, - "id": 11951, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "21280:56:39", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "21241:95:39" - }, - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 11956, - "name": "tattletale", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 11810, - "src": "21366:10:39", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "argumentTypes": null, - "id": 11957, - "name": "tattletaleReward", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 11943, - "src": "21378:16:39", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "expression": { - "argumentTypes": null, - "id": 11953, - "name": "token", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 11093, - "src": "21347:5:39", - "typeDescriptions": { - "typeIdentifier": "t_contract$_ERC20Burnable_$1023", - "typeString": "contract ERC20Burnable" - } - }, - "id": 11955, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "safeTransfer", - "nodeType": "MemberAccess", - "referencedDeclaration": 1183, - "src": "21347:18:39", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$1150_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IERC20_$1150_$", - "typeString": "function (contract IERC20,address,uint256)" - } - }, - "id": 11958, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "21347:48:39", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 11959, - "nodeType": "ExpressionStatement", - "src": "21347:48:39" - }, - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 11965, - "name": "tattletaleReward", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 11943, - "src": "21438:16:39", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "expression": { - "argumentTypes": null, - "id": 11963, - "name": "totalAmountToBurn", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 11821, - "src": "21416:17:39", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 11964, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "sub", - "nodeType": "MemberAccess", - "referencedDeclaration": 326, - "src": "21416:21:39", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", - "typeString": "function (uint256,uint256) pure returns (uint256)" - } - }, - "id": 11966, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "21416:39:39", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "expression": { - "argumentTypes": null, - "id": 11960, - "name": "token", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 11093, - "src": "21405:5:39", - "typeDescriptions": { - "typeIdentifier": "t_contract$_ERC20Burnable_$1023", - "typeString": "contract ERC20Burnable" - } - }, - "id": 11962, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "burn", - "nodeType": "MemberAccess", - "referencedDeclaration": 1009, - "src": "21405:10:39", - "typeDescriptions": { - "typeIdentifier": "t_function_external_nonpayable$_t_uint256_$returns$__$", - "typeString": "function (uint256) external" - } - }, - "id": 11967, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "21405:51:39", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 11968, - "nodeType": "ExpressionStatement", - "src": "21405:51:39" - } - ] - }, - "documentation": "@notice Seize provided token amount from every member in the misbehaved\n operators array. The tattletale is rewarded with 5% of the total seized\n amount scaled by the reward adjustment parameter and the rest 95% is burned.\n @param amountToSeize Token amount to seize from every misbehaved operator.\n @param rewardMultiplier Reward adjustment in percentage. Min 1% and 100% max.\n @param tattletale Address to receive the 5% reward.\n @param misbehavedOperators Array of addresses to seize the tokens from.", - "id": 11970, - "implemented": true, - "kind": "function", - "modifiers": [ - { - "arguments": [ - { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 11816, - "name": "msg", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 28146, - "src": "19921:3:39", - "typeDescriptions": { - "typeIdentifier": "t_magic_message", - "typeString": "msg" - } - }, - "id": 11817, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "sender", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "19921:10:39", - "typeDescriptions": { - "typeIdentifier": "t_address_payable", - "typeString": "address payable" - } - } - ], - "id": 11818, - "modifierName": { - "argumentTypes": null, - "id": 11815, - "name": "onlyApprovedOperatorContract", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1640, - "src": "19892:28:39", - "typeDescriptions": { - "typeIdentifier": "t_modifier$_t_address_$", - "typeString": "modifier (address)" - } - }, - "nodeType": "ModifierInvocation", - "src": "19892:40:39" - } - ], - "name": "seize", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 11814, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 11806, - "name": "amountToSeize", - "nodeType": "VariableDeclaration", - "scope": 11970, - "src": "19749:21:39", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 11805, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "19749:7:39", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 11808, - "name": "rewardMultiplier", - "nodeType": "VariableDeclaration", - "scope": 11970, - "src": "19780:24:39", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 11807, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "19780:7:39", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 11810, - "name": "tattletale", - "nodeType": "VariableDeclaration", - "scope": 11970, - "src": "19814:18:39", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 11809, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "19814:7:39", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 11813, - "name": "misbehavedOperators", - "nodeType": "VariableDeclaration", - "scope": 11970, - "src": "19842:36:39", - "stateVariable": false, - "storageLocation": "memory", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", - "typeString": "address[]" - }, - "typeName": { - "baseType": { - "id": 11811, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "19842:7:39", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "id": 11812, - "length": null, - "nodeType": "ArrayTypeName", - "src": "19842:9:39", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", - "typeString": "address[]" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "19739:145:39" - }, - "returnParameters": { - "id": 11819, - "nodeType": "ParameterList", - "parameters": [], - "src": "19933:0:39" - }, - "scope": 12435, - "src": "19725:1738:39", - "stateMutability": "nonpayable", - "superFunction": null, - "visibility": "public" - }, - { - "body": { - "id": 12000, - "nodeType": "Block", - "src": "21783:189:39", - "statements": [ - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "id": 11984, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 11978, - "name": "msg", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 28146, - "src": "21801:3:39", - "typeDescriptions": { - "typeIdentifier": "t_magic_message", - "typeString": "msg" - } - }, - "id": 11979, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "sender", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "21801:10:39", - "typeDescriptions": { - "typeIdentifier": "t_address_payable", - "typeString": "address payable" - } - }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 11980, - "name": "operators", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 8825, - "src": "21815:9:39", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Operator_$8834_storage_$", - "typeString": "mapping(address => struct StakeDelegatable.Operator storage ref)" - } - }, - "id": 11982, - "indexExpression": { - "argumentTypes": null, - "id": 11981, - "name": "operator", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 11972, - "src": "21825:8:39", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "21815:19:39", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Operator_$8834_storage", - "typeString": "struct StakeDelegatable.Operator storage ref" - } - }, - "id": 11983, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberName": "owner", - "nodeType": "MemberAccess", - "referencedDeclaration": 8829, - "src": "21815:25:39", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "src": "21801:39:39", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - { - "argumentTypes": null, - "hexValue": "4e6f7420617574686f72697a6564", - "id": 11985, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "string", - "lValueRequested": false, - "nodeType": "Literal", - "src": "21842:16:39", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_stringliteral_fac3bac318c0d00994f57b0f2f4c643c313072b71db2302bf4b900309cc50b36", - "typeString": "literal_string \"Not authorized\"" - }, - "value": "Not authorized" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_stringliteral_fac3bac318c0d00994f57b0f2f4c643c313072b71db2302bf4b900309cc50b36", - "typeString": "literal_string \"Not authorized\"" - } - ], - "id": 11977, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [28149, 28150], - "referencedDeclaration": 28150, - "src": "21793:7:39", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", - "typeString": "function (bool,string memory) pure" - } - }, - "id": 11986, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "21793:66:39", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 11987, - "nodeType": "ExpressionStatement", - "src": "21793:66:39" - }, - { - "expression": { - "argumentTypes": null, - "id": 11993, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 11988, - "name": "operators", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 8825, - "src": "21869:9:39", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Operator_$8834_storage_$", - "typeString": "mapping(address => struct StakeDelegatable.Operator storage ref)" - } - }, - "id": 11990, - "indexExpression": { - "argumentTypes": null, - "id": 11989, - "name": "operator", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 11972, - "src": "21879:8:39", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "21869:19:39", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Operator_$8834_storage", - "typeString": "struct StakeDelegatable.Operator storage ref" - } - }, - "id": 11991, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "memberName": "owner", - "nodeType": "MemberAccess", - "referencedDeclaration": 8829, - "src": "21869:25:39", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "id": 11992, - "name": "newOwner", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 11974, - "src": "21897:8:39", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "src": "21869:36:39", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "id": 11994, - "nodeType": "ExpressionStatement", - "src": "21869:36:39" - }, - { - "eventCall": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 11996, - "name": "operator", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 11972, - "src": "21946:8:39", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "argumentTypes": null, - "id": 11997, - "name": "newOwner", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 11974, - "src": "21956:8:39", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "id": 11995, - "name": "StakeOwnershipTransferred", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 11033, - "src": "21920:25:39", - "typeDescriptions": { - "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$returns$__$", - "typeString": "function (address,address)" - } - }, - "id": 11998, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "21920:45:39", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 11999, - "nodeType": "EmitStatement", - "src": "21915:50:39" - } - ] - }, - "documentation": "@notice Allows the current staking relationship owner to transfer the\n ownership to someone else.\n @param operator Address of the stake operator.\n @param newOwner Address of the new staking relationship owner.", - "id": 12001, - "implemented": true, - "kind": "function", - "modifiers": [], - "name": "transferStakeOwnership", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 11975, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 11972, - "name": "operator", - "nodeType": "VariableDeclaration", - "scope": 12001, - "src": "21740:16:39", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 11971, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "21740:7:39", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 11974, - "name": "newOwner", - "nodeType": "VariableDeclaration", - "scope": 12001, - "src": "21758:16:39", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 11973, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "21758:7:39", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "21739:36:39" - }, - "returnParameters": { - "id": 11976, - "nodeType": "ParameterList", - "parameters": [], - "src": "21783:0:39" - }, - "scope": 12435, - "src": "21708:264:39", - "stateMutability": "nonpayable", - "superFunction": null, - "visibility": "public" - }, - { - "body": { - "id": 12038, - "nodeType": "Block", - "src": "22713:735:39", - "statements": [ - { - "assignments": [12011], - "declarations": [ - { - "constant": false, - "id": 12011, - "name": "operatorParams", - "nodeType": "VariableDeclaration", - "scope": 12038, - "src": "22723:22:39", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 12010, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "22723:7:39", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 12016, - "initialValue": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 12012, - "name": "operators", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 8825, - "src": "22748:9:39", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Operator_$8834_storage_$", - "typeString": "mapping(address => struct StakeDelegatable.Operator storage ref)" - } - }, - "id": 12014, - "indexExpression": { - "argumentTypes": null, - "id": 12013, - "name": "_operator", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 12003, - "src": "22758:9:39", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "22748:20:39", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Operator_$8834_storage", - "typeString": "struct StakeDelegatable.Operator storage ref" - } - }, - "id": 12015, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberName": "packedParams", - "nodeType": "MemberAccess", - "referencedDeclaration": 8827, - "src": "22748:33:39", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "22723:58:39" - }, - { - "condition": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "id": 12029, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "id": 12024, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 12018, - "name": "_operator", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 12003, - "src": "23247:9:39", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "argumentTypes": null, - "id": 12019, - "name": "_operatorContract", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 12005, - "src": "23258:17:39", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "id": 12017, - "name": "isAuthorizedForOperator", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1713, - "src": "23223:23:39", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$_t_address_$_t_address_$returns$_t_bool_$", - "typeString": "function (address,address) view returns (bool)" - } - }, - "id": 12020, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "23223:53:39", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "nodeType": "BinaryOperation", - "operator": "&&", - "rightExpression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 12022, - "name": "operatorParams", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 12011, - "src": "23307:14:39", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 12021, - "name": "_isInitialized", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 12314, - "src": "23292:14:39", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_bool_$", - "typeString": "function (uint256) view returns (bool)" - } - }, - "id": 12023, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "23292:30:39", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "src": "23223:99:39", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "nodeType": "BinaryOperation", - "operator": "&&", - "rightExpression": { - "argumentTypes": null, - "id": 12028, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "UnaryOperation", - "operator": "!", - "prefix": true, - "src": "23338:32:39", - "subExpression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 12026, - "name": "operatorParams", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 12011, - "src": "23355:14:39", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 12025, - "name": "_isUndelegating", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 12339, - "src": "23339:15:39", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_bool_$", - "typeString": "function (uint256) view returns (bool)" - } - }, - "id": 12027, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "23339:31:39", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "src": "23223:147:39", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "falseBody": null, - "id": 12037, - "nodeType": "IfStatement", - "src": "23206:236:39", - "trueBody": { - "id": 12036, - "nodeType": "Block", - "src": "23381:61:39", - "statements": [ - { - "expression": { - "argumentTypes": null, - "id": 12034, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "id": 12030, - "name": "balance", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 12008, - "src": "23395:7:39", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "arguments": [], - "expression": { - "argumentTypes": [], - "expression": { - "argumentTypes": null, - "id": 12031, - "name": "operatorParams", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 12011, - "src": "23405:14:39", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 12032, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "getAmount", - "nodeType": "MemberAccess", - "referencedDeclaration": 27910, - "src": "23405:24:39", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", - "typeString": "function (uint256) pure returns (uint256)" - } - }, - "id": 12033, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "23405:26:39", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "23395:36:39", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 12035, - "nodeType": "ExpressionStatement", - "src": "23395:36:39" - } - ] - } - } - ] - }, - "documentation": "@notice Gets the eligible stake balance of the specified address.\n An eligible stake is a stake that passed the initialization period\n and is not currently undelegating. Also, the operator had to approve\n the specified operator contract.\n\n /// Operator with a minimum required amount of eligible stake can join the\n network and participate in new work selection.\n\n /// @param _operator address of stake operator.\n @param _operatorContract address of operator contract.\n @return an uint256 representing the eligible stake balance.", - "id": 12039, - "implemented": true, - "kind": "function", - "modifiers": [], - "name": "eligibleStake", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 12006, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 12003, - "name": "_operator", - "nodeType": "VariableDeclaration", - "scope": 12039, - "src": "22601:17:39", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 12002, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "22601:7:39", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 12005, - "name": "_operatorContract", - "nodeType": "VariableDeclaration", - "scope": 12039, - "src": "22620:25:39", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 12004, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "22620:7:39", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "22600:46:39" - }, - "returnParameters": { - "id": 12009, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 12008, - "name": "balance", - "nodeType": "VariableDeclaration", - "scope": 12039, - "src": "22692:15:39", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 12007, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "22692:7:39", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "22691:17:39" - }, - "scope": 12435, - "src": "22578:870:39", - "stateMutability": "view", - "superFunction": null, - "visibility": "public" - }, - { - "body": { - "id": 12078, - "nodeType": "Block", - "src": "24584:351:39", - "statements": [ - { - "assignments": [12049], - "declarations": [ - { - "constant": false, - "id": 12049, - "name": "operatorParams", - "nodeType": "VariableDeclaration", - "scope": 12078, - "src": "24594:22:39", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 12048, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "24594:7:39", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 12054, - "initialValue": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 12050, - "name": "operators", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 8825, - "src": "24619:9:39", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Operator_$8834_storage_$", - "typeString": "mapping(address => struct StakeDelegatable.Operator storage ref)" - } - }, - "id": 12052, - "indexExpression": { - "argumentTypes": null, - "id": 12051, - "name": "_operator", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 12041, - "src": "24629:9:39", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "24619:20:39", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Operator_$8834_storage", - "typeString": "struct StakeDelegatable.Operator storage ref" - } - }, - "id": 12053, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberName": "packedParams", - "nodeType": "MemberAccess", - "referencedDeclaration": 8827, - "src": "24619:33:39", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "24594:58:39" - }, - { - "condition": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "id": 12069, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "id": 12062, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 12056, - "name": "_operator", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 12041, - "src": "24703:9:39", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "argumentTypes": null, - "id": 12057, - "name": "_operatorContract", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 12043, - "src": "24714:17:39", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "id": 12055, - "name": "isAuthorizedForOperator", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1713, - "src": "24679:23:39", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$_t_address_$_t_address_$returns$_t_bool_$", - "typeString": "function (address,address) view returns (bool)" - } - }, - "id": 12058, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "24679:53:39", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "nodeType": "BinaryOperation", - "operator": "&&", - "rightExpression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 12060, - "name": "operatorParams", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 12049, - "src": "24763:14:39", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 12059, - "name": "_isInitialized", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 12314, - "src": "24748:14:39", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_bool_$", - "typeString": "function (uint256) view returns (bool)" - } - }, - "id": 12061, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "24748:30:39", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "src": "24679:99:39", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "nodeType": "BinaryOperation", - "operator": "&&", - "rightExpression": { - "argumentTypes": null, - "id": 12068, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "UnaryOperation", - "operator": "!", - "prefix": true, - "src": "24794:63:39", - "subExpression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 12064, - "name": "_operator", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 12041, - "src": "24812:9:39", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "argumentTypes": null, - "id": 12065, - "name": "operatorParams", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 12049, - "src": "24823:14:39", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "id": 12066, - "name": "_operatorContract", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 12043, - "src": "24839:17:39", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "id": 12063, - "name": "_isStakeReleased", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 12390, - "src": "24795:16:39", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$_t_address_$_t_uint256_$_t_address_$returns$_t_bool_$", - "typeString": "function (address,uint256,address) view returns (bool)" - } - }, - "id": 12067, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "24795:62:39", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "src": "24679:178:39", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "falseBody": null, - "id": 12077, - "nodeType": "IfStatement", - "src": "24662:267:39", - "trueBody": { - "id": 12076, - "nodeType": "Block", - "src": "24868:61:39", - "statements": [ - { - "expression": { - "argumentTypes": null, - "id": 12074, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "id": 12070, - "name": "balance", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 12046, - "src": "24882:7:39", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "arguments": [], - "expression": { - "argumentTypes": [], - "expression": { - "argumentTypes": null, - "id": 12071, - "name": "operatorParams", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 12049, - "src": "24892:14:39", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 12072, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "getAmount", - "nodeType": "MemberAccess", - "referencedDeclaration": 27910, - "src": "24892:24:39", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", - "typeString": "function (uint256) pure returns (uint256)" - } - }, - "id": 12073, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "24892:26:39", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "24882:36:39", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 12075, - "nodeType": "ExpressionStatement", - "src": "24882:36:39" - } - ] - } - } - ] - }, - "documentation": "@notice Gets the active stake balance of the specified address.\n An active stake is a stake that passed the initialization period,\n and may be in the process of undelegation\n but has not been released yet,\n either because the undelegation period is not over,\n or because the operator contract has an active lock on the operator.\n Also, the operator had to approve the specified operator contract.\n\n /// The difference between eligible stake is that active stake does not make\n the operator eligible for work selection but it may be still finishing\n earlier work until the stake is released.\n Operator with a minimum required\n amount of active stake can join the network but cannot be selected to any\n new work.\n\n /// @param _operator address of stake operator.\n @param _operatorContract address of operator contract.\n @return an uint256 representing the eligible stake balance.", - "id": 12079, - "implemented": true, - "kind": "function", - "modifiers": [], - "name": "activeStake", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 12044, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 12041, - "name": "_operator", - "nodeType": "VariableDeclaration", - "scope": 12079, - "src": "24472:17:39", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 12040, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "24472:7:39", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 12043, - "name": "_operatorContract", - "nodeType": "VariableDeclaration", - "scope": 12079, - "src": "24491:25:39", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 12042, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "24491:7:39", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "24471:46:39" - }, - "returnParameters": { - "id": 12047, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 12046, - "name": "balance", - "nodeType": "VariableDeclaration", - "scope": 12079, - "src": "24563:15:39", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 12045, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "24563:7:39", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "24562:17:39" - }, - "scope": 12435, - "src": "24451:484:39", - "stateMutability": "view", - "superFunction": null, - "visibility": "public" - }, - { - "body": { - "id": 12096, - "nodeType": "Block", - "src": "25696:79:39", - "statements": [ - { - "expression": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 12094, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 12089, - "name": "staker", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 12081, - "src": "25725:6:39", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "argumentTypes": null, - "id": 12090, - "name": "operatorContract", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 12083, - "src": "25733:16:39", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "id": 12088, - "name": "activeStake", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 12079, - "src": "25713:11:39", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$_t_address_$_t_address_$returns$_t_uint256_$", - "typeString": "function (address,address) view returns (uint256)" - } - }, - "id": 12091, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "25713:37:39", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": ">=", - "rightExpression": { - "argumentTypes": null, - "arguments": [], - "expression": { - "argumentTypes": [], - "id": 12092, - "name": "minimumStake", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 11165, - "src": "25754:12:39", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$__$returns$_t_uint256_$", - "typeString": "function () view returns (uint256)" - } - }, - "id": 12093, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "25754:14:39", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "25713:55:39", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "functionReturnParameters": 12087, - "id": 12095, - "nodeType": "Return", - "src": "25706:62:39" - } - ] - }, - "documentation": "@notice Checks if the specified account has enough active stake to become\n network operator and that the specified operator contract has been\n authorized for potential slashing.\n\n /// Having the required minimum of active stake makes the operator eligible\n to join the network. If the active stake is not currently undelegating,\n operator is also eligible for work selection.\n\n /// @param staker Staker's address\n @param operatorContract Operator contract's address\n @return True if has enough active stake to participate in the network,\n false otherwise.", - "id": 12097, - "implemented": true, - "kind": "function", - "modifiers": [], - "name": "hasMinimumStake", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 12084, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 12081, - "name": "staker", - "nodeType": "VariableDeclaration", - "scope": 12097, - "src": "25599:14:39", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 12080, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "25599:7:39", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 12083, - "name": "operatorContract", - "nodeType": "VariableDeclaration", - "scope": 12097, - "src": "25615:24:39", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 12082, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "25615:7:39", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "25598:42:39" - }, - "returnParameters": { - "id": 12087, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 12086, - "name": "", - "nodeType": "VariableDeclaration", - "scope": 12097, - "src": "25686:4:39", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "typeName": { - "id": 12085, - "name": "bool", - "nodeType": "ElementaryTypeName", - "src": "25686:4:39", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "25685:6:39" - }, - "scope": 12435, - "src": "25574:201:39", - "stateMutability": "view", - "superFunction": null, - "visibility": "public" - }, - { - "body": { - "id": 12175, - "nodeType": "Block", - "src": "26320:699:39", - "statements": [ - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 12112, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 12109, - "name": "_value", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 12101, - "src": "26338:6:39", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": ">=", - "rightExpression": { - "argumentTypes": null, - "arguments": [], - "expression": { - "argumentTypes": [], - "id": 12110, - "name": "minimumStake", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 11165, - "src": "26348:12:39", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$__$returns$_t_uint256_$", - "typeString": "function () view returns (uint256)" - } - }, - "id": 12111, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "26348:14:39", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "26338:24:39", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - { - "argumentTypes": null, - "hexValue": "4c657373207468616e20746865206d696e696d756d207374616b65", - "id": 12113, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "string", - "lValueRequested": false, - "nodeType": "Literal", - "src": "26364:29:39", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_stringliteral_c6d66e5d14df06ecd5772a76d2f19421e7b2d8605daf8bd076cb516603943b67", - "typeString": "literal_string \"Less than the minimum stake\"" - }, - "value": "Less than the minimum stake" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_stringliteral_c6d66e5d14df06ecd5772a76d2f19421e7b2d8605daf8bd076cb516603943b67", - "typeString": "literal_string \"Less than the minimum stake\"" - } - ], - "id": 12108, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [28149, 28150], - "referencedDeclaration": 28150, - "src": "26330:7:39", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", - "typeString": "function (bool,string memory) pure" - } - }, - "id": 12114, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "26330:64:39", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 12115, - "nodeType": "ExpressionStatement", - "src": "26330:64:39" - }, - { - "assignments": [12117], - "declarations": [ - { - "constant": false, - "id": 12117, - "name": "beneficiary", - "nodeType": "VariableDeclaration", - "scope": 12175, - "src": "26405:27:39", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address_payable", - "typeString": "address payable" - }, - "typeName": { - "id": 12116, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "26405:15:39", - "stateMutability": "payable", - "typeDescriptions": { - "typeIdentifier": "t_address_payable", - "typeString": "address payable" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 12126, - "initialValue": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "hexValue": "30", - "id": 12122, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "26472:1:39", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - } - ], - "expression": { - "argumentTypes": null, - "id": 12120, - "name": "_extraData", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 12105, - "src": "26451:10:39", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - }, - "id": 12121, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "toAddress", - "nodeType": "MemberAccess", - "referencedDeclaration": 27348, - "src": "26451:20:39", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_address_$bound_to$_t_bytes_memory_ptr_$", - "typeString": "function (bytes memory,uint256) pure returns (address)" - } - }, - "id": 12123, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "26451:23:39", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "id": 12119, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "26443:7:39", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_uint160_$", - "typeString": "type(uint160)" - }, - "typeName": "uint160" - }, - "id": 12124, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "typeConversion", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "26443:32:39", - "typeDescriptions": { - "typeIdentifier": "t_uint160", - "typeString": "uint160" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint160", - "typeString": "uint160" - } - ], - "id": 12118, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "26435:7:39", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_address_$", - "typeString": "type(address)" - }, - "typeName": "address" - }, - "id": 12125, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "typeConversion", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "26435:41:39", - "typeDescriptions": { - "typeIdentifier": "t_address_payable", - "typeString": "address payable" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "26405:71:39" - }, - { - "assignments": [12128], - "declarations": [ - { - "constant": false, - "id": 12128, - "name": "authorizer", - "nodeType": "VariableDeclaration", - "scope": 12175, - "src": "26486:18:39", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 12127, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "26486:7:39", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 12133, - "initialValue": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "hexValue": "3430", - "id": 12131, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "26528:2:39", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_40_by_1", - "typeString": "int_const 40" - }, - "value": "40" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_rational_40_by_1", - "typeString": "int_const 40" - } - ], - "expression": { - "argumentTypes": null, - "id": 12129, - "name": "_extraData", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 12105, - "src": "26507:10:39", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - }, - "id": 12130, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "toAddress", - "nodeType": "MemberAccess", - "referencedDeclaration": 27348, - "src": "26507:20:39", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_address_$bound_to$_t_bytes_memory_ptr_$", - "typeString": "function (bytes memory,uint256) pure returns (address)" - } - }, - "id": 12132, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "26507:24:39", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "26486:45:39" - }, - { - "expression": { - "argumentTypes": null, - "id": 12149, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 12134, - "name": "operators", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 8825, - "src": "26542:9:39", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Operator_$8834_storage_$", - "typeString": "mapping(address => struct StakeDelegatable.Operator storage ref)" - } - }, - "id": 12136, - "indexExpression": { - "argumentTypes": null, - "id": 12135, - "name": "_operator", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 12103, - "src": "26552:9:39", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "nodeType": "IndexAccess", - "src": "26542:20:39", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Operator_$8834_storage", - "typeString": "struct StakeDelegatable.Operator storage ref" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 12140, - "name": "_value", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 12101, - "src": "26607:6:39", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 12141, - "name": "block", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 28136, - "src": "26615:5:39", - "typeDescriptions": { - "typeIdentifier": "t_magic_block", - "typeString": "block" - } - }, - "id": 12142, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "timestamp", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "26615:15:39", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "hexValue": "30", - "id": 12143, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "26632:1:39", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - } - ], - "expression": { - "argumentTypes": null, - "id": 12138, - "name": "OperatorParams", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 28018, - "src": "26587:14:39", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_OperatorParams_$28018_$", - "typeString": "type(library OperatorParams)" - } - }, - "id": 12139, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "pack", - "nodeType": "MemberAccess", - "referencedDeclaration": 27865, - "src": "26587:19:39", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", - "typeString": "function (uint256,uint256,uint256) pure returns (uint256)" - } - }, - "id": 12144, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "26587:47:39", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "id": 12145, - "name": "_from", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 12099, - "src": "26648:5:39", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "argumentTypes": null, - "id": 12146, - "name": "beneficiary", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 12117, - "src": "26667:11:39", - "typeDescriptions": { - "typeIdentifier": "t_address_payable", - "typeString": "address payable" - } - }, - { - "argumentTypes": null, - "id": 12147, - "name": "authorizer", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 12128, - "src": "26692:10:39", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_address_payable", - "typeString": "address payable" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "id": 12137, - "name": "Operator", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 8834, - "src": "26565:8:39", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_struct$_Operator_$8834_storage_ptr_$", - "typeString": "type(struct StakeDelegatable.Operator storage pointer)" - } - }, - "id": 12148, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "structConstructorCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "26565:147:39", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Operator_$8834_memory", - "typeString": "struct StakeDelegatable.Operator memory" - } - }, - "src": "26542:170:39", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Operator_$8834_storage", - "typeString": "struct StakeDelegatable.Operator storage ref" - } - }, - "id": 12150, - "nodeType": "ExpressionStatement", - "src": "26542:170:39" - }, - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 12154, - "name": "tokenGrant", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 11095, - "src": "26776:10:39", - "typeDescriptions": { - "typeIdentifier": "t_contract$_TokenGrant_$10702", - "typeString": "contract TokenGrant" - } - }, - { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 12156, - "name": "escrow", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 11097, - "src": "26808:6:39", - "typeDescriptions": { - "typeIdentifier": "t_contract$_TokenStakingEscrow_$13399", - "typeString": "contract TokenStakingEscrow" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_contract$_TokenStakingEscrow_$13399", - "typeString": "contract TokenStakingEscrow" - } - ], - "id": 12155, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "26800:7:39", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_address_$", - "typeString": "type(address)" - }, - "typeName": "address" - }, - "id": 12157, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "typeConversion", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "26800:15:39", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "argumentTypes": null, - "id": 12158, - "name": "_from", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 12099, - "src": "26829:5:39", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "argumentTypes": null, - "id": 12159, - "name": "_operator", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 12103, - "src": "26848:9:39", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "argumentTypes": null, - "id": 12160, - "name": "_extraData", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 12105, - "src": "26871:10:39", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_contract$_TokenGrant_$10702", - "typeString": "contract TokenGrant" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - ], - "expression": { - "argumentTypes": null, - "id": 12151, - "name": "grantStaking", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 11099, - "src": "26723:12:39", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Storage_$19231_storage", - "typeString": "struct GrantStaking.Storage storage ref" - } - }, - "id": 12153, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberName": "tryCapturingDelegationData", - "nodeType": "MemberAccess", - "referencedDeclaration": 19288, - "src": "26723:39:39", - "typeDescriptions": { - "typeIdentifier": "t_function_delegatecall_nonpayable$_t_struct$_Storage_$19231_storage_ptr_$_t_contract$_TokenGrant_$10702_$_t_address_$_t_address_$_t_address_$_t_bytes_memory_ptr_$returns$_t_bool_$_t_uint256_$bound_to$_t_struct$_Storage_$19231_storage_ptr_$", - "typeString": "function (struct GrantStaking.Storage storage pointer,contract TokenGrant,address,address,address,bytes memory) returns (bool,uint256)" - } - }, - "id": 12161, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "26723:168:39", - "typeDescriptions": { - "typeIdentifier": "t_tuple$_t_bool_$_t_uint256_$", - "typeString": "tuple(bool,uint256)" - } - }, - "id": 12162, - "nodeType": "ExpressionStatement", - "src": "26723:168:39" - }, - { - "eventCall": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 12164, - "name": "_from", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 12099, - "src": "26922:5:39", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "argumentTypes": null, - "id": 12165, - "name": "_operator", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 12103, - "src": "26929:9:39", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "id": 12163, - "name": "StakeDelegated", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 11017, - "src": "26907:14:39", - "typeDescriptions": { - "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$returns$__$", - "typeString": "function (address,address)" - } - }, - "id": 12166, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "26907:32:39", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 12167, - "nodeType": "EmitStatement", - "src": "26902:37:39" - }, - { - "eventCall": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 12169, - "name": "_operator", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 12103, - "src": "26969:9:39", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "argumentTypes": null, - "id": 12170, - "name": "beneficiary", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 12117, - "src": "26980:11:39", - "typeDescriptions": { - "typeIdentifier": "t_address_payable", - "typeString": "address payable" - } - }, - { - "argumentTypes": null, - "id": 12171, - "name": "authorizer", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 12128, - "src": "26993:10:39", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "argumentTypes": null, - "id": 12172, - "name": "_value", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 12101, - "src": "27005:6:39", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_address_payable", - "typeString": "address payable" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 12168, - "name": "OperatorStaked", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 11027, - "src": "26954:14:39", - "typeDescriptions": { - "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$returns$__$", - "typeString": "function (address,address,address,uint256)" - } - }, - "id": 12173, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "26954:58:39", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 12174, - "nodeType": "EmitStatement", - "src": "26949:63:39" - } - ] - }, - "documentation": "@notice Delegates tokens to a new operator using beneficiary and\n authorizer passed in _extraData parameter.\n @param _from The owner of the tokens who approved them to transfer.\n @param _value Approved amount for the transfer and stake.\n @param _operator The new operator address.\n @param _extraData Data for stake delegation as passed to receiveApproval.", - "id": 12176, - "implemented": true, - "kind": "function", - "modifiers": [], - "name": "delegate", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 12106, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 12099, - "name": "_from", - "nodeType": "VariableDeclaration", - "scope": 12176, - "src": "26207:13:39", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 12098, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "26207:7:39", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 12101, - "name": "_value", - "nodeType": "VariableDeclaration", - "scope": 12176, - "src": "26230:14:39", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 12100, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "26230:7:39", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 12103, - "name": "_operator", - "nodeType": "VariableDeclaration", - "scope": 12176, - "src": "26254:17:39", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 12102, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "26254:7:39", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 12105, - "name": "_extraData", - "nodeType": "VariableDeclaration", - "scope": 12176, - "src": "26281:23:39", - "stateVariable": false, - "storageLocation": "memory", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes" - }, - "typeName": { - "id": 12104, - "name": "bytes", - "nodeType": "ElementaryTypeName", - "src": "26281:5:39", - "typeDescriptions": { - "typeIdentifier": "t_bytes_storage_ptr", - "typeString": "bytes" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "26197:113:39" - }, - "returnParameters": { - "id": 12107, - "nodeType": "ParameterList", - "parameters": [], - "src": "26320:0:39" - }, - "scope": 12435, - "src": "26180:839:39", - "stateMutability": "nonpayable", - "superFunction": null, - "visibility": "internal" - }, - { - "body": { - "id": 12295, - "nodeType": "Block", - "src": "28420:2271:39", - "statements": [ - { - "assignments": [12188], - "declarations": [ - { - "constant": false, - "id": 12188, - "name": "isFromGrant", - "nodeType": "VariableDeclaration", - "scope": 12295, - "src": "28609:16:39", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "typeName": { - "id": 12187, - "name": "bool", - "nodeType": "ElementaryTypeName", - "src": "28609:4:39", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 12203, - "initialValue": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "id": 12202, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "id": 12196, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 12192, - "name": "_operator", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 12182, - "src": "28671:9:39", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "expression": { - "argumentTypes": null, - "id": 12190, - "name": "tokenGrant", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 11095, - "src": "28648:10:39", - "typeDescriptions": { - "typeIdentifier": "t_contract$_TokenGrant_$10702", - "typeString": "contract TokenGrant" - } - }, - "id": 12191, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "grantStakes", - "nodeType": "MemberAccess", - "referencedDeclaration": 9535, - "src": "28648:22:39", - "typeDescriptions": { - "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_contract$_TokenGrantStake_$10959_$", - "typeString": "function (address) view external returns (contract TokenGrantStake)" - } - }, - "id": 12193, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "28648:33:39", - "typeDescriptions": { - "typeIdentifier": "t_contract$_TokenGrantStake_$10959", - "typeString": "contract TokenGrantStake" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_contract$_TokenGrantStake_$10959", - "typeString": "contract TokenGrantStake" - } - ], - "id": 12189, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "28640:7:39", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_address_$", - "typeString": "type(address)" - }, - "typeName": "address" - }, - "id": 12194, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "typeConversion", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "28640:42:39", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "argumentTypes": null, - "id": 12195, - "name": "_from", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 12178, - "src": "28686:5:39", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "src": "28640:51:39", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "nodeType": "BinaryOperation", - "operator": "||", - "rightExpression": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "id": 12201, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 12198, - "name": "escrow", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 11097, - "src": "28719:6:39", - "typeDescriptions": { - "typeIdentifier": "t_contract$_TokenStakingEscrow_$13399", - "typeString": "contract TokenStakingEscrow" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_contract$_TokenStakingEscrow_$13399", - "typeString": "contract TokenStakingEscrow" - } - ], - "id": 12197, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "28711:7:39", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_address_$", - "typeString": "type(address)" - }, - "typeName": "address" - }, - "id": 12199, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "typeConversion", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "28711:15:39", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "argumentTypes": null, - "id": 12200, - "name": "_from", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 12178, - "src": "28730:5:39", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "src": "28711:24:39", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "src": "28640:95:39", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "28609:126:39" - }, - { - "condition": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 12206, - "name": "_operator", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 12182, - "src": "28781:9:39", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "expression": { - "argumentTypes": null, - "id": 12204, - "name": "grantStaking", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 11099, - "src": "28750:12:39", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Storage_$19231_storage", - "typeString": "struct GrantStaking.Storage storage ref" - } - }, - "id": 12205, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberName": "hasGrantDelegated", - "nodeType": "MemberAccess", - "referencedDeclaration": 19375, - "src": "28750:30:39", - "typeDescriptions": { - "typeIdentifier": "t_function_delegatecall_view$_t_struct$_Storage_$19231_storage_ptr_$_t_address_$returns$_t_bool_$bound_to$_t_struct$_Storage_$19231_storage_ptr_$", - "typeString": "function (struct GrantStaking.Storage storage pointer,address) view returns (bool)" - } - }, - "id": 12207, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "28750:41:39", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "falseBody": { - "id": 12257, - "nodeType": "Block", - "src": "29612:297:39", - "statements": [ - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 12243, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "UnaryOperation", - "operator": "!", - "prefix": true, - "src": "29777:12:39", - "subExpression": { - "argumentTypes": null, - "id": 12242, - "name": "isFromGrant", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 12188, - "src": "29778:11:39", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - { - "argumentTypes": null, - "hexValue": "4d757374206e6f742062652066726f6d2061206772616e74", - "id": 12244, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "string", - "lValueRequested": false, - "nodeType": "Literal", - "src": "29791:26:39", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_stringliteral_2b9e7062844df2b17b3c62e7b067e153f062dbc06025785a7c52346348124675", - "typeString": "literal_string \"Must not be from a grant\"" - }, - "value": "Must not be from a grant" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_stringliteral_2b9e7062844df2b17b3c62e7b067e153f062dbc06025785a7c52346348124675", - "typeString": "literal_string \"Must not be from a grant\"" - } - ], - "id": 12241, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [28149, 28150], - "referencedDeclaration": 28150, - "src": "29769:7:39", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", - "typeString": "function (bool,string memory) pure" - } - }, - "id": 12245, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "29769:49:39", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 12246, - "nodeType": "ExpressionStatement", - "src": "29769:49:39" - }, - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "id": 12253, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 12248, - "name": "operators", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 8825, - "src": "29840:9:39", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Operator_$8834_storage_$", - "typeString": "mapping(address => struct StakeDelegatable.Operator storage ref)" - } - }, - "id": 12250, - "indexExpression": { - "argumentTypes": null, - "id": 12249, - "name": "_operator", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 12182, - "src": "29850:9:39", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "29840:20:39", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Operator_$8834_storage", - "typeString": "struct StakeDelegatable.Operator storage ref" - } - }, - "id": 12251, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberName": "owner", - "nodeType": "MemberAccess", - "referencedDeclaration": 8829, - "src": "29840:26:39", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "argumentTypes": null, - "id": 12252, - "name": "_from", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 12178, - "src": "29870:5:39", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "src": "29840:35:39", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - { - "argumentTypes": null, - "hexValue": "4e6f74207468652073616d65206f776e6572", - "id": 12254, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "string", - "lValueRequested": false, - "nodeType": "Literal", - "src": "29877:20:39", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_stringliteral_12e166bf4abcc24bd437fb26ce6b782ef4c55db948e745833feb167d0bd16206", - "typeString": "literal_string \"Not the same owner\"" - }, - "value": "Not the same owner" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_stringliteral_12e166bf4abcc24bd437fb26ce6b782ef4c55db948e745833feb167d0bd16206", - "typeString": "literal_string \"Not the same owner\"" - } - ], - "id": 12247, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [28149, 28150], - "referencedDeclaration": 28150, - "src": "29832:7:39", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", - "typeString": "function (bool,string memory) pure" - } - }, - "id": 12255, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "29832:66:39", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 12256, - "nodeType": "ExpressionStatement", - "src": "29832:66:39" - } - ] - }, - "id": 12258, - "nodeType": "IfStatement", - "src": "28746:1163:39", - "trueBody": { - "id": 12240, - "nodeType": "Block", - "src": "28793:813:39", - "statements": [ - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 12209, - "name": "isFromGrant", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 12188, - "src": "28936:11:39", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - { - "argumentTypes": null, - "hexValue": "4d7573742062652066726f6d2061206772616e74", - "id": 12210, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "string", - "lValueRequested": false, - "nodeType": "Literal", - "src": "28949:22:39", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_stringliteral_d1092761cfc456a4049616698cd1b06c91dd92ec092d312d87b620e0d3f83679", - "typeString": "literal_string \"Must be from a grant\"" - }, - "value": "Must be from a grant" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_stringliteral_d1092761cfc456a4049616698cd1b06c91dd92ec092d312d87b620e0d3f83679", - "typeString": "literal_string \"Must be from a grant\"" - } - ], - "id": 12208, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [28149, 28150], - "referencedDeclaration": 28150, - "src": "28928:7:39", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", - "typeString": "function (bool,string memory) pure" - } - }, - "id": 12211, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "28928:44:39", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 12212, - "nodeType": "ExpressionStatement", - "src": "28928:44:39" - }, - { - "assignments": [12214], - "declarations": [ - { - "constant": false, - "id": 12214, - "name": "previousGrantId", - "nodeType": "VariableDeclaration", - "scope": 12240, - "src": "29171:23:39", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 12213, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "29171:7:39", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 12219, - "initialValue": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 12217, - "name": "_operator", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 12182, - "src": "29246:9:39", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "expression": { - "argumentTypes": null, - "id": 12215, - "name": "grantStaking", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 11099, - "src": "29213:12:39", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Storage_$19231_storage", - "typeString": "struct GrantStaking.Storage storage ref" - } - }, - "id": 12216, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberName": "getGrantForOperator", - "nodeType": "MemberAccess", - "referencedDeclaration": 19423, - "src": "29213:32:39", - "typeDescriptions": { - "typeIdentifier": "t_function_delegatecall_view$_t_struct$_Storage_$19231_storage_ptr_$_t_address_$returns$_t_uint256_$bound_to$_t_struct$_Storage_$19231_storage_ptr_$", - "typeString": "function (struct GrantStaking.Storage storage pointer,address) view returns (uint256)" - } - }, - "id": 12218, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "29213:43:39", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "29171:85:39" - }, - { - "assignments": [null, 12221], - "declarations": [ - null, - { - "constant": false, - "id": 12221, - "name": "grantId", - "nodeType": "VariableDeclaration", - "scope": 12240, - "src": "29273:15:39", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 12220, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "29273:7:39", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 12232, - "initialValue": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 12224, - "name": "tokenGrant", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 11095, - "src": "29369:10:39", - "typeDescriptions": { - "typeIdentifier": "t_contract$_TokenGrant_$10702", - "typeString": "contract TokenGrant" - } - }, - { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 12226, - "name": "escrow", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 11097, - "src": "29409:6:39", - "typeDescriptions": { - "typeIdentifier": "t_contract$_TokenStakingEscrow_$13399", - "typeString": "contract TokenStakingEscrow" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_contract$_TokenStakingEscrow_$13399", - "typeString": "contract TokenStakingEscrow" - } - ], - "id": 12225, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "29401:7:39", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_address_$", - "typeString": "type(address)" - }, - "typeName": "address" - }, - "id": 12227, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "typeConversion", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "29401:15:39", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "argumentTypes": null, - "id": 12228, - "name": "_from", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 12178, - "src": "29438:5:39", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "argumentTypes": null, - "id": 12229, - "name": "_operator", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 12182, - "src": "29465:9:39", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "argumentTypes": null, - "id": 12230, - "name": "_extraData", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 12184, - "src": "29496:10:39", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_contract$_TokenGrant_$10702", - "typeString": "contract TokenGrant" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - ], - "expression": { - "argumentTypes": null, - "id": 12222, - "name": "grantStaking", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 11099, - "src": "29308:12:39", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Storage_$19231_storage", - "typeString": "struct GrantStaking.Storage storage ref" - } - }, - "id": 12223, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberName": "tryCapturingDelegationData", - "nodeType": "MemberAccess", - "referencedDeclaration": 19288, - "src": "29308:39:39", - "typeDescriptions": { - "typeIdentifier": "t_function_delegatecall_nonpayable$_t_struct$_Storage_$19231_storage_ptr_$_t_contract$_TokenGrant_$10702_$_t_address_$_t_address_$_t_address_$_t_bytes_memory_ptr_$returns$_t_bool_$_t_uint256_$bound_to$_t_struct$_Storage_$19231_storage_ptr_$", - "typeString": "function (struct GrantStaking.Storage storage pointer,contract TokenGrant,address,address,address,bytes memory) returns (bool,uint256)" - } - }, - "id": 12231, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "29308:216:39", - "typeDescriptions": { - "typeIdentifier": "t_tuple$_t_bool_$_t_uint256_$", - "typeString": "tuple(bool,uint256)" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "29270:254:39" - }, - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 12236, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 12234, - "name": "grantId", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 12221, - "src": "29546:7:39", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "argumentTypes": null, - "id": 12235, - "name": "previousGrantId", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 12214, - "src": "29557:15:39", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "29546:26:39", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - { - "argumentTypes": null, - "hexValue": "4e6f74207468652073616d65206772616e74", - "id": 12237, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "string", - "lValueRequested": false, - "nodeType": "Literal", - "src": "29574:20:39", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_stringliteral_5f4a017829f7ac8e7cd46d1e5459ee834992c2456444c7e65c7080dfdc63201b", - "typeString": "literal_string \"Not the same grant\"" - }, - "value": "Not the same grant" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_stringliteral_5f4a017829f7ac8e7cd46d1e5459ee834992c2456444c7e65c7080dfdc63201b", - "typeString": "literal_string \"Not the same grant\"" - } - ], - "id": 12233, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [28149, 28150], - "referencedDeclaration": 28150, - "src": "29538:7:39", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", - "typeString": "function (bool,string memory) pure" - } - }, - "id": 12238, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "29538:57:39", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 12239, - "nodeType": "ExpressionStatement", - "src": "29538:57:39" - } - ] - } - }, - { - "assignments": [12260], - "declarations": [ - { - "constant": false, - "id": 12260, - "name": "operatorParams", - "nodeType": "VariableDeclaration", - "scope": 12295, - "src": "29919:22:39", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 12259, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "29919:7:39", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 12265, - "initialValue": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 12261, - "name": "operators", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 8825, - "src": "29944:9:39", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Operator_$8834_storage_$", - "typeString": "mapping(address => struct StakeDelegatable.Operator storage ref)" - } - }, - "id": 12263, - "indexExpression": { - "argumentTypes": null, - "id": 12262, - "name": "_operator", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 12182, - "src": "29954:9:39", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "29944:20:39", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Operator_$8834_storage", - "typeString": "struct StakeDelegatable.Operator storage ref" - } - }, - "id": 12264, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberName": "packedParams", - "nodeType": "MemberAccess", - "referencedDeclaration": 8827, - "src": "29944:33:39", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "29919:58:39" - }, - { - "condition": { - "argumentTypes": null, - "id": 12269, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "UnaryOperation", - "operator": "!", - "prefix": true, - "src": "29991:31:39", - "subExpression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 12267, - "name": "operatorParams", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 12260, - "src": "30007:14:39", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 12266, - "name": "_isInitialized", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 12314, - "src": "29992:14:39", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_bool_$", - "typeString": "function (uint256) view returns (bool)" - } - }, - "id": 12268, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "29992:30:39", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "falseBody": { - "id": 12293, - "nodeType": "Block", - "src": "30380:305:39", - "statements": [ - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 12287, - "name": "_value", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 12180, - "src": "30632:6:39", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "id": 12288, - "name": "_operator", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 12182, - "src": "30640:9:39", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "argumentTypes": null, - "id": 12289, - "name": "operatorParams", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 12260, - "src": "30651:14:39", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "id": 12290, - "name": "escrow", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 11097, - "src": "30667:6:39", - "typeDescriptions": { - "typeIdentifier": "t_contract$_TokenStakingEscrow_$13399", - "typeString": "contract TokenStakingEscrow" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_contract$_TokenStakingEscrow_$13399", - "typeString": "contract TokenStakingEscrow" - } - ], - "expression": { - "argumentTypes": null, - "id": 12284, - "name": "topUps", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 11103, - "src": "30616:6:39", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Storage_$20159_storage", - "typeString": "struct TopUps.Storage storage ref" - } - }, - "id": 12286, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberName": "initiate", - "nodeType": "MemberAccess", - "referencedDeclaration": 20279, - "src": "30616:15:39", - "typeDescriptions": { - "typeIdentifier": "t_function_delegatecall_nonpayable$_t_struct$_Storage_$20159_storage_ptr_$_t_uint256_$_t_address_$_t_uint256_$_t_contract$_TokenStakingEscrow_$13399_$returns$__$bound_to$_t_struct$_Storage_$20159_storage_ptr_$", - "typeString": "function (struct TopUps.Storage storage pointer,uint256,address,uint256,contract TokenStakingEscrow)" - } - }, - "id": 12291, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "30616:58:39", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 12292, - "nodeType": "ExpressionStatement", - "src": "30616:58:39" - } - ] - }, - "id": 12294, - "nodeType": "IfStatement", - "src": "29987:698:39", - "trueBody": { - "id": 12283, - "nodeType": "Block", - "src": "30024:350:39", - "statements": [ - { - "expression": { - "argumentTypes": null, - "id": 12281, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 12270, - "name": "operators", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 8825, - "src": "30184:9:39", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Operator_$8834_storage_$", - "typeString": "mapping(address => struct StakeDelegatable.Operator storage ref)" - } - }, - "id": 12272, - "indexExpression": { - "argumentTypes": null, - "id": 12271, - "name": "_operator", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 12182, - "src": "30194:9:39", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "30184:20:39", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Operator_$8834_storage", - "typeString": "struct StakeDelegatable.Operator storage ref" - } - }, - "id": 12273, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "memberName": "packedParams", - "nodeType": "MemberAccess", - "referencedDeclaration": 8827, - "src": "30184:33:39", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 12276, - "name": "_value", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 12180, - "src": "30260:6:39", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "id": 12277, - "name": "_operator", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 12182, - "src": "30284:9:39", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "argumentTypes": null, - "id": 12278, - "name": "operatorParams", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 12260, - "src": "30311:14:39", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "id": 12279, - "name": "escrow", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 11097, - "src": "30343:6:39", - "typeDescriptions": { - "typeIdentifier": "t_contract$_TokenStakingEscrow_$13399", - "typeString": "contract TokenStakingEscrow" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_contract$_TokenStakingEscrow_$13399", - "typeString": "contract TokenStakingEscrow" - } - ], - "expression": { - "argumentTypes": null, - "id": 12274, - "name": "topUps", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 11103, - "src": "30220:6:39", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Storage_$20159_storage", - "typeString": "struct TopUps.Storage storage ref" - } - }, - "id": 12275, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberName": "instantComplete", - "nodeType": "MemberAccess", - "referencedDeclaration": 20214, - "src": "30220:22:39", - "typeDescriptions": { - "typeIdentifier": "t_function_delegatecall_nonpayable$_t_struct$_Storage_$20159_storage_ptr_$_t_uint256_$_t_address_$_t_uint256_$_t_contract$_TokenStakingEscrow_$13399_$returns$_t_uint256_$bound_to$_t_struct$_Storage_$20159_storage_ptr_$", - "typeString": "function (struct TopUps.Storage storage pointer,uint256,address,uint256,contract TokenStakingEscrow) returns (uint256)" - } - }, - "id": 12280, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "30220:143:39", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "30184:179:39", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 12282, - "nodeType": "ExpressionStatement", - "src": "30184:179:39" - } - ] - } - } - ] - }, - "documentation": "@notice Performs top-up to an existing operator. Tokens added during\n stake initialization period are immediatelly added to the stake and\n stake initialization timer is reset to the current block. Tokens added\n in a top-up after the stake initialization period is over are not\n included in the operator stake until the initialization period for\n a top-up passes and top-up is committed. Operator must not have the stake\n undelegated. It is expected that the top-up is done from the same source\n of tokens as the initial delegation. That is, if the tokens were\n delegated from a grant, top-up has to be performed from the same grant.\n If the delegation was done using liquid tokens, only liquid tokens from\n the same owner can be used to top-up the stake.\n Top-up can not be cancelled so it is important to be careful with the\n amount of KEEP added to the stake.\n @param _from The owner of the tokens who approved them to transfer.\n @param _value Approved amount for the transfer and top-up to\n an existing stake.\n @param _operator The new operator address.\n @param _extraData Data for stake delegation as passed to receiveApproval", - "id": 12296, - "implemented": true, - "kind": "function", - "modifiers": [], - "name": "topUp", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 12185, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 12178, - "name": "_from", - "nodeType": "VariableDeclaration", - "scope": 12296, - "src": "28307:13:39", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 12177, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "28307:7:39", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 12180, - "name": "_value", - "nodeType": "VariableDeclaration", - "scope": 12296, - "src": "28330:14:39", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 12179, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "28330:7:39", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 12182, - "name": "_operator", - "nodeType": "VariableDeclaration", - "scope": 12296, - "src": "28354:17:39", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 12181, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "28354:7:39", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 12184, - "name": "_extraData", - "nodeType": "VariableDeclaration", - "scope": 12296, - "src": "28381:23:39", - "stateVariable": false, - "storageLocation": "memory", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes" - }, - "typeName": { - "id": 12183, - "name": "bytes", - "nodeType": "ElementaryTypeName", - "src": "28381:5:39", - "typeDescriptions": { - "typeIdentifier": "t_bytes_storage_ptr", - "typeString": "bytes" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "28297:113:39" - }, - "returnParameters": { - "id": 12186, - "nodeType": "ParameterList", - "parameters": [], - "src": "28420:0:39" - }, - "scope": 12435, - "src": "28283:2408:39", - "stateMutability": "nonpayable", - "superFunction": null, - "visibility": "internal" - }, - { - "body": { - "id": 12313, - "nodeType": "Block", - "src": "30869:130:39", - "statements": [ - { - "expression": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 12311, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 12303, - "name": "block", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 28136, - "src": "30898:5:39", - "typeDescriptions": { - "typeIdentifier": "t_magic_block", - "typeString": "block" - } - }, - "id": 12304, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "timestamp", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "30898:15:39", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": ">", - "rightExpression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 12309, - "name": "initializationPeriod", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 11091, - "src": "30971:20:39", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "expression": { - "argumentTypes": null, - "arguments": [], - "expression": { - "argumentTypes": [], - "expression": { - "argumentTypes": null, - "id": 12305, - "name": "_operatorParams", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 12298, - "src": "30928:15:39", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 12306, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "getCreationTimestamp", - "nodeType": "MemberAccess", - "referencedDeclaration": 27945, - "src": "30928:36:39", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", - "typeString": "function (uint256) pure returns (uint256)" - } - }, - "id": 12307, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "30928:38:39", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 12308, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "add", - "nodeType": "MemberAccess", - "referencedDeclaration": 310, - "src": "30928:42:39", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", - "typeString": "function (uint256,uint256) pure returns (uint256)" - } - }, - "id": 12310, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "30928:64:39", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "30898:94:39", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "functionReturnParameters": 12302, - "id": 12312, - "nodeType": "Return", - "src": "30879:113:39" - } - ] - }, - "documentation": "@notice Is the operator with the given params initialized", - "id": 12314, - "implemented": true, - "kind": "function", - "modifiers": [], - "name": "_isInitialized", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 12299, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 12298, - "name": "_operatorParams", - "nodeType": "VariableDeclaration", - "scope": 12314, - "src": "30787:23:39", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 12297, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "30787:7:39", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "30786:25:39" - }, - "returnParameters": { - "id": 12302, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 12301, - "name": "", - "nodeType": "VariableDeclaration", - "scope": 12314, - "src": "30859:4:39", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "typeName": { - "id": 12300, - "name": "bool", - "nodeType": "ElementaryTypeName", - "src": "30859:4:39", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "30858:6:39" - }, - "scope": 12435, - "src": "30763:236:39", - "stateMutability": "view", - "superFunction": null, - "visibility": "internal" - }, - { - "body": { - "id": 12338, - "nodeType": "Block", - "src": "31179:157:39", - "statements": [ - { - "assignments": [12322], - "declarations": [ - { - "constant": false, - "id": 12322, - "name": "undelegatedAt", - "nodeType": "VariableDeclaration", - "scope": 12338, - "src": "31189:21:39", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 12321, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "31189:7:39", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 12326, - "initialValue": { - "argumentTypes": null, - "arguments": [], - "expression": { - "argumentTypes": [], - "expression": { - "argumentTypes": null, - "id": 12323, - "name": "_operatorParams", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 12316, - "src": "31213:15:39", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 12324, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "getUndelegationTimestamp", - "nodeType": "MemberAccess", - "referencedDeclaration": 27977, - "src": "31213:40:39", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", - "typeString": "function (uint256) pure returns (uint256)" - } - }, - "id": 12325, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "31213:42:39", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "31189:66:39" - }, - { - "expression": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "id": 12336, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "components": [ - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 12329, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 12327, - "name": "undelegatedAt", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 12322, - "src": "31273:13:39", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "!=", - "rightExpression": { - "argumentTypes": null, - "hexValue": "30", - "id": 12328, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "31290:1:39", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "31273:18:39", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "id": 12330, - "isConstant": false, - "isInlineArray": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "TupleExpression", - "src": "31272:20:39", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "nodeType": "BinaryOperation", - "operator": "&&", - "rightExpression": { - "argumentTypes": null, - "components": [ - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 12334, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 12331, - "name": "block", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 28136, - "src": "31297:5:39", - "typeDescriptions": { - "typeIdentifier": "t_magic_block", - "typeString": "block" - } - }, - "id": 12332, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "timestamp", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "31297:15:39", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": ">", - "rightExpression": { - "argumentTypes": null, - "id": 12333, - "name": "undelegatedAt", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 12322, - "src": "31315:13:39", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "31297:31:39", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "id": 12335, - "isConstant": false, - "isInlineArray": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "TupleExpression", - "src": "31296:33:39", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "src": "31272:57:39", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "functionReturnParameters": 12320, - "id": 12337, - "nodeType": "Return", - "src": "31265:64:39" - } - ] - }, - "documentation": "@notice Is the operator with the given params undelegating", - "id": 12339, - "implemented": true, - "kind": "function", - "modifiers": [], - "name": "_isUndelegating", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 12317, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 12316, - "name": "_operatorParams", - "nodeType": "VariableDeclaration", - "scope": 12339, - "src": "31097:23:39", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 12315, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "31097:7:39", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "31096:25:39" - }, - "returnParameters": { - "id": 12320, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 12319, - "name": "", - "nodeType": "VariableDeclaration", - "scope": 12339, - "src": "31169:4:39", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "typeName": { - "id": 12318, - "name": "bool", - "nodeType": "ElementaryTypeName", - "src": "31169:4:39", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "31168:6:39" - }, - "scope": 12435, - "src": "31072:264:39", - "stateMutability": "view", - "superFunction": null, - "visibility": "internal" - }, - { - "body": { - "id": 12367, - "nodeType": "Block", - "src": "31534:207:39", - "statements": [ - { - "assignments": [12347], - "declarations": [ - { - "constant": false, - "id": 12347, - "name": "undelegatedAt", - "nodeType": "VariableDeclaration", - "scope": 12367, - "src": "31544:21:39", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 12346, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "31544:7:39", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 12351, - "initialValue": { - "argumentTypes": null, - "arguments": [], - "expression": { - "argumentTypes": [], - "expression": { - "argumentTypes": null, - "id": 12348, - "name": "_operatorParams", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 12341, - "src": "31568:15:39", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 12349, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "getUndelegationTimestamp", - "nodeType": "MemberAccess", - "referencedDeclaration": 27977, - "src": "31568:40:39", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", - "typeString": "function (uint256) pure returns (uint256)" - } - }, - "id": 12350, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "31568:42:39", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "31544:66:39" - }, - { - "expression": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "id": 12365, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "components": [ - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 12354, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 12352, - "name": "undelegatedAt", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 12347, - "src": "31640:13:39", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "!=", - "rightExpression": { - "argumentTypes": null, - "hexValue": "30", - "id": 12353, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "31657:1:39", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "31640:18:39", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "id": 12355, - "isConstant": false, - "isInlineArray": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "TupleExpression", - "src": "31639:20:39", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "nodeType": "BinaryOperation", - "operator": "&&", - "rightExpression": { - "argumentTypes": null, - "components": [ - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 12363, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 12356, - "name": "block", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 28136, - "src": "31676:5:39", - "typeDescriptions": { - "typeIdentifier": "t_magic_block", - "typeString": "block" - } - }, - "id": 12357, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "timestamp", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "31676:15:39", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": ">", - "rightExpression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "arguments": [], - "expression": { - "argumentTypes": [], - "id": 12360, - "name": "undelegationPeriod", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 11182, - "src": "31712:18:39", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$__$returns$_t_uint256_$", - "typeString": "function () view returns (uint256)" - } - }, - "id": 12361, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "31712:20:39", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "expression": { - "argumentTypes": null, - "id": 12358, - "name": "undelegatedAt", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 12347, - "src": "31694:13:39", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 12359, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "add", - "nodeType": "MemberAccess", - "referencedDeclaration": 310, - "src": "31694:17:39", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", - "typeString": "function (uint256,uint256) pure returns (uint256)" - } - }, - "id": 12362, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "31694:39:39", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "31676:57:39", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "id": 12364, - "isConstant": false, - "isInlineArray": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "TupleExpression", - "src": "31675:59:39", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "src": "31639:95:39", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "functionReturnParameters": 12345, - "id": 12366, - "nodeType": "Return", - "src": "31620:114:39" - } - ] - }, - "documentation": "@notice Has the operator with the given params finished undelegating", - "id": 12368, - "implemented": true, - "kind": "function", - "modifiers": [], - "name": "_isUndelegatingFinished", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 12342, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 12341, - "name": "_operatorParams", - "nodeType": "VariableDeclaration", - "scope": 12368, - "src": "31452:23:39", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 12340, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "31452:7:39", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "31451:25:39" - }, - "returnParameters": { - "id": 12345, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 12344, - "name": "", - "nodeType": "VariableDeclaration", - "scope": 12368, - "src": "31524:4:39", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "typeName": { - "id": 12343, - "name": "bool", - "nodeType": "ElementaryTypeName", - "src": "31524:4:39", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "31523:6:39" - }, - "scope": 12435, - "src": "31419:322:39", - "stateMutability": "view", - "superFunction": null, - "visibility": "internal" - }, - { - "body": { - "id": 12389, - "nodeType": "Block", - "src": "32227:143:39", - "statements": [ - { - "expression": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "id": 12387, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 12380, - "name": "_operatorParams", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 12372, - "src": "32280:15:39", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 12379, - "name": "_isUndelegatingFinished", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 12368, - "src": "32256:23:39", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_bool_$", - "typeString": "function (uint256) view returns (bool)" - } - }, - "id": 12381, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "32256:40:39", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "nodeType": "BinaryOperation", - "operator": "&&", - "rightExpression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 12384, - "name": "_operator", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 12370, - "src": "32334:9:39", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "argumentTypes": null, - "id": 12385, - "name": "_operatorContract", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 12374, - "src": "32345:17:39", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "expression": { - "argumentTypes": null, - "id": 12382, - "name": "locks", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 11101, - "src": "32312:5:39", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Storage_$19752_storage", - "typeString": "struct Locks.Storage storage ref" - } - }, - "id": 12383, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberName": "isStakeReleased", - "nodeType": "MemberAccess", - "referencedDeclaration": 19984, - "src": "32312:21:39", - "typeDescriptions": { - "typeIdentifier": "t_function_delegatecall_view$_t_struct$_Storage_$19752_storage_ptr_$_t_address_$_t_address_$returns$_t_bool_$bound_to$_t_struct$_Storage_$19752_storage_ptr_$", - "typeString": "function (struct Locks.Storage storage pointer,address,address) view returns (bool)" - } - }, - "id": 12386, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "32312:51:39", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "src": "32256:107:39", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "functionReturnParameters": 12378, - "id": 12388, - "nodeType": "Return", - "src": "32237:126:39" - } - ] - }, - "documentation": "@notice Get whether the operator's stake is released\n as far as the operator contract is concerned.\n If the operator contract has a lock on the operator,\n the operator's stake is be released when the lock expires.\n Otherwise the stake is released when the operator finishes undelegating.", - "id": 12390, - "implemented": true, - "kind": "function", - "modifiers": [], - "name": "_isStakeReleased", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 12375, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 12370, - "name": "_operator", - "nodeType": "VariableDeclaration", - "scope": 12390, - "src": "32106:17:39", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 12369, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "32106:7:39", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 12372, - "name": "_operatorParams", - "nodeType": "VariableDeclaration", - "scope": 12390, - "src": "32133:23:39", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 12371, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "32133:7:39", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 12374, - "name": "_operatorContract", - "nodeType": "VariableDeclaration", - "scope": 12390, - "src": "32166:25:39", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 12373, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "32166:7:39", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "32096:101:39" - }, - "returnParameters": { - "id": 12378, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 12377, - "name": "", - "nodeType": "VariableDeclaration", - "scope": 12390, - "src": "32221:4:39", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "typeName": { - "id": 12376, - "name": "bool", - "nodeType": "ElementaryTypeName", - "src": "32221:4:39", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "32220:6:39" - }, - "scope": 12435, - "src": "32071:299:39", - "stateMutability": "view", - "superFunction": null, - "visibility": "internal" - }, - { - "body": { - "id": 12433, - "nodeType": "Block", - "src": "32494:564:39", - "statements": [ - { - "condition": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 12401, - "name": "_operator", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 12394, - "src": "32539:9:39", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "expression": { - "argumentTypes": null, - "id": 12399, - "name": "grantStaking", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 11099, - "src": "32508:12:39", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Storage_$19231_storage", - "typeString": "struct GrantStaking.Storage storage ref" - } - }, - "id": 12400, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberName": "hasGrantDelegated", - "nodeType": "MemberAccess", - "referencedDeclaration": 19375, - "src": "32508:30:39", - "typeDescriptions": { - "typeIdentifier": "t_function_delegatecall_view$_t_struct$_Storage_$19231_storage_ptr_$_t_address_$returns$_t_bool_$bound_to$_t_struct$_Storage_$19231_storage_ptr_$", - "typeString": "function (struct GrantStaking.Storage storage pointer,address) view returns (bool)" - } - }, - "id": 12402, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "32508:41:39", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "falseBody": { - "id": 12431, - "nodeType": "Block", - "src": "32914:138:39", - "statements": [ - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 12427, - "name": "_owner", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 12392, - "src": "33025:6:39", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "argumentTypes": null, - "id": 12428, - "name": "_amount", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 12396, - "src": "33033:7:39", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "expression": { - "argumentTypes": null, - "id": 12424, - "name": "token", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 11093, - "src": "33006:5:39", - "typeDescriptions": { - "typeIdentifier": "t_contract$_ERC20Burnable_$1023", - "typeString": "contract ERC20Burnable" - } - }, - "id": 12426, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "safeTransfer", - "nodeType": "MemberAccess", - "referencedDeclaration": 1183, - "src": "33006:18:39", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$1150_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IERC20_$1150_$", - "typeString": "function (contract IERC20,address,uint256)" - } - }, - "id": 12429, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "33006:35:39", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 12430, - "nodeType": "ExpressionStatement", - "src": "33006:35:39" - } - ] - }, - "id": 12432, - "nodeType": "IfStatement", - "src": "32504:548:39", - "trueBody": { - "id": 12423, - "nodeType": "Block", - "src": "32551:357:39", - "statements": [ - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 12410, - "name": "escrow", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 11097, - "src": "32709:6:39", - "typeDescriptions": { - "typeIdentifier": "t_contract$_TokenStakingEscrow_$13399", - "typeString": "contract TokenStakingEscrow" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_contract$_TokenStakingEscrow_$13399", - "typeString": "contract TokenStakingEscrow" - } - ], - "id": 12409, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "32701:7:39", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_address_$", - "typeString": "type(address)" - }, - "typeName": "address" - }, - "id": 12411, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "typeConversion", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "32701:15:39", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "argumentTypes": null, - "id": 12412, - "name": "_amount", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 12396, - "src": "32734:7:39", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 12415, - "name": "_operator", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 12394, - "src": "32791:9:39", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 12418, - "name": "_operator", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 12394, - "src": "32855:9:39", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "expression": { - "argumentTypes": null, - "id": 12416, - "name": "grantStaking", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 11099, - "src": "32822:12:39", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Storage_$19231_storage", - "typeString": "struct GrantStaking.Storage storage ref" - } - }, - "id": 12417, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberName": "getGrantForOperator", - "nodeType": "MemberAccess", - "referencedDeclaration": 19423, - "src": "32822:32:39", - "typeDescriptions": { - "typeIdentifier": "t_function_delegatecall_view$_t_struct$_Storage_$19231_storage_ptr_$_t_address_$returns$_t_uint256_$bound_to$_t_struct$_Storage_$19231_storage_ptr_$", - "typeString": "function (struct GrantStaking.Storage storage pointer,address) view returns (uint256)" - } - }, - "id": 12419, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "32822:43:39", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "expression": { - "argumentTypes": null, - "id": 12413, - "name": "abi", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 28133, - "src": "32759:3:39", - "typeDescriptions": { - "typeIdentifier": "t_magic_abi", - "typeString": "abi" - } - }, - "id": 12414, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "memberName": "encode", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "32759:10:39", - "typeDescriptions": { - "typeIdentifier": "t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$", - "typeString": "function () pure returns (bytes memory)" - } - }, - "id": 12420, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "32759:124:39", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - ], - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 12405, - "name": "token", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 11093, - "src": "32661:5:39", - "typeDescriptions": { - "typeIdentifier": "t_contract$_ERC20Burnable_$1023", - "typeString": "contract ERC20Burnable" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_contract$_ERC20Burnable_$1023", - "typeString": "contract ERC20Burnable" - } - ], - "id": 12404, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "32653:7:39", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_address_$", - "typeString": "type(address)" - }, - "typeName": "address" - }, - "id": 12406, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "typeConversion", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "32653:14:39", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "id": 12403, - "name": "TokenSender", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 10971, - "src": "32641:11:39", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_TokenSender_$10971_$", - "typeString": "type(contract TokenSender)" - } - }, - "id": 12407, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "typeConversion", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "32641:27:39", - "typeDescriptions": { - "typeIdentifier": "t_contract$_TokenSender_$10971", - "typeString": "contract TokenSender" - } - }, - "id": 12408, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "approveAndCall", - "nodeType": "MemberAccess", - "referencedDeclaration": 10970, - "src": "32641:42:39", - "typeDescriptions": { - "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$", - "typeString": "function (address,uint256,bytes memory) external" - } - }, - "id": 12421, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "32641:256:39", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 12422, - "nodeType": "ExpressionStatement", - "src": "32641:256:39" - } - ] - } - } - ] - }, - "documentation": null, - "id": 12434, - "implemented": true, - "kind": "function", - "modifiers": [], - "name": "transferOrDeposit", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 12397, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 12392, - "name": "_owner", - "nodeType": "VariableDeclaration", - "scope": 12434, - "src": "32412:14:39", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 12391, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "32412:7:39", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 12394, - "name": "_operator", - "nodeType": "VariableDeclaration", - "scope": 12434, - "src": "32436:17:39", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 12393, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "32436:7:39", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 12396, - "name": "_amount", - "nodeType": "VariableDeclaration", - "scope": 12434, - "src": "32463:15:39", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 12395, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "32463:7:39", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "32402:82:39" - }, - "returnParameters": { - "id": 12398, - "nodeType": "ParameterList", - "parameters": [], - "src": "32494:0:39" - }, - "scope": 12435, - "src": "32376:682:39", - "stateMutability": "nonpayable", - "superFunction": null, - "visibility": "internal" - } - ], - "scope": 12436, - "src": "2690:30370:39" - } - ], - "src": "1837:31224:39" - }, - "legacyAST": { - "attributes": { - "absolutePath": "project:/contracts/TokenStaking.sol", - "exportedSymbols": { - "TokenStaking": [12435] - } - }, - "children": [ - { - "attributes": { - "literals": ["solidity", "0.5", ".17"] - }, - "id": 10973, - "name": "PragmaDirective", - "src": "1837:23:39" - }, - { - "attributes": { - "SourceUnit": 1024, - "absolutePath": "openzeppelin-solidity/contracts/token/ERC20/ERC20Burnable.sol", - "file": "openzeppelin-solidity/contracts/token/ERC20/ERC20Burnable.sol", - "scope": 12436, - "symbolAliases": [null], - "unitAlias": "" - }, - "id": 10974, - "name": "ImportDirective", - "src": "1862:71:39" - }, - { - "attributes": { - "SourceUnit": 1371, - "absolutePath": "openzeppelin-solidity/contracts/token/ERC20/SafeERC20.sol", - "file": "openzeppelin-solidity/contracts/token/ERC20/SafeERC20.sol", - "scope": 12436, - "symbolAliases": [null], - "unitAlias": "" - }, - "id": 10975, - "name": "ImportDirective", - "src": "1934:67:39" - }, - { - "attributes": { - "SourceUnit": 471, - "absolutePath": "openzeppelin-solidity/contracts/math/SafeMath.sol", - "file": "openzeppelin-solidity/contracts/math/SafeMath.sol", - "scope": 12436, - "symbolAliases": [null], - "unitAlias": "" - }, - "id": 10976, - "name": "ImportDirective", - "src": "2002:59:39" - }, - { - "attributes": { - "SourceUnit": 8890, - "absolutePath": "project:/contracts/StakeDelegatable.sol", - "file": "./StakeDelegatable.sol", - "scope": 12436, - "symbolAliases": [null], - "unitAlias": "" - }, - "id": 10977, - "name": "ImportDirective", - "src": "2062:32:39" - }, - { - "attributes": { - "SourceUnit": 20127, - "absolutePath": "project:/contracts/libraries/staking/MinimumStakeSchedule.sol", - "file": "./libraries/staking/MinimumStakeSchedule.sol", - "scope": 12436, - "symbolAliases": [null], - "unitAlias": "" - }, - "id": 10978, - "name": "ImportDirective", - "src": "2095:54:39" - }, - { - "attributes": { - "SourceUnit": 19500, - "absolutePath": "project:/contracts/libraries/staking/GrantStaking.sol", - "file": "./libraries/staking/GrantStaking.sol", - "scope": 12436, - "symbolAliases": [null], - "unitAlias": "" - }, - "id": 10979, - "name": "ImportDirective", - "src": "2150:46:39" - }, - { - "attributes": { - "SourceUnit": 20066, - "absolutePath": "project:/contracts/libraries/staking/Locks.sol", - "file": "./libraries/staking/Locks.sol", - "scope": 12436, - "symbolAliases": [null], - "unitAlias": "" - }, - "id": 10980, - "name": "ImportDirective", - "src": "2197:39:39" - }, - { - "attributes": { - "SourceUnit": 20408, - "absolutePath": "project:/contracts/libraries/staking/TopUps.sol", - "file": "./libraries/staking/TopUps.sol", - "scope": 12436, - "symbolAliases": [null], - "unitAlias": "" - }, - "id": 10981, - "name": "ImportDirective", - "src": "2237:40:39" - }, - { - "attributes": { - "SourceUnit": 28062, - "absolutePath": "project:/contracts/utils/PercentUtils.sol", - "file": "./utils/PercentUtils.sol", - "scope": 12436, - "symbolAliases": [null], - "unitAlias": "" - }, - "id": 10982, - "name": "ImportDirective", - "src": "2278:34:39" - }, - { - "attributes": { - "SourceUnit": 27493, - "absolutePath": "project:/contracts/utils/BytesLib.sol", - "file": "./utils/BytesLib.sol", - "scope": 12436, - "symbolAliases": [null], - "unitAlias": "" - }, - "id": 10983, - "name": "ImportDirective", - "src": "2313:30:39" - }, - { - "attributes": { - "SourceUnit": 1784, - "absolutePath": "project:/contracts/Authorizations.sol", - "file": "./Authorizations.sol", - "scope": 12436, - "symbolAliases": [null], - "unitAlias": "" - }, - "id": 10984, - "name": "ImportDirective", - "src": "2344:30:39" - }, - { - "attributes": { - "SourceUnit": 13400, - "absolutePath": "project:/contracts/TokenStakingEscrow.sol", - "file": "./TokenStakingEscrow.sol", - "scope": 12436, - "symbolAliases": [null], - "unitAlias": "" - }, - "id": 10985, - "name": "ImportDirective", - "src": "2375:34:39" - }, - { - "attributes": { - "SourceUnit": 10972, - "absolutePath": "project:/contracts/TokenSender.sol", - "file": "./TokenSender.sol", - "scope": 12436, - "symbolAliases": [null], - "unitAlias": "" - }, - "id": 10986, - "name": "ImportDirective", - "src": "2410:27:39" - }, - { - "attributes": { - "contractDependencies": [1613, 1783, 8889], - "contractKind": "contract", - "documentation": "@title TokenStaking\n @notice A token staking contract for a specified standard ERC20Burnable token.\n A holder of the specified token can stake delegate its tokens to this contract\n and recover the stake after undelegation period is over.", - "fullyImplemented": true, - "linearizedBaseContracts": [12435, 8889, 1783, 1613], - "name": "TokenStaking", - "scope": 12436 - }, - "children": [ - { - "attributes": { - "arguments": null - }, - "children": [ - { - "attributes": { - "contractScope": null, - "name": "Authorizations", - "referencedDeclaration": 1783, - "type": "contract Authorizations" - }, - "id": 10987, - "name": "UserDefinedTypeName", - "src": "2715:14:39" - } - ], - "id": 10988, - "name": "InheritanceSpecifier", - "src": "2715:14:39" - }, - { - "attributes": { - "arguments": null - }, - "children": [ - { - "attributes": { - "contractScope": null, - "name": "StakeDelegatable", - "referencedDeclaration": 8889, - "type": "contract StakeDelegatable" - }, - "id": 10989, - "name": "UserDefinedTypeName", - "src": "2731:16:39" - } - ], - "id": 10990, - "name": "InheritanceSpecifier", - "src": "2731:16:39" - }, - { - "children": [ - { - "attributes": { - "contractScope": null, - "name": "BytesLib", - "referencedDeclaration": 27492, - "type": "library BytesLib" - }, - "id": 10991, - "name": "UserDefinedTypeName", - "src": "2760:8:39" - }, - { - "attributes": { - "name": "bytes", - "type": "bytes" - }, - "id": 10992, - "name": "ElementaryTypeName", - "src": "2773:5:39" - } - ], - "id": 10993, - "name": "UsingForDirective", - "src": "2754:25:39" - }, - { - "children": [ - { - "attributes": { - "contractScope": null, - "name": "SafeMath", - "referencedDeclaration": 470, - "type": "library SafeMath" - }, - "id": 10994, - "name": "UserDefinedTypeName", - "src": "2790:8:39" - }, - { - "attributes": { - "name": "uint256", - "type": "uint256" - }, - "id": 10995, - "name": "ElementaryTypeName", - "src": "2803:7:39" - } - ], - "id": 10996, - "name": "UsingForDirective", - "src": "2784:27:39" - }, - { - "children": [ - { - "attributes": { - "contractScope": null, - "name": "PercentUtils", - "referencedDeclaration": 28061, - "type": "library PercentUtils" - }, - "id": 10997, - "name": "UserDefinedTypeName", - "src": "2822:12:39" - }, - { - "attributes": { - "name": "uint256", - "type": "uint256" - }, - "id": 10998, - "name": "ElementaryTypeName", - "src": "2839:7:39" - } - ], - "id": 10999, - "name": "UsingForDirective", - "src": "2816:31:39" - }, - { - "children": [ - { - "attributes": { - "contractScope": null, - "name": "SafeERC20", - "referencedDeclaration": 1370, - "type": "library SafeERC20" - }, - "id": 11000, - "name": "UserDefinedTypeName", - "src": "2858:9:39" - }, - { - "attributes": { - "contractScope": null, - "name": "ERC20Burnable", - "referencedDeclaration": 1023, - "type": "contract ERC20Burnable" - }, - "id": 11001, - "name": "UserDefinedTypeName", - "src": "2872:13:39" - } - ], - "id": 11002, - "name": "UsingForDirective", - "src": "2852:34:39" - }, - { - "children": [ - { - "attributes": { - "contractScope": null, - "name": "GrantStaking", - "referencedDeclaration": 19499, - "type": "library GrantStaking" - }, - "id": 11003, - "name": "UserDefinedTypeName", - "src": "2897:12:39" - }, - { - "attributes": { - "contractScope": null, - "name": "GrantStaking.Storage", - "referencedDeclaration": 19231, - "type": "struct GrantStaking.Storage" - }, - "id": 11004, - "name": "UserDefinedTypeName", - "src": "2914:20:39" - } - ], - "id": 11005, - "name": "UsingForDirective", - "src": "2891:44:39" - }, - { - "children": [ - { - "attributes": { - "contractScope": null, - "name": "Locks", - "referencedDeclaration": 20065, - "type": "library Locks" - }, - "id": 11006, - "name": "UserDefinedTypeName", - "src": "2946:5:39" - }, - { - "attributes": { - "contractScope": null, - "name": "Locks.Storage", - "referencedDeclaration": 19752, - "type": "struct Locks.Storage" - }, - "id": 11007, - "name": "UserDefinedTypeName", - "src": "2956:13:39" - } - ], - "id": 11008, - "name": "UsingForDirective", - "src": "2940:30:39" - }, - { - "children": [ - { - "attributes": { - "contractScope": null, - "name": "TopUps", - "referencedDeclaration": 20407, - "type": "library TopUps" - }, - "id": 11009, - "name": "UserDefinedTypeName", - "src": "2981:6:39" - }, - { - "attributes": { - "contractScope": null, - "name": "TopUps.Storage", - "referencedDeclaration": 20159, - "type": "struct TopUps.Storage" - }, - "id": 11010, - "name": "UserDefinedTypeName", - "src": "2992:14:39" - } - ], - "id": 11011, - "name": "UsingForDirective", - "src": "2975:32:39" - }, - { - "attributes": { - "anonymous": false, - "documentation": null, - "name": "StakeDelegated" - }, - "children": [ - { - "children": [ - { - "attributes": { - "constant": false, - "indexed": true, - "name": "owner", - "scope": 11017, - "stateVariable": false, - "storageLocation": "default", - "type": "address", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "address", - "stateMutability": "nonpayable", - "type": "address" - }, - "id": 11012, - "name": "ElementaryTypeName", - "src": "3034:7:39" - } - ], - "id": 11013, - "name": "VariableDeclaration", - "src": "3034:21:39" - }, - { - "attributes": { - "constant": false, - "indexed": true, - "name": "operator", - "scope": 11017, - "stateVariable": false, - "storageLocation": "default", - "type": "address", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "address", - "stateMutability": "nonpayable", - "type": "address" - }, - "id": 11014, - "name": "ElementaryTypeName", - "src": "3057:7:39" - } - ], - "id": 11015, - "name": "VariableDeclaration", - "src": "3057:24:39" - } - ], - "id": 11016, - "name": "ParameterList", - "src": "3033:49:39" - } - ], - "id": 11017, - "name": "EventDefinition", - "src": "3013:70:39" - }, - { - "attributes": { - "anonymous": false, - "documentation": null, - "name": "OperatorStaked" - }, - "children": [ - { - "children": [ - { - "attributes": { - "constant": false, - "indexed": true, - "name": "operator", - "scope": 11027, - "stateVariable": false, - "storageLocation": "default", - "type": "address", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "address", - "stateMutability": "nonpayable", - "type": "address" - }, - "id": 11018, - "name": "ElementaryTypeName", - "src": "3118:7:39" - } - ], - "id": 11019, - "name": "VariableDeclaration", - "src": "3118:24:39" - }, - { - "attributes": { - "constant": false, - "indexed": true, - "name": "beneficiary", - "scope": 11027, - "stateVariable": false, - "storageLocation": "default", - "type": "address", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "address", - "stateMutability": "nonpayable", - "type": "address" - }, - "id": 11020, - "name": "ElementaryTypeName", - "src": "3152:7:39" - } - ], - "id": 11021, - "name": "VariableDeclaration", - "src": "3152:27:39" - }, - { - "attributes": { - "constant": false, - "indexed": true, - "name": "authorizer", - "scope": 11027, - "stateVariable": false, - "storageLocation": "default", - "type": "address", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "address", - "stateMutability": "nonpayable", - "type": "address" - }, - "id": 11022, - "name": "ElementaryTypeName", - "src": "3189:7:39" - } - ], - "id": 11023, - "name": "VariableDeclaration", - "src": "3189:26:39" - }, - { - "attributes": { - "constant": false, - "indexed": false, - "name": "value", - "scope": 11027, - "stateVariable": false, - "storageLocation": "default", - "type": "uint256", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "uint256", - "type": "uint256" - }, - "id": 11024, - "name": "ElementaryTypeName", - "src": "3225:7:39" - } - ], - "id": 11025, - "name": "VariableDeclaration", - "src": "3225:13:39" - } - ], - "id": 11026, - "name": "ParameterList", - "src": "3108:136:39" - } - ], - "id": 11027, - "name": "EventDefinition", - "src": "3088:157:39" - }, - { - "attributes": { - "anonymous": false, - "documentation": null, - "name": "StakeOwnershipTransferred" - }, - "children": [ - { - "children": [ - { - "attributes": { - "constant": false, - "indexed": true, - "name": "operator", - "scope": 11033, - "stateVariable": false, - "storageLocation": "default", - "type": "address", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "address", - "stateMutability": "nonpayable", - "type": "address" - }, - "id": 11028, - "name": "ElementaryTypeName", - "src": "3291:7:39" - } - ], - "id": 11029, - "name": "VariableDeclaration", - "src": "3291:24:39" - }, - { - "attributes": { - "constant": false, - "indexed": true, - "name": "newOwner", - "scope": 11033, - "stateVariable": false, - "storageLocation": "default", - "type": "address", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "address", - "stateMutability": "nonpayable", - "type": "address" - }, - "id": 11030, - "name": "ElementaryTypeName", - "src": "3325:7:39" - } - ], - "id": 11031, - "name": "VariableDeclaration", - "src": "3325:24:39" - } - ], - "id": 11032, - "name": "ParameterList", - "src": "3281:74:39" - } - ], - "id": 11033, - "name": "EventDefinition", - "src": "3250:106:39" - }, - { - "attributes": { - "anonymous": false, - "documentation": null, - "name": "TopUpInitiated" - }, - "children": [ - { - "children": [ - { - "attributes": { - "constant": false, - "indexed": true, - "name": "operator", - "scope": 11039, - "stateVariable": false, - "storageLocation": "default", - "type": "address", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "address", - "stateMutability": "nonpayable", - "type": "address" - }, - "id": 11034, - "name": "ElementaryTypeName", - "src": "3382:7:39" - } - ], - "id": 11035, - "name": "VariableDeclaration", - "src": "3382:24:39" - }, - { - "attributes": { - "constant": false, - "indexed": false, - "name": "topUp", - "scope": 11039, - "stateVariable": false, - "storageLocation": "default", - "type": "uint256", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "uint256", - "type": "uint256" - }, - "id": 11036, - "name": "ElementaryTypeName", - "src": "3408:7:39" - } - ], - "id": 11037, - "name": "VariableDeclaration", - "src": "3408:13:39" - } - ], - "id": 11038, - "name": "ParameterList", - "src": "3381:41:39" - } - ], - "id": 11039, - "name": "EventDefinition", - "src": "3361:62:39" - }, - { - "attributes": { - "anonymous": false, - "documentation": null, - "name": "TopUpCompleted" - }, - "children": [ - { - "children": [ - { - "attributes": { - "constant": false, - "indexed": true, - "name": "operator", - "scope": 11045, - "stateVariable": false, - "storageLocation": "default", - "type": "address", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "address", - "stateMutability": "nonpayable", - "type": "address" - }, - "id": 11040, - "name": "ElementaryTypeName", - "src": "3449:7:39" - } - ], - "id": 11041, - "name": "VariableDeclaration", - "src": "3449:24:39" - }, - { - "attributes": { - "constant": false, - "indexed": false, - "name": "newAmount", - "scope": 11045, - "stateVariable": false, - "storageLocation": "default", - "type": "uint256", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "uint256", - "type": "uint256" - }, - "id": 11042, - "name": "ElementaryTypeName", - "src": "3475:7:39" - } - ], - "id": 11043, - "name": "VariableDeclaration", - "src": "3475:17:39" - } - ], - "id": 11044, - "name": "ParameterList", - "src": "3448:45:39" - } - ], - "id": 11045, - "name": "EventDefinition", - "src": "3428:66:39" - }, - { - "attributes": { - "anonymous": false, - "documentation": null, - "name": "Undelegated" - }, - "children": [ - { - "children": [ - { - "attributes": { - "constant": false, - "indexed": true, - "name": "operator", - "scope": 11051, - "stateVariable": false, - "storageLocation": "default", - "type": "address", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "address", - "stateMutability": "nonpayable", - "type": "address" - }, - "id": 11046, - "name": "ElementaryTypeName", - "src": "3517:7:39" - } - ], - "id": 11047, - "name": "VariableDeclaration", - "src": "3517:24:39" - }, - { - "attributes": { - "constant": false, - "indexed": false, - "name": "undelegatedAt", - "scope": 11051, - "stateVariable": false, - "storageLocation": "default", - "type": "uint256", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "uint256", - "type": "uint256" - }, - "id": 11048, - "name": "ElementaryTypeName", - "src": "3543:7:39" - } - ], - "id": 11049, - "name": "VariableDeclaration", - "src": "3543:21:39" - } - ], - "id": 11050, - "name": "ParameterList", - "src": "3516:49:39" - } - ], - "id": 11051, - "name": "EventDefinition", - "src": "3499:67:39" - }, - { - "attributes": { - "anonymous": false, - "documentation": null, - "name": "RecoveredStake" - }, - "children": [ - { - "children": [ - { - "attributes": { - "constant": false, - "indexed": false, - "name": "operator", - "scope": 11055, - "stateVariable": false, - "storageLocation": "default", - "type": "address", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "address", - "stateMutability": "nonpayable", - "type": "address" - }, - "id": 11052, - "name": "ElementaryTypeName", - "src": "3592:7:39" - } - ], - "id": 11053, - "name": "VariableDeclaration", - "src": "3592:16:39" - } - ], - "id": 11054, - "name": "ParameterList", - "src": "3591:18:39" - } - ], - "id": 11055, - "name": "EventDefinition", - "src": "3571:39:39" - }, - { - "attributes": { - "anonymous": false, - "documentation": null, - "name": "TokensSlashed" - }, - "children": [ - { - "children": [ - { - "attributes": { - "constant": false, - "indexed": true, - "name": "operator", - "scope": 11061, - "stateVariable": false, - "storageLocation": "default", - "type": "address", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "address", - "stateMutability": "nonpayable", - "type": "address" - }, - "id": 11056, - "name": "ElementaryTypeName", - "src": "3635:7:39" - } - ], - "id": 11057, - "name": "VariableDeclaration", - "src": "3635:24:39" - }, - { - "attributes": { - "constant": false, - "indexed": false, - "name": "amount", - "scope": 11061, - "stateVariable": false, - "storageLocation": "default", - "type": "uint256", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "uint256", - "type": "uint256" - }, - "id": 11058, - "name": "ElementaryTypeName", - "src": "3661:7:39" - } - ], - "id": 11059, - "name": "VariableDeclaration", - "src": "3661:14:39" - } - ], - "id": 11060, - "name": "ParameterList", - "src": "3634:42:39" - } - ], - "id": 11061, - "name": "EventDefinition", - "src": "3615:62:39" - }, - { - "attributes": { - "anonymous": false, - "documentation": null, - "name": "TokensSeized" - }, - "children": [ - { - "children": [ - { - "attributes": { - "constant": false, - "indexed": true, - "name": "operator", - "scope": 11067, - "stateVariable": false, - "storageLocation": "default", - "type": "address", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "address", - "stateMutability": "nonpayable", - "type": "address" - }, - "id": 11062, - "name": "ElementaryTypeName", - "src": "3701:7:39" - } - ], - "id": 11063, - "name": "VariableDeclaration", - "src": "3701:24:39" - }, - { - "attributes": { - "constant": false, - "indexed": false, - "name": "amount", - "scope": 11067, - "stateVariable": false, - "storageLocation": "default", - "type": "uint256", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "uint256", - "type": "uint256" - }, - "id": 11064, - "name": "ElementaryTypeName", - "src": "3727:7:39" - } - ], - "id": 11065, - "name": "VariableDeclaration", - "src": "3727:14:39" - } - ], - "id": 11066, - "name": "ParameterList", - "src": "3700:42:39" - } - ], - "id": 11067, - "name": "EventDefinition", - "src": "3682:61:39" - }, - { - "attributes": { - "anonymous": false, - "documentation": null, - "name": "StakeLocked" - }, - "children": [ - { - "children": [ - { - "attributes": { - "constant": false, - "indexed": true, - "name": "operator", - "scope": 11075, - "stateVariable": false, - "storageLocation": "default", - "type": "address", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "address", - "stateMutability": "nonpayable", - "type": "address" - }, - "id": 11068, - "name": "ElementaryTypeName", - "src": "3775:7:39" - } - ], - "id": 11069, - "name": "VariableDeclaration", - "src": "3775:24:39" - }, - { - "attributes": { - "constant": false, - "indexed": false, - "name": "lockCreator", - "scope": 11075, - "stateVariable": false, - "storageLocation": "default", - "type": "address", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "address", - "stateMutability": "nonpayable", - "type": "address" - }, - "id": 11070, - "name": "ElementaryTypeName", - "src": "3809:7:39" - } - ], - "id": 11071, - "name": "VariableDeclaration", - "src": "3809:19:39" - }, - { - "attributes": { - "constant": false, - "indexed": false, - "name": "until", - "scope": 11075, - "stateVariable": false, - "storageLocation": "default", - "type": "uint256", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "uint256", - "type": "uint256" - }, - "id": 11072, - "name": "ElementaryTypeName", - "src": "3838:7:39" - } - ], - "id": 11073, - "name": "VariableDeclaration", - "src": "3838:13:39" - } - ], - "id": 11074, - "name": "ParameterList", - "src": "3765:92:39" - } - ], - "id": 11075, - "name": "EventDefinition", - "src": "3748:110:39" - }, - { - "attributes": { - "anonymous": false, - "documentation": null, - "name": "LockReleased" - }, - "children": [ - { - "children": [ - { - "attributes": { - "constant": false, - "indexed": true, - "name": "operator", - "scope": 11081, - "stateVariable": false, - "storageLocation": "default", - "type": "address", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "address", - "stateMutability": "nonpayable", - "type": "address" - }, - "id": 11076, - "name": "ElementaryTypeName", - "src": "3882:7:39" - } - ], - "id": 11077, - "name": "VariableDeclaration", - "src": "3882:24:39" - }, - { - "attributes": { - "constant": false, - "indexed": false, - "name": "lockCreator", - "scope": 11081, - "stateVariable": false, - "storageLocation": "default", - "type": "address", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "address", - "stateMutability": "nonpayable", - "type": "address" - }, - "id": 11078, - "name": "ElementaryTypeName", - "src": "3908:7:39" - } - ], - "id": 11079, - "name": "VariableDeclaration", - "src": "3908:19:39" - } - ], - "id": 11080, - "name": "ParameterList", - "src": "3881:47:39" - } - ], - "id": 11081, - "name": "EventDefinition", - "src": "3863:66:39" - }, - { - "attributes": { - "anonymous": false, - "documentation": null, - "name": "ExpiredLockReleased" - }, - "children": [ - { - "children": [ - { - "attributes": { - "constant": false, - "indexed": true, - "name": "operator", - "scope": 11087, - "stateVariable": false, - "storageLocation": "default", - "type": "address", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "address", - "stateMutability": "nonpayable", - "type": "address" - }, - "id": 11082, - "name": "ElementaryTypeName", - "src": "3960:7:39" - } - ], - "id": 11083, - "name": "VariableDeclaration", - "src": "3960:24:39" - }, - { - "attributes": { - "constant": false, - "indexed": false, - "name": "lockCreator", - "scope": 11087, - "stateVariable": false, - "storageLocation": "default", - "type": "address", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "address", - "stateMutability": "nonpayable", - "type": "address" - }, - "id": 11084, - "name": "ElementaryTypeName", - "src": "3986:7:39" - } - ], - "id": 11085, - "name": "VariableDeclaration", - "src": "3986:19:39" - } - ], - "id": 11086, - "name": "ParameterList", - "src": "3959:47:39" - } - ], - "id": 11087, - "name": "EventDefinition", - "src": "3934:73:39" - }, - { - "attributes": { - "constant": false, - "name": "deployedAt", - "scope": 12435, - "stateVariable": true, - "storageLocation": "default", - "type": "uint256", - "value": null, - "visibility": "public" - }, - "children": [ - { - "attributes": { - "name": "uint256", - "type": "uint256" - }, - "id": 11088, - "name": "ElementaryTypeName", - "src": "4013:7:39" - } - ], - "id": 11089, - "name": "VariableDeclaration", - "src": "4013:25:39" - }, - { - "attributes": { - "constant": false, - "name": "initializationPeriod", - "scope": 12435, - "stateVariable": true, - "storageLocation": "default", - "type": "uint256", - "value": null, - "visibility": "public" - }, - "children": [ - { - "attributes": { - "name": "uint256", - "type": "uint256" - }, - "id": 11090, - "name": "ElementaryTypeName", - "src": "4044:7:39" - } - ], - "id": 11091, - "name": "VariableDeclaration", - "src": "4044:35:39" - }, - { - "attributes": { - "constant": false, - "name": "token", - "scope": 12435, - "stateVariable": true, - "storageLocation": "default", - "type": "contract ERC20Burnable", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "contractScope": null, - "name": "ERC20Burnable", - "referencedDeclaration": 1023, - "type": "contract ERC20Burnable" - }, - "id": 11092, - "name": "UserDefinedTypeName", - "src": "4124:13:39" - } - ], - "id": 11093, - "name": "VariableDeclaration", - "src": "4124:28:39" - }, - { - "attributes": { - "constant": false, - "name": "tokenGrant", - "scope": 12435, - "stateVariable": true, - "storageLocation": "default", - "type": "contract TokenGrant", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "contractScope": null, - "name": "TokenGrant", - "referencedDeclaration": 10702, - "type": "contract TokenGrant" - }, - "id": 11094, - "name": "UserDefinedTypeName", - "src": "4158:10:39" - } - ], - "id": 11095, - "name": "VariableDeclaration", - "src": "4158:30:39" - }, - { - "attributes": { - "constant": false, - "name": "escrow", - "scope": 12435, - "stateVariable": true, - "storageLocation": "default", - "type": "contract TokenStakingEscrow", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "contractScope": null, - "name": "TokenStakingEscrow", - "referencedDeclaration": 13399, - "type": "contract TokenStakingEscrow" - }, - "id": 11096, - "name": "UserDefinedTypeName", - "src": "4194:18:39" - } - ], - "id": 11097, - "name": "VariableDeclaration", - "src": "4194:34:39" - }, - { - "attributes": { - "constant": false, - "name": "grantStaking", - "scope": 12435, - "stateVariable": true, - "storageLocation": "default", - "type": "struct GrantStaking.Storage", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "contractScope": null, - "name": "GrantStaking.Storage", - "referencedDeclaration": 19231, - "type": "struct GrantStaking.Storage" - }, - "id": 11098, - "name": "UserDefinedTypeName", - "src": "4235:20:39" - } - ], - "id": 11099, - "name": "VariableDeclaration", - "src": "4235:42:39" - }, - { - "attributes": { - "constant": false, - "name": "locks", - "scope": 12435, - "stateVariable": true, - "storageLocation": "default", - "type": "struct Locks.Storage", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "contractScope": null, - "name": "Locks.Storage", - "referencedDeclaration": 19752, - "type": "struct Locks.Storage" - }, - "id": 11100, - "name": "UserDefinedTypeName", - "src": "4283:13:39" - } - ], - "id": 11101, - "name": "VariableDeclaration", - "src": "4283:28:39" - }, - { - "attributes": { - "constant": false, - "name": "topUps", - "scope": 12435, - "stateVariable": true, - "storageLocation": "default", - "type": "struct TopUps.Storage", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "contractScope": null, - "name": "TopUps.Storage", - "referencedDeclaration": 20159, - "type": "struct TopUps.Storage" - }, - "id": 11102, - "name": "UserDefinedTypeName", - "src": "4317:14:39" - } - ], - "id": 11103, - "name": "VariableDeclaration", - "src": "4317:30:39" - }, - { - "attributes": { - "constant": true, - "name": "twoWeeks", - "scope": 12435, - "stateVariable": true, - "storageLocation": "default", - "type": "uint256", - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "uint256", - "type": "uint256" - }, - "id": 11104, - "name": "ElementaryTypeName", - "src": "4354:7:39" - }, - { - "attributes": { - "argumentTypes": null, - "hexvalue": "31323039363030", - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "subdenomination": null, - "token": "number", - "type": "int_const 1209600", - "value": "1209600" - }, - "id": 11105, - "name": "Literal", - "src": "4391:7:39" - } - ], - "id": 11106, - "name": "VariableDeclaration", - "src": "4354:44:39" - }, - { - "attributes": { - "constant": true, - "name": "twoMonths", - "scope": 12435, - "stateVariable": true, - "storageLocation": "default", - "type": "uint256", - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "uint256", - "type": "uint256" - }, - "id": 11107, - "name": "ElementaryTypeName", - "src": "4413:7:39" - }, - { - "attributes": { - "argumentTypes": null, - "hexvalue": "35313834303030", - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "subdenomination": null, - "token": "number", - "type": "int_const 5184000", - "value": "5184000" - }, - "id": 11108, - "name": "Literal", - "src": "4451:7:39" - } - ], - "id": 11109, - "name": "VariableDeclaration", - "src": "4413:45:39" - }, - { - "attributes": { - "constant": true, - "name": "minimumStakeScheduleStart", - "scope": 12435, - "stateVariable": true, - "storageLocation": "default", - "type": "uint256", - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "uint256", - "type": "uint256" - }, - "id": 11110, - "name": "ElementaryTypeName", - "src": "4606:7:39" - }, - { - "attributes": { - "argumentTypes": null, - "hexvalue": "31353838303432333636", - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "subdenomination": null, - "token": "number", - "type": "int_const 1588042366", - "value": "1588042366" - }, - "id": 11111, - "name": "Literal", - "src": "4660:10:39" - } - ], - "id": 11112, - "name": "VariableDeclaration", - "src": "4606:64:39" - }, - { - "attributes": { - "documentation": "@notice Creates a token staking contract for a provided Standard ERC20Burnable token.\n @param _token KEEP token contract.\n @param _tokenGrant KEEP token grant contract.\n @param _escrow Escrow dedicated for this staking contract.\n @param _registry Keep contract registry contract.\n @param _initializationPeriod To avoid certain attacks on work selection, recently created\n operators must wait for a specific period of time before being eligible for work selection.", - "implemented": true, - "isConstructor": true, - "kind": "constructor", - "name": "", - "scope": 12435, - "stateMutability": "nonpayable", - "superFunction": null, - "visibility": "public" - }, - "children": [ - { - "children": [ - { - "attributes": { - "constant": false, - "name": "_token", - "scope": 11154, - "stateVariable": false, - "storageLocation": "default", - "type": "contract ERC20Burnable", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "contractScope": null, - "name": "ERC20Burnable", - "referencedDeclaration": 1023, - "type": "contract ERC20Burnable" - }, - "id": 11113, - "name": "UserDefinedTypeName", - "src": "5212:13:39" - } - ], - "id": 11114, - "name": "VariableDeclaration", - "src": "5212:20:39" - }, - { - "attributes": { - "constant": false, - "name": "_tokenGrant", - "scope": 11154, - "stateVariable": false, - "storageLocation": "default", - "type": "contract TokenGrant", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "contractScope": null, - "name": "TokenGrant", - "referencedDeclaration": 10702, - "type": "contract TokenGrant" - }, - "id": 11115, - "name": "UserDefinedTypeName", - "src": "5242:10:39" - } - ], - "id": 11116, - "name": "VariableDeclaration", - "src": "5242:22:39" - }, - { - "attributes": { - "constant": false, - "name": "_escrow", - "scope": 11154, - "stateVariable": false, - "storageLocation": "default", - "type": "contract TokenStakingEscrow", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "contractScope": null, - "name": "TokenStakingEscrow", - "referencedDeclaration": 13399, - "type": "contract TokenStakingEscrow" - }, - "id": 11117, - "name": "UserDefinedTypeName", - "src": "5274:18:39" - } - ], - "id": 11118, - "name": "VariableDeclaration", - "src": "5274:26:39" - }, - { - "attributes": { - "constant": false, - "name": "_registry", - "scope": 11154, - "stateVariable": false, - "storageLocation": "default", - "type": "contract KeepRegistry", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "contractScope": null, - "name": "KeepRegistry", - "referencedDeclaration": 6120, - "type": "contract KeepRegistry" - }, - "id": 11119, - "name": "UserDefinedTypeName", - "src": "5310:12:39" - } - ], - "id": 11120, - "name": "VariableDeclaration", - "src": "5310:22:39" - }, - { - "attributes": { - "constant": false, - "name": "_initializationPeriod", - "scope": 11154, - "stateVariable": false, - "storageLocation": "default", - "type": "uint256", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "uint256", - "type": "uint256" - }, - "id": 11121, - "name": "ElementaryTypeName", - "src": "5342:7:39" - } - ], - "id": 11122, - "name": "VariableDeclaration", - "src": "5342:29:39" - } - ], - "id": 11123, - "name": "ParameterList", - "src": "5202:175:39" - }, - { - "attributes": { - "parameters": [null] - }, - "children": [], - "id": 11127, - "name": "ParameterList", - "src": "5411:0:39" - }, - { - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 1783, - "type": "type(contract Authorizations)", - "value": "Authorizations" - }, - "id": 11124, - "name": "Identifier", - "src": "5385:14:39" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 11120, - "type": "contract KeepRegistry", - "value": "_registry" - }, - "id": 11125, - "name": "Identifier", - "src": "5400:9:39" - } - ], - "id": 11126, - "name": "ModifierInvocation", - "src": "5385:25:39" - }, - { - "children": [ - { - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "operator": "=", - "type": "contract ERC20Burnable" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 11093, - "type": "contract ERC20Burnable", - "value": "token" - }, - "id": 11128, - "name": "Identifier", - "src": "5421:5:39" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 11114, - "type": "contract ERC20Burnable", - "value": "_token" - }, - "id": 11129, - "name": "Identifier", - "src": "5429:6:39" - } - ], - "id": 11130, - "name": "Assignment", - "src": "5421:14:39" - } - ], - "id": 11131, - "name": "ExpressionStatement", - "src": "5421:14:39" - }, - { - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "operator": "=", - "type": "contract TokenGrant" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 11095, - "type": "contract TokenGrant", - "value": "tokenGrant" - }, - "id": 11132, - "name": "Identifier", - "src": "5445:10:39" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 11116, - "type": "contract TokenGrant", - "value": "_tokenGrant" - }, - "id": 11133, - "name": "Identifier", - "src": "5458:11:39" - } - ], - "id": 11134, - "name": "Assignment", - "src": "5445:24:39" - } - ], - "id": 11135, - "name": "ExpressionStatement", - "src": "5445:24:39" - }, - { - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "operator": "=", - "type": "contract TokenStakingEscrow" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 11097, - "type": "contract TokenStakingEscrow", - "value": "escrow" - }, - "id": 11136, - "name": "Identifier", - "src": "5479:6:39" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 11118, - "type": "contract TokenStakingEscrow", - "value": "_escrow" - }, - "id": 11137, - "name": "Identifier", - "src": "5488:7:39" - } - ], - "id": 11138, - "name": "Assignment", - "src": "5479:16:39" - } - ], - "id": 11139, - "name": "ExpressionStatement", - "src": "5479:16:39" - }, - { - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "operator": "=", - "type": "contract KeepRegistry" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 1627, - "type": "contract KeepRegistry", - "value": "registry" - }, - "id": 11140, - "name": "Identifier", - "src": "5505:8:39" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 11120, - "type": "contract KeepRegistry", - "value": "_registry" - }, - "id": 11141, - "name": "Identifier", - "src": "5516:9:39" - } - ], - "id": 11142, - "name": "Assignment", - "src": "5505:20:39" - } - ], - "id": 11143, - "name": "ExpressionStatement", - "src": "5505:20:39" - }, - { - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "operator": "=", - "type": "uint256" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 11091, - "type": "uint256", - "value": "initializationPeriod" - }, - "id": 11144, - "name": "Identifier", - "src": "5535:20:39" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 11122, - "type": "uint256", - "value": "_initializationPeriod" - }, - "id": 11145, - "name": "Identifier", - "src": "5558:21:39" - } - ], - "id": 11146, - "name": "Assignment", - "src": "5535:44:39" - } - ], - "id": 11147, - "name": "ExpressionStatement", - "src": "5535:44:39" - }, - { - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "operator": "=", - "type": "uint256" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 11089, - "type": "uint256", - "value": "deployedAt" - }, - "id": 11148, - "name": "Identifier", - "src": "5589:10:39" - }, - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "member_name": "timestamp", - "referencedDeclaration": null, - "type": "uint256" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 28136, - "type": "block", - "value": "block" - }, - "id": 11149, - "name": "Identifier", - "src": "5602:5:39" - } - ], - "id": 11150, - "name": "MemberAccess", - "src": "5602:15:39" - } - ], - "id": 11151, - "name": "Assignment", - "src": "5589:28:39" - } - ], - "id": 11152, - "name": "ExpressionStatement", - "src": "5589:28:39" - } - ], - "id": 11153, - "name": "Block", - "src": "5411:213:39" - } - ], - "id": 11154, - "name": "FunctionDefinition", - "src": "5191:433:39" - }, - { - "attributes": { - "documentation": "@notice Returns minimum amount of KEEP that allows sMPC cluster client to\n participate in the Keep network. Expressed as number with 18-decimal places.\n Initial minimum stake is higher than the final and lowered periodically based\n on the amount of steps and the length of the minimum stake schedule in seconds.", - "implemented": true, - "isConstructor": false, - "kind": "function", - "modifiers": [null], - "name": "minimumStake", - "scope": 12435, - "stateMutability": "view", - "superFunction": null, - "visibility": "public" - }, - "children": [ - { - "attributes": { - "parameters": [null] - }, - "children": [], - "id": 11155, - "name": "ParameterList", - "src": "5992:2:39" - }, - { - "children": [ - { - "attributes": { - "constant": false, - "name": "", - "scope": 11165, - "stateVariable": false, - "storageLocation": "default", - "type": "uint256", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "uint256", - "type": "uint256" - }, - "id": 11156, - "name": "ElementaryTypeName", - "src": "6016:7:39" - } - ], - "id": 11157, - "name": "VariableDeclaration", - "src": "6016:7:39" - } - ], - "id": 11158, - "name": "ParameterList", - "src": "6015:9:39" - }, - { - "children": [ - { - "attributes": { - "functionReturnParameters": 11158 - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [null], - "type": "uint256", - "type_conversion": false - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "member_name": "current", - "referencedDeclaration": 20125, - "type": "function (uint256) view returns (uint256)" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 20126, - "type": "type(library MinimumStakeSchedule)", - "value": "MinimumStakeSchedule" - }, - "id": 11159, - "name": "Identifier", - "src": "6042:20:39" - } - ], - "id": 11160, - "name": "MemberAccess", - "src": "6042:28:39" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 11112, - "type": "uint256", - "value": "minimumStakeScheduleStart" - }, - "id": 11161, - "name": "Identifier", - "src": "6071:25:39" - } - ], - "id": 11162, - "name": "FunctionCall", - "src": "6042:55:39" - } - ], - "id": 11163, - "name": "Return", - "src": "6035:62:39" - } - ], - "id": 11164, - "name": "Block", - "src": "6025:79:39" - } - ], - "id": 11165, - "name": "FunctionDefinition", - "src": "5971:133:39" - }, - { - "attributes": { - "documentation": "@notice Returns the current value of the undelegation period.\n The staking contract guarantees that an undelegated operator’s stakes\n will stay locked for a period of time after undelegation, and thus\n available as collateral for any work the operator is engaged in.\n The undelegation period is two weeks for the first two months and\n two months after that.", - "implemented": true, - "isConstructor": false, - "kind": "function", - "modifiers": [null], - "name": "undelegationPeriod", - "scope": 12435, - "stateMutability": "view", - "superFunction": null, - "visibility": "public" - }, - "children": [ - { - "attributes": { - "parameters": [null] - }, - "children": [], - "id": 11166, - "name": "ParameterList", - "src": "6540:2:39" - }, - { - "children": [ - { - "attributes": { - "constant": false, - "name": "", - "scope": 11182, - "stateVariable": false, - "storageLocation": "default", - "type": "uint256", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "uint256", - "type": "uint256" - }, - "id": 11167, - "name": "ElementaryTypeName", - "src": "6564:7:39" - } - ], - "id": 11168, - "name": "VariableDeclaration", - "src": "6564:7:39" - } - ], - "id": 11169, - "name": "ParameterList", - "src": "6563:9:39" - }, - { - "children": [ - { - "attributes": { - "functionReturnParameters": 11169 - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "type": "uint256" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "operator": "<", - "type": "bool" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "member_name": "timestamp", - "referencedDeclaration": null, - "type": "uint256" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 28136, - "type": "block", - "value": "block" - }, - "id": 11170, - "name": "Identifier", - "src": "6602:5:39" - } - ], - "id": 11171, - "name": "MemberAccess", - "src": "6602:15:39" - }, - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [null], - "type": "uint256", - "type_conversion": false - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "member_name": "add", - "referencedDeclaration": 310, - "type": "function (uint256,uint256) pure returns (uint256)" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 11089, - "type": "uint256", - "value": "deployedAt" - }, - "id": 11172, - "name": "Identifier", - "src": "6620:10:39" - } - ], - "id": 11173, - "name": "MemberAccess", - "src": "6620:14:39" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 11109, - "type": "uint256", - "value": "twoMonths" - }, - "id": 11174, - "name": "Identifier", - "src": "6635:9:39" - } - ], - "id": 11175, - "name": "FunctionCall", - "src": "6620:25:39" - } - ], - "id": 11176, - "name": "BinaryOperation", - "src": "6602:43:39" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 11106, - "type": "uint256", - "value": "twoWeeks" - }, - "id": 11177, - "name": "Identifier", - "src": "6648:8:39" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 11109, - "type": "uint256", - "value": "twoMonths" - }, - "id": 11178, - "name": "Identifier", - "src": "6659:9:39" - } - ], - "id": 11179, - "name": "Conditional", - "src": "6602:66:39" - } - ], - "id": 11180, - "name": "Return", - "src": "6583:85:39" - } - ], - "id": 11181, - "name": "Block", - "src": "6573:102:39" - } - ], - "id": 11182, - "name": "FunctionDefinition", - "src": "6513:162:39" - }, - { - "attributes": { - "documentation": "@notice Receives approval of token transfer and stakes the approved\n amount or adds the approved amount to an existing delegation (a “top-up”).\n In case of a top-up, it is expected that the operator stake is not\n undelegated and that the top-up is performed from the same source of\n tokens as the initial delegation. That is, if the tokens were delegated\n from a grant, top-up has to be performed from the same grant. If the\n delegation was done using liquid tokens, only liquid tokens from the\n same owner can be used to top-up the stake.\n Top-up can not be cancelled so it is important to be careful with the\n amount of KEEP added to the stake.\n @dev Requires that the provided token contract be the same one linked to\n this contract.\n @param _from The owner of the tokens who approved them to transfer.\n @param _value Approved amount for the transfer and stake.\n @param _token Token contract address.\n @param _extraData Data for stake delegation. This byte array must have\n the following values concatenated:\n - Beneficiary address (20 bytes), ignored for a top-up\n - Operator address (20 bytes)\n - Authorizer address (20 bytes), ignored for a top-up\n - Grant ID (32 bytes) - required only when called by TokenStakingEscrow", - "implemented": true, - "isConstructor": false, - "kind": "function", - "modifiers": [null], - "name": "receiveApproval", - "scope": 12435, - "stateMutability": "nonpayable", - "superFunction": null, - "visibility": "public" - }, - "children": [ - { - "children": [ - { - "attributes": { - "constant": false, - "name": "_from", - "scope": 11253, - "stateVariable": false, - "storageLocation": "default", - "type": "address", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "address", - "stateMutability": "nonpayable", - "type": "address" - }, - "id": 11183, - "name": "ElementaryTypeName", - "src": "8094:7:39" - } - ], - "id": 11184, - "name": "VariableDeclaration", - "src": "8094:13:39" - }, - { - "attributes": { - "constant": false, - "name": "_value", - "scope": 11253, - "stateVariable": false, - "storageLocation": "default", - "type": "uint256", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "uint256", - "type": "uint256" - }, - "id": 11185, - "name": "ElementaryTypeName", - "src": "8117:7:39" - } - ], - "id": 11186, - "name": "VariableDeclaration", - "src": "8117:14:39" - }, - { - "attributes": { - "constant": false, - "name": "_token", - "scope": 11253, - "stateVariable": false, - "storageLocation": "default", - "type": "address", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "address", - "stateMutability": "nonpayable", - "type": "address" - }, - "id": 11187, - "name": "ElementaryTypeName", - "src": "8141:7:39" - } - ], - "id": 11188, - "name": "VariableDeclaration", - "src": "8141:14:39" - }, - { - "attributes": { - "constant": false, - "name": "_extraData", - "scope": 11253, - "stateVariable": false, - "storageLocation": "memory", - "type": "bytes", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "bytes", - "type": "bytes" - }, - "id": 11189, - "name": "ElementaryTypeName", - "src": "8165:5:39" - } - ], - "id": 11190, - "name": "VariableDeclaration", - "src": "8165:23:39" - } - ], - "id": 11191, - "name": "ParameterList", - "src": "8084:110:39" - }, - { - "attributes": { - "parameters": [null] - }, - "children": [], - "id": 11192, - "name": "ParameterList", - "src": "8202:0:39" - }, - { - "children": [ - { - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [null], - "type": "tuple()", - "type_conversion": false - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_stringliteral_47da9b5e57c99f8cbef65229ca937f6f890e1990ca30174cbf7cd659ecff7e04", - "typeString": "literal_string \"Unrecognized token\"" - } - ], - "overloadedDeclarations": [28149, 28150], - "referencedDeclaration": 28150, - "type": "function (bool,string memory) pure", - "value": "require" - }, - "id": 11193, - "name": "Identifier", - "src": "8212:7:39" - }, - { - "attributes": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_contract$_ERC20Burnable_$1023", - "typeString": "contract ERC20Burnable" - }, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "operator": "==", - "type": "bool" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [null], - "type": "contract ERC20Burnable", - "type_conversion": true - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "overloadedDeclarations": [null], - "referencedDeclaration": 1023, - "type": "type(contract ERC20Burnable)", - "value": "ERC20Burnable" - }, - "id": 11194, - "name": "Identifier", - "src": "8220:13:39" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 11188, - "type": "address", - "value": "_token" - }, - "id": 11195, - "name": "Identifier", - "src": "8234:6:39" - } - ], - "id": 11196, - "name": "FunctionCall", - "src": "8220:21:39" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 11093, - "type": "contract ERC20Burnable", - "value": "token" - }, - "id": 11197, - "name": "Identifier", - "src": "8245:5:39" - } - ], - "id": 11198, - "name": "BinaryOperation", - "src": "8220:30:39" - }, - { - "attributes": { - "argumentTypes": null, - "hexvalue": "556e7265636f676e697a656420746f6b656e", - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "subdenomination": null, - "token": "string", - "type": "literal_string \"Unrecognized token\"", - "value": "Unrecognized token" - }, - "id": 11199, - "name": "Literal", - "src": "8252:20:39" - } - ], - "id": 11200, - "name": "FunctionCall", - "src": "8212:61:39" - } - ], - "id": 11201, - "name": "ExpressionStatement", - "src": "8212:61:39" - }, - { - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [null], - "type": "tuple()", - "type_conversion": false - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_stringliteral_09b162eddeba70a64d1881921f98280925c4cc9ff91d7d7c2c0dbd107c95b48b", - "typeString": "literal_string \"Corrupted delegation data\"" - } - ], - "overloadedDeclarations": [28149, 28150], - "referencedDeclaration": 28150, - "type": "function (bool,string memory) pure", - "value": "require" - }, - "id": 11202, - "name": "Identifier", - "src": "8283:7:39" - }, - { - "attributes": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "operator": ">=", - "type": "bool" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "member_name": "length", - "referencedDeclaration": null, - "type": "uint256" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 11190, - "type": "bytes memory", - "value": "_extraData" - }, - "id": 11203, - "name": "Identifier", - "src": "8291:10:39" - } - ], - "id": 11204, - "name": "MemberAccess", - "src": "8291:17:39" - }, - { - "attributes": { - "argumentTypes": null, - "hexvalue": "3630", - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "subdenomination": null, - "token": "number", - "type": "int_const 60", - "value": "60" - }, - "id": 11205, - "name": "Literal", - "src": "8312:2:39" - } - ], - "id": 11206, - "name": "BinaryOperation", - "src": "8291:23:39" - }, - { - "attributes": { - "argumentTypes": null, - "hexvalue": "436f727275707465642064656c65676174696f6e2064617461", - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "subdenomination": null, - "token": "string", - "type": "literal_string \"Corrupted delegation data\"", - "value": "Corrupted delegation data" - }, - "id": 11207, - "name": "Literal", - "src": "8316:27:39" - } - ], - "id": 11208, - "name": "FunctionCall", - "src": "8283:61:39" - } - ], - "id": 11209, - "name": "ExpressionStatement", - "src": "8283:61:39" - }, - { - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [null], - "type": "tuple()", - "type_conversion": false - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "member_name": "safeTransferFrom", - "referencedDeclaration": 1208, - "type": "function (contract IERC20,address,address,uint256)" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 11093, - "type": "contract ERC20Burnable", - "value": "token" - }, - "id": 11210, - "name": "Identifier", - "src": "8400:5:39" - } - ], - "id": 11212, - "name": "MemberAccess", - "src": "8400:22:39" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 11184, - "type": "address", - "value": "_from" - }, - "id": 11213, - "name": "Identifier", - "src": "8423:5:39" - }, - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [null], - "type": "address", - "type_conversion": true - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_contract$_TokenStaking_$12435", - "typeString": "contract TokenStaking" - } - ], - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "type": "type(address)", - "value": "address" - }, - "id": 11214, - "name": "ElementaryTypeNameExpression", - "src": "8430:7:39" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 28238, - "type": "contract TokenStaking", - "value": "this" - }, - "id": 11215, - "name": "Identifier", - "src": "8438:4:39" - } - ], - "id": 11216, - "name": "FunctionCall", - "src": "8430:13:39" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 11186, - "type": "uint256", - "value": "_value" - }, - "id": 11217, - "name": "Identifier", - "src": "8445:6:39" - } - ], - "id": 11218, - "name": "FunctionCall", - "src": "8400:52:39" - } - ], - "id": 11219, - "name": "ExpressionStatement", - "src": "8400:52:39" - }, - { - "attributes": { - "assignments": [11221] - }, - "children": [ - { - "attributes": { - "constant": false, - "name": "operator", - "scope": 11252, - "stateVariable": false, - "storageLocation": "default", - "type": "address", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "address", - "stateMutability": "nonpayable", - "type": "address" - }, - "id": 11220, - "name": "ElementaryTypeName", - "src": "8463:7:39" - } - ], - "id": 11221, - "name": "VariableDeclaration", - "src": "8463:16:39" - }, - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [null], - "type": "address", - "type_conversion": false - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_rational_20_by_1", - "typeString": "int_const 20" - } - ], - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "member_name": "toAddress", - "referencedDeclaration": 27348, - "type": "function (bytes memory,uint256) pure returns (address)" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 11190, - "type": "bytes memory", - "value": "_extraData" - }, - "id": 11222, - "name": "Identifier", - "src": "8482:10:39" - } - ], - "id": 11223, - "name": "MemberAccess", - "src": "8482:20:39" - }, - { - "attributes": { - "argumentTypes": null, - "hexvalue": "3230", - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "subdenomination": null, - "token": "number", - "type": "int_const 20", - "value": "20" - }, - "id": 11224, - "name": "Literal", - "src": "8503:2:39" - } - ], - "id": 11225, - "name": "FunctionCall", - "src": "8482:24:39" - } - ], - "id": 11226, - "name": "VariableDeclarationStatement", - "src": "8463:43:39" - }, - { - "children": [ - { - "attributes": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "operator": "==", - "type": "bool" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "arguments": [null], - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [null], - "type": "uint256", - "type_conversion": false - }, - "children": [ - { - "attributes": { - "argumentTypes": [null], - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "member_name": "getCreationTimestamp", - "referencedDeclaration": 27945, - "type": "function (uint256) pure returns (uint256)" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "member_name": "packedParams", - "referencedDeclaration": 8827, - "type": "uint256" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "type": "struct StakeDelegatable.Operator storage ref" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 8825, - "type": "mapping(address => struct StakeDelegatable.Operator storage ref)", - "value": "operators" - }, - "id": 11227, - "name": "Identifier", - "src": "8591:9:39" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 11221, - "type": "address", - "value": "operator" - }, - "id": 11228, - "name": "Identifier", - "src": "8601:8:39" - } - ], - "id": 11229, - "name": "IndexAccess", - "src": "8591:19:39" - } - ], - "id": 11230, - "name": "MemberAccess", - "src": "8591:32:39" - } - ], - "id": 11231, - "name": "MemberAccess", - "src": "8591:53:39" - } - ], - "id": 11232, - "name": "FunctionCall", - "src": "8591:55:39" - }, - { - "attributes": { - "argumentTypes": null, - "hexvalue": "30", - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "subdenomination": null, - "token": "number", - "type": "int_const 0", - "value": "0" - }, - "id": 11233, - "name": "Literal", - "src": "8650:1:39" - } - ], - "id": 11234, - "name": "BinaryOperation", - "src": "8591:60:39" - }, - { - "children": [ - { - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [null], - "type": "tuple()", - "type_conversion": false - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - ], - "overloadedDeclarations": [null], - "referencedDeclaration": 12176, - "type": "function (address,uint256,address,bytes memory)", - "value": "delegate" - }, - "id": 11235, - "name": "Identifier", - "src": "8804:8:39" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 11184, - "type": "address", - "value": "_from" - }, - "id": 11236, - "name": "Identifier", - "src": "8813:5:39" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 11186, - "type": "uint256", - "value": "_value" - }, - "id": 11237, - "name": "Identifier", - "src": "8820:6:39" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 11221, - "type": "address", - "value": "operator" - }, - "id": 11238, - "name": "Identifier", - "src": "8828:8:39" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 11190, - "type": "bytes memory", - "value": "_extraData" - }, - "id": 11239, - "name": "Identifier", - "src": "8838:10:39" - } - ], - "id": 11240, - "name": "FunctionCall", - "src": "8804:45:39" - } - ], - "id": 11241, - "name": "ExpressionStatement", - "src": "8804:45:39" - } - ], - "id": 11242, - "name": "Block", - "src": "8653:207:39" - }, - { - "children": [ - { - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [null], - "type": "tuple()", - "type_conversion": false - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - ], - "overloadedDeclarations": [null], - "referencedDeclaration": 12296, - "type": "function (address,uint256,address,bytes memory)", - "value": "topUp" - }, - "id": 11243, - "name": "Identifier", - "src": "8949:5:39" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 11184, - "type": "address", - "value": "_from" - }, - "id": 11244, - "name": "Identifier", - "src": "8955:5:39" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 11186, - "type": "uint256", - "value": "_value" - }, - "id": 11245, - "name": "Identifier", - "src": "8962:6:39" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 11221, - "type": "address", - "value": "operator" - }, - "id": 11246, - "name": "Identifier", - "src": "8970:8:39" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 11190, - "type": "bytes memory", - "value": "_extraData" - }, - "id": 11247, - "name": "Identifier", - "src": "8980:10:39" - } - ], - "id": 11248, - "name": "FunctionCall", - "src": "8949:42:39" - } - ], - "id": 11249, - "name": "ExpressionStatement", - "src": "8949:42:39" - } - ], - "id": 11250, - "name": "Block", - "src": "8866:136:39" - } - ], - "id": 11251, - "name": "IfStatement", - "src": "8587:415:39" - } - ], - "id": 11252, - "name": "Block", - "src": "8202:806:39" - } - ], - "id": 11253, - "name": "FunctionDefinition", - "src": "8060:948:39" - }, - { - "attributes": { - "documentation": "@notice Commits pending top-up for the provided operator. If the top-up\n did not pass the initialization period, the function fails.\n @param _operator The operator with a pending top-up that is getting\n committed.", - "implemented": true, - "isConstructor": false, - "kind": "function", - "modifiers": [null], - "name": "commitTopUp", - "scope": 12435, - "stateMutability": "nonpayable", - "superFunction": null, - "visibility": "public" - }, - "children": [ - { - "children": [ - { - "attributes": { - "constant": false, - "name": "_operator", - "scope": 11274, - "stateVariable": false, - "storageLocation": "default", - "type": "address", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "address", - "stateMutability": "nonpayable", - "type": "address" - }, - "id": 11254, - "name": "ElementaryTypeName", - "src": "9278:7:39" - } - ], - "id": 11255, - "name": "VariableDeclaration", - "src": "9278:17:39" - } - ], - "id": 11256, - "name": "ParameterList", - "src": "9277:19:39" - }, - { - "attributes": { - "parameters": [null] - }, - "children": [], - "id": 11257, - "name": "ParameterList", - "src": "9304:0:39" - }, - { - "children": [ - { - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "operator": "=", - "type": "uint256" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "member_name": "packedParams", - "referencedDeclaration": 8827, - "type": "uint256" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "type": "struct StakeDelegatable.Operator storage ref" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 8825, - "type": "mapping(address => struct StakeDelegatable.Operator storage ref)", - "value": "operators" - }, - "id": 11258, - "name": "Identifier", - "src": "9314:9:39" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 11255, - "type": "address", - "value": "_operator" - }, - "id": 11259, - "name": "Identifier", - "src": "9324:9:39" - } - ], - "id": 11260, - "name": "IndexAccess", - "src": "9314:20:39" - } - ], - "id": 11261, - "name": "MemberAccess", - "src": "9314:33:39" - }, - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [null], - "type": "uint256", - "type_conversion": false - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "member_name": "commit", - "referencedDeclaration": 20347, - "type": "function (struct TopUps.Storage storage pointer,address,uint256,uint256) returns (uint256)" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 11103, - "type": "struct TopUps.Storage storage ref", - "value": "topUps" - }, - "id": 11262, - "name": "Identifier", - "src": "9350:6:39" - } - ], - "id": 11263, - "name": "MemberAccess", - "src": "9350:13:39" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 11255, - "type": "address", - "value": "_operator" - }, - "id": 11264, - "name": "Identifier", - "src": "9377:9:39" - }, - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "member_name": "packedParams", - "referencedDeclaration": 8827, - "type": "uint256" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "type": "struct StakeDelegatable.Operator storage ref" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 8825, - "type": "mapping(address => struct StakeDelegatable.Operator storage ref)", - "value": "operators" - }, - "id": 11265, - "name": "Identifier", - "src": "9400:9:39" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 11255, - "type": "address", - "value": "_operator" - }, - "id": 11266, - "name": "Identifier", - "src": "9410:9:39" - } - ], - "id": 11267, - "name": "IndexAccess", - "src": "9400:20:39" - } - ], - "id": 11268, - "name": "MemberAccess", - "src": "9400:33:39" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 11091, - "type": "uint256", - "value": "initializationPeriod" - }, - "id": 11269, - "name": "Identifier", - "src": "9447:20:39" - } - ], - "id": 11270, - "name": "FunctionCall", - "src": "9350:127:39" - } - ], - "id": 11271, - "name": "Assignment", - "src": "9314:163:39" - } - ], - "id": 11272, - "name": "ExpressionStatement", - "src": "9314:163:39" - } - ], - "id": 11273, - "name": "Block", - "src": "9304:180:39" - } - ], - "id": 11274, - "name": "FunctionDefinition", - "src": "9257:227:39" - }, - { - "attributes": { - "documentation": "@notice Cancels stake of tokens within the operator initialization period\n without being subjected to the token lockup for the undelegation period.\n This can be used to undo mistaken delegation to the wrong operator address.\n @param _operator Address of the stake operator.", - "implemented": true, - "isConstructor": false, - "kind": "function", - "modifiers": [null], - "name": "cancelStake", - "scope": 12435, - "stateMutability": "nonpayable", - "superFunction": null, - "visibility": "public" - }, - "children": [ - { - "children": [ - { - "attributes": { - "constant": false, - "name": "_operator", - "scope": 11343, - "stateVariable": false, - "storageLocation": "default", - "type": "address", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "address", - "stateMutability": "nonpayable", - "type": "address" - }, - "id": 11275, - "name": "ElementaryTypeName", - "src": "9814:7:39" - } - ], - "id": 11276, - "name": "VariableDeclaration", - "src": "9814:17:39" - } - ], - "id": 11277, - "name": "ParameterList", - "src": "9813:19:39" - }, - { - "attributes": { - "parameters": [null] - }, - "children": [], - "id": 11278, - "name": "ParameterList", - "src": "9840:0:39" - }, - { - "children": [ - { - "attributes": { - "assignments": [11280] - }, - "children": [ - { - "attributes": { - "constant": false, - "name": "owner", - "scope": 11342, - "stateVariable": false, - "storageLocation": "default", - "type": "address", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "address", - "stateMutability": "nonpayable", - "type": "address" - }, - "id": 11279, - "name": "ElementaryTypeName", - "src": "9850:7:39" - } - ], - "id": 11280, - "name": "VariableDeclaration", - "src": "9850:13:39" - }, - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "member_name": "owner", - "referencedDeclaration": 8829, - "type": "address" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "type": "struct StakeDelegatable.Operator storage ref" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 8825, - "type": "mapping(address => struct StakeDelegatable.Operator storage ref)", - "value": "operators" - }, - "id": 11281, - "name": "Identifier", - "src": "9866:9:39" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 11276, - "type": "address", - "value": "_operator" - }, - "id": 11282, - "name": "Identifier", - "src": "9876:9:39" - } - ], - "id": 11283, - "name": "IndexAccess", - "src": "9866:20:39" - } - ], - "id": 11284, - "name": "MemberAccess", - "src": "9866:26:39" - } - ], - "id": 11285, - "name": "VariableDeclarationStatement", - "src": "9850:42:39" - }, - { - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [null], - "type": "tuple()", - "type_conversion": false - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_stringliteral_fac3bac318c0d00994f57b0f2f4c643c313072b71db2302bf4b900309cc50b36", - "typeString": "literal_string \"Not authorized\"" - } - ], - "overloadedDeclarations": [28149, 28150], - "referencedDeclaration": 28150, - "type": "function (bool,string memory) pure", - "value": "require" - }, - "id": 11286, - "name": "Identifier", - "src": "9902:7:39" - }, - { - "attributes": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "operator": "||", - "type": "bool" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "operator": "||", - "type": "bool" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "operator": "==", - "type": "bool" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "member_name": "sender", - "referencedDeclaration": null, - "type": "address payable" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 28146, - "type": "msg", - "value": "msg" - }, - "id": 11287, - "name": "Identifier", - "src": "9923:3:39" - } - ], - "id": 11288, - "name": "MemberAccess", - "src": "9923:10:39" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 11280, - "type": "address", - "value": "owner" - }, - "id": 11289, - "name": "Identifier", - "src": "9937:5:39" - } - ], - "id": 11290, - "name": "BinaryOperation", - "src": "9923:19:39" - }, - { - "attributes": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "operator": "==", - "type": "bool" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "member_name": "sender", - "referencedDeclaration": null, - "type": "address payable" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 28146, - "type": "msg", - "value": "msg" - }, - "id": 11291, - "name": "Identifier", - "src": "9962:3:39" - } - ], - "id": 11292, - "name": "MemberAccess", - "src": "9962:10:39" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 11276, - "type": "address", - "value": "_operator" - }, - "id": 11293, - "name": "Identifier", - "src": "9976:9:39" - } - ], - "id": 11294, - "name": "BinaryOperation", - "src": "9962:23:39" - } - ], - "id": 11295, - "name": "BinaryOperation", - "src": "9923:62:39" - }, - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [null], - "type": "bool", - "type_conversion": false - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_contract$_TokenGrant_$10702", - "typeString": "contract TokenGrant" - } - ], - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "member_name": "canUndelegate", - "referencedDeclaration": 19498, - "type": "function (struct GrantStaking.Storage storage pointer,address,contract TokenGrant) returns (bool)" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 11099, - "type": "struct GrantStaking.Storage storage ref", - "value": "grantStaking" - }, - "id": 11296, - "name": "Identifier", - "src": "10005:12:39" - } - ], - "id": 11297, - "name": "MemberAccess", - "src": "10005:26:39" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 11276, - "type": "address", - "value": "_operator" - }, - "id": 11298, - "name": "Identifier", - "src": "10032:9:39" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 11095, - "type": "contract TokenGrant", - "value": "tokenGrant" - }, - "id": 11299, - "name": "Identifier", - "src": "10043:10:39" - } - ], - "id": 11300, - "name": "FunctionCall", - "src": "10005:49:39" - } - ], - "id": 11301, - "name": "BinaryOperation", - "src": "9923:131:39" - }, - { - "attributes": { - "argumentTypes": null, - "hexvalue": "4e6f7420617574686f72697a6564", - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "subdenomination": null, - "token": "string", - "type": "literal_string \"Not authorized\"", - "value": "Not authorized" - }, - "id": 11302, - "name": "Literal", - "src": "10068:16:39" - } - ], - "id": 11303, - "name": "FunctionCall", - "src": "9902:192:39" - } - ], - "id": 11304, - "name": "ExpressionStatement", - "src": "9902:192:39" - }, - { - "attributes": { - "assignments": [11306] - }, - "children": [ - { - "attributes": { - "constant": false, - "name": "operatorParams", - "scope": 11342, - "stateVariable": false, - "storageLocation": "default", - "type": "uint256", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "uint256", - "type": "uint256" - }, - "id": 11305, - "name": "ElementaryTypeName", - "src": "10104:7:39" - } - ], - "id": 11306, - "name": "VariableDeclaration", - "src": "10104:22:39" - }, - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "member_name": "packedParams", - "referencedDeclaration": 8827, - "type": "uint256" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "type": "struct StakeDelegatable.Operator storage ref" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 8825, - "type": "mapping(address => struct StakeDelegatable.Operator storage ref)", - "value": "operators" - }, - "id": 11307, - "name": "Identifier", - "src": "10129:9:39" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 11276, - "type": "address", - "value": "_operator" - }, - "id": 11308, - "name": "Identifier", - "src": "10139:9:39" - } - ], - "id": 11309, - "name": "IndexAccess", - "src": "10129:20:39" - } - ], - "id": 11310, - "name": "MemberAccess", - "src": "10129:33:39" - } - ], - "id": 11311, - "name": "VariableDeclarationStatement", - "src": "10104:58:39" - }, - { - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [null], - "type": "tuple()", - "type_conversion": false - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_stringliteral_655beb0bac13ffbbd358a950ddf7097242083984e0d10b43e52c0ce160d829ea", - "typeString": "literal_string \"Initialized stake\"" - } - ], - "overloadedDeclarations": [28149, 28150], - "referencedDeclaration": 28150, - "type": "function (bool,string memory) pure", - "value": "require" - }, - "id": 11312, - "name": "Identifier", - "src": "10173:7:39" - }, - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "operator": "!", - "prefix": true, - "type": "bool" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [null], - "type": "bool", - "type_conversion": false - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "overloadedDeclarations": [null], - "referencedDeclaration": 12314, - "type": "function (uint256) view returns (bool)", - "value": "_isInitialized" - }, - "id": 11313, - "name": "Identifier", - "src": "10182:14:39" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 11306, - "type": "uint256", - "value": "operatorParams" - }, - "id": 11314, - "name": "Identifier", - "src": "10197:14:39" - } - ], - "id": 11315, - "name": "FunctionCall", - "src": "10182:30:39" - } - ], - "id": 11316, - "name": "UnaryOperation", - "src": "10181:31:39" - }, - { - "attributes": { - "argumentTypes": null, - "hexvalue": "496e697469616c697a6564207374616b65", - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "subdenomination": null, - "token": "string", - "type": "literal_string \"Initialized stake\"", - "value": "Initialized stake" - }, - "id": 11317, - "name": "Literal", - "src": "10214:19:39" - } - ], - "id": 11318, - "name": "FunctionCall", - "src": "10173:61:39" - } - ], - "id": 11319, - "name": "ExpressionStatement", - "src": "10173:61:39" - }, - { - "attributes": { - "assignments": [11321] - }, - "children": [ - { - "attributes": { - "constant": false, - "name": "amount", - "scope": 11342, - "stateVariable": false, - "storageLocation": "default", - "type": "uint256", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "uint256", - "type": "uint256" - }, - "id": 11320, - "name": "ElementaryTypeName", - "src": "10245:7:39" - } - ], - "id": 11321, - "name": "VariableDeclaration", - "src": "10245:14:39" - }, - { - "attributes": { - "argumentTypes": null, - "arguments": [null], - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [null], - "type": "uint256", - "type_conversion": false - }, - "children": [ - { - "attributes": { - "argumentTypes": [null], - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "member_name": "getAmount", - "referencedDeclaration": 27910, - "type": "function (uint256) pure returns (uint256)" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 11306, - "type": "uint256", - "value": "operatorParams" - }, - "id": 11322, - "name": "Identifier", - "src": "10262:14:39" - } - ], - "id": 11323, - "name": "MemberAccess", - "src": "10262:24:39" - } - ], - "id": 11324, - "name": "FunctionCall", - "src": "10262:26:39" - } - ], - "id": 11325, - "name": "VariableDeclarationStatement", - "src": "10245:43:39" - }, - { - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "operator": "=", - "type": "uint256" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "member_name": "packedParams", - "referencedDeclaration": 8827, - "type": "uint256" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "type": "struct StakeDelegatable.Operator storage ref" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 8825, - "type": "mapping(address => struct StakeDelegatable.Operator storage ref)", - "value": "operators" - }, - "id": 11326, - "name": "Identifier", - "src": "10298:9:39" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 11276, - "type": "address", - "value": "_operator" - }, - "id": 11327, - "name": "Identifier", - "src": "10308:9:39" - } - ], - "id": 11328, - "name": "IndexAccess", - "src": "10298:20:39" - } - ], - "id": 11329, - "name": "MemberAccess", - "src": "10298:33:39" - }, - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [null], - "type": "uint256", - "type_conversion": false - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - } - ], - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "member_name": "setAmount", - "referencedDeclaration": 27930, - "type": "function (uint256,uint256) pure returns (uint256)" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 11306, - "type": "uint256", - "value": "operatorParams" - }, - "id": 11330, - "name": "Identifier", - "src": "10334:14:39" - } - ], - "id": 11331, - "name": "MemberAccess", - "src": "10334:24:39" - }, - { - "attributes": { - "argumentTypes": null, - "hexvalue": "30", - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "subdenomination": null, - "token": "number", - "type": "int_const 0", - "value": "0" - }, - "id": 11332, - "name": "Literal", - "src": "10359:1:39" - } - ], - "id": 11333, - "name": "FunctionCall", - "src": "10334:27:39" - } - ], - "id": 11334, - "name": "Assignment", - "src": "10298:63:39" - } - ], - "id": 11335, - "name": "ExpressionStatement", - "src": "10298:63:39" - }, - { - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [null], - "type": "tuple()", - "type_conversion": false - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "overloadedDeclarations": [null], - "referencedDeclaration": 12434, - "type": "function (address,address,uint256)", - "value": "transferOrDeposit" - }, - "id": 11336, - "name": "Identifier", - "src": "10372:17:39" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 11280, - "type": "address", - "value": "owner" - }, - "id": 11337, - "name": "Identifier", - "src": "10390:5:39" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 11276, - "type": "address", - "value": "_operator" - }, - "id": 11338, - "name": "Identifier", - "src": "10397:9:39" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 11321, - "type": "uint256", - "value": "amount" - }, - "id": 11339, - "name": "Identifier", - "src": "10408:6:39" - } - ], - "id": 11340, - "name": "FunctionCall", - "src": "10372:43:39" - } - ], - "id": 11341, - "name": "ExpressionStatement", - "src": "10372:43:39" - } - ], - "id": 11342, - "name": "Block", - "src": "9840:582:39" - } - ], - "id": 11343, - "name": "FunctionDefinition", - "src": "9793:629:39" - }, - { - "attributes": { - "documentation": "@notice Undelegates staked tokens. You will be able to recover your stake by calling\n `recoverStake()` with operator address once undelegation period is over.\n @param _operator Address of the stake operator.", - "implemented": true, - "isConstructor": false, - "kind": "function", - "modifiers": [null], - "name": "undelegate", - "scope": 12435, - "stateMutability": "nonpayable", - "superFunction": null, - "visibility": "public" - }, - "children": [ - { - "children": [ - { - "attributes": { - "constant": false, - "name": "_operator", - "scope": 11355, - "stateVariable": false, - "storageLocation": "default", - "type": "address", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "address", - "stateMutability": "nonpayable", - "type": "address" - }, - "id": 11344, - "name": "ElementaryTypeName", - "src": "10678:7:39" - } - ], - "id": 11345, - "name": "VariableDeclaration", - "src": "10678:17:39" - } - ], - "id": 11346, - "name": "ParameterList", - "src": "10677:19:39" - }, - { - "attributes": { - "parameters": [null] - }, - "children": [], - "id": 11347, - "name": "ParameterList", - "src": "10704:0:39" - }, - { - "children": [ - { - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [null], - "type": "tuple()", - "type_conversion": false - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "overloadedDeclarations": [null], - "referencedDeclaration": 11446, - "type": "function (address,uint256)", - "value": "undelegateAt" - }, - "id": 11348, - "name": "Identifier", - "src": "10714:12:39" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 11345, - "type": "address", - "value": "_operator" - }, - "id": 11349, - "name": "Identifier", - "src": "10727:9:39" - }, - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "member_name": "timestamp", - "referencedDeclaration": null, - "type": "uint256" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 28136, - "type": "block", - "value": "block" - }, - "id": 11350, - "name": "Identifier", - "src": "10738:5:39" - } - ], - "id": 11351, - "name": "MemberAccess", - "src": "10738:15:39" - } - ], - "id": 11352, - "name": "FunctionCall", - "src": "10714:40:39" - } - ], - "id": 11353, - "name": "ExpressionStatement", - "src": "10714:40:39" - } - ], - "id": 11354, - "name": "Block", - "src": "10704:57:39" - } - ], - "id": 11355, - "name": "FunctionDefinition", - "src": "10658:103:39" - }, - { - "attributes": { - "documentation": "@notice Set an undelegation time for staked tokens.\n Undelegation will begin at the specified timestamp.\n You will be able to recover your stake by calling\n `recoverStake()` with operator address once undelegation period is over.\n @param _operator Address of the stake operator.\n @param _undelegationTimestamp The timestamp undelegation is to start at.", - "implemented": true, - "isConstructor": false, - "kind": "function", - "modifiers": [null], - "name": "undelegateAt", - "scope": 12435, - "stateMutability": "nonpayable", - "superFunction": null, - "visibility": "public" - }, - "children": [ - { - "children": [ - { - "attributes": { - "constant": false, - "name": "_operator", - "scope": 11446, - "stateVariable": false, - "storageLocation": "default", - "type": "address", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "address", - "stateMutability": "nonpayable", - "type": "address" - }, - "id": 11356, - "name": "ElementaryTypeName", - "src": "11185:7:39" - } - ], - "id": 11357, - "name": "VariableDeclaration", - "src": "11185:17:39" - }, - { - "attributes": { - "constant": false, - "name": "_undelegationTimestamp", - "scope": 11446, - "stateVariable": false, - "storageLocation": "default", - "type": "uint256", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "uint256", - "type": "uint256" - }, - "id": 11358, - "name": "ElementaryTypeName", - "src": "11204:7:39" - } - ], - "id": 11359, - "name": "VariableDeclaration", - "src": "11204:30:39" - } - ], - "id": 11360, - "name": "ParameterList", - "src": "11184:51:39" - }, - { - "attributes": { - "parameters": [null] - }, - "children": [], - "id": 11361, - "name": "ParameterList", - "src": "11255:0:39" - }, - { - "children": [ - { - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [null], - "type": "tuple()", - "type_conversion": false - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_stringliteral_fac3bac318c0d00994f57b0f2f4c643c313072b71db2302bf4b900309cc50b36", - "typeString": "literal_string \"Not authorized\"" - } - ], - "overloadedDeclarations": [28149, 28150], - "referencedDeclaration": 28150, - "type": "function (bool,string memory) pure", - "value": "require" - }, - "id": 11362, - "name": "Identifier", - "src": "11265:7:39" - }, - { - "attributes": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "operator": "||", - "type": "bool" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "operator": "||", - "type": "bool" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "operator": "==", - "type": "bool" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "member_name": "sender", - "referencedDeclaration": null, - "type": "address payable" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 28146, - "type": "msg", - "value": "msg" - }, - "id": 11363, - "name": "Identifier", - "src": "11286:3:39" - } - ], - "id": 11364, - "name": "MemberAccess", - "src": "11286:10:39" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 11357, - "type": "address", - "value": "_operator" - }, - "id": 11365, - "name": "Identifier", - "src": "11300:9:39" - } - ], - "id": 11366, - "name": "BinaryOperation", - "src": "11286:23:39" - }, - { - "attributes": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "operator": "==", - "type": "bool" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "member_name": "sender", - "referencedDeclaration": null, - "type": "address payable" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 28146, - "type": "msg", - "value": "msg" - }, - "id": 11367, - "name": "Identifier", - "src": "11329:3:39" - } - ], - "id": 11368, - "name": "MemberAccess", - "src": "11329:10:39" - }, - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "member_name": "owner", - "referencedDeclaration": 8829, - "type": "address" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "type": "struct StakeDelegatable.Operator storage ref" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 8825, - "type": "mapping(address => struct StakeDelegatable.Operator storage ref)", - "value": "operators" - }, - "id": 11369, - "name": "Identifier", - "src": "11343:9:39" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 11357, - "type": "address", - "value": "_operator" - }, - "id": 11370, - "name": "Identifier", - "src": "11353:9:39" - } - ], - "id": 11371, - "name": "IndexAccess", - "src": "11343:20:39" - } - ], - "id": 11372, - "name": "MemberAccess", - "src": "11343:26:39" - } - ], - "id": 11373, - "name": "BinaryOperation", - "src": "11329:40:39" - } - ], - "id": 11374, - "name": "BinaryOperation", - "src": "11286:83:39" - }, - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [null], - "type": "bool", - "type_conversion": false - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_contract$_TokenGrant_$10702", - "typeString": "contract TokenGrant" - } - ], - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "member_name": "canUndelegate", - "referencedDeclaration": 19498, - "type": "function (struct GrantStaking.Storage storage pointer,address,contract TokenGrant) returns (bool)" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 11099, - "type": "struct GrantStaking.Storage storage ref", - "value": "grantStaking" - }, - "id": 11375, - "name": "Identifier", - "src": "11389:12:39" - } - ], - "id": 11376, - "name": "MemberAccess", - "src": "11389:26:39" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 11357, - "type": "address", - "value": "_operator" - }, - "id": 11377, - "name": "Identifier", - "src": "11416:9:39" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 11095, - "type": "contract TokenGrant", - "value": "tokenGrant" - }, - "id": 11378, - "name": "Identifier", - "src": "11427:10:39" - } - ], - "id": 11379, - "name": "FunctionCall", - "src": "11389:49:39" - } - ], - "id": 11380, - "name": "BinaryOperation", - "src": "11286:152:39" - }, - { - "attributes": { - "argumentTypes": null, - "hexvalue": "4e6f7420617574686f72697a6564", - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "subdenomination": null, - "token": "string", - "type": "literal_string \"Not authorized\"", - "value": "Not authorized" - }, - "id": 11381, - "name": "Literal", - "src": "11452:16:39" - } - ], - "id": 11382, - "name": "FunctionCall", - "src": "11265:213:39" - } - ], - "id": 11383, - "name": "ExpressionStatement", - "src": "11265:213:39" - }, - { - "attributes": { - "assignments": [11385] - }, - "children": [ - { - "attributes": { - "constant": false, - "name": "oldParams", - "scope": 11445, - "stateVariable": false, - "storageLocation": "default", - "type": "uint256", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "uint256", - "type": "uint256" - }, - "id": 11384, - "name": "ElementaryTypeName", - "src": "11488:7:39" - } - ], - "id": 11385, - "name": "VariableDeclaration", - "src": "11488:17:39" - }, - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "member_name": "packedParams", - "referencedDeclaration": 8827, - "type": "uint256" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "type": "struct StakeDelegatable.Operator storage ref" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 8825, - "type": "mapping(address => struct StakeDelegatable.Operator storage ref)", - "value": "operators" - }, - "id": 11386, - "name": "Identifier", - "src": "11508:9:39" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 11357, - "type": "address", - "value": "_operator" - }, - "id": 11387, - "name": "Identifier", - "src": "11518:9:39" - } - ], - "id": 11388, - "name": "IndexAccess", - "src": "11508:20:39" - } - ], - "id": 11389, - "name": "MemberAccess", - "src": "11508:33:39" - } - ], - "id": 11390, - "name": "VariableDeclarationStatement", - "src": "11488:53:39" - }, - { - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [null], - "type": "tuple()", - "type_conversion": false - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_stringliteral_4680df59cce98ccd6dc27cbb13244303b66976f7ccd9420f7c7d47834ac73bbf", - "typeString": "literal_string \"Invalid timestamp\"" - } - ], - "overloadedDeclarations": [28149, 28150], - "referencedDeclaration": 28150, - "type": "function (bool,string memory) pure", - "value": "require" - }, - "id": 11391, - "name": "Identifier", - "src": "11551:7:39" - }, - { - "attributes": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "operator": "&&", - "type": "bool" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "operator": ">=", - "type": "bool" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 11359, - "type": "uint256", - "value": "_undelegationTimestamp" - }, - "id": 11392, - "name": "Identifier", - "src": "11572:22:39" - }, - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "member_name": "timestamp", - "referencedDeclaration": null, - "type": "uint256" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 28136, - "type": "block", - "value": "block" - }, - "id": 11393, - "name": "Identifier", - "src": "11598:5:39" - } - ], - "id": 11394, - "name": "MemberAccess", - "src": "11598:15:39" - } - ], - "id": 11395, - "name": "BinaryOperation", - "src": "11572:41:39" - }, - { - "attributes": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "operator": ">", - "type": "bool" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 11359, - "type": "uint256", - "value": "_undelegationTimestamp" - }, - "id": 11396, - "name": "Identifier", - "src": "11633:22:39" - }, - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [null], - "type": "uint256", - "type_conversion": false - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "member_name": "add", - "referencedDeclaration": 310, - "type": "function (uint256,uint256) pure returns (uint256)" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "arguments": [null], - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [null], - "type": "uint256", - "type_conversion": false - }, - "children": [ - { - "attributes": { - "argumentTypes": [null], - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "member_name": "getCreationTimestamp", - "referencedDeclaration": 27945, - "type": "function (uint256) pure returns (uint256)" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 11385, - "type": "uint256", - "value": "oldParams" - }, - "id": 11397, - "name": "Identifier", - "src": "11674:9:39" - } - ], - "id": 11398, - "name": "MemberAccess", - "src": "11674:30:39" - } - ], - "id": 11399, - "name": "FunctionCall", - "src": "11674:32:39" - } - ], - "id": 11400, - "name": "MemberAccess", - "src": "11674:36:39" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 11091, - "type": "uint256", - "value": "initializationPeriod" - }, - "id": 11401, - "name": "Identifier", - "src": "11711:20:39" - } - ], - "id": 11402, - "name": "FunctionCall", - "src": "11674:58:39" - } - ], - "id": 11403, - "name": "BinaryOperation", - "src": "11633:99:39" - } - ], - "id": 11404, - "name": "BinaryOperation", - "src": "11572:160:39" - }, - { - "attributes": { - "argumentTypes": null, - "hexvalue": "496e76616c69642074696d657374616d70", - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "subdenomination": null, - "token": "string", - "type": "literal_string \"Invalid timestamp\"", - "value": "Invalid timestamp" - }, - "id": 11405, - "name": "Literal", - "src": "11746:19:39" - } - ], - "id": 11406, - "name": "FunctionCall", - "src": "11551:224:39" - } - ], - "id": 11407, - "name": "ExpressionStatement", - "src": "11551:224:39" - }, - { - "attributes": { - "assignments": [11409] - }, - "children": [ - { - "attributes": { - "constant": false, - "name": "existingUndelegationTimestamp", - "scope": 11445, - "stateVariable": false, - "storageLocation": "default", - "type": "uint256", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "uint256", - "type": "uint256" - }, - "id": 11408, - "name": "ElementaryTypeName", - "src": "11785:7:39" - } - ], - "id": 11409, - "name": "VariableDeclaration", - "src": "11785:37:39" - }, - { - "attributes": { - "argumentTypes": null, - "arguments": [null], - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [null], - "type": "uint256", - "type_conversion": false - }, - "children": [ - { - "attributes": { - "argumentTypes": [null], - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "member_name": "getUndelegationTimestamp", - "referencedDeclaration": 27977, - "type": "function (uint256) pure returns (uint256)" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 11385, - "type": "uint256", - "value": "oldParams" - }, - "id": 11410, - "name": "Identifier", - "src": "11837:9:39" - } - ], - "id": 11411, - "name": "MemberAccess", - "src": "11837:34:39" - } - ], - "id": 11412, - "name": "FunctionCall", - "src": "11837:36:39" - } - ], - "id": 11413, - "name": "VariableDeclarationStatement", - "src": "11785:88:39" - }, - { - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [null], - "type": "tuple()", - "type_conversion": false - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_stringliteral_baae0451dc8b8787f0833fc6d6ecd4fa4fec50c467d7195249ba2e75960b24d2", - "typeString": "literal_string \"Operator may not postpone\"" - } - ], - "overloadedDeclarations": [28149, 28150], - "referencedDeclaration": 28150, - "type": "function (bool,string memory) pure", - "value": "require" - }, - "id": 11414, - "name": "Identifier", - "src": "11883:7:39" - }, - { - "attributes": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "operator": "||", - "type": "bool" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "operator": "||", - "type": "bool" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "operator": "==", - "type": "bool" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 11409, - "type": "uint256", - "value": "existingUndelegationTimestamp" - }, - "id": 11415, - "name": "Identifier", - "src": "11951:29:39" - }, - { - "attributes": { - "argumentTypes": null, - "hexvalue": "30", - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "subdenomination": null, - "token": "number", - "type": "int_const 0", - "value": "0" - }, - "id": 11416, - "name": "Literal", - "src": "11984:1:39" - } - ], - "id": 11417, - "name": "BinaryOperation", - "src": "11951:34:39" - }, - { - "attributes": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "operator": ">", - "type": "bool" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 11409, - "type": "uint256", - "value": "existingUndelegationTimestamp" - }, - "id": 11418, - "name": "Identifier", - "src": "12072:29:39" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 11359, - "type": "uint256", - "value": "_undelegationTimestamp" - }, - "id": 11419, - "name": "Identifier", - "src": "12104:22:39" - } - ], - "id": 11420, - "name": "BinaryOperation", - "src": "12072:54:39" - } - ], - "id": 11421, - "name": "BinaryOperation", - "src": "11951:175:39" - }, - { - "attributes": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "operator": "!=", - "type": "bool" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "member_name": "sender", - "referencedDeclaration": null, - "type": "address payable" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 28146, - "type": "msg", - "value": "msg" - }, - "id": 11422, - "name": "Identifier", - "src": "12389:3:39" - } - ], - "id": 11423, - "name": "MemberAccess", - "src": "12389:10:39" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 11357, - "type": "address", - "value": "_operator" - }, - "id": 11424, - "name": "Identifier", - "src": "12403:9:39" - } - ], - "id": 11425, - "name": "BinaryOperation", - "src": "12389:23:39" - } - ], - "id": 11426, - "name": "BinaryOperation", - "src": "11951:461:39" - }, - { - "attributes": { - "argumentTypes": null, - "hexvalue": "4f70657261746f72206d6179206e6f7420706f7374706f6e65", - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "subdenomination": null, - "token": "string", - "type": "literal_string \"Operator may not postpone\"", - "value": "Operator may not postpone" - }, - "id": 11427, - "name": "Literal", - "src": "12426:27:39" - } - ], - "id": 11428, - "name": "FunctionCall", - "src": "11883:580:39" - } - ], - "id": 11429, - "name": "ExpressionStatement", - "src": "11883:580:39" - }, - { - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "operator": "=", - "type": "uint256" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "member_name": "packedParams", - "referencedDeclaration": 8827, - "type": "uint256" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "type": "struct StakeDelegatable.Operator storage ref" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 8825, - "type": "mapping(address => struct StakeDelegatable.Operator storage ref)", - "value": "operators" - }, - "id": 11430, - "name": "Identifier", - "src": "12473:9:39" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 11357, - "type": "address", - "value": "_operator" - }, - "id": 11431, - "name": "Identifier", - "src": "12483:9:39" - } - ], - "id": 11432, - "name": "IndexAccess", - "src": "12473:20:39" - } - ], - "id": 11433, - "name": "MemberAccess", - "src": "12473:33:39" - }, - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [null], - "type": "uint256", - "type_conversion": false - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "member_name": "setUndelegationTimestamp", - "referencedDeclaration": 27997, - "type": "function (uint256,uint256) pure returns (uint256)" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 11385, - "type": "uint256", - "value": "oldParams" - }, - "id": 11434, - "name": "Identifier", - "src": "12509:9:39" - } - ], - "id": 11435, - "name": "MemberAccess", - "src": "12509:34:39" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 11359, - "type": "uint256", - "value": "_undelegationTimestamp" - }, - "id": 11436, - "name": "Identifier", - "src": "12557:22:39" - } - ], - "id": 11437, - "name": "FunctionCall", - "src": "12509:80:39" - } - ], - "id": 11438, - "name": "Assignment", - "src": "12473:116:39" - } - ], - "id": 11439, - "name": "ExpressionStatement", - "src": "12473:116:39" - }, - { - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [null], - "type": "tuple()", - "type_conversion": false - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "overloadedDeclarations": [null], - "referencedDeclaration": 11051, - "type": "function (address,uint256)", - "value": "Undelegated" - }, - "id": 11440, - "name": "Identifier", - "src": "12604:11:39" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 11357, - "type": "address", - "value": "_operator" - }, - "id": 11441, - "name": "Identifier", - "src": "12616:9:39" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 11359, - "type": "uint256", - "value": "_undelegationTimestamp" - }, - "id": 11442, - "name": "Identifier", - "src": "12627:22:39" - } - ], - "id": 11443, - "name": "FunctionCall", - "src": "12604:46:39" - } - ], - "id": 11444, - "name": "EmitStatement", - "src": "12599:51:39" - } - ], - "id": 11445, - "name": "Block", - "src": "11255:1402:39" - } - ], - "id": 11446, - "name": "FunctionDefinition", - "src": "11163:1494:39" - }, - { - "attributes": { - "documentation": "@notice Recovers staked tokens and transfers them back to the owner.\n Recovering tokens can only be performed when the operator finished\n undelegating.\n @param _operator Operator address.", - "implemented": true, - "isConstructor": false, - "kind": "function", - "modifiers": [null], - "name": "recoverStake", - "scope": 12435, - "stateMutability": "nonpayable", - "superFunction": null, - "visibility": "public" - }, - "children": [ - { - "children": [ - { - "attributes": { - "constant": false, - "name": "_operator", - "scope": 11522, - "stateVariable": false, - "storageLocation": "default", - "type": "address", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "address", - "stateMutability": "nonpayable", - "type": "address" - }, - "id": 11447, - "name": "ElementaryTypeName", - "src": "12902:7:39" - } - ], - "id": 11448, - "name": "VariableDeclaration", - "src": "12902:17:39" - } - ], - "id": 11449, - "name": "ParameterList", - "src": "12901:19:39" - }, - { - "attributes": { - "parameters": [null] - }, - "children": [], - "id": 11450, - "name": "ParameterList", - "src": "12928:0:39" - }, - { - "children": [ - { - "attributes": { - "assignments": [11452] - }, - "children": [ - { - "attributes": { - "constant": false, - "name": "operatorParams", - "scope": 11521, - "stateVariable": false, - "storageLocation": "default", - "type": "uint256", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "uint256", - "type": "uint256" - }, - "id": 11451, - "name": "ElementaryTypeName", - "src": "12938:7:39" - } - ], - "id": 11452, - "name": "VariableDeclaration", - "src": "12938:22:39" - }, - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "member_name": "packedParams", - "referencedDeclaration": 8827, - "type": "uint256" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "type": "struct StakeDelegatable.Operator storage ref" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 8825, - "type": "mapping(address => struct StakeDelegatable.Operator storage ref)", - "value": "operators" - }, - "id": 11453, - "name": "Identifier", - "src": "12963:9:39" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 11448, - "type": "address", - "value": "_operator" - }, - "id": 11454, - "name": "Identifier", - "src": "12973:9:39" - } - ], - "id": 11455, - "name": "IndexAccess", - "src": "12963:20:39" - } - ], - "id": 11456, - "name": "MemberAccess", - "src": "12963:33:39" - } - ], - "id": 11457, - "name": "VariableDeclarationStatement", - "src": "12938:58:39" - }, - { - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [null], - "type": "tuple()", - "type_conversion": false - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_stringliteral_fd3788beb72580329c2ed9b644188a5c4298fa00d0816077221edccdf7627650", - "typeString": "literal_string \"Not undelegated\"" - } - ], - "overloadedDeclarations": [28149, 28150], - "referencedDeclaration": 28150, - "type": "function (bool,string memory) pure", - "value": "require" - }, - "id": 11458, - "name": "Identifier", - "src": "13006:7:39" - }, - { - "attributes": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "operator": "!=", - "type": "bool" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "arguments": [null], - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [null], - "type": "uint256", - "type_conversion": false - }, - "children": [ - { - "attributes": { - "argumentTypes": [null], - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "member_name": "getUndelegationTimestamp", - "referencedDeclaration": 27977, - "type": "function (uint256) pure returns (uint256)" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 11452, - "type": "uint256", - "value": "operatorParams" - }, - "id": 11459, - "name": "Identifier", - "src": "13027:14:39" - } - ], - "id": 11460, - "name": "MemberAccess", - "src": "13027:39:39" - } - ], - "id": 11461, - "name": "FunctionCall", - "src": "13027:41:39" - }, - { - "attributes": { - "argumentTypes": null, - "hexvalue": "30", - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "subdenomination": null, - "token": "number", - "type": "int_const 0", - "value": "0" - }, - "id": 11462, - "name": "Literal", - "src": "13072:1:39" - } - ], - "id": 11463, - "name": "BinaryOperation", - "src": "13027:46:39" - }, - { - "attributes": { - "argumentTypes": null, - "hexvalue": "4e6f7420756e64656c656761746564", - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "subdenomination": null, - "token": "string", - "type": "literal_string \"Not undelegated\"", - "value": "Not undelegated" - }, - "id": 11464, - "name": "Literal", - "src": "13087:17:39" - } - ], - "id": 11465, - "name": "FunctionCall", - "src": "13006:108:39" - } - ], - "id": 11466, - "name": "ExpressionStatement", - "src": "13006:108:39" - }, - { - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [null], - "type": "tuple()", - "type_conversion": false - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_stringliteral_5c8b6b2d9bfe0bc7cfe7f71992388de2796b749ab7f9953c19a7d0dfb8e9822c", - "typeString": "literal_string \"Still undelegating\"" - } - ], - "overloadedDeclarations": [28149, 28150], - "referencedDeclaration": 28150, - "type": "function (bool,string memory) pure", - "value": "require" - }, - "id": 11467, - "name": "Identifier", - "src": "13124:7:39" - }, - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [null], - "type": "bool", - "type_conversion": false - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "overloadedDeclarations": [null], - "referencedDeclaration": 12368, - "type": "function (uint256) view returns (bool)", - "value": "_isUndelegatingFinished" - }, - "id": 11468, - "name": "Identifier", - "src": "13132:23:39" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 11452, - "type": "uint256", - "value": "operatorParams" - }, - "id": 11469, - "name": "Identifier", - "src": "13156:14:39" - } - ], - "id": 11470, - "name": "FunctionCall", - "src": "13132:39:39" - }, - { - "attributes": { - "argumentTypes": null, - "hexvalue": "5374696c6c20756e64656c65676174696e67", - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "subdenomination": null, - "token": "string", - "type": "literal_string \"Still undelegating\"", - "value": "Still undelegating" - }, - "id": 11471, - "name": "Literal", - "src": "13173:20:39" - } - ], - "id": 11472, - "name": "FunctionCall", - "src": "13124:70:39" - } - ], - "id": 11473, - "name": "ExpressionStatement", - "src": "13124:70:39" - }, - { - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [null], - "type": "tuple()", - "type_conversion": false - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_stringliteral_8cc71fd1e5a33aeba89e955430eb2e4809478d33099b44ae4ac9a199c189ae53", - "typeString": "literal_string \"Locked stake\"" - } - ], - "overloadedDeclarations": [28149, 28150], - "referencedDeclaration": 28150, - "type": "function (bool,string memory) pure", - "value": "require" - }, - "id": 11474, - "name": "Identifier", - "src": "13204:7:39" - }, - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "operator": "!", - "prefix": true, - "type": "bool" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [null], - "type": "bool", - "type_conversion": false - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "overloadedDeclarations": [null], - "referencedDeclaration": 11646, - "type": "function (address) view returns (bool)", - "value": "isStakeLocked" - }, - "id": 11475, - "name": "Identifier", - "src": "13213:13:39" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 11448, - "type": "address", - "value": "_operator" - }, - "id": 11476, - "name": "Identifier", - "src": "13227:9:39" - } - ], - "id": 11477, - "name": "FunctionCall", - "src": "13213:24:39" - } - ], - "id": 11478, - "name": "UnaryOperation", - "src": "13212:25:39" - }, - { - "attributes": { - "argumentTypes": null, - "hexvalue": "4c6f636b6564207374616b65", - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "subdenomination": null, - "token": "string", - "type": "literal_string \"Locked stake\"", - "value": "Locked stake" - }, - "id": 11479, - "name": "Literal", - "src": "13239:14:39" - } - ], - "id": 11480, - "name": "FunctionCall", - "src": "13204:50:39" - } - ], - "id": 11481, - "name": "ExpressionStatement", - "src": "13204:50:39" - }, - { - "attributes": { - "assignments": [11483] - }, - "children": [ - { - "attributes": { - "constant": false, - "name": "amount", - "scope": 11521, - "stateVariable": false, - "storageLocation": "default", - "type": "uint256", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "uint256", - "type": "uint256" - }, - "id": 11482, - "name": "ElementaryTypeName", - "src": "13265:7:39" - } - ], - "id": 11483, - "name": "VariableDeclaration", - "src": "13265:14:39" - }, - { - "attributes": { - "argumentTypes": null, - "arguments": [null], - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [null], - "type": "uint256", - "type_conversion": false - }, - "children": [ - { - "attributes": { - "argumentTypes": [null], - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "member_name": "getAmount", - "referencedDeclaration": 27910, - "type": "function (uint256) pure returns (uint256)" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 11452, - "type": "uint256", - "value": "operatorParams" - }, - "id": 11484, - "name": "Identifier", - "src": "13282:14:39" - } - ], - "id": 11485, - "name": "MemberAccess", - "src": "13282:24:39" - } - ], - "id": 11486, - "name": "FunctionCall", - "src": "13282:26:39" - } - ], - "id": 11487, - "name": "VariableDeclarationStatement", - "src": "13265:43:39" - }, - { - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "operator": "=", - "type": "uint256" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 11483, - "type": "uint256", - "value": "amount" - }, - "id": 11488, - "name": "Identifier", - "src": "13401:6:39" - }, - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [null], - "type": "uint256", - "type_conversion": false - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "member_name": "add", - "referencedDeclaration": 310, - "type": "function (uint256,uint256) pure returns (uint256)" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 11483, - "type": "uint256", - "value": "amount" - }, - "id": 11489, - "name": "Identifier", - "src": "13410:6:39" - } - ], - "id": 11490, - "name": "MemberAccess", - "src": "13410:10:39" - }, - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [null], - "type": "uint256", - "type_conversion": false - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "member_name": "cancel", - "referencedDeclaration": 20381, - "type": "function (struct TopUps.Storage storage pointer,address) returns (uint256)" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 11103, - "type": "struct TopUps.Storage storage ref", - "value": "topUps" - }, - "id": 11491, - "name": "Identifier", - "src": "13421:6:39" - } - ], - "id": 11492, - "name": "MemberAccess", - "src": "13421:13:39" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 11448, - "type": "address", - "value": "_operator" - }, - "id": 11493, - "name": "Identifier", - "src": "13435:9:39" - } - ], - "id": 11494, - "name": "FunctionCall", - "src": "13421:24:39" - } - ], - "id": 11495, - "name": "FunctionCall", - "src": "13410:36:39" - } - ], - "id": 11496, - "name": "Assignment", - "src": "13401:45:39" - } - ], - "id": 11497, - "name": "ExpressionStatement", - "src": "13401:45:39" - }, - { - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "operator": "=", - "type": "uint256" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "member_name": "packedParams", - "referencedDeclaration": 8827, - "type": "uint256" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "type": "struct StakeDelegatable.Operator storage ref" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 8825, - "type": "mapping(address => struct StakeDelegatable.Operator storage ref)", - "value": "operators" - }, - "id": 11498, - "name": "Identifier", - "src": "13457:9:39" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 11448, - "type": "address", - "value": "_operator" - }, - "id": 11499, - "name": "Identifier", - "src": "13467:9:39" - } - ], - "id": 11500, - "name": "IndexAccess", - "src": "13457:20:39" - } - ], - "id": 11501, - "name": "MemberAccess", - "src": "13457:33:39" - }, - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [null], - "type": "uint256", - "type_conversion": false - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - } - ], - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "member_name": "setAmount", - "referencedDeclaration": 27930, - "type": "function (uint256,uint256) pure returns (uint256)" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 11452, - "type": "uint256", - "value": "operatorParams" - }, - "id": 11502, - "name": "Identifier", - "src": "13493:14:39" - } - ], - "id": 11503, - "name": "MemberAccess", - "src": "13493:24:39" - }, - { - "attributes": { - "argumentTypes": null, - "hexvalue": "30", - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "subdenomination": null, - "token": "number", - "type": "int_const 0", - "value": "0" - }, - "id": 11504, - "name": "Literal", - "src": "13518:1:39" - } - ], - "id": 11505, - "name": "FunctionCall", - "src": "13493:27:39" - } - ], - "id": 11506, - "name": "Assignment", - "src": "13457:63:39" - } - ], - "id": 11507, - "name": "ExpressionStatement", - "src": "13457:63:39" - }, - { - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [null], - "type": "tuple()", - "type_conversion": false - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "overloadedDeclarations": [null], - "referencedDeclaration": 12434, - "type": "function (address,address,uint256)", - "value": "transferOrDeposit" - }, - "id": 11508, - "name": "Identifier", - "src": "13530:17:39" - }, - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "member_name": "owner", - "referencedDeclaration": 8829, - "type": "address" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "type": "struct StakeDelegatable.Operator storage ref" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 8825, - "type": "mapping(address => struct StakeDelegatable.Operator storage ref)", - "value": "operators" - }, - "id": 11509, - "name": "Identifier", - "src": "13548:9:39" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 11448, - "type": "address", - "value": "_operator" - }, - "id": 11510, - "name": "Identifier", - "src": "13558:9:39" - } - ], - "id": 11511, - "name": "IndexAccess", - "src": "13548:20:39" - } - ], - "id": 11512, - "name": "MemberAccess", - "src": "13548:26:39" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 11448, - "type": "address", - "value": "_operator" - }, - "id": 11513, - "name": "Identifier", - "src": "13576:9:39" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 11483, - "type": "uint256", - "value": "amount" - }, - "id": 11514, - "name": "Identifier", - "src": "13587:6:39" - } - ], - "id": 11515, - "name": "FunctionCall", - "src": "13530:64:39" - } - ], - "id": 11516, - "name": "ExpressionStatement", - "src": "13530:64:39" - }, - { - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [null], - "type": "tuple()", - "type_conversion": false - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "overloadedDeclarations": [null], - "referencedDeclaration": 11055, - "type": "function (address)", - "value": "RecoveredStake" - }, - "id": 11517, - "name": "Identifier", - "src": "13610:14:39" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 11448, - "type": "address", - "value": "_operator" - }, - "id": 11518, - "name": "Identifier", - "src": "13625:9:39" - } - ], - "id": 11519, - "name": "FunctionCall", - "src": "13610:25:39" - } - ], - "id": 11520, - "name": "EmitStatement", - "src": "13605:30:39" - } - ], - "id": 11521, - "name": "Block", - "src": "12928:714:39" - } - ], - "id": 11522, - "name": "FunctionDefinition", - "src": "12880:762:39" - }, - { - "attributes": { - "documentation": "@notice Gets stake delegation info for the given operator.\n @param _operator Operator address.\n @return amount The amount of tokens the given operator delegated.\n @return createdAt The time when the stake has been delegated.\n @return undelegatedAt The time when undelegation has been requested.\n If undelegation has not been requested, 0 is returned.", - "implemented": true, - "isConstructor": false, - "kind": "function", - "modifiers": [null], - "name": "getDelegationInfo", - "scope": 12435, - "stateMutability": "view", - "superFunction": null, - "visibility": "public" - }, - "children": [ - { - "children": [ - { - "attributes": { - "constant": false, - "name": "_operator", - "scope": 11541, - "stateVariable": false, - "storageLocation": "default", - "type": "address", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "address", - "stateMutability": "nonpayable", - "type": "address" - }, - "id": 11523, - "name": "ElementaryTypeName", - "src": "14069:7:39" - } - ], - "id": 11524, - "name": "VariableDeclaration", - "src": "14069:17:39" - } - ], - "id": 11525, - "name": "ParameterList", - "src": "14068:19:39" - }, - { - "children": [ - { - "attributes": { - "constant": false, - "name": "amount", - "scope": 11541, - "stateVariable": false, - "storageLocation": "default", - "type": "uint256", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "uint256", - "type": "uint256" - }, - "id": 11526, - "name": "ElementaryTypeName", - "src": "14146:7:39" - } - ], - "id": 11527, - "name": "VariableDeclaration", - "src": "14146:14:39" - }, - { - "attributes": { - "constant": false, - "name": "createdAt", - "scope": 11541, - "stateVariable": false, - "storageLocation": "default", - "type": "uint256", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "uint256", - "type": "uint256" - }, - "id": 11528, - "name": "ElementaryTypeName", - "src": "14174:7:39" - } - ], - "id": 11529, - "name": "VariableDeclaration", - "src": "14174:17:39" - }, - { - "attributes": { - "constant": false, - "name": "undelegatedAt", - "scope": 11541, - "stateVariable": false, - "storageLocation": "default", - "type": "uint256", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "uint256", - "type": "uint256" - }, - "id": 11530, - "name": "ElementaryTypeName", - "src": "14205:7:39" - } - ], - "id": 11531, - "name": "VariableDeclaration", - "src": "14205:21:39" - } - ], - "id": 11532, - "name": "ParameterList", - "src": "14132:104:39" - }, - { - "children": [ - { - "attributes": { - "functionReturnParameters": 11532 - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "arguments": [null], - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [null], - "type": "tuple(uint256,uint256,uint256)", - "type_conversion": false - }, - "children": [ - { - "attributes": { - "argumentTypes": [null], - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "member_name": "unpack", - "referencedDeclaration": 27895, - "type": "function (uint256) pure returns (uint256,uint256,uint256)" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "member_name": "packedParams", - "referencedDeclaration": 8827, - "type": "uint256" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "type": "struct StakeDelegatable.Operator storage ref" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 8825, - "type": "mapping(address => struct StakeDelegatable.Operator storage ref)", - "value": "operators" - }, - "id": 11533, - "name": "Identifier", - "src": "14258:9:39" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 11524, - "type": "address", - "value": "_operator" - }, - "id": 11534, - "name": "Identifier", - "src": "14268:9:39" - } - ], - "id": 11535, - "name": "IndexAccess", - "src": "14258:20:39" - } - ], - "id": 11536, - "name": "MemberAccess", - "src": "14258:33:39" - } - ], - "id": 11537, - "name": "MemberAccess", - "src": "14258:40:39" - } - ], - "id": 11538, - "name": "FunctionCall", - "src": "14258:42:39" - } - ], - "id": 11539, - "name": "Return", - "src": "14251:49:39" - } - ], - "id": 11540, - "name": "Block", - "src": "14241:66:39" - } - ], - "id": 11541, - "name": "FunctionDefinition", - "src": "14042:265:39" - }, - { - "attributes": { - "documentation": "@notice Locks given operator stake for the specified duration.\n Locked stake may not be recovered until the lock expires or is released,\n even if the normal undelegation period has passed.\n Only previously authorized operator contract can lock the stake.\n @param operator Operator address.\n @param duration Lock duration in seconds.", - "implemented": true, - "isConstructor": false, - "kind": "function", - "name": "lockStake", - "scope": 12435, - "stateMutability": "nonpayable", - "superFunction": null, - "visibility": "public" - }, - "children": [ - { - "children": [ - { - "attributes": { - "constant": false, - "name": "operator", - "scope": 11591, - "stateVariable": false, - "storageLocation": "default", - "type": "address", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "address", - "stateMutability": "nonpayable", - "type": "address" - }, - "id": 11542, - "name": "ElementaryTypeName", - "src": "14708:7:39" - } - ], - "id": 11543, - "name": "VariableDeclaration", - "src": "14708:16:39" - }, - { - "attributes": { - "constant": false, - "name": "duration", - "scope": 11591, - "stateVariable": false, - "storageLocation": "default", - "type": "uint256", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "uint256", - "type": "uint256" - }, - "id": 11544, - "name": "ElementaryTypeName", - "src": "14726:7:39" - } - ], - "id": 11545, - "name": "VariableDeclaration", - "src": "14726:16:39" - } - ], - "id": 11546, - "name": "ParameterList", - "src": "14707:36:39" - }, - { - "attributes": { - "parameters": [null] - }, - "children": [], - "id": 11551, - "name": "ParameterList", - "src": "14812:0:39" - }, - { - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 1640, - "type": "modifier (address)", - "value": "onlyApprovedOperatorContract" - }, - "id": 11547, - "name": "Identifier", - "src": "14767:28:39" - }, - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "member_name": "sender", - "referencedDeclaration": null, - "type": "address payable" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 28146, - "type": "msg", - "value": "msg" - }, - "id": 11548, - "name": "Identifier", - "src": "14796:3:39" - } - ], - "id": 11549, - "name": "MemberAccess", - "src": "14796:10:39" - } - ], - "id": 11550, - "name": "ModifierInvocation", - "src": "14767:40:39" - }, - { - "children": [ - { - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [null], - "type": "tuple()", - "type_conversion": false - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_stringliteral_fac3bac318c0d00994f57b0f2f4c643c313072b71db2302bf4b900309cc50b36", - "typeString": "literal_string \"Not authorized\"" - } - ], - "overloadedDeclarations": [28149, 28150], - "referencedDeclaration": 28150, - "type": "function (bool,string memory) pure", - "value": "require" - }, - "id": 11552, - "name": "Identifier", - "src": "14822:7:39" - }, - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [null], - "type": "bool", - "type_conversion": false - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_address_payable", - "typeString": "address payable" - } - ], - "overloadedDeclarations": [null], - "referencedDeclaration": 1713, - "type": "function (address,address) view returns (bool)", - "value": "isAuthorizedForOperator" - }, - "id": 11553, - "name": "Identifier", - "src": "14843:23:39" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 11543, - "type": "address", - "value": "operator" - }, - "id": 11554, - "name": "Identifier", - "src": "14867:8:39" - }, - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "member_name": "sender", - "referencedDeclaration": null, - "type": "address payable" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 28146, - "type": "msg", - "value": "msg" - }, - "id": 11555, - "name": "Identifier", - "src": "14877:3:39" - } - ], - "id": 11556, - "name": "MemberAccess", - "src": "14877:10:39" - } - ], - "id": 11557, - "name": "FunctionCall", - "src": "14843:45:39" - }, - { - "attributes": { - "argumentTypes": null, - "hexvalue": "4e6f7420617574686f72697a6564", - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "subdenomination": null, - "token": "string", - "type": "literal_string \"Not authorized\"", - "value": "Not authorized" - }, - "id": 11558, - "name": "Literal", - "src": "14902:16:39" - } - ], - "id": 11559, - "name": "FunctionCall", - "src": "14822:106:39" - } - ], - "id": 11560, - "name": "ExpressionStatement", - "src": "14822:106:39" - }, - { - "attributes": { - "assignments": [11562] - }, - "children": [ - { - "attributes": { - "constant": false, - "name": "operatorParams", - "scope": 11590, - "stateVariable": false, - "storageLocation": "default", - "type": "uint256", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "uint256", - "type": "uint256" - }, - "id": 11561, - "name": "ElementaryTypeName", - "src": "14939:7:39" - } - ], - "id": 11562, - "name": "VariableDeclaration", - "src": "14939:22:39" - }, - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "member_name": "packedParams", - "referencedDeclaration": 8827, - "type": "uint256" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "type": "struct StakeDelegatable.Operator storage ref" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 8825, - "type": "mapping(address => struct StakeDelegatable.Operator storage ref)", - "value": "operators" - }, - "id": 11563, - "name": "Identifier", - "src": "14964:9:39" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 11543, - "type": "address", - "value": "operator" - }, - "id": 11564, - "name": "Identifier", - "src": "14974:8:39" - } - ], - "id": 11565, - "name": "IndexAccess", - "src": "14964:19:39" - } - ], - "id": 11566, - "name": "MemberAccess", - "src": "14964:32:39" - } - ], - "id": 11567, - "name": "VariableDeclarationStatement", - "src": "14939:57:39" - }, - { - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [null], - "type": "tuple()", - "type_conversion": false - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_stringliteral_ae87db1d2a9d5943a68599fd130a5c06015402b6c91f840c2a2e288f87f41ea4", - "typeString": "literal_string \"Inactive stake\"" - } - ], - "overloadedDeclarations": [28149, 28150], - "referencedDeclaration": 28150, - "type": "function (bool,string memory) pure", - "value": "require" - }, - "id": 11568, - "name": "Identifier", - "src": "15007:7:39" - }, - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [null], - "type": "bool", - "type_conversion": false - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "overloadedDeclarations": [null], - "referencedDeclaration": 12314, - "type": "function (uint256) view returns (bool)", - "value": "_isInitialized" - }, - "id": 11569, - "name": "Identifier", - "src": "15015:14:39" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 11562, - "type": "uint256", - "value": "operatorParams" - }, - "id": 11570, - "name": "Identifier", - "src": "15030:14:39" - } - ], - "id": 11571, - "name": "FunctionCall", - "src": "15015:30:39" - }, - { - "attributes": { - "argumentTypes": null, - "hexvalue": "496e616374697665207374616b65", - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "subdenomination": null, - "token": "string", - "type": "literal_string \"Inactive stake\"", - "value": "Inactive stake" - }, - "id": 11572, - "name": "Literal", - "src": "15047:16:39" - } - ], - "id": 11573, - "name": "FunctionCall", - "src": "15007:57:39" - } - ], - "id": 11574, - "name": "ExpressionStatement", - "src": "15007:57:39" - }, - { - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [null], - "type": "tuple()", - "type_conversion": false - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_stringliteral_7ff35c91519e88e5ca900aeb20aea0affdbc614d349d23939fe23d06949b79f3", - "typeString": "literal_string \"Undelegating stake\"" - } - ], - "overloadedDeclarations": [28149, 28150], - "referencedDeclaration": 28150, - "type": "function (bool,string memory) pure", - "value": "require" - }, - "id": 11575, - "name": "Identifier", - "src": "15074:7:39" - }, - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "operator": "!", - "prefix": true, - "type": "bool" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [null], - "type": "bool", - "type_conversion": false - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "overloadedDeclarations": [null], - "referencedDeclaration": 12339, - "type": "function (uint256) view returns (bool)", - "value": "_isUndelegating" - }, - "id": 11576, - "name": "Identifier", - "src": "15083:15:39" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 11562, - "type": "uint256", - "value": "operatorParams" - }, - "id": 11577, - "name": "Identifier", - "src": "15099:14:39" - } - ], - "id": 11578, - "name": "FunctionCall", - "src": "15083:31:39" - } - ], - "id": 11579, - "name": "UnaryOperation", - "src": "15082:32:39" - }, - { - "attributes": { - "argumentTypes": null, - "hexvalue": "556e64656c65676174696e67207374616b65", - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "subdenomination": null, - "token": "string", - "type": "literal_string \"Undelegating stake\"", - "value": "Undelegating stake" - }, - "id": 11580, - "name": "Literal", - "src": "15116:20:39" - } - ], - "id": 11581, - "name": "FunctionCall", - "src": "15074:63:39" - } - ], - "id": 11582, - "name": "ExpressionStatement", - "src": "15074:63:39" - }, - { - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [null], - "type": "tuple()", - "type_conversion": false - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "member_name": "lockStake", - "referencedDeclaration": 19797, - "type": "function (struct Locks.Storage storage pointer,address,uint256)" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 11101, - "type": "struct Locks.Storage storage ref", - "value": "locks" - }, - "id": 11583, - "name": "Identifier", - "src": "15148:5:39" - } - ], - "id": 11585, - "name": "MemberAccess", - "src": "15148:15:39" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 11543, - "type": "address", - "value": "operator" - }, - "id": 11586, - "name": "Identifier", - "src": "15164:8:39" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 11545, - "type": "uint256", - "value": "duration" - }, - "id": 11587, - "name": "Identifier", - "src": "15174:8:39" - } - ], - "id": 11588, - "name": "FunctionCall", - "src": "15148:35:39" - } - ], - "id": 11589, - "name": "ExpressionStatement", - "src": "15148:35:39" - } - ], - "id": 11590, - "name": "Block", - "src": "14812:378:39" - } - ], - "id": 11591, - "name": "FunctionDefinition", - "src": "14689:501:39" - }, - { - "attributes": { - "documentation": "@notice Removes a lock the caller had previously placed on the operator.\n @dev Only for operator contracts.\n To remove expired or disabled locks, use `releaseExpiredLocks`.\n The authorization check ensures that the caller must have been able\n to place a lock on the operator sometime in the past.\n We don't need to check for current approval status of the caller\n because unlocking stake cannot harm the operator\n nor interfere with other operator contracts.\n Therefore even disabled operator contracts may freely unlock stake.\n @param operator Operator address.", - "implemented": true, - "isConstructor": false, - "kind": "function", - "modifiers": [null], - "name": "unlockStake", - "scope": 12435, - "stateMutability": "nonpayable", - "superFunction": null, - "visibility": "public" - }, - "children": [ - { - "children": [ - { - "attributes": { - "constant": false, - "name": "operator", - "scope": 11612, - "stateVariable": false, - "storageLocation": "default", - "type": "address", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "address", - "stateMutability": "nonpayable", - "type": "address" - }, - "id": 11592, - "name": "ElementaryTypeName", - "src": "15851:7:39" - } - ], - "id": 11593, - "name": "VariableDeclaration", - "src": "15851:16:39" - } - ], - "id": 11594, - "name": "ParameterList", - "src": "15850:18:39" - }, - { - "attributes": { - "parameters": [null] - }, - "children": [], - "id": 11595, - "name": "ParameterList", - "src": "15876:0:39" - }, - { - "children": [ - { - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [null], - "type": "tuple()", - "type_conversion": false - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_stringliteral_fac3bac318c0d00994f57b0f2f4c643c313072b71db2302bf4b900309cc50b36", - "typeString": "literal_string \"Not authorized\"" - } - ], - "overloadedDeclarations": [28149, 28150], - "referencedDeclaration": 28150, - "type": "function (bool,string memory) pure", - "value": "require" - }, - "id": 11596, - "name": "Identifier", - "src": "15886:7:39" - }, - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [null], - "type": "bool", - "type_conversion": false - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_address_payable", - "typeString": "address payable" - } - ], - "overloadedDeclarations": [null], - "referencedDeclaration": 1713, - "type": "function (address,address) view returns (bool)", - "value": "isAuthorizedForOperator" - }, - "id": 11597, - "name": "Identifier", - "src": "15907:23:39" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 11593, - "type": "address", - "value": "operator" - }, - "id": 11598, - "name": "Identifier", - "src": "15931:8:39" - }, - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "member_name": "sender", - "referencedDeclaration": null, - "type": "address payable" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 28146, - "type": "msg", - "value": "msg" - }, - "id": 11599, - "name": "Identifier", - "src": "15941:3:39" - } - ], - "id": 11600, - "name": "MemberAccess", - "src": "15941:10:39" - } - ], - "id": 11601, - "name": "FunctionCall", - "src": "15907:45:39" - }, - { - "attributes": { - "argumentTypes": null, - "hexvalue": "4e6f7420617574686f72697a6564", - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "subdenomination": null, - "token": "string", - "type": "literal_string \"Not authorized\"", - "value": "Not authorized" - }, - "id": 11602, - "name": "Literal", - "src": "15966:16:39" - } - ], - "id": 11603, - "name": "FunctionCall", - "src": "15886:106:39" - } - ], - "id": 11604, - "name": "ExpressionStatement", - "src": "15886:106:39" - }, - { - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [null], - "type": "tuple()", - "type_conversion": false - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "member_name": "releaseLock", - "referencedDeclaration": 19821, - "type": "function (struct Locks.Storage storage pointer,address)" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 11101, - "type": "struct Locks.Storage storage ref", - "value": "locks" - }, - "id": 11605, - "name": "Identifier", - "src": "16002:5:39" - } - ], - "id": 11607, - "name": "MemberAccess", - "src": "16002:17:39" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 11593, - "type": "address", - "value": "operator" - }, - "id": 11608, - "name": "Identifier", - "src": "16020:8:39" - } - ], - "id": 11609, - "name": "FunctionCall", - "src": "16002:27:39" - } - ], - "id": 11610, - "name": "ExpressionStatement", - "src": "16002:27:39" - } - ], - "id": 11611, - "name": "Block", - "src": "15876:160:39" - } - ], - "id": 11612, - "name": "FunctionDefinition", - "src": "15830:206:39" - }, - { - "attributes": { - "documentation": "@notice Removes the lock of the specified operator contract\n if the lock has expired or the contract has been disabled.\n @dev Necessary for removing locks placed by contracts\n that have been disabled by the panic button.\n Also applicable to prevent inadvertent DoS of `recoverStake`\n if too many operator contracts have failed to clean up their locks.", - "implemented": true, - "isConstructor": false, - "kind": "function", - "modifiers": [null], - "name": "releaseExpiredLock", - "scope": 12435, - "stateMutability": "nonpayable", - "superFunction": null, - "visibility": "public" - }, - "children": [ - { - "children": [ - { - "attributes": { - "constant": false, - "name": "operator", - "scope": 11630, - "stateVariable": false, - "storageLocation": "default", - "type": "address", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "address", - "stateMutability": "nonpayable", - "type": "address" - }, - "id": 11613, - "name": "ElementaryTypeName", - "src": "16465:7:39" - } - ], - "id": 11614, - "name": "VariableDeclaration", - "src": "16465:16:39" - }, - { - "attributes": { - "constant": false, - "name": "operatorContract", - "scope": 11630, - "stateVariable": false, - "storageLocation": "default", - "type": "address", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "address", - "stateMutability": "nonpayable", - "type": "address" - }, - "id": 11615, - "name": "ElementaryTypeName", - "src": "16483:7:39" - } - ], - "id": 11616, - "name": "VariableDeclaration", - "src": "16483:24:39" - } - ], - "id": 11617, - "name": "ParameterList", - "src": "16464:44:39" - }, - { - "attributes": { - "parameters": [null] - }, - "children": [], - "id": 11618, - "name": "ParameterList", - "src": "16528:0:39" - }, - { - "children": [ - { - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [null], - "type": "tuple()", - "type_conversion": false - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "member_name": "releaseExpiredLock", - "referencedDeclaration": 19888, - "type": "function (struct Locks.Storage storage pointer,address,address,address)" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 11101, - "type": "struct Locks.Storage storage ref", - "value": "locks" - }, - "id": 11619, - "name": "Identifier", - "src": "16538:5:39" - } - ], - "id": 11621, - "name": "MemberAccess", - "src": "16538:24:39" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 11614, - "type": "address", - "value": "operator" - }, - "id": 11622, - "name": "Identifier", - "src": "16563:8:39" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 11616, - "type": "address", - "value": "operatorContract" - }, - "id": 11623, - "name": "Identifier", - "src": "16573:16:39" - }, - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [null], - "type": "address", - "type_conversion": true - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_contract$_TokenStaking_$12435", - "typeString": "contract TokenStaking" - } - ], - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "type": "type(address)", - "value": "address" - }, - "id": 11624, - "name": "ElementaryTypeNameExpression", - "src": "16591:7:39" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 28238, - "type": "contract TokenStaking", - "value": "this" - }, - "id": 11625, - "name": "Identifier", - "src": "16599:4:39" - } - ], - "id": 11626, - "name": "FunctionCall", - "src": "16591:13:39" - } - ], - "id": 11627, - "name": "FunctionCall", - "src": "16538:67:39" - } - ], - "id": 11628, - "name": "ExpressionStatement", - "src": "16538:67:39" - } - ], - "id": 11629, - "name": "Block", - "src": "16528:84:39" - } - ], - "id": 11630, - "name": "FunctionDefinition", - "src": "16437:175:39" - }, - { - "attributes": { - "documentation": "@notice Check whether the operator has any active locks\n that haven't expired yet\n and whose creators aren't disabled by the panic button.", - "implemented": true, - "isConstructor": false, - "kind": "function", - "modifiers": [null], - "name": "isStakeLocked", - "scope": 12435, - "stateMutability": "view", - "superFunction": null, - "visibility": "public" - }, - "children": [ - { - "children": [ - { - "attributes": { - "constant": false, - "name": "operator", - "scope": 11646, - "stateVariable": false, - "storageLocation": "default", - "type": "address", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "address", - "stateMutability": "nonpayable", - "type": "address" - }, - "id": 11631, - "name": "ElementaryTypeName", - "src": "16802:7:39" - } - ], - "id": 11632, - "name": "VariableDeclaration", - "src": "16802:16:39" - } - ], - "id": 11633, - "name": "ParameterList", - "src": "16801:18:39" - }, - { - "children": [ - { - "attributes": { - "constant": false, - "name": "", - "scope": 11646, - "stateVariable": false, - "storageLocation": "default", - "type": "bool", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "bool", - "type": "bool" - }, - "id": 11634, - "name": "ElementaryTypeName", - "src": "16841:4:39" - } - ], - "id": 11635, - "name": "VariableDeclaration", - "src": "16841:4:39" - } - ], - "id": 11636, - "name": "ParameterList", - "src": "16840:6:39" - }, - { - "children": [ - { - "attributes": { - "functionReturnParameters": 11636 - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [null], - "type": "bool", - "type_conversion": false - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "member_name": "isStakeLocked", - "referencedDeclaration": 19955, - "type": "function (struct Locks.Storage storage pointer,address,address) view returns (bool)" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 11101, - "type": "struct Locks.Storage storage ref", - "value": "locks" - }, - "id": 11637, - "name": "Identifier", - "src": "16864:5:39" - } - ], - "id": 11638, - "name": "MemberAccess", - "src": "16864:19:39" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 11632, - "type": "address", - "value": "operator" - }, - "id": 11639, - "name": "Identifier", - "src": "16884:8:39" - }, - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [null], - "type": "address", - "type_conversion": true - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_contract$_TokenStaking_$12435", - "typeString": "contract TokenStaking" - } - ], - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "type": "type(address)", - "value": "address" - }, - "id": 11640, - "name": "ElementaryTypeNameExpression", - "src": "16894:7:39" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 28238, - "type": "contract TokenStaking", - "value": "this" - }, - "id": 11641, - "name": "Identifier", - "src": "16902:4:39" - } - ], - "id": 11642, - "name": "FunctionCall", - "src": "16894:13:39" - } - ], - "id": 11643, - "name": "FunctionCall", - "src": "16864:44:39" - } - ], - "id": 11644, - "name": "Return", - "src": "16857:51:39" - } - ], - "id": 11645, - "name": "Block", - "src": "16847:68:39" - } - ], - "id": 11646, - "name": "FunctionDefinition", - "src": "16779:136:39" - }, - { - "attributes": { - "documentation": "@notice Get the locks placed on the operator.\n @return creators The addresses of operator contracts\n that have placed a lock on the operator.\n @return expirations The expiration times\n of the locks placed on the operator.", - "implemented": true, - "isConstructor": false, - "kind": "function", - "modifiers": [null], - "name": "getLocks", - "scope": 12435, - "stateMutability": "view", - "superFunction": null, - "visibility": "public" - }, - "children": [ - { - "children": [ - { - "attributes": { - "constant": false, - "name": "operator", - "scope": 11663, - "stateVariable": false, - "storageLocation": "default", - "type": "address", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "address", - "stateMutability": "nonpayable", - "type": "address" - }, - "id": 11647, - "name": "ElementaryTypeName", - "src": "17197:7:39" - } - ], - "id": 11648, - "name": "VariableDeclaration", - "src": "17197:16:39" - } - ], - "id": 11649, - "name": "ParameterList", - "src": "17196:18:39" - }, - { - "children": [ - { - "attributes": { - "constant": false, - "name": "creators", - "scope": 11663, - "stateVariable": false, - "storageLocation": "memory", - "type": "address[]", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "length": null, - "type": "address[]" - }, - "children": [ - { - "attributes": { - "name": "address", - "stateMutability": "nonpayable", - "type": "address" - }, - "id": 11650, - "name": "ElementaryTypeName", - "src": "17260:7:39" - } - ], - "id": 11651, - "name": "ArrayTypeName", - "src": "17260:9:39" - } - ], - "id": 11652, - "name": "VariableDeclaration", - "src": "17260:25:39" - }, - { - "attributes": { - "constant": false, - "name": "expirations", - "scope": 11663, - "stateVariable": false, - "storageLocation": "memory", - "type": "uint256[]", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "length": null, - "type": "uint256[]" - }, - "children": [ - { - "attributes": { - "name": "uint256", - "type": "uint256" - }, - "id": 11653, - "name": "ElementaryTypeName", - "src": "17287:7:39" - } - ], - "id": 11654, - "name": "ArrayTypeName", - "src": "17287:9:39" - } - ], - "id": 11655, - "name": "VariableDeclaration", - "src": "17287:28:39" - } - ], - "id": 11656, - "name": "ParameterList", - "src": "17259:57:39" - }, - { - "children": [ - { - "attributes": { - "functionReturnParameters": 11656 - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [null], - "type": "tuple(address[] memory,uint256[] memory)", - "type_conversion": false - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "member_name": "getLocks", - "referencedDeclaration": 20064, - "type": "function (struct Locks.Storage storage pointer,address) view returns (address[] memory,uint256[] memory)" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 11101, - "type": "struct Locks.Storage storage ref", - "value": "locks" - }, - "id": 11657, - "name": "Identifier", - "src": "17338:5:39" - } - ], - "id": 11658, - "name": "MemberAccess", - "src": "17338:14:39" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 11648, - "type": "address", - "value": "operator" - }, - "id": 11659, - "name": "Identifier", - "src": "17353:8:39" - } - ], - "id": 11660, - "name": "FunctionCall", - "src": "17338:24:39" - } - ], - "id": 11661, - "name": "Return", - "src": "17331:31:39" - } - ], - "id": 11662, - "name": "Block", - "src": "17321:48:39" - } - ], - "id": 11663, - "name": "FunctionDefinition", - "src": "17179:190:39" - }, - { - "attributes": { - "documentation": "@notice Slash provided token amount from every member in the misbehaved\n operators array and burn 100% of all the tokens.\n @param amountToSlash Token amount to slash from every misbehaved operator.\n @param misbehavedOperators Array of addresses to seize the tokens from.", - "implemented": true, - "isConstructor": false, - "kind": "function", - "name": "slash", - "scope": 12435, - "stateMutability": "nonpayable", - "superFunction": null, - "visibility": "public" - }, - "children": [ - { - "children": [ - { - "attributes": { - "constant": false, - "name": "amountToSlash", - "scope": 11804, - "stateVariable": false, - "storageLocation": "default", - "type": "uint256", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "uint256", - "type": "uint256" - }, - "id": 11664, - "name": "ElementaryTypeName", - "src": "17690:7:39" - } - ], - "id": 11665, - "name": "VariableDeclaration", - "src": "17690:21:39" - }, - { - "attributes": { - "constant": false, - "name": "misbehavedOperators", - "scope": 11804, - "stateVariable": false, - "storageLocation": "memory", - "type": "address[]", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "length": null, - "type": "address[]" - }, - "children": [ - { - "attributes": { - "name": "address", - "stateMutability": "nonpayable", - "type": "address" - }, - "id": 11666, - "name": "ElementaryTypeName", - "src": "17713:7:39" - } - ], - "id": 11667, - "name": "ArrayTypeName", - "src": "17713:9:39" - } - ], - "id": 11668, - "name": "VariableDeclaration", - "src": "17713:36:39" - } - ], - "id": 11669, - "name": "ParameterList", - "src": "17689:61:39" - }, - { - "attributes": { - "parameters": [null] - }, - "children": [], - "id": 11674, - "name": "ParameterList", - "src": "17819:0:39" - }, - { - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 1640, - "type": "modifier (address)", - "value": "onlyApprovedOperatorContract" - }, - "id": 11670, - "name": "Identifier", - "src": "17774:28:39" - }, - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "member_name": "sender", - "referencedDeclaration": null, - "type": "address payable" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 28146, - "type": "msg", - "value": "msg" - }, - "id": 11671, - "name": "Identifier", - "src": "17803:3:39" - } - ], - "id": 11672, - "name": "MemberAccess", - "src": "17803:10:39" - } - ], - "id": 11673, - "name": "ModifierInvocation", - "src": "17774:40:39" - }, - { - "children": [ - { - "attributes": { - "assignments": [11676], - "initialValue": null - }, - "children": [ - { - "attributes": { - "constant": false, - "name": "totalAmountToBurn", - "scope": 11803, - "stateVariable": false, - "storageLocation": "default", - "type": "uint256", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "uint256", - "type": "uint256" - }, - "id": 11675, - "name": "ElementaryTypeName", - "src": "17829:7:39" - } - ], - "id": 11676, - "name": "VariableDeclaration", - "src": "17829:25:39" - } - ], - "id": 11677, - "name": "VariableDeclarationStatement", - "src": "17829:25:39" - }, - { - "attributes": { - "assignments": [11679] - }, - "children": [ - { - "attributes": { - "constant": false, - "name": "authoritySource", - "scope": 11803, - "stateVariable": false, - "storageLocation": "default", - "type": "address", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "address", - "stateMutability": "nonpayable", - "type": "address" - }, - "id": 11678, - "name": "ElementaryTypeName", - "src": "17864:7:39" - } - ], - "id": 11679, - "name": "VariableDeclaration", - "src": "17864:23:39" - }, - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [null], - "type": "address", - "type_conversion": false - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_address_payable", - "typeString": "address payable" - } - ], - "overloadedDeclarations": [null], - "referencedDeclaration": 1782, - "type": "function (address) view returns (address)", - "value": "getAuthoritySource" - }, - "id": 11680, - "name": "Identifier", - "src": "17890:18:39" - }, - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "member_name": "sender", - "referencedDeclaration": null, - "type": "address payable" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 28146, - "type": "msg", - "value": "msg" - }, - "id": 11681, - "name": "Identifier", - "src": "17909:3:39" - } - ], - "id": 11682, - "name": "MemberAccess", - "src": "17909:10:39" - } - ], - "id": 11683, - "name": "FunctionCall", - "src": "17890:30:39" - } - ], - "id": 11684, - "name": "VariableDeclarationStatement", - "src": "17864:56:39" - }, - { - "children": [ - { - "attributes": { - "assignments": [11686] - }, - "children": [ - { - "attributes": { - "constant": false, - "name": "i", - "scope": 11796, - "stateVariable": false, - "storageLocation": "default", - "type": "uint256", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "uint256", - "type": "uint256" - }, - "id": 11685, - "name": "ElementaryTypeName", - "src": "17935:7:39" - } - ], - "id": 11686, - "name": "VariableDeclaration", - "src": "17935:9:39" - }, - { - "attributes": { - "argumentTypes": null, - "hexvalue": "30", - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "subdenomination": null, - "token": "number", - "type": "int_const 0", - "value": "0" - }, - "id": 11687, - "name": "Literal", - "src": "17947:1:39" - } - ], - "id": 11688, - "name": "VariableDeclarationStatement", - "src": "17935:13:39" - }, - { - "attributes": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "operator": "<", - "type": "bool" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 11686, - "type": "uint256", - "value": "i" - }, - "id": 11689, - "name": "Identifier", - "src": "17950:1:39" - }, - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "member_name": "length", - "referencedDeclaration": null, - "type": "uint256" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 11668, - "type": "address[] memory", - "value": "misbehavedOperators" - }, - "id": 11690, - "name": "Identifier", - "src": "17954:19:39" - } - ], - "id": 11691, - "name": "MemberAccess", - "src": "17954:26:39" - } - ], - "id": 11692, - "name": "BinaryOperation", - "src": "17950:30:39" - }, - { - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "operator": "++", - "prefix": false, - "type": "uint256" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 11686, - "type": "uint256", - "value": "i" - }, - "id": 11693, - "name": "Identifier", - "src": "17982:1:39" - } - ], - "id": 11694, - "name": "UnaryOperation", - "src": "17982:3:39" - } - ], - "id": 11695, - "name": "ExpressionStatement", - "src": "17982:3:39" - }, - { - "children": [ - { - "attributes": { - "assignments": [11697] - }, - "children": [ - { - "attributes": { - "constant": false, - "name": "operator", - "scope": 11795, - "stateVariable": false, - "storageLocation": "default", - "type": "address", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "address", - "stateMutability": "nonpayable", - "type": "address" - }, - "id": 11696, - "name": "ElementaryTypeName", - "src": "18001:7:39" - } - ], - "id": 11697, - "name": "VariableDeclaration", - "src": "18001:16:39" - }, - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "type": "address" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 11668, - "type": "address[] memory", - "value": "misbehavedOperators" - }, - "id": 11698, - "name": "Identifier", - "src": "18020:19:39" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 11686, - "type": "uint256", - "value": "i" - }, - "id": 11699, - "name": "Identifier", - "src": "18040:1:39" - } - ], - "id": 11700, - "name": "IndexAccess", - "src": "18020:22:39" - } - ], - "id": 11701, - "name": "VariableDeclarationStatement", - "src": "18001:41:39" - }, - { - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [null], - "type": "tuple()", - "type_conversion": false - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_stringliteral_fac3bac318c0d00994f57b0f2f4c643c313072b71db2302bf4b900309cc50b36", - "typeString": "literal_string \"Not authorized\"" - } - ], - "overloadedDeclarations": [28149, 28150], - "referencedDeclaration": 28150, - "type": "function (bool,string memory) pure", - "value": "require" - }, - "id": 11702, - "name": "Identifier", - "src": "18056:7:39" - }, - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "type": "bool" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "type": "mapping(address => bool)" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 1621, - "type": "mapping(address => mapping(address => bool))", - "value": "authorizations" - }, - "id": 11703, - "name": "Identifier", - "src": "18081:14:39" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 11679, - "type": "address", - "value": "authoritySource" - }, - "id": 11704, - "name": "Identifier", - "src": "18096:15:39" - } - ], - "id": 11705, - "name": "IndexAccess", - "src": "18081:31:39" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 11697, - "type": "address", - "value": "operator" - }, - "id": 11706, - "name": "Identifier", - "src": "18113:8:39" - } - ], - "id": 11707, - "name": "IndexAccess", - "src": "18081:41:39" - }, - { - "attributes": { - "argumentTypes": null, - "hexvalue": "4e6f7420617574686f72697a6564", - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "subdenomination": null, - "token": "string", - "type": "literal_string \"Not authorized\"", - "value": "Not authorized" - }, - "id": 11708, - "name": "Literal", - "src": "18140:16:39" - } - ], - "id": 11709, - "name": "FunctionCall", - "src": "18056:114:39" - } - ], - "id": 11710, - "name": "ExpressionStatement", - "src": "18056:114:39" - }, - { - "attributes": { - "assignments": [11712] - }, - "children": [ - { - "attributes": { - "constant": false, - "name": "operatorParams", - "scope": 11795, - "stateVariable": false, - "storageLocation": "default", - "type": "uint256", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "uint256", - "type": "uint256" - }, - "id": 11711, - "name": "ElementaryTypeName", - "src": "18185:7:39" - } - ], - "id": 11712, - "name": "VariableDeclaration", - "src": "18185:22:39" - }, - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "member_name": "packedParams", - "referencedDeclaration": 8827, - "type": "uint256" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "type": "struct StakeDelegatable.Operator storage ref" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 8825, - "type": "mapping(address => struct StakeDelegatable.Operator storage ref)", - "value": "operators" - }, - "id": 11713, - "name": "Identifier", - "src": "18210:9:39" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 11697, - "type": "address", - "value": "operator" - }, - "id": 11714, - "name": "Identifier", - "src": "18220:8:39" - } - ], - "id": 11715, - "name": "IndexAccess", - "src": "18210:19:39" - } - ], - "id": 11716, - "name": "MemberAccess", - "src": "18210:32:39" - } - ], - "id": 11717, - "name": "VariableDeclarationStatement", - "src": "18185:57:39" - }, - { - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [null], - "type": "tuple()", - "type_conversion": false - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_stringliteral_ae87db1d2a9d5943a68599fd130a5c06015402b6c91f840c2a2e288f87f41ea4", - "typeString": "literal_string \"Inactive stake\"" - } - ], - "overloadedDeclarations": [28149, 28150], - "referencedDeclaration": 28150, - "type": "function (bool,string memory) pure", - "value": "require" - }, - "id": 11718, - "name": "Identifier", - "src": "18256:7:39" - }, - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [null], - "type": "bool", - "type_conversion": false - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "overloadedDeclarations": [null], - "referencedDeclaration": 12314, - "type": "function (uint256) view returns (bool)", - "value": "_isInitialized" - }, - "id": 11719, - "name": "Identifier", - "src": "18264:14:39" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 11712, - "type": "uint256", - "value": "operatorParams" - }, - "id": 11720, - "name": "Identifier", - "src": "18279:14:39" - } - ], - "id": 11721, - "name": "FunctionCall", - "src": "18264:30:39" - }, - { - "attributes": { - "argumentTypes": null, - "hexvalue": "496e616374697665207374616b65", - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "subdenomination": null, - "token": "string", - "type": "literal_string \"Inactive stake\"", - "value": "Inactive stake" - }, - "id": 11722, - "name": "Literal", - "src": "18296:16:39" - } - ], - "id": 11723, - "name": "FunctionCall", - "src": "18256:57:39" - } - ], - "id": 11724, - "name": "ExpressionStatement", - "src": "18256:57:39" - }, - { - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [null], - "type": "tuple()", - "type_conversion": false - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_stringliteral_eacc7041583461b566bb72ab4a1f41f0ad993156a94a31407aa7727e352e2fa7", - "typeString": "literal_string \"Stake is released\"" - } - ], - "overloadedDeclarations": [28149, 28150], - "referencedDeclaration": 28150, - "type": "function (bool,string memory) pure", - "value": "require" - }, - "id": 11725, - "name": "Identifier", - "src": "18328:7:39" - }, - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "operator": "!", - "prefix": true, - "type": "bool" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [null], - "type": "bool", - "type_conversion": false - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_address_payable", - "typeString": "address payable" - } - ], - "overloadedDeclarations": [null], - "referencedDeclaration": 12390, - "type": "function (address,uint256,address) view returns (bool)", - "value": "_isStakeReleased" - }, - "id": 11726, - "name": "Identifier", - "src": "18354:16:39" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 11697, - "type": "address", - "value": "operator" - }, - "id": 11727, - "name": "Identifier", - "src": "18371:8:39" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 11712, - "type": "uint256", - "value": "operatorParams" - }, - "id": 11728, - "name": "Identifier", - "src": "18381:14:39" - }, - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "member_name": "sender", - "referencedDeclaration": null, - "type": "address payable" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 28146, - "type": "msg", - "value": "msg" - }, - "id": 11729, - "name": "Identifier", - "src": "18397:3:39" - } - ], - "id": 11730, - "name": "MemberAccess", - "src": "18397:10:39" - } - ], - "id": 11731, - "name": "FunctionCall", - "src": "18354:54:39" - } - ], - "id": 11732, - "name": "UnaryOperation", - "src": "18353:55:39" - }, - { - "attributes": { - "argumentTypes": null, - "hexvalue": "5374616b652069732072656c6561736564", - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "subdenomination": null, - "token": "string", - "type": "literal_string \"Stake is released\"", - "value": "Stake is released" - }, - "id": 11733, - "name": "Literal", - "src": "18426:19:39" - } - ], - "id": 11734, - "name": "FunctionCall", - "src": "18328:131:39" - } - ], - "id": 11735, - "name": "ExpressionStatement", - "src": "18328:131:39" - }, - { - "attributes": { - "assignments": [11737] - }, - "children": [ - { - "attributes": { - "constant": false, - "name": "currentAmount", - "scope": 11795, - "stateVariable": false, - "storageLocation": "default", - "type": "uint256", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "uint256", - "type": "uint256" - }, - "id": 11736, - "name": "ElementaryTypeName", - "src": "18474:7:39" - } - ], - "id": 11737, - "name": "VariableDeclaration", - "src": "18474:21:39" - }, - { - "attributes": { - "argumentTypes": null, - "arguments": [null], - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [null], - "type": "uint256", - "type_conversion": false - }, - "children": [ - { - "attributes": { - "argumentTypes": [null], - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "member_name": "getAmount", - "referencedDeclaration": 27910, - "type": "function (uint256) pure returns (uint256)" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 11712, - "type": "uint256", - "value": "operatorParams" - }, - "id": 11738, - "name": "Identifier", - "src": "18498:14:39" - } - ], - "id": 11739, - "name": "MemberAccess", - "src": "18498:24:39" - } - ], - "id": 11740, - "name": "FunctionCall", - "src": "18498:26:39" - } - ], - "id": 11741, - "name": "VariableDeclarationStatement", - "src": "18474:50:39" - }, - { - "children": [ - { - "attributes": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "operator": "<", - "type": "bool" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 11737, - "type": "uint256", - "value": "currentAmount" - }, - "id": 11742, - "name": "Identifier", - "src": "18543:13:39" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 11665, - "type": "uint256", - "value": "amountToSlash" - }, - "id": 11743, - "name": "Identifier", - "src": "18559:13:39" - } - ], - "id": 11744, - "name": "BinaryOperation", - "src": "18543:29:39" - }, - { - "children": [ - { - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "operator": "=", - "type": "uint256" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 11676, - "type": "uint256", - "value": "totalAmountToBurn" - }, - "id": 11745, - "name": "Identifier", - "src": "18592:17:39" - }, - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [null], - "type": "uint256", - "type_conversion": false - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "member_name": "add", - "referencedDeclaration": 310, - "type": "function (uint256,uint256) pure returns (uint256)" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 11676, - "type": "uint256", - "value": "totalAmountToBurn" - }, - "id": 11746, - "name": "Identifier", - "src": "18612:17:39" - } - ], - "id": 11747, - "name": "MemberAccess", - "src": "18612:21:39" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 11737, - "type": "uint256", - "value": "currentAmount" - }, - "id": 11748, - "name": "Identifier", - "src": "18634:13:39" - } - ], - "id": 11749, - "name": "FunctionCall", - "src": "18612:36:39" - } - ], - "id": 11750, - "name": "Assignment", - "src": "18592:56:39" - } - ], - "id": 11751, - "name": "ExpressionStatement", - "src": "18592:56:39" - }, - { - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "operator": "=", - "type": "uint256" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "member_name": "packedParams", - "referencedDeclaration": 8827, - "type": "uint256" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "type": "struct StakeDelegatable.Operator storage ref" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 8825, - "type": "mapping(address => struct StakeDelegatable.Operator storage ref)", - "value": "operators" - }, - "id": 11752, - "name": "Identifier", - "src": "18666:9:39" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 11697, - "type": "address", - "value": "operator" - }, - "id": 11753, - "name": "Identifier", - "src": "18676:8:39" - } - ], - "id": 11754, - "name": "IndexAccess", - "src": "18666:19:39" - } - ], - "id": 11755, - "name": "MemberAccess", - "src": "18666:32:39" - }, - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [null], - "type": "uint256", - "type_conversion": false - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - } - ], - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "member_name": "setAmount", - "referencedDeclaration": 27930, - "type": "function (uint256,uint256) pure returns (uint256)" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 11712, - "type": "uint256", - "value": "operatorParams" - }, - "id": 11756, - "name": "Identifier", - "src": "18701:14:39" - } - ], - "id": 11757, - "name": "MemberAccess", - "src": "18701:24:39" - }, - { - "attributes": { - "argumentTypes": null, - "hexvalue": "30", - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "subdenomination": null, - "token": "number", - "type": "int_const 0", - "value": "0" - }, - "id": 11758, - "name": "Literal", - "src": "18726:1:39" - } - ], - "id": 11759, - "name": "FunctionCall", - "src": "18701:27:39" - } - ], - "id": 11760, - "name": "Assignment", - "src": "18666:62:39" - } - ], - "id": 11761, - "name": "ExpressionStatement", - "src": "18666:62:39" - }, - { - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [null], - "type": "tuple()", - "type_conversion": false - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "overloadedDeclarations": [null], - "referencedDeclaration": 11061, - "type": "function (address,uint256)", - "value": "TokensSlashed" - }, - "id": 11762, - "name": "Identifier", - "src": "18751:13:39" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 11697, - "type": "address", - "value": "operator" - }, - "id": 11763, - "name": "Identifier", - "src": "18765:8:39" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 11737, - "type": "uint256", - "value": "currentAmount" - }, - "id": 11764, - "name": "Identifier", - "src": "18775:13:39" - } - ], - "id": 11765, - "name": "FunctionCall", - "src": "18751:38:39" - } - ], - "id": 11766, - "name": "EmitStatement", - "src": "18746:43:39" - } - ], - "id": 11767, - "name": "Block", - "src": "18574:230:39" - }, - { - "children": [ - { - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "operator": "=", - "type": "uint256" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 11676, - "type": "uint256", - "value": "totalAmountToBurn" - }, - "id": 11768, - "name": "Identifier", - "src": "18828:17:39" - }, - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [null], - "type": "uint256", - "type_conversion": false - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "member_name": "add", - "referencedDeclaration": 310, - "type": "function (uint256,uint256) pure returns (uint256)" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 11676, - "type": "uint256", - "value": "totalAmountToBurn" - }, - "id": 11769, - "name": "Identifier", - "src": "18848:17:39" - } - ], - "id": 11770, - "name": "MemberAccess", - "src": "18848:21:39" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 11665, - "type": "uint256", - "value": "amountToSlash" - }, - "id": 11771, - "name": "Identifier", - "src": "18870:13:39" - } - ], - "id": 11772, - "name": "FunctionCall", - "src": "18848:36:39" - } - ], - "id": 11773, - "name": "Assignment", - "src": "18828:56:39" - } - ], - "id": 11774, - "name": "ExpressionStatement", - "src": "18828:56:39" - }, - { - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "operator": "=", - "type": "uint256" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "member_name": "packedParams", - "referencedDeclaration": 8827, - "type": "uint256" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "type": "struct StakeDelegatable.Operator storage ref" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 8825, - "type": "mapping(address => struct StakeDelegatable.Operator storage ref)", - "value": "operators" - }, - "id": 11775, - "name": "Identifier", - "src": "18902:9:39" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 11697, - "type": "address", - "value": "operator" - }, - "id": 11776, - "name": "Identifier", - "src": "18912:8:39" - } - ], - "id": 11777, - "name": "IndexAccess", - "src": "18902:19:39" - } - ], - "id": 11778, - "name": "MemberAccess", - "src": "18902:32:39" - }, - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [null], - "type": "uint256", - "type_conversion": false - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "member_name": "setAmount", - "referencedDeclaration": 27930, - "type": "function (uint256,uint256) pure returns (uint256)" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 11712, - "type": "uint256", - "value": "operatorParams" - }, - "id": 11779, - "name": "Identifier", - "src": "18937:14:39" - } - ], - "id": 11780, - "name": "MemberAccess", - "src": "18937:24:39" - }, - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [null], - "type": "uint256", - "type_conversion": false - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "member_name": "sub", - "referencedDeclaration": 326, - "type": "function (uint256,uint256) pure returns (uint256)" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 11737, - "type": "uint256", - "value": "currentAmount" - }, - "id": 11781, - "name": "Identifier", - "src": "18983:13:39" - } - ], - "id": 11782, - "name": "MemberAccess", - "src": "18983:17:39" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 11665, - "type": "uint256", - "value": "amountToSlash" - }, - "id": 11783, - "name": "Identifier", - "src": "19001:13:39" - } - ], - "id": 11784, - "name": "FunctionCall", - "src": "18983:32:39" - } - ], - "id": 11785, - "name": "FunctionCall", - "src": "18937:96:39" - } - ], - "id": 11786, - "name": "Assignment", - "src": "18902:131:39" - } - ], - "id": 11787, - "name": "ExpressionStatement", - "src": "18902:131:39" - }, - { - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [null], - "type": "tuple()", - "type_conversion": false - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "overloadedDeclarations": [null], - "referencedDeclaration": 11061, - "type": "function (address,uint256)", - "value": "TokensSlashed" - }, - "id": 11788, - "name": "Identifier", - "src": "19056:13:39" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 11697, - "type": "address", - "value": "operator" - }, - "id": 11789, - "name": "Identifier", - "src": "19070:8:39" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 11665, - "type": "uint256", - "value": "amountToSlash" - }, - "id": 11790, - "name": "Identifier", - "src": "19080:13:39" - } - ], - "id": 11791, - "name": "FunctionCall", - "src": "19056:38:39" - } - ], - "id": 11792, - "name": "EmitStatement", - "src": "19051:43:39" - } - ], - "id": 11793, - "name": "Block", - "src": "18810:299:39" - } - ], - "id": 11794, - "name": "IfStatement", - "src": "18539:570:39" - } - ], - "id": 11795, - "name": "Block", - "src": "17987:1132:39" - } - ], - "id": 11796, - "name": "ForStatement", - "src": "17930:1189:39" - }, - { - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [null], - "type": "tuple()", - "type_conversion": false - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "member_name": "burn", - "referencedDeclaration": 1009, - "type": "function (uint256) external" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 11093, - "type": "contract ERC20Burnable", - "value": "token" - }, - "id": 11797, - "name": "Identifier", - "src": "19129:5:39" - } - ], - "id": 11799, - "name": "MemberAccess", - "src": "19129:10:39" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 11676, - "type": "uint256", - "value": "totalAmountToBurn" - }, - "id": 11800, - "name": "Identifier", - "src": "19140:17:39" - } - ], - "id": 11801, - "name": "FunctionCall", - "src": "19129:29:39" - } - ], - "id": 11802, - "name": "ExpressionStatement", - "src": "19129:29:39" - } - ], - "id": 11803, - "name": "Block", - "src": "17819:1346:39" - } - ], - "id": 11804, - "name": "FunctionDefinition", - "src": "17675:1490:39" - }, - { - "attributes": { - "documentation": "@notice Seize provided token amount from every member in the misbehaved\n operators array. The tattletale is rewarded with 5% of the total seized\n amount scaled by the reward adjustment parameter and the rest 95% is burned.\n @param amountToSeize Token amount to seize from every misbehaved operator.\n @param rewardMultiplier Reward adjustment in percentage. Min 1% and 100% max.\n @param tattletale Address to receive the 5% reward.\n @param misbehavedOperators Array of addresses to seize the tokens from.", - "implemented": true, - "isConstructor": false, - "kind": "function", - "name": "seize", - "scope": 12435, - "stateMutability": "nonpayable", - "superFunction": null, - "visibility": "public" - }, - "children": [ - { - "children": [ - { - "attributes": { - "constant": false, - "name": "amountToSeize", - "scope": 11970, - "stateVariable": false, - "storageLocation": "default", - "type": "uint256", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "uint256", - "type": "uint256" - }, - "id": 11805, - "name": "ElementaryTypeName", - "src": "19749:7:39" - } - ], - "id": 11806, - "name": "VariableDeclaration", - "src": "19749:21:39" - }, - { - "attributes": { - "constant": false, - "name": "rewardMultiplier", - "scope": 11970, - "stateVariable": false, - "storageLocation": "default", - "type": "uint256", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "uint256", - "type": "uint256" - }, - "id": 11807, - "name": "ElementaryTypeName", - "src": "19780:7:39" - } - ], - "id": 11808, - "name": "VariableDeclaration", - "src": "19780:24:39" - }, - { - "attributes": { - "constant": false, - "name": "tattletale", - "scope": 11970, - "stateVariable": false, - "storageLocation": "default", - "type": "address", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "address", - "stateMutability": "nonpayable", - "type": "address" - }, - "id": 11809, - "name": "ElementaryTypeName", - "src": "19814:7:39" - } - ], - "id": 11810, - "name": "VariableDeclaration", - "src": "19814:18:39" - }, - { - "attributes": { - "constant": false, - "name": "misbehavedOperators", - "scope": 11970, - "stateVariable": false, - "storageLocation": "memory", - "type": "address[]", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "length": null, - "type": "address[]" - }, - "children": [ - { - "attributes": { - "name": "address", - "stateMutability": "nonpayable", - "type": "address" - }, - "id": 11811, - "name": "ElementaryTypeName", - "src": "19842:7:39" - } - ], - "id": 11812, - "name": "ArrayTypeName", - "src": "19842:9:39" - } - ], - "id": 11813, - "name": "VariableDeclaration", - "src": "19842:36:39" - } - ], - "id": 11814, - "name": "ParameterList", - "src": "19739:145:39" - }, - { - "attributes": { - "parameters": [null] - }, - "children": [], - "id": 11819, - "name": "ParameterList", - "src": "19933:0:39" - }, - { - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 1640, - "type": "modifier (address)", - "value": "onlyApprovedOperatorContract" - }, - "id": 11815, - "name": "Identifier", - "src": "19892:28:39" - }, - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "member_name": "sender", - "referencedDeclaration": null, - "type": "address payable" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 28146, - "type": "msg", - "value": "msg" - }, - "id": 11816, - "name": "Identifier", - "src": "19921:3:39" - } - ], - "id": 11817, - "name": "MemberAccess", - "src": "19921:10:39" - } - ], - "id": 11818, - "name": "ModifierInvocation", - "src": "19892:40:39" - }, - { - "children": [ - { - "attributes": { - "assignments": [11821], - "initialValue": null - }, - "children": [ - { - "attributes": { - "constant": false, - "name": "totalAmountToBurn", - "scope": 11969, - "stateVariable": false, - "storageLocation": "default", - "type": "uint256", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "uint256", - "type": "uint256" - }, - "id": 11820, - "name": "ElementaryTypeName", - "src": "19943:7:39" - } - ], - "id": 11821, - "name": "VariableDeclaration", - "src": "19943:25:39" - } - ], - "id": 11822, - "name": "VariableDeclarationStatement", - "src": "19943:25:39" - }, - { - "attributes": { - "assignments": [11824] - }, - "children": [ - { - "attributes": { - "constant": false, - "name": "authoritySource", - "scope": 11969, - "stateVariable": false, - "storageLocation": "default", - "type": "address", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "address", - "stateMutability": "nonpayable", - "type": "address" - }, - "id": 11823, - "name": "ElementaryTypeName", - "src": "19978:7:39" - } - ], - "id": 11824, - "name": "VariableDeclaration", - "src": "19978:23:39" - }, - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [null], - "type": "address", - "type_conversion": false - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_address_payable", - "typeString": "address payable" - } - ], - "overloadedDeclarations": [null], - "referencedDeclaration": 1782, - "type": "function (address) view returns (address)", - "value": "getAuthoritySource" - }, - "id": 11825, - "name": "Identifier", - "src": "20004:18:39" - }, - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "member_name": "sender", - "referencedDeclaration": null, - "type": "address payable" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 28146, - "type": "msg", - "value": "msg" - }, - "id": 11826, - "name": "Identifier", - "src": "20023:3:39" - } - ], - "id": 11827, - "name": "MemberAccess", - "src": "20023:10:39" - } - ], - "id": 11828, - "name": "FunctionCall", - "src": "20004:30:39" - } - ], - "id": 11829, - "name": "VariableDeclarationStatement", - "src": "19978:56:39" - }, - { - "children": [ - { - "attributes": { - "assignments": [11831] - }, - "children": [ - { - "attributes": { - "constant": false, - "name": "i", - "scope": 11941, - "stateVariable": false, - "storageLocation": "default", - "type": "uint256", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "uint256", - "type": "uint256" - }, - "id": 11830, - "name": "ElementaryTypeName", - "src": "20049:7:39" - } - ], - "id": 11831, - "name": "VariableDeclaration", - "src": "20049:9:39" - }, - { - "attributes": { - "argumentTypes": null, - "hexvalue": "30", - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "subdenomination": null, - "token": "number", - "type": "int_const 0", - "value": "0" - }, - "id": 11832, - "name": "Literal", - "src": "20061:1:39" - } - ], - "id": 11833, - "name": "VariableDeclarationStatement", - "src": "20049:13:39" - }, - { - "attributes": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "operator": "<", - "type": "bool" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 11831, - "type": "uint256", - "value": "i" - }, - "id": 11834, - "name": "Identifier", - "src": "20064:1:39" - }, - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "member_name": "length", - "referencedDeclaration": null, - "type": "uint256" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 11813, - "type": "address[] memory", - "value": "misbehavedOperators" - }, - "id": 11835, - "name": "Identifier", - "src": "20068:19:39" - } - ], - "id": 11836, - "name": "MemberAccess", - "src": "20068:26:39" - } - ], - "id": 11837, - "name": "BinaryOperation", - "src": "20064:30:39" - }, - { - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "operator": "++", - "prefix": false, - "type": "uint256" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 11831, - "type": "uint256", - "value": "i" - }, - "id": 11838, - "name": "Identifier", - "src": "20096:1:39" - } - ], - "id": 11839, - "name": "UnaryOperation", - "src": "20096:3:39" - } - ], - "id": 11840, - "name": "ExpressionStatement", - "src": "20096:3:39" - }, - { - "children": [ - { - "attributes": { - "assignments": [11842] - }, - "children": [ - { - "attributes": { - "constant": false, - "name": "operator", - "scope": 11940, - "stateVariable": false, - "storageLocation": "default", - "type": "address", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "address", - "stateMutability": "nonpayable", - "type": "address" - }, - "id": 11841, - "name": "ElementaryTypeName", - "src": "20115:7:39" - } - ], - "id": 11842, - "name": "VariableDeclaration", - "src": "20115:16:39" - }, - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "type": "address" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 11813, - "type": "address[] memory", - "value": "misbehavedOperators" - }, - "id": 11843, - "name": "Identifier", - "src": "20134:19:39" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 11831, - "type": "uint256", - "value": "i" - }, - "id": 11844, - "name": "Identifier", - "src": "20154:1:39" - } - ], - "id": 11845, - "name": "IndexAccess", - "src": "20134:22:39" - } - ], - "id": 11846, - "name": "VariableDeclarationStatement", - "src": "20115:41:39" - }, - { - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [null], - "type": "tuple()", - "type_conversion": false - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_stringliteral_fac3bac318c0d00994f57b0f2f4c643c313072b71db2302bf4b900309cc50b36", - "typeString": "literal_string \"Not authorized\"" - } - ], - "overloadedDeclarations": [28149, 28150], - "referencedDeclaration": 28150, - "type": "function (bool,string memory) pure", - "value": "require" - }, - "id": 11847, - "name": "Identifier", - "src": "20170:7:39" - }, - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "type": "bool" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "type": "mapping(address => bool)" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 1621, - "type": "mapping(address => mapping(address => bool))", - "value": "authorizations" - }, - "id": 11848, - "name": "Identifier", - "src": "20195:14:39" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 11824, - "type": "address", - "value": "authoritySource" - }, - "id": 11849, - "name": "Identifier", - "src": "20210:15:39" - } - ], - "id": 11850, - "name": "IndexAccess", - "src": "20195:31:39" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 11842, - "type": "address", - "value": "operator" - }, - "id": 11851, - "name": "Identifier", - "src": "20227:8:39" - } - ], - "id": 11852, - "name": "IndexAccess", - "src": "20195:41:39" - }, - { - "attributes": { - "argumentTypes": null, - "hexvalue": "4e6f7420617574686f72697a6564", - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "subdenomination": null, - "token": "string", - "type": "literal_string \"Not authorized\"", - "value": "Not authorized" - }, - "id": 11853, - "name": "Literal", - "src": "20254:16:39" - } - ], - "id": 11854, - "name": "FunctionCall", - "src": "20170:114:39" - } - ], - "id": 11855, - "name": "ExpressionStatement", - "src": "20170:114:39" - }, - { - "attributes": { - "assignments": [11857] - }, - "children": [ - { - "attributes": { - "constant": false, - "name": "operatorParams", - "scope": 11940, - "stateVariable": false, - "storageLocation": "default", - "type": "uint256", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "uint256", - "type": "uint256" - }, - "id": 11856, - "name": "ElementaryTypeName", - "src": "20299:7:39" - } - ], - "id": 11857, - "name": "VariableDeclaration", - "src": "20299:22:39" - }, - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "member_name": "packedParams", - "referencedDeclaration": 8827, - "type": "uint256" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "type": "struct StakeDelegatable.Operator storage ref" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 8825, - "type": "mapping(address => struct StakeDelegatable.Operator storage ref)", - "value": "operators" - }, - "id": 11858, - "name": "Identifier", - "src": "20324:9:39" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 11842, - "type": "address", - "value": "operator" - }, - "id": 11859, - "name": "Identifier", - "src": "20334:8:39" - } - ], - "id": 11860, - "name": "IndexAccess", - "src": "20324:19:39" - } - ], - "id": 11861, - "name": "MemberAccess", - "src": "20324:32:39" - } - ], - "id": 11862, - "name": "VariableDeclarationStatement", - "src": "20299:57:39" - }, - { - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [null], - "type": "tuple()", - "type_conversion": false - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_stringliteral_ae87db1d2a9d5943a68599fd130a5c06015402b6c91f840c2a2e288f87f41ea4", - "typeString": "literal_string \"Inactive stake\"" - } - ], - "overloadedDeclarations": [28149, 28150], - "referencedDeclaration": 28150, - "type": "function (bool,string memory) pure", - "value": "require" - }, - "id": 11863, - "name": "Identifier", - "src": "20370:7:39" - }, - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [null], - "type": "bool", - "type_conversion": false - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "overloadedDeclarations": [null], - "referencedDeclaration": 12314, - "type": "function (uint256) view returns (bool)", - "value": "_isInitialized" - }, - "id": 11864, - "name": "Identifier", - "src": "20378:14:39" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 11857, - "type": "uint256", - "value": "operatorParams" - }, - "id": 11865, - "name": "Identifier", - "src": "20393:14:39" - } - ], - "id": 11866, - "name": "FunctionCall", - "src": "20378:30:39" - }, - { - "attributes": { - "argumentTypes": null, - "hexvalue": "496e616374697665207374616b65", - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "subdenomination": null, - "token": "string", - "type": "literal_string \"Inactive stake\"", - "value": "Inactive stake" - }, - "id": 11867, - "name": "Literal", - "src": "20410:16:39" - } - ], - "id": 11868, - "name": "FunctionCall", - "src": "20370:57:39" - } - ], - "id": 11869, - "name": "ExpressionStatement", - "src": "20370:57:39" - }, - { - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [null], - "type": "tuple()", - "type_conversion": false - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_stringliteral_eacc7041583461b566bb72ab4a1f41f0ad993156a94a31407aa7727e352e2fa7", - "typeString": "literal_string \"Stake is released\"" - } - ], - "overloadedDeclarations": [28149, 28150], - "referencedDeclaration": 28150, - "type": "function (bool,string memory) pure", - "value": "require" - }, - "id": 11870, - "name": "Identifier", - "src": "20442:7:39" - }, - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "operator": "!", - "prefix": true, - "type": "bool" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [null], - "type": "bool", - "type_conversion": false - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_address_payable", - "typeString": "address payable" - } - ], - "overloadedDeclarations": [null], - "referencedDeclaration": 12390, - "type": "function (address,uint256,address) view returns (bool)", - "value": "_isStakeReleased" - }, - "id": 11871, - "name": "Identifier", - "src": "20468:16:39" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 11842, - "type": "address", - "value": "operator" - }, - "id": 11872, - "name": "Identifier", - "src": "20485:8:39" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 11857, - "type": "uint256", - "value": "operatorParams" - }, - "id": 11873, - "name": "Identifier", - "src": "20495:14:39" - }, - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "member_name": "sender", - "referencedDeclaration": null, - "type": "address payable" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 28146, - "type": "msg", - "value": "msg" - }, - "id": 11874, - "name": "Identifier", - "src": "20511:3:39" - } - ], - "id": 11875, - "name": "MemberAccess", - "src": "20511:10:39" - } - ], - "id": 11876, - "name": "FunctionCall", - "src": "20468:54:39" - } - ], - "id": 11877, - "name": "UnaryOperation", - "src": "20467:55:39" - }, - { - "attributes": { - "argumentTypes": null, - "hexvalue": "5374616b652069732072656c6561736564", - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "subdenomination": null, - "token": "string", - "type": "literal_string \"Stake is released\"", - "value": "Stake is released" - }, - "id": 11878, - "name": "Literal", - "src": "20540:19:39" - } - ], - "id": 11879, - "name": "FunctionCall", - "src": "20442:131:39" - } - ], - "id": 11880, - "name": "ExpressionStatement", - "src": "20442:131:39" - }, - { - "attributes": { - "assignments": [11882] - }, - "children": [ - { - "attributes": { - "constant": false, - "name": "currentAmount", - "scope": 11940, - "stateVariable": false, - "storageLocation": "default", - "type": "uint256", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "uint256", - "type": "uint256" - }, - "id": 11881, - "name": "ElementaryTypeName", - "src": "20588:7:39" - } - ], - "id": 11882, - "name": "VariableDeclaration", - "src": "20588:21:39" - }, - { - "attributes": { - "argumentTypes": null, - "arguments": [null], - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [null], - "type": "uint256", - "type_conversion": false - }, - "children": [ - { - "attributes": { - "argumentTypes": [null], - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "member_name": "getAmount", - "referencedDeclaration": 27910, - "type": "function (uint256) pure returns (uint256)" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 11857, - "type": "uint256", - "value": "operatorParams" - }, - "id": 11883, - "name": "Identifier", - "src": "20612:14:39" - } - ], - "id": 11884, - "name": "MemberAccess", - "src": "20612:24:39" - } - ], - "id": 11885, - "name": "FunctionCall", - "src": "20612:26:39" - } - ], - "id": 11886, - "name": "VariableDeclarationStatement", - "src": "20588:50:39" - }, - { - "children": [ - { - "attributes": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "operator": "<", - "type": "bool" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 11882, - "type": "uint256", - "value": "currentAmount" - }, - "id": 11887, - "name": "Identifier", - "src": "20657:13:39" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 11806, - "type": "uint256", - "value": "amountToSeize" - }, - "id": 11888, - "name": "Identifier", - "src": "20673:13:39" - } - ], - "id": 11889, - "name": "BinaryOperation", - "src": "20657:29:39" - }, - { - "children": [ - { - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "operator": "=", - "type": "uint256" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 11821, - "type": "uint256", - "value": "totalAmountToBurn" - }, - "id": 11890, - "name": "Identifier", - "src": "20706:17:39" - }, - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [null], - "type": "uint256", - "type_conversion": false - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "member_name": "add", - "referencedDeclaration": 310, - "type": "function (uint256,uint256) pure returns (uint256)" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 11821, - "type": "uint256", - "value": "totalAmountToBurn" - }, - "id": 11891, - "name": "Identifier", - "src": "20726:17:39" - } - ], - "id": 11892, - "name": "MemberAccess", - "src": "20726:21:39" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 11882, - "type": "uint256", - "value": "currentAmount" - }, - "id": 11893, - "name": "Identifier", - "src": "20748:13:39" - } - ], - "id": 11894, - "name": "FunctionCall", - "src": "20726:36:39" - } - ], - "id": 11895, - "name": "Assignment", - "src": "20706:56:39" - } - ], - "id": 11896, - "name": "ExpressionStatement", - "src": "20706:56:39" - }, - { - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "operator": "=", - "type": "uint256" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "member_name": "packedParams", - "referencedDeclaration": 8827, - "type": "uint256" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "type": "struct StakeDelegatable.Operator storage ref" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 8825, - "type": "mapping(address => struct StakeDelegatable.Operator storage ref)", - "value": "operators" - }, - "id": 11897, - "name": "Identifier", - "src": "20780:9:39" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 11842, - "type": "address", - "value": "operator" - }, - "id": 11898, - "name": "Identifier", - "src": "20790:8:39" - } - ], - "id": 11899, - "name": "IndexAccess", - "src": "20780:19:39" - } - ], - "id": 11900, - "name": "MemberAccess", - "src": "20780:32:39" - }, - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [null], - "type": "uint256", - "type_conversion": false - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - } - ], - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "member_name": "setAmount", - "referencedDeclaration": 27930, - "type": "function (uint256,uint256) pure returns (uint256)" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 11857, - "type": "uint256", - "value": "operatorParams" - }, - "id": 11901, - "name": "Identifier", - "src": "20815:14:39" - } - ], - "id": 11902, - "name": "MemberAccess", - "src": "20815:24:39" - }, - { - "attributes": { - "argumentTypes": null, - "hexvalue": "30", - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "subdenomination": null, - "token": "number", - "type": "int_const 0", - "value": "0" - }, - "id": 11903, - "name": "Literal", - "src": "20840:1:39" - } - ], - "id": 11904, - "name": "FunctionCall", - "src": "20815:27:39" - } - ], - "id": 11905, - "name": "Assignment", - "src": "20780:62:39" - } - ], - "id": 11906, - "name": "ExpressionStatement", - "src": "20780:62:39" - }, - { - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [null], - "type": "tuple()", - "type_conversion": false - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "overloadedDeclarations": [null], - "referencedDeclaration": 11067, - "type": "function (address,uint256)", - "value": "TokensSeized" - }, - "id": 11907, - "name": "Identifier", - "src": "20865:12:39" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 11842, - "type": "address", - "value": "operator" - }, - "id": 11908, - "name": "Identifier", - "src": "20878:8:39" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 11882, - "type": "uint256", - "value": "currentAmount" - }, - "id": 11909, - "name": "Identifier", - "src": "20888:13:39" - } - ], - "id": 11910, - "name": "FunctionCall", - "src": "20865:37:39" - } - ], - "id": 11911, - "name": "EmitStatement", - "src": "20860:42:39" - } - ], - "id": 11912, - "name": "Block", - "src": "20688:229:39" - }, - { - "children": [ - { - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "operator": "=", - "type": "uint256" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 11821, - "type": "uint256", - "value": "totalAmountToBurn" - }, - "id": 11913, - "name": "Identifier", - "src": "20941:17:39" - }, - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [null], - "type": "uint256", - "type_conversion": false - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "member_name": "add", - "referencedDeclaration": 310, - "type": "function (uint256,uint256) pure returns (uint256)" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 11821, - "type": "uint256", - "value": "totalAmountToBurn" - }, - "id": 11914, - "name": "Identifier", - "src": "20961:17:39" - } - ], - "id": 11915, - "name": "MemberAccess", - "src": "20961:21:39" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 11806, - "type": "uint256", - "value": "amountToSeize" - }, - "id": 11916, - "name": "Identifier", - "src": "20983:13:39" - } - ], - "id": 11917, - "name": "FunctionCall", - "src": "20961:36:39" - } - ], - "id": 11918, - "name": "Assignment", - "src": "20941:56:39" - } - ], - "id": 11919, - "name": "ExpressionStatement", - "src": "20941:56:39" - }, - { - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "operator": "=", - "type": "uint256" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "member_name": "packedParams", - "referencedDeclaration": 8827, - "type": "uint256" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "type": "struct StakeDelegatable.Operator storage ref" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 8825, - "type": "mapping(address => struct StakeDelegatable.Operator storage ref)", - "value": "operators" - }, - "id": 11920, - "name": "Identifier", - "src": "21015:9:39" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 11842, - "type": "address", - "value": "operator" - }, - "id": 11921, - "name": "Identifier", - "src": "21025:8:39" - } - ], - "id": 11922, - "name": "IndexAccess", - "src": "21015:19:39" - } - ], - "id": 11923, - "name": "MemberAccess", - "src": "21015:32:39" - }, - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [null], - "type": "uint256", - "type_conversion": false - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "member_name": "setAmount", - "referencedDeclaration": 27930, - "type": "function (uint256,uint256) pure returns (uint256)" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 11857, - "type": "uint256", - "value": "operatorParams" - }, - "id": 11924, - "name": "Identifier", - "src": "21050:14:39" - } - ], - "id": 11925, - "name": "MemberAccess", - "src": "21050:24:39" - }, - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [null], - "type": "uint256", - "type_conversion": false - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "member_name": "sub", - "referencedDeclaration": 326, - "type": "function (uint256,uint256) pure returns (uint256)" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 11882, - "type": "uint256", - "value": "currentAmount" - }, - "id": 11926, - "name": "Identifier", - "src": "21096:13:39" - } - ], - "id": 11927, - "name": "MemberAccess", - "src": "21096:17:39" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 11806, - "type": "uint256", - "value": "amountToSeize" - }, - "id": 11928, - "name": "Identifier", - "src": "21114:13:39" - } - ], - "id": 11929, - "name": "FunctionCall", - "src": "21096:32:39" - } - ], - "id": 11930, - "name": "FunctionCall", - "src": "21050:96:39" - } - ], - "id": 11931, - "name": "Assignment", - "src": "21015:131:39" - } - ], - "id": 11932, - "name": "ExpressionStatement", - "src": "21015:131:39" - }, - { - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [null], - "type": "tuple()", - "type_conversion": false - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "overloadedDeclarations": [null], - "referencedDeclaration": 11067, - "type": "function (address,uint256)", - "value": "TokensSeized" - }, - "id": 11933, - "name": "Identifier", - "src": "21169:12:39" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 11842, - "type": "address", - "value": "operator" - }, - "id": 11934, - "name": "Identifier", - "src": "21182:8:39" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 11806, - "type": "uint256", - "value": "amountToSeize" - }, - "id": 11935, - "name": "Identifier", - "src": "21192:13:39" - } - ], - "id": 11936, - "name": "FunctionCall", - "src": "21169:37:39" - } - ], - "id": 11937, - "name": "EmitStatement", - "src": "21164:42:39" - } - ], - "id": 11938, - "name": "Block", - "src": "20923:298:39" - } - ], - "id": 11939, - "name": "IfStatement", - "src": "20653:568:39" - } - ], - "id": 11940, - "name": "Block", - "src": "20101:1130:39" - } - ], - "id": 11941, - "name": "ForStatement", - "src": "20044:1187:39" - }, - { - "attributes": { - "assignments": [11943] - }, - "children": [ - { - "attributes": { - "constant": false, - "name": "tattletaleReward", - "scope": 11969, - "stateVariable": false, - "storageLocation": "default", - "type": "uint256", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "uint256", - "type": "uint256" - }, - "id": 11942, - "name": "ElementaryTypeName", - "src": "21241:7:39" - } - ], - "id": 11943, - "name": "VariableDeclaration", - "src": "21241:24:39" - }, - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [null], - "type": "uint256", - "type_conversion": false - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "member_name": "percent", - "referencedDeclaration": 28042, - "type": "function (uint256,uint256) pure returns (uint256)" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isInlineArray": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "type": "uint256" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [null], - "type": "uint256", - "type_conversion": false - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_rational_5_by_1", - "typeString": "int_const 5" - } - ], - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "member_name": "percent", - "referencedDeclaration": 28042, - "type": "function (uint256,uint256) pure returns (uint256)" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 11821, - "type": "uint256", - "value": "totalAmountToBurn" - }, - "id": 11944, - "name": "Identifier", - "src": "21281:17:39" - } - ], - "id": 11945, - "name": "MemberAccess", - "src": "21281:25:39" - }, - { - "attributes": { - "argumentTypes": null, - "hexvalue": "35", - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "subdenomination": null, - "token": "number", - "type": "int_const 5", - "value": "5" - }, - "id": 11946, - "name": "Literal", - "src": "21307:1:39" - } - ], - "id": 11947, - "name": "FunctionCall", - "src": "21281:28:39" - } - ], - "id": 11948, - "name": "TupleExpression", - "src": "21280:30:39" - } - ], - "id": 11949, - "name": "MemberAccess", - "src": "21280:38:39" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 11808, - "type": "uint256", - "value": "rewardMultiplier" - }, - "id": 11950, - "name": "Identifier", - "src": "21319:16:39" - } - ], - "id": 11951, - "name": "FunctionCall", - "src": "21280:56:39" - } - ], - "id": 11952, - "name": "VariableDeclarationStatement", - "src": "21241:95:39" - }, - { - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [null], - "type": "tuple()", - "type_conversion": false - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "member_name": "safeTransfer", - "referencedDeclaration": 1183, - "type": "function (contract IERC20,address,uint256)" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 11093, - "type": "contract ERC20Burnable", - "value": "token" - }, - "id": 11953, - "name": "Identifier", - "src": "21347:5:39" - } - ], - "id": 11955, - "name": "MemberAccess", - "src": "21347:18:39" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 11810, - "type": "address", - "value": "tattletale" - }, - "id": 11956, - "name": "Identifier", - "src": "21366:10:39" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 11943, - "type": "uint256", - "value": "tattletaleReward" - }, - "id": 11957, - "name": "Identifier", - "src": "21378:16:39" - } - ], - "id": 11958, - "name": "FunctionCall", - "src": "21347:48:39" - } - ], - "id": 11959, - "name": "ExpressionStatement", - "src": "21347:48:39" - }, - { - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [null], - "type": "tuple()", - "type_conversion": false - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "member_name": "burn", - "referencedDeclaration": 1009, - "type": "function (uint256) external" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 11093, - "type": "contract ERC20Burnable", - "value": "token" - }, - "id": 11960, - "name": "Identifier", - "src": "21405:5:39" - } - ], - "id": 11962, - "name": "MemberAccess", - "src": "21405:10:39" - }, - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [null], - "type": "uint256", - "type_conversion": false - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "member_name": "sub", - "referencedDeclaration": 326, - "type": "function (uint256,uint256) pure returns (uint256)" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 11821, - "type": "uint256", - "value": "totalAmountToBurn" - }, - "id": 11963, - "name": "Identifier", - "src": "21416:17:39" - } - ], - "id": 11964, - "name": "MemberAccess", - "src": "21416:21:39" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 11943, - "type": "uint256", - "value": "tattletaleReward" - }, - "id": 11965, - "name": "Identifier", - "src": "21438:16:39" - } - ], - "id": 11966, - "name": "FunctionCall", - "src": "21416:39:39" - } - ], - "id": 11967, - "name": "FunctionCall", - "src": "21405:51:39" - } - ], - "id": 11968, - "name": "ExpressionStatement", - "src": "21405:51:39" - } - ], - "id": 11969, - "name": "Block", - "src": "19933:1530:39" - } - ], - "id": 11970, - "name": "FunctionDefinition", - "src": "19725:1738:39" - }, - { - "attributes": { - "documentation": "@notice Allows the current staking relationship owner to transfer the\n ownership to someone else.\n @param operator Address of the stake operator.\n @param newOwner Address of the new staking relationship owner.", - "implemented": true, - "isConstructor": false, - "kind": "function", - "modifiers": [null], - "name": "transferStakeOwnership", - "scope": 12435, - "stateMutability": "nonpayable", - "superFunction": null, - "visibility": "public" - }, - "children": [ - { - "children": [ - { - "attributes": { - "constant": false, - "name": "operator", - "scope": 12001, - "stateVariable": false, - "storageLocation": "default", - "type": "address", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "address", - "stateMutability": "nonpayable", - "type": "address" - }, - "id": 11971, - "name": "ElementaryTypeName", - "src": "21740:7:39" - } - ], - "id": 11972, - "name": "VariableDeclaration", - "src": "21740:16:39" - }, - { - "attributes": { - "constant": false, - "name": "newOwner", - "scope": 12001, - "stateVariable": false, - "storageLocation": "default", - "type": "address", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "address", - "stateMutability": "nonpayable", - "type": "address" - }, - "id": 11973, - "name": "ElementaryTypeName", - "src": "21758:7:39" - } - ], - "id": 11974, - "name": "VariableDeclaration", - "src": "21758:16:39" - } - ], - "id": 11975, - "name": "ParameterList", - "src": "21739:36:39" - }, - { - "attributes": { - "parameters": [null] - }, - "children": [], - "id": 11976, - "name": "ParameterList", - "src": "21783:0:39" - }, - { - "children": [ - { - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [null], - "type": "tuple()", - "type_conversion": false - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_stringliteral_fac3bac318c0d00994f57b0f2f4c643c313072b71db2302bf4b900309cc50b36", - "typeString": "literal_string \"Not authorized\"" - } - ], - "overloadedDeclarations": [28149, 28150], - "referencedDeclaration": 28150, - "type": "function (bool,string memory) pure", - "value": "require" - }, - "id": 11977, - "name": "Identifier", - "src": "21793:7:39" - }, - { - "attributes": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "operator": "==", - "type": "bool" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "member_name": "sender", - "referencedDeclaration": null, - "type": "address payable" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 28146, - "type": "msg", - "value": "msg" - }, - "id": 11978, - "name": "Identifier", - "src": "21801:3:39" - } - ], - "id": 11979, - "name": "MemberAccess", - "src": "21801:10:39" - }, - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "member_name": "owner", - "referencedDeclaration": 8829, - "type": "address" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "type": "struct StakeDelegatable.Operator storage ref" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 8825, - "type": "mapping(address => struct StakeDelegatable.Operator storage ref)", - "value": "operators" - }, - "id": 11980, - "name": "Identifier", - "src": "21815:9:39" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 11972, - "type": "address", - "value": "operator" - }, - "id": 11981, - "name": "Identifier", - "src": "21825:8:39" - } - ], - "id": 11982, - "name": "IndexAccess", - "src": "21815:19:39" - } - ], - "id": 11983, - "name": "MemberAccess", - "src": "21815:25:39" - } - ], - "id": 11984, - "name": "BinaryOperation", - "src": "21801:39:39" - }, - { - "attributes": { - "argumentTypes": null, - "hexvalue": "4e6f7420617574686f72697a6564", - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "subdenomination": null, - "token": "string", - "type": "literal_string \"Not authorized\"", - "value": "Not authorized" - }, - "id": 11985, - "name": "Literal", - "src": "21842:16:39" - } - ], - "id": 11986, - "name": "FunctionCall", - "src": "21793:66:39" - } - ], - "id": 11987, - "name": "ExpressionStatement", - "src": "21793:66:39" - }, - { - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "operator": "=", - "type": "address" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "member_name": "owner", - "referencedDeclaration": 8829, - "type": "address" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "type": "struct StakeDelegatable.Operator storage ref" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 8825, - "type": "mapping(address => struct StakeDelegatable.Operator storage ref)", - "value": "operators" - }, - "id": 11988, - "name": "Identifier", - "src": "21869:9:39" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 11972, - "type": "address", - "value": "operator" - }, - "id": 11989, - "name": "Identifier", - "src": "21879:8:39" - } - ], - "id": 11990, - "name": "IndexAccess", - "src": "21869:19:39" - } - ], - "id": 11991, - "name": "MemberAccess", - "src": "21869:25:39" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 11974, - "type": "address", - "value": "newOwner" - }, - "id": 11992, - "name": "Identifier", - "src": "21897:8:39" - } - ], - "id": 11993, - "name": "Assignment", - "src": "21869:36:39" - } - ], - "id": 11994, - "name": "ExpressionStatement", - "src": "21869:36:39" - }, - { - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [null], - "type": "tuple()", - "type_conversion": false - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "overloadedDeclarations": [null], - "referencedDeclaration": 11033, - "type": "function (address,address)", - "value": "StakeOwnershipTransferred" - }, - "id": 11995, - "name": "Identifier", - "src": "21920:25:39" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 11972, - "type": "address", - "value": "operator" - }, - "id": 11996, - "name": "Identifier", - "src": "21946:8:39" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 11974, - "type": "address", - "value": "newOwner" - }, - "id": 11997, - "name": "Identifier", - "src": "21956:8:39" - } - ], - "id": 11998, - "name": "FunctionCall", - "src": "21920:45:39" - } - ], - "id": 11999, - "name": "EmitStatement", - "src": "21915:50:39" - } - ], - "id": 12000, - "name": "Block", - "src": "21783:189:39" - } - ], - "id": 12001, - "name": "FunctionDefinition", - "src": "21708:264:39" - }, - { - "attributes": { - "documentation": "@notice Gets the eligible stake balance of the specified address.\n An eligible stake is a stake that passed the initialization period\n and is not currently undelegating. Also, the operator had to approve\n the specified operator contract.\n\n /// Operator with a minimum required amount of eligible stake can join the\n network and participate in new work selection.\n\n /// @param _operator address of stake operator.\n @param _operatorContract address of operator contract.\n @return an uint256 representing the eligible stake balance.", - "implemented": true, - "isConstructor": false, - "kind": "function", - "modifiers": [null], - "name": "eligibleStake", - "scope": 12435, - "stateMutability": "view", - "superFunction": null, - "visibility": "public" - }, - "children": [ - { - "children": [ - { - "attributes": { - "constant": false, - "name": "_operator", - "scope": 12039, - "stateVariable": false, - "storageLocation": "default", - "type": "address", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "address", - "stateMutability": "nonpayable", - "type": "address" - }, - "id": 12002, - "name": "ElementaryTypeName", - "src": "22601:7:39" - } - ], - "id": 12003, - "name": "VariableDeclaration", - "src": "22601:17:39" - }, - { - "attributes": { - "constant": false, - "name": "_operatorContract", - "scope": 12039, - "stateVariable": false, - "storageLocation": "default", - "type": "address", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "address", - "stateMutability": "nonpayable", - "type": "address" - }, - "id": 12004, - "name": "ElementaryTypeName", - "src": "22620:7:39" - } - ], - "id": 12005, - "name": "VariableDeclaration", - "src": "22620:25:39" - } - ], - "id": 12006, - "name": "ParameterList", - "src": "22600:46:39" - }, - { - "children": [ - { - "attributes": { - "constant": false, - "name": "balance", - "scope": 12039, - "stateVariable": false, - "storageLocation": "default", - "type": "uint256", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "uint256", - "type": "uint256" - }, - "id": 12007, - "name": "ElementaryTypeName", - "src": "22692:7:39" - } - ], - "id": 12008, - "name": "VariableDeclaration", - "src": "22692:15:39" - } - ], - "id": 12009, - "name": "ParameterList", - "src": "22691:17:39" - }, - { - "children": [ - { - "attributes": { - "assignments": [12011] - }, - "children": [ - { - "attributes": { - "constant": false, - "name": "operatorParams", - "scope": 12038, - "stateVariable": false, - "storageLocation": "default", - "type": "uint256", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "uint256", - "type": "uint256" - }, - "id": 12010, - "name": "ElementaryTypeName", - "src": "22723:7:39" - } - ], - "id": 12011, - "name": "VariableDeclaration", - "src": "22723:22:39" - }, - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "member_name": "packedParams", - "referencedDeclaration": 8827, - "type": "uint256" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "type": "struct StakeDelegatable.Operator storage ref" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 8825, - "type": "mapping(address => struct StakeDelegatable.Operator storage ref)", - "value": "operators" - }, - "id": 12012, - "name": "Identifier", - "src": "22748:9:39" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 12003, - "type": "address", - "value": "_operator" - }, - "id": 12013, - "name": "Identifier", - "src": "22758:9:39" - } - ], - "id": 12014, - "name": "IndexAccess", - "src": "22748:20:39" - } - ], - "id": 12015, - "name": "MemberAccess", - "src": "22748:33:39" - } - ], - "id": 12016, - "name": "VariableDeclarationStatement", - "src": "22723:58:39" - }, - { - "attributes": { - "falseBody": null - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "operator": "&&", - "type": "bool" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "operator": "&&", - "type": "bool" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [null], - "type": "bool", - "type_conversion": false - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "overloadedDeclarations": [null], - "referencedDeclaration": 1713, - "type": "function (address,address) view returns (bool)", - "value": "isAuthorizedForOperator" - }, - "id": 12017, - "name": "Identifier", - "src": "23223:23:39" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 12003, - "type": "address", - "value": "_operator" - }, - "id": 12018, - "name": "Identifier", - "src": "23247:9:39" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 12005, - "type": "address", - "value": "_operatorContract" - }, - "id": 12019, - "name": "Identifier", - "src": "23258:17:39" - } - ], - "id": 12020, - "name": "FunctionCall", - "src": "23223:53:39" - }, - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [null], - "type": "bool", - "type_conversion": false - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "overloadedDeclarations": [null], - "referencedDeclaration": 12314, - "type": "function (uint256) view returns (bool)", - "value": "_isInitialized" - }, - "id": 12021, - "name": "Identifier", - "src": "23292:14:39" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 12011, - "type": "uint256", - "value": "operatorParams" - }, - "id": 12022, - "name": "Identifier", - "src": "23307:14:39" - } - ], - "id": 12023, - "name": "FunctionCall", - "src": "23292:30:39" - } - ], - "id": 12024, - "name": "BinaryOperation", - "src": "23223:99:39" - }, - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "operator": "!", - "prefix": true, - "type": "bool" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [null], - "type": "bool", - "type_conversion": false - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "overloadedDeclarations": [null], - "referencedDeclaration": 12339, - "type": "function (uint256) view returns (bool)", - "value": "_isUndelegating" - }, - "id": 12025, - "name": "Identifier", - "src": "23339:15:39" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 12011, - "type": "uint256", - "value": "operatorParams" - }, - "id": 12026, - "name": "Identifier", - "src": "23355:14:39" - } - ], - "id": 12027, - "name": "FunctionCall", - "src": "23339:31:39" - } - ], - "id": 12028, - "name": "UnaryOperation", - "src": "23338:32:39" - } - ], - "id": 12029, - "name": "BinaryOperation", - "src": "23223:147:39" - }, - { - "children": [ - { - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "operator": "=", - "type": "uint256" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 12008, - "type": "uint256", - "value": "balance" - }, - "id": 12030, - "name": "Identifier", - "src": "23395:7:39" - }, - { - "attributes": { - "argumentTypes": null, - "arguments": [null], - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [null], - "type": "uint256", - "type_conversion": false - }, - "children": [ - { - "attributes": { - "argumentTypes": [null], - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "member_name": "getAmount", - "referencedDeclaration": 27910, - "type": "function (uint256) pure returns (uint256)" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 12011, - "type": "uint256", - "value": "operatorParams" - }, - "id": 12031, - "name": "Identifier", - "src": "23405:14:39" - } - ], - "id": 12032, - "name": "MemberAccess", - "src": "23405:24:39" - } - ], - "id": 12033, - "name": "FunctionCall", - "src": "23405:26:39" - } - ], - "id": 12034, - "name": "Assignment", - "src": "23395:36:39" - } - ], - "id": 12035, - "name": "ExpressionStatement", - "src": "23395:36:39" - } - ], - "id": 12036, - "name": "Block", - "src": "23381:61:39" - } - ], - "id": 12037, - "name": "IfStatement", - "src": "23206:236:39" - } - ], - "id": 12038, - "name": "Block", - "src": "22713:735:39" - } - ], - "id": 12039, - "name": "FunctionDefinition", - "src": "22578:870:39" - }, - { - "attributes": { - "documentation": "@notice Gets the active stake balance of the specified address.\n An active stake is a stake that passed the initialization period,\n and may be in the process of undelegation\n but has not been released yet,\n either because the undelegation period is not over,\n or because the operator contract has an active lock on the operator.\n Also, the operator had to approve the specified operator contract.\n\n /// The difference between eligible stake is that active stake does not make\n the operator eligible for work selection but it may be still finishing\n earlier work until the stake is released.\n Operator with a minimum required\n amount of active stake can join the network but cannot be selected to any\n new work.\n\n /// @param _operator address of stake operator.\n @param _operatorContract address of operator contract.\n @return an uint256 representing the eligible stake balance.", - "implemented": true, - "isConstructor": false, - "kind": "function", - "modifiers": [null], - "name": "activeStake", - "scope": 12435, - "stateMutability": "view", - "superFunction": null, - "visibility": "public" - }, - "children": [ - { - "children": [ - { - "attributes": { - "constant": false, - "name": "_operator", - "scope": 12079, - "stateVariable": false, - "storageLocation": "default", - "type": "address", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "address", - "stateMutability": "nonpayable", - "type": "address" - }, - "id": 12040, - "name": "ElementaryTypeName", - "src": "24472:7:39" - } - ], - "id": 12041, - "name": "VariableDeclaration", - "src": "24472:17:39" - }, - { - "attributes": { - "constant": false, - "name": "_operatorContract", - "scope": 12079, - "stateVariable": false, - "storageLocation": "default", - "type": "address", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "address", - "stateMutability": "nonpayable", - "type": "address" - }, - "id": 12042, - "name": "ElementaryTypeName", - "src": "24491:7:39" - } - ], - "id": 12043, - "name": "VariableDeclaration", - "src": "24491:25:39" - } - ], - "id": 12044, - "name": "ParameterList", - "src": "24471:46:39" - }, - { - "children": [ - { - "attributes": { - "constant": false, - "name": "balance", - "scope": 12079, - "stateVariable": false, - "storageLocation": "default", - "type": "uint256", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "uint256", - "type": "uint256" - }, - "id": 12045, - "name": "ElementaryTypeName", - "src": "24563:7:39" - } - ], - "id": 12046, - "name": "VariableDeclaration", - "src": "24563:15:39" - } - ], - "id": 12047, - "name": "ParameterList", - "src": "24562:17:39" - }, - { - "children": [ - { - "attributes": { - "assignments": [12049] - }, - "children": [ - { - "attributes": { - "constant": false, - "name": "operatorParams", - "scope": 12078, - "stateVariable": false, - "storageLocation": "default", - "type": "uint256", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "uint256", - "type": "uint256" - }, - "id": 12048, - "name": "ElementaryTypeName", - "src": "24594:7:39" - } - ], - "id": 12049, - "name": "VariableDeclaration", - "src": "24594:22:39" - }, - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "member_name": "packedParams", - "referencedDeclaration": 8827, - "type": "uint256" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "type": "struct StakeDelegatable.Operator storage ref" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 8825, - "type": "mapping(address => struct StakeDelegatable.Operator storage ref)", - "value": "operators" - }, - "id": 12050, - "name": "Identifier", - "src": "24619:9:39" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 12041, - "type": "address", - "value": "_operator" - }, - "id": 12051, - "name": "Identifier", - "src": "24629:9:39" - } - ], - "id": 12052, - "name": "IndexAccess", - "src": "24619:20:39" - } - ], - "id": 12053, - "name": "MemberAccess", - "src": "24619:33:39" - } - ], - "id": 12054, - "name": "VariableDeclarationStatement", - "src": "24594:58:39" - }, - { - "attributes": { - "falseBody": null - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "operator": "&&", - "type": "bool" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "operator": "&&", - "type": "bool" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [null], - "type": "bool", - "type_conversion": false - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "overloadedDeclarations": [null], - "referencedDeclaration": 1713, - "type": "function (address,address) view returns (bool)", - "value": "isAuthorizedForOperator" - }, - "id": 12055, - "name": "Identifier", - "src": "24679:23:39" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 12041, - "type": "address", - "value": "_operator" - }, - "id": 12056, - "name": "Identifier", - "src": "24703:9:39" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 12043, - "type": "address", - "value": "_operatorContract" - }, - "id": 12057, - "name": "Identifier", - "src": "24714:17:39" - } - ], - "id": 12058, - "name": "FunctionCall", - "src": "24679:53:39" - }, - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [null], - "type": "bool", - "type_conversion": false - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "overloadedDeclarations": [null], - "referencedDeclaration": 12314, - "type": "function (uint256) view returns (bool)", - "value": "_isInitialized" - }, - "id": 12059, - "name": "Identifier", - "src": "24748:14:39" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 12049, - "type": "uint256", - "value": "operatorParams" - }, - "id": 12060, - "name": "Identifier", - "src": "24763:14:39" - } - ], - "id": 12061, - "name": "FunctionCall", - "src": "24748:30:39" - } - ], - "id": 12062, - "name": "BinaryOperation", - "src": "24679:99:39" - }, - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "operator": "!", - "prefix": true, - "type": "bool" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [null], - "type": "bool", - "type_conversion": false - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "overloadedDeclarations": [null], - "referencedDeclaration": 12390, - "type": "function (address,uint256,address) view returns (bool)", - "value": "_isStakeReleased" - }, - "id": 12063, - "name": "Identifier", - "src": "24795:16:39" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 12041, - "type": "address", - "value": "_operator" - }, - "id": 12064, - "name": "Identifier", - "src": "24812:9:39" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 12049, - "type": "uint256", - "value": "operatorParams" - }, - "id": 12065, - "name": "Identifier", - "src": "24823:14:39" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 12043, - "type": "address", - "value": "_operatorContract" - }, - "id": 12066, - "name": "Identifier", - "src": "24839:17:39" - } - ], - "id": 12067, - "name": "FunctionCall", - "src": "24795:62:39" - } - ], - "id": 12068, - "name": "UnaryOperation", - "src": "24794:63:39" - } - ], - "id": 12069, - "name": "BinaryOperation", - "src": "24679:178:39" - }, - { - "children": [ - { - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "operator": "=", - "type": "uint256" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 12046, - "type": "uint256", - "value": "balance" - }, - "id": 12070, - "name": "Identifier", - "src": "24882:7:39" - }, - { - "attributes": { - "argumentTypes": null, - "arguments": [null], - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [null], - "type": "uint256", - "type_conversion": false - }, - "children": [ - { - "attributes": { - "argumentTypes": [null], - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "member_name": "getAmount", - "referencedDeclaration": 27910, - "type": "function (uint256) pure returns (uint256)" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 12049, - "type": "uint256", - "value": "operatorParams" - }, - "id": 12071, - "name": "Identifier", - "src": "24892:14:39" - } - ], - "id": 12072, - "name": "MemberAccess", - "src": "24892:24:39" - } - ], - "id": 12073, - "name": "FunctionCall", - "src": "24892:26:39" - } - ], - "id": 12074, - "name": "Assignment", - "src": "24882:36:39" - } - ], - "id": 12075, - "name": "ExpressionStatement", - "src": "24882:36:39" - } - ], - "id": 12076, - "name": "Block", - "src": "24868:61:39" - } - ], - "id": 12077, - "name": "IfStatement", - "src": "24662:267:39" - } - ], - "id": 12078, - "name": "Block", - "src": "24584:351:39" - } - ], - "id": 12079, - "name": "FunctionDefinition", - "src": "24451:484:39" - }, - { - "attributes": { - "documentation": "@notice Checks if the specified account has enough active stake to become\n network operator and that the specified operator contract has been\n authorized for potential slashing.\n\n /// Having the required minimum of active stake makes the operator eligible\n to join the network. If the active stake is not currently undelegating,\n operator is also eligible for work selection.\n\n /// @param staker Staker's address\n @param operatorContract Operator contract's address\n @return True if has enough active stake to participate in the network,\n false otherwise.", - "implemented": true, - "isConstructor": false, - "kind": "function", - "modifiers": [null], - "name": "hasMinimumStake", - "scope": 12435, - "stateMutability": "view", - "superFunction": null, - "visibility": "public" - }, - "children": [ - { - "children": [ - { - "attributes": { - "constant": false, - "name": "staker", - "scope": 12097, - "stateVariable": false, - "storageLocation": "default", - "type": "address", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "address", - "stateMutability": "nonpayable", - "type": "address" - }, - "id": 12080, - "name": "ElementaryTypeName", - "src": "25599:7:39" - } - ], - "id": 12081, - "name": "VariableDeclaration", - "src": "25599:14:39" - }, - { - "attributes": { - "constant": false, - "name": "operatorContract", - "scope": 12097, - "stateVariable": false, - "storageLocation": "default", - "type": "address", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "address", - "stateMutability": "nonpayable", - "type": "address" - }, - "id": 12082, - "name": "ElementaryTypeName", - "src": "25615:7:39" - } - ], - "id": 12083, - "name": "VariableDeclaration", - "src": "25615:24:39" - } - ], - "id": 12084, - "name": "ParameterList", - "src": "25598:42:39" - }, - { - "children": [ - { - "attributes": { - "constant": false, - "name": "", - "scope": 12097, - "stateVariable": false, - "storageLocation": "default", - "type": "bool", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "bool", - "type": "bool" - }, - "id": 12085, - "name": "ElementaryTypeName", - "src": "25686:4:39" - } - ], - "id": 12086, - "name": "VariableDeclaration", - "src": "25686:4:39" - } - ], - "id": 12087, - "name": "ParameterList", - "src": "25685:6:39" - }, - { - "children": [ - { - "attributes": { - "functionReturnParameters": 12087 - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "operator": ">=", - "type": "bool" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [null], - "type": "uint256", - "type_conversion": false - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "overloadedDeclarations": [null], - "referencedDeclaration": 12079, - "type": "function (address,address) view returns (uint256)", - "value": "activeStake" - }, - "id": 12088, - "name": "Identifier", - "src": "25713:11:39" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 12081, - "type": "address", - "value": "staker" - }, - "id": 12089, - "name": "Identifier", - "src": "25725:6:39" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 12083, - "type": "address", - "value": "operatorContract" - }, - "id": 12090, - "name": "Identifier", - "src": "25733:16:39" - } - ], - "id": 12091, - "name": "FunctionCall", - "src": "25713:37:39" - }, - { - "attributes": { - "argumentTypes": null, - "arguments": [null], - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [null], - "type": "uint256", - "type_conversion": false - }, - "children": [ - { - "attributes": { - "argumentTypes": [null], - "overloadedDeclarations": [null], - "referencedDeclaration": 11165, - "type": "function () view returns (uint256)", - "value": "minimumStake" - }, - "id": 12092, - "name": "Identifier", - "src": "25754:12:39" - } - ], - "id": 12093, - "name": "FunctionCall", - "src": "25754:14:39" - } - ], - "id": 12094, - "name": "BinaryOperation", - "src": "25713:55:39" - } - ], - "id": 12095, - "name": "Return", - "src": "25706:62:39" - } - ], - "id": 12096, - "name": "Block", - "src": "25696:79:39" - } - ], - "id": 12097, - "name": "FunctionDefinition", - "src": "25574:201:39" - }, - { - "attributes": { - "documentation": "@notice Delegates tokens to a new operator using beneficiary and\n authorizer passed in _extraData parameter.\n @param _from The owner of the tokens who approved them to transfer.\n @param _value Approved amount for the transfer and stake.\n @param _operator The new operator address.\n @param _extraData Data for stake delegation as passed to receiveApproval.", - "implemented": true, - "isConstructor": false, - "kind": "function", - "modifiers": [null], - "name": "delegate", - "scope": 12435, - "stateMutability": "nonpayable", - "superFunction": null, - "visibility": "internal" - }, - "children": [ - { - "children": [ - { - "attributes": { - "constant": false, - "name": "_from", - "scope": 12176, - "stateVariable": false, - "storageLocation": "default", - "type": "address", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "address", - "stateMutability": "nonpayable", - "type": "address" - }, - "id": 12098, - "name": "ElementaryTypeName", - "src": "26207:7:39" - } - ], - "id": 12099, - "name": "VariableDeclaration", - "src": "26207:13:39" - }, - { - "attributes": { - "constant": false, - "name": "_value", - "scope": 12176, - "stateVariable": false, - "storageLocation": "default", - "type": "uint256", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "uint256", - "type": "uint256" - }, - "id": 12100, - "name": "ElementaryTypeName", - "src": "26230:7:39" - } - ], - "id": 12101, - "name": "VariableDeclaration", - "src": "26230:14:39" - }, - { - "attributes": { - "constant": false, - "name": "_operator", - "scope": 12176, - "stateVariable": false, - "storageLocation": "default", - "type": "address", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "address", - "stateMutability": "nonpayable", - "type": "address" - }, - "id": 12102, - "name": "ElementaryTypeName", - "src": "26254:7:39" - } - ], - "id": 12103, - "name": "VariableDeclaration", - "src": "26254:17:39" - }, - { - "attributes": { - "constant": false, - "name": "_extraData", - "scope": 12176, - "stateVariable": false, - "storageLocation": "memory", - "type": "bytes", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "bytes", - "type": "bytes" - }, - "id": 12104, - "name": "ElementaryTypeName", - "src": "26281:5:39" - } - ], - "id": 12105, - "name": "VariableDeclaration", - "src": "26281:23:39" - } - ], - "id": 12106, - "name": "ParameterList", - "src": "26197:113:39" - }, - { - "attributes": { - "parameters": [null] - }, - "children": [], - "id": 12107, - "name": "ParameterList", - "src": "26320:0:39" - }, - { - "children": [ - { - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [null], - "type": "tuple()", - "type_conversion": false - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_stringliteral_c6d66e5d14df06ecd5772a76d2f19421e7b2d8605daf8bd076cb516603943b67", - "typeString": "literal_string \"Less than the minimum stake\"" - } - ], - "overloadedDeclarations": [28149, 28150], - "referencedDeclaration": 28150, - "type": "function (bool,string memory) pure", - "value": "require" - }, - "id": 12108, - "name": "Identifier", - "src": "26330:7:39" - }, - { - "attributes": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "operator": ">=", - "type": "bool" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 12101, - "type": "uint256", - "value": "_value" - }, - "id": 12109, - "name": "Identifier", - "src": "26338:6:39" - }, - { - "attributes": { - "argumentTypes": null, - "arguments": [null], - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [null], - "type": "uint256", - "type_conversion": false - }, - "children": [ - { - "attributes": { - "argumentTypes": [null], - "overloadedDeclarations": [null], - "referencedDeclaration": 11165, - "type": "function () view returns (uint256)", - "value": "minimumStake" - }, - "id": 12110, - "name": "Identifier", - "src": "26348:12:39" - } - ], - "id": 12111, - "name": "FunctionCall", - "src": "26348:14:39" - } - ], - "id": 12112, - "name": "BinaryOperation", - "src": "26338:24:39" - }, - { - "attributes": { - "argumentTypes": null, - "hexvalue": "4c657373207468616e20746865206d696e696d756d207374616b65", - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "subdenomination": null, - "token": "string", - "type": "literal_string \"Less than the minimum stake\"", - "value": "Less than the minimum stake" - }, - "id": 12113, - "name": "Literal", - "src": "26364:29:39" - } - ], - "id": 12114, - "name": "FunctionCall", - "src": "26330:64:39" - } - ], - "id": 12115, - "name": "ExpressionStatement", - "src": "26330:64:39" - }, - { - "attributes": { - "assignments": [12117] - }, - "children": [ - { - "attributes": { - "constant": false, - "name": "beneficiary", - "scope": 12175, - "stateVariable": false, - "storageLocation": "default", - "type": "address payable", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "address", - "stateMutability": "payable", - "type": "address payable" - }, - "id": 12116, - "name": "ElementaryTypeName", - "src": "26405:15:39" - } - ], - "id": 12117, - "name": "VariableDeclaration", - "src": "26405:27:39" - }, - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [null], - "type": "address payable", - "type_conversion": true - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint160", - "typeString": "uint160" - } - ], - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "type": "type(address)", - "value": "address" - }, - "id": 12118, - "name": "ElementaryTypeNameExpression", - "src": "26435:7:39" - }, - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [null], - "type": "uint160", - "type_conversion": true - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "type": "type(uint160)", - "value": "uint160" - }, - "id": 12119, - "name": "ElementaryTypeNameExpression", - "src": "26443:7:39" - }, - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [null], - "type": "address", - "type_conversion": false - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - } - ], - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "member_name": "toAddress", - "referencedDeclaration": 27348, - "type": "function (bytes memory,uint256) pure returns (address)" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 12105, - "type": "bytes memory", - "value": "_extraData" - }, - "id": 12120, - "name": "Identifier", - "src": "26451:10:39" - } - ], - "id": 12121, - "name": "MemberAccess", - "src": "26451:20:39" - }, - { - "attributes": { - "argumentTypes": null, - "hexvalue": "30", - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "subdenomination": null, - "token": "number", - "type": "int_const 0", - "value": "0" - }, - "id": 12122, - "name": "Literal", - "src": "26472:1:39" - } - ], - "id": 12123, - "name": "FunctionCall", - "src": "26451:23:39" - } - ], - "id": 12124, - "name": "FunctionCall", - "src": "26443:32:39" - } - ], - "id": 12125, - "name": "FunctionCall", - "src": "26435:41:39" - } - ], - "id": 12126, - "name": "VariableDeclarationStatement", - "src": "26405:71:39" - }, - { - "attributes": { - "assignments": [12128] - }, - "children": [ - { - "attributes": { - "constant": false, - "name": "authorizer", - "scope": 12175, - "stateVariable": false, - "storageLocation": "default", - "type": "address", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "address", - "stateMutability": "nonpayable", - "type": "address" - }, - "id": 12127, - "name": "ElementaryTypeName", - "src": "26486:7:39" - } - ], - "id": 12128, - "name": "VariableDeclaration", - "src": "26486:18:39" - }, - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [null], - "type": "address", - "type_conversion": false - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_rational_40_by_1", - "typeString": "int_const 40" - } - ], - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "member_name": "toAddress", - "referencedDeclaration": 27348, - "type": "function (bytes memory,uint256) pure returns (address)" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 12105, - "type": "bytes memory", - "value": "_extraData" - }, - "id": 12129, - "name": "Identifier", - "src": "26507:10:39" - } - ], - "id": 12130, - "name": "MemberAccess", - "src": "26507:20:39" - }, - { - "attributes": { - "argumentTypes": null, - "hexvalue": "3430", - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "subdenomination": null, - "token": "number", - "type": "int_const 40", - "value": "40" - }, - "id": 12131, - "name": "Literal", - "src": "26528:2:39" - } - ], - "id": 12132, - "name": "FunctionCall", - "src": "26507:24:39" - } - ], - "id": 12133, - "name": "VariableDeclarationStatement", - "src": "26486:45:39" - }, - { - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "operator": "=", - "type": "struct StakeDelegatable.Operator storage ref" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "type": "struct StakeDelegatable.Operator storage ref" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 8825, - "type": "mapping(address => struct StakeDelegatable.Operator storage ref)", - "value": "operators" - }, - "id": 12134, - "name": "Identifier", - "src": "26542:9:39" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 12103, - "type": "address", - "value": "_operator" - }, - "id": 12135, - "name": "Identifier", - "src": "26552:9:39" - } - ], - "id": 12136, - "name": "IndexAccess", - "src": "26542:20:39" - }, - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": true, - "lValueRequested": false, - "names": [null], - "type": "struct StakeDelegatable.Operator memory", - "type_conversion": false - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_address_payable", - "typeString": "address payable" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "overloadedDeclarations": [null], - "referencedDeclaration": 8834, - "type": "type(struct StakeDelegatable.Operator storage pointer)", - "value": "Operator" - }, - "id": 12137, - "name": "Identifier", - "src": "26565:8:39" - }, - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [null], - "type": "uint256", - "type_conversion": false - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - } - ], - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "member_name": "pack", - "referencedDeclaration": 27865, - "type": "function (uint256,uint256,uint256) pure returns (uint256)" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 28018, - "type": "type(library OperatorParams)", - "value": "OperatorParams" - }, - "id": 12138, - "name": "Identifier", - "src": "26587:14:39" - } - ], - "id": 12139, - "name": "MemberAccess", - "src": "26587:19:39" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 12101, - "type": "uint256", - "value": "_value" - }, - "id": 12140, - "name": "Identifier", - "src": "26607:6:39" - }, - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "member_name": "timestamp", - "referencedDeclaration": null, - "type": "uint256" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 28136, - "type": "block", - "value": "block" - }, - "id": 12141, - "name": "Identifier", - "src": "26615:5:39" - } - ], - "id": 12142, - "name": "MemberAccess", - "src": "26615:15:39" - }, - { - "attributes": { - "argumentTypes": null, - "hexvalue": "30", - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "subdenomination": null, - "token": "number", - "type": "int_const 0", - "value": "0" - }, - "id": 12143, - "name": "Literal", - "src": "26632:1:39" - } - ], - "id": 12144, - "name": "FunctionCall", - "src": "26587:47:39" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 12099, - "type": "address", - "value": "_from" - }, - "id": 12145, - "name": "Identifier", - "src": "26648:5:39" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 12117, - "type": "address payable", - "value": "beneficiary" - }, - "id": 12146, - "name": "Identifier", - "src": "26667:11:39" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 12128, - "type": "address", - "value": "authorizer" - }, - "id": 12147, - "name": "Identifier", - "src": "26692:10:39" - } - ], - "id": 12148, - "name": "FunctionCall", - "src": "26565:147:39" - } - ], - "id": 12149, - "name": "Assignment", - "src": "26542:170:39" - } - ], - "id": 12150, - "name": "ExpressionStatement", - "src": "26542:170:39" - }, - { - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [null], - "type": "tuple(bool,uint256)", - "type_conversion": false - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_contract$_TokenGrant_$10702", - "typeString": "contract TokenGrant" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - ], - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "member_name": "tryCapturingDelegationData", - "referencedDeclaration": 19288, - "type": "function (struct GrantStaking.Storage storage pointer,contract TokenGrant,address,address,address,bytes memory) returns (bool,uint256)" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 11099, - "type": "struct GrantStaking.Storage storage ref", - "value": "grantStaking" - }, - "id": 12151, - "name": "Identifier", - "src": "26723:12:39" - } - ], - "id": 12153, - "name": "MemberAccess", - "src": "26723:39:39" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 11095, - "type": "contract TokenGrant", - "value": "tokenGrant" - }, - "id": 12154, - "name": "Identifier", - "src": "26776:10:39" - }, - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [null], - "type": "address", - "type_conversion": true - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_contract$_TokenStakingEscrow_$13399", - "typeString": "contract TokenStakingEscrow" - } - ], - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "type": "type(address)", - "value": "address" - }, - "id": 12155, - "name": "ElementaryTypeNameExpression", - "src": "26800:7:39" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 11097, - "type": "contract TokenStakingEscrow", - "value": "escrow" - }, - "id": 12156, - "name": "Identifier", - "src": "26808:6:39" - } - ], - "id": 12157, - "name": "FunctionCall", - "src": "26800:15:39" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 12099, - "type": "address", - "value": "_from" - }, - "id": 12158, - "name": "Identifier", - "src": "26829:5:39" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 12103, - "type": "address", - "value": "_operator" - }, - "id": 12159, - "name": "Identifier", - "src": "26848:9:39" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 12105, - "type": "bytes memory", - "value": "_extraData" - }, - "id": 12160, - "name": "Identifier", - "src": "26871:10:39" - } - ], - "id": 12161, - "name": "FunctionCall", - "src": "26723:168:39" - } - ], - "id": 12162, - "name": "ExpressionStatement", - "src": "26723:168:39" - }, - { - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [null], - "type": "tuple()", - "type_conversion": false - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "overloadedDeclarations": [null], - "referencedDeclaration": 11017, - "type": "function (address,address)", - "value": "StakeDelegated" - }, - "id": 12163, - "name": "Identifier", - "src": "26907:14:39" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 12099, - "type": "address", - "value": "_from" - }, - "id": 12164, - "name": "Identifier", - "src": "26922:5:39" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 12103, - "type": "address", - "value": "_operator" - }, - "id": 12165, - "name": "Identifier", - "src": "26929:9:39" - } - ], - "id": 12166, - "name": "FunctionCall", - "src": "26907:32:39" - } - ], - "id": 12167, - "name": "EmitStatement", - "src": "26902:37:39" - }, - { - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [null], - "type": "tuple()", - "type_conversion": false - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_address_payable", - "typeString": "address payable" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "overloadedDeclarations": [null], - "referencedDeclaration": 11027, - "type": "function (address,address,address,uint256)", - "value": "OperatorStaked" - }, - "id": 12168, - "name": "Identifier", - "src": "26954:14:39" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 12103, - "type": "address", - "value": "_operator" - }, - "id": 12169, - "name": "Identifier", - "src": "26969:9:39" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 12117, - "type": "address payable", - "value": "beneficiary" - }, - "id": 12170, - "name": "Identifier", - "src": "26980:11:39" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 12128, - "type": "address", - "value": "authorizer" - }, - "id": 12171, - "name": "Identifier", - "src": "26993:10:39" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 12101, - "type": "uint256", - "value": "_value" - }, - "id": 12172, - "name": "Identifier", - "src": "27005:6:39" - } - ], - "id": 12173, - "name": "FunctionCall", - "src": "26954:58:39" - } - ], - "id": 12174, - "name": "EmitStatement", - "src": "26949:63:39" - } - ], - "id": 12175, - "name": "Block", - "src": "26320:699:39" - } - ], - "id": 12176, - "name": "FunctionDefinition", - "src": "26180:839:39" - }, - { - "attributes": { - "documentation": "@notice Performs top-up to an existing operator. Tokens added during\n stake initialization period are immediatelly added to the stake and\n stake initialization timer is reset to the current block. Tokens added\n in a top-up after the stake initialization period is over are not\n included in the operator stake until the initialization period for\n a top-up passes and top-up is committed. Operator must not have the stake\n undelegated. It is expected that the top-up is done from the same source\n of tokens as the initial delegation. That is, if the tokens were\n delegated from a grant, top-up has to be performed from the same grant.\n If the delegation was done using liquid tokens, only liquid tokens from\n the same owner can be used to top-up the stake.\n Top-up can not be cancelled so it is important to be careful with the\n amount of KEEP added to the stake.\n @param _from The owner of the tokens who approved them to transfer.\n @param _value Approved amount for the transfer and top-up to\n an existing stake.\n @param _operator The new operator address.\n @param _extraData Data for stake delegation as passed to receiveApproval", - "implemented": true, - "isConstructor": false, - "kind": "function", - "modifiers": [null], - "name": "topUp", - "scope": 12435, - "stateMutability": "nonpayable", - "superFunction": null, - "visibility": "internal" - }, - "children": [ - { - "children": [ - { - "attributes": { - "constant": false, - "name": "_from", - "scope": 12296, - "stateVariable": false, - "storageLocation": "default", - "type": "address", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "address", - "stateMutability": "nonpayable", - "type": "address" - }, - "id": 12177, - "name": "ElementaryTypeName", - "src": "28307:7:39" - } - ], - "id": 12178, - "name": "VariableDeclaration", - "src": "28307:13:39" - }, - { - "attributes": { - "constant": false, - "name": "_value", - "scope": 12296, - "stateVariable": false, - "storageLocation": "default", - "type": "uint256", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "uint256", - "type": "uint256" - }, - "id": 12179, - "name": "ElementaryTypeName", - "src": "28330:7:39" - } - ], - "id": 12180, - "name": "VariableDeclaration", - "src": "28330:14:39" - }, - { - "attributes": { - "constant": false, - "name": "_operator", - "scope": 12296, - "stateVariable": false, - "storageLocation": "default", - "type": "address", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "address", - "stateMutability": "nonpayable", - "type": "address" - }, - "id": 12181, - "name": "ElementaryTypeName", - "src": "28354:7:39" - } - ], - "id": 12182, - "name": "VariableDeclaration", - "src": "28354:17:39" - }, - { - "attributes": { - "constant": false, - "name": "_extraData", - "scope": 12296, - "stateVariable": false, - "storageLocation": "memory", - "type": "bytes", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "bytes", - "type": "bytes" - }, - "id": 12183, - "name": "ElementaryTypeName", - "src": "28381:5:39" - } - ], - "id": 12184, - "name": "VariableDeclaration", - "src": "28381:23:39" - } - ], - "id": 12185, - "name": "ParameterList", - "src": "28297:113:39" - }, - { - "attributes": { - "parameters": [null] - }, - "children": [], - "id": 12186, - "name": "ParameterList", - "src": "28420:0:39" - }, - { - "children": [ - { - "attributes": { - "assignments": [12188] - }, - "children": [ - { - "attributes": { - "constant": false, - "name": "isFromGrant", - "scope": 12295, - "stateVariable": false, - "storageLocation": "default", - "type": "bool", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "bool", - "type": "bool" - }, - "id": 12187, - "name": "ElementaryTypeName", - "src": "28609:4:39" - } - ], - "id": 12188, - "name": "VariableDeclaration", - "src": "28609:16:39" - }, - { - "attributes": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "operator": "||", - "type": "bool" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "operator": "==", - "type": "bool" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [null], - "type": "address", - "type_conversion": true - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_contract$_TokenGrantStake_$10959", - "typeString": "contract TokenGrantStake" - } - ], - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "type": "type(address)", - "value": "address" - }, - "id": 12189, - "name": "ElementaryTypeNameExpression", - "src": "28640:7:39" - }, - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [null], - "type": "contract TokenGrantStake", - "type_conversion": false - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "member_name": "grantStakes", - "referencedDeclaration": 9535, - "type": "function (address) view external returns (contract TokenGrantStake)" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 11095, - "type": "contract TokenGrant", - "value": "tokenGrant" - }, - "id": 12190, - "name": "Identifier", - "src": "28648:10:39" - } - ], - "id": 12191, - "name": "MemberAccess", - "src": "28648:22:39" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 12182, - "type": "address", - "value": "_operator" - }, - "id": 12192, - "name": "Identifier", - "src": "28671:9:39" - } - ], - "id": 12193, - "name": "FunctionCall", - "src": "28648:33:39" - } - ], - "id": 12194, - "name": "FunctionCall", - "src": "28640:42:39" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 12178, - "type": "address", - "value": "_from" - }, - "id": 12195, - "name": "Identifier", - "src": "28686:5:39" - } - ], - "id": 12196, - "name": "BinaryOperation", - "src": "28640:51:39" - }, - { - "attributes": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "operator": "==", - "type": "bool" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [null], - "type": "address", - "type_conversion": true - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_contract$_TokenStakingEscrow_$13399", - "typeString": "contract TokenStakingEscrow" - } - ], - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "type": "type(address)", - "value": "address" - }, - "id": 12197, - "name": "ElementaryTypeNameExpression", - "src": "28711:7:39" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 11097, - "type": "contract TokenStakingEscrow", - "value": "escrow" - }, - "id": 12198, - "name": "Identifier", - "src": "28719:6:39" - } - ], - "id": 12199, - "name": "FunctionCall", - "src": "28711:15:39" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 12178, - "type": "address", - "value": "_from" - }, - "id": 12200, - "name": "Identifier", - "src": "28730:5:39" - } - ], - "id": 12201, - "name": "BinaryOperation", - "src": "28711:24:39" - } - ], - "id": 12202, - "name": "BinaryOperation", - "src": "28640:95:39" - } - ], - "id": 12203, - "name": "VariableDeclarationStatement", - "src": "28609:126:39" - }, - { - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [null], - "type": "bool", - "type_conversion": false - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "member_name": "hasGrantDelegated", - "referencedDeclaration": 19375, - "type": "function (struct GrantStaking.Storage storage pointer,address) view returns (bool)" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 11099, - "type": "struct GrantStaking.Storage storage ref", - "value": "grantStaking" - }, - "id": 12204, - "name": "Identifier", - "src": "28750:12:39" - } - ], - "id": 12205, - "name": "MemberAccess", - "src": "28750:30:39" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 12182, - "type": "address", - "value": "_operator" - }, - "id": 12206, - "name": "Identifier", - "src": "28781:9:39" - } - ], - "id": 12207, - "name": "FunctionCall", - "src": "28750:41:39" - }, - { - "children": [ - { - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [null], - "type": "tuple()", - "type_conversion": false - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_stringliteral_d1092761cfc456a4049616698cd1b06c91dd92ec092d312d87b620e0d3f83679", - "typeString": "literal_string \"Must be from a grant\"" - } - ], - "overloadedDeclarations": [28149, 28150], - "referencedDeclaration": 28150, - "type": "function (bool,string memory) pure", - "value": "require" - }, - "id": 12208, - "name": "Identifier", - "src": "28928:7:39" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 12188, - "type": "bool", - "value": "isFromGrant" - }, - "id": 12209, - "name": "Identifier", - "src": "28936:11:39" - }, - { - "attributes": { - "argumentTypes": null, - "hexvalue": "4d7573742062652066726f6d2061206772616e74", - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "subdenomination": null, - "token": "string", - "type": "literal_string \"Must be from a grant\"", - "value": "Must be from a grant" - }, - "id": 12210, - "name": "Literal", - "src": "28949:22:39" - } - ], - "id": 12211, - "name": "FunctionCall", - "src": "28928:44:39" - } - ], - "id": 12212, - "name": "ExpressionStatement", - "src": "28928:44:39" - }, - { - "attributes": { - "assignments": [12214] - }, - "children": [ - { - "attributes": { - "constant": false, - "name": "previousGrantId", - "scope": 12240, - "stateVariable": false, - "storageLocation": "default", - "type": "uint256", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "uint256", - "type": "uint256" - }, - "id": 12213, - "name": "ElementaryTypeName", - "src": "29171:7:39" - } - ], - "id": 12214, - "name": "VariableDeclaration", - "src": "29171:23:39" - }, - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [null], - "type": "uint256", - "type_conversion": false - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "member_name": "getGrantForOperator", - "referencedDeclaration": 19423, - "type": "function (struct GrantStaking.Storage storage pointer,address) view returns (uint256)" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 11099, - "type": "struct GrantStaking.Storage storage ref", - "value": "grantStaking" - }, - "id": 12215, - "name": "Identifier", - "src": "29213:12:39" - } - ], - "id": 12216, - "name": "MemberAccess", - "src": "29213:32:39" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 12182, - "type": "address", - "value": "_operator" - }, - "id": 12217, - "name": "Identifier", - "src": "29246:9:39" - } - ], - "id": 12218, - "name": "FunctionCall", - "src": "29213:43:39" - } - ], - "id": 12219, - "name": "VariableDeclarationStatement", - "src": "29171:85:39" - }, - { - "attributes": { - "assignments": [null, 12221] - }, - "children": [ - { - "attributes": { - "constant": false, - "name": "grantId", - "scope": 12240, - "stateVariable": false, - "storageLocation": "default", - "type": "uint256", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "uint256", - "type": "uint256" - }, - "id": 12220, - "name": "ElementaryTypeName", - "src": "29273:7:39" - } - ], - "id": 12221, - "name": "VariableDeclaration", - "src": "29273:15:39" - }, - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [null], - "type": "tuple(bool,uint256)", - "type_conversion": false - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_contract$_TokenGrant_$10702", - "typeString": "contract TokenGrant" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - ], - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "member_name": "tryCapturingDelegationData", - "referencedDeclaration": 19288, - "type": "function (struct GrantStaking.Storage storage pointer,contract TokenGrant,address,address,address,bytes memory) returns (bool,uint256)" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 11099, - "type": "struct GrantStaking.Storage storage ref", - "value": "grantStaking" - }, - "id": 12222, - "name": "Identifier", - "src": "29308:12:39" - } - ], - "id": 12223, - "name": "MemberAccess", - "src": "29308:39:39" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 11095, - "type": "contract TokenGrant", - "value": "tokenGrant" - }, - "id": 12224, - "name": "Identifier", - "src": "29369:10:39" - }, - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [null], - "type": "address", - "type_conversion": true - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_contract$_TokenStakingEscrow_$13399", - "typeString": "contract TokenStakingEscrow" - } - ], - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "type": "type(address)", - "value": "address" - }, - "id": 12225, - "name": "ElementaryTypeNameExpression", - "src": "29401:7:39" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 11097, - "type": "contract TokenStakingEscrow", - "value": "escrow" - }, - "id": 12226, - "name": "Identifier", - "src": "29409:6:39" - } - ], - "id": 12227, - "name": "FunctionCall", - "src": "29401:15:39" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 12178, - "type": "address", - "value": "_from" - }, - "id": 12228, - "name": "Identifier", - "src": "29438:5:39" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 12182, - "type": "address", - "value": "_operator" - }, - "id": 12229, - "name": "Identifier", - "src": "29465:9:39" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 12184, - "type": "bytes memory", - "value": "_extraData" - }, - "id": 12230, - "name": "Identifier", - "src": "29496:10:39" - } - ], - "id": 12231, - "name": "FunctionCall", - "src": "29308:216:39" - } - ], - "id": 12232, - "name": "VariableDeclarationStatement", - "src": "29270:254:39" - }, - { - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [null], - "type": "tuple()", - "type_conversion": false - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_stringliteral_5f4a017829f7ac8e7cd46d1e5459ee834992c2456444c7e65c7080dfdc63201b", - "typeString": "literal_string \"Not the same grant\"" - } - ], - "overloadedDeclarations": [28149, 28150], - "referencedDeclaration": 28150, - "type": "function (bool,string memory) pure", - "value": "require" - }, - "id": 12233, - "name": "Identifier", - "src": "29538:7:39" - }, - { - "attributes": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "operator": "==", - "type": "bool" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 12221, - "type": "uint256", - "value": "grantId" - }, - "id": 12234, - "name": "Identifier", - "src": "29546:7:39" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 12214, - "type": "uint256", - "value": "previousGrantId" - }, - "id": 12235, - "name": "Identifier", - "src": "29557:15:39" - } - ], - "id": 12236, - "name": "BinaryOperation", - "src": "29546:26:39" - }, - { - "attributes": { - "argumentTypes": null, - "hexvalue": "4e6f74207468652073616d65206772616e74", - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "subdenomination": null, - "token": "string", - "type": "literal_string \"Not the same grant\"", - "value": "Not the same grant" - }, - "id": 12237, - "name": "Literal", - "src": "29574:20:39" - } - ], - "id": 12238, - "name": "FunctionCall", - "src": "29538:57:39" - } - ], - "id": 12239, - "name": "ExpressionStatement", - "src": "29538:57:39" - } - ], - "id": 12240, - "name": "Block", - "src": "28793:813:39" - }, - { - "children": [ - { - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [null], - "type": "tuple()", - "type_conversion": false - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_stringliteral_2b9e7062844df2b17b3c62e7b067e153f062dbc06025785a7c52346348124675", - "typeString": "literal_string \"Must not be from a grant\"" - } - ], - "overloadedDeclarations": [28149, 28150], - "referencedDeclaration": 28150, - "type": "function (bool,string memory) pure", - "value": "require" - }, - "id": 12241, - "name": "Identifier", - "src": "29769:7:39" - }, - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "operator": "!", - "prefix": true, - "type": "bool" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 12188, - "type": "bool", - "value": "isFromGrant" - }, - "id": 12242, - "name": "Identifier", - "src": "29778:11:39" - } - ], - "id": 12243, - "name": "UnaryOperation", - "src": "29777:12:39" - }, - { - "attributes": { - "argumentTypes": null, - "hexvalue": "4d757374206e6f742062652066726f6d2061206772616e74", - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "subdenomination": null, - "token": "string", - "type": "literal_string \"Must not be from a grant\"", - "value": "Must not be from a grant" - }, - "id": 12244, - "name": "Literal", - "src": "29791:26:39" - } - ], - "id": 12245, - "name": "FunctionCall", - "src": "29769:49:39" - } - ], - "id": 12246, - "name": "ExpressionStatement", - "src": "29769:49:39" - }, - { - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [null], - "type": "tuple()", - "type_conversion": false - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_stringliteral_12e166bf4abcc24bd437fb26ce6b782ef4c55db948e745833feb167d0bd16206", - "typeString": "literal_string \"Not the same owner\"" - } - ], - "overloadedDeclarations": [28149, 28150], - "referencedDeclaration": 28150, - "type": "function (bool,string memory) pure", - "value": "require" - }, - "id": 12247, - "name": "Identifier", - "src": "29832:7:39" - }, - { - "attributes": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "operator": "==", - "type": "bool" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "member_name": "owner", - "referencedDeclaration": 8829, - "type": "address" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "type": "struct StakeDelegatable.Operator storage ref" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 8825, - "type": "mapping(address => struct StakeDelegatable.Operator storage ref)", - "value": "operators" - }, - "id": 12248, - "name": "Identifier", - "src": "29840:9:39" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 12182, - "type": "address", - "value": "_operator" - }, - "id": 12249, - "name": "Identifier", - "src": "29850:9:39" - } - ], - "id": 12250, - "name": "IndexAccess", - "src": "29840:20:39" - } - ], - "id": 12251, - "name": "MemberAccess", - "src": "29840:26:39" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 12178, - "type": "address", - "value": "_from" - }, - "id": 12252, - "name": "Identifier", - "src": "29870:5:39" - } - ], - "id": 12253, - "name": "BinaryOperation", - "src": "29840:35:39" - }, - { - "attributes": { - "argumentTypes": null, - "hexvalue": "4e6f74207468652073616d65206f776e6572", - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "subdenomination": null, - "token": "string", - "type": "literal_string \"Not the same owner\"", - "value": "Not the same owner" - }, - "id": 12254, - "name": "Literal", - "src": "29877:20:39" - } - ], - "id": 12255, - "name": "FunctionCall", - "src": "29832:66:39" - } - ], - "id": 12256, - "name": "ExpressionStatement", - "src": "29832:66:39" - } - ], - "id": 12257, - "name": "Block", - "src": "29612:297:39" - } - ], - "id": 12258, - "name": "IfStatement", - "src": "28746:1163:39" - }, - { - "attributes": { - "assignments": [12260] - }, - "children": [ - { - "attributes": { - "constant": false, - "name": "operatorParams", - "scope": 12295, - "stateVariable": false, - "storageLocation": "default", - "type": "uint256", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "uint256", - "type": "uint256" - }, - "id": 12259, - "name": "ElementaryTypeName", - "src": "29919:7:39" - } - ], - "id": 12260, - "name": "VariableDeclaration", - "src": "29919:22:39" - }, - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "member_name": "packedParams", - "referencedDeclaration": 8827, - "type": "uint256" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "type": "struct StakeDelegatable.Operator storage ref" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 8825, - "type": "mapping(address => struct StakeDelegatable.Operator storage ref)", - "value": "operators" - }, - "id": 12261, - "name": "Identifier", - "src": "29944:9:39" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 12182, - "type": "address", - "value": "_operator" - }, - "id": 12262, - "name": "Identifier", - "src": "29954:9:39" - } - ], - "id": 12263, - "name": "IndexAccess", - "src": "29944:20:39" - } - ], - "id": 12264, - "name": "MemberAccess", - "src": "29944:33:39" - } - ], - "id": 12265, - "name": "VariableDeclarationStatement", - "src": "29919:58:39" - }, - { - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "operator": "!", - "prefix": true, - "type": "bool" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [null], - "type": "bool", - "type_conversion": false - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "overloadedDeclarations": [null], - "referencedDeclaration": 12314, - "type": "function (uint256) view returns (bool)", - "value": "_isInitialized" - }, - "id": 12266, - "name": "Identifier", - "src": "29992:14:39" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 12260, - "type": "uint256", - "value": "operatorParams" - }, - "id": 12267, - "name": "Identifier", - "src": "30007:14:39" - } - ], - "id": 12268, - "name": "FunctionCall", - "src": "29992:30:39" - } - ], - "id": 12269, - "name": "UnaryOperation", - "src": "29991:31:39" - }, - { - "children": [ - { - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "operator": "=", - "type": "uint256" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "member_name": "packedParams", - "referencedDeclaration": 8827, - "type": "uint256" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "type": "struct StakeDelegatable.Operator storage ref" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 8825, - "type": "mapping(address => struct StakeDelegatable.Operator storage ref)", - "value": "operators" - }, - "id": 12270, - "name": "Identifier", - "src": "30184:9:39" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 12182, - "type": "address", - "value": "_operator" - }, - "id": 12271, - "name": "Identifier", - "src": "30194:9:39" - } - ], - "id": 12272, - "name": "IndexAccess", - "src": "30184:20:39" - } - ], - "id": 12273, - "name": "MemberAccess", - "src": "30184:33:39" - }, - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [null], - "type": "uint256", - "type_conversion": false - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_contract$_TokenStakingEscrow_$13399", - "typeString": "contract TokenStakingEscrow" - } - ], - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "member_name": "instantComplete", - "referencedDeclaration": 20214, - "type": "function (struct TopUps.Storage storage pointer,uint256,address,uint256,contract TokenStakingEscrow) returns (uint256)" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 11103, - "type": "struct TopUps.Storage storage ref", - "value": "topUps" - }, - "id": 12274, - "name": "Identifier", - "src": "30220:6:39" - } - ], - "id": 12275, - "name": "MemberAccess", - "src": "30220:22:39" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 12180, - "type": "uint256", - "value": "_value" - }, - "id": 12276, - "name": "Identifier", - "src": "30260:6:39" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 12182, - "type": "address", - "value": "_operator" - }, - "id": 12277, - "name": "Identifier", - "src": "30284:9:39" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 12260, - "type": "uint256", - "value": "operatorParams" - }, - "id": 12278, - "name": "Identifier", - "src": "30311:14:39" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 11097, - "type": "contract TokenStakingEscrow", - "value": "escrow" - }, - "id": 12279, - "name": "Identifier", - "src": "30343:6:39" - } - ], - "id": 12280, - "name": "FunctionCall", - "src": "30220:143:39" - } - ], - "id": 12281, - "name": "Assignment", - "src": "30184:179:39" - } - ], - "id": 12282, - "name": "ExpressionStatement", - "src": "30184:179:39" - } - ], - "id": 12283, - "name": "Block", - "src": "30024:350:39" - }, - { - "children": [ - { - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [null], - "type": "tuple()", - "type_conversion": false - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_contract$_TokenStakingEscrow_$13399", - "typeString": "contract TokenStakingEscrow" - } - ], - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "member_name": "initiate", - "referencedDeclaration": 20279, - "type": "function (struct TopUps.Storage storage pointer,uint256,address,uint256,contract TokenStakingEscrow)" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 11103, - "type": "struct TopUps.Storage storage ref", - "value": "topUps" - }, - "id": 12284, - "name": "Identifier", - "src": "30616:6:39" - } - ], - "id": 12286, - "name": "MemberAccess", - "src": "30616:15:39" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 12180, - "type": "uint256", - "value": "_value" - }, - "id": 12287, - "name": "Identifier", - "src": "30632:6:39" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 12182, - "type": "address", - "value": "_operator" - }, - "id": 12288, - "name": "Identifier", - "src": "30640:9:39" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 12260, - "type": "uint256", - "value": "operatorParams" - }, - "id": 12289, - "name": "Identifier", - "src": "30651:14:39" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 11097, - "type": "contract TokenStakingEscrow", - "value": "escrow" - }, - "id": 12290, - "name": "Identifier", - "src": "30667:6:39" - } - ], - "id": 12291, - "name": "FunctionCall", - "src": "30616:58:39" - } - ], - "id": 12292, - "name": "ExpressionStatement", - "src": "30616:58:39" - } - ], - "id": 12293, - "name": "Block", - "src": "30380:305:39" - } - ], - "id": 12294, - "name": "IfStatement", - "src": "29987:698:39" - } - ], - "id": 12295, - "name": "Block", - "src": "28420:2271:39" - } - ], - "id": 12296, - "name": "FunctionDefinition", - "src": "28283:2408:39" - }, - { - "attributes": { - "documentation": "@notice Is the operator with the given params initialized", - "implemented": true, - "isConstructor": false, - "kind": "function", - "modifiers": [null], - "name": "_isInitialized", - "scope": 12435, - "stateMutability": "view", - "superFunction": null, - "visibility": "internal" - }, - "children": [ - { - "children": [ - { - "attributes": { - "constant": false, - "name": "_operatorParams", - "scope": 12314, - "stateVariable": false, - "storageLocation": "default", - "type": "uint256", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "uint256", - "type": "uint256" - }, - "id": 12297, - "name": "ElementaryTypeName", - "src": "30787:7:39" - } - ], - "id": 12298, - "name": "VariableDeclaration", - "src": "30787:23:39" - } - ], - "id": 12299, - "name": "ParameterList", - "src": "30786:25:39" - }, - { - "children": [ - { - "attributes": { - "constant": false, - "name": "", - "scope": 12314, - "stateVariable": false, - "storageLocation": "default", - "type": "bool", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "bool", - "type": "bool" - }, - "id": 12300, - "name": "ElementaryTypeName", - "src": "30859:4:39" - } - ], - "id": 12301, - "name": "VariableDeclaration", - "src": "30859:4:39" - } - ], - "id": 12302, - "name": "ParameterList", - "src": "30858:6:39" - }, - { - "children": [ - { - "attributes": { - "functionReturnParameters": 12302 - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "operator": ">", - "type": "bool" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "member_name": "timestamp", - "referencedDeclaration": null, - "type": "uint256" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 28136, - "type": "block", - "value": "block" - }, - "id": 12303, - "name": "Identifier", - "src": "30898:5:39" - } - ], - "id": 12304, - "name": "MemberAccess", - "src": "30898:15:39" - }, - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [null], - "type": "uint256", - "type_conversion": false - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "member_name": "add", - "referencedDeclaration": 310, - "type": "function (uint256,uint256) pure returns (uint256)" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "arguments": [null], - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [null], - "type": "uint256", - "type_conversion": false - }, - "children": [ - { - "attributes": { - "argumentTypes": [null], - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "member_name": "getCreationTimestamp", - "referencedDeclaration": 27945, - "type": "function (uint256) pure returns (uint256)" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 12298, - "type": "uint256", - "value": "_operatorParams" - }, - "id": 12305, - "name": "Identifier", - "src": "30928:15:39" - } - ], - "id": 12306, - "name": "MemberAccess", - "src": "30928:36:39" - } - ], - "id": 12307, - "name": "FunctionCall", - "src": "30928:38:39" - } - ], - "id": 12308, - "name": "MemberAccess", - "src": "30928:42:39" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 11091, - "type": "uint256", - "value": "initializationPeriod" - }, - "id": 12309, - "name": "Identifier", - "src": "30971:20:39" - } - ], - "id": 12310, - "name": "FunctionCall", - "src": "30928:64:39" - } - ], - "id": 12311, - "name": "BinaryOperation", - "src": "30898:94:39" - } - ], - "id": 12312, - "name": "Return", - "src": "30879:113:39" - } - ], - "id": 12313, - "name": "Block", - "src": "30869:130:39" - } - ], - "id": 12314, - "name": "FunctionDefinition", - "src": "30763:236:39" - }, - { - "attributes": { - "documentation": "@notice Is the operator with the given params undelegating", - "implemented": true, - "isConstructor": false, - "kind": "function", - "modifiers": [null], - "name": "_isUndelegating", - "scope": 12435, - "stateMutability": "view", - "superFunction": null, - "visibility": "internal" - }, - "children": [ - { - "children": [ - { - "attributes": { - "constant": false, - "name": "_operatorParams", - "scope": 12339, - "stateVariable": false, - "storageLocation": "default", - "type": "uint256", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "uint256", - "type": "uint256" - }, - "id": 12315, - "name": "ElementaryTypeName", - "src": "31097:7:39" - } - ], - "id": 12316, - "name": "VariableDeclaration", - "src": "31097:23:39" - } - ], - "id": 12317, - "name": "ParameterList", - "src": "31096:25:39" - }, - { - "children": [ - { - "attributes": { - "constant": false, - "name": "", - "scope": 12339, - "stateVariable": false, - "storageLocation": "default", - "type": "bool", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "bool", - "type": "bool" - }, - "id": 12318, - "name": "ElementaryTypeName", - "src": "31169:4:39" - } - ], - "id": 12319, - "name": "VariableDeclaration", - "src": "31169:4:39" - } - ], - "id": 12320, - "name": "ParameterList", - "src": "31168:6:39" - }, - { - "children": [ - { - "attributes": { - "assignments": [12322] - }, - "children": [ - { - "attributes": { - "constant": false, - "name": "undelegatedAt", - "scope": 12338, - "stateVariable": false, - "storageLocation": "default", - "type": "uint256", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "uint256", - "type": "uint256" - }, - "id": 12321, - "name": "ElementaryTypeName", - "src": "31189:7:39" - } - ], - "id": 12322, - "name": "VariableDeclaration", - "src": "31189:21:39" - }, - { - "attributes": { - "argumentTypes": null, - "arguments": [null], - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [null], - "type": "uint256", - "type_conversion": false - }, - "children": [ - { - "attributes": { - "argumentTypes": [null], - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "member_name": "getUndelegationTimestamp", - "referencedDeclaration": 27977, - "type": "function (uint256) pure returns (uint256)" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 12316, - "type": "uint256", - "value": "_operatorParams" - }, - "id": 12323, - "name": "Identifier", - "src": "31213:15:39" - } - ], - "id": 12324, - "name": "MemberAccess", - "src": "31213:40:39" - } - ], - "id": 12325, - "name": "FunctionCall", - "src": "31213:42:39" - } - ], - "id": 12326, - "name": "VariableDeclarationStatement", - "src": "31189:66:39" - }, - { - "attributes": { - "functionReturnParameters": 12320 - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "operator": "&&", - "type": "bool" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isInlineArray": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "type": "bool" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "operator": "!=", - "type": "bool" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 12322, - "type": "uint256", - "value": "undelegatedAt" - }, - "id": 12327, - "name": "Identifier", - "src": "31273:13:39" - }, - { - "attributes": { - "argumentTypes": null, - "hexvalue": "30", - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "subdenomination": null, - "token": "number", - "type": "int_const 0", - "value": "0" - }, - "id": 12328, - "name": "Literal", - "src": "31290:1:39" - } - ], - "id": 12329, - "name": "BinaryOperation", - "src": "31273:18:39" - } - ], - "id": 12330, - "name": "TupleExpression", - "src": "31272:20:39" - }, - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isInlineArray": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "type": "bool" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "operator": ">", - "type": "bool" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "member_name": "timestamp", - "referencedDeclaration": null, - "type": "uint256" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 28136, - "type": "block", - "value": "block" - }, - "id": 12331, - "name": "Identifier", - "src": "31297:5:39" - } - ], - "id": 12332, - "name": "MemberAccess", - "src": "31297:15:39" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 12322, - "type": "uint256", - "value": "undelegatedAt" - }, - "id": 12333, - "name": "Identifier", - "src": "31315:13:39" - } - ], - "id": 12334, - "name": "BinaryOperation", - "src": "31297:31:39" - } - ], - "id": 12335, - "name": "TupleExpression", - "src": "31296:33:39" - } - ], - "id": 12336, - "name": "BinaryOperation", - "src": "31272:57:39" - } - ], - "id": 12337, - "name": "Return", - "src": "31265:64:39" - } - ], - "id": 12338, - "name": "Block", - "src": "31179:157:39" - } - ], - "id": 12339, - "name": "FunctionDefinition", - "src": "31072:264:39" - }, - { - "attributes": { - "documentation": "@notice Has the operator with the given params finished undelegating", - "implemented": true, - "isConstructor": false, - "kind": "function", - "modifiers": [null], - "name": "_isUndelegatingFinished", - "scope": 12435, - "stateMutability": "view", - "superFunction": null, - "visibility": "internal" - }, - "children": [ - { - "children": [ - { - "attributes": { - "constant": false, - "name": "_operatorParams", - "scope": 12368, - "stateVariable": false, - "storageLocation": "default", - "type": "uint256", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "uint256", - "type": "uint256" - }, - "id": 12340, - "name": "ElementaryTypeName", - "src": "31452:7:39" - } - ], - "id": 12341, - "name": "VariableDeclaration", - "src": "31452:23:39" - } - ], - "id": 12342, - "name": "ParameterList", - "src": "31451:25:39" - }, - { - "children": [ - { - "attributes": { - "constant": false, - "name": "", - "scope": 12368, - "stateVariable": false, - "storageLocation": "default", - "type": "bool", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "bool", - "type": "bool" - }, - "id": 12343, - "name": "ElementaryTypeName", - "src": "31524:4:39" - } - ], - "id": 12344, - "name": "VariableDeclaration", - "src": "31524:4:39" - } - ], - "id": 12345, - "name": "ParameterList", - "src": "31523:6:39" - }, - { - "children": [ - { - "attributes": { - "assignments": [12347] - }, - "children": [ - { - "attributes": { - "constant": false, - "name": "undelegatedAt", - "scope": 12367, - "stateVariable": false, - "storageLocation": "default", - "type": "uint256", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "uint256", - "type": "uint256" - }, - "id": 12346, - "name": "ElementaryTypeName", - "src": "31544:7:39" - } - ], - "id": 12347, - "name": "VariableDeclaration", - "src": "31544:21:39" - }, - { - "attributes": { - "argumentTypes": null, - "arguments": [null], - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [null], - "type": "uint256", - "type_conversion": false - }, - "children": [ - { - "attributes": { - "argumentTypes": [null], - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "member_name": "getUndelegationTimestamp", - "referencedDeclaration": 27977, - "type": "function (uint256) pure returns (uint256)" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 12341, - "type": "uint256", - "value": "_operatorParams" - }, - "id": 12348, - "name": "Identifier", - "src": "31568:15:39" - } - ], - "id": 12349, - "name": "MemberAccess", - "src": "31568:40:39" - } - ], - "id": 12350, - "name": "FunctionCall", - "src": "31568:42:39" - } - ], - "id": 12351, - "name": "VariableDeclarationStatement", - "src": "31544:66:39" - }, - { - "attributes": { - "functionReturnParameters": 12345 - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "operator": "&&", - "type": "bool" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isInlineArray": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "type": "bool" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "operator": "!=", - "type": "bool" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 12347, - "type": "uint256", - "value": "undelegatedAt" - }, - "id": 12352, - "name": "Identifier", - "src": "31640:13:39" - }, - { - "attributes": { - "argumentTypes": null, - "hexvalue": "30", - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "subdenomination": null, - "token": "number", - "type": "int_const 0", - "value": "0" - }, - "id": 12353, - "name": "Literal", - "src": "31657:1:39" - } - ], - "id": 12354, - "name": "BinaryOperation", - "src": "31640:18:39" - } - ], - "id": 12355, - "name": "TupleExpression", - "src": "31639:20:39" - }, - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isInlineArray": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "type": "bool" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "operator": ">", - "type": "bool" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "member_name": "timestamp", - "referencedDeclaration": null, - "type": "uint256" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 28136, - "type": "block", - "value": "block" - }, - "id": 12356, - "name": "Identifier", - "src": "31676:5:39" - } - ], - "id": 12357, - "name": "MemberAccess", - "src": "31676:15:39" - }, - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [null], - "type": "uint256", - "type_conversion": false - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "member_name": "add", - "referencedDeclaration": 310, - "type": "function (uint256,uint256) pure returns (uint256)" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 12347, - "type": "uint256", - "value": "undelegatedAt" - }, - "id": 12358, - "name": "Identifier", - "src": "31694:13:39" - } - ], - "id": 12359, - "name": "MemberAccess", - "src": "31694:17:39" - }, - { - "attributes": { - "argumentTypes": null, - "arguments": [null], - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [null], - "type": "uint256", - "type_conversion": false - }, - "children": [ - { - "attributes": { - "argumentTypes": [null], - "overloadedDeclarations": [null], - "referencedDeclaration": 11182, - "type": "function () view returns (uint256)", - "value": "undelegationPeriod" - }, - "id": 12360, - "name": "Identifier", - "src": "31712:18:39" - } - ], - "id": 12361, - "name": "FunctionCall", - "src": "31712:20:39" - } - ], - "id": 12362, - "name": "FunctionCall", - "src": "31694:39:39" - } - ], - "id": 12363, - "name": "BinaryOperation", - "src": "31676:57:39" - } - ], - "id": 12364, - "name": "TupleExpression", - "src": "31675:59:39" - } - ], - "id": 12365, - "name": "BinaryOperation", - "src": "31639:95:39" - } - ], - "id": 12366, - "name": "Return", - "src": "31620:114:39" - } - ], - "id": 12367, - "name": "Block", - "src": "31534:207:39" - } - ], - "id": 12368, - "name": "FunctionDefinition", - "src": "31419:322:39" - }, - { - "attributes": { - "documentation": "@notice Get whether the operator's stake is released\n as far as the operator contract is concerned.\n If the operator contract has a lock on the operator,\n the operator's stake is be released when the lock expires.\n Otherwise the stake is released when the operator finishes undelegating.", - "implemented": true, - "isConstructor": false, - "kind": "function", - "modifiers": [null], - "name": "_isStakeReleased", - "scope": 12435, - "stateMutability": "view", - "superFunction": null, - "visibility": "internal" - }, - "children": [ - { - "children": [ - { - "attributes": { - "constant": false, - "name": "_operator", - "scope": 12390, - "stateVariable": false, - "storageLocation": "default", - "type": "address", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "address", - "stateMutability": "nonpayable", - "type": "address" - }, - "id": 12369, - "name": "ElementaryTypeName", - "src": "32106:7:39" - } - ], - "id": 12370, - "name": "VariableDeclaration", - "src": "32106:17:39" - }, - { - "attributes": { - "constant": false, - "name": "_operatorParams", - "scope": 12390, - "stateVariable": false, - "storageLocation": "default", - "type": "uint256", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "uint256", - "type": "uint256" - }, - "id": 12371, - "name": "ElementaryTypeName", - "src": "32133:7:39" - } - ], - "id": 12372, - "name": "VariableDeclaration", - "src": "32133:23:39" - }, - { - "attributes": { - "constant": false, - "name": "_operatorContract", - "scope": 12390, - "stateVariable": false, - "storageLocation": "default", - "type": "address", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "address", - "stateMutability": "nonpayable", - "type": "address" - }, - "id": 12373, - "name": "ElementaryTypeName", - "src": "32166:7:39" - } - ], - "id": 12374, - "name": "VariableDeclaration", - "src": "32166:25:39" - } - ], - "id": 12375, - "name": "ParameterList", - "src": "32096:101:39" - }, - { - "children": [ - { - "attributes": { - "constant": false, - "name": "", - "scope": 12390, - "stateVariable": false, - "storageLocation": "default", - "type": "bool", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "bool", - "type": "bool" - }, - "id": 12376, - "name": "ElementaryTypeName", - "src": "32221:4:39" - } - ], - "id": 12377, - "name": "VariableDeclaration", - "src": "32221:4:39" - } - ], - "id": 12378, - "name": "ParameterList", - "src": "32220:6:39" - }, - { - "children": [ - { - "attributes": { - "functionReturnParameters": 12378 - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "operator": "&&", - "type": "bool" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [null], - "type": "bool", - "type_conversion": false - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "overloadedDeclarations": [null], - "referencedDeclaration": 12368, - "type": "function (uint256) view returns (bool)", - "value": "_isUndelegatingFinished" - }, - "id": 12379, - "name": "Identifier", - "src": "32256:23:39" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 12372, - "type": "uint256", - "value": "_operatorParams" - }, - "id": 12380, - "name": "Identifier", - "src": "32280:15:39" - } - ], - "id": 12381, - "name": "FunctionCall", - "src": "32256:40:39" - }, - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [null], - "type": "bool", - "type_conversion": false - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "member_name": "isStakeReleased", - "referencedDeclaration": 19984, - "type": "function (struct Locks.Storage storage pointer,address,address) view returns (bool)" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 11101, - "type": "struct Locks.Storage storage ref", - "value": "locks" - }, - "id": 12382, - "name": "Identifier", - "src": "32312:5:39" - } - ], - "id": 12383, - "name": "MemberAccess", - "src": "32312:21:39" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 12370, - "type": "address", - "value": "_operator" - }, - "id": 12384, - "name": "Identifier", - "src": "32334:9:39" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 12374, - "type": "address", - "value": "_operatorContract" - }, - "id": 12385, - "name": "Identifier", - "src": "32345:17:39" - } - ], - "id": 12386, - "name": "FunctionCall", - "src": "32312:51:39" - } - ], - "id": 12387, - "name": "BinaryOperation", - "src": "32256:107:39" - } - ], - "id": 12388, - "name": "Return", - "src": "32237:126:39" - } - ], - "id": 12389, - "name": "Block", - "src": "32227:143:39" - } - ], - "id": 12390, - "name": "FunctionDefinition", - "src": "32071:299:39" - }, - { - "attributes": { - "documentation": null, - "implemented": true, - "isConstructor": false, - "kind": "function", - "modifiers": [null], - "name": "transferOrDeposit", - "scope": 12435, - "stateMutability": "nonpayable", - "superFunction": null, - "visibility": "internal" - }, - "children": [ - { - "children": [ - { - "attributes": { - "constant": false, - "name": "_owner", - "scope": 12434, - "stateVariable": false, - "storageLocation": "default", - "type": "address", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "address", - "stateMutability": "nonpayable", - "type": "address" - }, - "id": 12391, - "name": "ElementaryTypeName", - "src": "32412:7:39" - } - ], - "id": 12392, - "name": "VariableDeclaration", - "src": "32412:14:39" - }, - { - "attributes": { - "constant": false, - "name": "_operator", - "scope": 12434, - "stateVariable": false, - "storageLocation": "default", - "type": "address", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "address", - "stateMutability": "nonpayable", - "type": "address" - }, - "id": 12393, - "name": "ElementaryTypeName", - "src": "32436:7:39" - } - ], - "id": 12394, - "name": "VariableDeclaration", - "src": "32436:17:39" - }, - { - "attributes": { - "constant": false, - "name": "_amount", - "scope": 12434, - "stateVariable": false, - "storageLocation": "default", - "type": "uint256", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "uint256", - "type": "uint256" - }, - "id": 12395, - "name": "ElementaryTypeName", - "src": "32463:7:39" - } - ], - "id": 12396, - "name": "VariableDeclaration", - "src": "32463:15:39" - } - ], - "id": 12397, - "name": "ParameterList", - "src": "32402:82:39" - }, - { - "attributes": { - "parameters": [null] - }, - "children": [], - "id": 12398, - "name": "ParameterList", - "src": "32494:0:39" - }, - { - "children": [ - { - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [null], - "type": "bool", - "type_conversion": false - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "member_name": "hasGrantDelegated", - "referencedDeclaration": 19375, - "type": "function (struct GrantStaking.Storage storage pointer,address) view returns (bool)" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 11099, - "type": "struct GrantStaking.Storage storage ref", - "value": "grantStaking" - }, - "id": 12399, - "name": "Identifier", - "src": "32508:12:39" - } - ], - "id": 12400, - "name": "MemberAccess", - "src": "32508:30:39" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 12394, - "type": "address", - "value": "_operator" - }, - "id": 12401, - "name": "Identifier", - "src": "32539:9:39" - } - ], - "id": 12402, - "name": "FunctionCall", - "src": "32508:41:39" - }, - { - "children": [ - { - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [null], - "type": "tuple()", - "type_conversion": false - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - ], - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "member_name": "approveAndCall", - "referencedDeclaration": 10970, - "type": "function (address,uint256,bytes memory) external" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [null], - "type": "contract TokenSender", - "type_conversion": true - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "overloadedDeclarations": [null], - "referencedDeclaration": 10971, - "type": "type(contract TokenSender)", - "value": "TokenSender" - }, - "id": 12403, - "name": "Identifier", - "src": "32641:11:39" - }, - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [null], - "type": "address", - "type_conversion": true - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_contract$_ERC20Burnable_$1023", - "typeString": "contract ERC20Burnable" - } - ], - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "type": "type(address)", - "value": "address" - }, - "id": 12404, - "name": "ElementaryTypeNameExpression", - "src": "32653:7:39" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 11093, - "type": "contract ERC20Burnable", - "value": "token" - }, - "id": 12405, - "name": "Identifier", - "src": "32661:5:39" - } - ], - "id": 12406, - "name": "FunctionCall", - "src": "32653:14:39" - } - ], - "id": 12407, - "name": "FunctionCall", - "src": "32641:27:39" - } - ], - "id": 12408, - "name": "MemberAccess", - "src": "32641:42:39" - }, - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [null], - "type": "address", - "type_conversion": true - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_contract$_TokenStakingEscrow_$13399", - "typeString": "contract TokenStakingEscrow" - } - ], - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "type": "type(address)", - "value": "address" - }, - "id": 12409, - "name": "ElementaryTypeNameExpression", - "src": "32701:7:39" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 11097, - "type": "contract TokenStakingEscrow", - "value": "escrow" - }, - "id": 12410, - "name": "Identifier", - "src": "32709:6:39" - } - ], - "id": 12411, - "name": "FunctionCall", - "src": "32701:15:39" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 12396, - "type": "uint256", - "value": "_amount" - }, - "id": 12412, - "name": "Identifier", - "src": "32734:7:39" - }, - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [null], - "type": "bytes memory", - "type_conversion": false - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "member_name": "encode", - "referencedDeclaration": null, - "type": "function () pure returns (bytes memory)" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 28133, - "type": "abi", - "value": "abi" - }, - "id": 12413, - "name": "Identifier", - "src": "32759:3:39" - } - ], - "id": 12414, - "name": "MemberAccess", - "src": "32759:10:39" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 12394, - "type": "address", - "value": "_operator" - }, - "id": 12415, - "name": "Identifier", - "src": "32791:9:39" - }, - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [null], - "type": "uint256", - "type_conversion": false - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "member_name": "getGrantForOperator", - "referencedDeclaration": 19423, - "type": "function (struct GrantStaking.Storage storage pointer,address) view returns (uint256)" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 11099, - "type": "struct GrantStaking.Storage storage ref", - "value": "grantStaking" - }, - "id": 12416, - "name": "Identifier", - "src": "32822:12:39" - } - ], - "id": 12417, - "name": "MemberAccess", - "src": "32822:32:39" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 12394, - "type": "address", - "value": "_operator" - }, - "id": 12418, - "name": "Identifier", - "src": "32855:9:39" - } - ], - "id": 12419, - "name": "FunctionCall", - "src": "32822:43:39" - } - ], - "id": 12420, - "name": "FunctionCall", - "src": "32759:124:39" - } - ], - "id": 12421, - "name": "FunctionCall", - "src": "32641:256:39" - } - ], - "id": 12422, - "name": "ExpressionStatement", - "src": "32641:256:39" - } - ], - "id": 12423, - "name": "Block", - "src": "32551:357:39" - }, - { - "children": [ - { - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [null], - "type": "tuple()", - "type_conversion": false - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "member_name": "safeTransfer", - "referencedDeclaration": 1183, - "type": "function (contract IERC20,address,uint256)" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 11093, - "type": "contract ERC20Burnable", - "value": "token" - }, - "id": 12424, - "name": "Identifier", - "src": "33006:5:39" - } - ], - "id": 12426, - "name": "MemberAccess", - "src": "33006:18:39" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 12392, - "type": "address", - "value": "_owner" - }, - "id": 12427, - "name": "Identifier", - "src": "33025:6:39" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [null], - "referencedDeclaration": 12396, - "type": "uint256", - "value": "_amount" - }, - "id": 12428, - "name": "Identifier", - "src": "33033:7:39" - } - ], - "id": 12429, - "name": "FunctionCall", - "src": "33006:35:39" - } - ], - "id": 12430, - "name": "ExpressionStatement", - "src": "33006:35:39" - } - ], - "id": 12431, - "name": "Block", - "src": "32914:138:39" - } - ], - "id": 12432, - "name": "IfStatement", - "src": "32504:548:39" - } - ], - "id": 12433, - "name": "Block", - "src": "32494:564:39" - } - ], - "id": 12434, - "name": "FunctionDefinition", - "src": "32376:682:39" - } - ], - "id": 12435, - "name": "ContractDefinition", - "src": "2690:30370:39" - } - ], - "id": 12436, - "name": "SourceUnit", - "src": "1837:31224:39" - }, - "compiler": { - "name": "solc", - "version": "0.5.17+commit.d19bba13.Emscripten.clang" - }, - "networks": { - "11155111": { - "events": { - "0x53232732101f51eae5873796ea83c72cecad5d155b851edfc11732b9dd4006f6": { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "operator", - "type": "address" - }, - { - "indexed": false, - "internalType": "address", - "name": "lockCreator", - "type": "address" - } - ], - "name": "ExpiredLockReleased", - "type": "event" - }, - "0x9519d27283057289b75ef2605d6818602822861717fc48c918d37fe1fdc523f4": { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "operator", - "type": "address" - }, - { - "indexed": false, - "internalType": "address", - "name": "lockCreator", - "type": "address" - } - ], - "name": "LockReleased", - "type": "event" - }, - "0x82358c8f3a8a41c7cae8a1196ae5106f7b58ce60eb38b7bc6fe3086d079d2a4e": { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "operator", - "type": "address" - }, - { - "indexed": false, - "internalType": "address", - "name": "lockCreator", - "type": "address" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "until", - "type": "uint256" - } - ], - "name": "StakeLocked", - "type": "event" - }, - "0x4e5ca729097a0a93d0ffa83b56a620b4b516cbe2a02164cd809bf68fdbda23b2": { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "operator", - "type": "address" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "newAmount", - "type": "uint256" - } - ], - "name": "TopUpCompleted", - "type": "event" - }, - "0x7247f13a55f262369e97edefca12bc427eea3f7db14e50fa2fc6ff3a0a91bb6e": { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "operator", - "type": "address" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "topUp", - "type": "uint256" - } - ], - "name": "TopUpInitiated", - "type": "event" - } - }, - "links": { - "GrantStaking": "0x5FB63D9e076a314023F2D1aB5dBFd7045C281EbA", - "Locks": "0xBcD7917282E529BAA6f232DdDc75F3901245A492", - "TopUps": "0x5D8e618f44A59dd528cce58d00801F4C8e5cfa8D" - }, - "address": "0x91Fe7128f74dBd4F031ea3D90FC5Ea4DCfD81818", - "transactionHash": "0x5bf52dbb3587adbae2c18a63e6d164a71da9178920e21708833890f47cbac789" - } - }, - "schemaVersion": "3.4.8", - "updatedAt": "2023-09-12T08:42:13.411Z", - "networkType": "ethereum", - "devdoc": { - "methods": { - "activeStake(address,address)": { - "params": { - "_operator": "address of stake operator.", - "_operatorContract": "address of operator contract." - }, - "return": "an uint256 representing the eligible stake balance." - }, - "authorizeOperatorContract(address,address)": { - "params": { - "_operator": "address of stake operator.", - "_operatorContract": "address of operator contract." - } - }, - "authorizerOf(address)": { - "return": "Authorizer address." - }, - "balanceOf(address)": { - "params": { - "_address": "The address to query the balance of." - }, - "return": "An uint256 representing the amount staked by the passed address." - }, - "beneficiaryOf(address)": { - "return": "Beneficiary address." - }, - "cancelStake(address)": { - "params": { - "_operator": "Address of the stake operator." - } - }, - "claimDelegatedAuthority(address)": { - "details": "If `delegatedAuthoritySource` is an approved operator contract and recognizes the claimant, this relationship will be recorded in `delegatedAuthority`. Later, the claimant can slash, seize, place locks etc. on operators that have authorized the `delegatedAuthoritySource`. If the `delegatedAuthoritySource` is disabled with the panic button, any recipients of delegated authority from it will also be disabled." - }, - "commitTopUp(address)": { - "params": { - "_operator": "The operator with a pending top-up that is getting committed." - } - }, - "constructor": { - "params": { - "_escrow": "Escrow dedicated for this staking contract.", - "_initializationPeriod": "To avoid certain attacks on work selection, recently created operators must wait for a specific period of time before being eligible for work selection.", - "_registry": "Keep contract registry contract.", - "_token": "KEEP token contract.", - "_tokenGrant": "KEEP token grant contract." - } - }, - "eligibleStake(address,address)": { - "params": { - "_operator": "address of stake operator.", - "_operatorContract": "address of operator contract." - }, - "return": "an uint256 representing the eligible stake balance." - }, - "getDelegationInfo(address)": { - "params": { - "_operator": "Operator address." - }, - "return": "amount The amount of tokens the given operator delegated.createdAt The time when the stake has been delegated.undelegatedAt The time when undelegation has been requested. If undelegation has not been requested, 0 is returned." - }, - "getLocks(address)": { - "return": "creators The addresses of operator contracts that have placed a lock on the operator.expirations The expiration times of the locks placed on the operator." - }, - "hasMinimumStake(address,address)": { - "params": { - "operatorContract": "Operator contract's address", - "staker": "Staker's address" - }, - "return": "True if has enough active stake to participate in the network, false otherwise." - }, - "isApprovedOperatorContract(address)": { - "params": { - "_operatorContract": "address of operator contract." - }, - "return": "True if operator contract is approved, false if operator contract has not been approved or if it was disabled by the panic button." - }, - "isAuthorizedForOperator(address,address)": { - "params": { - "_operator": "address of stake operator.", - "_operatorContract": "address of operator contract." - } - }, - "lockStake(address,uint256)": { - "params": { - "duration": "Lock duration in seconds.", - "operator": "Operator address." - } - }, - "ownerOf(address)": { - "return": "Stake owner address." - }, - "receiveApproval(address,uint256,address,bytes)": { - "details": "Requires that the provided token contract be the same one linked to this contract.", - "params": { - "_extraData": "Data for stake delegation. This byte array must have the following values concatenated: - Beneficiary address (20 bytes), ignored for a top-up - Operator address (20 bytes) - Authorizer address (20 bytes), ignored for a top-up - Grant ID (32 bytes) - required only when called by TokenStakingEscrow", - "_from": "The owner of the tokens who approved them to transfer.", - "_token": "Token contract address.", - "_value": "Approved amount for the transfer and stake." - } - }, - "recoverStake(address)": { - "params": { - "_operator": "Operator address." - } - }, - "releaseExpiredLock(address,address)": { - "details": "Necessary for removing locks placed by contracts that have been disabled by the panic button. Also applicable to prevent inadvertent DoS of `recoverStake` if too many operator contracts have failed to clean up their locks." - }, - "seize(uint256,uint256,address,address[])": { - "params": { - "amountToSeize": "Token amount to seize from every misbehaved operator.", - "misbehavedOperators": "Array of addresses to seize the tokens from.", - "rewardMultiplier": "Reward adjustment in percentage. Min 1% and 100% max.", - "tattletale": "Address to receive the 5% reward." - } - }, - "slash(uint256,address[])": { - "params": { - "amountToSlash": "Token amount to slash from every misbehaved operator.", - "misbehavedOperators": "Array of addresses to seize the tokens from." - } - }, - "transferStakeOwnership(address,address)": { - "params": { - "newOwner": "Address of the new staking relationship owner.", - "operator": "Address of the stake operator." - } - }, - "undelegate(address)": { - "params": { - "_operator": "Address of the stake operator." - } - }, - "undelegateAt(address,uint256)": { - "params": { - "_operator": "Address of the stake operator.", - "_undelegationTimestamp": "The timestamp undelegation is to start at." - } - }, - "unlockStake(address)": { - "details": "Only for operator contracts. To remove expired or disabled locks, use `releaseExpiredLocks`. The authorization check ensures that the caller must have been able to place a lock on the operator sometime in the past. We don't need to check for current approval status of the caller because unlocking stake cannot harm the operator nor interfere with other operator contracts. Therefore even disabled operator contracts may freely unlock stake.", - "params": { - "operator": "Operator address." - } - } - }, - "title": "TokenStaking" - }, - "userdoc": { - "methods": { - "activeStake(address,address)": { - "notice": "Gets the active stake balance of the specified address. An active stake is a stake that passed the initialization period, and may be in the process of undelegation but has not been released yet, either because the undelegation period is not over, or because the operator contract has an active lock on the operator. Also, the operator had to approve the specified operator contract. /// The difference between eligible stake is that active stake does not make the operator eligible for work selection but it may be still finishing earlier work until the stake is released. Operator with a minimum required amount of active stake can join the network but cannot be selected to any new work. " - }, - "authorizeOperatorContract(address,address)": { - "notice": "Authorizes operator contract to access staked token balance of the provided operator. Can only be executed by stake operator authorizer. Contracts using delegated authority cannot be authorized with `authorizeOperatorContract`. Instead, authorize `getAuthoritySource(_operatorContract)`." - }, - "authorizerOf(address)": { - "notice": "Gets the authorizer for the specified operator address." - }, - "balanceOf(address)": { - "notice": "Gets the stake balance of the specified address." - }, - "beneficiaryOf(address)": { - "notice": "Gets the beneficiary for the specified operator address." - }, - "cancelStake(address)": { - "notice": "Cancels stake of tokens within the operator initialization period without being subjected to the token lockup for the undelegation period. This can be used to undo mistaken delegation to the wrong operator address." - }, - "claimDelegatedAuthority(address)": { - "notice": "Grant the sender the same authority as `delegatedAuthoritySource`" - }, - "commitTopUp(address)": { - "notice": "Commits pending top-up for the provided operator. If the top-up did not pass the initialization period, the function fails." - }, - "constructor": "Creates a token staking contract for a provided Standard ERC20Burnable token.", - "eligibleStake(address,address)": { - "notice": "Gets the eligible stake balance of the specified address. An eligible stake is a stake that passed the initialization period and is not currently undelegating. Also, the operator had to approve the specified operator contract. /// Operator with a minimum required amount of eligible stake can join the network and participate in new work selection. " - }, - "getAuthoritySource(address)": { - "notice": "Get the source of the operator contract's authority. If the contract uses delegated authority, returns the original source of the delegated authority. If the contract doesn't use delegated authority, returns the contract itself. Authorize `getAuthoritySource(operatorContract)` to grant `operatorContract` the authority to penalize an operator." - }, - "getDelegationInfo(address)": { - "notice": "Gets stake delegation info for the given operator." - }, - "getLocks(address)": { - "notice": "Get the locks placed on the operator." - }, - "hasMinimumStake(address,address)": { - "notice": "Checks if the specified account has enough active stake to become network operator and that the specified operator contract has been authorized for potential slashing. /// Having the required minimum of active stake makes the operator eligible to join the network. If the active stake is not currently undelegating, operator is also eligible for work selection. " - }, - "isApprovedOperatorContract(address)": { - "notice": "Checks if the operator contract is authorized in the registry. If the contract uses delegated authority it checks authorization of the source contract." - }, - "isAuthorizedForOperator(address,address)": { - "notice": "Checks if operator contract has access to the staked token balance of the provided operator." - }, - "isStakeLocked(address)": { - "notice": "Check whether the operator has any active locks that haven't expired yet and whose creators aren't disabled by the panic button." - }, - "lockStake(address,uint256)": { - "notice": "Locks given operator stake for the specified duration. Locked stake may not be recovered until the lock expires or is released, even if the normal undelegation period has passed. Only previously authorized operator contract can lock the stake." - }, - "minimumStake()": { - "notice": "Returns minimum amount of KEEP that allows sMPC cluster client to participate in the Keep network. Expressed as number with 18-decimal places. Initial minimum stake is higher than the final and lowered periodically based on the amount of steps and the length of the minimum stake schedule in seconds." - }, - "ownerOf(address)": { - "notice": "Gets the stake owner for the specified operator address." - }, - "receiveApproval(address,uint256,address,bytes)": { - "notice": "Receives approval of token transfer and stakes the approved amount or adds the approved amount to an existing delegation (a “top-up”). In case of a top-up, it is expected that the operator stake is not undelegated and that the top-up is performed from the same source of tokens as the initial delegation. That is, if the tokens were delegated from a grant, top-up has to be performed from the same grant. If the delegation was done using liquid tokens, only liquid tokens from the same owner can be used to top-up the stake. Top-up can not be cancelled so it is important to be careful with the amount of KEEP added to the stake." - }, - "recoverStake(address)": { - "notice": "Recovers staked tokens and transfers them back to the owner. Recovering tokens can only be performed when the operator finished undelegating." - }, - "releaseExpiredLock(address,address)": { - "notice": "Removes the lock of the specified operator contract if the lock has expired or the contract has been disabled." - }, - "seize(uint256,uint256,address,address[])": { - "notice": "Seize provided token amount from every member in the misbehaved operators array. The tattletale is rewarded with 5% of the total seized amount scaled by the reward adjustment parameter and the rest 95% is burned." - }, - "slash(uint256,address[])": { - "notice": "Slash provided token amount from every member in the misbehaved operators array and burn 100% of all the tokens." - }, - "transferStakeOwnership(address,address)": { - "notice": "Allows the current staking relationship owner to transfer the ownership to someone else." - }, - "undelegate(address)": { - "notice": "Undelegates staked tokens. You will be able to recover your stake by calling `recoverStake()` with operator address once undelegation period is over." - }, - "undelegateAt(address,uint256)": { - "notice": "Set an undelegation time for staked tokens. Undelegation will begin at the specified timestamp. You will be able to recover your stake by calling `recoverStake()` with operator address once undelegation period is over." - }, - "undelegationPeriod()": { - "notice": "Returns the current value of the undelegation period. The staking contract guarantees that an undelegated operator’s stakes will stay locked for a period of time after undelegation, and thus available as collateral for any work the operator is engaged in. The undelegation period is two weeks for the first two months and two months after that." - }, - "unlockStake(address)": { - "notice": "Removes a lock the caller had previously placed on the operator." - } - }, - "notice": "A token staking contract for a specified standard ERC20Burnable token. A holder of the specified token can stake delegate its tokens to this contract and recover the stake after undelegation period is over." - } -} diff --git a/hardhat.config.ts b/hardhat.config.ts index c27305dc..899cc0a2 100644 --- a/hardhat.config.ts +++ b/hardhat.config.ts @@ -80,7 +80,6 @@ const config: HardhatUserConfig = { // For hardhat environment we can fork the mainnet, so we need to point it // to the contract artifacts. hardhat: process.env.FORKING_URL ? ["./external/mainnet"] : [], - sepolia: ["./external/sepolia"], mainnet: ["./external/mainnet"], }, }, @@ -93,10 +92,6 @@ const config: HardhatUserConfig = { thresholdCouncil: { mainnet: "0x9F6e831c8F8939DC0C830C6e492e7cEf4f9C2F5f", }, - keepRegistryKeeper: { - default: 1, // same as the deployer - sepolia: "0x68ad60CC5e8f3B7cC53beaB321cf0e6036962dBc", - }, }, mocha: { timeout: 60000, diff --git a/package.json b/package.json index dd7f6ff9..b21ae812 100644 --- a/package.json +++ b/package.json @@ -58,12 +58,8 @@ "typescript": "^4.4.4" }, "dependencies": { - "@keep-network/keep-core": ">1.8.1-dev <1.8.1-goerli", "@openzeppelin/contracts": "~4.5.0", "@openzeppelin/contracts-upgradeable": "~4.5.2", "@thesis/solidity-contracts": "github:thesis/solidity-contracts#4985bcf" - }, - "peerDependencies": { - "@keep-network/keep-core": ">1.8.1-dev <1.8.1-goerli" } } diff --git a/test/staking/TokenStaking.test.js b/test/staking/TokenStaking.test.js index 080907b6..bf91e4ee 100644 --- a/test/staking/TokenStaking.test.js +++ b/test/staking/TokenStaking.test.js @@ -2,7 +2,7 @@ const { expect } = require("chai") const { helpers } = require("hardhat") const { lastBlockTime, mineBlocks, increaseTime } = helpers.time -const { to1e18, to1ePrecision } = helpers.number +const { to1e18 } = helpers.number const { AddressZero, Zero } = ethers.constants @@ -11,6 +11,7 @@ const StakeTypes = { KEEP: 1, T: 2, } + const ApplicationStatus = { NOT_APPROVED: 0, APPROVED: 1, @@ -21,28 +22,10 @@ const { upgrades } = require("hardhat") describe("TokenStaking", () => { let tToken - let nucypherVendingMachine let application1Mock let application2Mock - const floatingPointDivisor = to1ePrecision(1, 15) const tAllocation = to1e18("4500000000") // 4.5 Billion - const maxKeepWrappedTokens = to1e18("1100000000") // 1.1 Billion - const maxNuWrappedTokens = to1e18("900000000") // 0.9 Billion - const keepRatio = floatingPointDivisor - .mul(tAllocation) - .div(maxKeepWrappedTokens) - const nuRatio = floatingPointDivisor.mul(tAllocation).div(maxNuWrappedTokens) - - function convertToT(amount, ratio) { - amount = ethers.BigNumber.from(amount) - const wrappedRemainder = amount.mod(floatingPointDivisor) - amount = amount.sub(wrappedRemainder) - return { - result: amount.mul(ratio).div(floatingPointDivisor), - remainder: wrappedRemainder, - } - } function rewardFromPenalty(penalty, rewardMultiplier) { return penalty.mul(5).div(100).mul(rewardMultiplier).div(100) @@ -88,20 +71,13 @@ describe("TokenStaking", () => { .connect(deployer) .transfer(otherStaker.address, initialStakerBalance) - const VendingMachine = await ethers.getContractFactory("VendingMachineMock") - nucypherVendingMachine = await VendingMachine.deploy( - maxNuWrappedTokens, - tAllocation - ) - await nucypherVendingMachine.deployed() - - const TokenStaking = await ethers.getContractFactory("LegacyTokenStaking") + const TokenStaking = await ethers.getContractFactory("TokenStaking") const tokenStakingInitializerArgs = [] tokenStaking = await upgrades.deployProxy( TokenStaking, tokenStakingInitializerArgs, { - constructorArgs: [tToken.address, nucypherVendingMachine.address], + constructorArgs: [tToken.address], } ) await tokenStaking.deployed() @@ -292,10 +268,7 @@ describe("TokenStaking", () => { }) it("should set value of stakes", async () => { - await assertStakes(stakingProvider.address, amount, Zero, Zero) - expect(await tokenStaking.stakedNu(stakingProvider.address)).to.equal( - 0 - ) + await assertStake(stakingProvider.address, amount) }) it("should start staking timestamp", async () => { @@ -643,27 +616,9 @@ describe("TokenStaking", () => { application1Mock.address ) ).to.equal(authorizedAmount) - }) - - it("should increase min staked amount in T", async () => { expect( - await tokenStaking.getMinStaked( - stakingProvider.address, - StakeTypes.T - ) + await tokenStaking.getMaxAuthorization(stakingProvider.address) ).to.equal(authorizedAmount) - expect( - await tokenStaking.getMinStaked( - stakingProvider.address, - StakeTypes.NU - ) - ).to.equal(0) - expect( - await tokenStaking.getMinStaked( - stakingProvider.address, - StakeTypes.KEEP - ) - ).to.equal(0) }) it("should decrease available amount to authorize for one application", async () => { @@ -756,6 +711,9 @@ describe("TokenStaking", () => { application1Mock.address ) ).to.equal(amount) + expect( + await tokenStaking.getMaxAuthorization(stakingProvider.address) + ).to.equal(amount) }) it("should decrease available amount to authorize for one application", async () => { @@ -773,27 +731,6 @@ describe("TokenStaking", () => { ).to.equal(amount) }) - it("should increase min staked amount in T", async () => { - expect( - await tokenStaking.getMinStaked( - stakingProvider.address, - StakeTypes.T - ) - ).to.equal(amount) - expect( - await tokenStaking.getMinStaked( - stakingProvider.address, - StakeTypes.NU - ) - ).to.equal(0) - expect( - await tokenStaking.getMinStaked( - stakingProvider.address, - StakeTypes.KEEP - ) - ).to.equal(0) - }) - it("should inform application", async () => { await assertApplicationStakingProviders( application1Mock, @@ -871,245 +808,6 @@ describe("TokenStaking", () => { }) } ) - - context( - "when caller is authorizer of staking provider with mixed stake", - () => { - const tStake = initialStakerBalance - const keepStake = initialStakerBalance - const keepInTStake = convertToT(keepStake, keepRatio).result - const nuStake = initialStakerBalance - const nuInTStake = convertToT(nuStake, nuRatio).result - - beforeEach(async () => { - await tokenStaking - .connect(deployer) - .approveApplication(application1Mock.address) - - await tokenStaking.setLegacyStakingProvider( - stakingProvider.address, - staker.address, - beneficiary.address, - authorizer.address - ) - await tokenStaking.addLegacyStake( - stakingProvider.address, - keepInTStake, - nuInTStake - ) - - await tToken.connect(staker).approve(tokenStaking.address, tStake) - await tokenStaking - .connect(staker) - .topUp(stakingProvider.address, tStake) - }) - - context("when authorize more than not legacy staked amount", () => { - it("should revert", async () => { - await expect( - tokenStaking - .connect(authorizer) - .increaseAuthorization( - stakingProvider.address, - application1Mock.address, - tStake.add(1) - ) - ).to.be.revertedWith("Not enough stake to authorize") - }) - }) - - context("when authorize staked tokens in one tx", () => { - let tx - const notAuthorized = tStake.sub(to1e18(1)) - const authorizedAmount = tStake.sub(notAuthorized) - - beforeEach(async () => { - tx = await tokenStaking - .connect(authorizer) - .increaseAuthorization( - stakingProvider.address, - application1Mock.address, - authorizedAmount - ) - }) - - it("should increase authorization", async () => { - expect( - await tokenStaking.authorizedStake( - stakingProvider.address, - application1Mock.address - ) - ).to.equal(authorizedAmount) - }) - - it("should increase min staked amount in T only", async () => { - expect( - await tokenStaking.getMinStaked( - stakingProvider.address, - StakeTypes.T - ) - ).to.equal(authorizedAmount) - expect( - await tokenStaking.getMinStaked( - stakingProvider.address, - StakeTypes.NU - ) - ).to.equal(0) - expect( - await tokenStaking.getMinStaked( - stakingProvider.address, - StakeTypes.KEEP - ) - ).to.equal(0) - }) - - it("should decrease available amount to authorize for one application", async () => { - expect( - await tokenStaking.getAvailableToAuthorize( - stakingProvider.address, - application1Mock.address - ) - ).to.equal(notAuthorized) - expect( - await tokenStaking.getAvailableToAuthorize( - stakingProvider.address, - application2Mock.address - ) - ).to.equal(tStake) - }) - - it("should inform application", async () => { - await assertApplicationStakingProviders( - application1Mock, - stakingProvider.address, - authorizedAmount, - Zero - ) - }) - - it("should emit AuthorizationIncreased", async () => { - await expect(tx) - .to.emit(tokenStaking, "AuthorizationIncreased") - .withArgs( - stakingProvider.address, - application1Mock.address, - 0, - authorizedAmount - ) - }) - - context("when authorize to the second application", () => { - let tx2 - - beforeEach(async () => { - await tokenStaking - .connect(deployer) - .approveApplication(application2Mock.address) - - tx2 = await tokenStaking - .connect(authorizer) - .increaseAuthorization( - stakingProvider.address, - application2Mock.address, - tStake - ) - }) - - it("should increase only one authorization", async () => { - expect( - await tokenStaking.authorizedStake( - stakingProvider.address, - application1Mock.address - ) - ).to.equal(authorizedAmount) - expect( - await tokenStaking.authorizedStake( - stakingProvider.address, - application2Mock.address - ) - ).to.equal(tStake) - }) - - it("should set min staked amount equal to T stake", async () => { - expect( - await tokenStaking.getMinStaked( - stakingProvider.address, - StakeTypes.T - ) - ).to.equal(tStake) - expect( - await tokenStaking.getMinStaked( - stakingProvider.address, - StakeTypes.NU - ) - ).to.equal(0) - expect( - await tokenStaking.getMinStaked( - stakingProvider.address, - StakeTypes.KEEP - ) - ).to.equal(0) - }) - - it("should decrease available amount to authorize for the second application", async () => { - expect( - await tokenStaking.getAvailableToAuthorize( - stakingProvider.address, - application1Mock.address - ) - ).to.equal(notAuthorized) - expect( - await tokenStaking.getAvailableToAuthorize( - stakingProvider.address, - application2Mock.address - ) - ).to.equal(0) - }) - - it("should inform second application", async () => { - await assertApplicationStakingProviders( - application2Mock, - stakingProvider.address, - tStake, - Zero - ) - }) - - it("should emit AuthorizationIncreased", async () => { - await expect(tx2) - .to.emit(tokenStaking, "AuthorizationIncreased") - .withArgs( - stakingProvider.address, - application2Mock.address, - 0, - tStake - ) - }) - }) - }) - - context("when authorize more than staked amount in several txs", () => { - it("should revert", async () => { - await tokenStaking - .connect(authorizer) - .increaseAuthorization( - stakingProvider.address, - application1Mock.address, - tStake.sub(1) - ) - await expect( - tokenStaking - .connect(authorizer) - .increaseAuthorization( - stakingProvider.address, - application1Mock.address, - 2 - ) - ).to.be.revertedWith("Not enough stake to authorize") - }) - }) - } - ) }) describe("requestAuthorizationDecrease", () => { @@ -1520,24 +1218,9 @@ describe("TokenStaking", () => { application1Mock.address ) ).to.equal(expectedToAmount) - }) - - it("should decrease min staked amount in T", async () => { expect( - await tokenStaking.getMinStaked(stakingProvider.address, StakeTypes.T) + await tokenStaking.getMaxAuthorization(stakingProvider.address) ).to.equal(expectedToAmount) - expect( - await tokenStaking.getMinStaked( - stakingProvider.address, - StakeTypes.NU - ) - ).to.equal(0) - expect( - await tokenStaking.getMinStaked( - stakingProvider.address, - StakeTypes.KEEP - ) - ).to.equal(0) }) it("should emit AuthorizationDecreaseApproved", async () => { @@ -1594,27 +1277,9 @@ describe("TokenStaking", () => { application2Mock.address ) ).to.equal(otherAmount) - }) - - it("should decrease min staked amount in T", async () => { expect( - await tokenStaking.getMinStaked( - stakingProvider.address, - StakeTypes.T - ) + await tokenStaking.getMaxAuthorization(stakingProvider.address) ).to.equal(otherAmount) - expect( - await tokenStaking.getMinStaked( - stakingProvider.address, - StakeTypes.NU - ) - ).to.equal(0) - expect( - await tokenStaking.getMinStaked( - stakingProvider.address, - StakeTypes.KEEP - ) - ).to.equal(0) }) it("should emit AuthorizationDecreaseApproved", async () => { @@ -2166,7 +1831,7 @@ describe("TokenStaking", () => { }) it("should update T staked amount", async () => { - await assertStakes(stakingProvider.address, expectedAmount, Zero, Zero) + await assertStake(stakingProvider.address, expectedAmount) }) it("should not update roles", async () => { @@ -2196,22 +1861,10 @@ describe("TokenStaking", () => { ).to.equal(topUpAmount) }) - it("should not increase min staked amount", async () => { + it("should not increase authorized amount", async () => { expect( - await tokenStaking.getMinStaked(stakingProvider.address, StakeTypes.T) + await tokenStaking.getMaxAuthorization(stakingProvider.address) ).to.equal(amount) - expect( - await tokenStaking.getMinStaked( - stakingProvider.address, - StakeTypes.NU - ) - ).to.equal(0) - expect( - await tokenStaking.getMinStaked( - stakingProvider.address, - StakeTypes.KEEP - ) - ).to.equal(0) }) it("should emit ToppedUp event", async () => { @@ -2258,14 +1911,16 @@ describe("TokenStaking", () => { await increaseTime(86400) // +24h - await tokenStaking.connect(staker).unstakeAll(stakingProvider.address) + await tokenStaking + .connect(staker) + .unstakeT(stakingProvider.address, amount) tx = await tokenStaking .connect(staker) .topUp(stakingProvider.address, amount) }) it("should update T staked amount", async () => { - await assertStakes(stakingProvider.address, amount, Zero, Zero) + await assertStake(stakingProvider.address, amount) }) it("should not update start staking timestamp", async () => { @@ -2281,206 +1936,16 @@ describe("TokenStaking", () => { }) }) - context("when staking provider has Keep stake", () => { - const keepAmount = initialStakerBalance - const keepInTAmount = convertToT(keepAmount, keepRatio).result - const topUpAmount = initialStakerBalance.mul(2) - const expectedAmount = keepInTAmount.add(topUpAmount) + context("when auto increase flag is enabled", () => { + const amount = initialStakerBalance.div(2) + const topUpAmount = initialStakerBalance + const expectedAmount = amount.add(topUpAmount) + const authorized1 = amount + const authorized2 = amount.div(2) let tx - let blockTimestamp beforeEach(async () => { - await tokenStaking - .connect(deployer) - .setMinimumStakeAmount(topUpAmount.add(1)) - - await tokenStaking.setLegacyStakingProvider( - stakingProvider.address, - staker.address, - beneficiary.address, - authorizer.address - ) - await tokenStaking.addLegacyStake( - stakingProvider.address, - keepInTAmount, - 0 - ) - blockTimestamp = await lastBlockTime() - - await tokenStaking - .connect(staker) - .delegateVoting(stakingProvider.address, delegatee.address) - await tToken.connect(deployer).transfer(authorizer.address, topUpAmount) - await tToken - .connect(authorizer) - .approve(tokenStaking.address, topUpAmount) - tx = await tokenStaking - .connect(authorizer) - .topUp(stakingProvider.address, topUpAmount) - }) - - it("should update only T staked amount", async () => { - await assertStakes( - stakingProvider.address, - topUpAmount, - keepInTAmount, - Zero - ) - }) - - it("should not update roles", async () => { - expect( - await tokenStaking.rolesOf(stakingProvider.address) - ).to.deep.equal([ - staker.address, - beneficiary.address, - authorizer.address, - ]) - }) - - it("should not update start staking timestamp", async () => { - expect( - await tokenStaking.getStartStakingTimestamp(stakingProvider.address) - ).to.equal(blockTimestamp) - }) - - it("should increase available amount to authorize", async () => { - expect( - await tokenStaking.getAvailableToAuthorize( - stakingProvider.address, - application1Mock.address - ) - ).to.equal(topUpAmount) - }) - - it("should transfer tokens to the staking contract", async () => { - expect(await tToken.balanceOf(tokenStaking.address)).to.equal( - topUpAmount - ) - }) - - it("should emit ToppedUp event", async () => { - await expect(tx) - .to.emit(tokenStaking, "ToppedUp") - .withArgs(stakingProvider.address, topUpAmount) - }) - - it("should increase the delegatee voting power", async () => { - expect(await tokenStaking.getVotes(delegatee.address)).to.equal( - expectedAmount - ) - }) - - it("should increase the total voting power", async () => { - const lastBlock = await mineBlocks(1) - expect(await tokenStaking.getPastTotalSupply(lastBlock - 1)).to.equal( - expectedAmount - ) - }) - }) - - context("when staking provider has NuCypher stake", () => { - const nuAmount = initialStakerBalance - const nuInTAmount = convertToT(nuAmount, nuRatio).result - const topUpAmount = initialStakerBalance.mul(2) - const expectedAmount = nuInTAmount.add(topUpAmount) - let tx - let blockTimestamp - - beforeEach(async () => { - await tokenStaking.setLegacyStakingProvider( - stakingProvider.address, - staker.address, - staker.address, - staker.address - ) - await tokenStaking.addLegacyStake( - stakingProvider.address, - 0, - nuInTAmount - ) - blockTimestamp = await lastBlockTime() - - await tokenStaking - .connect(staker) - .delegateVoting(stakingProvider.address, delegatee.address) - await tToken - .connect(deployer) - .transfer(stakingProvider.address, topUpAmount) - await tToken - .connect(stakingProvider) - .approve(tokenStaking.address, topUpAmount) - tx = await tokenStaking - .connect(stakingProvider) - .topUp(stakingProvider.address, topUpAmount) - }) - - it("should update only T staked amount", async () => { - await assertStakes( - stakingProvider.address, - topUpAmount, - Zero, - nuInTAmount - ) - }) - - it("should not update roles", async () => { - expect( - await tokenStaking.rolesOf(stakingProvider.address) - ).to.deep.equal([staker.address, staker.address, staker.address]) - }) - - it("should not update start staking timestamp", async () => { - expect( - await tokenStaking.getStartStakingTimestamp(stakingProvider.address) - ).to.equal(blockTimestamp) - }) - - it("should increase available amount to authorize", async () => { - expect( - await tokenStaking.getAvailableToAuthorize( - stakingProvider.address, - application1Mock.address - ) - ).to.equal(topUpAmount) - }) - - it("should transfer tokens to the staking contract", async () => { - expect(await tToken.balanceOf(tokenStaking.address)).to.equal( - topUpAmount - ) - }) - - it("should emit ToppedUp event", async () => { - await expect(tx) - .to.emit(tokenStaking, "ToppedUp") - .withArgs(stakingProvider.address, topUpAmount) - }) - - it("should increase the delegatee voting power", async () => { - expect(await tokenStaking.getVotes(delegatee.address)).to.equal( - expectedAmount - ) - }) - - it("should increase the total voting power", async () => { - const lastBlock = await mineBlocks(1) - expect(await tokenStaking.getPastTotalSupply(lastBlock - 1)).to.equal( - expectedAmount - ) - }) - }) - - context("when auto increase flag is enabled", () => { - const amount = initialStakerBalance.div(2) - const topUpAmount = initialStakerBalance - const expectedAmount = amount.add(topUpAmount) - const authorized1 = amount - const authorized2 = amount.div(2) - let tx - - beforeEach(async () => { - await tToken.connect(staker).approve(tokenStaking.address, amount) + await tToken.connect(staker).approve(tokenStaking.address, amount) await tokenStaking .connect(staker) .stake( @@ -2525,7 +1990,7 @@ describe("TokenStaking", () => { }) it("should update T staked amount", async () => { - await assertStakes(stakingProvider.address, expectedAmount, Zero, Zero) + await assertStake(stakingProvider.address, expectedAmount) }) it("should not increase available amount to authorize", async () => { @@ -2543,22 +2008,10 @@ describe("TokenStaking", () => { ).to.equal(amount.sub(authorized2)) }) - it("should increase min staked amount", async () => { + it("should increase authorized amount", async () => { expect( - await tokenStaking.getMinStaked(stakingProvider.address, StakeTypes.T) + await tokenStaking.getMaxAuthorization(stakingProvider.address) ).to.equal(expectedAmount) - expect( - await tokenStaking.getMinStaked( - stakingProvider.address, - StakeTypes.NU - ) - ).to.equal(0) - expect( - await tokenStaking.getMinStaked( - stakingProvider.address, - StakeTypes.KEEP - ) - ).to.equal(0) }) it("should emit ToppedUp event", async () => { @@ -2738,29 +2191,6 @@ describe("TokenStaking", () => { }) }) - context("when stake is only in Keep and Nu", () => { - it("should revert", async () => { - await tokenStaking.setLegacyStakingProvider( - stakingProvider.address, - staker.address, - beneficiary.address, - authorizer.address - ) - await tokenStaking.addLegacyStake( - stakingProvider.address, - initialStakerBalance, - initialStakerBalance - ) - - const amountToUnstake = 1 - await expect( - tokenStaking - .connect(stakingProvider) - .unstakeT(stakingProvider.address, amountToUnstake) - ).to.be.revertedWith("Too much to unstake") - }) - }) - context("when amount to unstake is more than not authorized", () => { it("should revert", async () => { const amount = initialStakerBalance @@ -2843,24 +2273,6 @@ describe("TokenStaking", () => { ).to.be.revertedWith("Can't unstake earlier than 24h") }) }) - - context("when another stake type was topped-up", () => { - it("should revert", async () => { - const nuAmount = initialStakerBalance - await tokenStaking.addLegacyStake( - stakingProvider.address, - 0, - nuAmount - ) - - const amountToUnstake = amount - await expect( - tokenStaking - .connect(staker) - .unstakeT(stakingProvider.address, amountToUnstake) - ).to.be.revertedWith("Can't unstake earlier than 24h") - }) - }) }) context("when unstake after minimum staking time passes", () => { @@ -2890,7 +2302,7 @@ describe("TokenStaking", () => { }) it("should update T staked amount", async () => { - await assertStakes(stakingProvider.address, Zero, Zero, Zero) + await assertStake(stakingProvider.address, Zero) }) it("should not update roles", async () => { @@ -2901,746 +2313,25 @@ describe("TokenStaking", () => { beneficiary.address, authorizer.address, ]) - }) - - it("should not update start staking timestamp", async () => { - expect( - await tokenStaking.getStartStakingTimestamp(stakingProvider.address) - ).to.equal(blockTimestamp) - }) - - it("should transfer tokens to the staker address", async () => { - expect(await tToken.balanceOf(tokenStaking.address)).to.equal(0) - expect(await tToken.balanceOf(staker.address)).to.equal(amount) - }) - - it("should emit Unstaked", async () => { - await expect(tx) - .to.emit(tokenStaking, "Unstaked") - .withArgs(stakingProvider.address, amount) - }) - }) - }) - - describe("unstakeKeep", () => { - context("when staking provider has no stake", () => { - it("should revert", async () => { - await expect( - tokenStaking.unstakeKeep(deployer.address) - ).to.be.revertedWith("Not owner or provider") - }) - }) - - context("when caller is not owner or staking provider", () => { - it("should revert", async () => { - await tToken - .connect(staker) - .approve(tokenStaking.address, initialStakerBalance) - await tokenStaking - .connect(staker) - .stake( - stakingProvider.address, - beneficiary.address, - authorizer.address, - initialStakerBalance - ) - await expect( - tokenStaking.connect(authorizer).unstakeKeep(stakingProvider.address) - ).to.be.revertedWith("Not owner or provider") - }) - }) - - context("when stake is only in T and Nu", () => { - it("should revert", async () => { - await tToken - .connect(staker) - .approve(tokenStaking.address, initialStakerBalance) - await tokenStaking - .connect(staker) - .stake( - stakingProvider.address, - beneficiary.address, - authorizer.address, - initialStakerBalance - ) - - await tokenStaking.addLegacyStake( - stakingProvider.address, - 0, - initialStakerBalance - ) - - await expect( - tokenStaking - .connect(stakingProvider) - .unstakeKeep(stakingProvider.address) - ).to.be.revertedWith("Nothing to unstake") - }) - }) - - context("when authorized amount is more than non-Keep stake", () => { - it("should revert", async () => { - const tAmount = initialStakerBalance - const keepAmount = initialStakerBalance - - await tokenStaking - .connect(deployer) - .approveApplication(application1Mock.address) - await tokenStaking.setLegacyStakingProvider( - stakingProvider.address, - staker.address, - beneficiary.address, - authorizer.address - ) - await tokenStaking.addLegacyStake( - stakingProvider.address, - keepAmount, - 0 - ) - - await tToken.connect(staker).approve(tokenStaking.address, tAmount) - await tokenStaking - .connect(staker) - .topUp(stakingProvider.address, tAmount) - - const authorized = tAmount.add(1) - await tokenStaking - .connect(authorizer) - .forceIncreaseAuthorization( - stakingProvider.address, - application1Mock.address, - authorized - ) - - await expect( - tokenStaking.connect(staker).unstakeKeep(stakingProvider.address) - ).to.be.revertedWith("Keep stake still authorized") - }) - }) - - context("when authorized amount is less than non-Keep stake", () => { - const tAmount = initialStakerBalance - const keepAmount = initialStakerBalance - const keepInTAmount = convertToT(keepAmount, keepRatio).result - const authorized = tAmount - let tx - let blockTimestamp - - beforeEach(async () => { - await tokenStaking - .connect(deployer) - .approveApplication(application1Mock.address) - - await tokenStaking.setLegacyStakingProvider( - stakingProvider.address, - staker.address, - beneficiary.address, - authorizer.address - ) - await tokenStaking.addLegacyStake( - stakingProvider.address, - keepInTAmount, - 0 - ) - blockTimestamp = await lastBlockTime() - - await tokenStaking - .connect(staker) - .delegateVoting(stakingProvider.address, delegatee.address) - - await tToken.connect(staker).approve(tokenStaking.address, tAmount) - await tokenStaking - .connect(staker) - .topUp(stakingProvider.address, tAmount) - - await tokenStaking - .connect(authorizer) - .increaseAuthorization( - stakingProvider.address, - application1Mock.address, - authorized - ) - - tx = await tokenStaking - .connect(stakingProvider) - .unstakeKeep(stakingProvider.address) - }) - - it("should set Keep staked amount to zero", async () => { - await assertStakes(stakingProvider.address, tAmount, Zero, Zero) - }) - - it("should not update roles", async () => { - expect( - await tokenStaking.rolesOf(stakingProvider.address) - ).to.deep.equal([ - staker.address, - beneficiary.address, - authorizer.address, - ]) - }) - - it("should not update start staking timestamp", async () => { - expect( - await tokenStaking.getStartStakingTimestamp(stakingProvider.address) - ).to.equal(blockTimestamp) - }) - - it("should decrease available amount to authorize", async () => { - expect( - await tokenStaking.getAvailableToAuthorize( - stakingProvider.address, - application1Mock.address - ) - ).to.equal(tAmount.sub(authorized)) - }) - - it("should update min staked amount", async () => { - expect( - await tokenStaking.getMinStaked(stakingProvider.address, StakeTypes.T) - ).to.equal(tAmount) - expect( - await tokenStaking.getMinStaked( - stakingProvider.address, - StakeTypes.NU - ) - ).to.equal(0) - expect( - await tokenStaking.getMinStaked( - stakingProvider.address, - StakeTypes.KEEP - ) - ).to.equal(0) - }) - - it("should emit Unstaked", async () => { - await expect(tx) - .to.emit(tokenStaking, "Unstaked") - .withArgs(stakingProvider.address, keepInTAmount) - }) - - it("should decrease the delegatee voting power", async () => { - expect(await tokenStaking.getVotes(delegatee.address)).to.equal(tAmount) - }) - - it("should decrease the total voting power", async () => { - const lastBlock = await mineBlocks(1) - expect(await tokenStaking.getPastTotalSupply(lastBlock - 1)).to.equal( - tAmount - ) - }) - }) - }) - - describe("unstakeNu", () => { - context("when staking provider has no stake", () => { - it("should revert", async () => { - await expect( - tokenStaking.unstakeNu(deployer.address) - ).to.be.revertedWith("Not owner or provider") - }) - }) - - context("when caller is not owner or staking provider", () => { - it("should revert", async () => { - await tokenStaking.setLegacyStakingProvider( - stakingProvider.address, - staker.address, - beneficiary.address, - authorizer.address - ) - await tokenStaking.addLegacyStake( - stakingProvider.address, - 0, - initialStakerBalance - ) - await expect( - tokenStaking.connect(authorizer).unstakeNu(stakingProvider.address) - ).to.be.revertedWith("Not owner or provider") - }) - }) - - context("when stake is only in Keep and T", () => { - it("should revert", async () => { - await tokenStaking.setLegacyStakingProvider( - stakingProvider.address, - staker.address, - beneficiary.address, - authorizer.address - ) - await tokenStaking.addLegacyStake( - stakingProvider.address, - initialStakerBalance, - 0 - ) - - await tToken - .connect(staker) - .approve(tokenStaking.address, initialStakerBalance) - await tokenStaking - .connect(staker) - .topUp(stakingProvider.address, initialStakerBalance) - - await expect( - tokenStaking - .connect(stakingProvider) - .unstakeNu(stakingProvider.address) - ).to.be.revertedWith("Nothing to unstake") - }) - }) - - context("when amount to unstake is more than not authorized", () => { - it("should revert", async () => { - const nuAmount = initialStakerBalance - const nuInTAmount = convertToT(nuAmount, nuRatio).result - await tokenStaking.setLegacyStakingProvider( - stakingProvider.address, - staker.address, - beneficiary.address, - authorizer.address - ) - await tokenStaking.addLegacyStake( - stakingProvider.address, - 0, - nuInTAmount - ) - - const authorized = nuInTAmount.div(3) - await tokenStaking - .connect(authorizer) - .forceIncreaseAuthorization( - stakingProvider.address, - application1Mock.address, - authorized - ) - - await expect( - tokenStaking - .connect(stakingProvider) - .unstakeNu(stakingProvider.address) - ).to.be.revertedWith("NU stake still authorized") - }) - }) - - context("when amount to unstake is less than not authorized", () => { - const tAmount = initialStakerBalance - const nuAmount = initialStakerBalance - const nuInTAmount = convertToT(nuAmount, nuRatio).result - const authorized = tAmount - const expectedNuAmount = 0 - const expectedNuInTAmount = 0 - const expectedUnstaked = nuInTAmount - let tx - let blockTimestamp - - beforeEach(async () => { - await tokenStaking.connect(deployer).setMinimumStakeAmount(1) - await tokenStaking - .connect(deployer) - .approveApplication(application1Mock.address) - await tokenStaking.setLegacyStakingProvider( - stakingProvider.address, - staker.address, - beneficiary.address, - authorizer.address - ) - await tokenStaking.addLegacyStake( - stakingProvider.address, - 0, - nuInTAmount - ) - blockTimestamp = await lastBlockTime() - - await tokenStaking - .connect(staker) - .delegateVoting(stakingProvider.address, delegatee.address) - await tToken.connect(staker).approve(tokenStaking.address, tAmount) - await tokenStaking - .connect(staker) - .topUp(stakingProvider.address, tAmount) - - await tokenStaking - .connect(authorizer) - .increaseAuthorization( - stakingProvider.address, - application1Mock.address, - authorized - ) - - await increaseTime(86400) // +24h - tx = await tokenStaking - .connect(stakingProvider) - .unstakeNu(stakingProvider.address) - }) - - it("should update Nu staked amount", async () => { - await assertStakes( - stakingProvider.address, - tAmount, - Zero, - expectedNuInTAmount - ) - expect(await tokenStaking.stakedNu(stakingProvider.address)).to.equal( - expectedNuAmount - ) - }) - - it("should not update roles", async () => { - expect( - await tokenStaking.rolesOf(stakingProvider.address) - ).to.deep.equal([ - staker.address, - beneficiary.address, - authorizer.address, - ]) - }) - - it("should start staking timestamp", async () => { - expect( - await tokenStaking.getStartStakingTimestamp(stakingProvider.address) - ).to.equal(blockTimestamp) - }) - - it("should decrease available amount to authorize", async () => { - expect( - await tokenStaking.getAvailableToAuthorize( - stakingProvider.address, - application1Mock.address - ) - ).to.equal(0) - }) - - it("should update min staked amount", async () => { - expect( - await tokenStaking.getMinStaked(stakingProvider.address, StakeTypes.T) - ).to.equal(tAmount) - expect( - await tokenStaking.getMinStaked( - stakingProvider.address, - StakeTypes.NU - ) - ).to.equal(0) - expect( - await tokenStaking.getMinStaked( - stakingProvider.address, - StakeTypes.KEEP - ) - ).to.equal(0) - }) - - it("should emit Unstaked", async () => { - await expect(tx) - .to.emit(tokenStaking, "Unstaked") - .withArgs(stakingProvider.address, expectedUnstaked) - }) - - it("should decrease the delegatee voting power", async () => { - expect(await tokenStaking.getVotes(delegatee.address)).to.equal(tAmount) - }) - - it("should decrease the total voting power", async () => { - const lastBlock = await mineBlocks(1) - expect(await tokenStaking.getPastTotalSupply(lastBlock - 1)).to.equal( - tAmount - ) - }) - }) - }) - - describe("unstakeAll", () => { - context("when staking provider has no stake", () => { - it("should revert", async () => { - await expect( - tokenStaking.unstakeAll(deployer.address) - ).to.be.revertedWith("Not owner or provider") - }) - }) - - context("when caller is not owner or staking provider", () => { - it("should revert", async () => { - await tToken - .connect(staker) - .approve(tokenStaking.address, initialStakerBalance) - await tokenStaking - .connect(staker) - .stake( - stakingProvider.address, - beneficiary.address, - authorizer.address, - initialStakerBalance - ) - await expect( - tokenStaking.connect(authorizer).unstakeAll(stakingProvider.address) - ).to.be.revertedWith("Not owner or provider") - }) - }) - - context("when authorized amount is not zero", () => { - it("should revert", async () => { - const amount = initialStakerBalance - await tokenStaking - .connect(deployer) - .approveApplication(application1Mock.address) - await tToken.connect(staker).approve(tokenStaking.address, amount) - await tokenStaking - .connect(staker) - .stake( - stakingProvider.address, - beneficiary.address, - authorizer.address, - amount - ) - const authorized = 1 - await tokenStaking - .connect(authorizer) - .increaseAuthorization( - stakingProvider.address, - application1Mock.address, - authorized - ) - - await expect( - tokenStaking - .connect(stakingProvider) - .unstakeAll(stakingProvider.address) - ).to.be.revertedWith("Stake still authorized") - }) - }) - - context("when unstake T before minimum staking time passes", () => { - it("should revert", async () => { - const amount = initialStakerBalance - const minAmount = 1 - await tToken.connect(staker).approve(tokenStaking.address, amount) - await tokenStaking - .connect(staker) - .stake( - stakingProvider.address, - beneficiary.address, - authorizer.address, - amount - ) - await tokenStaking.connect(deployer).setMinimumStakeAmount(minAmount) - - await expect( - tokenStaking.connect(staker).unstakeAll(stakingProvider.address) - ).to.be.revertedWith("Can't unstake earlier than 24h") - }) - }) - - context("when unstake Nu before minimum staking time passes", () => { - it("should revert", async () => { - const nuAmount = initialStakerBalance - await tokenStaking.setLegacyStakingProvider( - stakingProvider.address, - staker.address, - beneficiary.address, - authorizer.address - ) - await tokenStaking.addLegacyStake(stakingProvider.address, 0, nuAmount) - - await expect( - tokenStaking.connect(staker).unstakeAll(stakingProvider.address) - ).to.be.revertedWith("Can't unstake earlier than 24h") - }) - }) - - context("when unstake Keep before minimum time passes", () => { - it("should revert", async () => { - const keepAmount = initialStakerBalance - await tokenStaking.setLegacyStakingProvider( - stakingProvider.address, - staker.address, - beneficiary.address, - authorizer.address - ) - await tokenStaking.addLegacyStake( - stakingProvider.address, - keepAmount, - 0 - ) - - await expect( - tokenStaking.connect(staker).unstakeAll(stakingProvider.address) - ).to.be.revertedWith("Can't unstake earlier than 24h") - }) - }) - - const contextUnstakeAll = (preparation, tAmount, nuAmount, keepAmount) => { - const nuInTAmount = convertToT(nuAmount, nuRatio).result - const keepInTAmount = convertToT(keepAmount, keepRatio).result - let tx - let blockTimestamp - - beforeEach(async () => { - blockTimestamp = await preparation() - - tx = await tokenStaking - .connect(stakingProvider) - .unstakeAll(stakingProvider.address) - }) - - it("should update staked amount", async () => { - await assertStakes(stakingProvider.address, Zero, Zero, Zero) - }) - - it("should not update roles", async () => { - expect( - await tokenStaking.rolesOf(stakingProvider.address) - ).to.deep.equal([ - staker.address, - beneficiary.address, - authorizer.address, - ]) - }) - - it("should not update start staking timestamp", async () => { - expect( - await tokenStaking.getStartStakingTimestamp(stakingProvider.address) - ).to.equal(blockTimestamp) - }) - - it("should transfer tokens to the staker address", async () => { - expect(await tToken.balanceOf(tokenStaking.address)).to.equal(0) - expect(await tToken.balanceOf(staker.address)).to.equal( - initialStakerBalance - ) - }) - - it("should decrease available amount to authorize", async () => { - expect( - await tokenStaking.getAvailableToAuthorize( - stakingProvider.address, - application1Mock.address - ) - ).to.equal(0) - }) - - it("should update min staked amount", async () => { - expect( - await tokenStaking.getMinStaked(stakingProvider.address, StakeTypes.T) - ).to.equal(0) - expect( - await tokenStaking.getMinStaked( - stakingProvider.address, - StakeTypes.NU - ) - ).to.equal(0) - expect( - await tokenStaking.getMinStaked( - stakingProvider.address, - StakeTypes.KEEP - ) - ).to.equal(0) - }) - - it("should emit Unstaked", async () => { - await expect(tx) - .to.emit(tokenStaking, "Unstaked") - .withArgs( - stakingProvider.address, - nuInTAmount.add(keepInTAmount).add(tAmount) - ) - }) - } - - context( - "when unstake after minimum staking time passes for T stake", - () => { - // subtracting arbitrary values just to keep them different - const tAmount = initialStakerBalance.sub(1) - const nuAmount = initialStakerBalance.sub(2) - const keepAmount = initialStakerBalance.sub(3) - const nuInTAmount = convertToT(nuAmount, nuRatio).result - const keepInTAmount = convertToT(keepAmount, keepRatio).result - - contextUnstakeAll( - async () => { - await tokenStaking - .connect(deployer) - .approveApplication(application1Mock.address) - await tokenStaking.connect(deployer).setMinimumStakeAmount(1) - - // - // stake T - // - await tToken.connect(staker).approve(tokenStaking.address, tAmount) - await tokenStaking - .connect(staker) - .stake( - stakingProvider.address, - beneficiary.address, - authorizer.address, - tAmount - ) - const blockTimestamp = await lastBlockTime() - - await tokenStaking.addLegacyStake( - stakingProvider.address, - keepInTAmount, - nuInTAmount - ) - - await increaseTime(86400) // +24h - return blockTimestamp - }, - tAmount, - nuAmount, - keepAmount - ) - } - ) - - context( - "when unstake after minimum staking time passes for NU and KEEP stake", - () => { - // subtracting arbitrary values just to keep them different - const tAmount = initialStakerBalance.sub(3) - const nuAmount = initialStakerBalance.sub(1) - const keepAmount = initialStakerBalance.sub(2) - const nuInTAmount = convertToT(nuAmount, nuRatio).result - const keepInTAmount = convertToT(keepAmount, keepRatio).result - - contextUnstakeAll( - async () => { - await tokenStaking - .connect(deployer) - .approveApplication(application1Mock.address) - await tokenStaking.connect(deployer).setMinimumStakeAmount(1) + }) - // - // legacy stake NU and KEEP - // - await tokenStaking.setLegacyStakingProvider( - stakingProvider.address, - staker.address, - beneficiary.address, - authorizer.address - ) - await tokenStaking.addLegacyStake( - stakingProvider.address, - keepInTAmount, - nuInTAmount - ) - const blockTimestamp = await lastBlockTime() + it("should not update start staking timestamp", async () => { + expect( + await tokenStaking.getStartStakingTimestamp(stakingProvider.address) + ).to.equal(blockTimestamp) + }) - // - // top-up T - // - await tToken.connect(staker).approve(tokenStaking.address, tAmount) - await tokenStaking - .connect(staker) - .topUp(stakingProvider.address, tAmount) - - await increaseTime(86400) // +24h - return blockTimestamp - }, - tAmount, - nuAmount, - keepAmount - ) - } - ) + it("should transfer tokens to the staker address", async () => { + expect(await tToken.balanceOf(tokenStaking.address)).to.equal(0) + expect(await tToken.balanceOf(staker.address)).to.equal(amount) + }) + + it("should emit Unstaked", async () => { + await expect(tx) + .to.emit(tokenStaking, "Unstaked") + .withArgs(stakingProvider.address, amount) + }) + }) }) describe("setNotificationReward", () => { @@ -4336,12 +3027,7 @@ describe("TokenStaking", () => { }) it("should update staked amount", async () => { - await assertStakes( - stakingProvider.address, - expectedAmount, - Zero, - Zero - ) + await assertStake(stakingProvider.address, expectedAmount) }) it("should decrease the delegatee voting power", async () => { @@ -4462,7 +3148,7 @@ describe("TokenStaking", () => { }) it("should update staked amount", async () => { - await assertStakes(otherStaker.address, Zero, Zero, Zero) + await assertStake(otherStaker.address, Zero) }) it("should update index of queue", async () => { @@ -4587,12 +3273,12 @@ describe("TokenStaking", () => { await increaseTime(86400) // +24h await tokenStaking .connect(stakingProvider) - .unstakeAll(stakingProvider.address) + .unstakeT(stakingProvider.address, tAmount) tx = await tokenStaking.connect(auxiliaryAccount).processSlashing(1) }) it("should not update staked amount", async () => { - await assertStakes(stakingProvider.address, Zero, Zero, Zero) + await assertStake(stakingProvider.address, Zero) }) it("should update index of queue", async () => { @@ -4723,10 +3409,7 @@ describe("TokenStaking", () => { const ExtendedTokenStaking = await ethers.getContractFactory( "ExtendedTokenStaking" ) - extendedTokenStaking = await ExtendedTokenStaking.deploy( - tToken.address, - nucypherVendingMachine.address - ) + extendedTokenStaking = await ExtendedTokenStaking.deploy(tToken.address) await extendedTokenStaking.deployed() }) @@ -4843,324 +3526,10 @@ describe("TokenStaking", () => { ) }) - describe("forceUnstakeLegacy", () => { - const tAmount = initialStakerBalance - const keepInTStake = convertToT(initialStakerBalance, keepRatio).result - const nuInTStake = convertToT(initialStakerBalance, nuRatio).result - - beforeEach(async () => { - await tokenStaking - .connect(deployer) - .approveApplication(application1Mock.address) - await tokenStaking - .connect(deployer) - .approveApplication(application2Mock.address) - await tToken - .connect(staker) - .approve(tokenStaking.address, initialStakerBalance) - await tokenStaking - .connect(staker) - .stake(stakingProvider.address, staker.address, staker.address, tAmount) - }) - - context("when no legacy stake", () => { - it("should revert", async () => { - await tokenStaking - .connect(staker) - .increaseAuthorization( - stakingProvider.address, - application1Mock.address, - tAmount - ) - await expect( - tokenStaking["forceUnstakeLegacy(address)"](stakingProvider.address) - ).to.be.revertedWith("No legacy stake") - }) - }) - - context("when authorized only T stake", () => { - let tx - - beforeEach(async () => { - await tokenStaking.addLegacyStake( - stakingProvider.address, - keepInTStake, - nuInTStake - ) - await tokenStaking - .connect(staker) - .increaseAuthorization( - stakingProvider.address, - application1Mock.address, - tAmount - ) - await tokenStaking - .connect(staker) - .delegateVoting(stakingProvider.address, delegatee.address) - - tx = await tokenStaking["forceUnstakeLegacy(address)"]( - stakingProvider.address - ) - }) - - it("should update staked amount", async () => { - await assertStakes(stakingProvider.address, tAmount, Zero, Zero) - }) - - it("should decrease the delegatee voting power", async () => { - expect(await tokenStaking.getVotes(delegatee.address)).to.equal(tAmount) - }) - - it("should not decrease authorized amounts", async () => { - expect( - await tokenStaking.authorizedStake( - stakingProvider.address, - application1Mock.address - ) - ).to.equal(tAmount) - }) - - it("should not inform application", async () => { - await assertApplicationStakingProviders( - application1Mock, - stakingProvider.address, - tAmount, - Zero - ) - }) - - it("should emit Unstaked event", async () => { - await expect(tx) - .to.emit(tokenStaking, "Unstaked") - .withArgs(stakingProvider.address, nuInTStake.add(keepInTStake)) - }) - }) - - context("when authorized T, KEEP and NU stakes", () => { - const authorized1 = tAmount.add(keepInTStake).add(nuInTStake) - const authorized2 = nuInTStake.add(keepInTStake) - const deauth = authorized1.sub(tAmount).sub(1) - let tx - - beforeEach(async () => { - await tokenStaking.addLegacyStake( - stakingProvider.address, - keepInTStake, - nuInTStake - ) - await tokenStaking - .connect(staker) - .forceIncreaseAuthorization( - stakingProvider.address, - application1Mock.address, - authorized1 - ) - await tokenStaking - .connect(staker) - .forceIncreaseAuthorization( - stakingProvider.address, - application2Mock.address, - authorized2 - ) - await tokenStaking - .connect(staker) - ["requestAuthorizationDecrease(address,address,uint96)"]( - stakingProvider.address, - application1Mock.address, - deauth - ) - await tokenStaking - .connect(staker) - .delegateVoting(stakingProvider.address, delegatee.address) - - tx = await tokenStaking["forceUnstakeLegacy(address)"]( - stakingProvider.address - ) - }) - - it("should update staked amount", async () => { - await assertStakes(stakingProvider.address, tAmount, Zero, Zero) - }) - - it("should decrease the delegatee voting power", async () => { - expect(await tokenStaking.getVotes(delegatee.address)).to.equal(tAmount) - }) - - it("should decrease authorized amounts", async () => { - expect( - await tokenStaking.authorizedStake( - stakingProvider.address, - application1Mock.address - ) - ).to.equal(tAmount) - expect( - await tokenStaking.authorizedStake( - stakingProvider.address, - application2Mock.address - ) - ).to.equal(tAmount) - }) - - it("should inform application", async () => { - await assertApplicationStakingProviders( - application1Mock, - stakingProvider.address, - tAmount, - Zero - ) - await assertApplicationStakingProviders( - application2Mock, - stakingProvider.address, - tAmount, - Zero - ) - }) - - it("should emit Unstaked and AuthorizationInvoluntaryDecreased event", async () => { - await expect(tx) - .to.emit(tokenStaking, "Unstaked") - .withArgs(stakingProvider.address, nuInTStake.add(keepInTStake)) - await expect(tx) - .to.emit(tokenStaking, "AuthorizationInvoluntaryDecreased") - .withArgs( - stakingProvider.address, - application1Mock.address, - authorized1, - tAmount, - true - ) - await expect(tx) - .to.emit(tokenStaking, "AuthorizationInvoluntaryDecreased") - .withArgs( - stakingProvider.address, - application2Mock.address, - authorized2, - tAmount, - true - ) - }) - }) - - context("when unstake multiple legacy stakes", () => { - let tx - - beforeEach(async () => { - await tokenStaking.addLegacyStake( - stakingProvider.address, - keepInTStake, - 0 - ) - await tokenStaking.setLegacyStakingProvider( - stakingProvider.address, - staker.address, - beneficiary.address, - authorizer.address - ) - await tokenStaking.addLegacyStake(otherStaker.address, 0, nuInTStake) - - await tokenStaking - .connect(staker) - .forceIncreaseAuthorization( - stakingProvider.address, - application1Mock.address, - tAmount.add(keepInTStake) - ) - await tokenStaking - .connect(staker) - .forceIncreaseAuthorization( - otherStaker.address, - application1Mock.address, - nuInTStake - ) - - tx = await tokenStaking["forceUnstakeLegacy(address[])"]([ - stakingProvider.address, - otherStaker.address, - ]) - }) - - it("should update staked amount", async () => { - await assertStakes(stakingProvider.address, tAmount, Zero, Zero) - await assertStakes(otherStaker.address, Zero, Zero, Zero) - }) - - it("should decrease authorized amounts", async () => { - expect( - await tokenStaking.authorizedStake( - stakingProvider.address, - application1Mock.address - ) - ).to.equal(tAmount) - expect( - await tokenStaking.authorizedStake( - otherStaker.address, - application1Mock.address - ) - ).to.equal(Zero) - }) - - it("should inform application", async () => { - await assertApplicationStakingProviders( - application1Mock, - stakingProvider.address, - tAmount, - Zero - ) - await assertApplicationStakingProviders( - application1Mock, - otherStaker.address, - Zero, - Zero - ) - }) - - it("should emit Unstaked and AuthorizationInvoluntaryDecreased event", async () => { - await expect(tx) - .to.emit(tokenStaking, "Unstaked") - .withArgs(stakingProvider.address, keepInTStake) - await expect(tx) - .to.emit(tokenStaking, "Unstaked") - .withArgs(otherStaker.address, nuInTStake) - await expect(tx) - .to.emit(tokenStaking, "AuthorizationInvoluntaryDecreased") - .withArgs( - stakingProvider.address, - application1Mock.address, - tAmount.add(keepInTStake), - tAmount, - true - ) - await expect(tx) - .to.emit(tokenStaking, "AuthorizationInvoluntaryDecreased") - .withArgs( - otherStaker.address, - application1Mock.address, - nuInTStake, - Zero, - true - ) - }) - }) - }) - - async function assertStakes( - address, - expectedTStake, - expectedKeepInTStake, - expectedNuInTStake - ) { - expect( - (await tokenStaking.stakes(address)).tStake, - "invalid tStake" - ).to.equal(expectedTStake) - expect( - (await tokenStaking.stakes(address)).keepInTStake, - "invalid keepInTStake" - ).to.equal(expectedKeepInTStake) - expect( - (await tokenStaking.stakes(address)).nuInTStake, - "invalid nuInTStake" - ).to.equal(expectedNuInTStake) + async function assertStake(address, expectedTStake) { + expect(await tokenStaking.stakeAmount(address), "invalid tStake").to.equal( + expectedTStake + ) } async function assertApplicationStakingProviders( diff --git a/yarn.lock b/yarn.lock index 0f302329..e488deef 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1269,14 +1269,6 @@ resolved "https://registry.yarnpkg.com/@keep-network/hardhat-helpers/-/hardhat-helpers-0.6.0-pre.8.tgz#6e0722889a0132dabed5182fb32f6424ff4a77d0" integrity sha512-51oLHceBubutBYxfVk2pLjgyhvpcDC1ahKM3V9lOiTa9lbWyY18Dza7rnM9V04kq+8DbweQRM0M9/f+K26nl9g== -"@keep-network/keep-core@>1.8.1-dev <1.8.1-goerli": - version "1.8.1-dev.0" - resolved "https://registry.yarnpkg.com/@keep-network/keep-core/-/keep-core-1.8.1-dev.0.tgz#d95864b25800214de43d8840376a68336cb12055" - integrity sha512-gFXkgN4PYOYCZ14AskL7fZHEFW5mu3BDd+TJKBuKZc1q9CgRMOK+dxpJnSctxmSH1tV+Ln9v9yqlSkfPCoiBHw== - dependencies: - "@openzeppelin/upgrades" "^2.7.2" - openzeppelin-solidity "2.4.0" - "@keep-network/prettier-config-keep@github:keep-network/prettier-config-keep": version "0.0.1" resolved "https://codeload.github.com/keep-network/prettier-config-keep/tar.gz/a1a333e7ac49928a0f6ed39421906dd1e46ab0f3"