ETH Price: $2,914.13 (-3.79%)
Gas: 1 Gwei

Token

Spock (Spock)
 

Overview

Max Total Supply

1,000,000,000 Spock

Holders

279

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
743,348.871372837572068436 Spock

Value
$0.00
0x9152c47e116e01fbd09ff7855b25e3a9e5a00b23
Loading...
Loading
Loading...
Loading
Loading...
Loading

Click here to update the token information / general information
# Exchange Pair Price  24H Volume % Volume

Contract Source Code Verified (Exact Match)

Contract Name:
Spock

Compiler Version
v0.8.20+commit.a1b79de6

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-06-22
*/

// SPDX-License-Identifier: MIT                                                                               
                                                    
pragma solidity 0.8.20;

abstract contract Context {
    function _msgSender() internal view virtual returns (address) {
        return msg.sender;
    }

    function _msgData() internal view virtual returns (bytes calldata) {
        this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691
        return msg.data;
    }
}

interface IERC20 {
    function totalSupply() external view returns (uint256);
    function balanceOf(address account) external view returns (uint256);
    function transfer(address recipient, uint256 amount) external returns (bool);
    function allowance(address owner, address spender) external view returns (uint256);
    function approve(address spender, uint256 amount) external returns (bool);
    function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);
    function name() external view returns (string memory);
    function symbol() external view returns (string memory);
    function decimals() external view returns (uint8);

    event Transfer(address indexed from, address indexed to, uint256 value);
    event Approval(address indexed owner, address indexed spender, uint256 value);
}

contract ERC20 is Context, IERC20 {
    mapping(address => uint256) private _balances;
    mapping(address => mapping(address => uint256)) private _allowances;
    uint256 private _totalSupply;
    string private _name;
    string private _symbol;

    constructor(string memory name_, string memory symbol_) {
        _name = name_;
        _symbol = symbol_;
    }

    function name() public view virtual override returns (string memory) {
        return _name;
    }

    function symbol() public view virtual override returns (string memory) {
        return _symbol;
    }

    function decimals() public view virtual override returns (uint8) {
        return 18;
    }

    function totalSupply() public view virtual override returns (uint256) {
        return _totalSupply;
    }

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

    function transfer(address recipient, uint256 amount) public virtual override returns (bool) {
        _transfer(_msgSender(), recipient, amount);
        return true;
    }

    function allowance(address owner, address spender) public view virtual override returns (uint256) {
        return _allowances[owner][spender];
    }

    function approve(address spender, uint256 amount) public virtual override returns (bool) {
        _approve(_msgSender(), spender, amount);
        return true;
    }

    function transferFrom(address sender, address recipient, uint256 amount) public virtual override returns (bool) {
        _transfer(sender, recipient, amount);

        uint256 currentAllowance = _allowances[sender][_msgSender()];
        require(currentAllowance >= amount, "ERC20: transfer amount exceeds allowance");
        unchecked {
            _approve(sender, _msgSender(), currentAllowance - amount);
        }

        return true;
    }

    function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) {
        _approve(_msgSender(), spender, _allowances[_msgSender()][spender] + addedValue);
        return true;
    }

    function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) {
        uint256 currentAllowance = _allowances[_msgSender()][spender];
        require(currentAllowance >= subtractedValue, "ERC20: decreased allowance below zero");
        unchecked {
            _approve(_msgSender(), spender, currentAllowance - subtractedValue);
        }

        return true;
    }

    function _transfer(address sender, address recipient, uint256 amount) internal virtual {
        require(sender != address(0), "ERC20: transfer from the zero address");
        require(recipient != address(0), "ERC20: transfer to the zero address");

        uint256 senderBalance = _balances[sender];
        require(senderBalance >= amount, "ERC20: transfer amount exceeds balance");
        unchecked {
            _balances[sender] = senderBalance - amount;
        }
        _balances[recipient] += amount;

        emit Transfer(sender, recipient, amount);
    }

    function _createInitialSupply(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: mint to the zero address");

        _totalSupply += amount;
        _balances[account] += amount;
        emit Transfer(address(0), account, amount);
    }

    function _approve(address owner, address spender, uint256 amount) internal virtual {
        require(owner != address(0), "ERC20: approve from the zero address");
        require(spender != address(0), "ERC20: approve to the zero address");

        _allowances[owner][spender] = amount;
        emit Approval(owner, spender, amount);
    }
}

contract Ownable is Context {
    address private _owner;

    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
    
    constructor () {
        address msgSender = _msgSender();
        _owner = msgSender;
        emit OwnershipTransferred(address(0), msgSender);
    }

    function owner() public view returns (address) {
        return _owner;
    }

    modifier onlyOwner() {
        require(_owner == _msgSender(), "Ownable: caller is not the owner");
        _;
    }

    function renounceOwnership() external virtual onlyOwner {
        emit OwnershipTransferred(_owner, address(0));
        _owner = address(0);
    }

    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(newOwner != address(0), "Ownable: new owner is the zero address");
        emit OwnershipTransferred(_owner, newOwner);
        _owner = newOwner;
    }
}

library Address {
    function isContract(address account) internal view returns (bool) {
        return account.code.length > 0;
    }

    function sendValue(address payable recipient, uint256 amount) internal {
        require(address(this).balance >= amount, "Address: insufficient balance");

        (bool success, ) = recipient.call{value: amount}("");
        require(success, "Address: unable to send value, recipient may have reverted");
    }

    function functionCall(address target, bytes memory data) internal returns (bytes memory) {
        return functionCallWithValue(target, data, 0, "Address: low-level call failed");
    }

    function functionCall(
        address target,
        bytes memory data,
        string memory errorMessage
    ) internal returns (bytes memory) {
        return functionCallWithValue(target, data, 0, errorMessage);
    }

    /**
     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],
     * but also transferring `value` wei to `target`.
     *
     * Requirements:
     *
     * - the calling contract must have an ETH balance of at least `value`.
     * - the called Solidity function must be `payable`.
     *
     * _Available since v3.1._
     */
    function functionCallWithValue(
        address target,
        bytes memory data,
        uint256 value
    ) internal returns (bytes memory) {
        return functionCallWithValue(target, data, value, "Address: low-level call with value failed");
    }

    /**
     * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but
     * with `errorMessage` as a fallback revert reason when `target` reverts.
     *
     * _Available since v3.1._
     */
    function functionCallWithValue(
        address target,
        bytes memory data,
        uint256 value,
        string memory errorMessage
    ) internal returns (bytes memory) {
        require(address(this).balance >= value, "Address: insufficient balance for call");
        (bool success, bytes memory returndata) = target.call{value: value}(data);
        return verifyCallResultFromTarget(target, success, returndata, errorMessage);
    }

    /**
     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],
     * but performing a static call.
     *
     * _Available since v3.3._
     */
    function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {
        return functionStaticCall(target, data, "Address: low-level static call failed");
    }

    /**
     * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],
     * but performing a static call.
     *
     * _Available since v3.3._
     */
    function functionStaticCall(
        address target,
        bytes memory data,
        string memory errorMessage
    ) internal view returns (bytes memory) {
        (bool success, bytes memory returndata) = target.staticcall(data);
        return verifyCallResultFromTarget(target, success, returndata, errorMessage);
    }

    /**
     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],
     * but performing a delegate call.
     *
     * _Available since v3.4._
     */
    function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {
        return functionDelegateCall(target, data, "Address: low-level delegate call failed");
    }

    /**
     * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],
     * but performing a delegate call.
     *
     * _Available since v3.4._
     */
    function functionDelegateCall(
        address target,
        bytes memory data,
        string memory errorMessage
    ) internal returns (bytes memory) {
        (bool success, bytes memory returndata) = target.delegatecall(data);
        return verifyCallResultFromTarget(target, success, returndata, errorMessage);
    }

    /**
     * @dev Tool to verify that a low level call to smart-contract was successful, and revert (either by bubbling
     * the revert reason or using the provided one) in case of unsuccessful call or if target was not a contract.
     *
     * _Available since v4.8._
     */
    function verifyCallResultFromTarget(
        address target,
        bool success,
        bytes memory returndata,
        string memory errorMessage
    ) internal view returns (bytes memory) {
        if (success) {
            if (returndata.length == 0) {
                // only check isContract if the call was successful and the return data is empty
                // otherwise we already know that it was a contract
                require(isContract(target), "Address: call to non-contract");
            }
            return returndata;
        } else {
            _revert(returndata, errorMessage);
        }
    }

    /**
     * @dev Tool to verify that a low level call was successful, and revert if it wasn't, either by bubbling the
     * revert reason or using the provided one.
     *
     * _Available since v4.3._
     */
    function verifyCallResult(
        bool success,
        bytes memory returndata,
        string memory errorMessage
    ) internal pure returns (bytes memory) {
        if (success) {
            return returndata;
        } else {
            _revert(returndata, errorMessage);
        }
    }

    function _revert(bytes memory returndata, string memory errorMessage) private pure {
        // Look for revert reason and bubble it up if present
        if (returndata.length > 0) {
            // The easiest way to bubble the revert reason is using memory via assembly
            /// @solidity memory-safe-assembly
            assembly {
                let returndata_size := mload(returndata)
                revert(add(32, returndata), returndata_size)
            }
        } else {
            revert(errorMessage);
        }
    }
}

library SafeERC20 {
    using Address for address;

    function safeTransfer(
        IERC20 token,
        address to,
        uint256 value
    ) internal {
        _callOptionalReturn(token, abi.encodeWithSelector(token.transfer.selector, to, value));
    }

    function _callOptionalReturn(IERC20 token, bytes memory data) private {
        bytes memory returndata = address(token).functionCall(data, "SafeERC20: low-level call failed");
        if (returndata.length > 0) {
            require(abi.decode(returndata, (bool)), "SafeERC20: ERC20 operation did not succeed");
        }
    }
}

interface IUniswapV3Router {
    function factory() external view returns (address);
}

interface IUniswapV3Factory {
    function createPool(
        address tokenA,
        address tokenB,
        uint24 fee
    ) external returns (address pool);
}

contract Spock is Ownable, ERC20 {

    IUniswapV3Router public immutable v3Router;
    address public immutable pool;
    IERC20 public immutable WETH;

    mapping (address => bool) public isPool;
    mapping (address => bool) public isFeeExempt;
    mapping (address => bool) public isMaxTxExempt;


    uint256 public maxTransactionAmt;
    uint256 public maxWallet;

    bool public limitsInEffect = true;
    bool public tradingActive = false;

    receive() payable external{}

    constructor() ERC20("Spock", "Spock"){
        address wethContract;
        address _v3Router;
        // @dev assumes WETH pair
        if(block.chainid == 1){
            wethContract = 0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2;
            _v3Router = 0xE592427A0AEce92De3Edee1F18E0157C05861564;
        } else if(block.chainid == 5){
            wethContract  = 0xB4FBF271143F4FBf7B91A5ded31805e42b2208d6;
            _v3Router = 0xE592427A0AEce92De3Edee1F18E0157C05861564;
        } else {
            revert("Chain not configured");
        }
        
        WETH = IERC20(wethContract);
        v3Router = IUniswapV3Router(_v3Router);
        pool = IUniswapV3Factory(v3Router.factory()).createPool(address(this), address(WETH), 10000);
        isPool[pool] = true;

        isFeeExempt[msg.sender] = true;
        isFeeExempt[address(v3Router)] = true;
        isFeeExempt[address(0xdead)] = true;

        isMaxTxExempt[msg.sender] = true;
        isMaxTxExempt[address(v3Router)] = true;
        isMaxTxExempt[address(0xdead)] = true;

        uint256 totalSupply = 1 * 1e9 * 1e18;
        
        maxTransactionAmt = totalSupply * 5 / 1000; // @dev update
        maxWallet = totalSupply * 1 / 100; // @dev update

        _createInitialSupply(msg.sender, totalSupply);
        super._transfer(msg.sender, 0xC2630500a28968811a0352466DEB8a281b704C51, totalSupply * 2 / 100);
        super._transfer(msg.sender, 0xf1dE5768369209E374E83758EB982A0fe4F044dA, totalSupply * 2 / 100);
        super._transfer(msg.sender, 0x71bc43746E5baA3a6e1299512Cb3357FDdab9649, totalSupply * 2 / 100);
        super._transfer(msg.sender, 0x0a551cB697f810a769C025Ef820dbBdDb3E72E5B, totalSupply * 2 / 100);
        super._transfer(msg.sender, 0x235238dfbf6C3D880704675523625D9Ee754c24e, totalSupply * 2 / 100);
    }

    function _transfer(
        address from,
        address to,
        uint256 amount
    ) internal override {
        if(limitsInEffect && !isFeeExempt[to] && !isFeeExempt[from]) {
            require(tradingActive, "Trading not active");
            //when buy
            if (isPool[from] && !isMaxTxExempt[to]) {
                require(amount <= maxTransactionAmt, "Buy transfer amt exceeds the max buy.");
                require(amount + balanceOf(to) <= maxWallet, "Cannot Exceed max wallet");
            } 
            //when sell
            else if (isPool[to] && !isMaxTxExempt[from]) {
                require(amount <= maxTransactionAmt, "Sell transfer amt exceeds the max sell.");
            }
            //when transfer
            else if (!isMaxTxExempt[to]){
                require(amount + balanceOf(to) <= maxWallet, "Cannot Exceed max wallet");
            }
        }
        super._transfer(from, to, amount);
    }

    function enableTrading() external onlyOwner {
        tradingActive = true;
    }

    function removeLimits() external onlyOwner {
        limitsInEffect = false;
    }

    function updateMaxAmt(uint256 newNum) external onlyOwner {
        require(newNum > (totalSupply() * 1 / 1000)/1e18, "Cannot set maxTransactionAmount lower than 0.1%");
        maxTransactionAmt = newNum * (10**18);
    }
    
    function updateMaxWalletAmt(uint256 newNum) external onlyOwner {
        require(newNum > (totalSupply() * 1 / 100)/1e18, "Cannot set maxWallet lower than 1%");
        maxWallet = newNum * (10**18);
    }

    function setIsFeeEx(address account, bool exempt) external onlyOwner {
        isFeeExempt[account] = exempt;
    }

    function setIsMaxTxEx(address account, bool exempt) external onlyOwner {
        require(!isPool[account], "Cannot remove exemption from pool");
        isMaxTxExempt[account] = exempt;
    }

    function setIsPool(address _pool, bool _isPool) external onlyOwner {
        require(_pool != address(pool), "Cannot remove original pool");
        isPool[_pool] = _isPool;
    }

    function sendEth() external onlyOwner {
        bool success;
        (success, ) = msg.sender.call{value: address(this).balance}("");
        require(success, "withdraw unsuccessful");
    }

    function transferToken(address _token, address _to) external onlyOwner {
        require(_token != address(0), "_token address cannot be 0");
        uint256 _contractBalance = IERC20(_token).balanceOf(address(this));
        SafeERC20.safeTransfer(IERC20(_token),_to, _contractBalance);
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"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":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"WETH","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","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":"amount","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":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isFeeExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isMaxTxExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isPool","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"limitsInEffect","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTransactionAmt","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWallet","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pool","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sendEth","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setIsFeeEx","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setIsMaxTxEx","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_pool","type":"address"},{"internalType":"bool","name":"_isPool","type":"bool"}],"name":"setIsPool","outputs":[],"stateMutability":"nonpayable","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":[],"name":"tradingActive","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_token","type":"address"},{"internalType":"address","name":"_to","type":"address"}],"name":"transferToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updateMaxAmt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updateMaxWalletAmt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"v3Router","outputs":[{"internalType":"contract IUniswapV3Router","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

60e0604052600b805461ffff191660011790553480156200001e575f80fd5b506040518060400160405280600581526020016453706f636b60d81b8152506040518060400160405280600581526020016453706f636b60d81b8152505f6200006c6200049c60201b60201c565b5f80546001600160a01b0319166001600160a01b0383169081178255604051929350917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3506004620000c38382620007d4565b506005620000d28282620007d4565b5050505f804660010362000113575073c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2905073e592427a0aece92de3edee1f18e0157c058615646200019c565b466005036200014f575073b4fbf271143f4fbf7b91a5ded31805e42b2208d6905073e592427a0aece92de3edee1f18e0157c058615646200019c565b60405162461bcd60e51b815260206004820152601460248201527f436861696e206e6f7420636f6e6669677572656400000000000000000000000060448201526064015b60405180910390fd5b6001600160a01b0380831660c052811660808190526040805163c45a015560e01b8152905163c45a0155916004808201926020929091908290030181865afa158015620001eb573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906200021191906200089c565b60c05160405163a167129560e01b81523060048201526001600160a01b039182166024820152612710604482015291169063a1671295906064016020604051808303815f875af115801562000268573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906200028e91906200089c565b6001600160a01b0390811660a08190525f9081526006602090815260408083208054600160ff1991821681179092553380865260078552838620805483168417905560805190961680865283862080548316841790557fb0c2646e02af70b79e3fe9277b98373379f54150e4e26b2b5650139f7a75a65d8054831684179055958552600890935281842080548416821790559383528220805482168417905561dead9091527f046fee3d77c34a6c5e10c3be6dc4b132c30449dbf4f0bc07684896dd09334299805490911690911790556b033b2e3c9fd0803ce80000006103e86200037b826005620008df565b620003879190620008ff565b600955606462000399826001620008df565b620003a59190620008ff565b600a55620003b43382620004a0565b620003ef3373c2630500a28968811a0352466deb8a281b704c516064620003dd856002620008df565b620003e99190620008ff565b62000570565b620004183373f1de5768369209e374e83758eb982a0fe4f044da6064620003dd856002620008df565b62000441337371bc43746e5baa3a6e1299512cb3357fddab96496064620003dd856002620008df565b6200046a33730a551cb697f810a769c025ef820dbbddb3e72e5b6064620003dd856002620008df565b620004933373235238dfbf6c3d880704675523625d9ee754c24e6064620003dd856002620008df565b50505062000935565b3390565b6001600160a01b038216620004f85760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015260640162000193565b8060035f8282546200050b91906200091f565b90915550506001600160a01b0382165f9081526001602052604081208054839290620005399084906200091f565b90915550506040518181526001600160a01b038316905f905f80516020620024848339815191529060200160405180910390a35050565b6001600160a01b038316620005d65760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b606482015260840162000193565b6001600160a01b0382166200063a5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b606482015260840162000193565b6001600160a01b0383165f9081526001602052604090205481811015620006b35760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b606482015260840162000193565b6001600160a01b038085165f90815260016020526040808220858503905591851681529081208054849290620006eb9084906200091f565b92505081905550826001600160a01b0316846001600160a01b03165f8051602062002484833981519152846040516200072691815260200190565b60405180910390a350505050565b634e487b7160e01b5f52604160045260245ffd5b600181811c908216806200075d57607f821691505b6020821081036200077c57634e487b7160e01b5f52602260045260245ffd5b50919050565b601f821115620007cf575f81815260208120601f850160051c81016020861015620007aa5750805b601f850160051c820191505b81811015620007cb57828155600101620007b6565b5050505b505050565b81516001600160401b03811115620007f057620007f062000734565b620008088162000801845462000748565b8462000782565b602080601f8311600181146200083e575f8415620008265750858301515b5f19600386901b1c1916600185901b178555620007cb565b5f85815260208120601f198616915b828110156200086e578886015182559484019460019091019084016200084d565b50858210156200088c57878501515f19600388901b60f8161c191681555b5050505050600190811b01905550565b5f60208284031215620008ad575f80fd5b81516001600160a01b0381168114620008c4575f80fd5b9392505050565b634e487b7160e01b5f52601160045260245ffd5b8082028115828204841417620008f957620008f9620008cb565b92915050565b5f826200091a57634e487b7160e01b5f52601260045260245ffd5b500490565b80820180821115620008f957620008f9620008cb565b60805160a05160c051611b1d620009675f395f61056c01525f81816102bf015261080601525f6102740152611b1d5ff3fe6080604052600436106101e9575f3560e01c80635b16ebb711610108578063a457c2d71161009d578063c1ec8d4b1161006d578063c1ec8d4b146105ac578063dd62ed3e146105da578063f01c75e11461061e578063f2fde38b1461063d578063f8b45b051461065c575f80fd5b8063a457c2d71461051d578063a9059cbb1461053c578063ad5c46481461055b578063bbc0c7421461058e575f80fd5b8063751039fc116100d8578063751039fc146104c55780638a8c523c146104d95780638da5cb5b146104ed57806395d89b4114610509575f80fd5b80635b16ebb714610430578063657f644b1461045e57806370a082311461047d578063715018a6146104b1575f80fd5b806323b872dd1161017e5780634221b5081161014e5780634221b508146103ba57806343befc12146103d957806348ae238f146103f85780634a62bb6514610417575f80fd5b806323b872dd14610333578063313ce56714610352578063395093511461036d5780633f4218e01461038c575f80fd5b806316f0115b116101b957806316f0115b146102ae57806318160ddd146102e15780631cb5a549146102ff57806320d830551461031e575f80fd5b806306e99fef146101f457806306fdde031461020a578063095ea7b3146102345780630dc9130614610263575f80fd5b366101f057005b5f80fd5b3480156101ff575f80fd5b50610208610671565b005b348015610215575f80fd5b5061021e610735565b60405161022b9190611878565b60405180910390f35b34801561023f575f80fd5b5061025361024e3660046118c5565b6107c5565b604051901515815260200161022b565b34801561026e575f80fd5b506102967f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b03909116815260200161022b565b3480156102b9575f80fd5b506102967f000000000000000000000000000000000000000000000000000000000000000081565b3480156102ec575f80fd5b506003545b60405190815260200161022b565b34801561030a575f80fd5b506102086103193660046118fa565b6107db565b348015610329575f80fd5b506102f160095481565b34801561033e575f80fd5b5061025361034d36600461192f565b6108af565b34801561035d575f80fd5b506040516012815260200161022b565b348015610378575f80fd5b506102536103873660046118c5565b610957565b348015610397575f80fd5b506102536103a6366004611968565b60076020525f908152604090205460ff1681565b3480156103c5575f80fd5b506102086103d43660046118fa565b610992565b3480156103e4575f80fd5b506102086103f33660046118fa565b610a57565b348015610403575f80fd5b50610208610412366004611988565b610aaa565b348015610422575f80fd5b50600b546102539060ff1681565b34801561043b575f80fd5b5061025361044a366004611968565b60066020525f908152604090205460ff1681565b348015610469575f80fd5b506102086104783660046119b9565b610ba3565b348015610488575f80fd5b506102f1610497366004611968565b6001600160a01b03165f9081526001602052604090205490565b3480156104bc575f80fd5b50610208610c70565b3480156104d0575f80fd5b50610208610ce1565b3480156104e4575f80fd5b50610208610d16565b3480156104f8575f80fd5b505f546001600160a01b0316610296565b348015610514575f80fd5b5061021e610d50565b348015610528575f80fd5b506102536105373660046118c5565b610d5f565b348015610547575f80fd5b506102536105563660046118c5565b610df7565b348015610566575f80fd5b506102967f000000000000000000000000000000000000000000000000000000000000000081565b348015610599575f80fd5b50600b5461025390610100900460ff1681565b3480156105b7575f80fd5b506102536105c6366004611968565b60086020525f908152604090205460ff1681565b3480156105e5575f80fd5b506102f16105f4366004611988565b6001600160a01b039182165f90815260026020908152604080832093909416825291909152205490565b348015610629575f80fd5b506102086106383660046119b9565b610e03565b348015610648575f80fd5b50610208610657366004611968565b610ede565b348015610667575f80fd5b506102f1600a5481565b5f546001600160a01b031633146106a35760405162461bcd60e51b815260040161069a906119d0565b60405180910390fd5b6040515f90339047908381818185875af1925050503d805f81146106e2576040519150601f19603f3d011682016040523d82523d5f602084013e6106e7565b606091505b505080915050806107325760405162461bcd60e51b81526020600482015260156024820152741dda5d1a191c985dc81d5b9cdd58d8d95cdcd99d5b605a1b604482015260640161069a565b50565b60606004805461074490611a05565b80601f016020809104026020016040519081016040528092919081815260200182805461077090611a05565b80156107bb5780601f10610792576101008083540402835291602001916107bb565b820191905f5260205f20905b81548152906001019060200180831161079e57829003601f168201915b5050505050905090565b5f6107d1338484610fc5565b5060015b92915050565b5f546001600160a01b031633146108045760405162461bcd60e51b815260040161069a906119d0565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b0316036108855760405162461bcd60e51b815260206004820152601b60248201527f43616e6e6f742072656d6f7665206f726967696e616c20706f6f6c0000000000604482015260640161069a565b6001600160a01b03919091165f908152600660205260409020805460ff1916911515919091179055565b5f6108bb8484846110e8565b6001600160a01b0384165f9081526002602090815260408083203384529091529020548281101561093f5760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b606482015260840161069a565b61094c8533858403610fc5565b506001949350505050565b335f8181526002602090815260408083206001600160a01b038716845290915281205490916107d191859061098d908690611a51565b610fc5565b5f546001600160a01b031633146109bb5760405162461bcd60e51b815260040161069a906119d0565b6001600160a01b0382165f9081526006602052604090205460ff1615610a2d5760405162461bcd60e51b815260206004820152602160248201527f43616e6e6f742072656d6f7665206578656d7074696f6e2066726f6d20706f6f6044820152601b60fa1b606482015260840161069a565b6001600160a01b03919091165f908152600860205260409020805460ff1916911515919091179055565b5f546001600160a01b03163314610a805760405162461bcd60e51b815260040161069a906119d0565b6001600160a01b03919091165f908152600760205260409020805460ff1916911515919091179055565b5f546001600160a01b03163314610ad35760405162461bcd60e51b815260040161069a906119d0565b6001600160a01b038216610b295760405162461bcd60e51b815260206004820152601a60248201527f5f746f6b656e20616464726573732063616e6e6f742062652030000000000000604482015260640161069a565b6040516370a0823160e01b81523060048201525f906001600160a01b038416906370a0823190602401602060405180830381865afa158015610b6d573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b919190611a64565b9050610b9e8383836113dc565b505050565b5f546001600160a01b03163314610bcc5760405162461bcd60e51b815260040161069a906119d0565b670de0b6b3a76400006064610be060035490565b610beb906001611a7b565b610bf59190611a92565b610bff9190611a92565b8111610c585760405162461bcd60e51b815260206004820152602260248201527f43616e6e6f7420736574206d617857616c6c6574206c6f776572207468616e20604482015261312560f01b606482015260840161069a565b610c6a81670de0b6b3a7640000611a7b565b600a5550565b5f546001600160a01b03163314610c995760405162461bcd60e51b815260040161069a906119d0565b5f80546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a35f80546001600160a01b0319169055565b5f546001600160a01b03163314610d0a5760405162461bcd60e51b815260040161069a906119d0565b600b805460ff19169055565b5f546001600160a01b03163314610d3f5760405162461bcd60e51b815260040161069a906119d0565b600b805461ff001916610100179055565b60606005805461074490611a05565b335f9081526002602090815260408083206001600160a01b038616845290915281205482811015610de05760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b606482015260840161069a565b610ded3385858403610fc5565b5060019392505050565b5f6107d13384846110e8565b5f546001600160a01b03163314610e2c5760405162461bcd60e51b815260040161069a906119d0565b670de0b6b3a76400006103e8610e4160035490565b610e4c906001611a7b565b610e569190611a92565b610e609190611a92565b8111610ec65760405162461bcd60e51b815260206004820152602f60248201527f43616e6e6f7420736574206d61785472616e73616374696f6e416d6f756e742060448201526e6c6f776572207468616e20302e312560881b606482015260840161069a565b610ed881670de0b6b3a7640000611a7b565b60095550565b5f546001600160a01b03163314610f075760405162461bcd60e51b815260040161069a906119d0565b6001600160a01b038116610f6c5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161069a565b5f80546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a35f80546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b0383166110275760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840161069a565b6001600160a01b0382166110885760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840161069a565b6001600160a01b038381165f8181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b600b5460ff16801561111257506001600160a01b0382165f9081526007602052604090205460ff16155b801561113657506001600160a01b0383165f9081526007602052604090205460ff16155b156113d157600b54610100900460ff166111875760405162461bcd60e51b815260206004820152601260248201527154726164696e67206e6f742061637469766560701b604482015260640161069a565b6001600160a01b0383165f9081526006602052604090205460ff1680156111c657506001600160a01b0382165f9081526008602052604090205460ff16155b1561129e5760095481111561122b5760405162461bcd60e51b815260206004820152602560248201527f427579207472616e7366657220616d74206578636565647320746865206d617860448201526410313abc9760d91b606482015260840161069a565b600a546001600160a01b0383165f908152600160205260409020546112509083611a51565b11156112995760405162461bcd60e51b815260206004820152601860248201527710d85b9b9bdd08115e18d95959081b585e081dd85b1b195d60421b604482015260640161069a565b6113d1565b6001600160a01b0382165f9081526006602052604090205460ff1680156112dd57506001600160a01b0383165f9081526008602052604090205460ff16155b15611344576009548111156112995760405162461bcd60e51b815260206004820152602760248201527f53656c6c207472616e7366657220616d74206578636565647320746865206d616044820152663c1039b2b6361760c91b606482015260840161069a565b6001600160a01b0382165f9081526008602052604090205460ff166113d157600a546001600160a01b0383165f908152600160205260409020546113889083611a51565b11156113d15760405162461bcd60e51b815260206004820152601860248201527710d85b9b9bdd08115e18d95959081b585e081dd85b1b195d60421b604482015260640161069a565b610b9e83838361142e565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b179052610b9e9084906115fb565b6001600160a01b0383166114925760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b606482015260840161069a565b6001600160a01b0382166114f45760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b606482015260840161069a565b6001600160a01b0383165f908152600160205260409020548181101561156b5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b606482015260840161069a565b6001600160a01b038085165f908152600160205260408082208585039055918516815290812080548492906115a1908490611a51565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516115ed91815260200190565b60405180910390a350505050565b5f61164f826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166116cc9092919063ffffffff16565b805190915015610b9e578080602001905181019061166d9190611ab1565b610b9e5760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b606482015260840161069a565b60606116da84845f856116e2565b949350505050565b6060824710156117435760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b606482015260840161069a565b5f80866001600160a01b0316858760405161175e9190611acc565b5f6040518083038185875af1925050503d805f8114611798576040519150601f19603f3d011682016040523d82523d5f602084013e61179d565b606091505b50915091506117ae878383876117b9565b979650505050505050565b606083156118275782515f03611820576001600160a01b0385163b6118205760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161069a565b50816116da565b6116da838381511561183c5781518083602001fd5b8060405162461bcd60e51b815260040161069a9190611878565b5f5b83811015611870578181015183820152602001611858565b50505f910152565b602081525f8251806020840152611896816040850160208701611856565b601f01601f19169190910160400192915050565b80356001600160a01b03811681146118c0575f80fd5b919050565b5f80604083850312156118d6575f80fd5b6118df836118aa565b946020939093013593505050565b8015158114610732575f80fd5b5f806040838503121561190b575f80fd5b611914836118aa565b91506020830135611924816118ed565b809150509250929050565b5f805f60608486031215611941575f80fd5b61194a846118aa565b9250611958602085016118aa565b9150604084013590509250925092565b5f60208284031215611978575f80fd5b611981826118aa565b9392505050565b5f8060408385031215611999575f80fd5b6119a2836118aa565b91506119b0602084016118aa565b90509250929050565b5f602082840312156119c9575f80fd5b5035919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b600181811c90821680611a1957607f821691505b602082108103611a3757634e487b7160e01b5f52602260045260245ffd5b50919050565b634e487b7160e01b5f52601160045260245ffd5b808201808211156107d5576107d5611a3d565b5f60208284031215611a74575f80fd5b5051919050565b80820281158282048414176107d5576107d5611a3d565b5f82611aac57634e487b7160e01b5f52601260045260245ffd5b500490565b5f60208284031215611ac1575f80fd5b8151611981816118ed565b5f8251611add818460208701611856565b919091019291505056fea2646970667358221220b75ec3b2923cab0094de99b7eb68f3bb3ca18316a8aba2f0ef5f26a492d4bac864736f6c63430008140033ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef

Deployed Bytecode

0x6080604052600436106101e9575f3560e01c80635b16ebb711610108578063a457c2d71161009d578063c1ec8d4b1161006d578063c1ec8d4b146105ac578063dd62ed3e146105da578063f01c75e11461061e578063f2fde38b1461063d578063f8b45b051461065c575f80fd5b8063a457c2d71461051d578063a9059cbb1461053c578063ad5c46481461055b578063bbc0c7421461058e575f80fd5b8063751039fc116100d8578063751039fc146104c55780638a8c523c146104d95780638da5cb5b146104ed57806395d89b4114610509575f80fd5b80635b16ebb714610430578063657f644b1461045e57806370a082311461047d578063715018a6146104b1575f80fd5b806323b872dd1161017e5780634221b5081161014e5780634221b508146103ba57806343befc12146103d957806348ae238f146103f85780634a62bb6514610417575f80fd5b806323b872dd14610333578063313ce56714610352578063395093511461036d5780633f4218e01461038c575f80fd5b806316f0115b116101b957806316f0115b146102ae57806318160ddd146102e15780631cb5a549146102ff57806320d830551461031e575f80fd5b806306e99fef146101f457806306fdde031461020a578063095ea7b3146102345780630dc9130614610263575f80fd5b366101f057005b5f80fd5b3480156101ff575f80fd5b50610208610671565b005b348015610215575f80fd5b5061021e610735565b60405161022b9190611878565b60405180910390f35b34801561023f575f80fd5b5061025361024e3660046118c5565b6107c5565b604051901515815260200161022b565b34801561026e575f80fd5b506102967f000000000000000000000000e592427a0aece92de3edee1f18e0157c0586156481565b6040516001600160a01b03909116815260200161022b565b3480156102b9575f80fd5b506102967f0000000000000000000000001d7d2430a937ce90633bf70f6ed9b30a58d26fab81565b3480156102ec575f80fd5b506003545b60405190815260200161022b565b34801561030a575f80fd5b506102086103193660046118fa565b6107db565b348015610329575f80fd5b506102f160095481565b34801561033e575f80fd5b5061025361034d36600461192f565b6108af565b34801561035d575f80fd5b506040516012815260200161022b565b348015610378575f80fd5b506102536103873660046118c5565b610957565b348015610397575f80fd5b506102536103a6366004611968565b60076020525f908152604090205460ff1681565b3480156103c5575f80fd5b506102086103d43660046118fa565b610992565b3480156103e4575f80fd5b506102086103f33660046118fa565b610a57565b348015610403575f80fd5b50610208610412366004611988565b610aaa565b348015610422575f80fd5b50600b546102539060ff1681565b34801561043b575f80fd5b5061025361044a366004611968565b60066020525f908152604090205460ff1681565b348015610469575f80fd5b506102086104783660046119b9565b610ba3565b348015610488575f80fd5b506102f1610497366004611968565b6001600160a01b03165f9081526001602052604090205490565b3480156104bc575f80fd5b50610208610c70565b3480156104d0575f80fd5b50610208610ce1565b3480156104e4575f80fd5b50610208610d16565b3480156104f8575f80fd5b505f546001600160a01b0316610296565b348015610514575f80fd5b5061021e610d50565b348015610528575f80fd5b506102536105373660046118c5565b610d5f565b348015610547575f80fd5b506102536105563660046118c5565b610df7565b348015610566575f80fd5b506102967f000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc281565b348015610599575f80fd5b50600b5461025390610100900460ff1681565b3480156105b7575f80fd5b506102536105c6366004611968565b60086020525f908152604090205460ff1681565b3480156105e5575f80fd5b506102f16105f4366004611988565b6001600160a01b039182165f90815260026020908152604080832093909416825291909152205490565b348015610629575f80fd5b506102086106383660046119b9565b610e03565b348015610648575f80fd5b50610208610657366004611968565b610ede565b348015610667575f80fd5b506102f1600a5481565b5f546001600160a01b031633146106a35760405162461bcd60e51b815260040161069a906119d0565b60405180910390fd5b6040515f90339047908381818185875af1925050503d805f81146106e2576040519150601f19603f3d011682016040523d82523d5f602084013e6106e7565b606091505b505080915050806107325760405162461bcd60e51b81526020600482015260156024820152741dda5d1a191c985dc81d5b9cdd58d8d95cdcd99d5b605a1b604482015260640161069a565b50565b60606004805461074490611a05565b80601f016020809104026020016040519081016040528092919081815260200182805461077090611a05565b80156107bb5780601f10610792576101008083540402835291602001916107bb565b820191905f5260205f20905b81548152906001019060200180831161079e57829003601f168201915b5050505050905090565b5f6107d1338484610fc5565b5060015b92915050565b5f546001600160a01b031633146108045760405162461bcd60e51b815260040161069a906119d0565b7f0000000000000000000000001d7d2430a937ce90633bf70f6ed9b30a58d26fab6001600160a01b0316826001600160a01b0316036108855760405162461bcd60e51b815260206004820152601b60248201527f43616e6e6f742072656d6f7665206f726967696e616c20706f6f6c0000000000604482015260640161069a565b6001600160a01b03919091165f908152600660205260409020805460ff1916911515919091179055565b5f6108bb8484846110e8565b6001600160a01b0384165f9081526002602090815260408083203384529091529020548281101561093f5760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b606482015260840161069a565b61094c8533858403610fc5565b506001949350505050565b335f8181526002602090815260408083206001600160a01b038716845290915281205490916107d191859061098d908690611a51565b610fc5565b5f546001600160a01b031633146109bb5760405162461bcd60e51b815260040161069a906119d0565b6001600160a01b0382165f9081526006602052604090205460ff1615610a2d5760405162461bcd60e51b815260206004820152602160248201527f43616e6e6f742072656d6f7665206578656d7074696f6e2066726f6d20706f6f6044820152601b60fa1b606482015260840161069a565b6001600160a01b03919091165f908152600860205260409020805460ff1916911515919091179055565b5f546001600160a01b03163314610a805760405162461bcd60e51b815260040161069a906119d0565b6001600160a01b03919091165f908152600760205260409020805460ff1916911515919091179055565b5f546001600160a01b03163314610ad35760405162461bcd60e51b815260040161069a906119d0565b6001600160a01b038216610b295760405162461bcd60e51b815260206004820152601a60248201527f5f746f6b656e20616464726573732063616e6e6f742062652030000000000000604482015260640161069a565b6040516370a0823160e01b81523060048201525f906001600160a01b038416906370a0823190602401602060405180830381865afa158015610b6d573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b919190611a64565b9050610b9e8383836113dc565b505050565b5f546001600160a01b03163314610bcc5760405162461bcd60e51b815260040161069a906119d0565b670de0b6b3a76400006064610be060035490565b610beb906001611a7b565b610bf59190611a92565b610bff9190611a92565b8111610c585760405162461bcd60e51b815260206004820152602260248201527f43616e6e6f7420736574206d617857616c6c6574206c6f776572207468616e20604482015261312560f01b606482015260840161069a565b610c6a81670de0b6b3a7640000611a7b565b600a5550565b5f546001600160a01b03163314610c995760405162461bcd60e51b815260040161069a906119d0565b5f80546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a35f80546001600160a01b0319169055565b5f546001600160a01b03163314610d0a5760405162461bcd60e51b815260040161069a906119d0565b600b805460ff19169055565b5f546001600160a01b03163314610d3f5760405162461bcd60e51b815260040161069a906119d0565b600b805461ff001916610100179055565b60606005805461074490611a05565b335f9081526002602090815260408083206001600160a01b038616845290915281205482811015610de05760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b606482015260840161069a565b610ded3385858403610fc5565b5060019392505050565b5f6107d13384846110e8565b5f546001600160a01b03163314610e2c5760405162461bcd60e51b815260040161069a906119d0565b670de0b6b3a76400006103e8610e4160035490565b610e4c906001611a7b565b610e569190611a92565b610e609190611a92565b8111610ec65760405162461bcd60e51b815260206004820152602f60248201527f43616e6e6f7420736574206d61785472616e73616374696f6e416d6f756e742060448201526e6c6f776572207468616e20302e312560881b606482015260840161069a565b610ed881670de0b6b3a7640000611a7b565b60095550565b5f546001600160a01b03163314610f075760405162461bcd60e51b815260040161069a906119d0565b6001600160a01b038116610f6c5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161069a565b5f80546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a35f80546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b0383166110275760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840161069a565b6001600160a01b0382166110885760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840161069a565b6001600160a01b038381165f8181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b600b5460ff16801561111257506001600160a01b0382165f9081526007602052604090205460ff16155b801561113657506001600160a01b0383165f9081526007602052604090205460ff16155b156113d157600b54610100900460ff166111875760405162461bcd60e51b815260206004820152601260248201527154726164696e67206e6f742061637469766560701b604482015260640161069a565b6001600160a01b0383165f9081526006602052604090205460ff1680156111c657506001600160a01b0382165f9081526008602052604090205460ff16155b1561129e5760095481111561122b5760405162461bcd60e51b815260206004820152602560248201527f427579207472616e7366657220616d74206578636565647320746865206d617860448201526410313abc9760d91b606482015260840161069a565b600a546001600160a01b0383165f908152600160205260409020546112509083611a51565b11156112995760405162461bcd60e51b815260206004820152601860248201527710d85b9b9bdd08115e18d95959081b585e081dd85b1b195d60421b604482015260640161069a565b6113d1565b6001600160a01b0382165f9081526006602052604090205460ff1680156112dd57506001600160a01b0383165f9081526008602052604090205460ff16155b15611344576009548111156112995760405162461bcd60e51b815260206004820152602760248201527f53656c6c207472616e7366657220616d74206578636565647320746865206d616044820152663c1039b2b6361760c91b606482015260840161069a565b6001600160a01b0382165f9081526008602052604090205460ff166113d157600a546001600160a01b0383165f908152600160205260409020546113889083611a51565b11156113d15760405162461bcd60e51b815260206004820152601860248201527710d85b9b9bdd08115e18d95959081b585e081dd85b1b195d60421b604482015260640161069a565b610b9e83838361142e565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b179052610b9e9084906115fb565b6001600160a01b0383166114925760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b606482015260840161069a565b6001600160a01b0382166114f45760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b606482015260840161069a565b6001600160a01b0383165f908152600160205260409020548181101561156b5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b606482015260840161069a565b6001600160a01b038085165f908152600160205260408082208585039055918516815290812080548492906115a1908490611a51565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516115ed91815260200190565b60405180910390a350505050565b5f61164f826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166116cc9092919063ffffffff16565b805190915015610b9e578080602001905181019061166d9190611ab1565b610b9e5760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b606482015260840161069a565b60606116da84845f856116e2565b949350505050565b6060824710156117435760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b606482015260840161069a565b5f80866001600160a01b0316858760405161175e9190611acc565b5f6040518083038185875af1925050503d805f8114611798576040519150601f19603f3d011682016040523d82523d5f602084013e61179d565b606091505b50915091506117ae878383876117b9565b979650505050505050565b606083156118275782515f03611820576001600160a01b0385163b6118205760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161069a565b50816116da565b6116da838381511561183c5781518083602001fd5b8060405162461bcd60e51b815260040161069a9190611878565b5f5b83811015611870578181015183820152602001611858565b50505f910152565b602081525f8251806020840152611896816040850160208701611856565b601f01601f19169190910160400192915050565b80356001600160a01b03811681146118c0575f80fd5b919050565b5f80604083850312156118d6575f80fd5b6118df836118aa565b946020939093013593505050565b8015158114610732575f80fd5b5f806040838503121561190b575f80fd5b611914836118aa565b91506020830135611924816118ed565b809150509250929050565b5f805f60608486031215611941575f80fd5b61194a846118aa565b9250611958602085016118aa565b9150604084013590509250925092565b5f60208284031215611978575f80fd5b611981826118aa565b9392505050565b5f8060408385031215611999575f80fd5b6119a2836118aa565b91506119b0602084016118aa565b90509250929050565b5f602082840312156119c9575f80fd5b5035919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b600181811c90821680611a1957607f821691505b602082108103611a3757634e487b7160e01b5f52602260045260245ffd5b50919050565b634e487b7160e01b5f52601160045260245ffd5b808201808211156107d5576107d5611a3d565b5f60208284031215611a74575f80fd5b5051919050565b80820281158282048414176107d5576107d5611a3d565b5f82611aac57634e487b7160e01b5f52601260045260245ffd5b500490565b5f60208284031215611ac1575f80fd5b8151611981816118ed565b5f8251611add818460208701611856565b919091019291505056fea2646970667358221220b75ec3b2923cab0094de99b7eb68f3bb3ca18316a8aba2f0ef5f26a492d4bac864736f6c63430008140033

Deployed Bytecode Sourcemap

13189:4992:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17678:195;;;;;;;;;;;;;:::i;:::-;;1815:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2729:169;;;;;;;;;;-1:-1:-1;2729:169:0;;;;;:::i;:::-;;:::i;:::-;;;1272:14:1;;1265:22;1247:41;;1235:2;1220:18;2729:169:0;1107:187:1;13231:42:0;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1487:32:1;;;1469:51;;1457:2;1442:18;13231:42:0;1299:227:1;13280:29:0;;;;;;;;;;;;;;;2136:108;;;;;;;;;;-1:-1:-1;2224:12:0;;2136:108;;;1885:25:1;;;1873:2;1858:18;2136:108:0;1739:177:1;17488:182:0;;;;;;;;;;-1:-1:-1;17488:182:0;;;;;:::i;:::-;;:::i;13507:32::-;;;;;;;;;;;;;;;;2906:458;;;;;;;;;;-1:-1:-1;2906:458:0;;;;;:::i;:::-;;:::i;2035:93::-;;;;;;;;;;-1:-1:-1;2035:93:0;;2118:2;2839:36:1;;2827:2;2812:18;2035:93:0;2697:184:1;3372:215:0;;;;;;;;;;-1:-1:-1;3372:215:0;;;;;:::i;:::-;;:::i;13399:44::-;;;;;;;;;;-1:-1:-1;13399:44:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;17286:194;;;;;;;;;;-1:-1:-1;17286:194:0;;;;;:::i;:::-;;:::i;17161:117::-;;;;;;;;;;-1:-1:-1;17161:117:0;;;;;:::i;:::-;;:::i;17881:297::-;;;;;;;;;;-1:-1:-1;17881:297:0;;;;;:::i;:::-;;:::i;13579:33::-;;;;;;;;;;-1:-1:-1;13579:33:0;;;;;;;;13353:39;;;;;;;;;;-1:-1:-1;13353:39:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;16945:208;;;;;;;;;;-1:-1:-1;16945:208:0;;;;;:::i;:::-;;:::i;2252:127::-;;;;;;;;;;-1:-1:-1;2252:127:0;;;;;:::i;:::-;-1:-1:-1;;;;;2353:18:0;2326:7;2353:18;;;:9;:18;;;;;;;2252:127;5794:150;;;;;;;;;;;;;:::i;16617:84::-;;;;;;;;;;;;;:::i;16526:83::-;;;;;;;;;;;;;:::i;5580:79::-;;;;;;;;;;-1:-1:-1;5618:7:0;5645:6;-1:-1:-1;;;;;5645:6:0;5580:79;;1923:104;;;;;;;;;;;;;:::i;3595:413::-;;;;;;;;;;-1:-1:-1;3595:413:0;;;;;:::i;:::-;;:::i;2387:175::-;;;;;;;;;;-1:-1:-1;2387:175:0;;;;;:::i;:::-;;:::i;13316:28::-;;;;;;;;;;;;;;;13619:33;;;;;;;;;;-1:-1:-1;13619:33:0;;;;;;;;;;;13450:46;;;;;;;;;;-1:-1:-1;13450:46:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;2570:151;;;;;;;;;;-1:-1:-1;2570:151:0;;;;;:::i;:::-;-1:-1:-1;;;;;2686:18:0;;;2659:7;2686:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;2570:151;16709:224;;;;;;;;;;-1:-1:-1;16709:224:0;;;;;:::i;:::-;;:::i;5952:244::-;;;;;;;;;;-1:-1:-1;5952:244:0;;;;;:::i;:::-;;:::i;13546:24::-;;;;;;;;;;;;;;;;17678:195;5707:6;;-1:-1:-1;;;;;5707:6:0;306:10;5707:22;5699:67;;;;-1:-1:-1;;;5699:67:0;;;;;;;:::i;:::-;;;;;;;;;17764:49:::1;::::0;17727:12:::1;::::0;17764:10:::1;::::0;17787:21:::1;::::0;17727:12;17764:49;17727:12;17764:49;17787:21;17764:10;:49:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17750:63;;;;;17832:7;17824:41;;;::::0;-1:-1:-1;;;17824:41:0;;4522:2:1;17824:41:0::1;::::0;::::1;4504:21:1::0;4561:2;4541:18;;;4534:30;-1:-1:-1;;;4580:18:1;;;4573:51;4641:18;;17824:41:0::1;4320:345:1::0;17824:41:0::1;17716:157;17678:195::o:0;1815:100::-;1869:13;1902:5;1895:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1815:100;:::o;2729:169::-;2812:4;2829:39;306:10;2852:7;2861:6;2829:8;:39::i;:::-;-1:-1:-1;2886:4:0;2729:169;;;;;:::o;17488:182::-;5707:6;;-1:-1:-1;;;;;5707:6:0;306:10;5707:22;5699:67;;;;-1:-1:-1;;;5699:67:0;;;;;;;:::i;:::-;17591:4:::1;-1:-1:-1::0;;;;;17574:22:0::1;:5;-1:-1:-1::0;;;;;17574:22:0::1;::::0;17566:62:::1;;;::::0;-1:-1:-1;;;17566:62:0;;5257:2:1;17566:62:0::1;::::0;::::1;5239:21:1::0;5296:2;5276:18;;;5269:30;5335:29;5315:18;;;5308:57;5382:18;;17566:62:0::1;5055:351:1::0;17566:62:0::1;-1:-1:-1::0;;;;;17639:13:0;;;::::1;;::::0;;;:6:::1;:13;::::0;;;;:23;;-1:-1:-1;;17639:23:0::1;::::0;::::1;;::::0;;;::::1;::::0;;17488:182::o;2906:458::-;3012:4;3029:36;3039:6;3047:9;3058:6;3029:9;:36::i;:::-;-1:-1:-1;;;;;3105:19:0;;3078:24;3105:19;;;:11;:19;;;;;;;;306:10;3105:33;;;;;;;;3157:26;;;;3149:79;;;;-1:-1:-1;;;3149:79:0;;5613:2:1;3149:79:0;;;5595:21:1;5652:2;5632:18;;;5625:30;5691:34;5671:18;;;5664:62;-1:-1:-1;;;5742:18:1;;;5735:38;5790:19;;3149:79:0;5411:404:1;3149:79:0;3264:57;3273:6;306:10;3314:6;3295:16;:25;3264:8;:57::i;:::-;-1:-1:-1;3352:4:0;;2906:458;-1:-1:-1;;;;2906:458:0:o;3372:215::-;306:10;3460:4;3509:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;3509:34:0;;;;;;;;;;3460:4;;3477:80;;3500:7;;3509:47;;3546:10;;3509:47;:::i;:::-;3477:8;:80::i;17286:194::-;5707:6;;-1:-1:-1;;;;;5707:6:0;306:10;5707:22;5699:67;;;;-1:-1:-1;;;5699:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;17377:15:0;::::1;;::::0;;;:6:::1;:15;::::0;;;;;::::1;;17376:16;17368:62;;;::::0;-1:-1:-1;;;17368:62:0;;6284:2:1;17368:62:0::1;::::0;::::1;6266:21:1::0;6323:2;6303:18;;;6296:30;6362:34;6342:18;;;6335:62;-1:-1:-1;;;6413:18:1;;;6406:31;6454:19;;17368:62:0::1;6082:397:1::0;17368:62:0::1;-1:-1:-1::0;;;;;17441:22:0;;;::::1;;::::0;;;:13:::1;:22;::::0;;;;:31;;-1:-1:-1;;17441:31:0::1;::::0;::::1;;::::0;;;::::1;::::0;;17286:194::o;17161:117::-;5707:6;;-1:-1:-1;;;;;5707:6:0;306:10;5707:22;5699:67;;;;-1:-1:-1;;;5699:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;17241:20:0;;;::::1;;::::0;;;:11:::1;:20;::::0;;;;:29;;-1:-1:-1;;17241:29:0::1;::::0;::::1;;::::0;;;::::1;::::0;;17161:117::o;17881:297::-;5707:6;;-1:-1:-1;;;;;5707:6:0;306:10;5707:22;5699:67;;;;-1:-1:-1;;;5699:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;17971:20:0;::::1;17963:59;;;::::0;-1:-1:-1;;;17963:59:0;;6686:2:1;17963:59:0::1;::::0;::::1;6668:21:1::0;6725:2;6705:18;;;6698:30;6764:28;6744:18;;;6737:56;6810:18;;17963:59:0::1;6484:350:1::0;17963:59:0::1;18060:39;::::0;-1:-1:-1;;;18060:39:0;;18093:4:::1;18060:39;::::0;::::1;1469:51:1::0;18033:24:0::1;::::0;-1:-1:-1;;;;;18060:24:0;::::1;::::0;::::1;::::0;1442:18:1;;18060:39:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;18033:66;;18110:60;18140:6;18148:3;18153:16;18110:22;:60::i;:::-;17952:226;17881:297:::0;;:::o;16945:208::-;5707:6;;-1:-1:-1;;;;;5707:6:0;306:10;5707:22;5699:67;;;;-1:-1:-1;;;5699:67:0;;;;;;;:::i;:::-;17062:4:::1;17057:3;17037:13;2224:12:::0;;;2136:108;17037:13:::1;:17;::::0;17053:1:::1;17037:17;:::i;:::-;:23;;;;:::i;:::-;17036:30;;;;:::i;:::-;17027:6;:39;17019:86;;;::::0;-1:-1:-1;;;17019:86:0;;7625:2:1;17019:86:0::1;::::0;::::1;7607:21:1::0;7664:2;7644:18;;;7637:30;7703:34;7683:18;;;7676:62;-1:-1:-1;;;7754:18:1;;;7747:32;7796:19;;17019:86:0::1;7423:398:1::0;17019:86:0::1;17128:17;:6:::0;17138::::1;17128:17;:::i;:::-;17116:9;:29:::0;-1:-1:-1;16945:208:0:o;5794:150::-;5707:6;;-1:-1:-1;;;;;5707:6:0;306:10;5707:22;5699:67;;;;-1:-1:-1;;;5699:67:0;;;;;;;:::i;:::-;5903:1:::1;5887:6:::0;;5866:40:::1;::::0;-1:-1:-1;;;;;5887:6:0;;::::1;::::0;5866:40:::1;::::0;5903:1;;5866:40:::1;5934:1;5917:19:::0;;-1:-1:-1;;;;;;5917:19:0::1;::::0;;5794:150::o;16617:84::-;5707:6;;-1:-1:-1;;;;;5707:6:0;306:10;5707:22;5699:67;;;;-1:-1:-1;;;5699:67:0;;;;;;;:::i;:::-;16671:14:::1;:22:::0;;-1:-1:-1;;16671:22:0::1;::::0;;16617:84::o;16526:83::-;5707:6;;-1:-1:-1;;;;;5707:6:0;306:10;5707:22;5699:67;;;;-1:-1:-1;;;5699:67:0;;;;;;;:::i;:::-;16581:13:::1;:20:::0;;-1:-1:-1;;16581:20:0::1;;;::::0;;16526:83::o;1923:104::-;1979:13;2012:7;2005:14;;;;;:::i;3595:413::-;306:10;3688:4;3732:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;3732:34:0;;;;;;;;;;3785:35;;;;3777:85;;;;-1:-1:-1;;;3777:85:0;;8028:2:1;3777:85:0;;;8010:21:1;8067:2;8047:18;;;8040:30;8106:34;8086:18;;;8079:62;-1:-1:-1;;;8157:18:1;;;8150:35;8202:19;;3777:85:0;7826:401:1;3777:85:0;3898:67;306:10;3921:7;3949:15;3930:16;:34;3898:8;:67::i;:::-;-1:-1:-1;3996:4:0;;3595:413;-1:-1:-1;;;3595:413:0:o;2387:175::-;2473:4;2490:42;306:10;2514:9;2525:6;2490:9;:42::i;16709:224::-;5707:6;;-1:-1:-1;;;;;5707:6:0;306:10;5707:22;5699:67;;;;-1:-1:-1;;;5699:67:0;;;;;;;:::i;:::-;16821:4:::1;16815;16795:13;2224:12:::0;;;2136:108;16795:13:::1;:17;::::0;16811:1:::1;16795:17;:::i;:::-;:24;;;;:::i;:::-;16794:31;;;;:::i;:::-;16785:6;:40;16777:100;;;::::0;-1:-1:-1;;;16777:100:0;;8434:2:1;16777:100:0::1;::::0;::::1;8416:21:1::0;8473:2;8453:18;;;8446:30;8512:34;8492:18;;;8485:62;-1:-1:-1;;;8563:18:1;;;8556:45;8618:19;;16777:100:0::1;8232:411:1::0;16777:100:0::1;16908:17;:6:::0;16918::::1;16908:17;:::i;:::-;16888;:37:::0;-1:-1:-1;16709:224:0:o;5952:244::-;5707:6;;-1:-1:-1;;;;;5707:6:0;306:10;5707:22;5699:67;;;;-1:-1:-1;;;5699:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;6041:22:0;::::1;6033:73;;;::::0;-1:-1:-1;;;6033:73:0;;8850:2:1;6033:73:0::1;::::0;::::1;8832:21:1::0;8889:2;8869:18;;;8862:30;8928:34;8908:18;;;8901:62;-1:-1:-1;;;8979:18:1;;;8972:36;9025:19;;6033:73:0::1;8648:402:1::0;6033:73:0::1;6143:6;::::0;;6122:38:::1;::::0;-1:-1:-1;;;;;6122:38:0;;::::1;::::0;6143:6;::::1;::::0;6122:38:::1;::::0;::::1;6171:6;:17:::0;;-1:-1:-1;;;;;;6171:17:0::1;-1:-1:-1::0;;;;;6171:17:0;;;::::1;::::0;;;::::1;::::0;;5952:244::o;4903:346::-;-1:-1:-1;;;;;5005:19:0;;4997:68;;;;-1:-1:-1;;;4997:68:0;;9257:2:1;4997:68:0;;;9239:21:1;9296:2;9276:18;;;9269:30;9335:34;9315:18;;;9308:62;-1:-1:-1;;;9386:18:1;;;9379:34;9430:19;;4997:68:0;9055:400:1;4997:68:0;-1:-1:-1;;;;;5084:21:0;;5076:68;;;;-1:-1:-1;;;5076:68:0;;9662:2:1;5076:68:0;;;9644:21:1;9701:2;9681:18;;;9674:30;9740:34;9720:18;;;9713:62;-1:-1:-1;;;9791:18:1;;;9784:32;9833:19;;5076:68:0;9460:398:1;5076:68:0;-1:-1:-1;;;;;5157:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;5209:32;;1885:25:1;;;5209:32:0;;1858:18:1;5209:32:0;;;;;;;4903:346;;;:::o;15553:965::-;15680:14;;;;:34;;;;-1:-1:-1;;;;;;15699:15:0;;;;;;:11;:15;;;;;;;;15698:16;15680:34;:56;;;;-1:-1:-1;;;;;;15719:17:0;;;;;;:11;:17;;;;;;;;15718:18;15680:56;15677:790;;;15761:13;;;;;;;15753:44;;;;-1:-1:-1;;;15753:44:0;;10065:2:1;15753:44:0;;;10047:21:1;10104:2;10084:18;;;10077:30;-1:-1:-1;;;10123:18:1;;;10116:48;10181:18;;15753:44:0;9863:342:1;15753:44:0;-1:-1:-1;;;;;15840:12:0;;;;;;:6;:12;;;;;;;;:34;;;;-1:-1:-1;;;;;;15857:17:0;;;;;;:13;:17;;;;;;;;15856:18;15840:34;15836:620;;;15913:17;;15903:6;:27;;15895:77;;;;-1:-1:-1;;;15895:77:0;;10412:2:1;15895:77:0;;;10394:21:1;10451:2;10431:18;;;10424:30;10490:34;10470:18;;;10463:62;-1:-1:-1;;;10541:18:1;;;10534:35;10586:19;;15895:77:0;10210:401:1;15895:77:0;16025:9;;-1:-1:-1;;;;;2353:18:0;;2326:7;2353:18;;;:9;:18;;;;;;15999:22;;:6;:22;:::i;:::-;:35;;15991:72;;;;-1:-1:-1;;;15991:72:0;;10818:2:1;15991:72:0;;;10800:21:1;10857:2;10837:18;;;10830:30;-1:-1:-1;;;10876:18:1;;;10869:54;10940:18;;15991:72:0;10616:348:1;15991:72:0;15836:620;;;-1:-1:-1;;;;;16128:10:0;;;;;;:6;:10;;;;;;;;:34;;;;-1:-1:-1;;;;;;16143:19:0;;;;;;:13;:19;;;;;;;;16142:20;16128:34;16124:332;;;16201:17;;16191:6;:27;;16183:79;;;;-1:-1:-1;;;16183:79:0;;11171:2:1;16183:79:0;;;11153:21:1;11210:2;11190:18;;;11183:30;11249:34;11229:18;;;11222:62;-1:-1:-1;;;11300:18:1;;;11293:37;11347:19;;16183:79:0;10969:403:1;16124:332:0;-1:-1:-1;;;;;16331:17:0;;;;;;:13;:17;;;;;;;;16326:130;;16402:9;;-1:-1:-1;;;;;2353:18:0;;2326:7;2353:18;;;:9;:18;;;;;;16376:22;;:6;:22;:::i;:::-;:35;;16368:72;;;;-1:-1:-1;;;16368:72:0;;10818:2:1;16368:72:0;;;10800:21:1;10857:2;10837:18;;;10830:30;-1:-1:-1;;;10876:18:1;;;10869:54;10940:18;;16368:72:0;10616:348:1;16368:72:0;16477:33;16493:4;16499:2;16503:6;16477:15;:33::i;12366:211::-;12510:58;;;-1:-1:-1;;;;;11569:32:1;;12510:58:0;;;11551:51:1;11618:18;;;;11611:34;;;12510:58:0;;;;;;;;;;11524:18:1;;;;12510:58:0;;;;;;;;-1:-1:-1;;;;;12510:58:0;-1:-1:-1;;;12510:58:0;;;12483:86;;12503:5;;12483:19;:86::i;4016:580::-;-1:-1:-1;;;;;4122:20:0;;4114:70;;;;-1:-1:-1;;;4114:70:0;;11858:2:1;4114:70:0;;;11840:21:1;11897:2;11877:18;;;11870:30;11936:34;11916:18;;;11909:62;-1:-1:-1;;;11987:18:1;;;11980:35;12032:19;;4114:70:0;11656:401:1;4114:70:0;-1:-1:-1;;;;;4203:23:0;;4195:71;;;;-1:-1:-1;;;4195:71:0;;12264:2:1;4195:71:0;;;12246:21:1;12303:2;12283:18;;;12276:30;12342:34;12322:18;;;12315:62;-1:-1:-1;;;12393:18:1;;;12386:33;12436:19;;4195:71:0;12062:399:1;4195:71:0;-1:-1:-1;;;;;4303:17:0;;4279:21;4303:17;;;:9;:17;;;;;;4339:23;;;;4331:74;;;;-1:-1:-1;;;4331:74:0;;12668:2:1;4331:74:0;;;12650:21:1;12707:2;12687:18;;;12680:30;12746:34;12726:18;;;12719:62;-1:-1:-1;;;12797:18:1;;;12790:36;12843:19;;4331:74:0;12466:402:1;4331:74:0;-1:-1:-1;;;;;4441:17:0;;;;;;;:9;:17;;;;;;4461:22;;;4441:42;;4505:20;;;;;;;;:30;;4477:6;;4441:17;4505:30;;4477:6;;4505:30;:::i;:::-;;;;;;;;4570:9;-1:-1:-1;;;;;4553:35:0;4562:6;-1:-1:-1;;;;;4553:35:0;;4581:6;4553:35;;;;1885:25:1;;1873:2;1858:18;;1739:177;4553:35:0;;;;;;;;4103:493;4016:580;;;:::o;12585:333::-;12666:23;12692:69;12720:4;12692:69;;;;;;;;;;;;;;;;;12700:5;-1:-1:-1;;;;;12692:27:0;;;:69;;;;;:::i;:::-;12776:17;;12666:95;;-1:-1:-1;12776:21:0;12772:139;;12833:10;12822:30;;;;;;;;;;;;:::i;:::-;12814:85;;;;-1:-1:-1;;;12814:85:0;;13325:2:1;12814:85:0;;;13307:21:1;13364:2;13344:18;;;13337:30;13403:34;13383:18;;;13376:62;-1:-1:-1;;;13454:18:1;;;13447:40;13504:19;;12814:85:0;13123:406:1;6869:229:0;7006:12;7038:52;7060:6;7068:4;7074:1;7077:12;7038:21;:52::i;:::-;7031:59;6869:229;-1:-1:-1;;;;6869:229:0:o;7989:455::-;8159:12;8217:5;8192:21;:30;;8184:81;;;;-1:-1:-1;;;8184:81:0;;13736:2:1;8184:81:0;;;13718:21:1;13775:2;13755:18;;;13748:30;13814:34;13794:18;;;13787:62;-1:-1:-1;;;13865:18:1;;;13858:36;13911:19;;8184:81:0;13534:402:1;8184:81:0;8277:12;8291:23;8318:6;-1:-1:-1;;;;;8318:11:0;8337:5;8344:4;8318:31;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8276:73;;;;8367:69;8394:6;8402:7;8411:10;8423:12;8367:26;:69::i;:::-;8360:76;7989:455;-1:-1:-1;;;;;;;7989:455:0:o;10562:644::-;10747:12;10776:7;10772:427;;;10804:10;:17;10825:1;10804:22;10800:290;;-1:-1:-1;;;;;6310:19:0;;;11014:60;;;;-1:-1:-1;;;11014:60:0;;14435:2:1;11014:60:0;;;14417:21:1;14474:2;14454:18;;;14447:30;14513:31;14493:18;;;14486:59;14562:18;;11014:60:0;14233:353:1;11014:60:0;-1:-1:-1;11111:10:0;11104:17;;10772:427;11154:33;11162:10;11174:12;11909:17;;:21;11905:388;;12141:10;12135:17;12198:15;12185:10;12181:2;12177:19;12170:44;11905:388;12268:12;12261:20;;-1:-1:-1;;;12261:20:0;;;;;;;;:::i;14:250:1:-;99:1;109:113;123:6;120:1;117:13;109:113;;;199:11;;;193:18;180:11;;;173:39;145:2;138:10;109:113;;;-1:-1:-1;;256:1:1;238:16;;231:27;14:250::o;269:396::-;418:2;407:9;400:21;381:4;450:6;444:13;493:6;488:2;477:9;473:18;466:34;509:79;581:6;576:2;565:9;561:18;556:2;548:6;544:15;509:79;:::i;:::-;649:2;628:15;-1:-1:-1;;624:29:1;609:45;;;;656:2;605:54;;269:396;-1:-1:-1;;269:396:1:o;670:173::-;738:20;;-1:-1:-1;;;;;787:31:1;;777:42;;767:70;;833:1;830;823:12;767:70;670:173;;;:::o;848:254::-;916:6;924;977:2;965:9;956:7;952:23;948:32;945:52;;;993:1;990;983:12;945:52;1016:29;1035:9;1016:29;:::i;:::-;1006:39;1092:2;1077:18;;;;1064:32;;-1:-1:-1;;;848:254:1:o;1921:118::-;2007:5;2000:13;1993:21;1986:5;1983:32;1973:60;;2029:1;2026;2019:12;2044:315;2109:6;2117;2170:2;2158:9;2149:7;2145:23;2141:32;2138:52;;;2186:1;2183;2176:12;2138:52;2209:29;2228:9;2209:29;:::i;:::-;2199:39;;2288:2;2277:9;2273:18;2260:32;2301:28;2323:5;2301:28;:::i;:::-;2348:5;2338:15;;;2044:315;;;;;:::o;2364:328::-;2441:6;2449;2457;2510:2;2498:9;2489:7;2485:23;2481:32;2478:52;;;2526:1;2523;2516:12;2478:52;2549:29;2568:9;2549:29;:::i;:::-;2539:39;;2597:38;2631:2;2620:9;2616:18;2597:38;:::i;:::-;2587:48;;2682:2;2671:9;2667:18;2654:32;2644:42;;2364:328;;;;;:::o;2886:186::-;2945:6;2998:2;2986:9;2977:7;2973:23;2969:32;2966:52;;;3014:1;3011;3004:12;2966:52;3037:29;3056:9;3037:29;:::i;:::-;3027:39;2886:186;-1:-1:-1;;;2886:186:1:o;3077:260::-;3145:6;3153;3206:2;3194:9;3185:7;3181:23;3177:32;3174:52;;;3222:1;3219;3212:12;3174:52;3245:29;3264:9;3245:29;:::i;:::-;3235:39;;3293:38;3327:2;3316:9;3312:18;3293:38;:::i;:::-;3283:48;;3077:260;;;;;:::o;3342:180::-;3401:6;3454:2;3442:9;3433:7;3429:23;3425:32;3422:52;;;3470:1;3467;3460:12;3422:52;-1:-1:-1;3493:23:1;;3342:180;-1:-1:-1;3342:180:1:o;3749:356::-;3951:2;3933:21;;;3970:18;;;3963:30;4029:34;4024:2;4009:18;;4002:62;4096:2;4081:18;;3749:356::o;4670:380::-;4749:1;4745:12;;;;4792;;;4813:61;;4867:4;4859:6;4855:17;4845:27;;4813:61;4920:2;4912:6;4909:14;4889:18;4886:38;4883:161;;4966:10;4961:3;4957:20;4954:1;4947:31;5001:4;4998:1;4991:15;5029:4;5026:1;5019:15;4883:161;;4670:380;;;:::o;5820:127::-;5881:10;5876:3;5872:20;5869:1;5862:31;5912:4;5909:1;5902:15;5936:4;5933:1;5926:15;5952:125;6017:9;;;6038:10;;;6035:36;;;6051:18;;:::i;6839:184::-;6909:6;6962:2;6950:9;6941:7;6937:23;6933:32;6930:52;;;6978:1;6975;6968:12;6930:52;-1:-1:-1;7001:16:1;;6839:184;-1:-1:-1;6839:184:1:o;7028:168::-;7101:9;;;7132;;7149:15;;;7143:22;;7129:37;7119:71;;7170:18;;:::i;7201:217::-;7241:1;7267;7257:132;;7311:10;7306:3;7302:20;7299:1;7292:31;7346:4;7343:1;7336:15;7374:4;7371:1;7364:15;7257:132;-1:-1:-1;7403:9:1;;7201:217::o;12873:245::-;12940:6;12993:2;12981:9;12972:7;12968:23;12964:32;12961:52;;;13009:1;13006;12999:12;12961:52;13041:9;13035:16;13060:28;13082:5;13060:28;:::i;13941:287::-;14070:3;14108:6;14102:13;14124:66;14183:6;14178:3;14171:4;14163:6;14159:17;14124:66;:::i;:::-;14206:16;;;;;13941:287;-1:-1:-1;;13941:287:1:o

Swarm Source

ipfs://b75ec3b2923cab0094de99b7eb68f3bb3ca18316a8aba2f0ef5f26a492d4bac8
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.