Contract Overview
Balance: 0 Ether
Ether Value: $0
Transactions: 5 txns
Token Tracker: Snowden (SNOW)
 Latest 5 txns

TxHash Age From To Value [TxFee]
0xdad02a6723a8f294d2cdd00e410e0a286e27dbafdc4d0ec8e0099b1196c38b2e19 mins ago0x3d61870d1f5f7d8615db60d1d2cc3ec25eac961f  IN   0x283554e720852212d00e1f999ef4af2516fd432a0 Ether0.00056439
0x83bbe1b01211f9cf095fe1464e3ef8aeaf737fa41eecfc63d6f3eaea59bff97d21 days 1 hr ago0x6aefe37666d410b3b43e849385099199f4ed381b  IN   0x283554e720852212d00e1f999ef4af2516fd432a0 Ether0.00043898
0x541ea6a82bb18643187e3cf046c1255dbf8174bb1f3e148e9c64051ffabbf1d621 days 1 hr ago0x6aefe37666d410b3b43e849385099199f4ed381b  IN   0x283554e720852212d00e1f999ef4af2516fd432a0 Ether0.0003
0x0cc97cfbbfca57fa0f18fd5a1c3c34ad36cdaeeb3c9225d012050d79b459caf521 days 1 hr ago0x5a4271534ce8d3f55dc77c0b0ce1f8c04ed84550  IN   0x283554e720852212d00e1f999ef4af2516fd432a0 Ether0.000811359
0xd0cf9cf07a7f2fe35f6b8051586bb3048a06fc778f4e0c7c9e927fce6ab6e52d23 days 1 hr ago0x58564bab0c1a1e668ed08f330585208b10db4946  IN    Contract Creation0 Ether0.0402736715
[ Download CSV Export  ] 
 Internal Transactions as a result of Contract Execution
View All
ParentTxHash Block Age From To Value
Contract Source Code Verified (Exact Match)
Contract Name: SnowdenToken
Compiler Text: v0.4.25+commit.59dbf8f1
Optimization Enabled: No
Runs (Optimiser):  200



  Contract Source Code   Find Similiar Contracts

pragma solidity 0.4.25;


/**
 * @title Safe maths
 * @author https://theethereum.wiki/w/index.php/ERC20_Token_Standard
 */
library SafeMath {
    function add(uint256 a, uint256 b) internal pure returns (uint256 c) {
        c = a + b;
        require(c >= a, "Bad maths.");
    }

    function sub(uint256 a, uint256 b) internal pure returns (uint256 c) {
        require(b <= a, "Bad maths.");
        c = a - b;
    }

    function mul(uint256 a, uint256 b) internal pure returns (uint256 c) {
        c = a * b;
        require(a == 0 || c / a == b, "Bad maths.");
    }

    function div(uint256 a, uint256 b) internal pure returns (uint256 c) {
        require(b > 0, "Bad maths.");
        c = a / b;
    }
}


/**
 * @title ERC Token Standard #20 Interface
 * @author https://github.com/ethereum/EIPs/blob/master/EIPS/eip-20-token-standard.md
 * @notice This is the basic interface for ERC20 that ensures all required functions exist.
 * @dev https://theethereum.wiki/w/index.php/ERC20_Token_Standard
 */
contract ERC20Interface {
    function totalSupply() public constant returns (uint256);
    function balanceOf(address tokenOwner) public constant returns (uint256 balance);
    function allowance(address tokenOwner, address spender) public constant returns (uint256 remaining);
    function transfer(address to, uint256 tokens) public returns (bool success);
    function approve(address spender, uint256 tokens) public returns (bool success);
    function transferFrom(address from, address to, uint256 tokens) public returns (bool success);

    event Transfer(address indexed from, address indexed to, uint256 tokens);
    event Approval(address indexed tokenOwner, address indexed spender, uint256 tokens);
}


/**
 * @title Contract function to receive approval and execute function in one call
 * @author https://theethereum.wiki/w/index.php/ERC20_Token_Standard
 * @dev Borrowed from MiniMeToken
 */
contract ApproveAndCallFallBack {
    function receiveApproval(address from, uint256 tokens, address token, bytes data) public;
}


/**
 * @title Owned Contract
 * @author https://theethereum.wiki/w/index.php/ERC20_Token_Standard
 * @notice Gives an inheriting contract the ability for certain functions to be
 *   called only by the owner of the system.
 */
contract Owned {
    address internal owner;
    address internal newOwner;

    event OwnershipTransferred(address indexed _from, address indexed _to);

    constructor() public {
        owner = msg.sender;
    }

    /**
     * @notice Modifier indicates that the function can only be called by owner
     */
    modifier onlyOwner {
        require(msg.sender == owner, "Only the owner may execute this function.");
        _;
    }

    /**
     * @notice Give the ownership to the address _newOwner. Change only takes
     *  place once the new owner accepts the ownership of this contract.
     * @param _newOwner The address of the new owner
     */
    function transferOwnership(address _newOwner) public onlyOwner {
        newOwner = _newOwner;
    }

    /**
     * @notice Delete owner information
     */
    function disown() public onlyOwner() {
        delete owner;
    }

    /**
     * @notice The new owner accepts responsibility of contract ownership
     *  by using this function.
     */
    function acceptOwnership() public {
        require(msg.sender == newOwner, "You have not been selected as the new owner.");
        emit OwnershipTransferred(owner, newOwner);
        owner = newOwner;
        newOwner = address(0);
    }
}





/**
 * @title Snowden Token
 * @author David Edwards <Telecontrol Unterhaltungselektronik AG>
 * @notice This contract provides UltraUpload a token with which to
 *   trade and receive dividends.
 * @dev Heavily derivative of the ERC20 Token Standard
    https://theethereum.wiki/w/index.php/ERC20_Token_Standard
 */
contract SnowdenToken is ERC20Interface, Owned {
    using SafeMath for uint256;

    string public symbol;
    string public  name;
    uint8 public decimals;
    uint256 internal accountCount = 0;
    uint256 internal _totalSupply = 0;
    bool internal readOnly = false;
    uint256 internal constant MAX_256 = 2**256 - 1;
    mapping(address => bool) public ignoreDividend;

    event DividendGivenEvent(uint64 dividendPercentage);

    mapping(address => uint256) public freezeUntil;

    mapping(address => address) internal addressLinkedList;
    mapping(address => uint256) public balances;
    mapping(address => mapping(address => uint256)) public allowed;

    /**
     * @notice The token constructor. Creates the total supply.
     * @param supply The total number of coins to mint
     * @param addresses The addresses that will receive initial tokens
     * @param tokens The number of tokens that each address will receive
     * @param freezeList The unixepoch timestamp from which addresses are allowed to trade
     * @param ignoreList Addresses passed into this array will never receive dividends. The ignore list will always include this token contract.
     *
     * For example, if addresses is [ "0x1", "0x2" ], then tokens will need to have [ 1000, 8000 ] and freezeList will need to have [ 0, 0 ]. Numbers may change, but the values need to exist.
     */
    constructor(uint256 supply, address[] addresses, uint256[] tokens, uint256[] freezeList, address[] ignoreList) public {
        symbol = "SNOW";
        name = "Snowden";
        decimals = 0;
        _totalSupply = supply; // * 10**uint(decimals);
        balances[address(0)] = _totalSupply;

        uint256 totalAddresses = addresses.length;
        uint256 totalTokens = tokens.length;

        // Must have positive number of addresses and tokens
        require(totalAddresses > 0 && totalTokens > 0, "Must be a positive number of addresses and tokens.");

        // Require same number of addresses as tokens
        require(totalAddresses == totalTokens, "Must be tokens assigned to all addresses.");

        uint256 aggregateTokens = 0;

        for (uint256 i = 0; i < totalAddresses; i++) {
            // Do not allow empty tokens – although this would have no impact on
            // the mappings (a 0 count on the mapping will not result in a new entry).
            // It is better to break here to ensure that there was no input error.
            require(tokens[i] > 0, "No empty tokens allowed.");

            aggregateTokens = aggregateTokens + tokens[i];

            // Supply should always be more than the number of tokens given out!
            require(aggregateTokens <= supply, "Supply is not enough for demand.");

            giveReserveTo(addresses[i], tokens[i]);
            freezeUntil[addresses[i]] = freezeList[i];
        }

        ignoreDividend[address(this)] = true;
        ignoreDividend[msg.sender] = true;
        for (i = 0; i < ignoreList.length; i++) {
            ignoreDividend[ignoreList[i]] = true;
        }
    }

    /**
     * @notice Fallback function reverts all paid ether. Do not accept payments.
     */
    function () public payable {
        revert();
    }

    /**
     * @notice Total supply, including in reserve
     * @return The number of tokens in circulation
     */
    function totalSupply() public constant returns (uint256) {
        return _totalSupply; // (we use the local address to store the rest) - balances[address(0)];
    }

    /**
     * @notice Return a list of addresses and their tokens
     * @return Two arrays, the first a list of addresses, the second a list of
     *   token amounts. Each index matches the other.
     */
    function list() public view returns (address[], uint256[]) {
        address[] memory addrs = new address[](accountCount);
        uint256[] memory tokens = new uint256[](accountCount);

        uint256 i = 0;
        address current = addressLinkedList[0];
        while (current != 0) {
            addrs[i] = current;
            tokens[i] = balances[current];

            current = addressLinkedList[current];
            i++;
        }

        return (addrs, tokens);
    }

    /**
     * @notice Return the number of tokens not provisioned
     * @return The total number of tokens left in the reserve pool
     */
    function remainingTokens() public view returns(uint256) {
        return balances[address(0)];
    }

    /**
     * @return Is the contract set to readonly
     */
    function isReadOnly() public view returns(bool) {
        return readOnly;
    }

    /**
     * @notice Get the token balance for account `tokenOwner`
     * @param tokenOwner Address of the account to get the number of tokens for
     * @return The number of tokens the address has
     */
    function balanceOf(address tokenOwner) public constant returns (uint256 balance) {
        return balances[tokenOwner];
    }

    /**
     * @notice Ensure that account is allowed to trade
     * @param from Address of the account to send from
     * @return True if this trade is allowed
     */
    function requireTrade(address from) public view {
        require(!readOnly, "Read only mode engaged");

        uint256 i = 0;
        address current = addressLinkedList[0];
        while (current != 0) {
            if(current == from) {
                uint256 timestamp = freezeUntil[current];
                require(timestamp < block.timestamp, "Trades from your account are temporarily not possible. This is due to ICO rules.");

                break;
            }

            current = addressLinkedList[current];
            i++;
        }
    }

    /**
     * @notice Transfer the balance from token owner's account to `to` account
     *    - Owner's account must have sufficient balance to transfer
     *    - 0 value transfers are allowed
     * @param to Address to transfer tokens to
     * @param tokens Number of tokens to be transferred
     */
    function transfer(address to, uint256 tokens) public returns (bool success) {
        requireTrade(msg.sender);
        balances[msg.sender] = balances[msg.sender].sub(tokens);
        balances[to] = balances[to].add(tokens);
        emit Transfer(msg.sender, to, tokens);

        ensureInAccountList(to);

        return true;
    }

    /**
     * @notice Token owner can approve for `spender` to transferFrom(...) `tokens`
     *   from the token owner's account
     * @param spender address of the spender to approve
     * @param tokens Number of tokens to allow spender to spend
     * @dev https://github.com/ethereum/EIPs/blob/master/EIPS/eip-20-token-standard.md
     *   recommends that there are no checks for the approval double-spend attack
     *   as this should be implemented in user interfaces
     */
    function approve(address spender, uint256 tokens) public returns (bool success) {
        requireTrade(msg.sender);
        allowed[msg.sender][spender] = tokens;
        emit Approval(msg.sender, spender, tokens);
        return true;
    }

    /**
     * @notice Transfer `tokens` from the `from` account to the `to` account
     * @param from address to transfer tokens from
     * @param to address to transfer tokens to
     * @param tokens Number of tokens to transfer
     * @dev The calling account must already have sufficient tokens approve(...)-d
     *   for spending from the `from` account and
     *   - From account must have sufficient balance to transfer
     *   - Spender must have sufficient allowance to transfer
     *   - 0 value transfers are allowed
     */
    function transferFrom(address from, address to, uint256 tokens) public returns (bool success) {
        requireTrade(from);
        balances[from] = balances[from].sub(tokens);
        allowed[from][msg.sender] = allowed[from][msg.sender].sub(tokens);
        balances[to] = balances[to].add(tokens);
        emit Transfer(from, to, tokens);

        ensureInAccountList(from);
        ensureInAccountList(to);

        return true;
    }

    /**
     * @notice Returns the amount of tokens approved by the owner that can be
     *   transferred to the spender's account
     * @param tokenOwner The address of the owner of the token
     * @param spender The address of the spender of the token
     * @return Number of tokens that are approved for spending from the tokenOwner
     */
    function allowance(address tokenOwner, address spender) public constant returns (uint256 remaining) {
        requireTrade(tokenOwner);
        return allowed[tokenOwner][spender];
    }

    /**
     * @notice Token owner can approve for `spender` to transferFrom(...) `tokens`
     *   from the token owner's account. The `spender` contract function
     *   `receiveApproval(...)` is then executed
     * @param spender address with which to approve
     * @param tokens The number of tokens that this address is approved to take
     * @param data Pass data to receiveApproval
     */
    function approveAndCall(address spender, uint256 tokens, bytes data) public returns (bool success) {
        requireTrade(msg.sender);
        allowed[msg.sender][spender] = tokens;
        emit Approval(msg.sender, spender, tokens);
        ApproveAndCallFallBack(spender).receiveApproval(msg.sender, tokens, this, data);
        return true;
    }

    /**
     * @notice In the event of errors, allow the owner to move tokens from an account
     * @param addr address to take tokens from
     * @param tokens The number of tokens to take
     */
    function transferAnyERC20Token(address addr, uint256 tokens) public onlyOwner returns (bool success) {
        requireTrade(addr);
        return ERC20Interface(addr).transfer(owner, tokens);
    }

    /**
     * @notice Give tokens from the pool to account, creating the account if necessary
     * @param to The address to deliver the new tokens to
     * @param tokens The number of tokens to deliver
     */
    function giveReserveTo(address to, uint256 tokens) public onlyOwner {
        require(!readOnly, "Read only mode engaged");

        balances[address(0)] = balances[address(0)].sub(tokens);
        balances[to] = balances[to].add(tokens);
        emit Transfer(address(0), to, tokens);

        ensureInAccountList(to);
    }

    /**
     * @notice Distribute dividends to all owners
     * @param percentage Given in the form 1% === 10000. This is not a number of
     *   tokens, more a form of percentage that does not require decimals. This
     *   supports 0.00001% (with 1 as the percentage value).
     * @dev Dividends are rounded down, if a user has too few tokens, they will not receive anything
     */
    function giveDividend(uint64 percentage) public onlyOwner {
        require(!readOnly, "Read only mode engaged");

        require(percentage > 0, "Percentage must be more than 0 (10000 = 1%)"); // At least 0.00001% dividends
        require(percentage <= 500000, "Percentage may not be larger than 500000 (50%)"); // No more than 50% dividends

        emit DividendGivenEvent(percentage);

        address current = addressLinkedList[0];
        while (current != 0) {
            bool found = ignoreDividend[current];
            if(!found) {
                uint256 extraTokens = (balances[current] * percentage) / 1000000;
                giveReserveTo(current, extraTokens);
            }
            current = addressLinkedList[current];
        }
    }

    /**
     * @notice Allow admins to (en|dis)able all write functionality for emergencies
     * @param enabled true to enable read only mode, false to allow writing
     */
    function setReadOnly(bool enabled) public onlyOwner {
        readOnly = enabled;
    }

    /**
     * @notice Add an account to a linked list
     * @param addr address of the account to add to the linked list
     * @dev This is necessary to iterate over for listing purposes
     */
    function addToAccountList(address addr) internal {
        require(!readOnly, "Read only mode engaged");

        addressLinkedList[addr] = addressLinkedList[0x0];
        addressLinkedList[0x0] = addr;
        accountCount++;
    }

    /**
     * @notice Remove an account from a linked list
     * @param addr address of the account to remove from the linked list
     * @dev This is necessary to iterate over for listing purposes
     */
    function removeFromAccountList(address addr) internal {
        require(!readOnly, "Read only mode engaged");

        uint16 i = 0;
        bool found = false;
        address parent;
        address current = addressLinkedList[0];
        while (true) {
            if (addressLinkedList[current] == addr) {
                parent = current;
                found = true;
                break;
            }
            current = addressLinkedList[current];

            if (i++ > accountCount) break;
        }

        require(found, "Account was not found to remove.");

        addressLinkedList[parent] = addressLinkedList[addressLinkedList[parent]];
        delete addressLinkedList[addr];

        if (balances[addr] > 0) {
            balances[address(0)] += balances[addr];
        }

        delete balances[addr];

        accountCount--;
    }

    /**
     * @notice Make sure that this address exists in our linked list
     * @param addr address of the account to test
     * @dev This is necessary to iterate over for listing purposes
     */
    function ensureInAccountList(address addr) internal {
        require(!readOnly, "Read only mode engaged");

        bool found = false;
        address current = addressLinkedList[0];
        while (current != 0) {
            if (current == addr) {
                found = true;
                break;
            }
            current = addressLinkedList[current];
        }
        if (!found) {
            addToAccountList(addr);
        }
    }
}

    Contract ABI  
[{"constant":true,"inputs":[],"name":"name","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"spender","type":"address"},{"name":"tokens","type":"uint256"}],"name":"approve","outputs":[{"name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"list","outputs":[{"name":"","type":"address[]"},{"name":"","type":"uint256[]"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"enabled","type":"bool"}],"name":"setReadOnly","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"totalSupply","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"disown","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"from","type":"address"},{"name":"to","type":"address"},{"name":"tokens","type":"uint256"}],"name":"transferFrom","outputs":[{"name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"balances","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"decimals","outputs":[{"name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"percentage","type":"uint64"}],"name":"giveDividend","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"},{"name":"","type":"address"}],"name":"allowed","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"tokenOwner","type":"address"}],"name":"balanceOf","outputs":[{"name":"balance","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"ignoreDividend","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"acceptOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"from","type":"address"}],"name":"requireTrade","outputs":[],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"symbol","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"to","type":"address"},{"name":"tokens","type":"uint256"}],"name":"transfer","outputs":[{"name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"freezeUntil","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"remainingTokens","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"to","type":"address"},{"name":"tokens","type":"uint256"}],"name":"giveReserveTo","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"spender","type":"address"},{"name":"tokens","type":"uint256"},{"name":"data","type":"bytes"}],"name":"approveAndCall","outputs":[{"name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"isReadOnly","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"addr","type":"address"},{"name":"tokens","type":"uint256"}],"name":"transferAnyERC20Token","outputs":[{"name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"tokenOwner","type":"address"},{"name":"spender","type":"address"}],"name":"allowance","outputs":[{"name":"remaining","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"inputs":[{"name":"supply","type":"uint256"},{"name":"addresses","type":"address[]"},{"name":"tokens","type":"uint256[]"},{"name":"freezeList","type":"uint256[]"},{"name":"ignoreList","type":"address[]"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"payable":true,"stateMutability":"payable","type":"fallback"},{"anonymous":false,"inputs":[{"indexed":false,"name":"dividendPercentage","type":"uint64"}],"name":"DividendGivenEvent","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"_from","type":"address"},{"indexed":true,"name":"_to","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"from","type":"address"},{"indexed":true,"name":"to","type":"address"},{"indexed":false,"name":"tokens","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"tokenOwner","type":"address"},{"indexed":true,"name":"spender","type":"address"},{"indexed":false,"name":"tokens","type":"uint256"}],"name":"Approval","type":"event"}]

  Contract Creation Code Switch To Opcodes View
6080604052600060055560006006556000600760006101000a81548160ff0219169083151502179055503480156200003657600080fd5b5060405162003c5138038062003c518339810180604052810190808051906020019092919080518201929190602001805182019291906020018051820192919060200180518201929190505050600080600080336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506040805190810160405280600481526020017f534e4f5700000000000000000000000000000000000000000000000000000000815250600290805190602001906200011692919062000e51565b506040805190810160405280600781526020017f536e6f7764656e00000000000000000000000000000000000000000000000000815250600390805190602001906200016492919062000e51565b506000600460006101000a81548160ff021916908360ff16021790555088600681905550600654600b60008073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508751935086519250600084118015620001e75750600083115b151562000282576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260328152602001807f4d757374206265206120706f736974697665206e756d626572206f662061646481526020017f72657373657320616e6420746f6b656e732e000000000000000000000000000081525060400191505060405180910390fd5b828414151562000320576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260298152602001807f4d75737420626520746f6b656e732061737369676e656420746f20616c6c206181526020017f64647265737365732e000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b60009150600090505b838110156200052657600087828151811015156200034357fe5b90602001906020020151111515620003c3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260188152602001807f4e6f20656d70747920746f6b656e7320616c6c6f7765642e000000000000000081525060200191505060405180910390fd5b8681815181101515620003d257fe5b906020019060200201518201915088821115151562000459576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f537570706c79206973206e6f7420656e6f75676820666f722064656d616e642e81525060200191505060405180910390fd5b620004a488828151811015156200046c57fe5b9060200190602002015188838151811015156200048557fe5b9060200190602002015162000672640100000000026401000000009004565b8581815181101515620004b357fe5b90602001906020020151600960008a84815181101515620004d057fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550808060010191505062000329565b6001600860003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600090505b845181101562000663576001600860008784815181101515620005fa57fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080600101915050620005db565b50505050505050505062000f00565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156200075d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260298152602001807f4f6e6c7920746865206f776e6572206d6179206578656375746520746869732081526020017f66756e6374696f6e2e000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b600760009054906101000a900460ff16151515620007e3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f52656164206f6e6c79206d6f646520656e67616765640000000000000000000081525060200191505060405180910390fd5b6200084581600b60008073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054620009b1640100000000026200288f179091906401000000009004565b600b60008073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550620008ea81600b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205462000a376401000000000262002914179091906401000000009004565b600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a3620009ad8262000abd640100000000026401000000009004565b5050565b600082821115151562000a2c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600a8152602001807f426164206d617468732e0000000000000000000000000000000000000000000081525060200191505060405180910390fd5b818303905092915050565b6000818301905082811015151562000ab7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600a8152602001807f426164206d617468732e0000000000000000000000000000000000000000000081525060200191505060405180910390fd5b92915050565b600080600760009054906101000a900460ff1615151562000b46576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f52656164206f6e6c79206d6f646520656e67616765640000000000000000000081525060200191505060405180910390fd5b60009150600a60008073ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690505b60008173ffffffffffffffffffffffffffffffffffffffff1614151562000c5f578273ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141562000bf7576001915062000c5f565b600a60008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905062000b97565b81151562000c825762000c818362000c87640100000000026401000000009004565b5b505050565b600760009054906101000a900460ff1615151562000d0d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f52656164206f6e6c79206d6f646520656e67616765640000000000000000000081525060200191505060405180910390fd5b600a60008073ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600a60008073ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060056000815480929190600101919050555050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1062000e9457805160ff191683800117855562000ec5565b8280016001018555821562000ec5579182015b8281111562000ec457825182559160200191906001019062000ea7565b5b50905062000ed4919062000ed8565b5090565b62000efd91905b8082111562000ef957600081600090555060010162000edf565b5090565b90565b612d418062000f106000396000f300608060405260043610610149576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806306fdde031461014e578063095ea7b3146101de5780630f560cd71461024357806310ea6b34146102f757806318160ddd146103265780631e9bf0da1461035157806323b872dd1461036857806327e235e3146103ed578063313ce5671461044457806334c2904b146104755780635c658165146104ac57806370a08231146105235780637775eb061461057a57806379ba5097146105d55780637e7d5689146105ec57806395d89b411461062f578063a9059cbb146106bf578063b940726a14610724578063bf5839031461077b578063c0ee57a5146107a6578063cae9ca51146107f3578063dc2a60f61461089e578063dc39d06d146108cd578063dd62ed3e14610932578063f2fde38b146109a9575b600080fd5b34801561015a57600080fd5b506101636109ec565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156101a3578082015181840152602081019050610188565b50505050905090810190601f1680156101d05780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156101ea57600080fd5b50610229600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610a8a565b604051808215151515815260200191505060405180910390f35b34801561024f57600080fd5b50610258610b85565b604051808060200180602001838103835285818151815260200191508051906020019060200280838360005b8381101561029f578082015181840152602081019050610284565b50505050905001838103825284818151815260200191508051906020019060200280838360005b838110156102e15780820151818401526020810190506102c6565b5050505090500194505050505060405180910390f35b34801561030357600080fd5b50610324600480360381019080803515159060200190929190505050610d8b565b005b34801561033257600080fd5b5061033b610e92565b6040518082815260200191505060405180910390f35b34801561035d57600080fd5b50610366610e9c565b005b34801561037457600080fd5b506103d3600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610fac565b604051808215151515815260200191505060405180910390f35b3480156103f957600080fd5b5061042e600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611272565b6040518082815260200191505060405180910390f35b34801561045057600080fd5b5061045961128a565b604051808260ff1660ff16815260200191505060405180910390f35b34801561048157600080fd5b506104aa600480360381019080803567ffffffffffffffff16906020019092919050505061129d565b005b3480156104b857600080fd5b5061050d600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611746565b6040518082815260200191505060405180910390f35b34801561052f57600080fd5b50610564600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061176b565b6040518082815260200191505060405180910390f35b34801561058657600080fd5b506105bb600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506117b4565b604051808215151515815260200191505060405180910390f35b3480156105e157600080fd5b506105ea6117d4565b005b3480156105f857600080fd5b5061062d600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611a02565b005b34801561063b57600080fd5b50610644611cb0565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610684578082015181840152602081019050610669565b50505050905090810190601f1680156106b15780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156106cb57600080fd5b5061070a600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611d4e565b604051808215151515815260200191505060405180910390f35b34801561073057600080fd5b50610765600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611efb565b6040518082815260200191505060405180910390f35b34801561078757600080fd5b50610790611f13565b6040518082815260200191505060405180910390f35b3480156107b257600080fd5b506107f1600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611f5a565b005b3480156107ff57600080fd5b50610884600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290505050612266565b604051808215151515815260200191505060405180910390f35b3480156108aa57600080fd5b506108b36124be565b604051808215151515815260200191505060405180910390f35b3480156108d957600080fd5b50610918600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506124d5565b604051808215151515815260200191505060405180910390f35b34801561093e57600080fd5b50610993600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506126d1565b6040518082815260200191505060405180910390f35b3480156109b557600080fd5b506109ea600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612761565b005b60038054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610a825780601f10610a5757610100808354040283529160200191610a82565b820191906000526020600020905b815481529060010190602001808311610a6557829003601f168201915b505050505081565b6000610a9533611a02565b81600c60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040518082815260200191505060405180910390a36001905092915050565b606080606080600080600554604051908082528060200260200182016040528015610bbf5781602001602082028038833980820191505090505b509350600554604051908082528060200260200182016040528015610bf35781602001602082028038833980820191505090505b50925060009150600a60008073ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690505b60008173ffffffffffffffffffffffffffffffffffffffff16141515610d7d57808483815181101515610c7657fe5b9060200190602002019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600b60008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548383815181101515610d0057fe5b9060200190602002018181525050600a60008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508180600101925050610c47565b838395509550505050509091565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610e75576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260298152602001807f4f6e6c7920746865206f776e6572206d6179206578656375746520746869732081526020017f66756e6374696f6e2e000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b80600760006101000a81548160ff02191690831515021790555050565b6000600654905090565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610f86576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260298152602001807f4f6e6c7920746865206f776e6572206d6179206578656375746520746869732081526020017f66756e6374696f6e2e000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b6000806101000a81549073ffffffffffffffffffffffffffffffffffffffff0219169055565b6000610fb784611a02565b61100982600b60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461288f90919063ffffffff16565b600b60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506110db82600c60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461288f90919063ffffffff16565b600c60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506111ad82600b60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461291490919063ffffffff16565b600b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a361125e84612999565b61126783612999565b600190509392505050565b600b6020528060005260406000206000915090505481565b600460009054906101000a900460ff1681565b60008060008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561138c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260298152602001807f4f6e6c7920746865206f776e6572206d6179206578656375746520746869732081526020017f66756e6374696f6e2e000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b600760009054906101000a900460ff16151515611411576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f52656164206f6e6c79206d6f646520656e67616765640000000000000000000081525060200191505060405180910390fd5b60008467ffffffffffffffff161115156114b9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602b8152602001807f50657263656e74616765206d757374206265206d6f7265207468616e2030202881526020017f3130303030203d2031252900000000000000000000000000000000000000000081525060400191505060405180910390fd5b6207a1208467ffffffffffffffff1611151515611564576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602e8152602001807f50657263656e74616765206d6179206e6f74206265206c61726765722074686181526020017f6e2035303030303020283530252900000000000000000000000000000000000081525060400191505060405180910390fd5b7f760dd339c932fe25e5b38b154a29880625807433f1b1faf5bc0a6e9cd505d84984604051808267ffffffffffffffff1667ffffffffffffffff16815260200191505060405180910390a1600a60008073ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1692505b60008373ffffffffffffffffffffffffffffffffffffffff1614151561174057600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1691508115156116d957620f42408467ffffffffffffffff16600b60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054028115156116cb57fe5b0490506116d88382611f5a565b5b600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1692506115fc565b50505050565b600c602052816000526040600020602052806000526040600020600091509150505481565b6000600b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60086020528060005260406000206000915054906101000a900460ff1681565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156118bf576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c8152602001807f596f752068617665206e6f74206265656e2073656c656374656420617320746881526020017f65206e6577206f776e65722e000000000000000000000000000000000000000081525060400191505060405180910390fd5b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b6000806000600760009054906101000a900460ff16151515611a8c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f52656164206f6e6c79206d6f646520656e67616765640000000000000000000081525060200191505060405180910390fd5b60009250600a60008073ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1691505b60008273ffffffffffffffffffffffffffffffffffffffff16141515611caa578373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611c3b57600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490504281101515611c36576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260508152602001807f5472616465732066726f6d20796f7572206163636f756e74206172652074656d81526020017f706f726172696c79206e6f7420706f737369626c652e2054686973206973206481526020017f756520746f2049434f2072756c65732e0000000000000000000000000000000081525060600191505060405180910390fd5b611caa565b600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1691508280600101935050611add565b50505050565b60028054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015611d465780601f10611d1b57610100808354040283529160200191611d46565b820191906000526020600020905b815481529060010190602001808311611d2957829003601f168201915b505050505081565b6000611d5933611a02565b611dab82600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461288f90919063ffffffff16565b600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611e4082600b60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461291490919063ffffffff16565b600b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a3611ef183612999565b6001905092915050565b60096020528060005260406000206000915090505481565b6000600b60008073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905090565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515612044576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260298152602001807f4f6e6c7920746865206f776e6572206d6179206578656375746520746869732081526020017f66756e6374696f6e2e000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b600760009054906101000a900460ff161515156120c9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f52656164206f6e6c79206d6f646520656e67616765640000000000000000000081525060200191505060405180910390fd5b61211b81600b60008073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461288f90919063ffffffff16565b600b60008073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506121b081600b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461291490919063ffffffff16565b600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a361226282612999565b5050565b600061227133611a02565b82600c60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925856040518082815260200191505060405180910390a38373ffffffffffffffffffffffffffffffffffffffff16638f4ffcb1338530866040518563ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018481526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200180602001828103825283818151815260200191508051906020019080838360005b8381101561244c578082015181840152602081019050612431565b50505050905090810190601f1680156124795780820380516001836020036101000a031916815260200191505b5095505050505050600060405180830381600087803b15801561249b57600080fd5b505af11580156124af573d6000803e3d6000fd5b50505050600190509392505050565b6000600760009054906101000a900460ff16905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156125c1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260298152602001807f4f6e6c7920746865206f776e6572206d6179206578656375746520746869732081526020017f66756e6374696f6e2e000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b6125ca83611a02565b8273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b15801561268e57600080fd5b505af11580156126a2573d6000803e3d6000fd5b505050506040513d60208110156126b857600080fd5b8101908080519060200190929190505050905092915050565b60006126dc83611a02565b600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561284b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260298152602001807f4f6e6c7920746865206f776e6572206d6179206578656375746520746869732081526020017f66756e6374696f6e2e000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b80600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000828211151515612909576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600a8152602001807f426164206d617468732e0000000000000000000000000000000000000000000081525060200191505060405180910390fd5b818303905092915050565b60008183019050828110151515612993576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600a8152602001807f426164206d617468732e0000000000000000000000000000000000000000000081525060200191505060405180910390fd5b92915050565b600080600760009054906101000a900460ff16151515612a21576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f52656164206f6e6c79206d6f646520656e67616765640000000000000000000081525060200191505060405180910390fd5b60009150600a60008073ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690505b60008173ffffffffffffffffffffffffffffffffffffffff16141515612b36578273ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415612acf5760019150612b36565b600a60008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050612a72565b811515612b4757612b4683612b4c565b5b505050565b600760009054906101000a900460ff16151515612bd1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f52656164206f6e6c79206d6f646520656e67616765640000000000000000000081525060200191505060405180910390fd5b600a60008073ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600a60008073ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600560008154809291906001019190505550505600a165627a7a72305820d6da9b42345000198e3a3e54d4e7500feb85b66c480aaee14af75c4070e50aa8002900000000000000000000000000000000000000000000000000000000016e360000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000260000000000000000000000000000000000000000000000000000000000000042000000000000000000000000000000000000000000000000000000000000005e0000000000000000000000000000000000000000000000000000000000000000d0000000000000000000000006aefe37666d410b3b43e849385099199f4ed381b0000000000000000000000006b7c96947df2af9f50bdaca3fd5c06dc49282370000000000000000000000000b48eb7bc4472bc2b6e0a49d2e80f6c086cfc80b70000000000000000000000003f37721eed6bce9b888d9cc70516b649d91d2bc0000000000000000000000000f37e925792b0f92cbfa5bf0686e4af59f26626c90000000000000000000000003d61870d1f5f7d8615db60d1d2cc3ec25eac961f000000000000000000000000451914e68868d43b2ae4ee93a4966cc65109f5fc000000000000000000000000679e6e0dd5452c022326f938a3d47060e96dea7800000000000000000000000070f63dd49c15828e66f8c57b62da193a97453c43000000000000000000000000c77121f16496b26ed31a44184e91af04ec41bdba000000000000000000000000d905faf79704fbd51954406f05be441337c560360000000000000000000000002ea61f913b0170a21d0f131b657304d2c0857e740000000000000000000000005a4271534ce8d3f55dc77c0b0ce1f8c04ed84550000000000000000000000000000000000000000000000000000000000000000d0000000000000000000000000000000000000000000000000000000000186a0000000000000000000000000000000000000000000000000000000000000c350000000000000000000000000000000000000000000000000000000000000c35000000000000000000000000000000000000000000000000000000000000186a00000000000000000000000000000000000000000000000000000000000036ee8000000000000000000000000000000000000000000000000000000000000f424000000000000000000000000000000000000000000000000000000000003d0900000000000000000000000000000000000000000000000000000000000027ac40000000000000000000000000000000000000000000000000000000000053ec6000000000000000000000000000000000000000000000000000000000000668a000000000000000000000000000000000000000000000000000000000000493e0000000000000000000000000000000000000000000000000000000000008d9a00000000000000000000000000000000000000000000000000000000000124f80000000000000000000000000000000000000000000000000000000000000000d000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005c787600000000000000000000000000000000000000000000000000000000005e5afb00000000000000000000000000000000000000000000000000000000005c2aad8000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005c2aad800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d0000000000000000000000006aefe37666d410b3b43e849385099199f4ed381b0000000000000000000000006b7c96947df2af9f50bdaca3fd5c06dc49282370000000000000000000000000b48eb7bc4472bc2b6e0a49d2e80f6c086cfc80b70000000000000000000000003f37721eed6bce9b888d9cc70516b649d91d2bc0000000000000000000000000f37e925792b0f92cbfa5bf0686e4af59f26626c90000000000000000000000003d61870d1f5f7d8615db60d1d2cc3ec25eac961f000000000000000000000000451914e68868d43b2ae4ee93a4966cc65109f5fc000000000000000000000000679e6e0dd5452c022326f938a3d47060e96dea7800000000000000000000000070f63dd49c15828e66f8c57b62da193a97453c43000000000000000000000000c77121f16496b26ed31a44184e91af04ec41bdba000000000000000000000000d905faf79704fbd51954406f05be441337c560360000000000000000000000002ea61f913b0170a21d0f131b657304d2c0857e740000000000000000000000005a4271534ce8d3f55dc77c0b0ce1f8c04ed84550

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

-----Encoded View---------------
61 Constructor Arguments found :
Arg [0] : 00000000000000000000000000000000000000000000000000000000016e3600
Arg [1] : 00000000000000000000000000000000000000000000000000000000000000a0
Arg [2] : 0000000000000000000000000000000000000000000000000000000000000260
Arg [3] : 0000000000000000000000000000000000000000000000000000000000000420
Arg [4] : 00000000000000000000000000000000000000000000000000000000000005e0
Arg [5] : 000000000000000000000000000000000000000000000000000000000000000d
Arg [6] : 0000000000000000000000006aefe37666d410b3b43e849385099199f4ed381b
Arg [7] : 0000000000000000000000006b7c96947df2af9f50bdaca3fd5c06dc49282370
Arg [8] : 000000000000000000000000b48eb7bc4472bc2b6e0a49d2e80f6c086cfc80b7
Arg [9] : 0000000000000000000000003f37721eed6bce9b888d9cc70516b649d91d2bc0
Arg [10] : 000000000000000000000000f37e925792b0f92cbfa5bf0686e4af59f26626c9
Arg [11] : 0000000000000000000000003d61870d1f5f7d8615db60d1d2cc3ec25eac961f
Arg [12] : 000000000000000000000000451914e68868d43b2ae4ee93a4966cc65109f5fc
Arg [13] : 000000000000000000000000679e6e0dd5452c022326f938a3d47060e96dea78
Arg [14] : 00000000000000000000000070f63dd49c15828e66f8c57b62da193a97453c43
Arg [15] : 000000000000000000000000c77121f16496b26ed31a44184e91af04ec41bdba
Arg [16] : 000000000000000000000000d905faf79704fbd51954406f05be441337c56036
Arg [17] : 0000000000000000000000002ea61f913b0170a21d0f131b657304d2c0857e74
Arg [18] : 0000000000000000000000005a4271534ce8d3f55dc77c0b0ce1f8c04ed84550
Arg [19] : 000000000000000000000000000000000000000000000000000000000000000d
Arg [20] : 0000000000000000000000000000000000000000000000000000000000186a00
Arg [21] : 00000000000000000000000000000000000000000000000000000000000c3500
Arg [22] : 00000000000000000000000000000000000000000000000000000000000c3500
Arg [23] : 0000000000000000000000000000000000000000000000000000000000186a00
Arg [24] : 000000000000000000000000000000000000000000000000000000000036ee80
Arg [25] : 00000000000000000000000000000000000000000000000000000000000f4240
Arg [26] : 00000000000000000000000000000000000000000000000000000000003d0900
Arg [27] : 000000000000000000000000000000000000000000000000000000000027ac40
Arg [28] : 000000000000000000000000000000000000000000000000000000000053ec60
Arg [29] : 00000000000000000000000000000000000000000000000000000000000668a0
Arg [30] : 00000000000000000000000000000000000000000000000000000000000493e0
Arg [31] : 000000000000000000000000000000000000000000000000000000000008d9a0
Arg [32] : 0000000000000000000000000000000000000000000000000000000000124f80
Arg [33] : 000000000000000000000000000000000000000000000000000000000000000d
Arg [34] : 0000000000000000000000000000000000000000000000000000000000000000
Arg [35] : 0000000000000000000000000000000000000000000000000000000000000000
Arg [36] : 0000000000000000000000000000000000000000000000000000000000000000
Arg [37] : 0000000000000000000000000000000000000000000000000000000000000000
Arg [38] : 0000000000000000000000000000000000000000000000000000000000000000
Arg [39] : 0000000000000000000000000000000000000000000000000000000000000000
Arg [40] : 000000000000000000000000000000000000000000000000000000005c787600
Arg [41] : 000000000000000000000000000000000000000000000000000000005e5afb00
Arg [42] : 000000000000000000000000000000000000000000000000000000005c2aad80
Arg [43] : 0000000000000000000000000000000000000000000000000000000000000000
Arg [44] : 0000000000000000000000000000000000000000000000000000000000000000
Arg [45] : 000000000000000000000000000000000000000000000000000000005c2aad80
Arg [46] : 0000000000000000000000000000000000000000000000000000000000000000
Arg [47] : 000000000000000000000000000000000000000000000000000000000000000d
Arg [48] : 0000000000000000000000006aefe37666d410b3b43e849385099199f4ed381b
Arg [49] : 0000000000000000000000006b7c96947df2af9f50bdaca3fd5c06dc49282370
Arg [50] : 000000000000000000000000b48eb7bc4472bc2b6e0a49d2e80f6c086cfc80b7
Arg [51] : 0000000000000000000000003f37721eed6bce9b888d9cc70516b649d91d2bc0
Arg [52] : 000000000000000000000000f37e925792b0f92cbfa5bf0686e4af59f26626c9
Arg [53] : 0000000000000000000000003d61870d1f5f7d8615db60d1d2cc3ec25eac961f
Arg [54] : 000000000000000000000000451914e68868d43b2ae4ee93a4966cc65109f5fc
Arg [55] : 000000000000000000000000679e6e0dd5452c022326f938a3d47060e96dea78
Arg [56] : 00000000000000000000000070f63dd49c15828e66f8c57b62da193a97453c43
Arg [57] : 000000000000000000000000c77121f16496b26ed31a44184e91af04ec41bdba
Arg [58] : 000000000000000000000000d905faf79704fbd51954406f05be441337c56036
Arg [59] : 0000000000000000000000002ea61f913b0170a21d0f131b657304d2c0857e74
Arg [60] : 0000000000000000000000005a4271534ce8d3f55dc77c0b0ce1f8c04ed84550


   Swarm Source:
bzzr://d6da9b42345000198e3a3e54d4e7500feb85b66c480aaee14af75c4070e50aa8

 

View All
Block Age transaction Difficulty GasUsed Reward
View All
Block Age UncleNumber Difficulty GasUsed Reward
Make sure to use the "Vote Down" button for any spammy posts, and the "Vote Up" for interesting conversations.