ETH Price: $2,488.65 (+3.53%)
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Set Governance125582052021-06-03 0:00:151252 days ago1622678415IN
0xdc66DBa5...9d83573cd
0 ETH0.0004582517
Set Strategy119627962021-03-03 3:12:051343 days ago1614741125IN
0xdc66DBa5...9d83573cd
0 ETH0.003340177
0x60806040119623952021-03-03 1:33:411344 days ago1614735221IN
 Create: Voter
0 ETH0.0990803677

View more zero value Internal Transactions in Advanced View mode

Advanced mode:
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
Voter

Compiler Version
v0.5.17+commit.d19bba13

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, GNU AGPLv3 license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2021-03-03
*/

// SPDX-License-Identifier: AGPL-3.0

pragma solidity ^0.5.17;

interface IERC20 {
    function totalSupply() external view returns (uint256);
    function balanceOf(address account) external view returns (uint256);
    function transfer(address recipient, uint256 amount) external returns (bool);
    function allowance(address owner, address spender) external view returns (uint256);
    function decimals() external view returns (uint);
    function approve(address spender, uint256 amount) external returns (bool);
    function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);
    event Transfer(address indexed from, address indexed to, uint256 value);
    event Approval(address indexed owner, address indexed spender, uint256 value);
}

library SafeMath {
    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        require(c >= a, "SafeMath: addition overflow");

        return c;
    }
    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return sub(a, b, "SafeMath: subtraction overflow");
    }
    function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b <= a, errorMessage);
        uint256 c = a - b;

        return c;
    }
    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        if (a == 0) {
            return 0;
        }

        uint256 c = a * b;
        require(c / a == b, "SafeMath: multiplication overflow");

        return c;
    }
    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return div(a, b, "SafeMath: division by zero");
    }
    function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        // Solidity only automatically asserts when dividing by 0
        require(b > 0, errorMessage);
        uint256 c = a / b;

        return c;
    }
    function mod(uint256 a, uint256 b) internal pure returns (uint256) {
        return mod(a, b, "SafeMath: modulo by zero");
    }
    function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b != 0, errorMessage);
        return a % b;
    }
}

library Address {
    function isContract(address account) internal view returns (bool) {
        bytes32 codehash;
        bytes32 accountHash = 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470;
        // solhint-disable-next-line no-inline-assembly
        assembly { codehash := extcodehash(account) }
        return (codehash != 0x0 && codehash != accountHash);
    }
    function toPayable(address account) internal pure returns (address payable) {
        return address(uint160(account));
    }
    function sendValue(address payable recipient, uint256 amount) internal {
        require(address(this).balance >= amount, "Address: insufficient balance");

        // solhint-disable-next-line avoid-call-value
        (bool success, ) = recipient.call.value(amount)("");
        require(success, "Address: unable to send value, recipient may have reverted");
    }
}

library SafeERC20 {
    using SafeMath for uint256;
    using Address for address;

    function safeTransfer(IERC20 token, address to, uint256 value) internal {
        callOptionalReturn(token, abi.encodeWithSelector(token.transfer.selector, to, value));
    }

    function safeTransferFrom(IERC20 token, address from, address to, uint256 value) internal {
        callOptionalReturn(token, abi.encodeWithSelector(token.transferFrom.selector, from, to, value));
    }

    function safeApprove(IERC20 token, address spender, uint256 value) internal {
        require((value == 0) || (token.allowance(address(this), spender) == 0),
            "SafeERC20: approve from non-zero to non-zero allowance"
        );
        callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, value));
    }
    function callOptionalReturn(IERC20 token, bytes memory data) private {
        require(address(token).isContract(), "SafeERC20: call to non-contract");

        // solhint-disable-next-line avoid-low-level-calls
        (bool success, bytes memory returndata) = address(token).call(data);
        require(success, "SafeERC20: low-level call failed");

        if (returndata.length > 0) { // Return data is optional
            // solhint-disable-next-line max-line-length
            require(abi.decode(returndata, (bool)), "SafeERC20: ERC20 operation did not succeed");
        }
    }
}

interface Controller {
    function vaults(address) external view returns (address);
    function rewards() external view returns (address);
}

/*

 A strategy must implement the following calls;
 
 - deposit()
 - withdraw(address) must exclude any tokens used in the yield - Controller role - withdraw should return to Controller
 - withdraw(uint) - Controller | Vault role - withdraw should always return to vault
 - withdrawAll() - Controller | Vault role - withdraw should always return to vault
 - balanceOf()
 
 Where possible, strategies must remain as immutable as possible, instead of updating variables, we update the contract by linking it in the controller
 
*/

interface Gauge {
    function deposit(uint) external;
    function balanceOf(address) external view returns (uint);
    function withdraw(uint) external;
}

interface Mintr {
    function mint(address) external;
}

interface Uni {
    function swapExactTokensForTokens(uint, uint, address[] calldata, address, uint) external;
}

interface yERC20 {
  function deposit(uint256 _amount) external;
  function withdraw(uint256 _amount) external;
}

interface ICurveFi {

  function get_virtual_price() external view returns (uint);
  function add_liquidity(
    uint256[4] calldata amounts,
    uint256 min_mint_amount
  ) external;
  function remove_liquidity_imbalance(
    uint256[4] calldata amounts,
    uint256 max_burn_amount
  ) external;
  function remove_liquidity(
    uint256 _amount,
    uint256[4] calldata amounts
  ) external;
  function exchange(
    int128 from, int128 to, uint256 _from_amount, uint256 _min_to_amount
  ) external;
}

interface VoteEscrow {
    function create_lock(uint, uint) external;
    function increase_amount(uint) external;
    function withdraw() external;
}

contract Voter {
    using SafeERC20 for IERC20;
    using Address for address;
    using SafeMath for uint256;
    
    address constant public want = address(0xdF5e0e81Dff6FAF3A7e52BA697820c5e32D806A8);
    address constant public pool = address(0xFA712EE4788C042e2B7BB55E6cb8ec569C4530c1);
    address constant public mintr = address(0xd061D61a4d941c39E5453435B6345Dc261C2fcE0);
    address constant public crv = address(0xD533a949740bb3306d119CC777fa900bA034cd52);
    
    address constant public escrow = address(0x5f3b5DfEb7B28CDbD7FAba78963EE202a494e2A2);
    
    address public governance;
    address public strategy;
    
    constructor() public {
        governance = msg.sender;
    }
    
    function getName() external pure returns (string memory) {
        return "Voter";
    }
    
    function setStrategy(address _strategy) external {
        require(msg.sender == governance, "!governance");
        strategy = _strategy;
    }
    
    function deposit() public {
        uint _want = IERC20(want).balanceOf(address(this));
        if (_want > 0) {
            IERC20(want).safeApprove(pool, 0);
            IERC20(want).safeApprove(pool, _want);
            Gauge(pool).deposit(_want);
        }
    }
    
    // Controller only function for creating additional rewards from dust
    function withdraw(IERC20 _asset) external returns (uint balance) {
        require(msg.sender == strategy, "!controller");
        balance = _asset.balanceOf(address(this));
        _asset.safeTransfer(strategy, balance);
    }
    
    // Withdraw partial funds, normally used with a vault withdrawal
    function withdraw(uint _amount) external {
        require(msg.sender == strategy, "!controller");
        uint _balance = IERC20(want).balanceOf(address(this));
        if (_balance < _amount) {
            _amount = _withdrawSome(_amount.sub(_balance));
            _amount = _amount.add(_balance);
        }
        IERC20(want).safeTransfer(strategy, _amount);
    }
    
    // Withdraw all funds, normally used when migrating strategies
    function withdrawAll() external returns (uint balance) {
        require(msg.sender == strategy, "!controller");
        _withdrawAll();
        
        
        balance = IERC20(want).balanceOf(address(this));
        IERC20(want).safeTransfer(strategy, balance);
    }
    
    function _withdrawAll() internal {
        Gauge(pool).withdraw(Gauge(pool).balanceOf(address(this)));
    }
    
    function createLock(uint _value, uint _unlockTime) external {
        require(msg.sender == strategy || msg.sender == governance, "!authorized");
        IERC20(crv).safeApprove(escrow, 0);
        IERC20(crv).safeApprove(escrow, _value);
        VoteEscrow(escrow).create_lock(_value, _unlockTime);
    }
    
    function increaseAmount(uint _value) external {
        require(msg.sender == strategy || msg.sender == governance, "!authorized");
        IERC20(crv).safeApprove(escrow, 0);
        IERC20(crv).safeApprove(escrow, _value);
        VoteEscrow(escrow).increase_amount(_value);
    }
    
    function release() external {
        require(msg.sender == strategy || msg.sender == governance, "!authorized");
        VoteEscrow(escrow).withdraw();
    }
    
    function _withdrawSome(uint256 _amount) internal returns (uint) {
        Gauge(pool).withdraw(_amount);
        return _amount;
    }
    
    function balanceOfWant() public view returns (uint) {
        return IERC20(want).balanceOf(address(this));
    }
    
    function balanceOfPool() public view returns (uint) {
        return Gauge(pool).balanceOf(address(this));
    }
    
    function balanceOf() public view returns (uint) {
        return balanceOfWant()
               .add(balanceOfPool());
    }
    
    function setGovernance(address _governance) external {
        require(msg.sender == governance, "!governance");
        governance = _governance;
    }
    
    function execute(address to, uint value, bytes calldata data) external returns (bool, bytes memory) {
        require(msg.sender == strategy || msg.sender == governance, "!governance");
        (bool success, bytes memory result) = to.call.value(value)(data);
        
        return (success, result);
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"constant":true,"inputs":[],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"balanceOfPool","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"balanceOfWant","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"_value","type":"uint256"},{"internalType":"uint256","name":"_unlockTime","type":"uint256"}],"name":"createLock","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"crv","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"deposit","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"escrow","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"execute","outputs":[{"internalType":"bool","name":"","type":"bool"},{"internalType":"bytes","name":"","type":"bytes"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"getName","outputs":[{"internalType":"string","name":"","type":"string"}],"payable":false,"stateMutability":"pure","type":"function"},{"constant":true,"inputs":[],"name":"governance","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"_value","type":"uint256"}],"name":"increaseAmount","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"mintr","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"pool","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"release","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":"_strategy","type":"address"}],"name":"setStrategy","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"strategy","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"want","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"withdraw","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"contract IERC20","name":"_asset","type":"address"}],"name":"withdraw","outputs":[{"internalType":"uint256","name":"balance","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"withdrawAll","outputs":[{"internalType":"uint256","name":"balance","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"}]

608060405234801561001057600080fd5b50600080546001600160a01b031916331790556115ee806100326000396000f3fe608060405234801561001057600080fd5b50600436106101375760003560e01c8063722713f7116100b8578063b52c05fe1161007c578063b52c05fe146102dd578063b61d27f614610300578063c1a3d44c14610408578063d0e30db014610410578063d1e61dcb14610418578063e2fdcc171461042057610137565b8063722713f714610297578063853828b61461029f57806386d1a69f146102a7578063a8c62e76146102af578063ab033ea9146102b757610137565b80632e1a7d4d116100ff5780632e1a7d4d1461021e57806333a100ca1461023b57806351cff8d9146102615780635aa6e675146102875780636a4874a11461028f57610137565b8063115880861461013c57806315456eba1461015657806316f0115b1461017557806317d7de7c146101995780631f1fcd5114610216575b600080fd5b610144610428565b60408051918252519081900360200190f35b6101736004803603602081101561016c57600080fd5b50356104af565b005b61017d6105f9565b604080516001600160a01b039092168252519081900360200190f35b6101a1610611565b6040805160208082528351818301528351919283929083019185019080838360005b838110156101db5781810151838201526020016101c3565b50505050905090810190601f1680156102085780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b61017d610630565b6101736004803603602081101561023457600080fd5b5035610648565b6101736004803603602081101561025157600080fd5b50356001600160a01b0316610783565b6101446004803603602081101561027757600080fd5b50356001600160a01b03166107f2565b61017d6108dc565b61017d6108eb565b610144610903565b610144610929565b610173610a33565b61017d610afe565b610173600480360360208110156102cd57600080fd5b50356001600160a01b0316610b0d565b610173600480360360408110156102f357600080fd5b5080359060200135610b7c565b6103856004803603606081101561031657600080fd5b6001600160a01b038235169160208101359181019060608101604082013564010000000081111561034657600080fd5b82018360208201111561035857600080fd5b8035906020019184600183028401116401000000008311171561037a57600080fd5b509092509050610cc7565b604051808315151515815260200180602001828103825283818151815260200191508051906020019080838360005b838110156103cc5781810151838201526020016103b4565b50505050905090810190601f1680156103f95780820380516001836020036101000a031916815260200191505b50935050505060405180910390f35b610144610da6565b610173610dfb565b61017d610f54565b61017d610f6c565b604080516370a0823160e01b8152306004820152905160009173fa712ee4788c042e2b7bb55e6cb8ec569c4530c1916370a0823191602480820192602092909190829003018186803b15801561047d57600080fd5b505afa158015610491573d6000803e3d6000fd5b505050506040513d60208110156104a757600080fd5b505190505b90565b6001546001600160a01b03163314806104d257506000546001600160a01b031633145b610511576040805162461bcd60e51b815260206004820152600b60248201526a08585d5d1a1bdc9a5e995960aa1b604482015290519081900360640190fd5b61054b73d533a949740bb3306d119cc777fa900ba034cd52735f3b5dfeb7b28cdbd7faba78963ee202a494e2a2600063ffffffff610f8416565b61058473d533a949740bb3306d119cc777fa900ba034cd52735f3b5dfeb7b28cdbd7faba78963ee202a494e2a28363ffffffff610f8416565b735f3b5dfeb7b28cdbd7faba78963ee202a494e2a26001600160a01b0316634957677c826040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b1580156105de57600080fd5b505af11580156105f2573d6000803e3d6000fd5b5050505050565b73fa712ee4788c042e2b7bb55e6cb8ec569c4530c181565b6040805180820190915260058152642b37ba32b960d91b602082015290565b73df5e0e81dff6faf3a7e52ba697820c5e32d806a881565b6001546001600160a01b03163314610695576040805162461bcd60e51b815260206004820152600b60248201526a10b1b7b73a3937b63632b960a91b604482015290519081900360640190fd5b604080516370a0823160e01b8152306004820152905160009173df5e0e81dff6faf3a7e52ba697820c5e32d806a8916370a0823191602480820192602092909190829003018186803b1580156106ea57600080fd5b505afa1580156106fe573d6000803e3d6000fd5b505050506040513d602081101561071457600080fd5b505190508181101561074d57610738610733838363ffffffff61109c16565b6110e5565b915061074a828263ffffffff61115f16565b91505b60015461077f9073df5e0e81dff6faf3a7e52ba697820c5e32d806a8906001600160a01b03168463ffffffff6111b916565b5050565b6000546001600160a01b031633146107d0576040805162461bcd60e51b815260206004820152600b60248201526a21676f7665726e616e636560a81b604482015290519081900360640190fd5b600180546001600160a01b0319166001600160a01b0392909216919091179055565b6001546000906001600160a01b03163314610842576040805162461bcd60e51b815260206004820152600b60248201526a10b1b7b73a3937b63632b960a91b604482015290519081900360640190fd5b604080516370a0823160e01b815230600482015290516001600160a01b038416916370a08231916024808301926020929190829003018186803b15801561088857600080fd5b505afa15801561089c573d6000803e3d6000fd5b505050506040513d60208110156108b257600080fd5b50516001549091506108d7906001600160a01b0384811691168363ffffffff6111b916565b919050565b6000546001600160a01b031681565b73d533a949740bb3306d119cc777fa900ba034cd5281565b6000610924610910610428565b610918610da6565b9063ffffffff61115f16565b905090565b6001546000906001600160a01b03163314610979576040805162461bcd60e51b815260206004820152600b60248201526a10b1b7b73a3937b63632b960a91b604482015290519081900360640190fd5b61098161120b565b604080516370a0823160e01b8152306004820152905173df5e0e81dff6faf3a7e52ba697820c5e32d806a8916370a08231916024808301926020929190829003018186803b1580156109d257600080fd5b505afa1580156109e6573d6000803e3d6000fd5b505050506040513d60208110156109fc57600080fd5b50516001549091506104ac9073df5e0e81dff6faf3a7e52ba697820c5e32d806a8906001600160a01b03168363ffffffff6111b916565b6001546001600160a01b0316331480610a5657506000546001600160a01b031633145b610a95576040805162461bcd60e51b815260206004820152600b60248201526a08585d5d1a1bdc9a5e995960aa1b604482015290519081900360640190fd5b735f3b5dfeb7b28cdbd7faba78963ee202a494e2a26001600160a01b0316633ccfd60b6040518163ffffffff1660e01b8152600401600060405180830381600087803b158015610ae457600080fd5b505af1158015610af8573d6000803e3d6000fd5b50505050565b6001546001600160a01b031681565b6000546001600160a01b03163314610b5a576040805162461bcd60e51b815260206004820152600b60248201526a21676f7665726e616e636560a81b604482015290519081900360640190fd5b600080546001600160a01b0319166001600160a01b0392909216919091179055565b6001546001600160a01b0316331480610b9f57506000546001600160a01b031633145b610bde576040805162461bcd60e51b815260206004820152600b60248201526a08585d5d1a1bdc9a5e995960aa1b604482015290519081900360640190fd5b610c1873d533a949740bb3306d119cc777fa900ba034cd52735f3b5dfeb7b28cdbd7faba78963ee202a494e2a2600063ffffffff610f8416565b610c5173d533a949740bb3306d119cc777fa900ba034cd52735f3b5dfeb7b28cdbd7faba78963ee202a494e2a28463ffffffff610f8416565b604080516365fc387360e01b815260048101849052602481018390529051735f3b5dfeb7b28cdbd7faba78963ee202a494e2a2916365fc387391604480830192600092919082900301818387803b158015610cab57600080fd5b505af1158015610cbf573d6000803e3d6000fd5b505050505050565b6001546000906060906001600160a01b0316331480610cf057506000546001600160a01b031633145b610d2f576040805162461bcd60e51b815260206004820152600b60248201526a21676f7665726e616e636560a81b604482015290519081900360640190fd5b60006060876001600160a01b0316878787604051808383808284376040519201945060009350909150508083038185875af1925050503d8060008114610d91576040519150601f19603f3d011682016040523d82523d6000602084013e610d96565b606091505b5090999098509650505050505050565b604080516370a0823160e01b8152306004820152905160009173df5e0e81dff6faf3a7e52ba697820c5e32d806a8916370a0823191602480820192602092909190829003018186803b15801561047d57600080fd5b604080516370a0823160e01b8152306004820152905160009173df5e0e81dff6faf3a7e52ba697820c5e32d806a8916370a0823191602480820192602092909190829003018186803b158015610e5057600080fd5b505afa158015610e64573d6000803e3d6000fd5b505050506040513d6020811015610e7a57600080fd5b505190508015610f5157610ebe73df5e0e81dff6faf3a7e52ba697820c5e32d806a873fa712ee4788c042e2b7bb55e6cb8ec569c4530c1600063ffffffff610f8416565b610ef773df5e0e81dff6faf3a7e52ba697820c5e32d806a873fa712ee4788c042e2b7bb55e6cb8ec569c4530c18363ffffffff610f8416565b73fa712ee4788c042e2b7bb55e6cb8ec569c4530c16001600160a01b031663b6b55f25826040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b1580156105de57600080fd5b50565b73d061d61a4d941c39e5453435b6345dc261c2fce081565b735f3b5dfeb7b28cdbd7faba78963ee202a494e2a281565b80158061100a575060408051636eb1769f60e11b81523060048201526001600160a01b03848116602483015291519185169163dd62ed3e91604480820192602092909190829003018186803b158015610fdc57600080fd5b505afa158015610ff0573d6000803e3d6000fd5b505050506040513d602081101561100657600080fd5b5051155b6110455760405162461bcd60e51b81526004018080602001828103825260368152602001806115846036913960400191505060405180910390fd5b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663095ea7b360e01b1790526110979084906112ce565b505050565b60006110de83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611486565b9392505050565b600073fa712ee4788c042e2b7bb55e6cb8ec569c4530c16001600160a01b0316632e1a7d4d836040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b15801561114157600080fd5b505af1158015611155573d6000803e3d6000fd5b5093949350505050565b6000828201838110156110de576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b1790526110979084906112ce565b604080516370a0823160e01b8152306004820152905173fa712ee4788c042e2b7bb55e6cb8ec569c4530c191632e1a7d4d9183916370a08231916024808301926020929190829003018186803b15801561126457600080fd5b505afa158015611278573d6000803e3d6000fd5b505050506040513d602081101561128e57600080fd5b5051604080516001600160e01b031960e085901b168152600481019290925251602480830192600092919082900301818387803b158015610ae457600080fd5b6112e0826001600160a01b031661151d565b611331576040805162461bcd60e51b815260206004820152601f60248201527f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e747261637400604482015290519081900360640190fd5b60006060836001600160a01b0316836040518082805190602001908083835b6020831061136f5780518252601f199092019160209182019101611350565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d80600081146113d1576040519150601f19603f3d011682016040523d82523d6000602084013e6113d6565b606091505b50915091508161142d576040805162461bcd60e51b815260206004820181905260248201527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564604482015290519081900360640190fd5b805115610af85780806020019051602081101561144957600080fd5b5051610af85760405162461bcd60e51b815260040180806020018281038252602a81526020018061155a602a913960400191505060405180910390fd5b600081848411156115155760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b838110156114da5781810151838201526020016114c2565b50505050905090810190601f1680156115075780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b6000813f7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47081158015906115515750808214155b94935050505056fe5361666545524332303a204552433230206f7065726174696f6e20646964206e6f7420737563636565645361666545524332303a20617070726f76652066726f6d206e6f6e2d7a65726f20746f206e6f6e2d7a65726f20616c6c6f77616e6365a265627a7a72315820f0614e11eb6f34c70396c3eb1a19a04a29858035c73da591187bd75e7f0d4fcd64736f6c63430005110032

Deployed Bytecode

0x608060405234801561001057600080fd5b50600436106101375760003560e01c8063722713f7116100b8578063b52c05fe1161007c578063b52c05fe146102dd578063b61d27f614610300578063c1a3d44c14610408578063d0e30db014610410578063d1e61dcb14610418578063e2fdcc171461042057610137565b8063722713f714610297578063853828b61461029f57806386d1a69f146102a7578063a8c62e76146102af578063ab033ea9146102b757610137565b80632e1a7d4d116100ff5780632e1a7d4d1461021e57806333a100ca1461023b57806351cff8d9146102615780635aa6e675146102875780636a4874a11461028f57610137565b8063115880861461013c57806315456eba1461015657806316f0115b1461017557806317d7de7c146101995780631f1fcd5114610216575b600080fd5b610144610428565b60408051918252519081900360200190f35b6101736004803603602081101561016c57600080fd5b50356104af565b005b61017d6105f9565b604080516001600160a01b039092168252519081900360200190f35b6101a1610611565b6040805160208082528351818301528351919283929083019185019080838360005b838110156101db5781810151838201526020016101c3565b50505050905090810190601f1680156102085780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b61017d610630565b6101736004803603602081101561023457600080fd5b5035610648565b6101736004803603602081101561025157600080fd5b50356001600160a01b0316610783565b6101446004803603602081101561027757600080fd5b50356001600160a01b03166107f2565b61017d6108dc565b61017d6108eb565b610144610903565b610144610929565b610173610a33565b61017d610afe565b610173600480360360208110156102cd57600080fd5b50356001600160a01b0316610b0d565b610173600480360360408110156102f357600080fd5b5080359060200135610b7c565b6103856004803603606081101561031657600080fd5b6001600160a01b038235169160208101359181019060608101604082013564010000000081111561034657600080fd5b82018360208201111561035857600080fd5b8035906020019184600183028401116401000000008311171561037a57600080fd5b509092509050610cc7565b604051808315151515815260200180602001828103825283818151815260200191508051906020019080838360005b838110156103cc5781810151838201526020016103b4565b50505050905090810190601f1680156103f95780820380516001836020036101000a031916815260200191505b50935050505060405180910390f35b610144610da6565b610173610dfb565b61017d610f54565b61017d610f6c565b604080516370a0823160e01b8152306004820152905160009173fa712ee4788c042e2b7bb55e6cb8ec569c4530c1916370a0823191602480820192602092909190829003018186803b15801561047d57600080fd5b505afa158015610491573d6000803e3d6000fd5b505050506040513d60208110156104a757600080fd5b505190505b90565b6001546001600160a01b03163314806104d257506000546001600160a01b031633145b610511576040805162461bcd60e51b815260206004820152600b60248201526a08585d5d1a1bdc9a5e995960aa1b604482015290519081900360640190fd5b61054b73d533a949740bb3306d119cc777fa900ba034cd52735f3b5dfeb7b28cdbd7faba78963ee202a494e2a2600063ffffffff610f8416565b61058473d533a949740bb3306d119cc777fa900ba034cd52735f3b5dfeb7b28cdbd7faba78963ee202a494e2a28363ffffffff610f8416565b735f3b5dfeb7b28cdbd7faba78963ee202a494e2a26001600160a01b0316634957677c826040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b1580156105de57600080fd5b505af11580156105f2573d6000803e3d6000fd5b5050505050565b73fa712ee4788c042e2b7bb55e6cb8ec569c4530c181565b6040805180820190915260058152642b37ba32b960d91b602082015290565b73df5e0e81dff6faf3a7e52ba697820c5e32d806a881565b6001546001600160a01b03163314610695576040805162461bcd60e51b815260206004820152600b60248201526a10b1b7b73a3937b63632b960a91b604482015290519081900360640190fd5b604080516370a0823160e01b8152306004820152905160009173df5e0e81dff6faf3a7e52ba697820c5e32d806a8916370a0823191602480820192602092909190829003018186803b1580156106ea57600080fd5b505afa1580156106fe573d6000803e3d6000fd5b505050506040513d602081101561071457600080fd5b505190508181101561074d57610738610733838363ffffffff61109c16565b6110e5565b915061074a828263ffffffff61115f16565b91505b60015461077f9073df5e0e81dff6faf3a7e52ba697820c5e32d806a8906001600160a01b03168463ffffffff6111b916565b5050565b6000546001600160a01b031633146107d0576040805162461bcd60e51b815260206004820152600b60248201526a21676f7665726e616e636560a81b604482015290519081900360640190fd5b600180546001600160a01b0319166001600160a01b0392909216919091179055565b6001546000906001600160a01b03163314610842576040805162461bcd60e51b815260206004820152600b60248201526a10b1b7b73a3937b63632b960a91b604482015290519081900360640190fd5b604080516370a0823160e01b815230600482015290516001600160a01b038416916370a08231916024808301926020929190829003018186803b15801561088857600080fd5b505afa15801561089c573d6000803e3d6000fd5b505050506040513d60208110156108b257600080fd5b50516001549091506108d7906001600160a01b0384811691168363ffffffff6111b916565b919050565b6000546001600160a01b031681565b73d533a949740bb3306d119cc777fa900ba034cd5281565b6000610924610910610428565b610918610da6565b9063ffffffff61115f16565b905090565b6001546000906001600160a01b03163314610979576040805162461bcd60e51b815260206004820152600b60248201526a10b1b7b73a3937b63632b960a91b604482015290519081900360640190fd5b61098161120b565b604080516370a0823160e01b8152306004820152905173df5e0e81dff6faf3a7e52ba697820c5e32d806a8916370a08231916024808301926020929190829003018186803b1580156109d257600080fd5b505afa1580156109e6573d6000803e3d6000fd5b505050506040513d60208110156109fc57600080fd5b50516001549091506104ac9073df5e0e81dff6faf3a7e52ba697820c5e32d806a8906001600160a01b03168363ffffffff6111b916565b6001546001600160a01b0316331480610a5657506000546001600160a01b031633145b610a95576040805162461bcd60e51b815260206004820152600b60248201526a08585d5d1a1bdc9a5e995960aa1b604482015290519081900360640190fd5b735f3b5dfeb7b28cdbd7faba78963ee202a494e2a26001600160a01b0316633ccfd60b6040518163ffffffff1660e01b8152600401600060405180830381600087803b158015610ae457600080fd5b505af1158015610af8573d6000803e3d6000fd5b50505050565b6001546001600160a01b031681565b6000546001600160a01b03163314610b5a576040805162461bcd60e51b815260206004820152600b60248201526a21676f7665726e616e636560a81b604482015290519081900360640190fd5b600080546001600160a01b0319166001600160a01b0392909216919091179055565b6001546001600160a01b0316331480610b9f57506000546001600160a01b031633145b610bde576040805162461bcd60e51b815260206004820152600b60248201526a08585d5d1a1bdc9a5e995960aa1b604482015290519081900360640190fd5b610c1873d533a949740bb3306d119cc777fa900ba034cd52735f3b5dfeb7b28cdbd7faba78963ee202a494e2a2600063ffffffff610f8416565b610c5173d533a949740bb3306d119cc777fa900ba034cd52735f3b5dfeb7b28cdbd7faba78963ee202a494e2a28463ffffffff610f8416565b604080516365fc387360e01b815260048101849052602481018390529051735f3b5dfeb7b28cdbd7faba78963ee202a494e2a2916365fc387391604480830192600092919082900301818387803b158015610cab57600080fd5b505af1158015610cbf573d6000803e3d6000fd5b505050505050565b6001546000906060906001600160a01b0316331480610cf057506000546001600160a01b031633145b610d2f576040805162461bcd60e51b815260206004820152600b60248201526a21676f7665726e616e636560a81b604482015290519081900360640190fd5b60006060876001600160a01b0316878787604051808383808284376040519201945060009350909150508083038185875af1925050503d8060008114610d91576040519150601f19603f3d011682016040523d82523d6000602084013e610d96565b606091505b5090999098509650505050505050565b604080516370a0823160e01b8152306004820152905160009173df5e0e81dff6faf3a7e52ba697820c5e32d806a8916370a0823191602480820192602092909190829003018186803b15801561047d57600080fd5b604080516370a0823160e01b8152306004820152905160009173df5e0e81dff6faf3a7e52ba697820c5e32d806a8916370a0823191602480820192602092909190829003018186803b158015610e5057600080fd5b505afa158015610e64573d6000803e3d6000fd5b505050506040513d6020811015610e7a57600080fd5b505190508015610f5157610ebe73df5e0e81dff6faf3a7e52ba697820c5e32d806a873fa712ee4788c042e2b7bb55e6cb8ec569c4530c1600063ffffffff610f8416565b610ef773df5e0e81dff6faf3a7e52ba697820c5e32d806a873fa712ee4788c042e2b7bb55e6cb8ec569c4530c18363ffffffff610f8416565b73fa712ee4788c042e2b7bb55e6cb8ec569c4530c16001600160a01b031663b6b55f25826040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b1580156105de57600080fd5b50565b73d061d61a4d941c39e5453435b6345dc261c2fce081565b735f3b5dfeb7b28cdbd7faba78963ee202a494e2a281565b80158061100a575060408051636eb1769f60e11b81523060048201526001600160a01b03848116602483015291519185169163dd62ed3e91604480820192602092909190829003018186803b158015610fdc57600080fd5b505afa158015610ff0573d6000803e3d6000fd5b505050506040513d602081101561100657600080fd5b5051155b6110455760405162461bcd60e51b81526004018080602001828103825260368152602001806115846036913960400191505060405180910390fd5b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663095ea7b360e01b1790526110979084906112ce565b505050565b60006110de83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611486565b9392505050565b600073fa712ee4788c042e2b7bb55e6cb8ec569c4530c16001600160a01b0316632e1a7d4d836040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b15801561114157600080fd5b505af1158015611155573d6000803e3d6000fd5b5093949350505050565b6000828201838110156110de576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b1790526110979084906112ce565b604080516370a0823160e01b8152306004820152905173fa712ee4788c042e2b7bb55e6cb8ec569c4530c191632e1a7d4d9183916370a08231916024808301926020929190829003018186803b15801561126457600080fd5b505afa158015611278573d6000803e3d6000fd5b505050506040513d602081101561128e57600080fd5b5051604080516001600160e01b031960e085901b168152600481019290925251602480830192600092919082900301818387803b158015610ae457600080fd5b6112e0826001600160a01b031661151d565b611331576040805162461bcd60e51b815260206004820152601f60248201527f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e747261637400604482015290519081900360640190fd5b60006060836001600160a01b0316836040518082805190602001908083835b6020831061136f5780518252601f199092019160209182019101611350565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d80600081146113d1576040519150601f19603f3d011682016040523d82523d6000602084013e6113d6565b606091505b50915091508161142d576040805162461bcd60e51b815260206004820181905260248201527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564604482015290519081900360640190fd5b805115610af85780806020019051602081101561144957600080fd5b5051610af85760405162461bcd60e51b815260040180806020018281038252602a81526020018061155a602a913960400191505060405180910390fd5b600081848411156115155760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b838110156114da5781810151838201526020016114c2565b50505050905090810190601f1680156115075780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b6000813f7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47081158015906115515750808214155b94935050505056fe5361666545524332303a204552433230206f7065726174696f6e20646964206e6f7420737563636565645361666545524332303a20617070726f76652066726f6d206e6f6e2d7a65726f20746f206e6f6e2d7a65726f20616c6c6f77616e6365a265627a7a72315820f0614e11eb6f34c70396c3eb1a19a04a29858035c73da591187bd75e7f0d4fcd64736f6c63430005110032

Deployed Bytecode Sourcemap

6519:4350:0:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6519:4350:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10121:114;;;:::i;:::-;;;;;;;;;;;;;;;;9373:287;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;9373:287:0;;:::i;:::-;;6734:82;;;:::i;:::-;;;;-1:-1:-1;;;;;6734:82:0;;;;;;;;;;;;;;7247:90;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:100:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;7247:90:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6645:82;;;:::i;8181:378::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;8181:378:0;;:::i;7349:147::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;7349:147:0;-1:-1:-1;;;;;7349:147:0;;:::i;7868:231::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;7868:231:0;-1:-1:-1;;;;;7868:231:0;;:::i;7104:25::-;;;:::i;6913:81::-;;;:::i;10247:127::-;;;:::i;8639:278::-;;;:::i;9672:161::-;;;:::i;7136:23::-;;;:::i;10386:155::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;10386:155:0;-1:-1:-1;;;;;10386:155:0;;:::i;9051:310::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;9051:310:0;;;;;;;:::i;10553:313::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;10553:313:0;;;;;;;;;;;;;;;;;;;21:11:-1;5:28;;2:2;;;46:1;43;36:12;2:2;10553:313:0;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;10553:313:0;;;;;;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;-1:-1;10553:313:0;;-1:-1:-1;10553:313:0;-1:-1:-1;10553:313:0;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;10553:313:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9994:115;;;:::i;7508:273::-;;;:::i;6823:83::-;;;:::i;7007:84::-;;;:::i;10121:114::-;10191:36;;;-1:-1:-1;;;10191:36:0;;10221:4;10191:36;;;;;;10167:4;;6773:42;;10191:21;;:36;;;;;;;;;;;;;;;6773:42;10191:36;;;5:2:-1;;;;30:1;27;20:12;5:2;10191:36:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;10191:36:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;10191:36:0;;-1:-1:-1;10121:114:0;;:::o;9373:287::-;9452:8;;-1:-1:-1;;;;;9452:8:0;9438:10;:22;;:50;;-1:-1:-1;9478:10:0;;-1:-1:-1;;;;;9478:10:0;9464;:24;9438:50;9430:74;;;;;-1:-1:-1;;;9430:74:0;;;;;;;;;;;;-1:-1:-1;;;9430:74:0;;;;;;;;;;;;;;;9515:34;6951:42;7048;9547:1;9515:34;:23;:34;:::i;:::-;9560:39;6951:42;7048;9592:6;9560:39;:23;:39;:::i;:::-;7048:42;-1:-1:-1;;;;;9610:34:0;;9645:6;9610:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;9610:42:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;9610:42:0;;;;9373:287;:::o;6734:82::-;6773:42;6734:82;:::o;7247:90::-;7315:14;;;;;;;;;;;;-1:-1:-1;;;7315:14:0;;;;7247:90;:::o;6645:82::-;6684:42;6645:82;:::o;8181:378::-;8255:8;;-1:-1:-1;;;;;8255:8:0;8241:10;:22;8233:46;;;;;-1:-1:-1;;;8233:46:0;;;;;;;;;;;;-1:-1:-1;;;8233:46:0;;;;;;;;;;;;;;;8306:37;;;-1:-1:-1;;;8306:37:0;;8337:4;8306:37;;;;;;8290:13;;6684:42;;8306:22;;:37;;;;;;;;;;;;;;;6684:42;8306:37;;;5:2:-1;;;;30:1;27;20:12;5:2;8306:37:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;8306:37:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;8306:37:0;;-1:-1:-1;8358:18:0;;;8354:143;;;8403:36;8417:21;:7;8429:8;8417:21;:11;:21;:::i;:::-;8403:13;:36::i;:::-;8393:46;-1:-1:-1;8464:21:0;8393:46;8476:8;8464:21;:11;:21;:::i;:::-;8454:31;;8354:143;8533:8;;8507:44;;6684:42;;-1:-1:-1;;;;;8533:8:0;8543:7;8507:44;:25;:44;:::i;:::-;8181:378;;:::o;7349:147::-;7431:10;;-1:-1:-1;;;;;7431:10:0;7417;:24;7409:48;;;;;-1:-1:-1;;;7409:48:0;;;;;;;;;;;;-1:-1:-1;;;7409:48:0;;;;;;;;;;;;;;;7468:8;:20;;-1:-1:-1;;;;;;7468:20:0;-1:-1:-1;;;;;7468:20:0;;;;;;;;;;7349:147::o;7868:231::-;7966:8;;7919:12;;-1:-1:-1;;;;;7966:8:0;7952:10;:22;7944:46;;;;;-1:-1:-1;;;7944:46:0;;;;;;;;;;;;-1:-1:-1;;;7944:46:0;;;;;;;;;;;;;;;8011:31;;;-1:-1:-1;;;8011:31:0;;8036:4;8011:31;;;;;;-1:-1:-1;;;;;8011:16:0;;;;;:31;;;;;;;;;;;;;;:16;:31;;;5:2:-1;;;;30:1;27;20:12;5:2;8011:31:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;8011:31:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;8011:31:0;8073:8;;8011:31;;-1:-1:-1;8053:38:0;;-1:-1:-1;;;;;8053:19:0;;;;8073:8;8011:31;8053:38;:19;:38;:::i;:::-;7868:231;;;:::o;7104:25::-;;;-1:-1:-1;;;;;7104:25:0;;:::o;6913:81::-;6951:42;6913:81;:::o;10247:127::-;10289:4;10313:53;10350:15;:13;:15::i;:::-;10313;:13;:15::i;:::-;:36;:53;:36;:53;:::i;:::-;10306:60;;10247:127;:::o;8639:278::-;8727:8;;8680:12;;-1:-1:-1;;;;;8727:8:0;8713:10;:22;8705:46;;;;;-1:-1:-1;;;8705:46:0;;;;;;;;;;;;-1:-1:-1;;;8705:46:0;;;;;;;;;;;;;;;8762:14;:12;:14::i;:::-;8817:37;;;-1:-1:-1;;;8817:37:0;;8848:4;8817:37;;;;;;6684:42;;8817:22;;:37;;;;;;;;;;;;;;6684:42;8817:37;;;5:2:-1;;;;30:1;27;20:12;5:2;8817:37:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;8817:37:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;8817:37:0;8891:8;;8817:37;;-1:-1:-1;8865:44:0;;6684:42;;-1:-1:-1;;;;;8891:8:0;8817:37;8865:44;:25;:44;:::i;9672:161::-;9733:8;;-1:-1:-1;;;;;9733:8:0;9719:10;:22;;:50;;-1:-1:-1;9759:10:0;;-1:-1:-1;;;;;9759:10:0;9745;:24;9719:50;9711:74;;;;;-1:-1:-1;;;9711:74:0;;;;;;;;;;;;-1:-1:-1;;;9711:74:0;;;;;;;;;;;;;;;7048:42;-1:-1:-1;;;;;9796:27:0;;:29;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;9796:29:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;9796:29:0;;;;9672:161::o;7136:23::-;;;-1:-1:-1;;;;;7136:23:0;;:::o;10386:155::-;10472:10;;-1:-1:-1;;;;;10472:10:0;10458;:24;10450:48;;;;;-1:-1:-1;;;10450:48:0;;;;;;;;;;;;-1:-1:-1;;;10450:48:0;;;;;;;;;;;;;;;10509:10;:24;;-1:-1:-1;;;;;;10509:24:0;-1:-1:-1;;;;;10509:24:0;;;;;;;;;;10386:155::o;9051:310::-;9144:8;;-1:-1:-1;;;;;9144:8:0;9130:10;:22;;:50;;-1:-1:-1;9170:10:0;;-1:-1:-1;;;;;9170:10:0;9156;:24;9130:50;9122:74;;;;;-1:-1:-1;;;9122:74:0;;;;;;;;;;;;-1:-1:-1;;;9122:74:0;;;;;;;;;;;;;;;9207:34;6951:42;7048;9239:1;9207:34;:23;:34;:::i;:::-;9252:39;6951:42;7048;9284:6;9252:39;:23;:39;:::i;:::-;9302:51;;;-1:-1:-1;;;9302:51:0;;;;;;;;;;;;;;;;7048:42;;9302:30;;:51;;;;;-1:-1:-1;;9302:51:0;;;;;;;-1:-1:-1;7048:42:0;9302:51;;;5:2:-1;;;;30:1;27;20:12;5:2;9302:51:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;9302:51:0;;;;9051:310;;:::o;10553:313::-;10686:8;;10633:4;;10639:12;;-1:-1:-1;;;;;10686:8:0;10672:10;:22;;:50;;-1:-1:-1;10712:10:0;;-1:-1:-1;;;;;10712:10:0;10698;:24;10672:50;10664:74;;;;;-1:-1:-1;;;10664:74:0;;;;;;;;;;;;-1:-1:-1;;;10664:74:0;;;;;;;;;;;;;;;10750:12;10764:19;10787:2;-1:-1:-1;;;;;10787:7:0;10801:5;10808:4;;10787:26;;;;;30:3:-1;22:6;14;1:33;10787:26:0;;45:16:-1;;;-1:-1;10787:26:0;;-1:-1:-1;10787:26:0;;-1:-1:-1;;10787:26:0;;;;;;;;;;;;;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;-1:-1;10749:64:0;;;;-1:-1:-1;10553:313:0;-1:-1:-1;;;;;;;10553:313:0:o;9994:115::-;10064:37;;;-1:-1:-1;;;10064:37:0;;10095:4;10064:37;;;;;;10040:4;;6684:42;;10064:22;;:37;;;;;;;;;;;;;;;6684:42;10064:37;;;5:2:-1;;;;30:1;27;20:12;7508:273:0;7558:37;;;-1:-1:-1;;;7558:37:0;;7589:4;7558:37;;;;;;7545:10;;6684:42;;7558:22;;:37;;;;;;;;;;;;;;;6684:42;7558:37;;;5:2:-1;;;;30:1;27;20:12;5:2;7558:37:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;7558:37:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;7558:37:0;;-1:-1:-1;7610:9:0;;7606:168;;7636:33;6684:42;6773;7667:1;7636:33;:24;:33;:::i;:::-;7684:37;6684:42;6773;7715:5;7684:37;:24;:37;:::i;:::-;6773:42;-1:-1:-1;;;;;7736:19:0;;7756:5;7736:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;7606:168:0;7508:273;:::o;6823:83::-;6863:42;6823:83;:::o;7007:84::-;7048:42;7007:84;:::o;3720:347::-;3816:10;;;3815:62;;-1:-1:-1;3832:39:0;;;-1:-1:-1;;;3832:39:0;;3856:4;3832:39;;;;-1:-1:-1;;;;;3832:39:0;;;;;;;;;:15;;;;;;:39;;;;;;;;;;;;;;;:15;:39;;;5:2:-1;;;;30:1;27;20:12;5:2;3832:39:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;3832:39:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;3832:39:0;:44;3815:62;3807:152;;;;-1:-1:-1;;;3807:152:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3996:62;;;-1:-1:-1;;;;;3996:62:0;;;;;;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;3996:62:0;;;;;;;;25:18:-1;;61:17;;-1:-1;;;;;182:15;-1:-1;;;179:29;160:49;;3970:89:0;;3989:5;;3970:18;:89::i;:::-;3720:347;;;:::o;1011:136::-;1069:7;1096:43;1100:1;1103;1096:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;1089:50;1011:136;-1:-1:-1;;;1011:136:0:o;9845:137::-;9903:4;6773:42;-1:-1:-1;;;;;9920:20:0;;9941:7;9920:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;9920:29:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;9967:7:0;;9845:137;-1:-1:-1;;;;9845:137:0:o;824:181::-;882:7;914:5;;;938:6;;;;930:46;;;;;-1:-1:-1;;;930:46:0;;;;;;;;;;;;;;;;;;;;;;;;;;;3324:176;3433:58;;;-1:-1:-1;;;;;3433:58:0;;;;;;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;3433:58:0;;;;;;;;25:18:-1;;61:17;;-1:-1;;;;;182:15;-1:-1;;;179:29;160:49;;3407:85:0;;3426:5;;3407:18;:85::i;8929:110::-;8994:36;;;-1:-1:-1;;;8994:36:0;;9024:4;8994:36;;;;;;6773:42;;8973:20;;6773:42;;8994:21;;:36;;;;;;;;;;;;;;6773:42;8994:36;;;5:2:-1;;;;30:1;27;20:12;5:2;8994:36:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;8994:36:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;8994:36:0;8973:58;;;-1:-1:-1;;;;;;8973:58:0;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;8973:58:0;;;;;;;-1:-1:-1;8973:58:0;;;;5:2:-1;;;;30:1;27;20:12;4073:598:0;4161:27;4169:5;-1:-1:-1;;;;;4161:25:0;;:27::i;:::-;4153:71;;;;;-1:-1:-1;;;4153:71:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;4298:12;4312:23;4347:5;-1:-1:-1;;;;;4339:19:0;4359:4;4339:25;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;4339:25:0;;;;;;;;;;;;;;;;;;;;;;;;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;;4297:67:0;;;;4383:7;4375:52;;;;;-1:-1:-1;;;4375:52:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4444:17;;:21;4440:224;;4586:10;4575:30;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;4575:30:0;4567:85;;;;-1:-1:-1;;;4567:85:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1153:192;1239:7;1275:12;1267:6;;;;1259:29;;;;-1:-1:-1;;;1259:29:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;1259:29:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;1311:5:0;;;1153:192::o;2341:374::-;2401:4;2624:20;;2467:66;2664:15;;;;;:42;;;2695:11;2683:8;:23;;2664:42;2656:51;2341:374;-1:-1:-1;;;;2341:374:0:o

Swarm Source

bzzr://f0614e11eb6f34c70396c3eb1a19a04a29858035c73da591187bd75e7f0d4fcd

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

Block Uncle Number Difficulty Gas Used Reward
View All Uncles
Loading...
Loading
Loading...
Loading

Validator Index Block Amount
View All Withdrawals

Transaction Hash Block Value Eth2 PubKey Valid
View All Deposits
Loading...
Loading
[ Download: CSV Export  ]

A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.