ETH Price: $3,042.20 (+3.49%)

Token

CompliFi (COMFI)
 

Overview

Max Total Supply

10,000,000 COMFI

Holders

812 (0.00%)

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
4.4192799999999997 COMFI

Value
$0.00
0x0e9f6cdcafa80af5c97fe6c0e6c750860eb48ae7
Loading...
Loading
Loading...
Loading
Loading...
Loading

OVERVIEW

CompliFi uses your liquidity to automatically issue and market make in a wide range of derivatives, generating trading fees and managing risk.

# Exchange Pair Price  24H Volume % Volume

Contract Source Code Verified (Exact Match)

Contract Name:
Comfi

Compiler Version
v0.5.17+commit.d19bba13

Optimization Enabled:
Yes with 1000000 runs

Other Settings:
default evmVersion, None license
/**
 *Submitted for verification at Etherscan.io on 2020-11-18
*/

pragma solidity ^0.5.17;
pragma experimental ABIEncoderV2;

contract Comfi {
    /// @notice EIP-20 token name for this token
    string public constant name = "CompliFi";

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

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

    /// @notice Total number of tokens in circulation
    uint public totalSupply = 10_000_000e18; // 10 millions Comfi

    /// @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 The EIP-712 typehash for the permit struct used by the contract
    bytes32 public constant PERMIT_TYPEHASH = keccak256("Permit(address owner,address spender,uint256 value,uint256 nonce,uint256 deadline)");

    /// @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 Comfi 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, "Comfi::approve: amount exceeds 96 bits");
        }

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

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

    /**
     * @notice Triggers an approval from owner to spends
     * @param owner The address to approve from
     * @param spender The address to be approved
     * @param rawAmount The number of tokens that are approved (2^256-1 means infinite)
     * @param deadline 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 permit(address owner, address spender, uint rawAmount, uint deadline, uint8 v, bytes32 r, bytes32 s) external {
        uint96 amount;
        if (rawAmount == uint(-1)) {
            amount = uint96(-1);
        } else {
            amount = safe96(rawAmount, "Comfi::permit: amount exceeds 96 bits");
        }

        bytes32 domainSeparator = keccak256(abi.encode(DOMAIN_TYPEHASH, keccak256(bytes(name)), getChainId(), address(this)));
        bytes32 structHash = keccak256(abi.encode(PERMIT_TYPEHASH, owner, spender, rawAmount, nonces[owner]++, deadline));
        bytes32 digest = keccak256(abi.encodePacked("\x19\x01", domainSeparator, structHash));
        address signatory = ecrecover(digest, v, r, s);
        require(signatory != address(0), "Comfi::permit: invalid signature");
        require(signatory == owner, "Comfi::permit: unauthorized");
        require(now <= deadline, "Comfi::permit: signature expired");

        allowances[owner][spender] = amount;

        emit Approval(owner, spender, amount);
    }

    /**
     * @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 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, "Comfi::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, "Comfi::approve: amount exceeds 96 bits");

        if (spender != src && spenderAllowance != uint96(-1)) {
            uint96 newAllowance = sub96(spenderAllowance, amount, "Comfi::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), "Comfi::delegateBySig: invalid signature");
        require(nonce == nonces[signatory]++, "Comfi::delegateBySig: invalid nonce");
        require(now <= expiry, "Comfi::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, "Comfi::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;
    }

    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), "Comfi::_transferTokens: cannot transfer from the zero address");
        require(dst != address(0), "Comfi::_transferTokens: cannot transfer to the zero address");

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

        _moveDelegates(delegates[src], delegates[dst], 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, "Comfi::_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, "Comfi::_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, "Comfi::_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 Security Audit

Contract ABI

[{"inputs":[{"internalType":"address","name":"account","type":"address"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"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":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Transfer","type":"event"},{"constant":true,"inputs":[],"name":"DELEGATION_TYPEHASH","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"DOMAIN_TYPEHASH","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"PERMIT_TYPEHASH","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"rawAmount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"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"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"delegatee","type":"address"}],"name":"delegate","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"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":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"delegates","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"getCurrentVotes","outputs":[{"internalType":"uint96","name":"","type":"uint96"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"blockNumber","type":"uint256"}],"name":"getPriorVotes","outputs":[{"internalType":"uint96","name":"","type":"uint96"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"nonces","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"numCheckpoints","outputs":[{"internalType":"uint32","name":"","type":"uint32"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"rawAmount","type":"uint256"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"permit","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"dst","type":"address"},{"internalType":"uint256","name":"rawAmount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"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"}],"payable":false,"stateMutability":"nonpayable","type":"function"}]

60806040526a084595161401484a0000006000553480156200002057600080fd5b5060405162002993380380620029938339810160408190526200004391620000d3565b600080546001600160a01b0383168083526002602052604080842080546001600160601b0319166001600160601b0390941693909317909255825491519092917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91620000b191906200010d565b60405180910390a3506200014c565b8051620000cd8162000132565b92915050565b600060208284031215620000e657600080fd5b6000620000f48484620000c0565b949350505050565b62000107816200012f565b82525050565b60208101620000cd8284620000fc565b60006001600160a01b038216620000cd565b90565b6200013d816200011d565b81146200014957600080fd5b50565b612837806200015c6000396000f3fe608060405234801561001057600080fd5b50600436106101775760003560e01c806370a08231116100d8578063b4b5ea571161008c578063dd62ed3e11610066578063dd62ed3e146102f6578063e7a324dc14610309578063f1127ed81461031157610177565b8063b4b5ea57146102bd578063c3cda520146102d0578063d505accf146102e357610177565b80637ecebe00116100bd5780637ecebe001461028f57806395d89b41146102a2578063a9059cbb146102aa57610177565b806370a082311461025c578063782d6fe11461026f57610177565b806330adf81f1161012f578063587cde1e11610114578063587cde1e146102075780635c19a95c146102275780636fcfff451461023c57610177565b806330adf81f146101ea578063313ce567146101f257610177565b806318160ddd1161016057806318160ddd146101ba57806320606b70146101cf57806323b872dd146101d757610177565b806306fdde031461017c578063095ea7b31461019a575b600080fd5b610184610332565b604051610191919061245b565b60405180910390f35b6101ad6101a8366004611cfb565b61036b565b6040516101919190612357565b6101c2610490565b6040516101919190612365565b6101c2610496565b6101ad6101e5366004611c12565b6104ad565b6101c2610651565b6101fa61065d565b6040516101919190612525565b61021a610215366004611bb2565b610662565b6040516101919190612349565b61023a610235366004611bb2565b61068a565b005b61024f61024a366004611bb2565b610697565b60405161019191906124fc565b6101c261026a366004611bb2565b6106af565b61028261027d366004611cfb565b6106e5565b6040516101919190612541565b6101c261029d366004611bb2565b6109d0565b6101846109e2565b6101ad6102b8366004611cfb565b610a1b565b6102826102cb366004611bb2565b610a57565b61023a6102de366004611d2b565b610b05565b61023a6102f1366004611c5f565b610d8a565b6101c2610304366004611bd8565b6111bf565b6101c2611205565b61032461031f366004611db2565b611211565b60405161019192919061250a565b6040518060400160405280600881526020017f436f6d706c69466900000000000000000000000000000000000000000000000081525081565b6000807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8314156103bd57507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6103e2565b6103df836040518060600160405280602681526020016126e26026913961124c565b90505b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff891680855292529182902080547fffffffffffffffffffffffffffffffffffffffff000000000000000000000000166bffffffffffffffffffffffff861617905590519091907f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259061047c908590612533565b60405180910390a360019150505b92915050565b60005481565b6040516104a290612333565b604051809103902081565b73ffffffffffffffffffffffffffffffffffffffff831660009081526001602090815260408083203380855290835281842054825160608101909352602680845291936bffffffffffffffffffffffff90911692859261051792889291906126e29083013961124c565b90508673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561056357506bffffffffffffffffffffffff82811614155b1561063757600061058d83836040518060600160405280603e8152602001612657603e913961129e565b73ffffffffffffffffffffffffffffffffffffffff8981166000818152600160209081526040808320948a16808452949091529081902080547fffffffffffffffffffffffffffffffffffffffff000000000000000000000000166bffffffffffffffffffffffff86161790555192935090917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259061062d908590612533565b60405180910390a3505b610642878783611301565b600193505050505b9392505050565b6040516104a290612328565b601281565b60036020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b610694338261156d565b50565b60056020526000908152604090205463ffffffff1681565b73ffffffffffffffffffffffffffffffffffffffff166000908152600260205260409020546bffffffffffffffffffffffff1690565b6000438210610729576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107209061249c565b60405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff831660009081526005602052604090205463ffffffff168061076457600091505061048a565b73ffffffffffffffffffffffffffffffffffffffff8416600090815260046020908152604080832063ffffffff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff86018116855292529091205416831061083c5773ffffffffffffffffffffffffffffffffffffffff841660009081526004602090815260408083207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9490940163ffffffff168352929052205464010000000090046bffffffffffffffffffffffff16905061048a565b73ffffffffffffffffffffffffffffffffffffffff8416600090815260046020908152604080832083805290915290205463ffffffff1683101561088457600091505061048a565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82015b8163ffffffff168163ffffffff16111561097857600282820363ffffffff160481036108d4611b6f565b5073ffffffffffffffffffffffffffffffffffffffff8716600090815260046020908152604080832063ffffffff8581168552908352928190208151808301909252549283168082526401000000009093046bffffffffffffffffffffffff1691810191909152908714156109535760200151945061048a9350505050565b805163ffffffff1687111561096a57819350610971565b6001820392505b50506108aa565b5073ffffffffffffffffffffffffffffffffffffffff8516600090815260046020908152604080832063ffffffff909416835292905220546bffffffffffffffffffffffff6401000000009091041691505092915050565b60066020526000908152604090205481565b6040518060400160405280600581526020017f434f4d464900000000000000000000000000000000000000000000000000000081525081565b600080610a408360405180606001604052806027815260200161273d6027913961124c565b9050610a4d338583611301565b5060019392505050565b73ffffffffffffffffffffffffffffffffffffffff811660009081526005602052604081205463ffffffff1680610a8f57600061064a565b73ffffffffffffffffffffffffffffffffffffffff831660009081526004602090815260408083207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff850163ffffffff16845290915290205464010000000090046bffffffffffffffffffffffff169392505050565b6000604051610b1390612333565b60408051918290038220828201909152600882527f436f6d706c6946690000000000000000000000000000000000000000000000006020909201919091527f2c902c806a96aacf7d5871278a1df1c18f90058d75ace6329a2462b5448b8ddb610b7a611621565b30604051602001610b8e949392919061240b565b6040516020818303038152906040528051906020012090506000604051610bb49061233e565b604051908190038120610bcf918a908a908a906020016123cd565b60405160208183030381529060405280519060200120905060008282604051602001610bfc9291906122f7565b604051602081830303815290604052805190602001209050600060018288888860405160008152602001604052604051610c399493929190612440565b6020604051602081039080840390855afa158015610c5b573d6000803e3d6000fd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015191505073ffffffffffffffffffffffffffffffffffffffff8116610cd3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610720906124ec565b73ffffffffffffffffffffffffffffffffffffffff811660009081526006602052604090208054600181019091558914610d39576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610720906124dc565b87421115610d73576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610720906124bc565b610d7d818b61156d565b505050505b505050505050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff861415610ddb57507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff610e00565b610dfd866040518060600160405280602581526020016126956025913961124c565b90505b6000604051610e0e90612333565b60408051918290038220828201909152600882527f436f6d706c6946690000000000000000000000000000000000000000000000006020909201919091527f2c902c806a96aacf7d5871278a1df1c18f90058d75ace6329a2462b5448b8ddb610e75611621565b30604051602001610e89949392919061240b565b6040516020818303038152906040528051906020012090506000604051610eaf90612328565b6040805191829003822073ffffffffffffffffffffffffffffffffffffffff8d16600090815260066020908152929020805460018101909155610efe9391928e928e928e9290918e9101612373565b60405160208183030381529060405280519060200120905060008282604051602001610f2b9291906122f7565b604051602081830303815290604052805190602001209050600060018289898960405160008152602001604052604051610f689493929190612440565b6020604051602081039080840390855afa158015610f8a573d6000803e3d6000fd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015191505073ffffffffffffffffffffffffffffffffffffffff8116611002576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107209061248c565b8b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614611067576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107209061247c565b884211156110a1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107209061246c565b84600160008e73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff1602179055508a73ffffffffffffffffffffffffffffffffffffffff168c73ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925876040516111a99190612533565b60405180910390a3505050505050505050505050565b73ffffffffffffffffffffffffffffffffffffffff91821660009081526001602090815260408083209390941682529190915220546bffffffffffffffffffffffff1690565b6040516104a29061233e565b600460209081526000928352604080842090915290825290205463ffffffff81169064010000000090046bffffffffffffffffffffffff1682565b6000816c010000000000000000000000008410611296576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610720919061245b565b509192915050565b6000836bffffffffffffffffffffffff16836bffffffffffffffffffffffff16111582906112f9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610720919061245b565b505050900390565b73ffffffffffffffffffffffffffffffffffffffff831661134e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610720906124cc565b73ffffffffffffffffffffffffffffffffffffffff821661139b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610720906124ac565b73ffffffffffffffffffffffffffffffffffffffff83166000908152600260209081526040918290205482516060810190935260378084526113f8936bffffffffffffffffffffffff90921692859291906127be9083013961129e565b73ffffffffffffffffffffffffffffffffffffffff848116600090815260026020908152604080832080547fffffffffffffffffffffffffffffffffffffffff000000000000000000000000166bffffffffffffffffffffffff96871617905592861682529082902054825160608101909352603180845261148a949190911692859290919061276490830139611625565b73ffffffffffffffffffffffffffffffffffffffff8381166000818152600260205260409081902080547fffffffffffffffffffffffffffffffffffffffff000000000000000000000000166bffffffffffffffffffffffff95909516949094179093559151908516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90611521908590612533565b60405180910390a373ffffffffffffffffffffffffffffffffffffffff80841660009081526003602052604080822054858416835291205461156892918216911683611680565b505050565b73ffffffffffffffffffffffffffffffffffffffff808316600081815260036020818152604080842080546002845282862054949093528787167fffffffffffffffffffffffff000000000000000000000000000000000000000084168117909155905191909516946bffffffffffffffffffffffff9092169391928592917f3134e8a2e6d97e929a7e54011ea5485d7d196dd5f0ba4d4ef95803e8e3fc257f9190a461161b828483611680565b50505050565b4690565b6000838301826bffffffffffffffffffffffff8087169083161015611677576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610720919061245b565b50949350505050565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156116ca57506000816bffffffffffffffffffffffff16115b156115685773ffffffffffffffffffffffffffffffffffffffff8316156117cd5773ffffffffffffffffffffffffffffffffffffffff831660009081526005602052604081205463ffffffff169081611724576000611794565b73ffffffffffffffffffffffffffffffffffffffff851660009081526004602090815260408083207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff860163ffffffff16845290915290205464010000000090046bffffffffffffffffffffffff165b905060006117bb82856040518060600160405280602981526020016127956029913961129e565b90506117c9868484846118c3565b5050505b73ffffffffffffffffffffffffffffffffffffffff8216156115685773ffffffffffffffffffffffffffffffffffffffff821660009081526005602052604081205463ffffffff169081611822576000611892565b73ffffffffffffffffffffffffffffffffffffffff841660009081526004602090815260408083207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff860163ffffffff16845290915290205464010000000090046bffffffffffffffffffffffff165b905060006118b982856040518060600160405280602881526020016126ba60289139611625565b9050610d82858484845b60006118e74360405180606001604052806035815260200161270860359139611b2d565b905060008463ffffffff1611801561195b575073ffffffffffffffffffffffffffffffffffffffff8516600090815260046020908152604080832063ffffffff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8901811685529252909120548282169116145b156119fa5773ffffffffffffffffffffffffffffffffffffffff851660009081526004602090815260408083207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff880163ffffffff168452909152902080547fffffffffffffffffffffffffffffffff000000000000000000000000ffffffff166401000000006bffffffffffffffffffffffff851602179055611ad6565b60408051808201825263ffffffff80841682526bffffffffffffffffffffffff808616602080850191825273ffffffffffffffffffffffffffffffffffffffff8b166000818152600483528781208c871682528352878120965187549451909516640100000000027fffffffffffffffffffffffffffffffff000000000000000000000000ffffffff9587167fffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000958616179590951694909417909555938252600590935292909220805460018801909316929091169190911790555b8473ffffffffffffffffffffffffffffffffffffffff167fdec2bacdd2f05b59de34da9b523dff8be42e5e38e818c82fdb0bae774387a7248484604051611b1e92919061254f565b60405180910390a25050505050565b6000816401000000008410611296576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610720919061245b565b604080518082019091526000808252602082015290565b803561048a81612627565b803561048a8161263b565b803561048a81612644565b803561048a8161264d565b600060208284031215611bc457600080fd5b6000611bd08484611b86565b949350505050565b60008060408385031215611beb57600080fd5b6000611bf78585611b86565b9250506020611c0885828601611b86565b9150509250929050565b600080600060608486031215611c2757600080fd5b6000611c338686611b86565b9350506020611c4486828701611b86565b9250506040611c5586828701611b91565b9150509250925092565b600080600080600080600060e0888a031215611c7a57600080fd5b6000611c868a8a611b86565b9750506020611c978a828b01611b86565b9650506040611ca88a828b01611b91565b9550506060611cb98a828b01611b91565b9450506080611cca8a828b01611ba7565b93505060a0611cdb8a828b01611b91565b92505060c0611cec8a828b01611b91565b91505092959891949750929550565b60008060408385031215611d0e57600080fd5b6000611d1a8585611b86565b9250506020611c0885828601611b91565b60008060008060008060c08789031215611d4457600080fd5b6000611d508989611b86565b9650506020611d6189828a01611b91565b9550506040611d7289828a01611b91565b9450506060611d8389828a01611ba7565b9350506080611d9489828a01611b91565b92505060a0611da589828a01611b91565b9150509295509295509295565b60008060408385031215611dc557600080fd5b6000611dd18585611b86565b9250506020611c0885828601611b9c565b611deb8161257c565b82525050565b611deb81612587565b611deb8161258c565b611deb611e0f8261258c565b61258c565b6000611e1f8261256a565b611e29818561256e565b9350611e398185602086016125d3565b611e42816125ff565b9093019392505050565b6000611e5960208361256e565b7f436f6d66693a3a7065726d69743a207369676e61747572652065787069726564815260200192915050565b6000611e92601b8361256e565b7f436f6d66693a3a7065726d69743a20756e617574686f72697a65640000000000815260200192915050565b6000611ecb600283612577565b7f1901000000000000000000000000000000000000000000000000000000000000815260020192915050565b6000611f0460208361256e565b7f436f6d66693a3a7065726d69743a20696e76616c6964207369676e6174757265815260200192915050565b6000611f3d60288361256e565b7f436f6d66693a3a6765745072696f72566f7465733a206e6f742079657420646581527f7465726d696e6564000000000000000000000000000000000000000000000000602082015260400192915050565b6000611f9c605283612577565b7f5065726d69742861646472657373206f776e65722c616464726573732073706581527f6e6465722c75696e743235362076616c75652c75696e74323536206e6f6e636560208201527f2c75696e7432353620646561646c696e65290000000000000000000000000000604082015260520192915050565b6000612021604383612577565b7f454950373132446f6d61696e28737472696e67206e616d652c75696e7432353681527f20636861696e49642c6164647265737320766572696679696e67436f6e74726160208201527f6374290000000000000000000000000000000000000000000000000000000000604082015260430192915050565b60006120a6603b8361256e565b7f436f6d66693a3a5f7472616e73666572546f6b656e733a2063616e6e6f74207481527f72616e7366657220746f20746865207a65726f20616464726573730000000000602082015260400192915050565b600061210560278361256e565b7f436f6d66693a3a64656c656761746542795369673a207369676e61747572652081527f6578706972656400000000000000000000000000000000000000000000000000602082015260400192915050565b6000612164603d8361256e565b7f436f6d66693a3a5f7472616e73666572546f6b656e733a2063616e6e6f74207481527f72616e736665722066726f6d20746865207a65726f2061646472657373000000602082015260400192915050565b60006121c360238361256e565b7f436f6d66693a3a64656c656761746542795369673a20696e76616c6964206e6f81527f6e63650000000000000000000000000000000000000000000000000000000000602082015260400192915050565b600061222260278361256e565b7f436f6d66693a3a64656c656761746542795369673a20696e76616c696420736981527f676e617475726500000000000000000000000000000000000000000000000000602082015260400192915050565b6000612281603a83612577565b7f44656c65676174696f6e28616464726573732064656c6567617465652c75696e81527f74323536206e6f6e63652c75696e7432353620657870697279290000000000006020820152603a0192915050565b611deb816125a8565b611deb816125b1565b611deb816125c8565b611deb816125b7565b600061230282611ebe565b915061230e8285611e03565b60208201915061231e8284611e03565b5060200192915050565b600061048a82611f8f565b600061048a82612014565b600061048a82612274565b6020810161048a8284611de2565b6020810161048a8284611df1565b6020810161048a8284611dfa565b60c081016123818289611dfa565b61238e6020830188611de2565b61239b6040830187611de2565b6123a86060830186611dfa565b6123b56080830185611dfa565b6123c260a0830184611dfa565b979650505050505050565b608081016123db8287611dfa565b6123e86020830186611de2565b6123f56040830185611dfa565b6124026060830184611dfa565b95945050505050565b608081016124198287611dfa565b6124266020830186611dfa565b6124336040830185611dfa565b6124026060830184611de2565b6080810161244e8287611dfa565b6123e860208301866122dc565b6020808252810161064a8184611e14565b6020808252810161048a81611e4c565b6020808252810161048a81611e85565b6020808252810161048a81611ef7565b6020808252810161048a81611f30565b6020808252810161048a81612099565b6020808252810161048a816120f8565b6020808252810161048a81612157565b6020808252810161048a816121b6565b6020808252810161048a81612215565b6020810161048a82846122d3565b6040810161251882856122d3565b61064a60208301846122ee565b6020810161048a82846122dc565b6020810161048a82846122e5565b6020810161048a82846122ee565b6040810161255d82856122e5565b61064a60208301846122e5565b5190565b90815260200190565b919050565b600061048a8261258f565b151590565b90565b73ffffffffffffffffffffffffffffffffffffffff1690565b63ffffffff1690565b60ff1690565b6bffffffffffffffffffffffff1690565b600061048a826125b7565b60005b838110156125ee5781810151838201526020016125d6565b8381111561161b5750506000910152565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01690565b6126308161257c565b811461069457600080fd5b6126308161258c565b612630816125a8565b612630816125b156fe436f6d66693a3a7472616e7366657246726f6d3a207472616e7366657220616d6f756e742065786365656473207370656e64657220616c6c6f77616e6365436f6d66693a3a7065726d69743a20616d6f756e7420657863656564732039362062697473436f6d66693a3a5f6d6f7665566f7465733a20766f746520616d6f756e74206f766572666c6f7773436f6d66693a3a617070726f76653a20616d6f756e7420657863656564732039362062697473436f6d66693a3a5f7772697465436865636b706f696e743a20626c6f636b206e756d62657220657863656564732033322062697473436f6d66693a3a7472616e736665723a20616d6f756e7420657863656564732039362062697473436f6d66693a3a5f7472616e73666572546f6b656e733a207472616e7366657220616d6f756e74206f766572666c6f7773436f6d66693a3a5f6d6f7665566f7465733a20766f746520616d6f756e7420756e646572666c6f7773436f6d66693a3a5f7472616e73666572546f6b656e733a207472616e7366657220616d6f756e7420657863656564732062616c616e6365a365627a7a7231582010a2626788bdd54dd95ef89f52dc24783a50e4ee751dc9c4096a1880af2f38d06c6578706572696d656e74616cf564736f6c634300051100400000000000000000000000000fb21490a878aa2af08117c96f897095797bd91c

Deployed Bytecode

0x608060405234801561001057600080fd5b50600436106101775760003560e01c806370a08231116100d8578063b4b5ea571161008c578063dd62ed3e11610066578063dd62ed3e146102f6578063e7a324dc14610309578063f1127ed81461031157610177565b8063b4b5ea57146102bd578063c3cda520146102d0578063d505accf146102e357610177565b80637ecebe00116100bd5780637ecebe001461028f57806395d89b41146102a2578063a9059cbb146102aa57610177565b806370a082311461025c578063782d6fe11461026f57610177565b806330adf81f1161012f578063587cde1e11610114578063587cde1e146102075780635c19a95c146102275780636fcfff451461023c57610177565b806330adf81f146101ea578063313ce567146101f257610177565b806318160ddd1161016057806318160ddd146101ba57806320606b70146101cf57806323b872dd146101d757610177565b806306fdde031461017c578063095ea7b31461019a575b600080fd5b610184610332565b604051610191919061245b565b60405180910390f35b6101ad6101a8366004611cfb565b61036b565b6040516101919190612357565b6101c2610490565b6040516101919190612365565b6101c2610496565b6101ad6101e5366004611c12565b6104ad565b6101c2610651565b6101fa61065d565b6040516101919190612525565b61021a610215366004611bb2565b610662565b6040516101919190612349565b61023a610235366004611bb2565b61068a565b005b61024f61024a366004611bb2565b610697565b60405161019191906124fc565b6101c261026a366004611bb2565b6106af565b61028261027d366004611cfb565b6106e5565b6040516101919190612541565b6101c261029d366004611bb2565b6109d0565b6101846109e2565b6101ad6102b8366004611cfb565b610a1b565b6102826102cb366004611bb2565b610a57565b61023a6102de366004611d2b565b610b05565b61023a6102f1366004611c5f565b610d8a565b6101c2610304366004611bd8565b6111bf565b6101c2611205565b61032461031f366004611db2565b611211565b60405161019192919061250a565b6040518060400160405280600881526020017f436f6d706c69466900000000000000000000000000000000000000000000000081525081565b6000807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8314156103bd57507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6103e2565b6103df836040518060600160405280602681526020016126e26026913961124c565b90505b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff891680855292529182902080547fffffffffffffffffffffffffffffffffffffffff000000000000000000000000166bffffffffffffffffffffffff861617905590519091907f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259061047c908590612533565b60405180910390a360019150505b92915050565b60005481565b6040516104a290612333565b604051809103902081565b73ffffffffffffffffffffffffffffffffffffffff831660009081526001602090815260408083203380855290835281842054825160608101909352602680845291936bffffffffffffffffffffffff90911692859261051792889291906126e29083013961124c565b90508673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561056357506bffffffffffffffffffffffff82811614155b1561063757600061058d83836040518060600160405280603e8152602001612657603e913961129e565b73ffffffffffffffffffffffffffffffffffffffff8981166000818152600160209081526040808320948a16808452949091529081902080547fffffffffffffffffffffffffffffffffffffffff000000000000000000000000166bffffffffffffffffffffffff86161790555192935090917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259061062d908590612533565b60405180910390a3505b610642878783611301565b600193505050505b9392505050565b6040516104a290612328565b601281565b60036020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b610694338261156d565b50565b60056020526000908152604090205463ffffffff1681565b73ffffffffffffffffffffffffffffffffffffffff166000908152600260205260409020546bffffffffffffffffffffffff1690565b6000438210610729576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107209061249c565b60405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff831660009081526005602052604090205463ffffffff168061076457600091505061048a565b73ffffffffffffffffffffffffffffffffffffffff8416600090815260046020908152604080832063ffffffff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff86018116855292529091205416831061083c5773ffffffffffffffffffffffffffffffffffffffff841660009081526004602090815260408083207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9490940163ffffffff168352929052205464010000000090046bffffffffffffffffffffffff16905061048a565b73ffffffffffffffffffffffffffffffffffffffff8416600090815260046020908152604080832083805290915290205463ffffffff1683101561088457600091505061048a565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82015b8163ffffffff168163ffffffff16111561097857600282820363ffffffff160481036108d4611b6f565b5073ffffffffffffffffffffffffffffffffffffffff8716600090815260046020908152604080832063ffffffff8581168552908352928190208151808301909252549283168082526401000000009093046bffffffffffffffffffffffff1691810191909152908714156109535760200151945061048a9350505050565b805163ffffffff1687111561096a57819350610971565b6001820392505b50506108aa565b5073ffffffffffffffffffffffffffffffffffffffff8516600090815260046020908152604080832063ffffffff909416835292905220546bffffffffffffffffffffffff6401000000009091041691505092915050565b60066020526000908152604090205481565b6040518060400160405280600581526020017f434f4d464900000000000000000000000000000000000000000000000000000081525081565b600080610a408360405180606001604052806027815260200161273d6027913961124c565b9050610a4d338583611301565b5060019392505050565b73ffffffffffffffffffffffffffffffffffffffff811660009081526005602052604081205463ffffffff1680610a8f57600061064a565b73ffffffffffffffffffffffffffffffffffffffff831660009081526004602090815260408083207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff850163ffffffff16845290915290205464010000000090046bffffffffffffffffffffffff169392505050565b6000604051610b1390612333565b60408051918290038220828201909152600882527f436f6d706c6946690000000000000000000000000000000000000000000000006020909201919091527f2c902c806a96aacf7d5871278a1df1c18f90058d75ace6329a2462b5448b8ddb610b7a611621565b30604051602001610b8e949392919061240b565b6040516020818303038152906040528051906020012090506000604051610bb49061233e565b604051908190038120610bcf918a908a908a906020016123cd565b60405160208183030381529060405280519060200120905060008282604051602001610bfc9291906122f7565b604051602081830303815290604052805190602001209050600060018288888860405160008152602001604052604051610c399493929190612440565b6020604051602081039080840390855afa158015610c5b573d6000803e3d6000fd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015191505073ffffffffffffffffffffffffffffffffffffffff8116610cd3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610720906124ec565b73ffffffffffffffffffffffffffffffffffffffff811660009081526006602052604090208054600181019091558914610d39576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610720906124dc565b87421115610d73576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610720906124bc565b610d7d818b61156d565b505050505b505050505050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff861415610ddb57507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff610e00565b610dfd866040518060600160405280602581526020016126956025913961124c565b90505b6000604051610e0e90612333565b60408051918290038220828201909152600882527f436f6d706c6946690000000000000000000000000000000000000000000000006020909201919091527f2c902c806a96aacf7d5871278a1df1c18f90058d75ace6329a2462b5448b8ddb610e75611621565b30604051602001610e89949392919061240b565b6040516020818303038152906040528051906020012090506000604051610eaf90612328565b6040805191829003822073ffffffffffffffffffffffffffffffffffffffff8d16600090815260066020908152929020805460018101909155610efe9391928e928e928e9290918e9101612373565b60405160208183030381529060405280519060200120905060008282604051602001610f2b9291906122f7565b604051602081830303815290604052805190602001209050600060018289898960405160008152602001604052604051610f689493929190612440565b6020604051602081039080840390855afa158015610f8a573d6000803e3d6000fd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015191505073ffffffffffffffffffffffffffffffffffffffff8116611002576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107209061248c565b8b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614611067576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107209061247c565b884211156110a1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107209061246c565b84600160008e73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff1602179055508a73ffffffffffffffffffffffffffffffffffffffff168c73ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925876040516111a99190612533565b60405180910390a3505050505050505050505050565b73ffffffffffffffffffffffffffffffffffffffff91821660009081526001602090815260408083209390941682529190915220546bffffffffffffffffffffffff1690565b6040516104a29061233e565b600460209081526000928352604080842090915290825290205463ffffffff81169064010000000090046bffffffffffffffffffffffff1682565b6000816c010000000000000000000000008410611296576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610720919061245b565b509192915050565b6000836bffffffffffffffffffffffff16836bffffffffffffffffffffffff16111582906112f9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610720919061245b565b505050900390565b73ffffffffffffffffffffffffffffffffffffffff831661134e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610720906124cc565b73ffffffffffffffffffffffffffffffffffffffff821661139b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610720906124ac565b73ffffffffffffffffffffffffffffffffffffffff83166000908152600260209081526040918290205482516060810190935260378084526113f8936bffffffffffffffffffffffff90921692859291906127be9083013961129e565b73ffffffffffffffffffffffffffffffffffffffff848116600090815260026020908152604080832080547fffffffffffffffffffffffffffffffffffffffff000000000000000000000000166bffffffffffffffffffffffff96871617905592861682529082902054825160608101909352603180845261148a949190911692859290919061276490830139611625565b73ffffffffffffffffffffffffffffffffffffffff8381166000818152600260205260409081902080547fffffffffffffffffffffffffffffffffffffffff000000000000000000000000166bffffffffffffffffffffffff95909516949094179093559151908516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90611521908590612533565b60405180910390a373ffffffffffffffffffffffffffffffffffffffff80841660009081526003602052604080822054858416835291205461156892918216911683611680565b505050565b73ffffffffffffffffffffffffffffffffffffffff808316600081815260036020818152604080842080546002845282862054949093528787167fffffffffffffffffffffffff000000000000000000000000000000000000000084168117909155905191909516946bffffffffffffffffffffffff9092169391928592917f3134e8a2e6d97e929a7e54011ea5485d7d196dd5f0ba4d4ef95803e8e3fc257f9190a461161b828483611680565b50505050565b4690565b6000838301826bffffffffffffffffffffffff8087169083161015611677576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610720919061245b565b50949350505050565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156116ca57506000816bffffffffffffffffffffffff16115b156115685773ffffffffffffffffffffffffffffffffffffffff8316156117cd5773ffffffffffffffffffffffffffffffffffffffff831660009081526005602052604081205463ffffffff169081611724576000611794565b73ffffffffffffffffffffffffffffffffffffffff851660009081526004602090815260408083207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff860163ffffffff16845290915290205464010000000090046bffffffffffffffffffffffff165b905060006117bb82856040518060600160405280602981526020016127956029913961129e565b90506117c9868484846118c3565b5050505b73ffffffffffffffffffffffffffffffffffffffff8216156115685773ffffffffffffffffffffffffffffffffffffffff821660009081526005602052604081205463ffffffff169081611822576000611892565b73ffffffffffffffffffffffffffffffffffffffff841660009081526004602090815260408083207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff860163ffffffff16845290915290205464010000000090046bffffffffffffffffffffffff165b905060006118b982856040518060600160405280602881526020016126ba60289139611625565b9050610d82858484845b60006118e74360405180606001604052806035815260200161270860359139611b2d565b905060008463ffffffff1611801561195b575073ffffffffffffffffffffffffffffffffffffffff8516600090815260046020908152604080832063ffffffff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8901811685529252909120548282169116145b156119fa5773ffffffffffffffffffffffffffffffffffffffff851660009081526004602090815260408083207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff880163ffffffff168452909152902080547fffffffffffffffffffffffffffffffff000000000000000000000000ffffffff166401000000006bffffffffffffffffffffffff851602179055611ad6565b60408051808201825263ffffffff80841682526bffffffffffffffffffffffff808616602080850191825273ffffffffffffffffffffffffffffffffffffffff8b166000818152600483528781208c871682528352878120965187549451909516640100000000027fffffffffffffffffffffffffffffffff000000000000000000000000ffffffff9587167fffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000958616179590951694909417909555938252600590935292909220805460018801909316929091169190911790555b8473ffffffffffffffffffffffffffffffffffffffff167fdec2bacdd2f05b59de34da9b523dff8be42e5e38e818c82fdb0bae774387a7248484604051611b1e92919061254f565b60405180910390a25050505050565b6000816401000000008410611296576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610720919061245b565b604080518082019091526000808252602082015290565b803561048a81612627565b803561048a8161263b565b803561048a81612644565b803561048a8161264d565b600060208284031215611bc457600080fd5b6000611bd08484611b86565b949350505050565b60008060408385031215611beb57600080fd5b6000611bf78585611b86565b9250506020611c0885828601611b86565b9150509250929050565b600080600060608486031215611c2757600080fd5b6000611c338686611b86565b9350506020611c4486828701611b86565b9250506040611c5586828701611b91565b9150509250925092565b600080600080600080600060e0888a031215611c7a57600080fd5b6000611c868a8a611b86565b9750506020611c978a828b01611b86565b9650506040611ca88a828b01611b91565b9550506060611cb98a828b01611b91565b9450506080611cca8a828b01611ba7565b93505060a0611cdb8a828b01611b91565b92505060c0611cec8a828b01611b91565b91505092959891949750929550565b60008060408385031215611d0e57600080fd5b6000611d1a8585611b86565b9250506020611c0885828601611b91565b60008060008060008060c08789031215611d4457600080fd5b6000611d508989611b86565b9650506020611d6189828a01611b91565b9550506040611d7289828a01611b91565b9450506060611d8389828a01611ba7565b9350506080611d9489828a01611b91565b92505060a0611da589828a01611b91565b9150509295509295509295565b60008060408385031215611dc557600080fd5b6000611dd18585611b86565b9250506020611c0885828601611b9c565b611deb8161257c565b82525050565b611deb81612587565b611deb8161258c565b611deb611e0f8261258c565b61258c565b6000611e1f8261256a565b611e29818561256e565b9350611e398185602086016125d3565b611e42816125ff565b9093019392505050565b6000611e5960208361256e565b7f436f6d66693a3a7065726d69743a207369676e61747572652065787069726564815260200192915050565b6000611e92601b8361256e565b7f436f6d66693a3a7065726d69743a20756e617574686f72697a65640000000000815260200192915050565b6000611ecb600283612577565b7f1901000000000000000000000000000000000000000000000000000000000000815260020192915050565b6000611f0460208361256e565b7f436f6d66693a3a7065726d69743a20696e76616c6964207369676e6174757265815260200192915050565b6000611f3d60288361256e565b7f436f6d66693a3a6765745072696f72566f7465733a206e6f742079657420646581527f7465726d696e6564000000000000000000000000000000000000000000000000602082015260400192915050565b6000611f9c605283612577565b7f5065726d69742861646472657373206f776e65722c616464726573732073706581527f6e6465722c75696e743235362076616c75652c75696e74323536206e6f6e636560208201527f2c75696e7432353620646561646c696e65290000000000000000000000000000604082015260520192915050565b6000612021604383612577565b7f454950373132446f6d61696e28737472696e67206e616d652c75696e7432353681527f20636861696e49642c6164647265737320766572696679696e67436f6e74726160208201527f6374290000000000000000000000000000000000000000000000000000000000604082015260430192915050565b60006120a6603b8361256e565b7f436f6d66693a3a5f7472616e73666572546f6b656e733a2063616e6e6f74207481527f72616e7366657220746f20746865207a65726f20616464726573730000000000602082015260400192915050565b600061210560278361256e565b7f436f6d66693a3a64656c656761746542795369673a207369676e61747572652081527f6578706972656400000000000000000000000000000000000000000000000000602082015260400192915050565b6000612164603d8361256e565b7f436f6d66693a3a5f7472616e73666572546f6b656e733a2063616e6e6f74207481527f72616e736665722066726f6d20746865207a65726f2061646472657373000000602082015260400192915050565b60006121c360238361256e565b7f436f6d66693a3a64656c656761746542795369673a20696e76616c6964206e6f81527f6e63650000000000000000000000000000000000000000000000000000000000602082015260400192915050565b600061222260278361256e565b7f436f6d66693a3a64656c656761746542795369673a20696e76616c696420736981527f676e617475726500000000000000000000000000000000000000000000000000602082015260400192915050565b6000612281603a83612577565b7f44656c65676174696f6e28616464726573732064656c6567617465652c75696e81527f74323536206e6f6e63652c75696e7432353620657870697279290000000000006020820152603a0192915050565b611deb816125a8565b611deb816125b1565b611deb816125c8565b611deb816125b7565b600061230282611ebe565b915061230e8285611e03565b60208201915061231e8284611e03565b5060200192915050565b600061048a82611f8f565b600061048a82612014565b600061048a82612274565b6020810161048a8284611de2565b6020810161048a8284611df1565b6020810161048a8284611dfa565b60c081016123818289611dfa565b61238e6020830188611de2565b61239b6040830187611de2565b6123a86060830186611dfa565b6123b56080830185611dfa565b6123c260a0830184611dfa565b979650505050505050565b608081016123db8287611dfa565b6123e86020830186611de2565b6123f56040830185611dfa565b6124026060830184611dfa565b95945050505050565b608081016124198287611dfa565b6124266020830186611dfa565b6124336040830185611dfa565b6124026060830184611de2565b6080810161244e8287611dfa565b6123e860208301866122dc565b6020808252810161064a8184611e14565b6020808252810161048a81611e4c565b6020808252810161048a81611e85565b6020808252810161048a81611ef7565b6020808252810161048a81611f30565b6020808252810161048a81612099565b6020808252810161048a816120f8565b6020808252810161048a81612157565b6020808252810161048a816121b6565b6020808252810161048a81612215565b6020810161048a82846122d3565b6040810161251882856122d3565b61064a60208301846122ee565b6020810161048a82846122dc565b6020810161048a82846122e5565b6020810161048a82846122ee565b6040810161255d82856122e5565b61064a60208301846122e5565b5190565b90815260200190565b919050565b600061048a8261258f565b151590565b90565b73ffffffffffffffffffffffffffffffffffffffff1690565b63ffffffff1690565b60ff1690565b6bffffffffffffffffffffffff1690565b600061048a826125b7565b60005b838110156125ee5781810151838201526020016125d6565b8381111561161b5750506000910152565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01690565b6126308161257c565b811461069457600080fd5b6126308161258c565b612630816125a8565b612630816125b156fe436f6d66693a3a7472616e7366657246726f6d3a207472616e7366657220616d6f756e742065786365656473207370656e64657220616c6c6f77616e6365436f6d66693a3a7065726d69743a20616d6f756e7420657863656564732039362062697473436f6d66693a3a5f6d6f7665566f7465733a20766f746520616d6f756e74206f766572666c6f7773436f6d66693a3a617070726f76653a20616d6f756e7420657863656564732039362062697473436f6d66693a3a5f7772697465436865636b706f696e743a20626c6f636b206e756d62657220657863656564732033322062697473436f6d66693a3a7472616e736665723a20616d6f756e7420657863656564732039362062697473436f6d66693a3a5f7472616e73666572546f6b656e733a207472616e7366657220616d6f756e74206f766572666c6f7773436f6d66693a3a5f6d6f7665566f7465733a20766f746520616d6f756e7420756e646572666c6f7773436f6d66693a3a5f7472616e73666572546f6b656e733a207472616e7366657220616d6f756e7420657863656564732062616c616e6365a365627a7a7231582010a2626788bdd54dd95ef89f52dc24783a50e4ee751dc9c4096a1880af2f38d06c6578706572696d656e74616cf564736f6c63430005110040

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

0000000000000000000000000fb21490a878aa2af08117c96f897095797bd91c

-----Decoded View---------------
Arg [0] : account (address): 0x0FB21490A878AA2Af08117C96F897095797bD91C

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


Deployed Bytecode Sourcemap

63:14636:0:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;63:14636:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;135:40;;;:::i;:::-;;;;;;;;;;;;;;;;3901:420;;;;;;;;;:::i;:::-;;;;;;;;437:39;;;:::i;:::-;;;;;;;;1362:122;;;:::i;6993:674::-;;;;;;;;;:::i;1785:137::-;;;:::i;338:35::-;;;:::i;:::-;;;;;;;;812:45;;;;;;;;;:::i;:::-;;;;;;;;7815:102;;;;;;;;;:::i;:::-;;1240:49;;;;;;;;;:::i;:::-;;;;;;;;6072:108;;;;;;;;;:::i;9997:1219::-;;;;;;;;;:::i;:::-;;;;;;;;2003:39;;;;;;;;;:::i;236:::-;;;:::i;6444:239::-;;;;;;;;;:::i;9344:222::-;;;;;;;;;:::i;8351:792::-;;;;;;;;;:::i;4811:1058::-;;;;;;;;;:::i;3287:136::-;;;;;;;;;:::i;1578:117::-;;;:::i;1101:70::-;;;;;;;;;:::i;:::-;;;;;;;;;135:40;;;;;;;;;;;;;;;;;;;:::o;3901:420::-;3969:4;3986:13;4032:2;4014:9;:21;4010:174;;;-1:-1:-1;4068:2:0;4010:174;;;4113:59;4120:9;4113:59;;;;;;;;;;;;;;;;;:6;:59::i;:::-;4104:68;;4010:174;4207:10;4196:22;;;;:10;:22;;;;;;;;;:31;;;;;;;;;;;:40;;;;;;;;;;4254:37;;4196:31;;4207:10;4254:37;;;;4196:40;;4254:37;;;;;;;;;;4309:4;4302:11;;;3901:420;;;;;:::o;437:39::-;;;;:::o;1362:122::-;1404:80;;;;;;;;;;;;;;1362:122;:::o;6993:674::-;7157:15;;;7075:4;7157:15;;;:10;:15;;;;;;;;7110:10;7157:24;;;;;;;;;;7208:59;;;;;;;;;;;;7110:10;;7157:24;;;;;7075:4;;7208:59;;7215:9;;7208:59;;;;;;;:6;:59::i;:::-;7192:75;;7295:3;7284:14;;:7;:14;;;;:48;;;;-1:-1:-1;7302:30:0;;;;;;7284:48;7280:312;;;7349:19;7371:97;7377:16;7395:6;7371:97;;;;;;;;;;;;;;;;;:5;:97::i;:::-;7483:15;;;;;;;;:10;:15;;;;;;;;:24;;;;;;;;;;;;;;:39;;;;;;;;;;7544:36;7483:39;;-1:-1:-1;7483:24:0;;7544:36;;;;7483:39;;7544:36;;;;;;;;;;7280:312;;7604:33;7620:3;7625;7630:6;7604:15;:33::i;:::-;7655:4;7648:11;;;;;6993:674;;;;;;:::o;1785:137::-;1827:95;;;;;;338:35;371:2;338:35;:::o;812:45::-;;;;;;;;;;;;;;;:::o;7815:102::-;7877:32;7887:10;7899:9;7877;:32::i;:::-;7815:102;:::o;1240:49::-;;;;;;;;;;;;;;;:::o;6072:108::-;6155:17;;6131:4;6155:17;;;:8;:17;;;;;;;;;6072:108::o;9997:1219::-;10076:6;10117:12;10103:11;:26;10095:79;;;;;;;;;;;;;;;;;;;;;;10209:23;;;10187:19;10209:23;;;:14;:23;;;;;;;;10247:17;10243:58;;10288:1;10281:8;;;;;10243:58;10361:20;;;;;;;:11;:20;;;;;;;;:38;10382:16;;;10361:38;;;;;;;;;:48;;:63;-1:-1:-1;10357:147:0;;10448:20;;;;;;;:11;:20;;;;;;;;10469:16;;;;;10448:38;;;;;;;;:44;;;;;;;-1:-1:-1;10441:51:0;;10357:147;10565:20;;;;;;;:11;:20;;;;;;;;:23;;;;;;;;:33;:23;:33;:47;-1:-1:-1;10561:88:0;;;10636:1;10629:8;;;;;10561:88;10661:12;10703:16;;;10730:428;10745:5;10737:13;;:5;:13;;;10730:428;;;10809:1;10792:13;;;10791:19;;;10783:27;;10852:20;;:::i;:::-;-1:-1:-1;10875:20:0;;;;;;;:11;:20;;;;;;;;:28;;;;;;;;;;;;;10852:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10922:27;;10918:229;;;10977:8;;;;-1:-1:-1;10970:15:0;;-1:-1:-1;;;;10970:15:0;10918:229;11011:12;;:26;;;-1:-1:-1;11007:140:0;;;11066:6;11058:14;;11007:140;;;11130:1;11121:6;:10;11113:18;;11007:140;10730:428;;;;;-1:-1:-1;11175:20:0;;;;;;;:11;:20;;;;;;;;:27;;;;;;;;;;:33;;;;;;;;-1:-1:-1;;9997:1219:0;;;;:::o;2003:39::-;;;;;;;;;;;;;:::o;236:::-;;;;;;;;;;;;;;;;;;;:::o;6444:239::-;6509:4;6526:13;6542:60;6549:9;6542:60;;;;;;;;;;;;;;;;;:6;:60::i;:::-;6526:76;;6613:40;6629:10;6641:3;6646:6;6613:15;:40::i;:::-;-1:-1:-1;6671:4:0;;6444:239;-1:-1:-1;;;6444:239:0:o;9344:222::-;9450:23;;;9409:6;9450:23;;;:14;:23;;;;;;;;9491:16;:67;;9557:1;9491:67;;;9510:20;;;;;;;:11;:20;;;;;;;;9531:16;;;9510:38;;;;;;;;;:44;;;;;;9484:74;9344:222;-1:-1:-1;;;9344:222:0:o;8351:792::-;8467:23;1404:80;;;;;;;;;;;;;;;;8547:4;;;;;;;;;;;;;;;;;;8531:22;8555:12;:10;:12::i;:::-;8577:4;8503:80;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;8503:80:0;;;8493:91;;;;;;8467:117;;8595:18;1624:71;;;;;;;;;;;;;;;8626:57;;8658:9;;8669:5;;8676:6;;8626:57;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;8626:57:0;;;8616:68;;;;;;8595:89;;8695:14;8751:15;8768:10;8722:57;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;8722:57:0;;;8712:68;;;;;;8695:85;;8791:17;8811:26;8821:6;8829:1;8832;8835;8811:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;;8811:26:0;;;;;;-1:-1:-1;;8856:23:0;;;8848:75;;;;;;;;;;;;;;8951:17;;;;;;;:6;:17;;;;;:19;;;;;;;;8942:28;;8934:76;;;;;;;;;;;;;;9036:6;9029:3;:13;;9021:65;;;;;;;;;;;;;;9104:31;9114:9;9125;9104;:31::i;:::-;9097:38;;;;8351:792;;;;;;;:::o;4811:1058::-;4941:13;4987:2;4969:9;:21;4965:173;;;-1:-1:-1;5023:2:0;4965:173;;;5068:58;5075:9;5068:58;;;;;;;;;;;;;;;;;:6;:58::i;:::-;5059:67;;4965:173;5150:23;1404:80;;;;;;;;;;;;;;;;5230:4;;;;;;;;;;;;;;;;;;5214:22;5238:12;:10;:12::i;:::-;5260:4;5186:80;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;5186:80:0;;;5176:91;;;;;;5150:117;;5278:18;1827:95;;;;;;;;;;;;;;;;5364:13;;;;;;;:6;:13;;;;;;;:15;;;;;;;;5309:81;;1827:95;;5337:5;;5344:7;;5353:9;;5364:15;;5381:8;;5309:81;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;5309:81:0;;;5299:92;;;;;;5278:113;;5402:14;5458:15;5475:10;5429:57;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;5429:57:0;;;5419:68;;;;;;5402:85;;5498:17;5518:26;5528:6;5536:1;5539;5542;5518:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;;5518:26:0;;;;;;-1:-1:-1;;5563:23:0;;;5555:68;;;;;;;;;;;;;;5655:5;5642:18;;:9;:18;;;5634:58;;;;;;;;;;;;;;5718:8;5711:3;:15;;5703:60;;;;;;;;;;;;;;5805:6;5776:10;:17;5787:5;5776:17;;;;;;;;;;;;;;;:26;5794:7;5776:26;;;;;;;;;;;;;;;;:35;;;;;;;;;;;;;;;;;;5845:7;5829:32;;5838:5;5829:32;;;5854:6;5829:32;;;;;;;;;;;;;;;4811:1058;;;;;;;;;;;;:::o;3287:136::-;3387:19;;;;3363:4;3387:19;;;:10;:19;;;;;;;;:28;;;;;;;;;;;;;;;3287:136::o;1578:117::-;1624:71;;;;;;1101:70;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;14005:161::-;14080:6;14118:12;14111:5;14107:9;;14099:32;;;;;;;;;;;;;;;-1:-1:-1;14156:1:0;;14005:161;-1:-1:-1;;14005:161:0:o;14370:165::-;14456:6;14488:1;14483:6;;:1;:6;;;;14491:12;14475:29;;;;;;;;;;;;;;;;-1:-1:-1;;;14522:5:0;;;14370:165::o;11607:618::-;11701:17;;;11693:91;;;;;;;;;;;;;;11803:17;;;11795:89;;;;;;;;;;;;;;11919:13;;;;;;;:8;:13;;;;;;;;;;11913:87;;;;;;;;;;;;;;11919:13;;;;;11934:6;;11913:87;;;;;;;:5;:87::i;:::-;11897:13;;;;;;;;:8;:13;;;;;;;;:103;;;;;;;;;;;12033:13;;;;;;;;;;12027:81;;;;;;;;;;;;;;12033:13;;;;;12048:6;;12027:81;;;;;;;;:5;:81::i;:::-;12011:13;;;;;;;;:8;:13;;;;;;;:97;;;;;;;;;;;;;;;;12124:26;;;;;;;;;;12143:6;;12124:26;;;;;;;;;;12178:14;;;;;;;;:9;:14;;;;;;;12194;;;;;;;;12163:54;;12178:14;;;;12194;12210:6;12163:14;:54::i;:::-;11607:618;;;:::o;11224:375::-;11327:20;;;;11301:23;11327:20;;;:9;:20;;;;;;;;;;11384:8;:19;;;;;;11414:20;;;;:32;;;;;;;;;;;11464:54;;11327:20;;;;;11384:19;;;;;11414:32;;11327:20;;;11464:54;;11301:23;11464:54;11531:60;11546:15;11563:9;11574:16;11531:14;:60::i;:::-;11224:375;;;;:::o;14543:153::-;14653:9;14543:153;:::o;14174:188::-;14260:6;14290:5;;;14322:12;14314:6;;;;;;;;;14306:29;;;;;;;;;;;;;;;-1:-1:-1;14353:1:0;14174:188;-1:-1:-1;;;;14174:188:0:o;12233:941::-;12338:6;12328:16;;:6;:16;;;;:30;;;;;12357:1;12348:6;:10;;;12328:30;12324:843;;;12379:20;;;;12375:383;;12439:22;;;12420:16;12439:22;;;:14;:22;;;;;;;;;12499:13;:60;;12558:1;12499:60;;;12515:19;;;;;;;:11;:19;;;;;;;;12535:13;;;12515:34;;;;;;;;;:40;;;;;;12499:60;12480:79;;12578:16;12597:69;12603:9;12614:6;12597:69;;;;;;;;;;;;;;;;;:5;:69::i;:::-;12578:88;;12685:57;12702:6;12710:9;12721;12732;12685:16;:57::i;:::-;12375:383;;;;12778:20;;;;12774:382;;12838:22;;;12819:16;12838:22;;;:14;:22;;;;;;;;;12898:13;:60;;12957:1;12898:60;;;12914:19;;;;;;;:11;:19;;;;;;;;12934:13;;;12914:34;;;;;;;;;:40;;;;;;12898:60;12879:79;;12977:16;12996:68;13002:9;13013:6;12996:68;;;;;;;;;;;;;;;;;:5;:68::i;:::-;12977:87;;13083:57;13100:6;13108:9;13119;13130;13182:646;13302:18;13323:77;13330:12;13323:77;;;;;;;;;;;;;;;;;:6;:77::i;:::-;13302:98;;13432:1;13417:12;:16;;;:85;;;;-1:-1:-1;13437:22:0;;;;;;;:11;:22;;;;;;;;:65;13460:16;;;13437:40;;;;;;;;;:50;:65;;;:50;;:65;13417:85;13413:339;;;13519:22;;;;;;;:11;:22;;;;;;;;13542:16;;;13519:40;;;;;;;;;:57;;;;;;;;;;;;13413:339;;;13648:33;;;;;;;;;;;;;;;;;;;;;;;;;13609:22;;;-1:-1:-1;13609:22:0;;;:11;:22;;;;;:36;;;;;;;;;;:72;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13696:25;;;:14;:25;;;;;;;:44;;13609:72;13724:16;;13696:44;;;;;;;;;;;;;13413:339;13790:9;13769:51;;;13801:8;13811;13769:51;;;;;;;;;;;;;;;;13182:646;;;;;:::o;13836:161::-;13911:6;13949:12;13942:5;13938:9;;13930:32;;;;;;;;;;;;;;63:14636;;;;;;;;;;-1:-1:-1;63:14636:0;;;;;;;;:::o;5:130:-1:-;72:20;;97:33;72:20;97:33;;142:130;209:20;;234:33;209:20;234:33;;416:128;482:20;;507:32;482:20;507:32;;551:126;616:20;;641:31;616:20;641:31;;684:241;;788:2;776:9;767:7;763:23;759:32;756:2;;;804:1;801;794:12;756:2;839:1;856:53;901:7;881:9;856:53;;;846:63;750:175;-1:-1;;;;750:175;932:366;;;1053:2;1041:9;1032:7;1028:23;1024:32;1021:2;;;1069:1;1066;1059:12;1021:2;1104:1;1121:53;1166:7;1146:9;1121:53;;;1111:63;;1083:97;1211:2;1229:53;1274:7;1265:6;1254:9;1250:22;1229:53;;;1219:63;;1190:98;1015:283;;;;;;1305:491;;;;1443:2;1431:9;1422:7;1418:23;1414:32;1411:2;;;1459:1;1456;1449:12;1411:2;1494:1;1511:53;1556:7;1536:9;1511:53;;;1501:63;;1473:97;1601:2;1619:53;1664:7;1655:6;1644:9;1640:22;1619:53;;;1609:63;;1580:98;1709:2;1727:53;1772:7;1763:6;1752:9;1748:22;1727:53;;;1717:63;;1688:98;1405:391;;;;;;1803:991;;;;;;;;2007:3;1995:9;1986:7;1982:23;1978:33;1975:2;;;2024:1;2021;2014:12;1975:2;2059:1;2076:53;2121:7;2101:9;2076:53;;;2066:63;;2038:97;2166:2;2184:53;2229:7;2220:6;2209:9;2205:22;2184:53;;;2174:63;;2145:98;2274:2;2292:53;2337:7;2328:6;2317:9;2313:22;2292:53;;;2282:63;;2253:98;2382:2;2400:53;2445:7;2436:6;2425:9;2421:22;2400:53;;;2390:63;;2361:98;2490:3;2509:51;2552:7;2543:6;2532:9;2528:22;2509:51;;;2499:61;;2469:97;2597:3;2616:53;2661:7;2652:6;2641:9;2637:22;2616:53;;;2606:63;;2576:99;2706:3;2725:53;2770:7;2761:6;2750:9;2746:22;2725:53;;;2715:63;;2685:99;1969:825;;;;;;;;;;;2801:366;;;2922:2;2910:9;2901:7;2897:23;2893:32;2890:2;;;2938:1;2935;2928:12;2890:2;2973:1;2990:53;3035:7;3015:9;2990:53;;;2980:63;;2952:97;3080:2;3098:53;3143:7;3134:6;3123:9;3119:22;3098:53;;3174:865;;;;;;;3361:3;3349:9;3340:7;3336:23;3332:33;3329:2;;;3378:1;3375;3368:12;3329:2;3413:1;3430:53;3475:7;3455:9;3430:53;;;3420:63;;3392:97;3520:2;3538:53;3583:7;3574:6;3563:9;3559:22;3538:53;;;3528:63;;3499:98;3628:2;3646:53;3691:7;3682:6;3671:9;3667:22;3646:53;;;3636:63;;3607:98;3736:2;3754:51;3797:7;3788:6;3777:9;3773:22;3754:51;;;3744:61;;3715:96;3842:3;3861:53;3906:7;3897:6;3886:9;3882:22;3861:53;;;3851:63;;3821:99;3951:3;3970:53;4015:7;4006:6;3995:9;3991:22;3970:53;;;3960:63;;3930:99;3323:716;;;;;;;;;4046:364;;;4166:2;4154:9;4145:7;4141:23;4137:32;4134:2;;;4182:1;4179;4172:12;4134:2;4217:1;4234:53;4279:7;4259:9;4234:53;;;4224:63;;4196:97;4324:2;4342:52;4386:7;4377:6;4366:9;4362:22;4342:52;;4417:113;4500:24;4518:5;4500:24;;;4495:3;4488:37;4482:48;;;4537:104;4614:21;4629:5;4614:21;;4648:113;4731:24;4749:5;4731:24;;4768:152;4869:45;4889:24;4907:5;4889:24;;;4869:45;;4927:347;;5039:39;5072:5;5039:39;;;5090:71;5154:6;5149:3;5090:71;;;5083:78;;5166:52;5211:6;5206:3;5199:4;5192:5;5188:16;5166:52;;;5239:29;5261:6;5239:29;;;5230:39;;;;5019:255;-1:-1;;;5019:255;5628:332;;5788:67;5852:2;5847:3;5788:67;;;5888:34;5868:55;;5951:2;5942:12;;5774:186;-1:-1;;5774:186;5969:327;;6129:67;6193:2;6188:3;6129:67;;;6229:29;6209:50;;6287:2;6278:12;;6115:181;-1:-1;;6115:181;6305:398;;6483:84;6565:1;6560:3;6483:84;;;6600:66;6580:87;;6695:1;6686:11;;6469:234;-1:-1;;6469:234;6712:332;;6872:67;6936:2;6931:3;6872:67;;;6972:34;6952:55;;7035:2;7026:12;;6858:186;-1:-1;;6858:186;7053:377;;7213:67;7277:2;7272:3;7213:67;;;7313:34;7293:55;;7382:10;7377:2;7368:12;;7361:32;7421:2;7412:12;;7199:231;-1:-1;;7199:231;7439:492;;7617:85;7699:2;7694:3;7617:85;;;7735:34;7715:55;;7804:34;7799:2;7790:12;;7783:56;7873:20;7868:2;7859:12;;7852:42;7922:2;7913:12;;7603:328;-1:-1;;7603:328;7940:477;;8118:85;8200:2;8195:3;8118:85;;;8236:34;8216:55;;8305:34;8300:2;8291:12;;8284:56;8374:5;8369:2;8360:12;;8353:27;8408:2;8399:12;;8104:313;-1:-1;;8104:313;8426:396;;8586:67;8650:2;8645:3;8586:67;;;8686:34;8666:55;;8755:29;8750:2;8741:12;;8734:51;8813:2;8804:12;;8572:250;-1:-1;;8572:250;8831:376;;8991:67;9055:2;9050:3;8991:67;;;9091:34;9071:55;;9160:9;9155:2;9146:12;;9139:31;9198:2;9189:12;;8977:230;-1:-1;;8977:230;9216:398;;9376:67;9440:2;9435:3;9376:67;;;9476:34;9456:55;;9545:31;9540:2;9531:12;;9524:53;9605:2;9596:12;;9362:252;-1:-1;;9362:252;9623:372;;9783:67;9847:2;9842:3;9783:67;;;9883:34;9863:55;;9952:5;9947:2;9938:12;;9931:27;9986:2;9977:12;;9769:226;-1:-1;;9769:226;10004:376;;10164:67;10228:2;10223:3;10164:67;;;10264:34;10244:55;;10333:9;10328:2;10319:12;;10312:31;10371:2;10362:12;;10150:230;-1:-1;;10150:230;10389:431;;10567:85;10649:2;10644:3;10567:85;;;10685:34;10665:55;;10754:28;10749:2;10740:12;;10733:50;10811:2;10802:12;;10553:267;-1:-1;;10553:267;10948:110;11029:23;11046:5;11029:23;;11065:107;11144:22;11160:5;11144:22;;11179:124;11261:36;11291:5;11261:36;;11310:110;11391:23;11408:5;11391:23;;11427:650;;11682:148;11826:3;11682:148;;;11675:155;;11841:75;11912:3;11903:6;11841:75;;;11938:2;11933:3;11929:12;11922:19;;11952:75;12023:3;12014:6;11952:75;;;-1:-1;12049:2;12040:12;;11663:414;-1:-1;;11663:414;12084:372;;12283:148;12427:3;12283:148;;12463:372;;12662:148;12806:3;12662:148;;12842:372;;13041:148;13185:3;13041:148;;13221:213;13339:2;13324:18;;13353:71;13328:9;13397:6;13353:71;;13441:201;13553:2;13538:18;;13567:65;13542:9;13605:6;13567:65;;13649:213;13767:2;13752:18;;13781:71;13756:9;13825:6;13781:71;;13869:771;14127:3;14112:19;;14142:71;14116:9;14186:6;14142:71;;;14224:72;14292:2;14281:9;14277:18;14268:6;14224:72;;;14307;14375:2;14364:9;14360:18;14351:6;14307:72;;;14390;14458:2;14447:9;14443:18;14434:6;14390:72;;;14473:73;14541:3;14530:9;14526:19;14517:6;14473:73;;;14557;14625:3;14614:9;14610:19;14601:6;14557:73;;;14098:542;;;;;;;;;;14647:547;14849:3;14834:19;;14864:71;14838:9;14908:6;14864:71;;;14946:72;15014:2;15003:9;14999:18;14990:6;14946:72;;;15029;15097:2;15086:9;15082:18;15073:6;15029:72;;;15112;15180:2;15169:9;15165:18;15156:6;15112:72;;;14820:374;;;;;;;;15201:547;15403:3;15388:19;;15418:71;15392:9;15462:6;15418:71;;;15500:72;15568:2;15557:9;15553:18;15544:6;15500:72;;;15583;15651:2;15640:9;15636:18;15627:6;15583:72;;;15666;15734:2;15723:9;15719:18;15710:6;15666:72;;15755:539;15953:3;15938:19;;15968:71;15942:9;16012:6;15968:71;;;16050:68;16114:2;16103:9;16099:18;16090:6;16050:68;;16301:293;16435:2;16449:47;;;16420:18;;16510:74;16420:18;16570:6;16510:74;;16909:407;17100:2;17114:47;;;17085:18;;17175:131;17085:18;17175:131;;17323:407;17514:2;17528:47;;;17499:18;;17589:131;17499:18;17589:131;;17737:407;17928:2;17942:47;;;17913:18;;18003:131;17913:18;18003:131;;18151:407;18342:2;18356:47;;;18327:18;;18417:131;18327:18;18417:131;;18565:407;18756:2;18770:47;;;18741:18;;18831:131;18741:18;18831:131;;18979:407;19170:2;19184:47;;;19155:18;;19245:131;19155:18;19245:131;;19393:407;19584:2;19598:47;;;19569:18;;19659:131;19569:18;19659:131;;19807:407;19998:2;20012:47;;;19983:18;;20073:131;19983:18;20073:131;;20221:407;20412:2;20426:47;;;20397:18;;20487:131;20397:18;20487:131;;20855:209;20971:2;20956:18;;20985:69;20960:9;21027:6;20985:69;;21071:316;21213:2;21198:18;;21227:69;21202:9;21269:6;21227:69;;;21307:70;21373:2;21362:9;21358:18;21349:6;21307:70;;21394:205;21508:2;21493:18;;21522:67;21497:9;21562:6;21522:67;;21606:211;21723:2;21708:18;;21737:70;21712:9;21780:6;21737:70;;21824:209;21940:2;21925:18;;21954:69;21929:9;21996:6;21954:69;;22040:320;22184:2;22169:18;;22198:70;22173:9;22241:6;22198:70;;;22279:71;22346:2;22335:9;22331:18;22322:6;22279:71;;22367:118;22451:12;;22422:63;22622:163;22725:19;;;22774:4;22765:14;;22718:67;22794:145;22930:3;22908:31;-1:-1;22908:31;22947:91;;23009:24;23027:5;23009:24;;23045:85;23111:13;23104:21;;23087:43;23137:72;23199:5;23182:27;23216:121;23289:42;23278:54;;23261:76;23423:88;23495:10;23484:22;;23467:44;23518:81;23589:4;23578:16;;23561:38;23606:104;23678:26;23667:38;;23650:60;23717:106;;23795:23;23812:5;23795:23;;23831:268;23896:1;23903:101;23917:6;23914:1;23911:13;23903:101;;;23984:11;;;23978:18;23965:11;;;23958:39;23939:2;23932:10;23903:101;;;24019:6;24016:1;24013:13;24010:2;;;-1:-1;;24084:1;24066:16;;24059:27;23880:219;24188:97;24276:2;24256:14;24272:7;24252:28;;24236:49;24293:117;24362:24;24380:5;24362:24;;;24355:5;24352:35;24342:2;;24401:1;24398;24391:12;24417:117;24486:24;24504:5;24486:24;;24665:115;24733:23;24750:5;24733:23;;24787:113;24854:22;24870:5;24854:22;

Swarm Source

bzzr://10a2626788bdd54dd95ef89f52dc24783a50e4ee751dc9c4096a1880af2f38d0
Loading...
Loading
Loading...
Loading
[ Download: CSV Export  ]
[ Download: CSV Export  ]

A token is a representation of an on-chain or off-chain asset. The token page shows information such as price, total supply, holders, transfers and social links. Learn more about this page in our Knowledge Base.