ETH Price: $3,135.83 (-8.75%)
Gas: 8 Gwei

Token

ELONCAT (DINGER)
 

Overview

Max Total Supply

100,000,000 DINGER

Holders

209

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
200,000 DINGER

Value
$0.00
0x75c964dbecc9e3315458b1e84e87284e81b05fef
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:
ELONCAT

Compiler Version
v0.8.19+commit.7dd6d404

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, Unlicense license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-12-20
*/

//SPDX-License-Identifier: UNLICENSED


// telegram : https://t.me/eloncatentry
// twitter (X) : https://twitter.com/eloncatdinger
// Website : https://eloncat.xyz
// Inspired by a thought experiment in quantum physics, Elon Musk named his cat Schrödinger. This event is far from trivial; it marks the beginning of a legend. 
//Schrödinger isn’t just the cat with the world’s coolest name; he’s also the wealthiest.  ticker is $DINGER .


pragma solidity ^0.8.19;

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);

    event Transfer(address indexed from, address indexed to, uint256 value);

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

interface IERC20Metadata is IERC20 {
    /**
     * @dev Returns the name of the token.
     */
    function name() external view returns (string memory);

    /**
     * @dev Returns the symbol of the token.
     */
    function symbol() external view returns (string memory);

    /**
     * @dev Returns the decimals places of the token.
     */
    function decimals() external view returns (uint8);
}

contract ERC20 is Context, IERC20, IERC20Metadata {
    mapping(address => uint256) internal _balances;

    mapping(address => mapping(address => uint256)) internal _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");
        _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");
        _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");

        _beforeTokenTransfer(sender, recipient, amount);

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

        emit Transfer(sender, recipient, amount);
    }

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

        _beforeTokenTransfer(address(0), account, amount);

        _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);
    }

    
    function _beforeTokenTransfer(
        address from,
        address to,
        uint256 amount
    ) internal virtual {}
}

library Address {
    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");
    }
}

abstract contract Ownable is Context {
    address private _owner;

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

    constructor() {
        _setOwner(_msgSender());
    }

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

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

    function renounceOwnership() public virtual onlyOwner {
        _setOwner(address(0));
    }

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

    function _setOwner(address newOwner) private {
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
    }
}

interface IFactory {
    function createPair(address tokenA, address tokenB) external returns (address pair);
}

interface IRouter {
    function factory() external pure returns (address);

    function WETH() external pure returns (address);

    function addLiquidityETH(
        address token,
        uint256 amountTokenDesired,
        uint256 amountTokenMin,
        uint256 amountETHMin,
        address to,
        uint256 deadline
    )
        external
        payable
        returns (
            uint256 amountToken,
            uint256 amountETH,
            uint256 liquidity
        );

    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint256 amountIn,
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external;
}

contract ELONCAT  is ERC20, Ownable {
    using Address for address payable;

    IRouter public router;
    address public pair;

    bool private _liquidityMutex = false;
    bool private  providingLiquidity = false;
    bool public tradingEnabled = false;

    uint256 private  tokenLiquidityThreshold = 200000 * 10**18;
    uint256 public maxWalletLimit = 100000000 * 10**18;

    uint256 private  genesis_block;
    uint256 private deadline = 1;
    uint256 private launchtax = 95;

    address private  marketingWallet = 0xeA589b21cD139Deee2e28d0c08515854ECcBc606;
	address public constant deadWallet = 0x000000000000000000000000000000000000dEaD;

    struct Taxes {
        uint256 marketing;
        uint256 liquidity;
    }

    Taxes public taxes = Taxes(5, 2);
    Taxes public sellTaxes = Taxes(10, 4);

    mapping(address => bool) public exemptFee;
    


    modifier mutexLock() {
        if (!_liquidityMutex) {
            _liquidityMutex = true;
            _;
            _liquidityMutex = false;
        }
    }

    constructor() ERC20("ELONCAT", "DINGER") {
        _tokengeneration(msg.sender, 100000000 * 10**decimals());

        IRouter _router = IRouter(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        // Create a pair for this new token
        address _pair = IFactory(_router.factory()).createPair(address(this), _router.WETH());

        router = _router;
        pair = _pair;
        exemptFee[address(this)] = true;
        exemptFee[msg.sender] = true;
        exemptFee[marketingWallet] = true;
        exemptFee[deadWallet] = true;
        
    }

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

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

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

        return true;
    }

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

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

        return true;
    }

    function transfer(address recipient, uint256 amount) public override returns (bool) {
        _transfer(msg.sender, recipient, amount);
        return true;
    }

    function _transfer(
        address sender,
        address recipient,
        uint256 amount
    ) internal override {
        require(amount > 0, "Transfer amount must be greater than zero");
        

        if (!exemptFee[sender] && !exemptFee[recipient]) {
            require(tradingEnabled, "Trading not enabled");
        }

        if (sender == pair && !exemptFee[recipient] && !_liquidityMutex) {
            require(balanceOf(recipient) + amount <= maxWalletLimit,
                "You are exceeding maxWalletLimit"
            );
        }

        if (sender != pair && !exemptFee[recipient] && !exemptFee[sender] && !_liquidityMutex) {
           
            if (recipient != pair) {
                require(balanceOf(recipient) + amount <= maxWalletLimit,
                    "You are exceeding maxWalletLimit"
                );
            }
        }

        uint256 feeswap;
        uint256 feesum;
        uint256 fee;
        Taxes memory currentTaxes;

        bool useLaunchFee = !exemptFee[sender] &&
            !exemptFee[recipient] &&
            block.number < genesis_block + deadline;

        //set fee to zero if fees in contract are handled or exempted
        if (_liquidityMutex || exemptFee[sender] || exemptFee[recipient])
            fee = 0;

            //calculate fee
        else if (recipient == pair && !useLaunchFee) {
            feeswap =
                sellTaxes.liquidity +
                sellTaxes.marketing ;
            feesum = feeswap;
            currentTaxes = sellTaxes;
        } else if (!useLaunchFee) {
            feeswap =
                taxes.liquidity +
                taxes.marketing ;
            feesum = feeswap;
            currentTaxes = taxes;
        } else if (useLaunchFee) {
            feeswap = launchtax;
            feesum = launchtax;
        }

        fee = (amount * feesum) / 100;

        //send fees if threshold has been reached
        //don't do this on buys, breaks swap
        if (providingLiquidity && sender != pair) handle_fees(feeswap, currentTaxes);

        //rest to recipient
        super._transfer(sender, recipient, amount - fee);
        if (fee > 0) {
            //send the fee to the contract
            if (feeswap > 0) {
                uint256 feeAmount = (amount * feeswap) / 100;
                super._transfer(sender, address(this), feeAmount);
            }

        }
    }

    function handle_fees(uint256 feeswap, Taxes memory swapTaxes) private mutexLock {

	if(feeswap == 0){
            return;
        }	

        uint256 contractBalance = balanceOf(address(this));
        if (contractBalance >= tokenLiquidityThreshold) {
            if (tokenLiquidityThreshold > 1) {
                contractBalance = tokenLiquidityThreshold;
            }

            // Split the contract balance into halves
            uint256 denominator = feeswap * 2;
            uint256 tokensToAddLiquidityWith = (contractBalance * swapTaxes.liquidity) /
                denominator;
            uint256 toSwap = contractBalance - tokensToAddLiquidityWith;

            uint256 initialBalance = address(this).balance;

            swapTokensForETH(toSwap);

            uint256 deltaBalance = address(this).balance - initialBalance;
            uint256 unitBalance = deltaBalance / (denominator - swapTaxes.liquidity);
            uint256 ethToAddLiquidityWith = unitBalance * swapTaxes.liquidity;

            if (ethToAddLiquidityWith > 0) {
                // Add liquidity
                addLiquidity(tokensToAddLiquidityWith, ethToAddLiquidityWith);
            }

            uint256 marketingAmt = unitBalance * 2 * swapTaxes.marketing;
            if (marketingAmt > 0) {
                payable(marketingWallet).sendValue(marketingAmt);
            }

        }
    }

    function swapTokensForETH(uint256 tokenAmount) private {
        // generate the pair path of token -> weth
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = router.WETH();

        _approve(address(this), address(router), tokenAmount);

        // make the swap
        router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0,
            path,
            address(this),
            block.timestamp
        );
    }

    function addLiquidity(uint256 tokenAmount, uint256 ethAmount) private {
        // approve token transfer to cover all possible scenarios
        _approve(address(this), address(router), tokenAmount);

        // add the liquidity
        router.addLiquidityETH{ value: ethAmount }(
            address(this),
            tokenAmount,
            0, // slippage is unavoidable
            0, // slippage is unavoidable
            deadWallet,
            block.timestamp
        );
    }

    function updateLiquidityProvide(bool state) external onlyOwner {
        //update liquidity providing state
        providingLiquidity = state;
    }

    function updateLiquidityTreshhold(uint256 new_amount) external onlyOwner {
        //update the treshhold
        tokenLiquidityThreshold = new_amount * 10**decimals();
    }

    function UpdateBuyTaxes(
        uint256 _marketing,
        uint256 _liquidity
    ) external onlyOwner {
        taxes = Taxes(_marketing, _liquidity);
    }

    function SetSellTaxes(
        uint256 _marketing,
        uint256 _liquidity
    ) external onlyOwner {
        sellTaxes = Taxes(_marketing, _liquidity);
    }

   function enableTrading() external onlyOwner {
        require(!tradingEnabled, "Trading is already enabled");
        tradingEnabled = true;
        providingLiquidity = true;
        genesis_block = block.number;
    }

    function updatedeadline(uint256 _deadline) external onlyOwner {
        require(!tradingEnabled, "Can't change when trading has started");
        deadline = _deadline;
    }

    function updateMarketingWallet(address newWallet) external onlyOwner {
        marketingWallet = newWallet;
    }

    function AddExemptFee(address _address) external onlyOwner {
        exemptFee[_address] = true;
    }

    function RemoveExemptFee(address _address) external onlyOwner {
        exemptFee[_address] = false;
    }


    function updateMaxWalletLimit(uint256 maxWallet) external onlyOwner {
        maxWalletLimit = maxWallet * 10**decimals(); 
    }

    function rescueETH(uint256 weiAmount) external onlyOwner {
        payable(owner()).transfer(weiAmount);
    }

    function rescueERC20(address tokenAdd, uint256 amount) external onlyOwner {
        IERC20(tokenAdd).transfer(owner(), amount);
    }

    // fallbacks
    receive() external payable {}
}

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":[{"internalType":"address","name":"_address","type":"address"}],"name":"AddExemptFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"}],"name":"RemoveExemptFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_marketing","type":"uint256"},{"internalType":"uint256","name":"_liquidity","type":"uint256"}],"name":"SetSellTaxes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_marketing","type":"uint256"},{"internalType":"uint256","name":"_liquidity","type":"uint256"}],"name":"UpdateBuyTaxes","outputs":[],"stateMutability":"nonpayable","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":"deadWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"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":"","type":"address"}],"name":"exemptFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","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":[],"name":"maxWalletLimit","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":"pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"tokenAdd","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"rescueERC20","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"weiAmount","type":"uint256"}],"name":"rescueETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"router","outputs":[{"internalType":"contract IRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellTaxes","outputs":[{"internalType":"uint256","name":"marketing","type":"uint256"},{"internalType":"uint256","name":"liquidity","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"taxes","outputs":[{"internalType":"uint256","name":"marketing","type":"uint256"},{"internalType":"uint256","name":"liquidity","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingEnabled","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":"bool","name":"state","type":"bool"}],"name":"updateLiquidityProvide","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"new_amount","type":"uint256"}],"name":"updateLiquidityTreshhold","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newWallet","type":"address"}],"name":"updateMarketingWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxWallet","type":"uint256"}],"name":"updateMaxWalletLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_deadline","type":"uint256"}],"name":"updatedeadline","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

6007805462ffffff60a01b19169055692a5a058fc295ed0000006008556a52b7d2dcc80cd2e40000006009556001600b55605f600c55600d80546001600160a01b03191673ea589b21cd139deee2e28d0c08515854eccbc60617905560056080819052600260a0819052600e91909155600f55610100604052600a60c0819052600460e08190526010919091556011553480156200009c57600080fd5b5060405180604001604052806007815260200166115313d390d05560ca1b815250604051806040016040528060068152602001652224a723a2a960d11b8152508160039081620000ed91906200050c565b506004620000fc82826200050c565b50505062000119620001136200035060201b60201c565b62000354565b62000142336200012c6012600a620006ed565b6200013c906305f5e10062000705565b620003a6565b6000737a250d5630b4cf539739df2c5dacb4c659f2488d90506000816001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200019c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001c291906200071f565b6001600160a01b031663c9c6539630846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000210573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200023691906200071f565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af115801562000284573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002aa91906200071f565b600680546001600160a01b03199081166001600160a01b0395861617909155600780549091169184169190911790555030600090815260126020526040808220805460ff1990811660019081179092553384528284208054821683179055600d549094168352908220805484168217905561dead9091527f1120e10407cab1193d7c5139d9aae5536deb3d83e855f25f8e42f811c01f56f780549092161790556200074a565b3390565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b0382166200040f5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2067656e65726174696f6e20746f20746865207a65726f206164604482015264647265737360d81b606482015260840160405180910390fd5b60028190556001600160a01b038216600081815260208181526040808320859055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050565b505050565b634e487b7160e01b600052604160045260246000fd5b600181811c908216806200049357607f821691505b602082108103620004b457634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200046357600081815260208120601f850160051c81016020861015620004e35750805b601f850160051c820191505b818110156200050457828155600101620004ef565b505050505050565b81516001600160401b0381111562000528576200052862000468565b62000540816200053984546200047e565b84620004ba565b602080601f8311600181146200057857600084156200055f5750858301515b600019600386901b1c1916600185901b17855562000504565b600085815260208120601f198616915b82811015620005a95788860151825594840194600190910190840162000588565b5085821015620005c85787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052601160045260246000fd5b600181815b808511156200062f578160001904821115620006135762000613620005d8565b808516156200062157918102915b93841c9390800290620005f3565b509250929050565b6000826200064857506001620006e7565b816200065757506000620006e7565b81600181146200067057600281146200067b576200069b565b6001915050620006e7565b60ff8411156200068f576200068f620005d8565b50506001821b620006e7565b5060208310610133831016604e8410600b8410161715620006c0575081810a620006e7565b620006cc8383620005ee565b8060001904821115620006e357620006e3620005d8565b0290505b92915050565b6000620006fe60ff84168362000637565b9392505050565b8082028115828204841417620006e757620006e7620005d8565b6000602082840312156200073257600080fd5b81516001600160a01b0381168114620006fe57600080fd5b611f8c806200075a6000396000f3fe6080604052600436106101fd5760003560e01c80638a8c523c1161010d578063aacebbe3116100a0578063edaa11681161006f578063edaa1168146105ff578063f2fde38b1461061f578063f52be97c1461063f578063f66895a31461065f578063f887ea401461067a57600080fd5b8063aacebbe314610549578063c5d32bb214610569578063d695609b14610599578063dd62ed3e146105b957600080fd5b80639e252f00116100dc5780639e252f00146104c9578063a457c2d7146104e9578063a8aa1b3114610509578063a9059cbb1461052957600080fd5b80638a8c523c146104615780638cd4426d146104765780638da5cb5b1461049657806395d89b41146104b457600080fd5b80634324deae1161019057806370a082311161015f57806370a0823114610398578063715018a6146103ce578063728f8eea146103e3578063832c2bd21461041357806385141a771461043357600080fd5b80634324deae146103215780634ada218b146103415780635dbdb7e31461036257806366a88d961461038257600080fd5b806323b872dd116101cc57806323b872dd146102a5578063313ce567146102c557806339509351146102e157806342b6fa111461030157600080fd5b806306fdde0314610209578063095ea7b3146102345780631340538f1461026457806318160ddd1461028657600080fd5b3661020457005b600080fd5b34801561021557600080fd5b5061021e61069a565b60405161022b9190611afd565b60405180910390f35b34801561024057600080fd5b5061025461024f366004611b60565b61072c565b604051901515815260200161022b565b34801561027057600080fd5b5061028461027f366004611b9a565b610743565b005b34801561029257600080fd5b506002545b60405190815260200161022b565b3480156102b157600080fd5b506102546102c0366004611bbe565b610794565b3480156102d157600080fd5b506040516012815260200161022b565b3480156102ed57600080fd5b506102546102fc366004611b60565b610845565b34801561030d57600080fd5b5061028461031c366004611bff565b61087c565b34801561032d57600080fd5b5061028461033c366004611bff565b6108c2565b34801561034d57600080fd5b5060075461025490600160b01b900460ff1681565b34801561036e57600080fd5b5061028461037d366004611c18565b610908565b34801561038e57600080fd5b5061029760095481565b3480156103a457600080fd5b506102976103b3366004611c18565b6001600160a01b031660009081526020819052604090205490565b3480156103da57600080fd5b50610284610956565b3480156103ef57600080fd5b50600e54600f546103fe919082565b6040805192835260208301919091520161022b565b34801561041f57600080fd5b5061028461042e366004611c18565b61098c565b34801561043f57600080fd5b5061044961dead81565b6040516001600160a01b03909116815260200161022b565b34801561046d57600080fd5b506102846109d7565b34801561048257600080fd5b50610284610491366004611b60565b610a76565b3480156104a257600080fd5b506005546001600160a01b0316610449565b3480156104c057600080fd5b5061021e610b37565b3480156104d557600080fd5b506102846104e4366004611bff565b610b46565b3480156104f557600080fd5b50610254610504366004611b60565b610bae565b34801561051557600080fd5b50600754610449906001600160a01b031681565b34801561053557600080fd5b50610254610544366004611b60565b610c49565b34801561055557600080fd5b50610284610564366004611c18565b610c56565b34801561057557600080fd5b50610254610584366004611c18565b60126020526000908152604090205460ff1681565b3480156105a557600080fd5b506102846105b4366004611c35565b610ca2565b3480156105c557600080fd5b506102976105d4366004611c57565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b34801561060b57600080fd5b5061028461061a366004611bff565b610cea565b34801561062b57600080fd5b5061028461063a366004611c18565b610d81565b34801561064b57600080fd5b5061028461065a366004611c35565b610e1c565b34801561066b57600080fd5b506010546011546103fe919082565b34801561068657600080fd5b50600654610449906001600160a01b031681565b6060600380546106a990611c90565b80601f01602080910402602001604051908101604052809291908181526020018280546106d590611c90565b80156107225780601f106106f757610100808354040283529160200191610722565b820191906000526020600020905b81548152906001019060200180831161070557829003601f168201915b5050505050905090565b6000610739338484610e64565b5060015b92915050565b6005546001600160a01b031633146107765760405162461bcd60e51b815260040161076d90611cca565b60405180910390fd5b60078054911515600160a81b0260ff60a81b19909216919091179055565b60006107a1848484610f88565b6001600160a01b0384166000908152600160209081526040808320338452909152902054828110156108265760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b606482015260840161076d565b61083a85336108358685611d15565b610e64565b506001949350505050565b3360008181526001602090815260408083206001600160a01b03871684529091528120549091610739918590610835908690611d28565b6005546001600160a01b031633146108a65760405162461bcd60e51b815260040161076d90611cca565b6108b26012600a611e1f565b6108bc9082611e2e565b60085550565b6005546001600160a01b031633146108ec5760405162461bcd60e51b815260040161076d90611cca565b6108f86012600a611e1f565b6109029082611e2e565b60095550565b6005546001600160a01b031633146109325760405162461bcd60e51b815260040161076d90611cca565b6001600160a01b03166000908152601260205260409020805460ff19166001179055565b6005546001600160a01b031633146109805760405162461bcd60e51b815260040161076d90611cca565b61098a6000611471565b565b6005546001600160a01b031633146109b65760405162461bcd60e51b815260040161076d90611cca565b6001600160a01b03166000908152601260205260409020805460ff19169055565b6005546001600160a01b03163314610a015760405162461bcd60e51b815260040161076d90611cca565b600754600160b01b900460ff1615610a5b5760405162461bcd60e51b815260206004820152601a60248201527f54726164696e6720697320616c726561647920656e61626c6564000000000000604482015260640161076d565b6007805461ffff60a81b191661010160a81b17905543600a55565b6005546001600160a01b03163314610aa05760405162461bcd60e51b815260040161076d90611cca565b816001600160a01b031663a9059cbb610ac16005546001600160a01b031690565b6040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602481018490526044016020604051808303816000875af1158015610b0e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b329190611e45565b505050565b6060600480546106a990611c90565b6005546001600160a01b03163314610b705760405162461bcd60e51b815260040161076d90611cca565b6005546040516001600160a01b039091169082156108fc029083906000818181858888f19350505050158015610baa573d6000803e3d6000fd5b5050565b3360009081526001602090815260408083206001600160a01b038616845290915281205482811015610c305760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b606482015260840161076d565b610c3f33856108358685611d15565b5060019392505050565b6000610739338484610f88565b6005546001600160a01b03163314610c805760405162461bcd60e51b815260040161076d90611cca565b600d80546001600160a01b0319166001600160a01b0392909216919091179055565b6005546001600160a01b03163314610ccc5760405162461bcd60e51b815260040161076d90611cca565b60408051808201909152828152602001819052600e91909155600f55565b6005546001600160a01b03163314610d145760405162461bcd60e51b815260040161076d90611cca565b600754600160b01b900460ff1615610d7c5760405162461bcd60e51b815260206004820152602560248201527f43616e2774206368616e6765207768656e2074726164696e6720686173207374604482015264185c9d195960da1b606482015260840161076d565b600b55565b6005546001600160a01b03163314610dab5760405162461bcd60e51b815260040161076d90611cca565b6001600160a01b038116610e105760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161076d565b610e1981611471565b50565b6005546001600160a01b03163314610e465760405162461bcd60e51b815260040161076d90611cca565b60408051808201909152828152602001819052601091909155601155565b6001600160a01b038316610ec65760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840161076d565b6001600160a01b038216610f275760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840161076d565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b60008111610fea5760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b606482015260840161076d565b6001600160a01b03831660009081526012602052604090205460ff1615801561102c57506001600160a01b03821660009081526012602052604090205460ff16155b1561108057600754600160b01b900460ff166110805760405162461bcd60e51b8152602060048201526013602482015272151c98591a5b99c81b9bdd08195b98589b1959606a1b604482015260640161076d565b6007546001600160a01b0384811691161480156110b657506001600160a01b03821660009081526012602052604090205460ff16155b80156110cc5750600754600160a01b900460ff16155b1561114c57600954816110f4846001600160a01b031660009081526020819052604090205490565b6110fe9190611d28565b111561114c5760405162461bcd60e51b815260206004820181905260248201527f596f752061726520657863656564696e67206d617857616c6c65744c696d6974604482015260640161076d565b6007546001600160a01b0384811691161480159061118357506001600160a01b03821660009081526012602052604090205460ff16155b80156111a857506001600160a01b03831660009081526012602052604090205460ff16155b80156111be5750600754600160a01b900460ff16155b15611253576007546001600160a01b0383811691161461125357600954816111fb846001600160a01b031660009081526020819052604090205490565b6112059190611d28565b11156112535760405162461bcd60e51b815260206004820181905260248201527f596f752061726520657863656564696e67206d617857616c6c65744c696d6974604482015260640161076d565b6000806000611275604051806040016040528060008152602001600081525090565b6001600160a01b03871660009081526012602052604081205460ff161580156112b757506001600160a01b03871660009081526012602052604090205460ff16155b80156112d15750600b54600a546112ce9190611d28565b43105b600754909150600160a01b900460ff168061130457506001600160a01b03881660009081526012602052604090205460ff165b8061132757506001600160a01b03871660009081526012602052604090205460ff165b1561133557600092506113d1565b6007546001600160a01b038881169116148015611350575080155b15611389576010546011546113659190611d28565b604080518082019091526010548152601154602082015290955085945091506113d1565b806113c257600e54600f5461139e9190611d28565b60408051808201909152600e548152600f54602082015290955085945091506113d1565b80156113d157600c5494508493505b60646113dd8588611e2e565b6113e79190611e62565b600754909350600160a81b900460ff16801561141157506007546001600160a01b03898116911614155b156114205761142085836114c3565b611434888861142f868a611d15565b611600565b8215611467578415611467576000606461144e8789611e2e565b6114589190611e62565b9050611465893083611600565b505b5050505050505050565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600754600160a01b900460ff16610baa576007805460ff60a01b1916600160a01b17905581156115ef573060009081526020819052604090205460085481106115ed576001600854111561151657506008545b6000611523846002611e2e565b90506000818460200151846115389190611e2e565b6115429190611e62565b905060006115508285611d15565b90504761155c826117d8565b60006115688247611d15565b9050600087602001518661157c9190611d15565b6115869083611e62565b9050600088602001518261159a9190611e2e565b905080156115ac576115ac8682611932565b88516000906115bc846002611e2e565b6115c69190611e2e565b905080156115e457600d546115e4906001600160a01b0316826119e4565b50505050505050505b505b6007805460ff60a01b191690555050565b6001600160a01b0383166116645760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b606482015260840161076d565b6001600160a01b0382166116c65760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b606482015260840161076d565b6001600160a01b0383166000908152602081905260409020548181101561173e5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b606482015260840161076d565b6117488282611d15565b6001600160a01b03808616600090815260208190526040808220939093559085168152908120805484929061177e908490611d28565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516117ca91815260200190565b60405180910390a350505050565b604080516002808252606082018352600092602083019080368337019050509050308160008151811061180d5761180d611e84565b6001600160a01b03928316602091820292909201810191909152600654604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015611866573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061188a9190611e9a565b8160018151811061189d5761189d611e84565b6001600160a01b0392831660209182029290920101526006546118c39130911684610e64565b60065460405163791ac94760e01b81526001600160a01b039091169063791ac947906118fc908590600090869030904290600401611eb7565b600060405180830381600087803b15801561191657600080fd5b505af115801561192a573d6000803e3d6000fd5b505050505050565b60065461194a9030906001600160a01b031684610e64565b60065460405163f305d71960e01b815230600482015260248101849052600060448201819052606482015261dead60848201524260a48201526001600160a01b039091169063f305d71990839060c40160606040518083038185885af11580156119b8573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906119dd9190611f28565b5050505050565b80471015611a345760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e6365000000604482015260640161076d565b6000826001600160a01b03168260405160006040518083038185875af1925050503d8060008114611a81576040519150601f19603f3d011682016040523d82523d6000602084013e611a86565b606091505b5050905080610b325760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260448201527f6563697069656e74206d61792068617665207265766572746564000000000000606482015260840161076d565b600060208083528351808285015260005b81811015611b2a57858101830151858201604001528201611b0e565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114610e1957600080fd5b60008060408385031215611b7357600080fd5b8235611b7e81611b4b565b946020939093013593505050565b8015158114610e1957600080fd5b600060208284031215611bac57600080fd5b8135611bb781611b8c565b9392505050565b600080600060608486031215611bd357600080fd5b8335611bde81611b4b565b92506020840135611bee81611b4b565b929592945050506040919091013590565b600060208284031215611c1157600080fd5b5035919050565b600060208284031215611c2a57600080fd5b8135611bb781611b4b565b60008060408385031215611c4857600080fd5b50508035926020909101359150565b60008060408385031215611c6a57600080fd5b8235611c7581611b4b565b91506020830135611c8581611b4b565b809150509250929050565b600181811c90821680611ca457607f821691505b602082108103611cc457634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052601160045260246000fd5b8181038181111561073d5761073d611cff565b8082018082111561073d5761073d611cff565b600181815b80851115611d76578160001904821115611d5c57611d5c611cff565b80851615611d6957918102915b93841c9390800290611d40565b509250929050565b600082611d8d5750600161073d565b81611d9a5750600061073d565b8160018114611db05760028114611dba57611dd6565b600191505061073d565b60ff841115611dcb57611dcb611cff565b50506001821b61073d565b5060208310610133831016604e8410600b8410161715611df9575081810a61073d565b611e038383611d3b565b8060001904821115611e1757611e17611cff565b029392505050565b6000611bb760ff841683611d7e565b808202811582820484141761073d5761073d611cff565b600060208284031215611e5757600080fd5b8151611bb781611b8c565b600082611e7f57634e487b7160e01b600052601260045260246000fd5b500490565b634e487b7160e01b600052603260045260246000fd5b600060208284031215611eac57600080fd5b8151611bb781611b4b565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015611f075784516001600160a01b031683529383019391830191600101611ee2565b50506001600160a01b03969096166060850152505050608001529392505050565b600080600060608486031215611f3d57600080fd5b835192506020840151915060408401519050925092509256fea2646970667358221220921ee1ff4bbee4af4a8ceb26bf05da219827348ee21498cda5018210ee7f8b4564736f6c63430008130033

Deployed Bytecode

0x6080604052600436106101fd5760003560e01c80638a8c523c1161010d578063aacebbe3116100a0578063edaa11681161006f578063edaa1168146105ff578063f2fde38b1461061f578063f52be97c1461063f578063f66895a31461065f578063f887ea401461067a57600080fd5b8063aacebbe314610549578063c5d32bb214610569578063d695609b14610599578063dd62ed3e146105b957600080fd5b80639e252f00116100dc5780639e252f00146104c9578063a457c2d7146104e9578063a8aa1b3114610509578063a9059cbb1461052957600080fd5b80638a8c523c146104615780638cd4426d146104765780638da5cb5b1461049657806395d89b41146104b457600080fd5b80634324deae1161019057806370a082311161015f57806370a0823114610398578063715018a6146103ce578063728f8eea146103e3578063832c2bd21461041357806385141a771461043357600080fd5b80634324deae146103215780634ada218b146103415780635dbdb7e31461036257806366a88d961461038257600080fd5b806323b872dd116101cc57806323b872dd146102a5578063313ce567146102c557806339509351146102e157806342b6fa111461030157600080fd5b806306fdde0314610209578063095ea7b3146102345780631340538f1461026457806318160ddd1461028657600080fd5b3661020457005b600080fd5b34801561021557600080fd5b5061021e61069a565b60405161022b9190611afd565b60405180910390f35b34801561024057600080fd5b5061025461024f366004611b60565b61072c565b604051901515815260200161022b565b34801561027057600080fd5b5061028461027f366004611b9a565b610743565b005b34801561029257600080fd5b506002545b60405190815260200161022b565b3480156102b157600080fd5b506102546102c0366004611bbe565b610794565b3480156102d157600080fd5b506040516012815260200161022b565b3480156102ed57600080fd5b506102546102fc366004611b60565b610845565b34801561030d57600080fd5b5061028461031c366004611bff565b61087c565b34801561032d57600080fd5b5061028461033c366004611bff565b6108c2565b34801561034d57600080fd5b5060075461025490600160b01b900460ff1681565b34801561036e57600080fd5b5061028461037d366004611c18565b610908565b34801561038e57600080fd5b5061029760095481565b3480156103a457600080fd5b506102976103b3366004611c18565b6001600160a01b031660009081526020819052604090205490565b3480156103da57600080fd5b50610284610956565b3480156103ef57600080fd5b50600e54600f546103fe919082565b6040805192835260208301919091520161022b565b34801561041f57600080fd5b5061028461042e366004611c18565b61098c565b34801561043f57600080fd5b5061044961dead81565b6040516001600160a01b03909116815260200161022b565b34801561046d57600080fd5b506102846109d7565b34801561048257600080fd5b50610284610491366004611b60565b610a76565b3480156104a257600080fd5b506005546001600160a01b0316610449565b3480156104c057600080fd5b5061021e610b37565b3480156104d557600080fd5b506102846104e4366004611bff565b610b46565b3480156104f557600080fd5b50610254610504366004611b60565b610bae565b34801561051557600080fd5b50600754610449906001600160a01b031681565b34801561053557600080fd5b50610254610544366004611b60565b610c49565b34801561055557600080fd5b50610284610564366004611c18565b610c56565b34801561057557600080fd5b50610254610584366004611c18565b60126020526000908152604090205460ff1681565b3480156105a557600080fd5b506102846105b4366004611c35565b610ca2565b3480156105c557600080fd5b506102976105d4366004611c57565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b34801561060b57600080fd5b5061028461061a366004611bff565b610cea565b34801561062b57600080fd5b5061028461063a366004611c18565b610d81565b34801561064b57600080fd5b5061028461065a366004611c35565b610e1c565b34801561066b57600080fd5b506010546011546103fe919082565b34801561068657600080fd5b50600654610449906001600160a01b031681565b6060600380546106a990611c90565b80601f01602080910402602001604051908101604052809291908181526020018280546106d590611c90565b80156107225780601f106106f757610100808354040283529160200191610722565b820191906000526020600020905b81548152906001019060200180831161070557829003601f168201915b5050505050905090565b6000610739338484610e64565b5060015b92915050565b6005546001600160a01b031633146107765760405162461bcd60e51b815260040161076d90611cca565b60405180910390fd5b60078054911515600160a81b0260ff60a81b19909216919091179055565b60006107a1848484610f88565b6001600160a01b0384166000908152600160209081526040808320338452909152902054828110156108265760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b606482015260840161076d565b61083a85336108358685611d15565b610e64565b506001949350505050565b3360008181526001602090815260408083206001600160a01b03871684529091528120549091610739918590610835908690611d28565b6005546001600160a01b031633146108a65760405162461bcd60e51b815260040161076d90611cca565b6108b26012600a611e1f565b6108bc9082611e2e565b60085550565b6005546001600160a01b031633146108ec5760405162461bcd60e51b815260040161076d90611cca565b6108f86012600a611e1f565b6109029082611e2e565b60095550565b6005546001600160a01b031633146109325760405162461bcd60e51b815260040161076d90611cca565b6001600160a01b03166000908152601260205260409020805460ff19166001179055565b6005546001600160a01b031633146109805760405162461bcd60e51b815260040161076d90611cca565b61098a6000611471565b565b6005546001600160a01b031633146109b65760405162461bcd60e51b815260040161076d90611cca565b6001600160a01b03166000908152601260205260409020805460ff19169055565b6005546001600160a01b03163314610a015760405162461bcd60e51b815260040161076d90611cca565b600754600160b01b900460ff1615610a5b5760405162461bcd60e51b815260206004820152601a60248201527f54726164696e6720697320616c726561647920656e61626c6564000000000000604482015260640161076d565b6007805461ffff60a81b191661010160a81b17905543600a55565b6005546001600160a01b03163314610aa05760405162461bcd60e51b815260040161076d90611cca565b816001600160a01b031663a9059cbb610ac16005546001600160a01b031690565b6040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602481018490526044016020604051808303816000875af1158015610b0e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b329190611e45565b505050565b6060600480546106a990611c90565b6005546001600160a01b03163314610b705760405162461bcd60e51b815260040161076d90611cca565b6005546040516001600160a01b039091169082156108fc029083906000818181858888f19350505050158015610baa573d6000803e3d6000fd5b5050565b3360009081526001602090815260408083206001600160a01b038616845290915281205482811015610c305760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b606482015260840161076d565b610c3f33856108358685611d15565b5060019392505050565b6000610739338484610f88565b6005546001600160a01b03163314610c805760405162461bcd60e51b815260040161076d90611cca565b600d80546001600160a01b0319166001600160a01b0392909216919091179055565b6005546001600160a01b03163314610ccc5760405162461bcd60e51b815260040161076d90611cca565b60408051808201909152828152602001819052600e91909155600f55565b6005546001600160a01b03163314610d145760405162461bcd60e51b815260040161076d90611cca565b600754600160b01b900460ff1615610d7c5760405162461bcd60e51b815260206004820152602560248201527f43616e2774206368616e6765207768656e2074726164696e6720686173207374604482015264185c9d195960da1b606482015260840161076d565b600b55565b6005546001600160a01b03163314610dab5760405162461bcd60e51b815260040161076d90611cca565b6001600160a01b038116610e105760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161076d565b610e1981611471565b50565b6005546001600160a01b03163314610e465760405162461bcd60e51b815260040161076d90611cca565b60408051808201909152828152602001819052601091909155601155565b6001600160a01b038316610ec65760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840161076d565b6001600160a01b038216610f275760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840161076d565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b60008111610fea5760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b606482015260840161076d565b6001600160a01b03831660009081526012602052604090205460ff1615801561102c57506001600160a01b03821660009081526012602052604090205460ff16155b1561108057600754600160b01b900460ff166110805760405162461bcd60e51b8152602060048201526013602482015272151c98591a5b99c81b9bdd08195b98589b1959606a1b604482015260640161076d565b6007546001600160a01b0384811691161480156110b657506001600160a01b03821660009081526012602052604090205460ff16155b80156110cc5750600754600160a01b900460ff16155b1561114c57600954816110f4846001600160a01b031660009081526020819052604090205490565b6110fe9190611d28565b111561114c5760405162461bcd60e51b815260206004820181905260248201527f596f752061726520657863656564696e67206d617857616c6c65744c696d6974604482015260640161076d565b6007546001600160a01b0384811691161480159061118357506001600160a01b03821660009081526012602052604090205460ff16155b80156111a857506001600160a01b03831660009081526012602052604090205460ff16155b80156111be5750600754600160a01b900460ff16155b15611253576007546001600160a01b0383811691161461125357600954816111fb846001600160a01b031660009081526020819052604090205490565b6112059190611d28565b11156112535760405162461bcd60e51b815260206004820181905260248201527f596f752061726520657863656564696e67206d617857616c6c65744c696d6974604482015260640161076d565b6000806000611275604051806040016040528060008152602001600081525090565b6001600160a01b03871660009081526012602052604081205460ff161580156112b757506001600160a01b03871660009081526012602052604090205460ff16155b80156112d15750600b54600a546112ce9190611d28565b43105b600754909150600160a01b900460ff168061130457506001600160a01b03881660009081526012602052604090205460ff165b8061132757506001600160a01b03871660009081526012602052604090205460ff165b1561133557600092506113d1565b6007546001600160a01b038881169116148015611350575080155b15611389576010546011546113659190611d28565b604080518082019091526010548152601154602082015290955085945091506113d1565b806113c257600e54600f5461139e9190611d28565b60408051808201909152600e548152600f54602082015290955085945091506113d1565b80156113d157600c5494508493505b60646113dd8588611e2e565b6113e79190611e62565b600754909350600160a81b900460ff16801561141157506007546001600160a01b03898116911614155b156114205761142085836114c3565b611434888861142f868a611d15565b611600565b8215611467578415611467576000606461144e8789611e2e565b6114589190611e62565b9050611465893083611600565b505b5050505050505050565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600754600160a01b900460ff16610baa576007805460ff60a01b1916600160a01b17905581156115ef573060009081526020819052604090205460085481106115ed576001600854111561151657506008545b6000611523846002611e2e565b90506000818460200151846115389190611e2e565b6115429190611e62565b905060006115508285611d15565b90504761155c826117d8565b60006115688247611d15565b9050600087602001518661157c9190611d15565b6115869083611e62565b9050600088602001518261159a9190611e2e565b905080156115ac576115ac8682611932565b88516000906115bc846002611e2e565b6115c69190611e2e565b905080156115e457600d546115e4906001600160a01b0316826119e4565b50505050505050505b505b6007805460ff60a01b191690555050565b6001600160a01b0383166116645760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b606482015260840161076d565b6001600160a01b0382166116c65760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b606482015260840161076d565b6001600160a01b0383166000908152602081905260409020548181101561173e5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b606482015260840161076d565b6117488282611d15565b6001600160a01b03808616600090815260208190526040808220939093559085168152908120805484929061177e908490611d28565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516117ca91815260200190565b60405180910390a350505050565b604080516002808252606082018352600092602083019080368337019050509050308160008151811061180d5761180d611e84565b6001600160a01b03928316602091820292909201810191909152600654604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015611866573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061188a9190611e9a565b8160018151811061189d5761189d611e84565b6001600160a01b0392831660209182029290920101526006546118c39130911684610e64565b60065460405163791ac94760e01b81526001600160a01b039091169063791ac947906118fc908590600090869030904290600401611eb7565b600060405180830381600087803b15801561191657600080fd5b505af115801561192a573d6000803e3d6000fd5b505050505050565b60065461194a9030906001600160a01b031684610e64565b60065460405163f305d71960e01b815230600482015260248101849052600060448201819052606482015261dead60848201524260a48201526001600160a01b039091169063f305d71990839060c40160606040518083038185885af11580156119b8573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906119dd9190611f28565b5050505050565b80471015611a345760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e6365000000604482015260640161076d565b6000826001600160a01b03168260405160006040518083038185875af1925050503d8060008114611a81576040519150601f19603f3d011682016040523d82523d6000602084013e611a86565b606091505b5050905080610b325760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260448201527f6563697069656e74206d61792068617665207265766572746564000000000000606482015260840161076d565b600060208083528351808285015260005b81811015611b2a57858101830151858201604001528201611b0e565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114610e1957600080fd5b60008060408385031215611b7357600080fd5b8235611b7e81611b4b565b946020939093013593505050565b8015158114610e1957600080fd5b600060208284031215611bac57600080fd5b8135611bb781611b8c565b9392505050565b600080600060608486031215611bd357600080fd5b8335611bde81611b4b565b92506020840135611bee81611b4b565b929592945050506040919091013590565b600060208284031215611c1157600080fd5b5035919050565b600060208284031215611c2a57600080fd5b8135611bb781611b4b565b60008060408385031215611c4857600080fd5b50508035926020909101359150565b60008060408385031215611c6a57600080fd5b8235611c7581611b4b565b91506020830135611c8581611b4b565b809150509250929050565b600181811c90821680611ca457607f821691505b602082108103611cc457634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052601160045260246000fd5b8181038181111561073d5761073d611cff565b8082018082111561073d5761073d611cff565b600181815b80851115611d76578160001904821115611d5c57611d5c611cff565b80851615611d6957918102915b93841c9390800290611d40565b509250929050565b600082611d8d5750600161073d565b81611d9a5750600061073d565b8160018114611db05760028114611dba57611dd6565b600191505061073d565b60ff841115611dcb57611dcb611cff565b50506001821b61073d565b5060208310610133831016604e8410600b8410161715611df9575081810a61073d565b611e038383611d3b565b8060001904821115611e1757611e17611cff565b029392505050565b6000611bb760ff841683611d7e565b808202811582820484141761073d5761073d611cff565b600060208284031215611e5757600080fd5b8151611bb781611b8c565b600082611e7f57634e487b7160e01b600052601260045260246000fd5b500490565b634e487b7160e01b600052603260045260246000fd5b600060208284031215611eac57600080fd5b8151611bb781611b4b565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015611f075784516001600160a01b031683529383019391830191600101611ee2565b50506001600160a01b03969096166060850152505050608001529392505050565b600080600060608486031215611f3d57600080fd5b835192506020840151915060408401519050925092509256fea2646970667358221220921ee1ff4bbee4af4a8ceb26bf05da219827348ee21498cda5018210ee7f8b4564736f6c63430008130033

Deployed Bytecode Sourcemap

8504:9989:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2435:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10155:161;;;;;;;;;;-1:-1:-1;10155:161:0;;;;;:::i;:::-;;:::i;:::-;;;1188:14:1;;1181:22;1163:41;;1151:2;1136:18;10155:161:0;1023:187:1;16581:152:0;;;;;;;;;;-1:-1:-1;16581:152:0;;;;;:::i;:::-;;:::i;:::-;;2774:108;;;;;;;;;;-1:-1:-1;2862:12:0;;2774:108;;;1730:25:1;;;1718:2;1703:18;2774:108:0;1584:177:1;10324:448:0;;;;;;;;;;-1:-1:-1;10324:448:0;;;;;:::i;:::-;;:::i;2667:93::-;;;;;;;;;;-1:-1:-1;2667:93:0;;2750:2;2369:36:1;;2357:2;2342:18;2667:93:0;2227:184:1;10780:248:0;;;;;;;;;;-1:-1:-1;10780:248:0;;;;;:::i;:::-;;:::i;16741:177::-;;;;;;;;;;-1:-1:-1;16741:177:0;;;;;:::i;:::-;;:::i;18041:131::-;;;;;;;;;;-1:-1:-1;18041:131:0;;;;;:::i;:::-;;:::i;8735:34::-;;;;;;;;;;-1:-1:-1;8735:34:0;;;;-1:-1:-1;;;8735:34:0;;;;;;17811:104;;;;;;;;;;-1:-1:-1;17811:104:0;;;;;:::i;:::-;;:::i;8843:50::-;;;;;;;;;;;;;;;;2896:127;;;;;;;;;;-1:-1:-1;2896:127:0;;;;;:::i;:::-;-1:-1:-1;;;;;2997:18:0;2970:7;2997:18;;;;;;;;;;;;2896:127;7167:94;;;;;;;;;;;;;:::i;9267:32::-;;;;;;;;;;-1:-1:-1;9267:32:0;;;;;;;;;;;;;3027:25:1;;;3083:2;3068:18;;3061:34;;;;3000:18;9267:32:0;2853:248:1;17923:108:0;;;;;;;;;;-1:-1:-1;17923:108:0;;;;;:::i;:::-;;:::i;9094:79::-;;;;;;;;;;;;9131:42;9094:79;;;;;-1:-1:-1;;;;;3270:32:1;;;3252:51;;3240:2;3225:18;9094:79:0;3106:203:1;17271:224:0;;;;;;;;;;;;;:::i;18300:135::-;;;;;;;;;;-1:-1:-1;18300:135:0;;;;;:::i;:::-;;:::i;6944:87::-;;;;;;;;;;-1:-1:-1;7017:6:0;;-1:-1:-1;;;;;7017:6:0;6944:87;;2549:104;;;;;;;;;;;;;:::i;18180:112::-;;;;;;;;;;-1:-1:-1;18180:112:0;;;;;:::i;:::-;;:::i;11036:410::-;;;;;;;;;;-1:-1:-1;11036:410:0;;;;;:::i;:::-;;:::i;8617:19::-;;;;;;;;;;-1:-1:-1;8617:19:0;;;;-1:-1:-1;;;;;8617:19:0;;;11454:165;;;;;;;;;;-1:-1:-1;11454:165:0;;;;;:::i;:::-;;:::i;17688:115::-;;;;;;;;;;-1:-1:-1;17688:115:0;;;;;:::i;:::-;;:::i;9352:41::-;;;;;;;;;;-1:-1:-1;9352:41:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;16926:164;;;;;;;;;;-1:-1:-1;16926:164:0;;;;;:::i;:::-;;:::i;3267:201::-;;;;;;;;;;-1:-1:-1;3267:201:0;;;;;:::i;:::-;-1:-1:-1;;;;;3433:18:0;;;3401:7;3433:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;3267:201;17503:177;;;;;;;;;;-1:-1:-1;17503:177:0;;;;;:::i;:::-;;:::i;7269:192::-;;;;;;;;;;-1:-1:-1;7269:192:0;;;;;:::i;:::-;;:::i;17098:166::-;;;;;;;;;;-1:-1:-1;17098:166:0;;;;;:::i;:::-;;:::i;9306:37::-;;;;;;;;;;-1:-1:-1;9306:37:0;;;;;;;;;8589:21;;;;;;;;;;-1:-1:-1;8589:21:0;;;;-1:-1:-1;;;;;8589:21:0;;;2435:100;2489:13;2522:5;2515:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2435:100;:::o;10155:161::-;10230:4;10247:39;598:10;10270:7;10279:6;10247:8;:39::i;:::-;-1:-1:-1;10304:4:0;10155:161;;;;;:::o;16581:152::-;7017:6;;-1:-1:-1;;;;;7017:6:0;598:10;7079:23;7071:68;;;;-1:-1:-1;;;7071:68:0;;;;;;;:::i;:::-;;;;;;;;;16699:18:::1;:26:::0;;;::::1;;-1:-1:-1::0;;;16699:26:0::1;-1:-1:-1::0;;;;16699:26:0;;::::1;::::0;;;::::1;::::0;;16581:152::o;10324:448::-;10456:4;10473:36;10483:6;10491:9;10502:6;10473:9;:36::i;:::-;-1:-1:-1;;;;;10549:19:0;;10522:24;10549:19;;;:11;:19;;;;;;;;598:10;10549:33;;;;;;;;10601:26;;;;10593:79;;;;-1:-1:-1;;;10593:79:0;;5131:2:1;10593:79:0;;;5113:21:1;5170:2;5150:18;;;5143:30;5209:34;5189:18;;;5182:62;-1:-1:-1;;;5260:18:1;;;5253:38;5308:19;;10593:79:0;4929:404:1;10593:79:0;10683:57;10692:6;598:10;10714:25;10733:6;10714:16;:25;:::i;:::-;10683:8;:57::i;:::-;-1:-1:-1;10760:4:0;;10324:448;-1:-1:-1;;;;10324:448:0:o;10780:248::-;598:10;10896:4;10950:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;10950:34:0;;;;;;;;;;10896:4;;10918:80;;10941:7;;10950:47;;10987:10;;10950:47;:::i;16741:177::-;7017:6;;-1:-1:-1;;;;;7017:6:0;598:10;7079:23;7071:68;;;;-1:-1:-1;;;7071:68:0;;;;;;;:::i;:::-;16896:14:::1;2750:2:::0;16896::::1;:14;:::i;:::-;16883:27;::::0;:10;:27:::1;:::i;:::-;16857:23;:53:::0;-1:-1:-1;16741:177:0:o;18041:131::-;7017:6;;-1:-1:-1;;;;;7017:6:0;598:10;7079:23;7071:68;;;;-1:-1:-1;;;7071:68:0;;;;;;;:::i;:::-;18149:14:::1;2750:2:::0;18149::::1;:14;:::i;:::-;18137:26;::::0;:9;:26:::1;:::i;:::-;18120:14;:43:::0;-1:-1:-1;18041:131:0:o;17811:104::-;7017:6;;-1:-1:-1;;;;;7017:6:0;598:10;7079:23;7071:68;;;;-1:-1:-1;;;7071:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;17881:19:0::1;;::::0;;;:9:::1;:19;::::0;;;;:26;;-1:-1:-1;;17881:26:0::1;17903:4;17881:26;::::0;;17811:104::o;7167:94::-;7017:6;;-1:-1:-1;;;;;7017:6:0;598:10;7079:23;7071:68;;;;-1:-1:-1;;;7071:68:0;;;;;;;:::i;:::-;7232:21:::1;7250:1;7232:9;:21::i;:::-;7167:94::o:0;17923:108::-;7017:6;;-1:-1:-1;;;;;7017:6:0;598:10;7079:23;7071:68;;;;-1:-1:-1;;;7071:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;17996:19:0::1;18018:5;17996:19:::0;;;:9:::1;:19;::::0;;;;:27;;-1:-1:-1;;17996:27:0::1;::::0;;17923:108::o;17271:224::-;7017:6;;-1:-1:-1;;;;;7017:6:0;598:10;7079:23;7071:68;;;;-1:-1:-1;;;7071:68:0;;;;;;;:::i;:::-;17335:14:::1;::::0;-1:-1:-1;;;17335:14:0;::::1;;;17334:15;17326:54;;;::::0;-1:-1:-1;;;17326:54:0;;7491:2:1;17326:54:0::1;::::0;::::1;7473:21:1::0;7530:2;7510:18;;;7503:30;7569:28;7549:18;;;7542:56;7615:18;;17326:54:0::1;7289:350:1::0;17326:54:0::1;17391:14;:21:::0;;-1:-1:-1;;;;17423:25:0;-1:-1:-1;;;17423:25:0;;;17475:12:::1;17459:13;:28:::0;17271:224::o;18300:135::-;7017:6;;-1:-1:-1;;;;;7017:6:0;598:10;7079:23;7071:68;;;;-1:-1:-1;;;7071:68:0;;;;;;;:::i;:::-;18392:8:::1;-1:-1:-1::0;;;;;18385:25:0::1;;18411:7;7017:6:::0;;-1:-1:-1;;;;;7017:6:0;;6944:87;18411:7:::1;18385:42;::::0;-1:-1:-1;;;;;;18385:42:0::1;::::0;;;;;;-1:-1:-1;;;;;7836:32:1;;;18385:42:0::1;::::0;::::1;7818:51:1::0;7885:18;;;7878:34;;;7791:18;;18385:42:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;18300:135:::0;;:::o;2549:104::-;2605:13;2638:7;2631:14;;;;;:::i;18180:112::-;7017:6;;-1:-1:-1;;;;;7017:6:0;598:10;7079:23;7071:68;;;;-1:-1:-1;;;7071:68:0;;;;;;;:::i;:::-;7017:6;;18248:36:::1;::::0;-1:-1:-1;;;;;7017:6:0;;;;18248:36;::::1;;;::::0;18274:9;;18248:36:::1;::::0;;;18274:9;7017:6;18248:36;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;18180:112:::0;:::o;11036:410::-;598:10;11157:4;11206:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;11206:34:0;;;;;;;;;;11259:35;;;;11251:85;;;;-1:-1:-1;;;11251:85:0;;8375:2:1;11251:85:0;;;8357:21:1;8414:2;8394:18;;;8387:30;8453:34;8433:18;;;8426:62;-1:-1:-1;;;8504:18:1;;;8497:35;8549:19;;11251:85:0;8173:401:1;11251:85:0;11347:67;598:10;11370:7;11379:34;11398:15;11379:16;:34;:::i;11347:67::-;-1:-1:-1;11434:4:0;;11036:410;-1:-1:-1;;;11036:410:0:o;11454:165::-;11532:4;11549:40;11559:10;11571:9;11582:6;11549:9;:40::i;17688:115::-;7017:6;;-1:-1:-1;;;;;7017:6:0;598:10;7079:23;7071:68;;;;-1:-1:-1;;;7071:68:0;;;;;;;:::i;:::-;17768:15:::1;:27:::0;;-1:-1:-1;;;;;;17768:27:0::1;-1:-1:-1::0;;;;;17768:27:0;;;::::1;::::0;;;::::1;::::0;;17688:115::o;16926:164::-;7017:6;;-1:-1:-1;;;;;7017:6:0;598:10;7079:23;7071:68;;;;-1:-1:-1;;;7071:68:0;;;;;;;:::i;:::-;17053:29:::1;::::0;;;;::::1;::::0;;;;;;::::1;;::::0;;;17045:5:::1;:37:::0;;;;;;16926:164::o;17503:177::-;7017:6;;-1:-1:-1;;;;;7017:6:0;598:10;7079:23;7071:68;;;;-1:-1:-1;;;7071:68:0;;;;;;;:::i;:::-;17585:14:::1;::::0;-1:-1:-1;;;17585:14:0;::::1;;;17584:15;17576:65;;;::::0;-1:-1:-1;;;17576:65:0;;8781:2:1;17576:65:0::1;::::0;::::1;8763:21:1::0;8820:2;8800:18;;;8793:30;8859:34;8839:18;;;8832:62;-1:-1:-1;;;8910:18:1;;;8903:35;8955:19;;17576:65:0::1;8579:401:1::0;17576:65:0::1;17652:8;:20:::0;17503:177::o;7269:192::-;7017:6;;-1:-1:-1;;;;;7017:6:0;598:10;7079:23;7071:68;;;;-1:-1:-1;;;7071:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;7358:22:0;::::1;7350:73;;;::::0;-1:-1:-1;;;7350:73:0;;9187:2:1;7350:73:0::1;::::0;::::1;9169:21:1::0;9226:2;9206:18;;;9199:30;9265:34;9245:18;;;9238:62;-1:-1:-1;;;9316:18:1;;;9309:36;9362:19;;7350:73:0::1;8985:402:1::0;7350:73:0::1;7434:19;7444:8;7434:9;:19::i;:::-;7269:192:::0;:::o;17098:166::-;7017:6;;-1:-1:-1;;;;;7017:6:0;598:10;7079:23;7071:68;;;;-1:-1:-1;;;7071:68:0;;;;;;;:::i;:::-;17227:29:::1;::::0;;;;::::1;::::0;;;;;;::::1;;::::0;;;17215:9:::1;:41:::0;;;;;;17098:166::o;5838:380::-;-1:-1:-1;;;;;5974:19:0;;5966:68;;;;-1:-1:-1;;;5966:68:0;;9594:2:1;5966:68:0;;;9576:21:1;9633:2;9613:18;;;9606:30;9672:34;9652:18;;;9645:62;-1:-1:-1;;;9723:18:1;;;9716:34;9767:19;;5966:68:0;9392:400:1;5966:68:0;-1:-1:-1;;;;;6053:21:0;;6045:68;;;;-1:-1:-1;;;6045:68:0;;9999:2:1;6045:68:0;;;9981:21:1;10038:2;10018:18;;;10011:30;10077:34;10057:18;;;10050:62;-1:-1:-1;;;10128:18:1;;;10121:32;10170:19;;6045:68:0;9797:398:1;6045:68:0;-1:-1:-1;;;;;6126:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;6178:32;;1730:25:1;;;6178:32:0;;1703:18:1;6178:32:0;;;;;;;5838:380;;;:::o;11627:2474::-;11777:1;11768:6;:10;11760:64;;;;-1:-1:-1;;;11760:64:0;;10402:2:1;11760:64:0;;;10384:21:1;10441:2;10421:18;;;10414:30;10480:34;10460:18;;;10453:62;-1:-1:-1;;;10531:18:1;;;10524:39;10580:19;;11760:64:0;10200:405:1;11760:64:0;-1:-1:-1;;;;;11852:17:0;;;;;;:9;:17;;;;;;;;11851:18;:43;;;;-1:-1:-1;;;;;;11874:20:0;;;;;;:9;:20;;;;;;;;11873:21;11851:43;11847:122;;;11919:14;;-1:-1:-1;;;11919:14:0;;;;11911:46;;;;-1:-1:-1;;;11911:46:0;;10812:2:1;11911:46:0;;;10794:21:1;10851:2;10831:18;;;10824:30;-1:-1:-1;;;10870:18:1;;;10863:49;10929:18;;11911:46:0;10610:343:1;11911:46:0;11995:4;;-1:-1:-1;;;;;11985:14:0;;;11995:4;;11985:14;:39;;;;-1:-1:-1;;;;;;12004:20:0;;;;;;:9;:20;;;;;;;;12003:21;11985:39;:59;;;;-1:-1:-1;12029:15:0;;-1:-1:-1;;;12029:15:0;;;;12028:16;11985:59;11981:215;;;12102:14;;12092:6;12069:20;12079:9;-1:-1:-1;;;;;2997:18:0;2970:7;2997:18;;;;;;;;;;;;2896:127;12069:20;:29;;;;:::i;:::-;:47;;12061:123;;;;-1:-1:-1;;;12061:123:0;;11160:2:1;12061:123:0;;;11142:21:1;;;11179:18;;;11172:30;11238:34;11218:18;;;11211:62;11290:18;;12061:123:0;10958:356:1;12061:123:0;12222:4;;-1:-1:-1;;;;;12212:14:0;;;12222:4;;12212:14;;;;:39;;-1:-1:-1;;;;;;12231:20:0;;;;;;:9;:20;;;;;;;;12230:21;12212:39;:61;;;;-1:-1:-1;;;;;;12256:17:0;;;;;;:9;:17;;;;;;;;12255:18;12212:61;:81;;;;-1:-1:-1;12278:15:0;;-1:-1:-1;;;12278:15:0;;;;12277:16;12212:81;12208:315;;;12340:4;;-1:-1:-1;;;;;12327:17:0;;;12340:4;;12327:17;12323:189;;12406:14;;12396:6;12373:20;12383:9;-1:-1:-1;;;;;2997:18:0;2970:7;2997:18;;;;;;;;;;;;2896:127;12373:20;:29;;;;:::i;:::-;:47;;12365:131;;;;-1:-1:-1;;;12365:131:0;;11160:2:1;12365:131:0;;;11142:21:1;;;11179:18;;;11172:30;11238:34;11218:18;;;11211:62;11290:18;;12365:131:0;10958:356:1;12365:131:0;12535:15;12561:14;12586:11;12608:25;-1:-1:-1;;;;;;;;;;;;;;;;;;;12608:25:0;-1:-1:-1;;;;;12667:17:0;;12646;12667;;;:9;:17;;;;;;;;12666:18;:56;;;;-1:-1:-1;;;;;;12702:20:0;;;;;;:9;:20;;;;;;;;12701:21;12666:56;:112;;;;;12770:8;;12754:13;;:24;;;;:::i;:::-;12739:12;:39;12666:112;12866:15;;12646:132;;-1:-1:-1;;;;12866:15:0;;;;;:36;;-1:-1:-1;;;;;;12885:17:0;;;;;;:9;:17;;;;;;;;12866:36;:60;;;-1:-1:-1;;;;;;12906:20:0;;;;;;:9;:20;;;;;;;;12866:60;12862:655;;;12947:1;12941:7;;12862:655;;;13012:4;;-1:-1:-1;;;;;12999:17:0;;;13012:4;;12999:17;:34;;;;;13021:12;13020:13;12999:34;12995:522;;;13116:9;:19;13077;;:58;;13116:19;13077:58;:::i;:::-;13182:24;;;;;;;;;13197:9;13182:24;;;;;;;;;13050:85;;-1:-1:-1;13050:85:0;;-1:-1:-1;13182:24:0;-1:-1:-1;12995:522:0;;;13229:12;13224:293;;13320:5;:15;13285;;:50;;13320:15;13285:50;:::i;:::-;13382:20;;;;;;;;;13397:5;13382:20;;;;;;;;;13258:77;;-1:-1:-1;13258:77:0;;-1:-1:-1;13382:20:0;-1:-1:-1;13224:293:0;;;13424:12;13420:97;;;13463:9;;;-1:-1:-1;13463:9:0;;-1:-1:-1;13420:97:0;13555:3;13536:15;13545:6;13536;:15;:::i;:::-;13535:23;;;;:::i;:::-;13672:18;;13529:29;;-1:-1:-1;;;;13672:18:0;;;;:36;;;;-1:-1:-1;13704:4:0;;-1:-1:-1;;;;;13694:14:0;;;13704:4;;13694:14;;13672:36;13668:76;;;13710:34;13722:7;13731:12;13710:11;:34::i;:::-;13786:48;13802:6;13810:9;13821:12;13830:3;13821:6;:12;:::i;:::-;13786:15;:48::i;:::-;13849:7;;13845:249;;13921:11;;13917:164;;13953:17;13994:3;13974:16;13983:7;13974:6;:16;:::i;:::-;13973:24;;;;:::i;:::-;13953:44;;14016:49;14032:6;14048:4;14055:9;14016:15;:49::i;:::-;13934:147;13917:164;11749:2352;;;;;11627:2474;;;:::o;7469:173::-;7544:6;;;-1:-1:-1;;;;;7561:17:0;;;-1:-1:-1;;;;;;7561:17:0;;;;;;;7594:40;;7544:6;;;7561:17;7544:6;;7594:40;;7525:16;;7594:40;7514:128;7469:173;:::o;14109:1422::-;9447:15;;-1:-1:-1;;;9447:15:0;;;;9442:125;;9479:15;:22;;-1:-1:-1;;;;9479:22:0;-1:-1:-1;;;9479:22:0;;;14195:49;;14226:7:::1;14195:49;14301:4;14257:23;2997:18:::0;;;;;;;;;;;14341:23:::1;::::0;14322:42;::::1;14318:1206;;14411:1;14385:23;;:27;14381:109;;;-1:-1:-1::0;14451:23:0::1;::::0;14381:109:::1;14561:19;14583:11;:7:::0;14593:1:::1;14583:11;:::i;:::-;14561:33;;14609:32;14703:11;14663:9;:19;;;14645:15;:37;;;;:::i;:::-;14644:70;;;;:::i;:::-;14609:105:::0;-1:-1:-1;14729:14:0::1;14746:42;14609:105:::0;14746:15;:42:::1;:::i;:::-;14729:59:::0;-1:-1:-1;14830:21:0::1;14868:24;14729:59:::0;14868:16:::1;:24::i;:::-;14909:20;14932:38;14956:14:::0;14932:21:::1;:38;:::i;:::-;14909:61;;14985:19;15037:9;:19;;;15023:11;:33;;;;:::i;:::-;15007:50;::::0;:12;:50:::1;:::i;:::-;14985:72;;15072:29;15118:9;:19;;;15104:11;:33;;;;:::i;:::-;15072:65:::0;-1:-1:-1;15158:25:0;;15154:161:::1;;15238:61;15251:24;15277:21;15238:12;:61::i;:::-;15372:19:::0;;15331:20:::1;::::0;15354:15:::1;:11:::0;15368:1:::1;15354:15;:::i;:::-;:37;;;;:::i;:::-;15331:60:::0;-1:-1:-1;15410:16:0;;15406:105:::1;;15455:15;::::0;15447:48:::1;::::0;-1:-1:-1;;;;;15455:15:0::1;15482:12:::0;15447:34:::1;:48::i;:::-;14366:1158;;;;;;;;14318:1206;14189:1342;9516:1;9532:15:::0;:23;;-1:-1:-1;;;;9532:23:0;;;14109:1422;;:::o;4819:638::-;-1:-1:-1;;;;;4959:20:0;;4951:70;;;;-1:-1:-1;;;4951:70:0;;11743:2:1;4951:70:0;;;11725:21:1;11782:2;11762:18;;;11755:30;11821:34;11801:18;;;11794:62;-1:-1:-1;;;11872:18:1;;;11865:35;11917:19;;4951:70:0;11541:401:1;4951:70:0;-1:-1:-1;;;;;5040:23:0;;5032:71;;;;-1:-1:-1;;;5032:71:0;;12149:2:1;5032:71:0;;;12131:21:1;12188:2;12168:18;;;12161:30;12227:34;12207:18;;;12200:62;-1:-1:-1;;;12278:18:1;;;12271:33;12321:19;;5032:71:0;11947:399:1;5032:71:0;-1:-1:-1;;;;;5200:17:0;;5176:21;5200:17;;;;;;;;;;;5236:23;;;;5228:74;;;;-1:-1:-1;;;5228:74:0;;12553:2:1;5228:74:0;;;12535:21:1;12592:2;12572:18;;;12565:30;12631:34;12611:18;;;12604:62;-1:-1:-1;;;12682:18:1;;;12675:36;12728:19;;5228:74:0;12351:402:1;5228:74:0;5333:22;5349:6;5333:13;:22;:::i;:::-;-1:-1:-1;;;;;5313:17:0;;;:9;:17;;;;;;;;;;;:42;;;;5366:20;;;;;;;;:30;;5390:6;;5313:9;5366:30;;5390:6;;5366:30;:::i;:::-;;;;;;;;5431:9;-1:-1:-1;;;;;5414:35:0;5423:6;-1:-1:-1;;;;;5414:35:0;;5442:6;5414:35;;;;1730:25:1;;1718:2;1703:18;;1584:177;5414:35:0;;;;;;;;4940:517;4819:638;;;:::o;15539:526::-;15681:16;;;15695:1;15681:16;;;;;;;;15657:21;;15681:16;;;;;;;;;;-1:-1:-1;15681:16:0;15657:40;;15726:4;15708;15713:1;15708:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;15708:23:0;;;:7;;;;;;;;;;:23;;;;15752:6;;:13;;;-1:-1:-1;;;15752:13:0;;;;:6;;;;;:11;;:13;;;;;15708:7;;15752:13;;;;;:6;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;15742:4;15747:1;15742:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;15742:23:0;;;:7;;;;;;;;;:23;15810:6;;15778:53;;15795:4;;15810:6;15819:11;15778:8;:53::i;:::-;15870:6;;:187;;-1:-1:-1;;;15870:187:0;;-1:-1:-1;;;;;15870:6:0;;;;:57;;:187;;15942:11;;15870:6;;15984:4;;16011;;16031:15;;15870:187;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15594:471;15539:526;:::o;16073:500::-;16253:6;;16221:53;;16238:4;;-1:-1:-1;;;;;16253:6:0;16262:11;16221:8;:53::i;:::-;16317:6;;:248;;-1:-1:-1;;;16317:248:0;;16382:4;16317:248;;;14604:34:1;14654:18;;;14647:34;;;16317:6:0;14697:18:1;;;14690:34;;;14740:18;;;14733:34;9131:42:0;14783:19:1;;;14776:44;16539:15:0;14836:19:1;;;14829:35;-1:-1:-1;;;;;16317:6:0;;;;:22;;16348:9;;14538:19:1;;16317:248:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;16073:500;;:::o;6387:319::-;6502:6;6477:21;:31;;6469:73;;;;-1:-1:-1;;;6469:73:0;;15388:2:1;6469:73:0;;;15370:21:1;15427:2;15407:18;;;15400:30;15466:31;15446:18;;;15439:59;15515:18;;6469:73:0;15186:353:1;6469:73:0;6556:12;6574:9;-1:-1:-1;;;;;6574:14:0;6597:6;6574:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6555:54;;;6628:7;6620:78;;;;-1:-1:-1;;;6620:78:0;;15956:2:1;6620:78:0;;;15938:21:1;15995:2;15975:18;;;15968:30;16034:34;16014:18;;;16007:62;16105:28;16085:18;;;16078:56;16151:19;;6620:78:0;15754:422:1;14:548;126:4;155:2;184;173:9;166:21;216:6;210:13;259:6;254:2;243:9;239:18;232:34;284:1;294:140;308:6;305:1;302:13;294:140;;;403:14;;;399:23;;393:30;369:17;;;388:2;365:26;358:66;323:10;;294:140;;;298:3;483:1;478:2;469:6;458:9;454:22;450:31;443:42;553:2;546;542:7;537:2;529:6;525:15;521:29;510:9;506:45;502:54;494:62;;;;14:548;;;;:::o;567:131::-;-1:-1:-1;;;;;642:31:1;;632:42;;622:70;;688:1;685;678:12;703:315;771:6;779;832:2;820:9;811:7;807:23;803:32;800:52;;;848:1;845;838:12;800:52;887:9;874:23;906:31;931:5;906:31;:::i;:::-;956:5;1008:2;993:18;;;;980:32;;-1:-1:-1;;;703:315:1:o;1215:118::-;1301:5;1294:13;1287:21;1280:5;1277:32;1267:60;;1323:1;1320;1313:12;1338:241;1394:6;1447:2;1435:9;1426:7;1422:23;1418:32;1415:52;;;1463:1;1460;1453:12;1415:52;1502:9;1489:23;1521:28;1543:5;1521:28;:::i;:::-;1568:5;1338:241;-1:-1:-1;;;1338:241:1:o;1766:456::-;1843:6;1851;1859;1912:2;1900:9;1891:7;1887:23;1883:32;1880:52;;;1928:1;1925;1918:12;1880:52;1967:9;1954:23;1986:31;2011:5;1986:31;:::i;:::-;2036:5;-1:-1:-1;2093:2:1;2078:18;;2065:32;2106:33;2065:32;2106:33;:::i;:::-;1766:456;;2158:7;;-1:-1:-1;;;2212:2:1;2197:18;;;;2184:32;;1766:456::o;2416:180::-;2475:6;2528:2;2516:9;2507:7;2503:23;2499:32;2496:52;;;2544:1;2541;2534:12;2496:52;-1:-1:-1;2567:23:1;;2416:180;-1:-1:-1;2416:180:1:o;2601:247::-;2660:6;2713:2;2701:9;2692:7;2688:23;2684:32;2681:52;;;2729:1;2726;2719:12;2681:52;2768:9;2755:23;2787:31;2812:5;2787:31;:::i;3314:248::-;3382:6;3390;3443:2;3431:9;3422:7;3418:23;3414:32;3411:52;;;3459:1;3456;3449:12;3411:52;-1:-1:-1;;3482:23:1;;;3552:2;3537:18;;;3524:32;;-1:-1:-1;3314:248:1:o;3567:388::-;3635:6;3643;3696:2;3684:9;3675:7;3671:23;3667:32;3664:52;;;3712:1;3709;3702:12;3664:52;3751:9;3738:23;3770:31;3795:5;3770:31;:::i;:::-;3820:5;-1:-1:-1;3877:2:1;3862:18;;3849:32;3890:33;3849:32;3890:33;:::i;:::-;3942:7;3932:17;;;3567:388;;;;;:::o;4183:380::-;4262:1;4258:12;;;;4305;;;4326:61;;4380:4;4372:6;4368:17;4358:27;;4326:61;4433:2;4425:6;4422:14;4402:18;4399:38;4396:161;;4479:10;4474:3;4470:20;4467:1;4460:31;4514:4;4511:1;4504:15;4542:4;4539:1;4532:15;4396:161;;4183:380;;;:::o;4568:356::-;4770:2;4752:21;;;4789:18;;;4782:30;4848:34;4843:2;4828:18;;4821:62;4915:2;4900:18;;4568:356::o;5338:127::-;5399:10;5394:3;5390:20;5387:1;5380:31;5430:4;5427:1;5420:15;5454:4;5451:1;5444:15;5470:128;5537:9;;;5558:11;;;5555:37;;;5572:18;;:::i;5603:125::-;5668:9;;;5689:10;;;5686:36;;;5702:18;;:::i;5733:422::-;5822:1;5865:5;5822:1;5879:270;5900:7;5890:8;5887:21;5879:270;;;5959:4;5955:1;5951:6;5947:17;5941:4;5938:27;5935:53;;;5968:18;;:::i;:::-;6018:7;6008:8;6004:22;6001:55;;;6038:16;;;;6001:55;6117:22;;;;6077:15;;;;5879:270;;;5883:3;5733:422;;;;;:::o;6160:806::-;6209:5;6239:8;6229:80;;-1:-1:-1;6280:1:1;6294:5;;6229:80;6328:4;6318:76;;-1:-1:-1;6365:1:1;6379:5;;6318:76;6410:4;6428:1;6423:59;;;;6496:1;6491:130;;;;6403:218;;6423:59;6453:1;6444:10;;6467:5;;;6491:130;6528:3;6518:8;6515:17;6512:43;;;6535:18;;:::i;:::-;-1:-1:-1;;6591:1:1;6577:16;;6606:5;;6403:218;;6705:2;6695:8;6692:16;6686:3;6680:4;6677:13;6673:36;6667:2;6657:8;6654:16;6649:2;6643:4;6640:12;6636:35;6633:77;6630:159;;;-1:-1:-1;6742:19:1;;;6774:5;;6630:159;6821:34;6846:8;6840:4;6821:34;:::i;:::-;6891:6;6887:1;6883:6;6879:19;6870:7;6867:32;6864:58;;;6902:18;;:::i;:::-;6940:20;;6160:806;-1:-1:-1;;;6160:806:1:o;6971:140::-;7029:5;7058:47;7099:4;7089:8;7085:19;7079:4;7058:47;:::i;7116:168::-;7189:9;;;7220;;7237:15;;;7231:22;;7217:37;7207:71;;7258:18;;:::i;7923:245::-;7990:6;8043:2;8031:9;8022:7;8018:23;8014:32;8011:52;;;8059:1;8056;8049:12;8011:52;8091:9;8085:16;8110:28;8132:5;8110:28;:::i;11319:217::-;11359:1;11385;11375:132;;11429:10;11424:3;11420:20;11417:1;11410:31;11464:4;11461:1;11454:15;11492:4;11489:1;11482:15;11375:132;-1:-1:-1;11521:9:1;;11319:217::o;12890:127::-;12951:10;12946:3;12942:20;12939:1;12932:31;12982:4;12979:1;12972:15;13006:4;13003:1;12996:15;13022:251;13092:6;13145:2;13133:9;13124:7;13120:23;13116:32;13113:52;;;13161:1;13158;13151:12;13113:52;13193:9;13187:16;13212:31;13237:5;13212:31;:::i;13278:980::-;13540:4;13588:3;13577:9;13573:19;13619:6;13608:9;13601:25;13645:2;13683:6;13678:2;13667:9;13663:18;13656:34;13726:3;13721:2;13710:9;13706:18;13699:31;13750:6;13785;13779:13;13816:6;13808;13801:22;13854:3;13843:9;13839:19;13832:26;;13893:2;13885:6;13881:15;13867:29;;13914:1;13924:195;13938:6;13935:1;13932:13;13924:195;;;14003:13;;-1:-1:-1;;;;;13999:39:1;13987:52;;14094:15;;;;14059:12;;;;14035:1;13953:9;13924:195;;;-1:-1:-1;;;;;;;14175:32:1;;;;14170:2;14155:18;;14148:60;-1:-1:-1;;;14239:3:1;14224:19;14217:35;14136:3;13278:980;-1:-1:-1;;;13278:980:1:o;14875:306::-;14963:6;14971;14979;15032:2;15020:9;15011:7;15007:23;15003:32;15000:52;;;15048:1;15045;15038:12;15000:52;15077:9;15071:16;15061:26;;15127:2;15116:9;15112:18;15106:25;15096:35;;15171:2;15160:9;15156:18;15150:25;15140:35;;14875:306;;;;;:::o

Swarm Source

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