Contract 0x8ceae826d99a8936bc5e2d2e1e7f79afa0408315 2

 
 
Txn Hash
Block
From
To
Value [Txn Fee]
0xcaffad16b064c015af8051cdc3ed645942dbf027d2d91fd75677e21772d5050096453252021-08-01 1:17:2413 hrs 32 mins ago0x0e3634bdd4d3af271b1b37fdb606bc8663904b29 IN  SmartPool: SPOOL Token0 BNB0.0001057
0x1d5fc3eb43f1747f7fa9ac0a76eb2a0a244f47d7588b504fff0452b7f6990e9496382522021-07-31 19:16:0119 hrs 33 mins ago0x2a658a10553f508be2cecd8bcf11118c05254f1d IN  SmartPool: SPOOL Token0 BNB0.000201585
0x395861c1f926745f264f49ebe9c7b8edfca807d521370ee1b3fa49ff4b3371c896328662021-07-31 14:31:221 day 18 mins ago0xae1db35c0a034ae1fec44def5abc2b0d4117497e IN  SmartPool: SPOOL Token0 BNB0.00022677
0xefb5b8b2641e5e6acc246a90d108acfab6b37a16d4f1cf401ce6e2b50a7b260b95908832021-07-30 2:56:502 days 11 hrs ago0x43035a2e483bbd1a544f01b6e9dfdd26d95f4b3b IN  SmartPool: SPOOL Token0 BNB0.0000755
0x32c9f7e75f0fd18c9f5b60ad1cea62b984a91e95929edb45f8c2a31e625f217f95878632021-07-30 0:22:232 days 14 hrs ago0xb9a09eb796189c0d5c672008960f0874e1dab487 IN  SmartPool: SPOOL Token0 BNB0.000201585
0xdfb71307da70a0dce6ce380ad22e3fc4b0375009bd3309d35a96218cf6feb9fc95847142021-07-29 21:36:482 days 17 hrs ago0xde89f85be02e67f23bb257d622b8c227b78a10f2 IN  SmartPool: SPOOL Token0 BNB0.00022677
0x21c307b1210740344bf7d999bf73f00ce60d71fe02c2674b1caeb3df241aaea595729482021-07-29 10:54:403 days 3 hrs ago0xaa1c0be64af0c2180d3e878292fc9c5fde80b9df IN  SmartPool: SPOOL Token0 BNB0.0000755
0xf2fea313d7cdc670e00d4a6d91271d9800267d792f1d02935a8a1d6a80e4c64295723062021-07-29 10:20:463 days 4 hrs ago0xe77c6e0aedf737db5144994fa34c4d3f40f56408 IN  SmartPool: SPOOL Token0 BNB0.0001295
0x07e8ba5ffa38f3a800555662fad94887f4d7af975b39d94368faf91ac13e1d5195722922021-07-29 10:20:043 days 4 hrs ago0xe77c6e0aedf737db5144994fa34c4d3f40f56408 IN  SmartPool: SPOOL Token0 BNB0.0001295
0x573bfdc38a11f699f2eafeda3eb83a20b78c28e0954011aa4ff5727dc6e3ed2c95722842021-07-29 10:19:403 days 4 hrs ago0xe77c6e0aedf737db5144994fa34c4d3f40f56408 IN  SmartPool: SPOOL Token0 BNB0.0000755
0x0e89a8127f501c427097f1290fc598986aae5a5e06039b0662b1b82a6806914695716542021-07-29 9:44:043 days 5 hrs ago0xabac2a38147a07a2e371c0c0448e680d35acf645 IN  SmartPool: SPOOL Token0 BNB0.000201585
0x3b455fc10444fc5e04cc921ef7a2e025c9c399d5469869867d8710ccb0d3dd3b95322442021-07-27 22:37:034 days 16 hrs ago0x5be5a8590c8898f4e9282de3efbccfba6ef2a9ed IN  SmartPool: SPOOL Token0 BNB0.00022677
0x04b297c469982a317eb306610b1d9d14a329ba44a7d7ee71b91cbda2df10c62195273352021-07-27 18:02:484 days 20 hrs ago0x2edabdaddefc4a7c8c737ab9ec20707dac8d3eb0 IN  SmartPool: SPOOL Token0 BNB0.00022677
0xe2856adee22cb84956393c5d2a3615aa02d3eb436bfe20c6c98c5d934d2a11fc94901312021-07-26 9:19:496 days 5 hrs ago0xc831492333b819c9ef3b9b6a96724a2e1c608713 IN  SmartPool: SPOOL Token0 BNB0.00022677
0x73b652b9faeae11ddc4b59bd7ff722e64252cdaa71f309286458c66ea552498894881862021-07-26 7:40:316 days 7 hrs ago0x76481f2ee00512e757fa4e76b390c3ca48efb0a5 IN  SmartPool: SPOOL Token0 BNB0.00022677
0xb1c1b7c1e1533e23644ecb6df7ade84bfb88e7b63b05e58f71d5711906c5b46694860982021-07-26 5:52:276 days 8 hrs ago0x00ad51b13be9f792682508b8a00397cdc7078cc4 IN  SmartPool: SPOOL Token0 BNB0.00022677
0x9233ecf5b5e4db470bbaff2ece25c66926f16b84c849ea19564f14d8e324628194580032021-07-25 6:12:077 days 8 hrs ago0xe7e484442d847898be18ed95d3bccf466a48a149 IN  SmartPool: SPOOL Token0 BNB0.00022677
0x2fb134b8d40bf2e0cbac002a65050317b3791b6f6468b9e002a4b19eec0c609694493692021-07-24 22:59:347 days 15 hrs ago0x9f595caef90e831008e6b2dd29ad549124a3899b IN  SmartPool: SPOOL Token0 BNB0.000201585
0x92d9e406bd941eeec048150e9653499730937c326ac248a0b0dad3381c1cf6f694309742021-07-24 7:28:568 days 7 hrs ago0xeb9e4c3d8567ccd8089ac0590a3483bf5ef33af4 IN  SmartPool: SPOOL Token0 BNB0.00022677
0x6e94e4ffa8f10f737fbc6679a777338403560d355857a75a670540566ac102fb94212442021-07-23 23:21:058 days 15 hrs ago0x0ea909d869d20a27776d85fbcf905b4c41c4216e IN  SmartPool: SPOOL Token0 BNB0.00022677
0x7262022ae226fc190c0f083490df9e24866edab61337f21314b8f86f9b7dfb6794181792021-07-23 20:47:428 days 18 hrs ago0x31ba2fb498a292e7b802b627778e675b38d85b04 IN  SmartPool: SPOOL Token0 BNB0.000272124
0x93ae6c6a434409699aafaea88cfe63bbcbad8b8c0b2e93ba18c89d08392ca5d994170272021-07-23 19:50:008 days 18 hrs ago0xd13767155690b69fbafe44d2ccda02da2a72f055 IN  SmartPool: SPOOL Token0 BNB0.00022677
0x55ffb1c8a30081991c114eaf3a2632a17af9202fa1186bc2a76a2198d8f9bb0694066902021-07-23 11:06:369 days 3 hrs ago0x89237f86f3e3003c201be960e761c96599d964df IN  SmartPool: SPOOL Token0 BNB0.00022677
0x316a94e69dd4a10ab5d0abfb870c4d473dec05acb7b94393271cbc088be9a9df93944012021-07-23 0:51:339 days 13 hrs ago0x1f76911238f59781470d91f7eaf41df9b96976a3 IN  SmartPool: SPOOL Token0 BNB0.00022677
0xda8b5927ce6ba080bf716e4736533a62653f1fd3b7bbd1d40c04e070186acafb93891882021-07-22 20:30:299 days 18 hrs ago0xac0399e1280ae583c36730ce20772da2e75a0adc IN  SmartPool: SPOOL Token0 BNB0.00022677
[ Download CSV Export 

OVERVIEW

SmartPool is an innovative on-chain rewards platform, rewarding existing platform users and providing a launchpad and initial liquidity for new platforms.

Latest 9 internal transactions
Parent Txn Hash Block From To Value
0xd15521339ee89514c72d63e065968e2dfac79c59988f8f20ea08db0f420acf5c76466872021-05-23 2:09:3670 days 12 hrs ago SmartPool: SPOOL TokenSmartPool: Deployer0.0008966245555 BNB
0xc29c2045d64ef36c90bb33035a7a6f250b7d380cd2cac85b342812a3b4ec2d6872461642021-05-08 15:58:5384 days 22 hrs ago SmartPool: SPOOL TokenSmartPool: Deployer0.001546189659692199 BNB
0x117ec59d9e1aed46781cbd36334b061dbaad229f598716b5f84dfcd4c547aca472459982021-05-08 15:49:1584 days 23 hrs ago SmartPool: SPOOL TokenSmartPool: Deployer0.001758403497397752 BNB
0x493850d4a31b29f8182f6cfa6efe2e053e262851a23d57b6e4f05f64b7e50ee872148602021-05-07 13:17:0386 days 1 hr ago SmartPool: SPOOL TokenSmartPool: Deployer0.01119015264144532 BNB
0x8309750bc89248e6d3bf1ebdfba9a90203f941d6fdcb4b0fc46c76702a73b3e470759862021-05-02 15:25:5690 days 23 hrs ago SmartPool: SPOOL TokenSmartPool: Deployer0.0001 BNB
0xa802f937c873539dde33c1eb22e7df336d444298c2d3811c24dcb56a8c5e9c6a70714632021-05-02 11:37:2891 days 3 hrs ago SmartPool: SPOOL TokenSmartPool: Deployer0.00001 BNB
0xa21d6e9a20f88df1150820b2e1cceb9970676840f0cc3ea8a54165bc3a76023270697342021-05-02 10:10:4291 days 4 hrs ago SmartPool: SPOOL TokenSmartPool: Deployer0.00165 BNB
0x592b74ccd1a1e83f6cb43fb12a34829aa00686d13c12b52cd8cd3f73deda2bd470604692021-05-02 2:26:3591 days 12 hrs ago SmartPool: SPOOL TokenSmartPool: Deployer0.003 BNB
0xdf6573c8cc5d29af6272afe4b349aa86ad1d6812d14c3f64d7d61a5003bb3fc270547212021-05-01 21:37:2091 days 17 hrs ago SmartPool: SPOOL TokenSmartPool: Deployer0.000181833348372638 BNB
[ Download CSV Export 
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
SmartPoolToken

Compiler Version
v0.6.12+commit.27d51765

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, None license
/**
 *Submitted for verification at BscScan.com on 2021-03-09
*/

pragma solidity 0.6.12;
pragma experimental ABIEncoderV2;

// Copyright 2020 Compound Labs, Inc.
// Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
// 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
// 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
// 3. Neither the name of the copyright holder nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission.
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

/**
 * @title Ownable
 * @dev The Ownable contract has an owner address, and provides basic authorization control
 * functions, this simplifies the implementation of "user permissions".
 */
contract Ownable {
    address public owner;


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


    /**
     * @dev The Ownable constructor sets the original `owner` of the contract to the sender
     * account.
     */
    constructor() public {
        owner = msg.sender;
    }

    /**
     * @dev Throws if called by any account other than the owner.
     */
    modifier onlyOwner() {
        require(msg.sender == owner);
        _;
    }

    /**
     * @dev Allows the current owner to transfer control of the contract to a newOwner.
     * @param newOwner The address to transfer ownership to.
     */
    function transferOwnership(address newOwner) public onlyOwner {
        require(newOwner != address(0));
        emit OwnershipTransferred(owner, newOwner);
        owner = newOwner;
    }
}

/**
 * @title ERC20Basic
 * @dev Simpler version of ERC20 interface
 * @dev see https://github.com/ethereum/EIPs/issues/179
 */
abstract contract ERC20Basic {
    function totalSupply() virtual public view returns (uint256);
    function balanceOf(address who) virtual public view returns (uint256);
    function transfer(address to, uint256 value) virtual public returns (bool);
    event Transfer(address indexed from, address indexed to, uint256 value);
}



contract Recoverable is Ownable {

    /// @dev Empty constructor (for now)
    constructor() public {
    }

    /// @dev This will be invoked by the owner, when owner wants to rescue tokens
    /// @param token Token which will we rescue to the owner from the contract
    function recoverTokens(ERC20Basic token) onlyOwner public {
        token.transfer(owner, tokensToBeReturned(token));
    }

    /// @dev Interface function, can be overwritten by the superclass
    /// @param token Token which balance we will check and return
    /// @return The amount of tokens (in smallest denominator) the contract owns
    function tokensToBeReturned(ERC20Basic token) public returns (uint) {
        return token.balanceOf(address(this));
    }
}


contract SmartPoolToken is Recoverable {
    /// @notice EIP-20 token name for this token
    string public constant name = "SmartPool Token";

    /// @notice EIP-20 token symbol for this token
    string public constant symbol = "SPOOL";

    /// @notice EIP-20 token decimals for this token
    uint8 public constant decimals = 18;

    /// @notice Total number of tokens in circulation
    uint public totalSupply = 8_000_000e18;

    /// @notice Allowance amounts on behalf of others
    mapping (address => mapping (address => uint96)) internal allowances;

    /// @notice Official record of token balances for each account
    mapping (address => uint96) internal balances;

    /// @notice A record of each accounts delegate
    mapping (address => address) public delegates;

    /// @notice A checkpoint for marking number of votes from a given block
    struct Checkpoint {
        uint32 fromBlock;
        uint96 votes;
    }

    /// @notice A record of votes checkpoints for each account, by index
    mapping (address => mapping (uint32 => Checkpoint)) public checkpoints;

    /// @notice The number of checkpoints for each account
    mapping (address => uint32) public numCheckpoints;

    /// @notice The EIP-712 typehash for the contract's domain
    bytes32 public constant DOMAIN_TYPEHASH = keccak256("EIP712Domain(string name,uint256 chainId,address verifyingContract)");

    /// @notice The EIP-712 typehash for the delegation struct used by the contract
    bytes32 public constant DELEGATION_TYPEHASH = keccak256("Delegation(address delegatee,uint256 nonce,uint256 expiry)");

    /// @notice A record of states for signing / validating signatures
    mapping (address => uint) public nonces;

    /// @notice An event thats emitted when an account changes its delegate
    event DelegateChanged(address indexed delegator, address indexed fromDelegate, address indexed toDelegate);

    /// @notice An event thats emitted when a delegate account's vote balance changes
    event DelegateVotesChanged(address indexed delegate, uint previousBalance, uint newBalance);

    /// @notice The standard EIP-20 transfer event
    event Transfer(address indexed from, address indexed to, uint256 amount);

    /// @notice The standard EIP-20 approval event
    event Approval(address indexed owner, address indexed spender, uint256 amount);

    /**
     * @notice Construct a new Fuel token
     * @param account The initial account to grant all the tokens
     */
    constructor(address account) public {
        balances[account] = uint96(totalSupply);
        emit Transfer(address(0), account, totalSupply);
    }

    /**
     * @notice Get the number of tokens `spender` is approved to spend on behalf of `account`
     * @param account The address of the account holding the funds
     * @param spender The address of the account spending the funds
     * @return The number of tokens approved
     */
    function allowance(address account, address spender) external view returns (uint) {
        return allowances[account][spender];
    }

    /**
     * @notice Approve `spender` to transfer up to `amount` from `src`
     * @dev This will overwrite the approval amount for `spender`
     *  and is subject to issues noted [here](https://eips.ethereum.org/EIPS/eip-20#approve)
     * @param spender The address of the account which may transfer tokens
     * @param rawAmount The number of tokens that are approved (2^256-1 means infinite)
     * @return Whether or not the approval succeeded
     */
    function approve(address spender, uint rawAmount) external returns (bool) {
        uint96 amount;
        if (rawAmount == uint(-1)) {
            amount = uint96(-1);
        } else {
            amount = safe96(rawAmount, "Token::approve: amount exceeds 96 bits");
        }

        allowances[msg.sender][spender] = amount;

        emit Approval(msg.sender, spender, amount);
        return true;
    }

    /**
     * @notice Get the number of tokens held by the `account`
     * @param account The address of the account to get the balance of
     * @return The number of tokens held
     */
    function balanceOf(address account) external view returns (uint) {
        return balances[account];
    }

    /**
     * @notice Burn `amount` tokens
     * @param rawAmount The number of tokens to burn
     */
    function burn(uint rawAmount) external {
        uint96 amount = safe96(rawAmount, "Token::burn: amount exceeds 96 bits");
        _burnTokens(msg.sender, amount);
    }

    /**
     * @notice Transfer `amount` tokens from `msg.sender` to `dst`
     * @param dst The address of the destination account
     * @param rawAmount The number of tokens to transfer
     * @return Whether or not the transfer succeeded
     */
    function transfer(address dst, uint rawAmount) external returns (bool) {
        uint96 amount = safe96(rawAmount, "Token::transfer: amount exceeds 96 bits");
        _transferTokens(msg.sender, dst, amount);
        return true;
    }

    /**
     * @notice Transfer `amount` tokens from `src` to `dst`
     * @param src The address of the source account
     * @param dst The address of the destination account
     * @param rawAmount The number of tokens to transfer
     * @return Whether or not the transfer succeeded
     */
    function transferFrom(address src, address dst, uint rawAmount) external returns (bool) {
        address spender = msg.sender;
        uint96 spenderAllowance = allowances[src][spender];
        uint96 amount = safe96(rawAmount, "Token::approve: amount exceeds 96 bits");

        if (spender != src && spenderAllowance != uint96(-1)) {
            uint96 newAllowance = sub96(spenderAllowance, amount, "Token::transferFrom: transfer amount exceeds spender allowance");
            allowances[src][spender] = newAllowance;

            emit Approval(src, spender, newAllowance);
        }

        _transferTokens(src, dst, amount);
        return true;
    }

    /**
     * @notice Delegate votes from `msg.sender` to `delegatee`
     * @param delegatee The address to delegate votes to
     */
    function delegate(address delegatee) public {
        return _delegate(msg.sender, delegatee);
    }

    /**
     * @notice Delegates votes from signatory to `delegatee`
     * @param delegatee The address to delegate votes to
     * @param nonce The contract state required to match the signature
     * @param expiry The time at which to expire the signature
     * @param v The recovery byte of the signature
     * @param r Half of the ECDSA signature pair
     * @param s Half of the ECDSA signature pair
     */
    function delegateBySig(address delegatee, uint nonce, uint expiry, uint8 v, bytes32 r, bytes32 s) public {
        bytes32 domainSeparator = keccak256(abi.encode(DOMAIN_TYPEHASH, keccak256(bytes(name)), getChainId(), address(this)));
        bytes32 structHash = keccak256(abi.encode(DELEGATION_TYPEHASH, delegatee, nonce, expiry));
        bytes32 digest = keccak256(abi.encodePacked("\x19\x01", domainSeparator, structHash));
        address signatory = ecrecover(digest, v, r, s);
        require(signatory != address(0), "Token::delegateBySig: invalid signature");
        require(nonce == nonces[signatory]++, "Token::delegateBySig: invalid nonce");
        require(now <= expiry, "Token::delegateBySig: signature expired");
        return _delegate(signatory, delegatee);
    }

    /**
     * @notice Gets the current votes balance for `account`
     * @param account The address to get votes balance
     * @return The number of current votes for `account`
     */
    function getCurrentVotes(address account) external view returns (uint96) {
        uint32 nCheckpoints = numCheckpoints[account];
        return nCheckpoints > 0 ? checkpoints[account][nCheckpoints - 1].votes : 0;
    }

    /**
     * @notice Determine the prior number of votes for an account as of a block number
     * @dev Block number must be a finalized block or else this function will revert to prevent misinformation.
     * @param account The address of the account to check
     * @param blockNumber The block number to get the vote balance at
     * @return The number of votes the account had as of the given block
     */
    function getPriorVotes(address account, uint blockNumber) public view returns (uint96) {
        require(blockNumber < block.number, "Token::getPriorVotes: not yet determined");

        uint32 nCheckpoints = numCheckpoints[account];
        if (nCheckpoints == 0) {
            return 0;
        }

        // First check most recent balance
        if (checkpoints[account][nCheckpoints - 1].fromBlock <= blockNumber) {
            return checkpoints[account][nCheckpoints - 1].votes;
        }

        // Next check implicit zero balance
        if (checkpoints[account][0].fromBlock > blockNumber) {
            return 0;
        }

        uint32 lower = 0;
        uint32 upper = nCheckpoints - 1;
        while (upper > lower) {
            uint32 center = upper - (upper - lower) / 2; // ceil, avoiding overflow
            Checkpoint memory cp = checkpoints[account][center];
            if (cp.fromBlock == blockNumber) {
                return cp.votes;
            } else if (cp.fromBlock < blockNumber) {
                lower = center;
            } else {
                upper = center - 1;
            }
        }
        return checkpoints[account][lower].votes;
    }
    
    fallback () external payable {
        payable(owner).transfer(msg.value);
    }

    function _delegate(address delegator, address delegatee) internal {
        address currentDelegate = delegates[delegator];
        uint96 delegatorBalance = balances[delegator];
        delegates[delegator] = delegatee;

        emit DelegateChanged(delegator, currentDelegate, delegatee);

        _moveDelegates(currentDelegate, delegatee, delegatorBalance);
    }

    function _transferTokens(address src, address dst, uint96 amount) internal {
        require(src != address(0), "Token::_transferTokens: cannot transfer from the zero address");
        require(dst != address(0), "Token::_transferTokens: cannot transfer to the zero address");

        balances[src] = sub96(balances[src], amount, "Token::_transferTokens: transfer amount exceeds balance");
        balances[dst] = add96(balances[dst], amount, "Token::_transferTokens: transfer amount overflows");
        emit Transfer(src, dst, amount);

        _moveDelegates(delegates[src], delegates[dst], amount);
    }

    function _mintTokens(address dst, uint96 amount) internal {
        require(dst != address(0), "Token::_mintTokens: cannot transfer to the zero address");
        uint96 supply = safe96(totalSupply, "Token::_mintTokens: totalSupply exceeds 96 bits");
        totalSupply = add96(supply, amount, "Token::_mintTokens: totalSupply exceeds 96 bits");
        balances[dst] = add96(balances[dst], amount, "Token::_mintTokens: transfer amount overflows");
        emit Transfer(address(0), dst, amount);

        _moveDelegates(address(0), delegates[dst], amount);
    }

    function _burnTokens(address src, uint96 amount) internal {
        uint96 supply = safe96(totalSupply, "Token::_burnTokens: totalSupply exceeds 96 bits");
        totalSupply = sub96(supply, amount, "Token::_burnTokens:totalSupply underflow");
        balances[src] = sub96(balances[src], amount, "Token::_burnTokens: amount overflows");
        emit Transfer(src, address(0), amount);

        _moveDelegates(delegates[src], address(0), amount);
    }

    function _moveDelegates(address srcRep, address dstRep, uint96 amount) internal {
        if (srcRep != dstRep && amount > 0) {
            if (srcRep != address(0)) {
                uint32 srcRepNum = numCheckpoints[srcRep];
                uint96 srcRepOld = srcRepNum > 0 ? checkpoints[srcRep][srcRepNum - 1].votes : 0;
                uint96 srcRepNew = sub96(srcRepOld, amount, "Token::_moveVotes: vote amount underflows");
                _writeCheckpoint(srcRep, srcRepNum, srcRepOld, srcRepNew);
            }

            if (dstRep != address(0)) {
                uint32 dstRepNum = numCheckpoints[dstRep];
                uint96 dstRepOld = dstRepNum > 0 ? checkpoints[dstRep][dstRepNum - 1].votes : 0;
                uint96 dstRepNew = add96(dstRepOld, amount, "Token::_moveVotes: vote amount overflows");
                _writeCheckpoint(dstRep, dstRepNum, dstRepOld, dstRepNew);
            }
        }
    }

    function _writeCheckpoint(address delegatee, uint32 nCheckpoints, uint96 oldVotes, uint96 newVotes) internal {
        uint32 blockNumber = safe32(block.number, "Token::_writeCheckpoint: block number exceeds 32 bits");

        if (nCheckpoints > 0 && checkpoints[delegatee][nCheckpoints - 1].fromBlock == blockNumber) {
            checkpoints[delegatee][nCheckpoints - 1].votes = newVotes;
        } else {
            checkpoints[delegatee][nCheckpoints] = Checkpoint(blockNumber, newVotes);
            numCheckpoints[delegatee] = nCheckpoints + 1;
        }

        emit DelegateVotesChanged(delegatee, oldVotes, newVotes);
    }

    function safe32(uint n, string memory errorMessage) internal pure returns (uint32) {
        require(n < 2**32, errorMessage);
        return uint32(n);
    }

    function safe96(uint n, string memory errorMessage) internal pure returns (uint96) {
        require(n < 2**96, errorMessage);
        return uint96(n);
    }

    function add96(uint96 a, uint96 b, string memory errorMessage) internal pure returns (uint96) {
        uint96 c = a + b;
        require(c >= a, errorMessage);
        return c;
    }

    function sub96(uint96 a, uint96 b, string memory errorMessage) internal pure returns (uint96) {
        require(b <= a, errorMessage);
        return a - b;
    }

    function getChainId() internal pure returns (uint) {
        uint256 chainId;
        assembly { chainId := chainid() }
        return chainId;
    }
}

Contract ABI

[{"inputs":[{"internalType":"address","name":"account","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"delegator","type":"address"},{"indexed":true,"internalType":"address","name":"fromDelegate","type":"address"},{"indexed":true,"internalType":"address","name":"toDelegate","type":"address"}],"name":"DelegateChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"delegate","type":"address"},{"indexed":false,"internalType":"uint256","name":"previousBalance","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"newBalance","type":"uint256"}],"name":"DelegateVotesChanged","type":"event"},{"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":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Transfer","type":"event"},{"stateMutability":"payable","type":"fallback"},{"inputs":[],"name":"DELEGATION_TYPEHASH","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"DOMAIN_TYPEHASH","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"rawAmount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"rawAmount","type":"uint256"}],"name":"burn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint32","name":"","type":"uint32"}],"name":"checkpoints","outputs":[{"internalType":"uint32","name":"fromBlock","type":"uint32"},{"internalType":"uint96","name":"votes","type":"uint96"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"delegatee","type":"address"}],"name":"delegate","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"delegatee","type":"address"},{"internalType":"uint256","name":"nonce","type":"uint256"},{"internalType":"uint256","name":"expiry","type":"uint256"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"delegateBySig","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"delegates","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"getCurrentVotes","outputs":[{"internalType":"uint96","name":"","type":"uint96"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"blockNumber","type":"uint256"}],"name":"getPriorVotes","outputs":[{"internalType":"uint96","name":"","type":"uint96"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"nonces","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"numCheckpoints","outputs":[{"internalType":"uint32","name":"","type":"uint32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"contract ERC20Basic","name":"token","type":"address"}],"name":"recoverTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"contract ERC20Basic","name":"token","type":"address"}],"name":"tokensToBeReturned","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"dst","type":"address"},{"internalType":"uint256","name":"rawAmount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"src","type":"address"},{"internalType":"address","name":"dst","type":"address"},{"internalType":"uint256","name":"rawAmount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"}]

60806040526a069e10de76676d0800000060015534801561001f57600080fd5b5060405162001ef538038062001ef5833981016040819052610040916100cd565b600080546001600160a01b03191633178155600180546001600160a01b0384168084526003602052604080852080546001600160601b039094166001600160601b031990941693909317909255915490519192917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef916100bf916100fb565b60405180910390a350610104565b6000602082840312156100de578081fd5b81516001600160a01b03811681146100f4578182fd5b9392505050565b90815260200190565b611de180620001146000396000f3fe60806040526004361061014b5760003560e01c8063782d6fe1116100b6578063c3cda5201161006f578063c3cda520146103ec578063c45d19db1461040c578063dd62ed3e1461042c578063e7a324dc1461044c578063f1127ed814610461578063f2fde38b1461048f5761014b565b8063782d6fe1146103355780637ecebe00146103625780638da5cb5b1461038257806395d89b4114610397578063a9059cbb146103ac578063b4b5ea57146103cc5761014b565b8063313ce56711610108578063313ce5671461025957806342966c681461027b578063587cde1e1461029b5780635c19a95c146102c85780636fcfff45146102e857806370a08231146103155761014b565b806306fdde0314610188578063095ea7b3146101b357806316114acd146101e057806318160ddd1461020257806320606b701461022457806323b872dd14610239575b600080546040516001600160a01b03909116913480156108fc02929091818181858888f19350505050158015610185573d6000803e3d6000fd5b50005b34801561019457600080fd5b5061019d6104af565b6040516101aa91906118ed565b60405180910390f35b3480156101bf57600080fd5b506101d36101ce36600461171b565b6104da565b6040516101aa9190611873565b3480156101ec57600080fd5b506102006101fb366004611687565b610599565b005b34801561020e57600080fd5b50610217610642565b6040516101aa919061187e565b34801561023057600080fd5b50610217610648565b34801561024557600080fd5b506101d36102543660046116db565b61066c565b34801561026557600080fd5b5061026e6107b3565b6040516101aa9190611b43565b34801561028757600080fd5b506102006102963660046117fb565b6107b8565b3480156102a757600080fd5b506102bb6102b6366004611687565b6107e8565b6040516101aa9190611846565b3480156102d457600080fd5b506102006102e3366004611687565b610803565b3480156102f457600080fd5b50610308610303366004611687565b610810565b6040516101aa9190611b13565b34801561032157600080fd5b50610217610330366004611687565b610828565b34801561034157600080fd5b5061035561035036600461171b565b61084c565b6040516101aa9190611b51565b34801561036e57600080fd5b5061021761037d366004611687565b610a63565b34801561038e57600080fd5b506102bb610a75565b3480156103a357600080fd5b5061019d610a84565b3480156103b857600080fd5b506101d36103c736600461171b565b610aa5565b3480156103d857600080fd5b506103556103e7366004611687565b610ae1565b3480156103f857600080fd5b50610200610407366004611746565b610b52565b34801561041857600080fd5b50610217610427366004611687565b610d5f565b34801561043857600080fd5b506102176104473660046116a3565b610dde565b34801561045857600080fd5b50610217610e12565b34801561046d57600080fd5b5061048161047c3660046117a6565b610e36565b6040516101aa929190611b24565b34801561049b57600080fd5b506102006104aa366004611687565b610e6b565b6040518060400160405280600f81526020016e29b6b0b93a2837b7b6102a37b5b2b760891b81525081565b6000806000198314156104f05750600019610515565b61051283604051806060016040528060268152602001611c5e60269139610ef0565b90505b3360008181526002602090815260408083206001600160a01b03891680855292529182902080546001600160601b0319166001600160601b03861617905590519091907f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92590610585908590611b51565b60405180910390a360019150505b92915050565b6000546001600160a01b031633146105b057600080fd5b6000546001600160a01b038083169163a9059cbb91166105cf84610d5f565b6040518363ffffffff1660e01b81526004016105ec92919061185a565b602060405180830381600087803b15801561060657600080fd5b505af115801561061a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061063e91906117db565b5050565b60015481565b7f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a86681565b6001600160a01b03831660009081526002602090815260408083203380855290835281842054825160608101909352602680845291936001600160601b039091169285926106c49288929190611c5e90830139610ef0565b9050866001600160a01b0316836001600160a01b0316141580156106f157506001600160601b0382811614155b1561079b57600061071b83836040518060600160405280603e8152602001611bcc603e9139610f1f565b6001600160a01b038981166000818152600260209081526040808320948a16808452949091529081902080546001600160601b0319166001600160601b0386161790555192935090917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92590610791908590611b51565b60405180910390a3505b6107a6878783610f5e565b5060019695505050505050565b601281565b60006107dc82604051806060016040528060238152602001611c0a60239139610ef0565b905061063e3382611109565b6004602052600090815260409020546001600160a01b031681565b61080d338261123c565b50565b60066020526000908152604090205463ffffffff1681565b6001600160a01b03166000908152600360205260409020546001600160601b031690565b60004382106108765760405162461bcd60e51b815260040161086d90611940565b60405180910390fd5b6001600160a01b03831660009081526006602052604090205463ffffffff16806108a4576000915050610593565b6001600160a01b038416600090815260056020908152604080832063ffffffff600019860181168552925290912054168310610920576001600160a01b03841660009081526005602090815260408083206000199490940163ffffffff1683529290522054600160201b90046001600160601b03169050610593565b6001600160a01b038416600090815260056020908152604080832083805290915290205463ffffffff1683101561095b576000915050610593565b600060001982015b8163ffffffff168163ffffffff161115610a1e57600282820363ffffffff1604810361098d611670565b506001600160a01b038716600090815260056020908152604080832063ffffffff858116855290835292819020815180830190925254928316808252600160201b9093046001600160601b031691810191909152908714156109f9576020015194506105939350505050565b805163ffffffff16871115610a1057819350610a17565b6001820392505b5050610963565b506001600160a01b038516600090815260056020908152604080832063ffffffff909416835292905220546001600160601b03600160201b9091041691505092915050565b60076020526000908152604090205481565b6000546001600160a01b031681565b6040518060400160405280600581526020016414d413d3d360da1b81525081565b600080610aca83604051806060016040528060278152602001611d0a60279139610ef0565b9050610ad7338583610f5e565b5060019392505050565b6001600160a01b03811660009081526006602052604081205463ffffffff1680610b0c576000610b4b565b6001600160a01b0383166000908152600560209081526040808320600019850163ffffffff168452909152902054600160201b90046001600160601b03165b9392505050565b60408051808201909152600f81526e29b6b0b93a2837b7b6102a37b5b2b760891b60209091015260007f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a8667fb49520d7405d4575afa197a9c24a9e110f968ab3b1ea329bf338fb12977c30d3610bc56112c6565b30604051602001610bd994939291906118ab565b60405160208183030381529060405280519060200120905060007fe48329057bfd03d55e49b547132e39cffd9c1820ad7b9d4c5307691425d15adf888888604051602001610c2a9493929190611887565b60405160208183030381529060405280519060200120905060008282604051602001610c5792919061182b565b604051602081830303815290604052805190602001209050600060018288888860405160008152602001604052604051610c9494939291906118cf565b6020604051602081039080840390855afa158015610cb6573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b038116610ce95760405162461bcd60e51b815260040161086d90611a42565b6001600160a01b03811660009081526007602052604090208054600181019091558914610d285760405162461bcd60e51b815260040161086d90611a89565b87421115610d485760405162461bcd60e51b815260040161086d90611acc565b610d52818b61123c565b505050505b505050505050565b6040516370a0823160e01b81526000906001600160a01b038316906370a0823190610d8e903090600401611846565b60206040518083038186803b158015610da657600080fd5b505afa158015610dba573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105939190611813565b6001600160a01b0391821660009081526002602090815260408083209390941682529190915220546001600160601b031690565b7fe48329057bfd03d55e49b547132e39cffd9c1820ad7b9d4c5307691425d15adf81565b600560209081526000928352604080842090915290825290205463ffffffff811690600160201b90046001600160601b031682565b6000546001600160a01b03163314610e8257600080fd5b6001600160a01b038116610e9557600080fd5b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b600081600160601b8410610f175760405162461bcd60e51b815260040161086d91906118ed565b509192915050565b6000836001600160601b0316836001600160601b031611158290610f565760405162461bcd60e51b815260040161086d91906118ed565b505050900390565b6001600160a01b038316610f845760405162461bcd60e51b815260040161086d90611988565b6001600160a01b038216610faa5760405162461bcd60e51b815260040161086d906119e5565b6001600160a01b038316600090815260036020908152604091829020548251606081019093526037808452610ff5936001600160601b039092169285929190611b9590830139610f1f565b6001600160a01b03848116600090815260036020908152604080832080546001600160601b0319166001600160601b0396871617905592861682529082902054825160608101909352603180845261105d9491909116928592909190611c2d908301396112ca565b6001600160a01b038381166000818152600360205260409081902080546001600160601b0319166001600160601b0395909516949094179093559151908516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906110ca908590611b51565b60405180910390a36001600160a01b0380841660009081526004602052604080822054858416835291205461110492918216911683611306565b505050565b600061112f6001546040518060600160405280602f8152602001611d31602f9139610ef0565b90506111548183604051806060016040528060288152602001611d8460289139610f1f565b6001600160601b039081166001556001600160a01b0384166000908152600360209081526040918290205482516060810190935260248084526111a79491909116928692909190611d6090830139610f1f565b6001600160a01b03841660008181526003602052604080822080546001600160601b0319166001600160601b03959095169490941790935591517fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9061120e908690611b51565b60405180910390a36001600160a01b0380841660009081526004602052604081205461110492169084611306565b6001600160a01b03808316600081815260046020818152604080842080546003845282862054949093528787166001600160a01b031984168117909155905191909516946001600160601b039092169391928592917f3134e8a2e6d97e929a7e54011ea5485d7d196dd5f0ba4d4ef95803e8e3fc257f9190a46112c0828483611306565b50505050565b4690565b6000838301826001600160601b0380871690831610156112fd5760405162461bcd60e51b815260040161086d91906118ed565b50949350505050565b816001600160a01b0316836001600160a01b03161415801561133157506000816001600160601b0316115b15611104576001600160a01b038316156113e9576001600160a01b03831660009081526006602052604081205463ffffffff1690816113715760006113b0565b6001600160a01b0385166000908152600560209081526040808320600019860163ffffffff168452909152902054600160201b90046001600160601b03165b905060006113d78285604051806060016040528060298152602001611cb960299139610f1f565b90506113e586848484611494565b5050505b6001600160a01b03821615611104576001600160a01b03821660009081526006602052604081205463ffffffff169081611424576000611463565b6001600160a01b0384166000908152600560209081526040808320600019860163ffffffff168452909152902054600160201b90046001600160601b03165b9050600061148a8285604051806060016040528060288152602001611ce2602891396112ca565b9050610d57858484845b60006114b843604051806060016040528060358152602001611c8460359139611649565b905060008463ffffffff1611801561150157506001600160a01b038516600090815260056020908152604080832063ffffffff6000198901811685529252909120548282169116145b15611560576001600160a01b0385166000908152600560209081526040808320600019880163ffffffff168452909152902080546fffffffffffffffffffffffff000000001916600160201b6001600160601b038516021790556115ff565b60408051808201825263ffffffff80841682526001600160601b0380861660208085019182526001600160a01b038b166000818152600583528781208c871682528352878120965187549451909516600160201b026fffffffffffffffffffffffff000000001995871663ffffffff19958616179590951694909417909555938252600690935292909220805460018801909316929091169190911790555b846001600160a01b03167fdec2bacdd2f05b59de34da9b523dff8be42e5e38e818c82fdb0bae774387a724848460405161163a929190611b65565b60405180910390a25050505050565b600081600160201b8410610f175760405162461bcd60e51b815260040161086d91906118ed565b604080518082019091526000808252602082015290565b600060208284031215611698578081fd5b8135610b4b81611b7f565b600080604083850312156116b5578081fd5b82356116c081611b7f565b915060208301356116d081611b7f565b809150509250929050565b6000806000606084860312156116ef578081fd5b83356116fa81611b7f565b9250602084013561170a81611b7f565b929592945050506040919091013590565b6000806040838503121561172d578182fd5b823561173881611b7f565b946020939093013593505050565b60008060008060008060c0878903121561175e578182fd5b863561176981611b7f565b95506020870135945060408701359350606087013560ff8116811461178c578283fd5b9598949750929560808101359460a0909101359350915050565b600080604083850312156117b8578182fd5b82356117c381611b7f565b9150602083013563ffffffff811681146116d0578182fd5b6000602082840312156117ec578081fd5b81518015158114610b4b578182fd5b60006020828403121561180c578081fd5b5035919050565b600060208284031215611824578081fd5b5051919050565b61190160f01b81526002810192909252602282015260420190565b6001600160a01b0391909116815260200190565b6001600160a01b03929092168252602082015260400190565b901515815260200190565b90815260200190565b9384526001600160a01b039290921660208401526040830152606082015260800190565b938452602084019290925260408301526001600160a01b0316606082015260800190565b93845260ff9290921660208401526040830152606082015260800190565b6000602080835283518082850152825b81811015611919578581018301518582016040015282016118fd565b8181111561192a5783604083870101525b50601f01601f1916929092016040019392505050565b60208082526028908201527f546f6b656e3a3a6765745072696f72566f7465733a206e6f74207965742064656040820152671d195c9b5a5b995960c21b606082015260800190565b6020808252603d908201527f546f6b656e3a3a5f7472616e73666572546f6b656e733a2063616e6e6f74207460408201527f72616e736665722066726f6d20746865207a65726f2061646472657373000000606082015260800190565b6020808252603b908201527f546f6b656e3a3a5f7472616e73666572546f6b656e733a2063616e6e6f74207460408201527f72616e7366657220746f20746865207a65726f20616464726573730000000000606082015260800190565b60208082526027908201527f546f6b656e3a3a64656c656761746542795369673a20696e76616c6964207369604082015266676e617475726560c81b606082015260800190565b60208082526023908201527f546f6b656e3a3a64656c656761746542795369673a20696e76616c6964206e6f6040820152626e636560e81b606082015260800190565b60208082526027908201527f546f6b656e3a3a64656c656761746542795369673a207369676e617475726520604082015266195e1c1a5c995960ca1b606082015260800190565b63ffffffff91909116815260200190565b63ffffffff9290921682526001600160601b0316602082015260400190565b60ff91909116815260200190565b6001600160601b0391909116815260200190565b6001600160601b0392831681529116602082015260400190565b6001600160a01b038116811461080d57600080fdfe546f6b656e3a3a5f7472616e73666572546f6b656e733a207472616e7366657220616d6f756e7420657863656564732062616c616e6365546f6b656e3a3a7472616e7366657246726f6d3a207472616e7366657220616d6f756e742065786365656473207370656e64657220616c6c6f77616e6365546f6b656e3a3a6275726e3a20616d6f756e7420657863656564732039362062697473546f6b656e3a3a5f7472616e73666572546f6b656e733a207472616e7366657220616d6f756e74206f766572666c6f7773546f6b656e3a3a617070726f76653a20616d6f756e7420657863656564732039362062697473546f6b656e3a3a5f7772697465436865636b706f696e743a20626c6f636b206e756d62657220657863656564732033322062697473546f6b656e3a3a5f6d6f7665566f7465733a20766f746520616d6f756e7420756e646572666c6f7773546f6b656e3a3a5f6d6f7665566f7465733a20766f746520616d6f756e74206f766572666c6f7773546f6b656e3a3a7472616e736665723a20616d6f756e7420657863656564732039362062697473546f6b656e3a3a5f6275726e546f6b656e733a20746f74616c537570706c7920657863656564732039362062697473546f6b656e3a3a5f6275726e546f6b656e733a20616d6f756e74206f766572666c6f7773546f6b656e3a3a5f6275726e546f6b656e733a746f74616c537570706c7920756e646572666c6f77a264697066735822122020bc886244c550a98d2609a0d794454ba891337a9bcafacb851339f27d1cf71464736f6c634300060c00330000000000000000000000000f4c9301ec4e9e2536a610967ab7c7cefd19c2b3

Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)

0000000000000000000000000f4c9301ec4e9e2536a610967ab7c7cefd19c2b3

-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 0000000000000000000000000f4c9301ec4e9e2536a610967ab7c7cefd19c2b3


Deployed ByteCode Sourcemap

3871:14300:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13606:5;;;13598:34;;-1:-1:-1;;;;;13606:5:0;;;;13622:9;13598:34;;;;;13622:9;;13598:34;13606:5;13598:34;13622:9;13606:5;13598:34;;;;;;;;;;;;;;;;;;;;;3871:14300;3967:47;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7490:420;;;;;;;;;;-1:-1:-1;7490:420:0;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;3385:125::-;;;;;;;;;;-1:-1:-1;3385:125:0;;;;;:::i;:::-;;:::i;:::-;;4276:38;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;5179:122::-;;;;;;;;;;;;;:::i;9323:674::-;;;;;;;;;;-1:-1:-1;9323:674:0;;;;;:::i;:::-;;:::i;4177:35::-;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;8338:172::-;;;;;;;;;;-1:-1:-1;8338:172:0;;;;;:::i;:::-;;:::i;4629:45::-;;;;;;;;;;-1:-1:-1;4629:45:0;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;10145:102::-;;;;;;;;;;-1:-1:-1;10145:102:0;;;;;:::i;:::-;;:::i;5057:49::-;;;;;;;;;;-1:-1:-1;5057:49:0;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;8113:108::-;;;;;;;;;;-1:-1:-1;8113:108:0;;;;;:::i;:::-;;:::i;12327:1219::-;;;;;;;;;;-1:-1:-1;12327:1219:0;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;5593:39::-;;;;;;;;;;-1:-1:-1;5593:39:0;;;;;:::i;:::-;;:::i;1766:20::-;;;;;;;;;;;;;:::i;4075:39::-;;;;;;;;;;;;;:::i;8774:239::-;;;;;;;;;;-1:-1:-1;8774:239:0;;;;;:::i;:::-;;:::i;11674:222::-;;;;;;;;;;-1:-1:-1;11674:222:0;;;;;:::i;:::-;;:::i;10681:792::-;;;;;;;;;;-1:-1:-1;10681:792:0;;;;;:::i;:::-;;:::i;3738:124::-;;;;;;;;;;-1:-1:-1;3738:124:0;;;;;:::i;:::-;;:::i;6876:136::-;;;;;;;;;;-1:-1:-1;6876:136:0;;;;;:::i;:::-;;:::i;5395:117::-;;;;;;;;;;;;;:::i;4918:70::-;;;;;;;;;;-1:-1:-1;4918:70:0;;;;;:::i;:::-;;:::i;:::-;;;;;;;;:::i;2427:192::-;;;;;;;;;;-1:-1:-1;2427:192:0;;;;;:::i;:::-;;:::i;3967:47::-;;;;;;;;;;;;;;-1:-1:-1;;;3967:47:0;;;;:::o;7490:420::-;7558:4;7575:13;-1:-1:-1;;7603:9:0;:21;7599:174;;;-1:-1:-1;;;7599:174:0;;;7702:59;7709:9;7702:59;;;;;;;;;;;;;;;;;:6;:59::i;:::-;7693:68;;7599:174;7796:10;7785:22;;;;:10;:22;;;;;;;;-1:-1:-1;;;;;7785:31:0;;;;;;;;;;;:40;;-1:-1:-1;;;;;;7785:40:0;-1:-1:-1;;;;;7785:40:0;;;;;7843:37;;7785:31;;7796:10;7843:37;;;;7785:40;;7843:37;:::i;:::-;;;;;;;;7898:4;7891:11;;;7490:420;;;;;:::o;3385:125::-;2224:5;;-1:-1:-1;;;;;2224:5:0;2210:10;:19;2202:28;;;;;;3469:5:::1;::::0;-1:-1:-1;;;;;3454:14:0;;::::1;::::0;::::1;::::0;3469:5:::1;3476:25;3454:5:::0;3476:18:::1;:25::i;:::-;3454:48;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;3385:125:::0;:::o;4276:38::-;;;;:::o;5179:122::-;5221:80;5179:122;:::o;9323:674::-;-1:-1:-1;;;;;9487:15:0;;9405:4;9487:15;;;:10;:15;;;;;;;;9440:10;9487:24;;;;;;;;;;9538:59;;;;;;;;;;;;9440:10;;-1:-1:-1;;;;;9487:24:0;;;;9405:4;;9538:59;;9545:9;;9538:59;;;;;;;:6;:59::i;:::-;9522:75;;9625:3;-1:-1:-1;;;;;9614:14:0;:7;-1:-1:-1;;;;;9614:14:0;;;:48;;;;-1:-1:-1;;;;;;9632:30:0;;;;;9614:48;9610:312;;;9679:19;9701:97;9707:16;9725:6;9701:97;;;;;;;;;;;;;;;;;:5;:97::i;:::-;-1:-1:-1;;;;;9813:15:0;;;;;;;:10;:15;;;;;;;;:24;;;;;;;;;;;;;;:39;;-1:-1:-1;;;;;;9813:39:0;-1:-1:-1;;;;;9813:39:0;;;;;9874:36;9813:39;;-1:-1:-1;9813:24:0;;9874:36;;;;9813:39;;9874:36;:::i;:::-;;;;;;;;9610:312;;9934:33;9950:3;9955;9960:6;9934:15;:33::i;:::-;-1:-1:-1;9985:4:0;;9323:674;-1:-1:-1;;;;;;9323:674:0:o;4177:35::-;4210:2;4177:35;:::o;8338:172::-;8388:13;8404:56;8411:9;8404:56;;;;;;;;;;;;;;;;;:6;:56::i;:::-;8388:72;;8471:31;8483:10;8495:6;8471:11;:31::i;4629:45::-;;;;;;;;;;;;-1:-1:-1;;;;;4629:45:0;;:::o;10145:102::-;10207:32;10217:10;10229:9;10207;:32::i;:::-;10145:102;:::o;5057:49::-;;;;;;;;;;;;;;;:::o;8113:108::-;-1:-1:-1;;;;;8196:17:0;8172:4;8196:17;;;:8;:17;;;;;;-1:-1:-1;;;;;8196:17:0;;8113:108::o;12327:1219::-;12406:6;12447:12;12433:11;:26;12425:79;;;;-1:-1:-1;;;12425:79:0;;;;;;;:::i;:::-;;;;;;;;;-1:-1:-1;;;;;12539:23:0;;12517:19;12539:23;;;:14;:23;;;;;;;;12577:17;12573:58;;12618:1;12611:8;;;;;12573:58;-1:-1:-1;;;;;12691:20:0;;;;;;:11;:20;;;;;;;;:38;-1:-1:-1;;12712:16:0;;12691:38;;;;;;;;;:48;;:63;-1:-1:-1;12687:147:0;;-1:-1:-1;;;;;12778:20:0;;;;;;:11;:20;;;;;;;;-1:-1:-1;;12799:16:0;;;;12778:38;;;;;;;;:44;-1:-1:-1;;;12778:44:0;;-1:-1:-1;;;;;12778:44:0;;-1:-1:-1;12771:51:0;;12687:147;-1:-1:-1;;;;;12895:20:0;;;;;;:11;:20;;;;;;;;:23;;;;;;;;:33;:23;:33;:47;-1:-1:-1;12891:88:0;;;12966:1;12959:8;;;;;12891:88;12991:12;-1:-1:-1;;13033:16:0;;13060:428;13075:5;13067:13;;:5;:13;;;13060:428;;;13139:1;13122:13;;;13121:19;;;13113:27;;13182:20;;:::i;:::-;-1:-1:-1;;;;;;13205:20:0;;;;;;:11;:20;;;;;;;;:28;;;;;;;;;;;;;13182:51;;;;;;;;;;;;;;;-1:-1:-1;;;13182:51:0;;;-1:-1:-1;;;;;13182:51:0;;;;;;;;;13252:27;;13248:229;;;13307:8;;;;-1:-1:-1;13300:15:0;;-1:-1:-1;;;;13300:15:0;13248:229;13341:12;;:26;;;-1:-1:-1;13337:140:0;;;13396:6;13388:14;;13337:140;;;13460:1;13451:6;:10;13443:18;;13337:140;13060:428;;;;;-1:-1:-1;;;;;;13505:20:0;;;;;;:11;:20;;;;;;;;:27;;;;;;;;;;:33;-1:-1:-1;;;;;;;;13505:33:0;;;;;-1:-1:-1;;12327:1219:0;;;;:::o;5593:39::-;;;;;;;;;;;;;:::o;1766:20::-;;;-1:-1:-1;;;;;1766:20:0;;:::o;4075:39::-;;;;;;;;;;;;;;-1:-1:-1;;;4075:39:0;;;;:::o;8774:239::-;8839:4;8856:13;8872:60;8879:9;8872:60;;;;;;;;;;;;;;;;;:6;:60::i;:::-;8856:76;;8943:40;8959:10;8971:3;8976:6;8943:15;:40::i;:::-;-1:-1:-1;9001:4:0;;8774:239;-1:-1:-1;;;8774:239:0:o;11674:222::-;-1:-1:-1;;;;;11780:23:0;;11739:6;11780:23;;;:14;:23;;;;;;;;11821:16;:67;;11887:1;11821:67;;;-1:-1:-1;;;;;11840:20:0;;;;;;:11;:20;;;;;;;;-1:-1:-1;;11861:16:0;;11840:38;;;;;;;;;:44;-1:-1:-1;;;11840:44:0;;-1:-1:-1;;;;;11840:44:0;11821:67;11814:74;11674:222;-1:-1:-1;;;11674:222:0:o;10681:792::-;10877:4;;;;;;;;;;;;-1:-1:-1;;;10877:4:0;;;;;10797:23;5221:80;10861:22;10885:12;:10;:12::i;:::-;10907:4;10833:80;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;10823:91;;;;;;10797:117;;10925:18;5441:71;10988:9;10999:5;11006:6;10956:57;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;10946:68;;;;;;10925:89;;11025:14;11081:15;11098:10;11052:57;;;;;;;;;:::i;:::-;;;;;;;;;;;;;11042:68;;;;;;11025:85;;11121:17;11141:26;11151:6;11159:1;11162;11165;11141:26;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;11141:26:0;;-1:-1:-1;;11141:26:0;;;-1:-1:-1;;;;;;;11186:23:0;;11178:75;;;;-1:-1:-1;;;11178:75:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;11281:17:0;;;;;;:6;:17;;;;;:19;;;;;;;;11272:28;;11264:76;;;;-1:-1:-1;;;11264:76:0;;;;;;;:::i;:::-;11366:6;11359:3;:13;;11351:65;;;;-1:-1:-1;;;11351:65:0;;;;;;;:::i;:::-;11434:31;11444:9;11455;11434;:31::i;:::-;11427:38;;;;10681:792;;;;;;;:::o;3738:124::-;3824:30;;-1:-1:-1;;;3824:30:0;;3800:4;;-1:-1:-1;;;;;3824:15:0;;;;;:30;;3848:4;;3824:30;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;6876:136::-;-1:-1:-1;;;;;6976:19:0;;;6952:4;6976:19;;;:10;:19;;;;;;;;:28;;;;;;;;;;;;-1:-1:-1;;;;;6976:28:0;;6876:136::o;5395:117::-;5441:71;5395:117;:::o;4918:70::-;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;4918:70:0;;-1:-1:-1;;;;;4918:70:0;;:::o;2427:192::-;2224:5;;-1:-1:-1;;;;;2224:5:0;2210:10;:19;2202:28;;;;;;-1:-1:-1;;;;;2508:22:0;::::1;2500:31;;;::::0;::::1;;2568:5;::::0;;2547:37:::1;::::0;-1:-1:-1;;;;;2547:37:0;;::::1;::::0;2568:5;::::1;::::0;2547:37:::1;::::0;::::1;2595:5;:16:::0;;-1:-1:-1;;;;;;2595:16:0::1;-1:-1:-1::0;;;;;2595:16:0;;;::::1;::::0;;;::::1;::::0;;2427:192::o;17477:161::-;17552:6;17590:12;-1:-1:-1;;;17579:9:0;;17571:32;;;;-1:-1:-1;;;17571:32:0;;;;;;;;:::i;:::-;-1:-1:-1;17628:1:0;;17477:161;-1:-1:-1;;17477:161:0:o;17842:165::-;17928:6;17960:1;-1:-1:-1;;;;;17955:6:0;:1;-1:-1:-1;;;;;17955:6:0;;;17963:12;17947:29;;;;;-1:-1:-1;;;17947:29:0;;;;;;;;:::i;:::-;-1:-1:-1;;;17994:5:0;;;17842:165::o;14031:618::-;-1:-1:-1;;;;;14125:17:0;;14117:91;;;;-1:-1:-1;;;14117:91:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;14227:17:0;;14219:89;;;;-1:-1:-1;;;14219:89:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;14343:13:0;;;;;;:8;:13;;;;;;;;;;14337:87;;;;;;;;;;;;;;-1:-1:-1;;;;;14343:13:0;;;;14358:6;;14337:87;;;;;;;:5;:87::i;:::-;-1:-1:-1;;;;;14321:13:0;;;;;;;:8;:13;;;;;;;;:103;;-1:-1:-1;;;;;;14321:103:0;-1:-1:-1;;;;;14321:103:0;;;;;;14457:13;;;;;;;;;;14451:81;;;;;;;;;;;;;;14457:13;;;;;14472:6;;14451:81;;;;;;;;:5;:81::i;:::-;-1:-1:-1;;;;;14435:13:0;;;;;;;:8;:13;;;;;;;:97;;-1:-1:-1;;;;;;14435:97:0;-1:-1:-1;;;;;14435:97:0;;;;;;;;;;;14548:26;;;;;;;;;;14567:6;;14548:26;:::i;:::-;;;;;;;;-1:-1:-1;;;;;14602:14:0;;;;;;;:9;:14;;;;;;;14618;;;;;;;;14587:54;;14602:14;;;;14618;14634:6;14587:14;:54::i;:::-;14031:618;;;:::o;15237:460::-;15306:13;15322:70;15329:11;;15322:70;;;;;;;;;;;;;;;;;:6;:70::i;:::-;15306:86;;15417:65;15423:6;15431;15417:65;;;;;;;;;;;;;;;;;:5;:65::i;:::-;-1:-1:-1;;;;;15403:79:0;;;:11;:79;-1:-1:-1;;;;;15515:13:0;;;;;;:8;:13;;;;;;;;;;15509:68;;;;;;;;;;;;;;15515:13;;;;;15530:6;;15509:68;;;;;;;;:5;:68::i;:::-;-1:-1:-1;;;;;15493:13:0;;;;;;:8;:13;;;;;;:84;;-1:-1:-1;;;;;;15493:84:0;-1:-1:-1;;;;;15493:84:0;;;;;;;;;;;15593:33;;;;;;15619:6;;15593:33;:::i;:::-;;;;;;;;-1:-1:-1;;;;;15654:14:0;;;;;;;:9;:14;;;;;;15639:50;;15654:14;;15682:6;15639:14;:50::i;13648:375::-;-1:-1:-1;;;;;13751:20:0;;;13725:23;13751:20;;;:9;:20;;;;;;;;;;13808:8;:19;;;;;;13838:20;;;;:32;;;-1:-1:-1;;;;;;13838:32:0;;;;;;;13888:54;;13751:20;;;;;-1:-1:-1;;;;;13808:19:0;;;;13838:32;;13751:20;;;13888:54;;13725:23;13888:54;13955:60;13970:15;13987:9;13998:16;13955:14;:60::i;:::-;13648:375;;;;:::o;18015:153::-;18125:9;18015:153;:::o;17646:188::-;17732:6;17762:5;;;17794:12;-1:-1:-1;;;;;17786:6:0;;;;;;;;17778:29;;;;-1:-1:-1;;;17778:29:0;;;;;;;;:::i;:::-;-1:-1:-1;17825:1:0;17646:188;-1:-1:-1;;;;17646:188:0:o;15705:941::-;15810:6;-1:-1:-1;;;;;15800:16:0;:6;-1:-1:-1;;;;;15800:16:0;;;:30;;;;;15829:1;15820:6;-1:-1:-1;;;;;15820:10:0;;15800:30;15796:843;;;-1:-1:-1;;;;;15851:20:0;;;15847:383;;-1:-1:-1;;;;;15911:22:0;;15892:16;15911:22;;;:14;:22;;;;;;;;;15971:13;:60;;16030:1;15971:60;;;-1:-1:-1;;;;;15987:19:0;;;;;;:11;:19;;;;;;;;-1:-1:-1;;16007:13:0;;15987:34;;;;;;;;;:40;-1:-1:-1;;;15987:40:0;;-1:-1:-1;;;;;15987:40:0;15971:60;15952:79;;16050:16;16069:69;16075:9;16086:6;16069:69;;;;;;;;;;;;;;;;;:5;:69::i;:::-;16050:88;;16157:57;16174:6;16182:9;16193;16204;16157:16;:57::i;:::-;15847:383;;;;-1:-1:-1;;;;;16250:20:0;;;16246:382;;-1:-1:-1;;;;;16310:22:0;;16291:16;16310:22;;;:14;:22;;;;;;;;;16370:13;:60;;16429:1;16370:60;;;-1:-1:-1;;;;;16386:19:0;;;;;;:11;:19;;;;;;;;-1:-1:-1;;16406:13:0;;16386:34;;;;;;;;;:40;-1:-1:-1;;;16386:40:0;;-1:-1:-1;;;;;16386:40:0;16370:60;16351:79;;16449:16;16468:68;16474:9;16485:6;16468:68;;;;;;;;;;;;;;;;;:5;:68::i;:::-;16449:87;;16555:57;16572:6;16580:9;16591;16602;16654:646;16774:18;16795:77;16802:12;16795:77;;;;;;;;;;;;;;;;;:6;:77::i;:::-;16774:98;;16904:1;16889:12;:16;;;:85;;;;-1:-1:-1;;;;;;16909:22:0;;;;;;:11;:22;;;;;;;;:65;-1:-1:-1;;16932:16:0;;16909:40;;;;;;;;;:50;:65;;;:50;;:65;16889:85;16885:339;;;-1:-1:-1;;;;;16991:22:0;;;;;;:11;:22;;;;;;;;-1:-1:-1;;17014:16:0;;16991:40;;;;;;;;;:57;;-1:-1:-1;;16991:57:0;-1:-1:-1;;;;;;;;16991:57:0;;;;;;16885:339;;;17120:33;;;;;;;;;;;;;;-1:-1:-1;;;;;17120:33:0;;;;;;;;;;-1:-1:-1;;;;;17081:22:0;;-1:-1:-1;17081:22:0;;;:11;:22;;;;;:36;;;;;;;;;;:72;;;;;;;;;-1:-1:-1;;;17081:72:0;-1:-1:-1;;17081:72:0;;;-1:-1:-1;;17081:72:0;;;;;;;;;;;;;;;17168:25;;;:14;:25;;;;;;;:44;;17081:72;17196:16;;17168:44;;;;;;;;;;;;;16885:339;17262:9;-1:-1:-1;;;;;17241:51:0;;17273:8;17283;17241:51;;;;;;;:::i;:::-;;;;;;;;16654:646;;;;;:::o;17308:161::-;17383:6;17421:12;-1:-1:-1;;;17410:9:0;;17402:32;;;;-1:-1:-1;;;17402:32:0;;;;;;;;:::i;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;:::o;1131:241::-;;1235:2;1223:9;1214:7;1210:23;1206:32;1203:2;;;-1:-1;;1241:12;1203:2;85:6;72:20;97:33;124:5;97:33;:::i;1379:366::-;;;1500:2;1488:9;1479:7;1475:23;1471:32;1468:2;;;-1:-1;;1506:12;1468:2;85:6;72:20;97:33;124:5;97:33;:::i;:::-;1558:63;-1:-1;1658:2;1697:22;;72:20;97:33;72:20;97:33;:::i;:::-;1666:63;;;;1462:283;;;;;:::o;1752:491::-;;;;1890:2;1878:9;1869:7;1865:23;1861:32;1858:2;;;-1:-1;;1896:12;1858:2;85:6;72:20;97:33;124:5;97:33;:::i;:::-;1948:63;-1:-1;2048:2;2087:22;;72:20;97:33;72:20;97:33;:::i;:::-;1852:391;;2056:63;;-1:-1;;;2156:2;2195:22;;;;652:20;;1852:391::o;2250:366::-;;;2371:2;2359:9;2350:7;2346:23;2342:32;2339:2;;;-1:-1;;2377:12;2339:2;85:6;72:20;97:33;124:5;97:33;:::i;:::-;2429:63;2529:2;2568:22;;;;652:20;;-1:-1;;;2333:283::o;2623:865::-;;;;;;;2810:3;2798:9;2789:7;2785:23;2781:33;2778:2;;;-1:-1;;2817:12;2778:2;85:6;72:20;97:33;124:5;97:33;:::i;:::-;2869:63;-1:-1;2969:2;3008:22;;652:20;;-1:-1;3077:2;3116:22;;652:20;;-1:-1;3185:2;3222:22;;1063:20;18655:4;18644:16;;20186:33;;20176:2;;-1:-1;;20223:12;20176:2;2772:716;;;;-1:-1;2772:716;;3291:3;3331:22;;344:20;;3400:3;3440:22;;;344:20;;-1:-1;2772:716;-1:-1;;2772:716::o;3495:364::-;;;3615:2;3603:9;3594:7;3590:23;3586:32;3583:2;;;-1:-1;;3621:12;3583:2;85:6;72:20;97:33;124:5;97:33;:::i;:::-;3673:63;-1:-1;3773:2;3811:22;;929:20;18561:10;18550:22;;20065:34;;20055:2;;-1:-1;;20103:12;3866:257;;3978:2;3966:9;3957:7;3953:23;3949:32;3946:2;;;-1:-1;;3984:12;3946:2;223:6;217:13;19564:5;18062:13;18055:21;19542:5;19539:32;19529:2;;-1:-1;;19575:12;4412:241;;4516:2;4504:9;4495:7;4491:23;4487:32;4484:2;;;-1:-1;;4522:12;4484:2;-1:-1;652:20;;4478:175;-1:-1;4478:175::o;4660:263::-;;4775:2;4763:9;4754:7;4750:23;4746:32;4743:2;;;-1:-1;;4781:12;4743:2;-1:-1;800:13;;4737:186;-1:-1;4737:186::o;9293:659::-;-1:-1;;;7412:87;;7397:1;7518:11;;5376:37;;;;9804:12;;;5376:37;9915:12;;;9538:414::o;9959:222::-;-1:-1;;;;;18344:54;;;;5017:45;;10086:2;10071:18;;10057:124::o;10188:333::-;-1:-1;;;;;18344:54;;;;5017:45;;10507:2;10492:18;;5376:37;10343:2;10328:18;;10314:207::o;10528:210::-;18062:13;;18055:21;5259:34;;10649:2;10634:18;;10620:118::o;10745:222::-;5376:37;;;10872:2;10857:18;;10843:124::o;10974:556::-;5376:37;;;-1:-1;;;;;18344:54;;;;11350:2;11335:18;;5017:45;11433:2;11418:18;;5376:37;11516:2;11501:18;;5376:37;11185:3;11170:19;;11156:374::o;11537:588::-;5376:37;;;11929:2;11914:18;;5376:37;;;;12012:2;11997:18;;5376:37;-1:-1;;;;;18344:54;12111:2;12096:18;;5017:45;11764:3;11749:19;;11735:390::o;12132:548::-;5376:37;;;18655:4;18644:16;;;;12500:2;12485:18;;8998:35;12583:2;12568:18;;5376:37;12666:2;12651:18;;5376:37;12339:3;12324:19;;12310:370::o;12687:310::-;;12834:2;;12855:17;12848:47;5729:5;17425:12;17582:6;12834:2;12823:9;12819:18;17570:19;-1:-1;18969:101;18983:6;18980:1;18977:13;18969:101;;;19050:11;;;;;19044:18;19031:11;;;17610:14;19031:11;19024:39;18998:10;;18969:101;;;19085:6;19082:1;19079:13;19076:2;;;-1:-1;17610:14;19141:6;12823:9;19132:16;;19125:27;19076:2;-1:-1;19338:7;19322:14;-1:-1;;19318:28;5887:39;;;;17610:14;5887:39;;12805:192;-1:-1;;;12805:192::o;13004:416::-;13204:2;13218:47;;;6163:2;13189:18;;;17570:19;6199:34;17610:14;;;6179:55;-1:-1;;;6254:12;;;6247:32;6298:12;;;13175:245::o;13427:416::-;13627:2;13641:47;;;6549:2;13612:18;;;17570:19;6585:34;17610:14;;;6565:55;6654:31;6640:12;;;6633:53;6705:12;;;13598:245::o;13850:416::-;14050:2;14064:47;;;6956:2;14035:18;;;17570:19;6992:34;17610:14;;;6972:55;7061:29;7047:12;;;7040:51;7110:12;;;14021:245::o;14273:416::-;14473:2;14487:47;;;7768:2;14458:18;;;17570:19;7804:34;17610:14;;;7784:55;-1:-1;;;7859:12;;;7852:31;7902:12;;;14444:245::o;14696:416::-;14896:2;14910:47;;;8153:2;14881:18;;;17570:19;8189:34;17610:14;;;8169:55;-1:-1;;;8244:12;;;8237:27;8283:12;;;14867:245::o;15119:416::-;15319:2;15333:47;;;8534:2;15304:18;;;17570:19;8570:34;17610:14;;;8550:55;-1:-1;;;8625:12;;;8618:31;8668:12;;;15290:245::o;15771:218::-;18561:10;18550:22;;;;8883:36;;15896:2;15881:18;;15867:122::o;15996:325::-;18561:10;18550:22;;;;8883:36;;-1:-1;;;;;18733:38;16307:2;16292:18;;9245:36;16147:2;16132:18;;16118:203::o;16328:214::-;18655:4;18644:16;;;;8998:35;;16451:2;16436:18;;16422:120::o;16549:220::-;-1:-1;;;;;18733:38;;;;9115:49;;16675:2;16660:18;;16646:123::o;17001:329::-;-1:-1;;;;;18733:38;;;9115:49;;18733:38;;17316:2;17301:18;;9115:49;17154:2;17139:18;;17125:205::o;19359:117::-;-1:-1;;;;;18344:54;;19418:35;;19408:2;;19467:1;;19457:12

Swarm Source

ipfs://20bc886244c550a98d2609a0d794454ba891337a9bcafacb851339f27d1cf714
Block Transaction Gas Used Reward
Age Block Fee Address BC Fee Address Voting Power Jailed Incoming
Block Uncle Number Difficulty Gas Used Reward
Loading
Loading
Make sure to use the "Vote Down" button for any spammy posts, and the "Vote Up" for interesting conversations.