Token SIREN

 

Overview [ERC-20]

Price
$0.10 @ 0.000052 Eth (+10.54%)
Fully Diluted Market Cap
Max Total Supply:
100,000,000 SI

Holders:
2,039 ( -0.049%)

Transfers:
-

 
Loading
[ Download CSV Export  ] 
Loading
[ Download CSV Export  ] 
Loading

OVERVIEW

SIREN is a distributed protocol for creating, trading, and redeeming fully-collateralized options contracts for any ERC-20 token on Ethereum.

Market

Volume (24H):$23,631.00
Market Capitalization:$2,176,868.00
Circulating Supply:22,446,120.00 SI
Market Data Source: Coinmarketcap

# Exchange Pair Price  24H Volume % Volume
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
SirenToken

Compiler Version
v0.6.12+commit.27d51765

Optimization Enabled:
No with 200 runs

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

/**
 *Submitted for verification at Etherscan.io on 2020-11-14
*/

// From the dark depths below, rise up all Merfolks and sound your Sirens...

// File: contracts/governance/SirenToken.sol

pragma solidity 0.6.12;

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

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

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

    /// @notice Total number of tokens in circulation
    uint256 public constant totalSupply = 100_000_000e18; // 100 million SRN

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

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

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

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

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

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

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

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

    /// @notice A record of states for signing / validating signatures
    mapping(address => uint256) 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,
        uint256 previousBalance,
        uint256 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 SRN 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 (uint256)
    {
        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, uint256 rawAmount)
        external
        returns (bool)
    {
        uint96 amount;
        if (rawAmount == uint256(-1)) {
            amount = uint96(-1);
        } else {
            amount = safe96(
                rawAmount,
                "Siren::approve: amount exceeds 96 bits"
            );
        }

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

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

    /**
     * @notice Get the number of tokens held by the `account`
     * @param account The address of the account to get the balance of
     * @return The number of tokens held
     */
    function balanceOf(address account) external view returns (uint256) {
        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, uint256 rawAmount) external returns (bool) {
        uint96 amount = safe96(
            rawAmount,
            "Siren::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,
        uint256 rawAmount
    ) external returns (bool) {
        address spender = msg.sender;
        uint96 spenderAllowance = allowances[src][spender];
        uint96 amount = safe96(
            rawAmount,
            "Siren::approve: amount exceeds 96 bits"
        );

        if (spender != src && spenderAllowance != uint96(-1)) {
            uint96 newAllowance = sub96(
                spenderAllowance,
                amount,
                "Siren::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));

        // EIP-2 still allows signature malleability for ecrecover(). Remove this possibility and make the signature
        // unique. Appendix F in the Ethereum Yellow paper (https://ethereum.github.io/yellowpaper/paper.pdf), defines
        // the valid range for s in (281): 0 < s < secp256k1n ÷ 2 + 1, and for v in (282): v ∈ {27, 28}. Most
        // signatures from current libraries generate a unique signature with an s-value in the lower half order.
        //
        // If your library generates malleable signatures, such as s-values in the upper range, calculate a new s-value
        // with 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEBAAEDCE6AF48A03BBFD25E8CD0364141 - s1 and flip v from 27 to 28 or
        // vice versa. If your library also generates signatures with 0/1 for v instead 27/28, add 27 to v to accept
        // these malleable signatures as well.
        require(uint256(s) <= 0x7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5D576E7357A4501DDFE92F46681B20A0, "ECDSA: invalid signature 's' value");
        require(v == 27 || v == 28, "ECDSA: invalid signature 'v' value");

        address signatory = ecrecover(digest, v, r, s);
        require(
            signatory != address(0),
            "Siren::delegateBySig: invalid signature"
        );
        require(
            nonce == nonces[signatory]++,
            "Siren::delegateBySig: invalid nonce"
        );
        require(now <= expiry, "Siren::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, uint256 blockNumber)
        public
        view
        returns (uint96)
    {
        require(
            blockNumber < block.number,
            "Siren::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),
            "Siren::_transferTokens: cannot transfer from the zero address"
        );
        require(
            dst != address(0),
            "Siren::_transferTokens: cannot transfer to the zero address"
        );

        balances[src] = sub96(
            balances[src],
            amount,
            "Siren::_transferTokens: transfer amount exceeds balance"
        );
        balances[dst] = add96(
            balances[dst],
            amount,
            "Siren::_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,
                    "Siren::_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,
                    "Siren::_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,
            "Siren::_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(uint256 n, string memory errorMessage)
        internal
        pure
        returns (uint32)
    {
        require(n < 2**32, errorMessage);
        return uint32(n);
    }

    function safe96(uint256 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 (uint256) {
        uint256 chainId;
        assembly {
            chainId := chainid()
        }
        return chainId;
    }
}

// File: contracts/governance/Factory.sol

pragma solidity 0.6.12;


contract Factory {
  event TokenCreated(address token);
  bool run  = false;

  fallback() external {
      require(run  == false);
      run  = true;
      
    SirenToken token = new SirenToken(address(0x28929B64D1E263B756Ce3CE87522Fc38778e231A));
    emit TokenCreated(address(token));
  }
}

Contract Security Audit

Contract ABI

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

608060405234801561001057600080fd5b50604051612c59380380612c598339818101604052602081101561003357600080fd5b81019080805190602001909291905050506a52b7d2dcc80cd2e4000000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6a52b7d2dcc80cd2e40000006040518082815260200191505060405180910390a350612b1b8061013e6000396000f3fe608060405234801561001057600080fd5b50600436106101215760003560e01c806370a08231116100ad578063b4b5ea5711610071578063b4b5ea5714610605578063c3cda5201461066b578063dd62ed3e146106e4578063e7a324dc1461075c578063f1127ed81461077a57610121565b806370a08231146103fe578063782d6fe1146104565780637ecebe00146104c657806395d89b411461051e578063a9059cbb146105a157610121565b806323b872dd116100f457806323b872dd14610249578063313ce567146102cd578063587cde1e146102ee5780635c19a95c1461035c5780636fcfff45146103a057610121565b806306fdde0314610126578063095ea7b3146101a957806318160ddd1461020d57806320606b701461022b575b600080fd5b61012e6107fd565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561016e578082015181840152602081019050610153565b50505050905090810190601f16801561019b5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6101f5600480360360408110156101bf57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610836565b60405180821515815260200191505060405180910390f35b6102156109d6565b6040518082815260200191505060405180910390f35b6102336109e5565b6040518082815260200191505060405180910390f35b6102b56004803603606081101561025f57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610a09565b60405180821515815260200191505060405180910390f35b6102d5610ca9565b604051808260ff16815260200191505060405180910390f35b6103306004803603602081101561030457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610cae565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b61039e6004803603602081101561037257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610ce1565b005b6103e2600480360360208110156103b657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610cee565b604051808263ffffffff16815260200191505060405180910390f35b6104406004803603602081101561041457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610d11565b6040518082815260200191505060405180910390f35b6104a26004803603604081101561046c57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610d80565b60405180826bffffffffffffffffffffffff16815260200191505060405180910390f35b610508600480360360208110156104dc57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506111a5565b6040518082815260200191505060405180910390f35b6105266111bd565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561056657808201518184015260208101905061054b565b50505050905090810190601f1680156105935780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6105ed600480360360408110156105b757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506111f6565b60405180821515815260200191505060405180910390f35b6106476004803603602081101561061b57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611233565b60405180826bffffffffffffffffffffffff16815260200191505060405180910390f35b6106e2600480360360c081101561068157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919080359060200190929190803560ff1690602001909291908035906020019092919080359060200190929190505050611321565b005b610746600480360360408110156106fa57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611799565b6040518082815260200191505060405180910390f35b610764611845565b6040518082815260200191505060405180910390f35b6107cc6004803603604081101561079057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803563ffffffff169060200190929190505050611869565b604051808363ffffffff168152602001826bffffffffffffffffffffffff1681526020019250505060405180910390f35b6040518060400160405280600581526020017f534952454e00000000000000000000000000000000000000000000000000000081525081565b6000807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff831415610889577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff90506108ae565b6108ab8360405180606001604052806026815260200161296c602691396118c2565b90505b806000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff1602179055508373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405180826bffffffffffffffffffffffff16815260200191505060405180910390a3600191505092915050565b6a52b7d2dcc80cd2e400000081565b7f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a86681565b60008033905060008060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a90046bffffffffffffffffffffffff1690506000610acb8560405180606001604052806026815260200161296c602691396118c2565b90508673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015610b4557507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6bffffffffffffffffffffffff16826bffffffffffffffffffffffff1614155b15610c90576000610b6f83836040518060600160405280603e81526020016128c2603e9139611985565b9050806000808a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff1602179055508373ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405180826bffffffffffffffffffffffff16815260200191505060405180910390a3505b610c9b878783611a5b565b600193505050509392505050565b601281565b60026020528060005260406000206000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610ceb3382611e76565b50565b60046020528060005260406000206000915054906101000a900463ffffffff1681565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a90046bffffffffffffffffffffffff166bffffffffffffffffffffffff169050919050565b6000438210610dda576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526028815260200180612a896028913960400191505060405180910390fd5b6000600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900463ffffffff16905060008163ffffffff161415610e4757600091505061119f565b82600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006001840363ffffffff1663ffffffff16815260200190815260200160002060000160009054906101000a900463ffffffff1663ffffffff1611610f4957600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006001830363ffffffff1663ffffffff16815260200190815260200160002060000160049054906101000a90046bffffffffffffffffffffffff1691505061119f565b82600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008063ffffffff16815260200190815260200160002060000160009054906101000a900463ffffffff1663ffffffff161115610fca57600091505061119f565b6000806001830390505b8163ffffffff168163ffffffff161115611121576000600283830363ffffffff1681610ffc57fe5b04820390506110096127e9565b600360008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008363ffffffff1663ffffffff1681526020019081526020016000206040518060400160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a90046bffffffffffffffffffffffff166bffffffffffffffffffffffff166bffffffffffffffffffffffff1681525050905086816000015163ffffffff1614156110f95780602001519550505050505061119f565b86816000015163ffffffff1610156111135781935061111a565b6001820392505b5050610fd4565b600360008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008363ffffffff1663ffffffff16815260200190815260200160002060000160049054906101000a90046bffffffffffffffffffffffff1693505050505b92915050565b60056020528060005260406000206000915090505481565b6040518060400160405280600281526020017f534900000000000000000000000000000000000000000000000000000000000081525081565b60008061121b83604051806060016040528060278152602001612a3b602791396118c2565b9050611228338583611a5b565b600191505092915050565b600080600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900463ffffffff16905060008163ffffffff161161129d576000611319565b600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006001830363ffffffff1663ffffffff16815260200190815260200160002060000160049054906101000a90046bffffffffffffffffffffffff165b915050919050565b60007f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a8666040518060400160405280600581526020017f534952454e00000000000000000000000000000000000000000000000000000081525080519060200120611389612036565b30604051602001808581526020018481526020018381526020018273ffffffffffffffffffffffffffffffffffffffff16815260200194505050505060405160208183030381529060405280519060200120905060007fe48329057bfd03d55e49b547132e39cffd9c1820ad7b9d4c5307691425d15adf888888604051602001808581526020018473ffffffffffffffffffffffffffffffffffffffff1681526020018381526020018281526020019450505050506040516020818303038152906040528051906020012090506000828260405160200180807f1901000000000000000000000000000000000000000000000000000000000000815250600201838152602001828152602001925050506040516020818303038152906040528051906020012090507f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08460001c111561152d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001806129926022913960400191505060405180910390fd5b601b8660ff1614806115425750601c8660ff16145b611597576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526022815260200180612a196022913960400191505060405180910390fd5b600060018288888860405160008152602001604052604051808581526020018460ff1681526020018381526020018281526020019450505050506020604051602081039080840390855afa1580156115f3573d6000803e3d6000fd5b505050602060405103519050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611685576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526027815260200180612a626027913960400191505060405180910390fd5b600560008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600081548092919060010191905055891461172a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260238152602001806128186023913960400191505060405180910390fd5b87421115611783576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602781526020018061289b6027913960400191505060405180910390fd5b61178d818b611e76565b50505050505050505050565b60008060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a90046bffffffffffffffffffffffff166bffffffffffffffffffffffff16905092915050565b7fe48329057bfd03d55e49b547132e39cffd9c1820ad7b9d4c5307691425d15adf81565b6003602052816000526040600020602052806000526040600020600091509150508060000160009054906101000a900463ffffffff16908060000160049054906101000a90046bffffffffffffffffffffffff16905082565b60006c010000000000000000000000008310829061197b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015611940578082015181840152602081019050611925565b50505050905090810190601f16801561196d5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5082905092915050565b6000836bffffffffffffffffffffffff16836bffffffffffffffffffffffff1611158290611a4e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015611a135780820151818401526020810190506119f8565b50505050905090810190601f168015611a405780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5082840390509392505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611ae1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603d8152602001806129b4603d913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611b67576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603b815260200180612900603b913960400191505060405180910390fd5b611be1600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a90046bffffffffffffffffffffffff168260405180606001604052806037815260200161286460379139611985565b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff160217905550611cc8600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a90046bffffffffffffffffffffffff168260405180606001604052806031815260200161293b60319139612043565b600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405180826bffffffffffffffffffffffff16815260200191505060405180910390a3611e71600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168361211e565b505050565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690506000600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a90046bffffffffffffffffffffffff16905082600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508273ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167f3134e8a2e6d97e929a7e54011ea5485d7d196dd5f0ba4d4ef95803e8e3fc257f60405160405180910390a461203082848361211e565b50505050565b6000804690508091505090565b6000808385019050846bffffffffffffffffffffffff16816bffffffffffffffffffffffff1610158390612112576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b838110156120d75780820151818401526020810190506120bc565b50505050905090810190601f1680156121045780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b50809150509392505050565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561216857506000816bffffffffffffffffffffffff16115b1561241457600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16146122c0576000600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900463ffffffff1690506000808263ffffffff161161220b576000612287565b600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006001840363ffffffff1663ffffffff16815260200190815260200160002060000160049054906101000a90046bffffffffffffffffffffffff165b905060006122ae828560405180606001604052806029815260200161283b60299139611985565b90506122bc86848484612419565b5050505b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614612413576000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900463ffffffff1690506000808263ffffffff161161235e5760006123da565b600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006001840363ffffffff1663ffffffff16815260200190815260200160002060000160049054906101000a90046bffffffffffffffffffffffff165b9050600061240182856040518060600160405280602881526020016129f160289139612043565b905061240f85848484612419565b5050505b5b505050565b600061243d43604051806060016040528060358152602001612ab16035913961272e565b905060008463ffffffff161180156124d257508063ffffffff16600360008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006001870363ffffffff1663ffffffff16815260200190815260200160002060000160009054906101000a900463ffffffff1663ffffffff16145b1561256d5781600360008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006001870363ffffffff1663ffffffff16815260200190815260200160002060000160046101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff1602179055506126b5565b60405180604001604052808263ffffffff168152602001836bffffffffffffffffffffffff16815250600360008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008663ffffffff1663ffffffff16815260200190815260200160002060008201518160000160006101000a81548163ffffffff021916908363ffffffff16021790555060208201518160000160046101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff16021790555090505060018401600460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548163ffffffff021916908363ffffffff1602179055505b8473ffffffffffffffffffffffffffffffffffffffff167fdec2bacdd2f05b59de34da9b523dff8be42e5e38e818c82fdb0bae774387a724848460405180836bffffffffffffffffffffffff168152602001826bffffffffffffffffffffffff1681526020019250505060405180910390a25050505050565b6000640100000000831082906127df576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b838110156127a4578082015181840152602081019050612789565b50505050905090810190601f1680156127d15780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5082905092915050565b6040518060400160405280600063ffffffff16815260200160006bffffffffffffffffffffffff168152509056fe536972656e3a3a64656c656761746542795369673a20696e76616c6964206e6f6e6365536972656e3a3a5f6d6f7665566f7465733a20766f746520616d6f756e7420756e646572666c6f7773536972656e3a3a5f7472616e73666572546f6b656e733a207472616e7366657220616d6f756e7420657863656564732062616c616e6365536972656e3a3a64656c656761746542795369673a207369676e61747572652065787069726564536972656e3a3a7472616e7366657246726f6d3a207472616e7366657220616d6f756e742065786365656473207370656e64657220616c6c6f77616e6365536972656e3a3a5f7472616e73666572546f6b656e733a2063616e6e6f74207472616e7366657220746f20746865207a65726f2061646472657373536972656e3a3a5f7472616e73666572546f6b656e733a207472616e7366657220616d6f756e74206f766572666c6f7773536972656e3a3a617070726f76653a20616d6f756e742065786365656473203936206269747345434453413a20696e76616c6964207369676e6174757265202773272076616c7565536972656e3a3a5f7472616e73666572546f6b656e733a2063616e6e6f74207472616e736665722066726f6d20746865207a65726f2061646472657373536972656e3a3a5f6d6f7665566f7465733a20766f746520616d6f756e74206f766572666c6f777345434453413a20696e76616c6964207369676e6174757265202776272076616c7565536972656e3a3a7472616e736665723a20616d6f756e7420657863656564732039362062697473536972656e3a3a64656c656761746542795369673a20696e76616c6964207369676e6174757265536972656e3a3a6765745072696f72566f7465733a206e6f74207965742064657465726d696e6564536972656e3a3a5f7772697465436865636b706f696e743a20626c6f636b206e756d62657220657863656564732033322062697473a26469706673582212200c1f7790b31a9e00562e01d9829e4c3f4f980d48f72964894d3cd27f2c218d7364736f6c634300060c003300000000000000000000000028929b64d1e263b756ce3ce87522fc38778e231a

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

00000000000000000000000028929b64d1e263b756ce3ce87522fc38778e231a

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

-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 00000000000000000000000028929b64d1e263b756ce3ce87522fc38778e231a


Deployed ByteCode Sourcemap

226:15373:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;303:37;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4009:498;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;599:52;;;:::i;:::-;;;;;;;;;;;;;;;;;;;1522:138;;;:::i;:::-;;;;;;;;;;;;;;;;;;;5674:814;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;500:35;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;976:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;6636:102;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;1401:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;4710:111;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;10006:1291;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;1968:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;401:36;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5085:279;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;9340:235;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;7172:1967;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;3360:171;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;1754:133;;;:::i;:::-;;;;;;;;;;;;;;;;;;;1264:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;303:37;;;;;;;;;;;;;;;;;;;:::o;4009:498::-;4098:4;4120:13;4169:2;4148:9;:24;4144:226;;;4205:2;4189:19;;4144:226;;;4250:108;4275:9;4250:108;;;;;;;;;;;;;;;;;:6;:108::i;:::-;4241:117;;4144:226;4416:6;4382:10;:22;4393:10;4382:22;;;;;;;;;;;;;;;:31;4405:7;4382:31;;;;;;;;;;;;;;;;:40;;;;;;;;;;;;;;;;;;4461:7;4440:37;;4449:10;4440:37;;;4470:6;4440:37;;;;;;;;;;;;;;;;;;;;4495:4;4488:11;;;4009:498;;;;:::o;599:52::-;637:14;599:52;:::o;1522:138::-;1564:96;1522:138;:::o;5674:814::-;5793:4;5810:15;5828:10;5810:28;;5849:23;5875:10;:15;5886:3;5875:15;;;;;;;;;;;;;;;:24;5891:7;5875:24;;;;;;;;;;;;;;;;;;;;;;;;;5849:50;;5910:13;5926:96;5947:9;5926:96;;;;;;;;;;;;;;;;;:6;:96::i;:::-;5910:112;;6050:3;6039:14;;:7;:14;;;;:48;;;;;6084:2;6057:30;;:16;:30;;;;6039:48;6035:378;;;6104:19;6126:163;6150:16;6185:6;6126:163;;;;;;;;;;;;;;;;;:5;:163::i;:::-;6104:185;;6331:12;6304:10;:15;6315:3;6304:15;;;;;;;;;;;;;;;:24;6320:7;6304:24;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;6379:7;6365:36;;6374:3;6365:36;;;6388:12;6365:36;;;;;;;;;;;;;;;;;;;;6035:378;;6425:33;6441:3;6446;6451:6;6425:15;:33::i;:::-;6476:4;6469:11;;;;;5674:814;;;;;:::o;500:35::-;533:2;500:35;:::o;976:44::-;;;;;;;;;;;;;;;;;;;;;;:::o;6636:102::-;6698:32;6708:10;6720:9;6698;:32::i;:::-;6636:102;:::o;1401:48::-;;;;;;;;;;;;;;;;;;;;;;:::o;4710:111::-;4769:7;4796:8;:17;4805:7;4796:17;;;;;;;;;;;;;;;;;;;;;;;;;4789:24;;;;4710:111;;;:::o;10006:1291::-;10115:6;10175:12;10161:11;:26;10139:116;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10268:19;10290:14;:23;10305:7;10290:23;;;;;;;;;;;;;;;;;;;;;;;;;10268:45;;10344:1;10328:12;:17;;;10324:58;;;10369:1;10362:8;;;;;10324:58;10494:11;10442;:20;10454:7;10442:20;;;;;;;;;;;;;;;:38;10478:1;10463:12;:16;10442:38;;;;;;;;;;;;;;;:48;;;;;;;;;;;;:63;;;10438:147;;10529:11;:20;10541:7;10529:20;;;;;;;;;;;;;;;:38;10565:1;10550:12;:16;10529:38;;;;;;;;;;;;;;;:44;;;;;;;;;;;;10522:51;;;;;10438:147;10682:11;10646;:20;10658:7;10646:20;;;;;;;;;;;;;;;:23;10667:1;10646:23;;;;;;;;;;;;;:33;;;;;;;;;;;;:47;;;10642:88;;;10717:1;10710:8;;;;;10642:88;10742:12;10769;10799:1;10784:12;:16;10769:31;;10811:428;10826:5;10818:13;;:5;:13;;;10811:428;;;10848:13;10890:1;10881:5;10873;:13;10872:19;;;;;;;;10864:5;:27;10848:43;;10933:20;;:::i;:::-;10956:11;:20;10968:7;10956:20;;;;;;;;;;;;;;;:28;10977:6;10956:28;;;;;;;;;;;;;;;10933:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11019:11;11003:2;:12;;;:27;;;10999:229;;;11058:2;:8;;;11051:15;;;;;;;;;10999:229;11107:11;11092:2;:12;;;:26;;;11088:140;;;11147:6;11139:14;;11088:140;;;11211:1;11202:6;:10;11194:18;;11088:140;10811:428;;;;;11256:11;:20;11268:7;11256:20;;;;;;;;;;;;;;;:27;11277:5;11256:27;;;;;;;;;;;;;;;:33;;;;;;;;;;;;11249:40;;;;;10006:1291;;;;;:::o;1968:41::-;;;;;;;;;;;;;;;;;:::o;401:36::-;;;;;;;;;;;;;;;;;;;:::o;5085:279::-;5153:4;5170:13;5186:97;5207:9;5186:97;;;;;;;;;;;;;;;;;:6;:97::i;:::-;5170:113;;5294:40;5310:10;5322:3;5327:6;5294:15;:40::i;:::-;5352:4;5345:11;;;5085:279;;;;:::o;9340:235::-;9405:6;9424:19;9446:14;:23;9461:7;9446:23;;;;;;;;;;;;;;;;;;;;;;;;;9424:45;;9515:1;9500:12;:16;;;:67;;9566:1;9500:67;;;9519:11;:20;9531:7;9519:20;;;;;;;;;;;;;;;:38;9555:1;9540:12;:16;9519:38;;;;;;;;;;;;;;;:44;;;;;;;;;;;;9500:67;9480:87;;;9340:235;;;:::o;7172:1967::-;7288:23;1564:96;7368:4;;;;;;;;;;;;;;;;;7352:22;;;;;;7376:12;:10;:12::i;:::-;7398:4;7324:80;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7314:91;;;;;;7288:117;;7416:18;1800:87;7479:9;7490:5;7497:6;7447:57;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7437:68;;;;;;7416:89;;7516:14;7572:15;7589:10;7543:57;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7533:68;;;;;;7516:85;;8519:66;8513:1;8505:10;;:80;;8497:127;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8648:2;8643:1;:7;;;:18;;;;8659:2;8654:1;:7;;;8643:18;8635:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8713:17;8733:26;8743:6;8751:1;8754;8757;8733:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8713:46;;8813:1;8792:23;;:9;:23;;;;8770:112;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8924:6;:17;8931:9;8924:17;;;;;;;;;;;;;;;;:19;;;;;;;;;;;;8915:5;:28;8893:113;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9032:6;9025:3;:13;;9017:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9100:31;9110:9;9121;9100;:31::i;:::-;9093:38;;;;7172:1967;;;;;;:::o;3360:171::-;3463:7;3495:10;:19;3506:7;3495:19;;;;;;;;;;;;;;;:28;3515:7;3495:28;;;;;;;;;;;;;;;;;;;;;;;;;3488:35;;;;3360:171;;;;:::o;1754:133::-;1800:87;1754:133;:::o;1264:68::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;14777:196::-;14882:6;14918:5;14914:1;:9;14925:12;14906:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14963:1;14949:16;;14777:196;;;;:::o;15211:199::-;15331:6;15363:1;15358:6;;:1;:6;;;;15366:12;15350:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15401:1;15397;:5;15390:12;;15211:199;;;;;:::o;11688:826::-;11845:1;11830:17;;:3;:17;;;;11808:128;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11984:1;11969:17;;:3;:17;;;;11947:126;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12102:137;12122:8;:13;12131:3;12122:13;;;;;;;;;;;;;;;;;;;;;;;;;12150:6;12102:137;;;;;;;;;;;;;;;;;:5;:137::i;:::-;12086:8;:13;12095:3;12086:13;;;;;;;;;;;;;;;;:153;;;;;;;;;;;;;;;;;;12266:131;12286:8;:13;12295:3;12286:13;;;;;;;;;;;;;;;;;;;;;;;;;12314:6;12266:131;;;;;;;;;;;;;;;;;:5;:131::i;:::-;12250:8;:13;12259:3;12250:13;;;;;;;;;;;;;;;;:147;;;;;;;;;;;;;;;;;;12427:3;12413:26;;12422:3;12413:26;;;12432:6;12413:26;;;;;;;;;;;;;;;;;;;;12452:54;12467:9;:14;12477:3;12467:14;;;;;;;;;;;;;;;;;;;;;;;;;12483:9;:14;12493:3;12483:14;;;;;;;;;;;;;;;;;;;;;;;;;12499:6;12452:14;:54::i;:::-;11688:826;;;:::o;11305:375::-;11382:23;11408:9;:20;11418:9;11408:20;;;;;;;;;;;;;;;;;;;;;;;;;11382:46;;11439:23;11465:8;:19;11474:9;11465:19;;;;;;;;;;;;;;;;;;;;;;;;;11439:45;;11518:9;11495;:20;11505:9;11495:20;;;;;;;;;;;;;;;;:32;;;;;;;;;;;;;;;;;;11589:9;11545:54;;11572:15;11545:54;;11561:9;11545:54;;;;;;;;;;;;11612:60;11627:15;11644:9;11655:16;11612:14;:60::i;:::-;11305:375;;;;:::o;15418:178::-;15463:7;15483:15;15544:9;15533:20;;15581:7;15574:14;;;15418:178;:::o;14981:222::-;15101:6;15120:8;15135:1;15131;:5;15120:16;;15160:1;15155:6;;:1;:6;;;;15163:12;15147:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15194:1;15187:8;;;14981:222;;;;;:::o;12522:1223::-;12661:6;12651:16;;:6;:16;;;;:30;;;;;12680:1;12671:6;:10;;;12651:30;12647:1091;;;12720:1;12702:20;;:6;:20;;;12698:507;;12743:16;12762:14;:22;12777:6;12762:22;;;;;;;;;;;;;;;;;;;;;;;;;12743:41;;12803:16;12834:1;12822:9;:13;;;:102;;12923:1;12822:102;;;12859:11;:19;12871:6;12859:19;;;;;;;;;;;;;;;:34;12891:1;12879:9;:13;12859:34;;;;;;;;;;;;;;;:40;;;;;;;;;;;;12822:102;12803:121;;12943:16;12962:151;12990:9;13022:6;12962:151;;;;;;;;;;;;;;;;;:5;:151::i;:::-;12943:170;;13132:57;13149:6;13157:9;13168;13179;13132:16;:57::i;:::-;12698:507;;;;13243:1;13225:20;;:6;:20;;;13221:506;;13266:16;13285:14;:22;13300:6;13285:22;;;;;;;;;;;;;;;;;;;;;;;;;13266:41;;13326:16;13357:1;13345:9;:13;;;:102;;13446:1;13345:102;;;13382:11;:19;13394:6;13382:19;;;;;;;;;;;;;;;:34;13414:1;13402:9;:13;13382:34;;;;;;;;;;;;;;;:40;;;;;;;;;;;;13345:102;13326:121;;13466:16;13485:150;13513:9;13545:6;13485:150;;;;;;;;;;;;;;;;;:5;:150::i;:::-;13466:169;;13654:57;13671:6;13679:9;13690;13701;13654:16;:57::i;:::-;13221:506;;;;12647:1091;12522:1223;;;:::o;13753:812::-;13916:18;13937:114;13958:12;13937:114;;;;;;;;;;;;;;;;;:6;:114::i;:::-;13916:135;;14097:1;14082:12;:16;;;:98;;;;;14169:11;14115:65;;:11;:22;14127:9;14115:22;;;;;;;;;;;;;;;:40;14153:1;14138:12;:16;14115:40;;;;;;;;;;;;;;;:50;;;;;;;;;;;;:65;;;14082:98;14064:425;;;14256:8;14207:11;:22;14219:9;14207:22;;;;;;;;;;;;;;;:40;14245:1;14230:12;:16;14207:40;;;;;;;;;;;;;;;:46;;;:57;;;;;;;;;;;;;;;;;;14064:425;;;14336:82;;;;;;;;14365:11;14336:82;;;;;;14395:8;14336:82;;;;;14297:11;:22;14309:9;14297:22;;;;;;;;;;;;;;;:36;14320:12;14297:36;;;;;;;;;;;;;;;:121;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14476:1;14461:12;:16;14433:14;:25;14448:9;14433:25;;;;;;;;;;;;;;;;:44;;;;;;;;;;;;;;;;;;14064:425;14527:9;14506:51;;;14538:8;14548;14506:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;13753:812;;;;;:::o;14573:196::-;14678:6;14714:5;14710:1;:9;14721:12;14702:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14759:1;14745:16;;14573:196;;;;:::o;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;;;;;:::o

Swarm Source

ipfs://0c1f7790b31a9e00562e01d9829e4c3f4f980d48f72964894d3cd27f2c218d73

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.