ETH Price: $3,113.78 (+0.51%)
Gas: 4 Gwei

Contract

0xaEbA219f6bf8Ec703a1CF1C4bA540cD4Bafa2fBe
 

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Value
Exit164573262023-01-21 19:39:59536 days ago1674329999IN
0xaEbA219f...4Bafa2fBe
0 ETH0.0010549417.79259299
Exit164573132023-01-21 19:37:23536 days ago1674329843IN
0xaEbA219f...4Bafa2fBe
0 ETH0.001722916.2106478
Exit163971922023-01-13 10:11:11544 days ago1673604671IN
0xaEbA219f...4Bafa2fBe
0 ETH0.001856917.47151962
Exit163950572023-01-13 3:01:35545 days ago1673578895IN
0xaEbA219f...4Bafa2fBe
0 ETH0.0018971317.85
Exit163557722023-01-07 15:22:35550 days ago1673104955IN
0xaEbA219f...4Bafa2fBe
0 ETH0.0014265918.01463567
Exit162942352022-12-30 1:15:35559 days ago1672362935IN
0xaEbA219f...4Bafa2fBe
0 ETH0.0018054316.98719199
Exit161205952022-12-05 19:12:47583 days ago1670267567IN
0xaEbA219f...4Bafa2fBe
0 ETH0.0021608120.33099939
Exit160202762022-11-21 18:47:47597 days ago1669056467IN
0xaEbA219f...4Bafa2fBe
0 ETH0.0014808313.93306764
Exit159111272022-11-06 12:58:23612 days ago1667739503IN
0xaEbA219f...4Bafa2fBe
0 ETH0.0008597210.85639754
Exit159008332022-11-05 2:28:35614 days ago1667615315IN
0xaEbA219f...4Bafa2fBe
0 ETH0.0015667314.74130764
Exit158658452022-10-31 5:07:59619 days ago1667192879IN
0xaEbA219f...4Bafa2fBe
0 ETH0.000424965.36631014
Exit158623282022-10-30 17:19:35619 days ago1667150375IN
0xaEbA219f...4Bafa2fBe
0 ETH0.000632347.98507001
Exit158356942022-10-27 0:01:35623 days ago1666828895IN
0xaEbA219f...4Bafa2fBe
0 ETH0.0013176212.39748573
Exit158239752022-10-25 8:42:47624 days ago1666687367IN
0xaEbA219f...4Bafa2fBe
0 ETH0.001307412.30130558
Exit158090982022-10-23 6:44:11627 days ago1666507451IN
0xaEbA219f...4Bafa2fBe
0 ETH0.000717612.10308534
Exit158090942022-10-23 6:43:23627 days ago1666507403IN
0xaEbA219f...4Bafa2fBe
0 ETH0.001274411.99074498
Exit158022812022-10-22 7:54:23627 days ago1666425263IN
0xaEbA219f...4Bafa2fBe
0 ETH0.00096916.34314301
Exit158022782022-10-22 7:53:47627 days ago1666425227IN
0xaEbA219f...4Bafa2fBe
0 ETH0.0011438614.4443776
Exit156458332022-09-30 11:24:11649 days ago1664537051IN
0xaEbA219f...4Bafa2fBe
0 ETH0.0012130611.41365732
Exit156211432022-09-27 0:33:47653 days ago1664238827IN
0xaEbA219f...4Bafa2fBe
0 ETH0.0012711711.96041648
Exit155739562022-09-20 9:59:23659 days ago1663667963IN
0xaEbA219f...4Bafa2fBe
0 ETH0.00057515.41110299
Exit155623702022-09-18 18:59:23661 days ago1663527563IN
0xaEbA219f...4Bafa2fBe
0 ETH0.0012228411.50569853
Exit155609312022-09-18 14:09:11661 days ago1663510151IN
0xaEbA219f...4Bafa2fBe
0 ETH0.000403126.79904319
Exit155609292022-09-18 14:08:47661 days ago1663510127IN
0xaEbA219f...4Bafa2fBe
0 ETH0.00059436.66398793
Exit155593002022-09-18 8:39:47661 days ago1663490387IN
0xaEbA219f...4Bafa2fBe
0 ETH0.000207463.49915476
View all transactions

View more zero value Internal Transactions in Advanced View mode

Advanced mode:
Loading...
Loading

Similar Match Source Code
This contract matches the deployed Bytecode of the Source Code for Contract 0x60C6b5DC...0A3086B4e
The constructor portion of the code might be different and could alter the actual behaviour of the contract

Contract Name:
DOERewards

Compiler Version
v0.8.7+commit.e28d00a7

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license
/**
 *Submitted for verification at Etherscan.io on 2021-11-05
*/

//SPDX-License-Identifier: MIT

// DOERewards based on contracts by Synthetix and Yearn Finance.
// Licensed under: MIT
// Credit to them.

// File: @openzeppelin/contracts/ownership/Ownable.sol

pragma solidity ^0.8.7;

/**
 * @dev Contract module which provides a basic access control mechanism, where
 * there is an account (an owner) that can be granted exclusive access to
 * specific functions.
 *
 * This module is used through inheritance. It will make available the modifier
 * `onlyOwner`, which can be applied to your functions to restrict their use to
 * the owner.
 */
 
contract Ownable {
    address public owner;

    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);

    constructor() {
        owner = msg.sender;
    }

    /**
     * @dev Throws if called by any account other than the owner.
     */
    modifier onlyOwner() {
        require(msg.sender == owner, "Ownable: caller is not the owner");
        _;
    }

    /**
     * @dev Leaves the contract without owner. It will not be possible to call
     * `onlyOwner` functions anymore. Can only be called by the current owner.
     *
     * NOTE: Renouncing ownership will leave the contract without an owner,
     * thereby removing any functionality that is only available to the owner.
     */
    function renounceOwnership() public onlyOwner {
        emit OwnershipTransferred(owner, address(0));
        owner = address(0);
    }

    /**
     * @dev Transfers ownership of the contract to a new account (`newOwner`).
     * Can only be called by the current owner.
     */
    function transferOwnership(address newOwner) public onlyOwner {
        _transferOwnership(newOwner);
    }

    /**
     * @dev Transfers ownership of the contract to a new account (`newOwner`).
     */
    function _transferOwnership(address newOwner) internal {
        require(newOwner != address(0), "Ownable: new owner is the zero address");
        emit OwnershipTransferred(owner, newOwner);
        owner = newOwner;
    }
}

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 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);
}

contract StakedTokenWrapper {
    uint256 public totalSupply;

    mapping(address => uint256) private _balances;
    IERC20 public stakedToken;
    
    event Staked(address indexed user, uint256 amount);
    event Withdrawn(address indexed user, uint256 amount);

    function balanceOf(address account) public view returns (uint256) {
        return _balances[account];
    }

    string constant _transferErrorMessage = "staked token transfer failed";
    
    function stakeFor(address forWhom, uint128 amount) public payable virtual {
        IERC20 st = stakedToken;
        if(st == IERC20(address(0))) { //eth
            unchecked {
                totalSupply += msg.value;
                _balances[forWhom] += msg.value;
            }
        }
        else {
            require(msg.value == 0, "non-zero eth");
            require(amount > 0, "Cannot stake 0");
            require(st.transferFrom(msg.sender, address(this), amount), _transferErrorMessage);
            unchecked { 
                totalSupply += amount;
                _balances[forWhom] += amount;
            }
        }
        emit Staked(forWhom, amount);
    }

    function withdraw(uint128 amount) public virtual {
        require(amount <= _balances[msg.sender], "withdraw: balance is lower");
        unchecked {
            _balances[msg.sender] -= amount;
            totalSupply = totalSupply-amount;
        }
        IERC20 st = stakedToken;
        if(st == IERC20(address(0))) { //eth
            (bool success, ) = msg.sender.call{value: amount}("");
            require(success, "eth transfer failure");
        }
        else {
            require(stakedToken.transfer(msg.sender, amount), _transferErrorMessage);
        }
        emit Withdrawn(msg.sender, amount);
    }
}

contract DOERewards is StakedTokenWrapper, Ownable {
    IERC20 public rewardToken;
    uint256 public rewardRate;
    uint64 public periodFinish;
    uint64 public lastUpdateTime;
    uint128 public rewardPerTokenStored;
    struct UserRewards {
        uint128 userRewardPerTokenPaid;
        uint128 rewards;
    }
    mapping(address => UserRewards) public userRewards;

    event RewardAdded(uint256 reward);
    event RewardPaid(address indexed user, uint256 reward);

    constructor(IERC20 _rewardToken, IERC20 _stakedToken) {
        rewardToken = _rewardToken;
        stakedToken = _stakedToken;
    }

    modifier updateReward(address account) {
        uint128 _rewardPerTokenStored = rewardPerToken();
        lastUpdateTime = lastTimeRewardApplicable();
        rewardPerTokenStored = _rewardPerTokenStored;
        userRewards[account].rewards = earned(account);
        userRewards[account].userRewardPerTokenPaid = _rewardPerTokenStored;
        _;
    }

    function lastTimeRewardApplicable() public view returns (uint64) {
        uint64 blockTimestamp = uint64(block.timestamp);
        return blockTimestamp < periodFinish ? blockTimestamp : periodFinish;
    }

    function rewardPerToken() public view returns (uint128) {
        uint256 totalStakedSupply = totalSupply;
        if (totalStakedSupply == 0) {
            return rewardPerTokenStored;
        }
        unchecked {
            uint256 rewardDuration = lastTimeRewardApplicable()-lastUpdateTime;
            return uint128(rewardPerTokenStored + rewardDuration*rewardRate*1e18/totalStakedSupply);
        }
    }

    function earned(address account) public view returns (uint128) {
        unchecked { 
            return uint128(balanceOf(account)*(rewardPerToken()-userRewards[account].userRewardPerTokenPaid)/1e18 + userRewards[account].rewards);
        }
    }

    function stake(uint128 amount) external payable {
        stakeFor(msg.sender, amount);
    }

    function stakeFor(address forWhom, uint128 amount) public payable override updateReward(forWhom) {
        super.stakeFor(forWhom, amount);
    }

    function withdraw(uint128 amount) public override updateReward(msg.sender) {
        super.withdraw(amount);
    }

    function exit() external {
        getReward();
        withdraw(uint128(balanceOf(msg.sender)));
    }

    function getReward() public updateReward(msg.sender) {
        uint256 reward = earned(msg.sender);
        if (reward > 0) {
            userRewards[msg.sender].rewards = 0;
            require(rewardToken.transfer(msg.sender, reward), "reward transfer failed");
            emit RewardPaid(msg.sender, reward);
        }
    }

    function setRewardParams(uint128 reward, uint64 duration) external onlyOwner {
        unchecked {
            require(reward > 0);
            rewardPerTokenStored = rewardPerToken();
            uint64 blockTimestamp = uint64(block.timestamp);
            uint256 maxRewardSupply = rewardToken.balanceOf(address(this));
            if(rewardToken == stakedToken)
                maxRewardSupply -= totalSupply;
            uint256 leftover = 0;
            if (blockTimestamp >= periodFinish) {
                rewardRate = reward/duration;
            } else {
                uint256 remaining = periodFinish-blockTimestamp;
                leftover = remaining*rewardRate;
                rewardRate = (reward+leftover)/duration;
            }
            require(reward+leftover <= maxRewardSupply, "not enough tokens");
            lastUpdateTime = blockTimestamp;
            periodFinish = blockTimestamp+duration;
            emit RewardAdded(reward);
        }
    }

    function withdrawReward() external onlyOwner {
        uint256 rewardSupply = rewardToken.balanceOf(address(this));
        //ensure funds staked by users can't be transferred out
        if(rewardToken == stakedToken)
                rewardSupply -= totalSupply;
        require(rewardToken.transfer(msg.sender, rewardSupply));
        rewardRate = 0;
        periodFinish = uint64(block.timestamp);
    }
}

// Licenses and credits below

/*
   ____            __   __        __   _
  / __/__ __ ___  / /_ / /  ___  / /_ (_)__ __
 _\ \ / // // _ \/ __// _ \/ -_)/ __// / \ \ /
/___/ \_, //_//_/\__//_//_/\__/ \__//_/ /_\_\
     /___/

* Synthetix: YFIRewards.sol
*
* Docs: https://docs.synthetix.io/
*
*
* MIT License
* ===========
*
* Copyright (c) 2020 Synthetix
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
* in the Software without restriction, including without limitation the rights
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
* copies of the Software, and to permit persons to whom the Software is
* furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in all
* copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
*/

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"contract IERC20","name":"_rewardToken","type":"address"},{"internalType":"contract IERC20","name":"_stakedToken","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"reward","type":"uint256"}],"name":"RewardAdded","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":false,"internalType":"uint256","name":"reward","type":"uint256"}],"name":"RewardPaid","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Staked","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Withdrawn","type":"event"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"earned","outputs":[{"internalType":"uint128","name":"","type":"uint128"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"exit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getReward","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"lastTimeRewardApplicable","outputs":[{"internalType":"uint64","name":"","type":"uint64"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lastUpdateTime","outputs":[{"internalType":"uint64","name":"","type":"uint64"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"periodFinish","outputs":[{"internalType":"uint64","name":"","type":"uint64"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"rewardPerToken","outputs":[{"internalType":"uint128","name":"","type":"uint128"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"rewardPerTokenStored","outputs":[{"internalType":"uint128","name":"","type":"uint128"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"rewardRate","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"rewardToken","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint128","name":"reward","type":"uint128"},{"internalType":"uint64","name":"duration","type":"uint64"}],"name":"setRewardParams","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint128","name":"amount","type":"uint128"}],"name":"stake","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"forWhom","type":"address"},{"internalType":"uint128","name":"amount","type":"uint128"}],"name":"stakeFor","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"stakedToken","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"userRewards","outputs":[{"internalType":"uint128","name":"userRewardPerTokenPaid","type":"uint128"},{"internalType":"uint128","name":"rewards","type":"uint128"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint128","name":"amount","type":"uint128"}],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"withdrawReward","outputs":[],"stateMutability":"nonpayable","type":"function"}]

Deployed Bytecode

0x6080604052600436106101345760003560e01c806389ee4bde116100ab578063cd3daf9d1161006f578063cd3daf9d146103c2578063df136d65146103ed578063e9fad8ee14610418578063ebe2b12b1461042f578063f2fde38b1461045a578063f7c618c11461048357610134565b806389ee4bde146103015780638da5cb5b1461032a578063c885bc5814610355578063c8f33c911461036c578063cc7a262e1461039757610134565b806370458d85116100fd57806370458d851461021f57806370a082311461023b578063715018a6146102785780637b0a47ee1461028f57806380faa57d146102ba57806388fe2be8146102e557610134565b80628cc2621461013957806302387a7b146101765780630660f1e81461019f57806318160ddd146101dd5780633d18b91214610208575b600080fd5b34801561014557600080fd5b50610160600480360381019061015b9190611fd4565b6104ae565b60405161016d91906124cc565b60405180910390f35b34801561018257600080fd5b5061019d6004803603810190610198919061206e565b6105c5565b005b3480156101ab57600080fd5b506101c660048036038101906101c19190611fd4565b610743565b6040516101d4929190612502565b60405180910390f35b3480156101e957600080fd5b506101f261079f565b6040516101ff919061252b565b60405180910390f35b34801561021457600080fd5b5061021d6107a5565b005b61023960048036038101906102349190612001565b610af9565b005b34801561024757600080fd5b50610262600480360381019061025d9190611fd4565b610c79565b60405161026f919061252b565b60405180910390f35b34801561028457600080fd5b5061028d610cc2565b005b34801561029b57600080fd5b506102a4610e13565b6040516102b1919061252b565b60405180910390f35b3480156102c657600080fd5b506102cf610e19565b6040516102dc9190612546565b60405180910390f35b6102ff60048036038101906102fa919061206e565b610e74565b005b34801561030d57600080fd5b506103286004803603810190610323919061209b565b610e81565b005b34801561033657600080fd5b5061033f61126f565b60405161034c91906122eb565b60405180910390f35b34801561036157600080fd5b5061036a611295565b005b34801561037857600080fd5b50610381611549565b60405161038e9190612546565b60405180910390f35b3480156103a357600080fd5b506103ac611563565b6040516103b9919061238f565b60405180910390f35b3480156103ce57600080fd5b506103d7611589565b6040516103e491906124cc565b60405180910390f35b3480156103f957600080fd5b50610402611648565b60405161040f91906124cc565b60405180910390f35b34801561042457600080fd5b5061042d61166a565b005b34801561043b57600080fd5b50610444611685565b6040516104519190612546565b60405180910390f35b34801561046657600080fd5b50610481600480360381019061047c9190611fd4565b61169f565b005b34801561048f57600080fd5b5061049861173b565b6040516104a5919061238f565b60405180910390f35b6000600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160109054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff16670de0b6b3a7640000600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a90046fffffffffffffffffffffffffffffffff16610591611589565b036fffffffffffffffffffffffffffffffff166105ad85610c79565b02816105bc576105bb6126de565b5b04019050919050565b3360006105d0611589565b90506105da610e19565b600660086101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555080600660106101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff160217905550610644826104ae565b600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160106101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff16021790555080600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160006101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff16021790555061073e83611761565b505050565b60076020528060005260406000206000915090508060000160009054906101000a90046fffffffffffffffffffffffffffffffff16908060000160109054906101000a90046fffffffffffffffffffffffffffffffff16905082565b60005481565b3360006107b0611589565b90506107ba610e19565b600660086101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555080600660106101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff160217905550610824826104ae565b600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160106101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff16021790555080600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160006101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff1602179055506000610920336104ae565b6fffffffffffffffffffffffffffffffff1690506000811115610af4576000600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160106101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff160217905550600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33836040518363ffffffff1660e01b8152600401610a14929190612366565b602060405180830381600087803b158015610a2e57600080fd5b505af1158015610a42573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a669190612041565b610aa5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a9c9061242c565b60405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff167fe2403640ba68fed3a2f88b7557551d1993f84b99bb10ff833f0cf8db0c5e048682604051610aeb919061252b565b60405180910390a25b505050565b816000610b04611589565b9050610b0e610e19565b600660086101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555080600660106101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff160217905550610b78826104ae565b600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160106101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff16021790555080600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160006101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff160217905550610c738484611b0b565b50505050565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610d52576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d49906124ac565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60055481565b600080429050600660009054906101000a900467ffffffffffffffff1667ffffffffffffffff168167ffffffffffffffff1610610e6c57600660009054906101000a900467ffffffffffffffff16610e6e565b805b91505090565b610e7e3382610af9565b50565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610f11576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f08906124ac565b60405180910390fd5b6000826fffffffffffffffffffffffffffffffff1611610f3057600080fd5b610f38611589565b600660106101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff16021790555060004290506000600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401610fd291906122eb565b60206040518083038186803b158015610fea57600080fd5b505afa158015610ffe573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061102291906120db565b9050600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614156110a457600054810390505b6000600660009054906101000a900467ffffffffffffffff1667ffffffffffffffff168367ffffffffffffffff1610611121578367ffffffffffffffff16856fffffffffffffffffffffffffffffffff1681611103576111026126de565b5b046fffffffffffffffffffffffffffffffff16600581905550611186565b600083600660009054906101000a900467ffffffffffffffff160367ffffffffffffffff169050600554810291508467ffffffffffffffff1682876fffffffffffffffffffffffffffffffff16018161117d5761117c6126de565b5b04600581905550505b8181866fffffffffffffffffffffffffffffffff160111156111dd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111d49061248c565b60405180910390fd5b82600660086101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550838301600660006101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055507fde88a922e0d3b88b24e9623efeb464919c6bf9f66857a65e2bfcf2ce87a9433d8560405161126091906124e7565b60405180910390a15050505050565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611325576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161131c906124ac565b60405180910390fd5b6000600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b815260040161138291906122eb565b60206040518083038186803b15801561139a57600080fd5b505afa1580156113ae573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113d291906120db565b9050600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141561145d576000548161145a9190612588565b90505b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33836040518363ffffffff1660e01b81526004016114ba929190612366565b602060405180830381600087803b1580156114d457600080fd5b505af11580156114e8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061150c9190612041565b61151557600080fd5b600060058190555042600660006101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555050565b600660089054906101000a900467ffffffffffffffff1681565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600080600054905060008114156115c157600660109054906101000a90046fffffffffffffffffffffffffffffffff16915050611645565b6000600660089054906101000a900467ffffffffffffffff166115e2610e19565b0367ffffffffffffffff16905081670de0b6b3a76400006005548302028161160d5761160c6126de565b5b04600660109054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff1601925050505b90565b600660109054906101000a90046fffffffffffffffffffffffffffffffff1681565b6116726107a5565b61168361167e33610c79565b6105c5565b565b600660009054906101000a900467ffffffffffffffff1681565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461172f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611726906124ac565b60405180910390fd5b61173881611e3b565b50565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054816fffffffffffffffffffffffffffffffff1611156117f5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117ec9061244c565b60405180910390fd5b806fffffffffffffffffffffffffffffffff16600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282540392505081905550806fffffffffffffffffffffffffffffffff16600054036000819055506000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156119915760003373ffffffffffffffffffffffffffffffffffffffff16836fffffffffffffffffffffffffffffffff16604051611905906122d6565b60006040518083038185875af1925050503d8060008114611942576040519150601f19603f3d011682016040523d82523d6000602084013e611947565b606091505b505090508061198b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119829061246c565b60405180910390fd5b50611ab9565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33846040518363ffffffff1660e01b81526004016119ee92919061233d565b602060405180830381600087803b158015611a0857600080fd5b505af1158015611a1c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a409190612041565b6040518060400160405280601c81526020017f7374616b656420746f6b656e207472616e73666572206661696c65640000000081525090611ab7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611aae91906123aa565b60405180910390fd5b505b3373ffffffffffffffffffffffffffffffffffffffff167f7084f5476618d8e60b11ef0d7d3f06914655adb8793e28ff7f018d4c76d505d583604051611aff91906124e7565b60405180910390a25050565b6000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611bc85734600080828254019250508190555034600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282540192505081905550611de8565b60003414611c0b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c029061240c565b60405180910390fd5b6000826fffffffffffffffffffffffffffffffff1611611c60576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c57906123ec565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff166323b872dd3330856040518463ffffffff1660e01b8152600401611c9d93929190612306565b602060405180830381600087803b158015611cb757600080fd5b505af1158015611ccb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611cef9190612041565b6040518060400160405280601c81526020017f7374616b656420746f6b656e207472616e73666572206661696c65640000000081525090611d66576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d5d91906123aa565b60405180910390fd5b50816fffffffffffffffffffffffffffffffff166000808282540192505081905550816fffffffffffffffffffffffffffffffff16600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055505b8273ffffffffffffffffffffffffffffffffffffffff167f9e71bc8eea02a63969f509818f2dafb9254532904319f9dbda79b67bd34a5f3d83604051611e2e91906124e7565b60405180910390a2505050565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611eab576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ea2906123cc565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600081359050611f7a81612894565b92915050565b600081519050611f8f816128ab565b92915050565b600081359050611fa4816128c2565b92915050565b600081519050611fb9816128d9565b92915050565b600081359050611fce816128f0565b92915050565b600060208284031215611fea57611fe961270d565b5b6000611ff884828501611f6b565b91505092915050565b600080604083850312156120185761201761270d565b5b600061202685828601611f6b565b925050602061203785828601611f95565b9150509250929050565b6000602082840312156120575761205661270d565b5b600061206584828501611f80565b91505092915050565b6000602082840312156120845761208361270d565b5b600061209284828501611f95565b91505092915050565b600080604083850312156120b2576120b161270d565b5b60006120c085828601611f95565b92505060206120d185828601611fbf565b9150509250929050565b6000602082840312156120f1576120f061270d565b5b60006120ff84828501611faa565b91505092915050565b612111816125bc565b82525050565b61212081612634565b82525050565b600061213182612561565b61213b8185612577565b935061214b81856020860161267c565b61215481612712565b840191505092915050565b600061216c602683612577565b915061217782612723565b604082019050919050565b600061218f600e83612577565b915061219a82612772565b602082019050919050565b60006121b2600c83612577565b91506121bd8261279b565b602082019050919050565b60006121d5601683612577565b91506121e0826127c4565b602082019050919050565b60006121f8601a83612577565b9150612203826127ed565b602082019050919050565b600061221b601483612577565b915061222682612816565b602082019050919050565b600061223e601183612577565b91506122498261283f565b602082019050919050565b6000612261602083612577565b915061226c82612868565b602082019050919050565b600061228460008361256c565b915061228f82612891565b600082019050919050565b6122a3816125da565b82525050565b6122b281612646565b82525050565b6122c181612616565b82525050565b6122d081612620565b82525050565b60006122e182612277565b9150819050919050565b60006020820190506123006000830184612108565b92915050565b600060608201905061231b6000830186612108565b6123286020830185612108565b61233560408301846122a9565b949350505050565b60006040820190506123526000830185612108565b61235f60208301846122a9565b9392505050565b600060408201905061237b6000830185612108565b61238860208301846122b8565b9392505050565b60006020820190506123a46000830184612117565b92915050565b600060208201905081810360008301526123c48184612126565b905092915050565b600060208201905081810360008301526123e58161215f565b9050919050565b6000602082019050818103600083015261240581612182565b9050919050565b60006020820190508181036000830152612425816121a5565b9050919050565b60006020820190508181036000830152612445816121c8565b9050919050565b60006020820190508181036000830152612465816121eb565b9050919050565b600060208201905081810360008301526124858161220e565b9050919050565b600060208201905081810360008301526124a581612231565b9050919050565b600060208201905081810360008301526124c581612254565b9050919050565b60006020820190506124e1600083018461229a565b92915050565b60006020820190506124fc60008301846122a9565b92915050565b6000604082019050612517600083018561229a565b612524602083018461229a565b9392505050565b600060208201905061254060008301846122b8565b92915050565b600060208201905061255b60008301846122c7565b92915050565b600081519050919050565b600081905092915050565b600082825260208201905092915050565b600061259382612616565b915061259e83612616565b9250828210156125b1576125b06126af565b5b828203905092915050565b60006125c7826125f6565b9050919050565b60008115159050919050565b60006fffffffffffffffffffffffffffffffff82169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600067ffffffffffffffff82169050919050565b600061263f82612658565b9050919050565b6000612651826125da565b9050919050565b60006126638261266a565b9050919050565b6000612675826125f6565b9050919050565b60005b8381101561269a57808201518184015260208101905061267f565b838111156126a9576000848401525b50505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600080fd5b6000601f19601f8301169050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f43616e6e6f74207374616b652030000000000000000000000000000000000000600082015250565b7f6e6f6e2d7a65726f206574680000000000000000000000000000000000000000600082015250565b7f726577617264207472616e73666572206661696c656400000000000000000000600082015250565b7f77697468647261773a2062616c616e6365206973206c6f776572000000000000600082015250565b7f657468207472616e73666572206661696c757265000000000000000000000000600082015250565b7f6e6f7420656e6f75676820746f6b656e73000000000000000000000000000000600082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b50565b61289d816125bc565b81146128a857600080fd5b50565b6128b4816125ce565b81146128bf57600080fd5b50565b6128cb816125da565b81146128d657600080fd5b50565b6128e281612616565b81146128ed57600080fd5b50565b6128f981612620565b811461290457600080fd5b5056fea264697066735822122097965ae5a79bfc78ba886b7e08a5a13994d80d739c369a77932466cabf436d8b64736f6c63430008070033

Deployed Bytecode Sourcemap

4619:4177:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6274:252;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6792:116;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4951:50;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;2820:26;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7030:335;;;;;;;;;;;;;:::i;:::-;;6637:147;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3064:110;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1360:138;;;;;;;;;;;;;:::i;:::-;;4709:25;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5627:210;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6534:95;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7373:998;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;628:20;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8379:414;;;;;;;;;;;;;:::i;:::-;;4774:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2907:25;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5845:421;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4809:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6916:106;;;;;;;;;;;;;:::i;:::-;;4741:26;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1653:109;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4677:25;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6274:252;6328:7;6478:11;:20;6490:7;6478:20;;;;;;;;;;;;;;;:28;;;;;;;;;;;;6389:117;;6471:4;6426:11;:20;6438:7;6426:20;;;;;;;;;;;;;;;:43;;;;;;;;;;;;6409:16;:14;:16::i;:::-;:60;6389:81;;:18;6399:7;6389:9;:18::i;:::-;:81;:86;;;;;:::i;:::-;;;:117;6374:133;;6274:252;;;:::o;6792:116::-;6855:10;5307:29;5339:16;:14;:16::i;:::-;5307:48;;5383:26;:24;:26::i;:::-;5366:14;;:43;;;;;;;;;;;;;;;;;;5443:21;5420:20;;:44;;;;;;;;;;;;;;;;;;5506:15;5513:7;5506:6;:15::i;:::-;5475:11;:20;5487:7;5475:20;;;;;;;;;;;;;;;:28;;;:46;;;;;;;;;;;;;;;;;;5578:21;5532:11;:20;5544:7;5532:20;;;;;;;;;;;;;;;:43;;;:67;;;;;;;;;;;;;;;;;;6878:22:::1;6893:6;6878:14;:22::i;:::-;5296:323:::0;6792:116;;:::o;4951:50::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;2820:26::-;;;;:::o;7030:335::-;7071:10;5307:29;5339:16;:14;:16::i;:::-;5307:48;;5383:26;:24;:26::i;:::-;5366:14;;:43;;;;;;;;;;;;;;;;;;5443:21;5420:20;;:44;;;;;;;;;;;;;;;;;;5506:15;5513:7;5506:6;:15::i;:::-;5475:11;:20;5487:7;5475:20;;;;;;;;;;;;;;;:28;;;:46;;;;;;;;;;;;;;;;;;5578:21;5532:11;:20;5544:7;5532:20;;;;;;;;;;;;;;;:43;;;:67;;;;;;;;;;;;;;;;;;7094:14:::1;7111:18;7118:10;7111:6;:18::i;:::-;7094:35;;;;7153:1;7144:6;:10;7140:218;;;7205:1;7171:11;:23;7183:10;7171:23;;;;;;;;;;;;;;;:31;;;:35;;;;;;;;;;;;;;;;;;7229:11;;;;;;;;;;;:20;;;7250:10;7262:6;7229:40;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7221:75;;;;;;;;;;;;:::i;:::-;;;;;;;;;7327:10;7316:30;;;7339:6;7316:30;;;;;;:::i;:::-;;;;;;;;7140:218;7083:282;5296:323:::0;7030:335;:::o;6637:147::-;6725:7;5307:29;5339:16;:14;:16::i;:::-;5307:48;;5383:26;:24;:26::i;:::-;5366:14;;:43;;;;;;;;;;;;;;;;;;5443:21;5420:20;;:44;;;;;;;;;;;;;;;;;;5506:15;5513:7;5506:6;:15::i;:::-;5475:11;:20;5487:7;5475:20;;;;;;;;;;;;;;;:28;;;:46;;;;;;;;;;;;;;;;;;5578:21;5532:11;:20;5544:7;5532:20;;;;;;;;;;;;;;;:43;;;:67;;;;;;;;;;;;;;;;;;6745:31:::1;6760:7;6769:6;6745:14;:31::i;:::-;5296:323:::0;6637:147;;;:::o;3064:110::-;3121:7;3148:9;:18;3158:7;3148:18;;;;;;;;;;;;;;;;3141:25;;3064:110;;;:::o;1360:138::-;947:5;;;;;;;;;;;933:19;;:10;:19;;;925:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;1458:1:::1;1422:39;;1443:5;;;;;;;;;;;1422:39;;;;;;;;;;;;1488:1;1472:5;;:18;;;;;;;;;;;;;;;;;;1360:138::o:0;4709:25::-;;;;:::o;5627:210::-;5684:6;5703:21;5734:15;5703:47;;5785:12;;;;;;;;;;;5768:29;;:14;:29;;;:61;;5817:12;;;;;;;;;;;5768:61;;;5800:14;5768:61;5761:68;;;5627:210;:::o;6534:95::-;6593:28;6602:10;6614:6;6593:8;:28::i;:::-;6534:95;:::o;7373:998::-;947:5;;;;;;;;;;;933:19;;:10;:19;;;925:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;7503:1:::1;7494:6;:10;;;7486:19;;;::::0;::::1;;7543:16;:14;:16::i;:::-;7520:20;;:39;;;;;;;;;;;;;;;;;;7574:21;7605:15;7574:47;;7636:23;7662:11;;;;;;;;;;;:21;;;7692:4;7662:36;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7636:62;;7731:11;;;;;;;;;;;7716:26;;:11;;;;;;;;;;;:26;;;7713:78;;;7780:11;;7761:30;;;;7713:78;7806:16;7863:12;;;;;;;;;;;7845:30;;:14;:30;;;7841:295;;7916:8;7909:15;;:6;:15;;;;;;;:::i;:::-;;;7896:28;;:10;:28;;;;7841:295;;;7965:17;7998:14;7985:12;;;;;;;;;;;:27;7965:47;;;;8052:10;;8042:9;:20;8031:31;;8112:8;8094:26;;8102:8;8095:6;:15;;;8094:26;;;;;:::i;:::-;;;8081:10;:39;;;;7946:190;7841:295;8177:15;8165:8;8158:6;:15;;;:34;;8150:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;8246:14;8229;;:31;;;;;;;;;;;;;;;;;;8305:8;8290:14;:23;8275:12;;:38;;;;;;;;;;;;;;;;;;8333:19;8345:6;8333:19;;;;;;:::i;:::-;;;;;;;;7461:903;;;7373:998:::0;;:::o;628:20::-;;;;;;;;;;;;;:::o;8379:414::-;947:5;;;;;;;;;;;933:19;;:10;:19;;;925:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;8435:20:::1;8458:11;;;;;;;;;;;:21;;;8488:4;8458:36;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;8435:59;;8588:11;;;;;;;;;;;8573:26;;:11;;;;;;;;;;;:26;;;8570:75;;;8634:11;;8618:27;;;;;:::i;:::-;;;8570:75;8664:11;;;;;;;;;;;:20;;;8685:10;8697:12;8664:46;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;8656:55;;;::::0;::::1;;8735:1;8722:10;:14;;;;8769:15;8747:12;;:38;;;;;;;;;;;;;;;;;;8424:369;8379:414::o:0;4774:28::-;;;;;;;;;;;;;:::o;2907:25::-;;;;;;;;;;;;;:::o;5845:421::-;5892:7;5912:25;5940:11;;5912:39;;5987:1;5966:17;:22;5962:82;;;6012:20;;;;;;;;;;;6005:27;;;;;5962:82;6079:22;6131:14;;;;;;;;;;;6104:26;:24;:26::i;:::-;:41;6079:66;;;;6229:17;6224:4;6213:10;;6198:14;:25;:30;:48;;;;;:::i;:::-;;;6175:20;;;;;;;;;;;:71;;;6160:87;;;;5845:421;;:::o;4809:35::-;;;;;;;;;;;;;:::o;6916:106::-;6952:11;:9;:11::i;:::-;6974:40;6991:21;7001:10;6991:9;:21::i;:::-;6974:8;:40::i;:::-;6916:106::o;4741:26::-;;;;;;;;;;;;;:::o;1653:109::-;947:5;;;;;;;;;;;933:19;;:10;:19;;;925:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;1726:28:::1;1745:8;1726:18;:28::i;:::-;1653:109:::0;:::o;4677:25::-;;;;;;;;;;;;;:::o;3976:636::-;4054:9;:21;4064:10;4054:21;;;;;;;;;;;;;;;;4044:6;:31;;;;4036:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;4167:6;4142:31;;:9;:21;4152:10;4142:21;;;;;;;;;;;;;;;;:31;;;;;;;;;;;4214:6;4202:18;;:11;;:18;4188:11;:32;;;;4242:9;4254:11;;;;;;;;;;;4242:23;;4300:1;4279:24;;:2;:24;;;4276:284;;;4327:12;4345:10;:15;;4368:6;4345:34;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4326:53;;;4402:7;4394:40;;;;;;;;;;;;:::i;:::-;;;;;;;;;4305:141;4276:284;;;4484:11;;;;;;;;;;;:20;;;4505:10;4517:6;4484:40;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;4526:21;;;;;;;;;;;;;;;;;4476:72;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;4276:284;4585:10;4575:29;;;4597:6;4575:29;;;;;;:::i;:::-;;;;;;;;4025:587;3976:636;:::o;3265:703::-;3350:9;3362:11;;;;;;;;;;;3350:23;;3408:1;3387:24;;:2;:24;;;3384:538;;;3478:9;3463:11;;:24;;;;;;;;;;;3528:9;3506;:18;3516:7;3506:18;;;;;;;;;;;;;;;;:31;;;;;;;;;;;3384:538;;;3615:1;3602:9;:14;3594:39;;;;;;;;;;;;:::i;:::-;;;;;;;;;3665:1;3656:6;:10;;;3648:37;;;;;;;;;;;;:::i;:::-;;;;;;;;;3708:2;:15;;;3724:10;3744:4;3751:6;3708:50;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3760:21;;;;;;;;;;;;;;;;;3700:82;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;3842:6;3827:21;;:11;;:21;;;;;;;;;;;3889:6;3867:28;;:9;:18;3877:7;3867:18;;;;;;;;;;;;;;;;:28;;;;;;;;;;;3384:538;3944:7;3937:23;;;3953:6;3937:23;;;;;;:::i;:::-;;;;;;;;3339:629;3265:703;;:::o;1868:227::-;1962:1;1942:22;;:8;:22;;;;1934:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;2051:8;2023:37;;2044:5;;;;;;;;;;;2023:37;;;;;;;;;;;;2079:8;2071:5;;:16;;;;;;;;;;;;;;;;;;1868:227;:::o;7:139:1:-;53:5;91:6;78:20;69:29;;107:33;134:5;107:33;:::i;:::-;7:139;;;;:::o;152:137::-;206:5;237:6;231:13;222:22;;253:30;277:5;253:30;:::i;:::-;152:137;;;;:::o;295:139::-;341:5;379:6;366:20;357:29;;395:33;422:5;395:33;:::i;:::-;295:139;;;;:::o;440:143::-;497:5;528:6;522:13;513:22;;544:33;571:5;544:33;:::i;:::-;440:143;;;;:::o;589:137::-;634:5;672:6;659:20;650:29;;688:32;714:5;688:32;:::i;:::-;589:137;;;;:::o;732:329::-;791:6;840:2;828:9;819:7;815:23;811:32;808:119;;;846:79;;:::i;:::-;808:119;966:1;991:53;1036:7;1027:6;1016:9;1012:22;991:53;:::i;:::-;981:63;;937:117;732:329;;;;:::o;1067:474::-;1135:6;1143;1192:2;1180:9;1171:7;1167:23;1163:32;1160:119;;;1198:79;;:::i;:::-;1160:119;1318:1;1343:53;1388:7;1379:6;1368:9;1364:22;1343:53;:::i;:::-;1333:63;;1289:117;1445:2;1471:53;1516:7;1507:6;1496:9;1492:22;1471:53;:::i;:::-;1461:63;;1416:118;1067:474;;;;;:::o;1547:345::-;1614:6;1663:2;1651:9;1642:7;1638:23;1634:32;1631:119;;;1669:79;;:::i;:::-;1631:119;1789:1;1814:61;1867:7;1858:6;1847:9;1843:22;1814:61;:::i;:::-;1804:71;;1760:125;1547:345;;;;:::o;1898:329::-;1957:6;2006:2;1994:9;1985:7;1981:23;1977:32;1974:119;;;2012:79;;:::i;:::-;1974:119;2132:1;2157:53;2202:7;2193:6;2182:9;2178:22;2157:53;:::i;:::-;2147:63;;2103:117;1898:329;;;;:::o;2233:472::-;2300:6;2308;2357:2;2345:9;2336:7;2332:23;2328:32;2325:119;;;2363:79;;:::i;:::-;2325:119;2483:1;2508:53;2553:7;2544:6;2533:9;2529:22;2508:53;:::i;:::-;2498:63;;2454:117;2610:2;2636:52;2680:7;2671:6;2660:9;2656:22;2636:52;:::i;:::-;2626:62;;2581:117;2233:472;;;;;:::o;2711:351::-;2781:6;2830:2;2818:9;2809:7;2805:23;2801:32;2798:119;;;2836:79;;:::i;:::-;2798:119;2956:1;2981:64;3037:7;3028:6;3017:9;3013:22;2981:64;:::i;:::-;2971:74;;2927:128;2711:351;;;;:::o;3068:118::-;3155:24;3173:5;3155:24;:::i;:::-;3150:3;3143:37;3068:118;;:::o;3192:159::-;3293:51;3338:5;3293:51;:::i;:::-;3288:3;3281:64;3192:159;;:::o;3357:364::-;3445:3;3473:39;3506:5;3473:39;:::i;:::-;3528:71;3592:6;3587:3;3528:71;:::i;:::-;3521:78;;3608:52;3653:6;3648:3;3641:4;3634:5;3630:16;3608:52;:::i;:::-;3685:29;3707:6;3685:29;:::i;:::-;3680:3;3676:39;3669:46;;3449:272;3357:364;;;;:::o;3727:366::-;3869:3;3890:67;3954:2;3949:3;3890:67;:::i;:::-;3883:74;;3966:93;4055:3;3966:93;:::i;:::-;4084:2;4079:3;4075:12;4068:19;;3727:366;;;:::o;4099:::-;4241:3;4262:67;4326:2;4321:3;4262:67;:::i;:::-;4255:74;;4338:93;4427:3;4338:93;:::i;:::-;4456:2;4451:3;4447:12;4440:19;;4099:366;;;:::o;4471:::-;4613:3;4634:67;4698:2;4693:3;4634:67;:::i;:::-;4627:74;;4710:93;4799:3;4710:93;:::i;:::-;4828:2;4823:3;4819:12;4812:19;;4471:366;;;:::o;4843:::-;4985:3;5006:67;5070:2;5065:3;5006:67;:::i;:::-;4999:74;;5082:93;5171:3;5082:93;:::i;:::-;5200:2;5195:3;5191:12;5184:19;;4843:366;;;:::o;5215:::-;5357:3;5378:67;5442:2;5437:3;5378:67;:::i;:::-;5371:74;;5454:93;5543:3;5454:93;:::i;:::-;5572:2;5567:3;5563:12;5556:19;;5215:366;;;:::o;5587:::-;5729:3;5750:67;5814:2;5809:3;5750:67;:::i;:::-;5743:74;;5826:93;5915:3;5826:93;:::i;:::-;5944:2;5939:3;5935:12;5928:19;;5587:366;;;:::o;5959:::-;6101:3;6122:67;6186:2;6181:3;6122:67;:::i;:::-;6115:74;;6198:93;6287:3;6198:93;:::i;:::-;6316:2;6311:3;6307:12;6300:19;;5959:366;;;:::o;6331:::-;6473:3;6494:67;6558:2;6553:3;6494:67;:::i;:::-;6487:74;;6570:93;6659:3;6570:93;:::i;:::-;6688:2;6683:3;6679:12;6672:19;;6331:366;;;:::o;6703:398::-;6862:3;6883:83;6964:1;6959:3;6883:83;:::i;:::-;6876:90;;6975:93;7064:3;6975:93;:::i;:::-;7093:1;7088:3;7084:11;7077:18;;6703:398;;;:::o;7107:118::-;7194:24;7212:5;7194:24;:::i;:::-;7189:3;7182:37;7107:118;;:::o;7231:131::-;7318:37;7349:5;7318:37;:::i;:::-;7313:3;7306:50;7231:131;;:::o;7368:118::-;7455:24;7473:5;7455:24;:::i;:::-;7450:3;7443:37;7368:118;;:::o;7492:115::-;7577:23;7594:5;7577:23;:::i;:::-;7572:3;7565:36;7492:115;;:::o;7613:379::-;7797:3;7819:147;7962:3;7819:147;:::i;:::-;7812:154;;7983:3;7976:10;;7613:379;;;:::o;7998:222::-;8091:4;8129:2;8118:9;8114:18;8106:26;;8142:71;8210:1;8199:9;8195:17;8186:6;8142:71;:::i;:::-;7998:222;;;;:::o;8226:442::-;8375:4;8413:2;8402:9;8398:18;8390:26;;8426:71;8494:1;8483:9;8479:17;8470:6;8426:71;:::i;:::-;8507:72;8575:2;8564:9;8560:18;8551:6;8507:72;:::i;:::-;8589;8657:2;8646:9;8642:18;8633:6;8589:72;:::i;:::-;8226:442;;;;;;:::o;8674:332::-;8795:4;8833:2;8822:9;8818:18;8810:26;;8846:71;8914:1;8903:9;8899:17;8890:6;8846:71;:::i;:::-;8927:72;8995:2;8984:9;8980:18;8971:6;8927:72;:::i;:::-;8674:332;;;;;:::o;9012:::-;9133:4;9171:2;9160:9;9156:18;9148:26;;9184:71;9252:1;9241:9;9237:17;9228:6;9184:71;:::i;:::-;9265:72;9333:2;9322:9;9318:18;9309:6;9265:72;:::i;:::-;9012:332;;;;;:::o;9350:250::-;9457:4;9495:2;9484:9;9480:18;9472:26;;9508:85;9590:1;9579:9;9575:17;9566:6;9508:85;:::i;:::-;9350:250;;;;:::o;9606:313::-;9719:4;9757:2;9746:9;9742:18;9734:26;;9806:9;9800:4;9796:20;9792:1;9781:9;9777:17;9770:47;9834:78;9907:4;9898:6;9834:78;:::i;:::-;9826:86;;9606:313;;;;:::o;9925:419::-;10091:4;10129:2;10118:9;10114:18;10106:26;;10178:9;10172:4;10168:20;10164:1;10153:9;10149:17;10142:47;10206:131;10332:4;10206:131;:::i;:::-;10198:139;;9925:419;;;:::o;10350:::-;10516:4;10554:2;10543:9;10539:18;10531:26;;10603:9;10597:4;10593:20;10589:1;10578:9;10574:17;10567:47;10631:131;10757:4;10631:131;:::i;:::-;10623:139;;10350:419;;;:::o;10775:::-;10941:4;10979:2;10968:9;10964:18;10956:26;;11028:9;11022:4;11018:20;11014:1;11003:9;10999:17;10992:47;11056:131;11182:4;11056:131;:::i;:::-;11048:139;;10775:419;;;:::o;11200:::-;11366:4;11404:2;11393:9;11389:18;11381:26;;11453:9;11447:4;11443:20;11439:1;11428:9;11424:17;11417:47;11481:131;11607:4;11481:131;:::i;:::-;11473:139;;11200:419;;;:::o;11625:::-;11791:4;11829:2;11818:9;11814:18;11806:26;;11878:9;11872:4;11868:20;11864:1;11853:9;11849:17;11842:47;11906:131;12032:4;11906:131;:::i;:::-;11898:139;;11625:419;;;:::o;12050:::-;12216:4;12254:2;12243:9;12239:18;12231:26;;12303:9;12297:4;12293:20;12289:1;12278:9;12274:17;12267:47;12331:131;12457:4;12331:131;:::i;:::-;12323:139;;12050:419;;;:::o;12475:::-;12641:4;12679:2;12668:9;12664:18;12656:26;;12728:9;12722:4;12718:20;12714:1;12703:9;12699:17;12692:47;12756:131;12882:4;12756:131;:::i;:::-;12748:139;;12475:419;;;:::o;12900:::-;13066:4;13104:2;13093:9;13089:18;13081:26;;13153:9;13147:4;13143:20;13139:1;13128:9;13124:17;13117:47;13181:131;13307:4;13181:131;:::i;:::-;13173:139;;12900:419;;;:::o;13325:222::-;13418:4;13456:2;13445:9;13441:18;13433:26;;13469:71;13537:1;13526:9;13522:17;13513:6;13469:71;:::i;:::-;13325:222;;;;:::o;13553:::-;13646:4;13684:2;13673:9;13669:18;13661:26;;13697:71;13765:1;13754:9;13750:17;13741:6;13697:71;:::i;:::-;13553:222;;;;:::o;13781:332::-;13902:4;13940:2;13929:9;13925:18;13917:26;;13953:71;14021:1;14010:9;14006:17;13997:6;13953:71;:::i;:::-;14034:72;14102:2;14091:9;14087:18;14078:6;14034:72;:::i;:::-;13781:332;;;;;:::o;14119:222::-;14212:4;14250:2;14239:9;14235:18;14227:26;;14263:71;14331:1;14320:9;14316:17;14307:6;14263:71;:::i;:::-;14119:222;;;;:::o;14347:218::-;14438:4;14476:2;14465:9;14461:18;14453:26;;14489:69;14555:1;14544:9;14540:17;14531:6;14489:69;:::i;:::-;14347:218;;;;:::o;14652:99::-;14704:6;14738:5;14732:12;14722:22;;14652:99;;;:::o;14757:147::-;14858:11;14895:3;14880:18;;14757:147;;;;:::o;14910:169::-;14994:11;15028:6;15023:3;15016:19;15068:4;15063:3;15059:14;15044:29;;14910:169;;;;:::o;15085:191::-;15125:4;15145:20;15163:1;15145:20;:::i;:::-;15140:25;;15179:20;15197:1;15179:20;:::i;:::-;15174:25;;15218:1;15215;15212:8;15209:34;;;15223:18;;:::i;:::-;15209:34;15268:1;15265;15261:9;15253:17;;15085:191;;;;:::o;15282:96::-;15319:7;15348:24;15366:5;15348:24;:::i;:::-;15337:35;;15282:96;;;:::o;15384:90::-;15418:7;15461:5;15454:13;15447:21;15436:32;;15384:90;;;:::o;15480:118::-;15517:7;15557:34;15550:5;15546:46;15535:57;;15480:118;;;:::o;15604:126::-;15641:7;15681:42;15674:5;15670:54;15659:65;;15604:126;;;:::o;15736:77::-;15773:7;15802:5;15791:16;;15736:77;;;:::o;15819:101::-;15855:7;15895:18;15888:5;15884:30;15873:41;;15819:101;;;:::o;15926:140::-;15990:9;16023:37;16054:5;16023:37;:::i;:::-;16010:50;;15926:140;;;:::o;16072:113::-;16122:9;16155:24;16173:5;16155:24;:::i;:::-;16142:37;;16072:113;;;:::o;16191:126::-;16241:9;16274:37;16305:5;16274:37;:::i;:::-;16261:50;;16191:126;;;:::o;16323:113::-;16373:9;16406:24;16424:5;16406:24;:::i;:::-;16393:37;;16323:113;;;:::o;16442:307::-;16510:1;16520:113;16534:6;16531:1;16528:13;16520:113;;;16619:1;16614:3;16610:11;16604:18;16600:1;16595:3;16591:11;16584:39;16556:2;16553:1;16549:10;16544:15;;16520:113;;;16651:6;16648:1;16645:13;16642:101;;;16731:1;16722:6;16717:3;16713:16;16706:27;16642:101;16491:258;16442:307;;;:::o;16755:180::-;16803:77;16800:1;16793:88;16900:4;16897:1;16890:15;16924:4;16921:1;16914:15;16941:180;16989:77;16986:1;16979:88;17086:4;17083:1;17076:15;17110:4;17107:1;17100:15;17250:117;17359:1;17356;17349:12;17373:102;17414:6;17465:2;17461:7;17456:2;17449:5;17445:14;17441:28;17431:38;;17373:102;;;:::o;17481:225::-;17621:34;17617:1;17609:6;17605:14;17598:58;17690:8;17685:2;17677:6;17673:15;17666:33;17481:225;:::o;17712:164::-;17852:16;17848:1;17840:6;17836:14;17829:40;17712:164;:::o;17882:162::-;18022:14;18018:1;18010:6;18006:14;17999:38;17882:162;:::o;18050:172::-;18190:24;18186:1;18178:6;18174:14;18167:48;18050:172;:::o;18228:176::-;18368:28;18364:1;18356:6;18352:14;18345:52;18228:176;:::o;18410:170::-;18550:22;18546:1;18538:6;18534:14;18527:46;18410:170;:::o;18586:167::-;18726:19;18722:1;18714:6;18710:14;18703:43;18586:167;:::o;18759:182::-;18899:34;18895:1;18887:6;18883:14;18876:58;18759:182;:::o;18947:114::-;;:::o;19067:122::-;19140:24;19158:5;19140:24;:::i;:::-;19133:5;19130:35;19120:63;;19179:1;19176;19169:12;19120:63;19067:122;:::o;19195:116::-;19265:21;19280:5;19265:21;:::i;:::-;19258:5;19255:32;19245:60;;19301:1;19298;19291:12;19245:60;19195:116;:::o;19317:122::-;19390:24;19408:5;19390:24;:::i;:::-;19383:5;19380:35;19370:63;;19429:1;19426;19419:12;19370:63;19317:122;:::o;19445:::-;19518:24;19536:5;19518:24;:::i;:::-;19511:5;19508:35;19498:63;;19557:1;19554;19547:12;19498:63;19445:122;:::o;19573:120::-;19645:23;19662:5;19645:23;:::i;:::-;19638:5;19635:34;19625:62;;19683:1;19680;19673:12;19625:62;19573:120;:::o

Swarm Source

ipfs://97965ae5a79bfc78ba886b7e08a5a13994d80d739c369a77932466cabf436d8b

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.