ETH Price: $2,485.71 (-1.73%)

Token

Decontract ($DC)
 

Overview

Max Total Supply

100,000,000 $DC

Holders

44

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
0.000000000025180647 $DC

Value
$0.00
0xa0f14efe08fce2686a10813c78788aa740a5f89b
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:
DECONTRACT

Compiler Version
v0.8.24+commit.e11b9ed9

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2024-03-11
*/

//SPDX-License-Identifier: MIT

/**

TG : https://t.me/Decontract_Erc

Website : https://www.decontract.tech/

Twitter : https://twitter.com/DeContractErc20

**/

pragma solidity ^0.8.24;

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 {

    function name() external view returns (string memory);

    function symbol() external view returns (string memory);

    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 DECONTRACT 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 public  tokenLPThreshold = 500000 * 10**18;
    uint256 public maxWalletLimit = 2000000 * 10**18;

    uint256 private  genesis_block;
    uint256 private deadline = 10;
    uint256 private launchtax = 35;

    address public  MW = 0xcf7469f13E5e70678aef19A08a09839DBbB0304E;
	address public constant deadWallet = 0x000000000000000000000000000000000000dEaD;

    struct Taxes {
        uint256 Dev;
        uint256 LP;
    }

    Taxes public taxes = Taxes(5, 0);
    Taxes public sellTaxes = Taxes(5, 0);

    mapping(address => bool) public exemptFee;


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

    constructor() ERC20("Decontract", "$DC") {
        _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[MW] = 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.LP +
                sellTaxes.Dev ;
            feesum = feeswap;
            currentTaxes = sellTaxes;
        } else if (!useLaunchFee) {
            feeswap =
                taxes.LP +
                taxes.Dev ;
            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 >= tokenLPThreshold) {
            if (tokenLPThreshold > 1) {
                contractBalance = tokenLPThreshold;
            }

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

            uint256 initialBalance = address(this).balance;

            swapTokensForETH(toSwap);

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

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

            uint256 DevAmt = unitBalance * 2 * swapTaxes.Dev;
            if (DevAmt > 0) {
                payable(MW).sendValue(DevAmt);
            }

        }
    }

    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 TokenSellForMarketing(uint256 new_amount) external onlyOwner {
        //update the treshhold
        tokenLPThreshold = new_amount * 10**decimals();
    }

    function BuyFees(
        uint256 _Dev,
        uint256 _LP
    ) external onlyOwner {
        taxes = Taxes(_Dev, _LP);
    }

    function SellFees(
        uint256 _Dev,
        uint256 _LP
    ) external onlyOwner {
        sellTaxes = Taxes(_Dev, _LP);
    }

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

    function NewMarketingW(address newWallet) external onlyOwner {
        MW = newWallet;
    }


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

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


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


    // 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":"AddExemptFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_Dev","type":"uint256"},{"internalType":"uint256","name":"_LP","type":"uint256"}],"name":"BuyFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"MW","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newWallet","type":"address"}],"name":"NewMarketingW","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxWallet","type":"uint256"}],"name":"NewMaxWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"}],"name":"RemoveExemptFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_Dev","type":"uint256"},{"internalType":"uint256","name":"_LP","type":"uint256"}],"name":"SellFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"new_amount","type":"uint256"}],"name":"TokenSellForMarketing","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":[],"name":"router","outputs":[{"internalType":"contract IRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellTaxes","outputs":[{"internalType":"uint256","name":"Dev","type":"uint256"},{"internalType":"uint256","name":"LP","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":"Dev","type":"uint256"},{"internalType":"uint256","name":"LP","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokenLPThreshold","outputs":[{"internalType":"uint256","name":"","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"},{"stateMutability":"payable","type":"receive"}]

6007805462ffffff60a01b191690556969e10de76676d08000006008556a01a784379d99db42000000600955600a600b556023600c55600d80546001600160a01b03191673cf7469f13e5e70678aef19a08a09839dbbb0304e179055600560808190525f60a0819052600e829055600f81905561010060405260c082905260e081905260109190915560115534801562000097575f80fd5b506040518060400160405280600a815260200169111958dbdb9d1c9858dd60b21b8152506040518060400160405280600381526020016224444360e81b8152508160039081620000e89190620004f4565b506004620000f78282620004f4565b505050620001146200010e6200034160201b60201c565b62000345565b6200013d33620001276012600a620006cf565b62000137906305f5e100620006e6565b62000396565b5f737a250d5630b4cf539739df2c5dacb4c659f2488d90505f816001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000193573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620001b9919062000700565b6001600160a01b031663c9c6539630846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000205573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906200022b919062000700565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303815f875af115801562000276573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906200029c919062000700565b600680546001600160a01b03199081166001600160a01b03958616179091556007805490911691841691909117905550305f90815260126020526040808220805460ff1990811660019081179092553384528284208054821683179055600d549094168352908220805484168217905561dead9091527f1120e10407cab1193d7c5139d9aae5536deb3d83e855f25f8e42f811c01f56f7805490921617905562000728565b3390565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b6001600160a01b038216620003ff5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2067656e65726174696f6e20746f20746865207a65726f206164604482015264647265737360d81b606482015260840160405180910390fd5b60028190556001600160a01b0382165f81815260208181526040808320859055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050565b505050565b634e487b7160e01b5f52604160045260245ffd5b600181811c908216806200048057607f821691505b6020821081036200049f57634e487b7160e01b5f52602260045260245ffd5b50919050565b601f8211156200045257805f5260205f20601f840160051c81016020851015620004cc5750805b601f840160051c820191505b81811015620004ed575f8155600101620004d8565b5050505050565b81516001600160401b0381111562000510576200051062000457565b62000528816200052184546200046b565b84620004a5565b602080601f8311600181146200055e575f8415620005465750858301515b5f19600386901b1c1916600185901b178555620005b8565b5f85815260208120601f198616915b828110156200058e578886015182559484019460019091019084016200056d565b5085821015620005ac57878501515f19600388901b60f8161c191681555b505060018460011b0185555b505050505050565b634e487b7160e01b5f52601160045260245ffd5b600181815b808511156200061457815f1904821115620005f857620005f8620005c0565b808516156200060657918102915b93841c9390800290620005d9565b509250929050565b5f826200062c57506001620006c9565b816200063a57505f620006c9565b81600181146200065357600281146200065e576200067e565b6001915050620006c9565b60ff841115620006725762000672620005c0565b50506001821b620006c9565b5060208310610133831016604e8410600b8410161715620006a3575081810a620006c9565b620006af8383620005d4565b805f1904821115620006c557620006c5620005c0565b0290505b92915050565b5f620006df60ff8416836200061c565b9392505050565b8082028115828204841417620006c957620006c9620005c0565b5f6020828403121562000711575f80fd5b81516001600160a01b0381168114620006df575f80fd5b611c5b80620007365f395ff3fe6080604052600436106101dd575f3560e01c80638a8c523c116100fd578063b876a82011610092578063e16d5e1111610062578063e16d5e1114610599578063f2fde38b146105b8578063f66895a3146105d7578063f887ea40146105f1575f80fd5b8063b876a820146104e9578063c5d32bb214610508578063d88c724114610536578063dd62ed3e14610555575f80fd5b80639ee39c34116100cd5780639ee39c341461046d578063a457c2d71461048c578063a8aa1b31146104ab578063a9059cbb146104ca575f80fd5b80638a8c523c146104095780638da5cb5b1461041d578063941d3de51461043a57806395d89b4114610459575f80fd5b8063395093511161017357806370a082311161014357806370a082311461037d578063715018a6146103b1578063728f8eea146103c557806385141a77146103f4575f80fd5b8063395093511461030a5780634ada218b146103295780634f6d819e1461034957806366a88d9614610368575f80fd5b806318160ddd116101ae57806318160ddd1461028557806323b872dd14610299578063313ce567146102b857806336950928146102d3575f80fd5b8062811354146101e857806306fdde0314610209578063095ea7b314610233578063158158b814610262575f80fd5b366101e457005b5f80fd5b3480156101f3575f80fd5b50610207610202366004611837565b610610565b005b348015610214575f80fd5b5061021d610661565b60405161022a9190611857565b60405180910390f35b34801561023e575f80fd5b5061025261024d3660046118b7565b6106f1565b604051901515815260200161022a565b34801561026d575f80fd5b5061027760085481565b60405190815260200161022a565b348015610290575f80fd5b50600254610277565b3480156102a4575f80fd5b506102526102b33660046118e1565b610707565b3480156102c3575f80fd5b506040516012815260200161022a565b3480156102de575f80fd5b50600d546102f2906001600160a01b031681565b6040516001600160a01b03909116815260200161022a565b348015610315575f80fd5b506102526103243660046118b7565b6107b6565b348015610334575f80fd5b5060075461025290600160b01b900460ff1681565b348015610354575f80fd5b5061020761036336600461191f565b6107ec565b348015610373575f80fd5b5061027760095481565b348015610388575f80fd5b50610277610397366004611936565b6001600160a01b03165f9081526020819052604090205490565b3480156103bc575f80fd5b50610207610832565b3480156103d0575f80fd5b50600e54600f546103df919082565b6040805192835260208301919091520161022a565b3480156103ff575f80fd5b506102f261dead81565b348015610414575f80fd5b50610207610867565b348015610428575f80fd5b506005546001600160a01b03166102f2565b348015610445575f80fd5b50610207610454366004611936565b610906565b348015610464575f80fd5b5061021d610952565b348015610478575f80fd5b5061020761048736600461191f565b610961565b348015610497575f80fd5b506102526104a63660046118b7565b6109a7565b3480156104b6575f80fd5b506007546102f2906001600160a01b031681565b3480156104d5575f80fd5b506102526104e43660046118b7565b610a41565b3480156104f4575f80fd5b50610207610503366004611936565b610a4d565b348015610513575f80fd5b50610252610522366004611936565b60126020525f908152604090205460ff1681565b348015610541575f80fd5b50610207610550366004611837565b610a9a565b348015610560575f80fd5b5061027761056f366004611958565b6001600160a01b039182165f90815260016020908152604080832093909416825291909152205490565b3480156105a4575f80fd5b506102076105b3366004611936565b610ae2565b3480156105c3575f80fd5b506102076105d2366004611936565b610b2c565b3480156105e2575f80fd5b506010546011546103df919082565b3480156105fc575f80fd5b506006546102f2906001600160a01b031681565b6005546001600160a01b031633146106435760405162461bcd60e51b815260040161063a9061198f565b60405180910390fd5b60408051808201909152828152602001819052600e91909155600f55565b606060038054610670906119c4565b80601f016020809104026020016040519081016040528092919081815260200182805461069c906119c4565b80156106e75780601f106106be576101008083540402835291602001916106e7565b820191905f5260205f20905b8154815290600101906020018083116106ca57829003601f168201915b5050505050905090565b5f6106fd338484610bc7565b5060015b92915050565b5f610713848484610cea565b6001600160a01b0384165f908152600160209081526040808320338452909152902054828110156107975760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b606482015260840161063a565b6107ab85336107a68685611a10565b610bc7565b506001949350505050565b335f8181526001602090815260408083206001600160a01b038716845290915281205490916106fd9185906107a6908690611a23565b6005546001600160a01b031633146108165760405162461bcd60e51b815260040161063a9061198f565b6108226012600a611b16565b61082c9082611b24565b60085550565b6005546001600160a01b0316331461085c5760405162461bcd60e51b815260040161063a9061198f565b6108655f6111c1565b565b6005546001600160a01b031633146108915760405162461bcd60e51b815260040161063a9061198f565b600754600160b01b900460ff16156108eb5760405162461bcd60e51b815260206004820152601a60248201527f54726164696e6720697320616c726561647920656e61626c6564000000000000604482015260640161063a565b6007805461ffff60a81b191661010160a81b17905543600a55565b6005546001600160a01b031633146109305760405162461bcd60e51b815260040161063a9061198f565b600d80546001600160a01b0319166001600160a01b0392909216919091179055565b606060048054610670906119c4565b6005546001600160a01b0316331461098b5760405162461bcd60e51b815260040161063a9061198f565b6109976012600a611b16565b6109a19082611b24565b60095550565b335f9081526001602090815260408083206001600160a01b038616845290915281205482811015610a285760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b606482015260840161063a565b610a3733856107a68685611a10565b5060019392505050565b5f6106fd338484610cea565b6005546001600160a01b03163314610a775760405162461bcd60e51b815260040161063a9061198f565b6001600160a01b03165f908152601260205260409020805460ff19166001179055565b6005546001600160a01b03163314610ac45760405162461bcd60e51b815260040161063a9061198f565b60408051808201909152828152602001819052601091909155601155565b6005546001600160a01b03163314610b0c5760405162461bcd60e51b815260040161063a9061198f565b6001600160a01b03165f908152601260205260409020805460ff19169055565b6005546001600160a01b03163314610b565760405162461bcd60e51b815260040161063a9061198f565b6001600160a01b038116610bbb5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161063a565b610bc4816111c1565b50565b6001600160a01b038316610c295760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840161063a565b6001600160a01b038216610c8a5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840161063a565b6001600160a01b038381165f8181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b5f8111610d4b5760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b606482015260840161063a565b6001600160a01b0383165f9081526012602052604090205460ff16158015610d8b57506001600160a01b0382165f9081526012602052604090205460ff16155b15610ddf57600754600160b01b900460ff16610ddf5760405162461bcd60e51b8152602060048201526013602482015272151c98591a5b99c81b9bdd08195b98589b1959606a1b604482015260640161063a565b6007546001600160a01b038481169116148015610e1457506001600160a01b0382165f9081526012602052604090205460ff16155b8015610e2a5750600754600160a01b900460ff16155b15610ea95760095481610e51846001600160a01b03165f9081526020819052604090205490565b610e5b9190611a23565b1115610ea95760405162461bcd60e51b815260206004820181905260248201527f596f752061726520657863656564696e67206d617857616c6c65744c696d6974604482015260640161063a565b6007546001600160a01b03848116911614801590610edf57506001600160a01b0382165f9081526012602052604090205460ff16155b8015610f0357506001600160a01b0383165f9081526012602052604090205460ff16155b8015610f195750600754600160a01b900460ff16155b15610fad576007546001600160a01b03838116911614610fad5760095481610f55846001600160a01b03165f9081526020819052604090205490565b610f5f9190611a23565b1115610fad5760405162461bcd60e51b815260206004820181905260248201527f596f752061726520657863656564696e67206d617857616c6c65744c696d6974604482015260640161063a565b5f805f610fcb60405180604001604052805f81526020015f81525090565b6001600160a01b0387165f9081526012602052604081205460ff1615801561100b57506001600160a01b0387165f9081526012602052604090205460ff16155b80156110255750600b54600a546110229190611a23565b43105b600754909150600160a01b900460ff168061105757506001600160a01b0388165f9081526012602052604090205460ff165b8061107957506001600160a01b0387165f9081526012602052604090205460ff165b15611086575f9250611122565b6007546001600160a01b0388811691161480156110a1575080155b156110da576010546011546110b69190611a23565b60408051808201909152601054815260115460208201529095508594509150611122565b8061111357600e54600f546110ef9190611a23565b60408051808201909152600e548152600f5460208201529095508594509150611122565b801561112257600c5494508493505b606461112e8588611b24565b6111389190611b3b565b600754909350600160a81b900460ff16801561116257506007546001600160a01b03898116911614155b15611171576111718583611212565b6111858888611180868a611a10565b611348565b82156111b75784156111b7575f606461119e8789611b24565b6111a89190611b3b565b90506111b5893083611348565b505b5050505050505050565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b600754600160a01b900460ff16611344576007805460ff60a01b1916600160a01b179055811561133657305f908152602081905260409020546008548110611334576001600854111561126457506008545b5f611270846002611b24565b90505f818460200151846112849190611b24565b61128e9190611b3b565b90505f61129b8285611a10565b9050476112a78261151e565b5f6112b28247611a10565b90505f8760200151866112c59190611a10565b6112cf9083611b3b565b90505f8860200151826112e29190611b24565b905080156112f4576112f4868261166e565b88515f90611303846002611b24565b61130d9190611b24565b9050801561132b57600d5461132b906001600160a01b03168261171d565b50505050505050505b505b6007805460ff60a01b191690555b5050565b6001600160a01b0383166113ac5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b606482015260840161063a565b6001600160a01b03821661140e5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b606482015260840161063a565b6001600160a01b0383165f90815260208190526040902054818110156114855760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b606482015260840161063a565b61148f8282611a10565b6001600160a01b038086165f9081526020819052604080822093909355908516815290812080548492906114c4908490611a23565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161151091815260200190565b60405180910390a350505050565b6040805160028082526060820183525f9260208301908036833701905050905030815f8151811061155157611551611b5a565b6001600160a01b03928316602091820292909201810191909152600654604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa1580156115a8573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906115cc9190611b6e565b816001815181106115df576115df611b5a565b6001600160a01b0392831660209182029290920101526006546116059130911684610bc7565b60065460405163791ac94760e01b81526001600160a01b039091169063791ac9479061163d9085905f90869030904290600401611b89565b5f604051808303815f87803b158015611654575f80fd5b505af1158015611666573d5f803e3d5ffd5b505050505050565b6006546116869030906001600160a01b031684610bc7565b60065460405163f305d71960e01b8152306004820152602481018490525f60448201819052606482015261dead60848201524260a48201526001600160a01b039091169063f305d71990839060c40160606040518083038185885af11580156116f1573d5f803e3d5ffd5b50505050506040513d601f19601f820116820180604052508101906117169190611bfa565b5050505050565b8047101561176d5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e6365000000604482015260640161063a565b5f826001600160a01b0316826040515f6040518083038185875af1925050503d805f81146117b6576040519150601f19603f3d011682016040523d82523d5f602084013e6117bb565b606091505b50509050806118325760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260448201527f6563697069656e74206d61792068617665207265766572746564000000000000606482015260840161063a565b505050565b5f8060408385031215611848575f80fd5b50508035926020909101359150565b5f602080835283518060208501525f5b8181101561188357858101830151858201604001528201611867565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114610bc4575f80fd5b5f80604083850312156118c8575f80fd5b82356118d3816118a3565b946020939093013593505050565b5f805f606084860312156118f3575f80fd5b83356118fe816118a3565b9250602084013561190e816118a3565b929592945050506040919091013590565b5f6020828403121561192f575f80fd5b5035919050565b5f60208284031215611946575f80fd5b8135611951816118a3565b9392505050565b5f8060408385031215611969575f80fd5b8235611974816118a3565b91506020830135611984816118a3565b809150509250929050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b600181811c908216806119d857607f821691505b6020821081036119f657634e487b7160e01b5f52602260045260245ffd5b50919050565b634e487b7160e01b5f52601160045260245ffd5b81810381811115610701576107016119fc565b80820180821115610701576107016119fc565b600181815b80851115611a7057815f1904821115611a5657611a566119fc565b80851615611a6357918102915b93841c9390800290611a3b565b509250929050565b5f82611a8657506001610701565b81611a9257505f610701565b8160018114611aa85760028114611ab257611ace565b6001915050610701565b60ff841115611ac357611ac36119fc565b50506001821b610701565b5060208310610133831016604e8410600b8410161715611af1575081810a610701565b611afb8383611a36565b805f1904821115611b0e57611b0e6119fc565b029392505050565b5f61195160ff841683611a78565b8082028115828204841417610701576107016119fc565b5f82611b5557634e487b7160e01b5f52601260045260245ffd5b500490565b634e487b7160e01b5f52603260045260245ffd5b5f60208284031215611b7e575f80fd5b8151611951816118a3565b5f60a08201878352602087602085015260a0604085015281875180845260c0860191506020890193505f5b81811015611bd95784516001600160a01b031683529383019391830191600101611bb4565b50506001600160a01b03969096166060850152505050608001529392505050565b5f805f60608486031215611c0c575f80fd5b835192506020840151915060408401519050925092509256fea2646970667358221220667542e040bf14039dffbe8652709d3c75e21621339c386385ab5ea34704d67164736f6c63430008180033

Deployed Bytecode

0x6080604052600436106101dd575f3560e01c80638a8c523c116100fd578063b876a82011610092578063e16d5e1111610062578063e16d5e1114610599578063f2fde38b146105b8578063f66895a3146105d7578063f887ea40146105f1575f80fd5b8063b876a820146104e9578063c5d32bb214610508578063d88c724114610536578063dd62ed3e14610555575f80fd5b80639ee39c34116100cd5780639ee39c341461046d578063a457c2d71461048c578063a8aa1b31146104ab578063a9059cbb146104ca575f80fd5b80638a8c523c146104095780638da5cb5b1461041d578063941d3de51461043a57806395d89b4114610459575f80fd5b8063395093511161017357806370a082311161014357806370a082311461037d578063715018a6146103b1578063728f8eea146103c557806385141a77146103f4575f80fd5b8063395093511461030a5780634ada218b146103295780634f6d819e1461034957806366a88d9614610368575f80fd5b806318160ddd116101ae57806318160ddd1461028557806323b872dd14610299578063313ce567146102b857806336950928146102d3575f80fd5b8062811354146101e857806306fdde0314610209578063095ea7b314610233578063158158b814610262575f80fd5b366101e457005b5f80fd5b3480156101f3575f80fd5b50610207610202366004611837565b610610565b005b348015610214575f80fd5b5061021d610661565b60405161022a9190611857565b60405180910390f35b34801561023e575f80fd5b5061025261024d3660046118b7565b6106f1565b604051901515815260200161022a565b34801561026d575f80fd5b5061027760085481565b60405190815260200161022a565b348015610290575f80fd5b50600254610277565b3480156102a4575f80fd5b506102526102b33660046118e1565b610707565b3480156102c3575f80fd5b506040516012815260200161022a565b3480156102de575f80fd5b50600d546102f2906001600160a01b031681565b6040516001600160a01b03909116815260200161022a565b348015610315575f80fd5b506102526103243660046118b7565b6107b6565b348015610334575f80fd5b5060075461025290600160b01b900460ff1681565b348015610354575f80fd5b5061020761036336600461191f565b6107ec565b348015610373575f80fd5b5061027760095481565b348015610388575f80fd5b50610277610397366004611936565b6001600160a01b03165f9081526020819052604090205490565b3480156103bc575f80fd5b50610207610832565b3480156103d0575f80fd5b50600e54600f546103df919082565b6040805192835260208301919091520161022a565b3480156103ff575f80fd5b506102f261dead81565b348015610414575f80fd5b50610207610867565b348015610428575f80fd5b506005546001600160a01b03166102f2565b348015610445575f80fd5b50610207610454366004611936565b610906565b348015610464575f80fd5b5061021d610952565b348015610478575f80fd5b5061020761048736600461191f565b610961565b348015610497575f80fd5b506102526104a63660046118b7565b6109a7565b3480156104b6575f80fd5b506007546102f2906001600160a01b031681565b3480156104d5575f80fd5b506102526104e43660046118b7565b610a41565b3480156104f4575f80fd5b50610207610503366004611936565b610a4d565b348015610513575f80fd5b50610252610522366004611936565b60126020525f908152604090205460ff1681565b348015610541575f80fd5b50610207610550366004611837565b610a9a565b348015610560575f80fd5b5061027761056f366004611958565b6001600160a01b039182165f90815260016020908152604080832093909416825291909152205490565b3480156105a4575f80fd5b506102076105b3366004611936565b610ae2565b3480156105c3575f80fd5b506102076105d2366004611936565b610b2c565b3480156105e2575f80fd5b506010546011546103df919082565b3480156105fc575f80fd5b506006546102f2906001600160a01b031681565b6005546001600160a01b031633146106435760405162461bcd60e51b815260040161063a9061198f565b60405180910390fd5b60408051808201909152828152602001819052600e91909155600f55565b606060038054610670906119c4565b80601f016020809104026020016040519081016040528092919081815260200182805461069c906119c4565b80156106e75780601f106106be576101008083540402835291602001916106e7565b820191905f5260205f20905b8154815290600101906020018083116106ca57829003601f168201915b5050505050905090565b5f6106fd338484610bc7565b5060015b92915050565b5f610713848484610cea565b6001600160a01b0384165f908152600160209081526040808320338452909152902054828110156107975760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b606482015260840161063a565b6107ab85336107a68685611a10565b610bc7565b506001949350505050565b335f8181526001602090815260408083206001600160a01b038716845290915281205490916106fd9185906107a6908690611a23565b6005546001600160a01b031633146108165760405162461bcd60e51b815260040161063a9061198f565b6108226012600a611b16565b61082c9082611b24565b60085550565b6005546001600160a01b0316331461085c5760405162461bcd60e51b815260040161063a9061198f565b6108655f6111c1565b565b6005546001600160a01b031633146108915760405162461bcd60e51b815260040161063a9061198f565b600754600160b01b900460ff16156108eb5760405162461bcd60e51b815260206004820152601a60248201527f54726164696e6720697320616c726561647920656e61626c6564000000000000604482015260640161063a565b6007805461ffff60a81b191661010160a81b17905543600a55565b6005546001600160a01b031633146109305760405162461bcd60e51b815260040161063a9061198f565b600d80546001600160a01b0319166001600160a01b0392909216919091179055565b606060048054610670906119c4565b6005546001600160a01b0316331461098b5760405162461bcd60e51b815260040161063a9061198f565b6109976012600a611b16565b6109a19082611b24565b60095550565b335f9081526001602090815260408083206001600160a01b038616845290915281205482811015610a285760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b606482015260840161063a565b610a3733856107a68685611a10565b5060019392505050565b5f6106fd338484610cea565b6005546001600160a01b03163314610a775760405162461bcd60e51b815260040161063a9061198f565b6001600160a01b03165f908152601260205260409020805460ff19166001179055565b6005546001600160a01b03163314610ac45760405162461bcd60e51b815260040161063a9061198f565b60408051808201909152828152602001819052601091909155601155565b6005546001600160a01b03163314610b0c5760405162461bcd60e51b815260040161063a9061198f565b6001600160a01b03165f908152601260205260409020805460ff19169055565b6005546001600160a01b03163314610b565760405162461bcd60e51b815260040161063a9061198f565b6001600160a01b038116610bbb5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161063a565b610bc4816111c1565b50565b6001600160a01b038316610c295760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840161063a565b6001600160a01b038216610c8a5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840161063a565b6001600160a01b038381165f8181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b5f8111610d4b5760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b606482015260840161063a565b6001600160a01b0383165f9081526012602052604090205460ff16158015610d8b57506001600160a01b0382165f9081526012602052604090205460ff16155b15610ddf57600754600160b01b900460ff16610ddf5760405162461bcd60e51b8152602060048201526013602482015272151c98591a5b99c81b9bdd08195b98589b1959606a1b604482015260640161063a565b6007546001600160a01b038481169116148015610e1457506001600160a01b0382165f9081526012602052604090205460ff16155b8015610e2a5750600754600160a01b900460ff16155b15610ea95760095481610e51846001600160a01b03165f9081526020819052604090205490565b610e5b9190611a23565b1115610ea95760405162461bcd60e51b815260206004820181905260248201527f596f752061726520657863656564696e67206d617857616c6c65744c696d6974604482015260640161063a565b6007546001600160a01b03848116911614801590610edf57506001600160a01b0382165f9081526012602052604090205460ff16155b8015610f0357506001600160a01b0383165f9081526012602052604090205460ff16155b8015610f195750600754600160a01b900460ff16155b15610fad576007546001600160a01b03838116911614610fad5760095481610f55846001600160a01b03165f9081526020819052604090205490565b610f5f9190611a23565b1115610fad5760405162461bcd60e51b815260206004820181905260248201527f596f752061726520657863656564696e67206d617857616c6c65744c696d6974604482015260640161063a565b5f805f610fcb60405180604001604052805f81526020015f81525090565b6001600160a01b0387165f9081526012602052604081205460ff1615801561100b57506001600160a01b0387165f9081526012602052604090205460ff16155b80156110255750600b54600a546110229190611a23565b43105b600754909150600160a01b900460ff168061105757506001600160a01b0388165f9081526012602052604090205460ff165b8061107957506001600160a01b0387165f9081526012602052604090205460ff165b15611086575f9250611122565b6007546001600160a01b0388811691161480156110a1575080155b156110da576010546011546110b69190611a23565b60408051808201909152601054815260115460208201529095508594509150611122565b8061111357600e54600f546110ef9190611a23565b60408051808201909152600e548152600f5460208201529095508594509150611122565b801561112257600c5494508493505b606461112e8588611b24565b6111389190611b3b565b600754909350600160a81b900460ff16801561116257506007546001600160a01b03898116911614155b15611171576111718583611212565b6111858888611180868a611a10565b611348565b82156111b75784156111b7575f606461119e8789611b24565b6111a89190611b3b565b90506111b5893083611348565b505b5050505050505050565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b600754600160a01b900460ff16611344576007805460ff60a01b1916600160a01b179055811561133657305f908152602081905260409020546008548110611334576001600854111561126457506008545b5f611270846002611b24565b90505f818460200151846112849190611b24565b61128e9190611b3b565b90505f61129b8285611a10565b9050476112a78261151e565b5f6112b28247611a10565b90505f8760200151866112c59190611a10565b6112cf9083611b3b565b90505f8860200151826112e29190611b24565b905080156112f4576112f4868261166e565b88515f90611303846002611b24565b61130d9190611b24565b9050801561132b57600d5461132b906001600160a01b03168261171d565b50505050505050505b505b6007805460ff60a01b191690555b5050565b6001600160a01b0383166113ac5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b606482015260840161063a565b6001600160a01b03821661140e5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b606482015260840161063a565b6001600160a01b0383165f90815260208190526040902054818110156114855760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b606482015260840161063a565b61148f8282611a10565b6001600160a01b038086165f9081526020819052604080822093909355908516815290812080548492906114c4908490611a23565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161151091815260200190565b60405180910390a350505050565b6040805160028082526060820183525f9260208301908036833701905050905030815f8151811061155157611551611b5a565b6001600160a01b03928316602091820292909201810191909152600654604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa1580156115a8573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906115cc9190611b6e565b816001815181106115df576115df611b5a565b6001600160a01b0392831660209182029290920101526006546116059130911684610bc7565b60065460405163791ac94760e01b81526001600160a01b039091169063791ac9479061163d9085905f90869030904290600401611b89565b5f604051808303815f87803b158015611654575f80fd5b505af1158015611666573d5f803e3d5ffd5b505050505050565b6006546116869030906001600160a01b031684610bc7565b60065460405163f305d71960e01b8152306004820152602481018490525f60448201819052606482015261dead60848201524260a48201526001600160a01b039091169063f305d71990839060c40160606040518083038185885af11580156116f1573d5f803e3d5ffd5b50505050506040513d601f19601f820116820180604052508101906117169190611bfa565b5050505050565b8047101561176d5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e6365000000604482015260640161063a565b5f826001600160a01b0316826040515f6040518083038185875af1925050503d805f81146117b6576040519150601f19603f3d011682016040523d82523d5f602084013e6117bb565b606091505b50509050806118325760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260448201527f6563697069656e74206d61792068617665207265766572746564000000000000606482015260840161063a565b505050565b5f8060408385031215611848575f80fd5b50508035926020909101359150565b5f602080835283518060208501525f5b8181101561188357858101830151858201604001528201611867565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114610bc4575f80fd5b5f80604083850312156118c8575f80fd5b82356118d3816118a3565b946020939093013593505050565b5f805f606084860312156118f3575f80fd5b83356118fe816118a3565b9250602084013561190e816118a3565b929592945050506040919091013590565b5f6020828403121561192f575f80fd5b5035919050565b5f60208284031215611946575f80fd5b8135611951816118a3565b9392505050565b5f8060408385031215611969575f80fd5b8235611974816118a3565b91506020830135611984816118a3565b809150509250929050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b600181811c908216806119d857607f821691505b6020821081036119f657634e487b7160e01b5f52602260045260245ffd5b50919050565b634e487b7160e01b5f52601160045260245ffd5b81810381811115610701576107016119fc565b80820180821115610701576107016119fc565b600181815b80851115611a7057815f1904821115611a5657611a566119fc565b80851615611a6357918102915b93841c9390800290611a3b565b509250929050565b5f82611a8657506001610701565b81611a9257505f610701565b8160018114611aa85760028114611ab257611ace565b6001915050610701565b60ff841115611ac357611ac36119fc565b50506001821b610701565b5060208310610133831016604e8410600b8410161715611af1575081810a610701565b611afb8383611a36565b805f1904821115611b0e57611b0e6119fc565b029392505050565b5f61195160ff841683611a78565b8082028115828204841417610701576107016119fc565b5f82611b5557634e487b7160e01b5f52601260045260245ffd5b500490565b634e487b7160e01b5f52603260045260245ffd5b5f60208284031215611b7e575f80fd5b8151611951816118a3565b5f60a08201878352602087602085015260a0604085015281875180845260c0860191506020890193505f5b81811015611bd95784516001600160a01b031683529383019391830191600101611bb4565b50506001600160a01b03969096166060850152505050608001529392505050565b5f805f60608486031215611c0c575f80fd5b835192506020840151915060408401519050925092509256fea2646970667358221220667542e040bf14039dffbe8652709d3c75e21621339c386385ab5ea34704d67164736f6c63430008180033

Deployed Bytecode Sourcemap

8025:9106:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16098:131;;;;;;;;;;-1:-1:-1;16098:131:0;;;;;:::i;:::-;;:::i;:::-;;1956:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9612:161;;;;;;;;;;-1:-1:-1;9612:161:0;;;;;:::i;:::-;;:::i;:::-;;;1441:14:1;;1434:22;1416:41;;1404:2;1389:18;9612:161:0;1276:187:1;8301:50:0;;;;;;;;;;;;;;;;;;;1614:25:1;;;1602:2;1587:18;8301:50:0;1468:177:1;2295:108:0;;;;;;;;;;-1:-1:-1;2383:12:0;;2295:108;;9781:448;;;;;;;;;;-1:-1:-1;9781:448:0;;;;;:::i;:::-;;:::i;2188:93::-;;;;;;;;;;-1:-1:-1;2188:93:0;;2271:2;2253:36:1;;2241:2;2226:18;2188:93:0;2111:184:1;8527:63:0;;;;;;;;;;-1:-1:-1;8527:63:0;;;;-1:-1:-1;;;;;8527:63:0;;;;;;-1:-1:-1;;;;;2464:32:1;;;2446:51;;2434:2;2419:18;8527:63:0;2300:203:1;10237:248:0;;;;;;;;;;-1:-1:-1;10237:248:0;;;;;:::i;:::-;;:::i;8258:34::-;;;;;;;;;;-1:-1:-1;8258:34:0;;;;-1:-1:-1;;;8258:34:0;;;;;;15923:167;;;;;;;;;;-1:-1:-1;15923:167:0;;;;;:::i;:::-;;:::i;8358:48::-;;;;;;;;;;;;;;;;2417:127;;;;;;;;;;-1:-1:-1;2417:127:0;;;;;:::i;:::-;-1:-1:-1;;;;;2518:18:0;2491:7;2518:18;;;;;;;;;;;;2417:127;6688:94;;;;;;;;;;;;;:::i;8754:32::-;;;;;;;;;;-1:-1:-1;8754:32:0;;;;;;;;;;;;;3119:25:1;;;3175:2;3160:18;;3153:34;;;;3092:18;8754:32:0;2945:248:1;8594:79:0;;;;;;;;;;;;8631:42;8594:79;;16380:224;;;;;;;;;;;;;:::i;6465:87::-;;;;;;;;;;-1:-1:-1;6538:6:0;;-1:-1:-1;;;;;6538:6:0;6465:87;;16612:94;;;;;;;;;;-1:-1:-1;16612:94:0;;;;;:::i;:::-;;:::i;2070:104::-;;;;;;;;;;;;;:::i;16948:123::-;;;;;;;;;;-1:-1:-1;16948:123:0;;;;;:::i;:::-;;:::i;10493:410::-;;;;;;;;;;-1:-1:-1;10493:410:0;;;;;:::i;:::-;;:::i;8140:19::-;;;;;;;;;;-1:-1:-1;8140:19:0;;;;-1:-1:-1;;;;;8140:19:0;;;10911:165;;;;;;;;;;-1:-1:-1;10911:165:0;;;;;:::i;:::-;;:::i;16716:105::-;;;;;;;;;;-1:-1:-1;16716:105:0;;;;;:::i;:::-;;:::i;8838:41::-;;;;;;;;;;-1:-1:-1;8838:41:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;16237:136;;;;;;;;;;-1:-1:-1;16237:136:0;;;;;:::i;:::-;;:::i;2788:201::-;;;;;;;;;;-1:-1:-1;2788:201:0;;;;;:::i;:::-;-1:-1:-1;;;;;2954:18:0;;;2922:7;2954:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;2788:201;16829:109;;;;;;;;;;-1:-1:-1;16829:109:0;;;;;:::i;:::-;;:::i;6790:192::-;;;;;;;;;;-1:-1:-1;6790:192:0;;;;;:::i;:::-;;:::i;8793:36::-;;;;;;;;;;-1:-1:-1;8793:36:0;;;;;;;;;8112:21;;;;;;;;;;-1:-1:-1;8112:21:0;;;;-1:-1:-1;;;;;8112:21:0;;;16098:131;6538:6;;-1:-1:-1;;;;;6538:6:0;316:10;6600:23;6592:68;;;;-1:-1:-1;;;6592:68:0;;;;;;;:::i;:::-;;;;;;;;;16205:16:::1;::::0;;;;::::1;::::0;;;;;;::::1;;::::0;;;16197:5:::1;:24:::0;;;;;;16098:131::o;1956:100::-;2010:13;2043:5;2036:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1956:100;:::o;9612:161::-;9687:4;9704:39;316:10;9727:7;9736:6;9704:8;:39::i;:::-;-1:-1:-1;9761:4:0;9612:161;;;;;:::o;9781:448::-;9913:4;9930:36;9940:6;9948:9;9959:6;9930:9;:36::i;:::-;-1:-1:-1;;;;;10006:19:0;;9979:24;10006:19;;;:11;:19;;;;;;;;316:10;10006:33;;;;;;;;10058:26;;;;10050:79;;;;-1:-1:-1;;;10050:79:0;;4762:2:1;10050:79:0;;;4744:21:1;4801:2;4781:18;;;4774:30;4840:34;4820:18;;;4813:62;-1:-1:-1;;;4891:18:1;;;4884:38;4939:19;;10050:79:0;4560:404:1;10050:79:0;10140:57;10149:6;316:10;10171:25;10190:6;10171:16;:25;:::i;:::-;10140:8;:57::i;:::-;-1:-1:-1;10217:4:0;;9781:448;-1:-1:-1;;;;9781:448:0:o;10237:248::-;316:10;10353:4;10407:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;10407:34:0;;;;;;;;;;10353:4;;10375:80;;10398:7;;10407:47;;10444:10;;10407:47;:::i;15923:167::-;6538:6;;-1:-1:-1;;;;;6538:6:0;316:10;6600:23;6592:68;;;;-1:-1:-1;;;6592:68:0;;;;;;;:::i;:::-;16068:14:::1;2271:2:::0;16068::::1;:14;:::i;:::-;16055:27;::::0;:10;:27:::1;:::i;:::-;16036:16;:46:::0;-1:-1:-1;15923:167:0:o;6688:94::-;6538:6;;-1:-1:-1;;;;;6538:6:0;316:10;6600:23;6592:68;;;;-1:-1:-1;;;6592:68:0;;;;;;;:::i;:::-;6753:21:::1;6771:1;6753:9;:21::i;:::-;6688:94::o:0;16380:224::-;6538:6;;-1:-1:-1;;;;;6538:6:0;316:10;6600:23;6592:68;;;;-1:-1:-1;;;6592:68:0;;;;;;;:::i;:::-;16444:14:::1;::::0;-1:-1:-1;;;16444:14:0;::::1;;;16443:15;16435:54;;;::::0;-1:-1:-1;;;16435:54:0;;7116:2:1;16435:54:0::1;::::0;::::1;7098:21:1::0;7155:2;7135:18;;;7128:30;7194:28;7174:18;;;7167:56;7240:18;;16435:54:0::1;6914:350:1::0;16435:54:0::1;16500:14;:21:::0;;-1:-1:-1;;;;16532:25:0;-1:-1:-1;;;16532:25:0;;;16584:12:::1;16568:13;:28:::0;16380:224::o;16612:94::-;6538:6;;-1:-1:-1;;;;;6538:6:0;316:10;6600:23;6592:68;;;;-1:-1:-1;;;6592:68:0;;;;;;;:::i;:::-;16684:2:::1;:14:::0;;-1:-1:-1;;;;;;16684:14:0::1;-1:-1:-1::0;;;;;16684:14:0;;;::::1;::::0;;;::::1;::::0;;16612:94::o;2070:104::-;2126:13;2159:7;2152:14;;;;;:::i;16948:123::-;6538:6;;-1:-1:-1;;;;;6538:6:0;316:10;6600:23;6592:68;;;;-1:-1:-1;;;6592:68:0;;;;;;;:::i;:::-;17048:14:::1;2271:2:::0;17048::::1;:14;:::i;:::-;17036:26;::::0;:9;:26:::1;:::i;:::-;17019:14;:43:::0;-1:-1:-1;16948:123:0:o;10493:410::-;316:10;10614:4;10663:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;10663:34:0;;;;;;;;;;10716:35;;;;10708:85;;;;-1:-1:-1;;;10708:85:0;;7471:2:1;10708:85:0;;;7453:21:1;7510:2;7490:18;;;7483:30;7549:34;7529:18;;;7522:62;-1:-1:-1;;;7600:18:1;;;7593:35;7645:19;;10708:85:0;7269:401:1;10708:85:0;10804:67;316:10;10827:7;10836:34;10855:15;10836:16;:34;:::i;10804:67::-;-1:-1:-1;10891:4:0;;10493:410;-1:-1:-1;;;10493:410:0:o;10911:165::-;10989:4;11006:40;11016:10;11028:9;11039:6;11006:9;:40::i;16716:105::-;6538:6;;-1:-1:-1;;;;;6538:6:0;316:10;6600:23;6592:68;;;;-1:-1:-1;;;6592:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;16787:19:0::1;;::::0;;;:9:::1;:19;::::0;;;;:26;;-1:-1:-1;;16787:26:0::1;16809:4;16787:26;::::0;;16716:105::o;16237:136::-;6538:6;;-1:-1:-1;;;;;6538:6:0;316:10;6600:23;6592:68;;;;-1:-1:-1;;;6592:68:0;;;;;;;:::i;:::-;16349:16:::1;::::0;;;;::::1;::::0;;;;;;::::1;;::::0;;;16337:9:::1;:28:::0;;;;;;16237:136::o;16829:109::-;6538:6;;-1:-1:-1;;;;;6538:6:0;316:10;6600:23;6592:68;;;;-1:-1:-1;;;6592:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;16903:19:0::1;16925:5;16903:19:::0;;;:9:::1;:19;::::0;;;;:27;;-1:-1:-1;;16903:27:0::1;::::0;;16829:109::o;6790:192::-;6538:6;;-1:-1:-1;;;;;6538:6:0;316:10;6600:23;6592:68;;;;-1:-1:-1;;;6592:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;6879:22:0;::::1;6871:73;;;::::0;-1:-1:-1;;;6871:73:0;;7877:2:1;6871:73:0::1;::::0;::::1;7859:21:1::0;7916:2;7896:18;;;7889:30;7955:34;7935:18;;;7928:62;-1:-1:-1;;;8006:18:1;;;7999:36;8052:19;;6871:73:0::1;7675:402:1::0;6871:73:0::1;6955:19;6965:8;6955:9;:19::i;:::-;6790:192:::0;:::o;5359:380::-;-1:-1:-1;;;;;5495:19:0;;5487:68;;;;-1:-1:-1;;;5487:68:0;;8284:2:1;5487:68:0;;;8266:21:1;8323:2;8303:18;;;8296:30;8362:34;8342:18;;;8335:62;-1:-1:-1;;;8413:18:1;;;8406:34;8457:19;;5487:68:0;8082:400:1;5487:68:0;-1:-1:-1;;;;;5574:21:0;;5566:68;;;;-1:-1:-1;;;5566:68:0;;8689:2:1;5566:68:0;;;8671:21:1;8728:2;8708:18;;;8701:30;8767:34;8747:18;;;8740:62;-1:-1:-1;;;8818:18:1;;;8811:32;8860:19;;5566:68:0;8487:398:1;5566:68:0;-1:-1:-1;;;;;5647:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;5699:32;;1614:25:1;;;5699:32:0;;1587:18:1;5699:32:0;;;;;;;5359:380;;;:::o;11084:2438::-;11234:1;11225:6;:10;11217:64;;;;-1:-1:-1;;;11217:64:0;;9092:2:1;11217:64:0;;;9074:21:1;9131:2;9111:18;;;9104:30;9170:34;9150:18;;;9143:62;-1:-1:-1;;;9221:18:1;;;9214:39;9270:19;;11217:64:0;8890:405:1;11217:64:0;-1:-1:-1;;;;;11299:17:0;;;;;;:9;:17;;;;;;;;11298:18;:43;;;;-1:-1:-1;;;;;;11321:20:0;;;;;;:9;:20;;;;;;;;11320:21;11298:43;11294:122;;;11366:14;;-1:-1:-1;;;11366:14:0;;;;11358:46;;;;-1:-1:-1;;;11358:46:0;;9502:2:1;11358:46:0;;;9484:21:1;9541:2;9521:18;;;9514:30;-1:-1:-1;;;9560:18:1;;;9553:49;9619:18;;11358:46:0;9300:343:1;11358:46:0;11442:4;;-1:-1:-1;;;;;11432:14:0;;;11442:4;;11432:14;:39;;;;-1:-1:-1;;;;;;11451:20:0;;;;;;:9;:20;;;;;;;;11450:21;11432:39;:59;;;;-1:-1:-1;11476:15:0;;-1:-1:-1;;;11476:15:0;;;;11475:16;11432:59;11428:215;;;11549:14;;11539:6;11516:20;11526:9;-1:-1:-1;;;;;2518:18:0;2491:7;2518:18;;;;;;;;;;;;2417:127;11516:20;:29;;;;:::i;:::-;:47;;11508:123;;;;-1:-1:-1;;;11508:123:0;;9850:2:1;11508:123:0;;;9832:21:1;;;9869:18;;;9862:30;9928:34;9908:18;;;9901:62;9980:18;;11508:123:0;9648:356:1;11508:123:0;11669:4;;-1:-1:-1;;;;;11659:14:0;;;11669:4;;11659:14;;;;:39;;-1:-1:-1;;;;;;11678:20:0;;;;;;:9;:20;;;;;;;;11677:21;11659:39;:61;;;;-1:-1:-1;;;;;;11703:17:0;;;;;;:9;:17;;;;;;;;11702:18;11659:61;:81;;;;-1:-1:-1;11725:15:0;;-1:-1:-1;;;11725:15:0;;;;11724:16;11659:81;11655:315;;;11787:4;;-1:-1:-1;;;;;11774:17:0;;;11787:4;;11774:17;11770:189;;11853:14;;11843:6;11820:20;11830:9;-1:-1:-1;;;;;2518:18:0;2491:7;2518:18;;;;;;;;;;;;2417:127;11820:20;:29;;;;:::i;:::-;:47;;11812:131;;;;-1:-1:-1;;;11812:131:0;;9850:2:1;11812:131:0;;;9832:21:1;;;9869:18;;;9862:30;9928:34;9908:18;;;9901:62;9980:18;;11812:131:0;9648:356:1;11812:131:0;11982:15;12008:14;12033:11;12055:25;-1:-1:-1;;;;;;;;;;;;;;;;;;;12055:25:0;-1:-1:-1;;;;;12114:17:0;;12093;12114;;;:9;:17;;;;;;;;12113:18;:56;;;;-1:-1:-1;;;;;;12149:20:0;;;;;;:9;:20;;;;;;;;12148:21;12113:56;:112;;;;;12217:8;;12201:13;;:24;;;;:::i;:::-;12186:12;:39;12113:112;12313:15;;12093:132;;-1:-1:-1;;;;12313:15:0;;;;;:36;;-1:-1:-1;;;;;;12332:17:0;;;;;;:9;:17;;;;;;;;12313:36;:60;;;-1:-1:-1;;;;;;12353:20:0;;;;;;:9;:20;;;;;;;;12313:60;12309:629;;;12394:1;12388:7;;12309:629;;;12459:4;;-1:-1:-1;;;;;12446:17:0;;;12459:4;;12446:17;:34;;;;;12468:12;12467:13;12446:34;12442:496;;;12556:9;:13;12524:12;;:45;;12556:13;12524:45;:::i;:::-;12616:24;;;;;;;;;12631:9;12616:24;;;;;;;;;12497:72;;-1:-1:-1;12497:72:0;;-1:-1:-1;12616:24:0;-1:-1:-1;12442:496:0;;;12663:12;12658:280;;12747:5;:9;12719:8;;:37;;12747:9;12719:37;:::i;:::-;12803:20;;;;;;;;;12818:5;12803:20;;;;;;;;;12692:64;;-1:-1:-1;12692:64:0;;-1:-1:-1;12803:20:0;-1:-1:-1;12658:280:0;;;12845:12;12841:97;;;12884:9;;;-1:-1:-1;12884:9:0;;-1:-1:-1;12841:97:0;12976:3;12957:15;12966:6;12957;:15;:::i;:::-;12956:23;;;;:::i;:::-;13093:18;;12950:29;;-1:-1:-1;;;;13093:18:0;;;;:36;;;;-1:-1:-1;13125:4:0;;-1:-1:-1;;;;;13115:14:0;;;13125:4;;13115:14;;13093:36;13089:76;;;13131:34;13143:7;13152:12;13131:11;:34::i;:::-;13207:48;13223:6;13231:9;13242:12;13251:3;13242:6;:12;:::i;:::-;13207:15;:48::i;:::-;13270:7;;13266:249;;13342:11;;13338:164;;13374:17;13415:3;13395:16;13404:7;13395:6;:16;:::i;:::-;13394:24;;;;:::i;:::-;13374:44;;13437:49;13453:6;13469:4;13476:9;13437:15;:49::i;:::-;13355:147;13338:164;11206:2316;;;;;11084:2438;;;:::o;6990:173::-;7065:6;;;-1:-1:-1;;;;;7082:17:0;;;-1:-1:-1;;;;;;7082:17:0;;;;;;;7115:40;;7065:6;;;7082:17;7065:6;;7115:40;;7046:16;;7115:40;7035:128;6990:173;:::o;13530:1343::-;8927:15;;-1:-1:-1;;;8927:15:0;;;;8922:125;;8959:15;:22;;-1:-1:-1;;;;8959:22:0;-1:-1:-1;;;8959:22:0;;;13616:49;;13647:7:::1;13616:49;13722:4;13678:23;2518:18:::0;;;;;;;;;;;13762:16:::1;::::0;13743:35;::::1;13739:1127;;13818:1;13799:16;;:20;13795:95;;;-1:-1:-1::0;13858:16:0::1;::::0;13795:95:::1;13961:19;13983:11;:7:::0;13993:1:::1;13983:11;:::i;:::-;13961:33;;14009:32;14096:11;14063:9;:12;;;14045:15;:30;;;;:::i;:::-;14044:63;;;;:::i;:::-;14009:98:::0;-1:-1:-1;14122:14:0::1;14139:42;14009:98:::0;14139:15;:42:::1;:::i;:::-;14122:59:::0;-1:-1:-1;14223:21:0::1;14261:24;14122:59:::0;14261:16:::1;:24::i;:::-;14302:20;14325:38;14349:14:::0;14325:21:::1;:38;:::i;:::-;14302:61;;14378:19;14430:9;:12;;;14416:11;:26;;;;:::i;:::-;14400:43;::::0;:12;:43:::1;:::i;:::-;14378:65;;14458:29;14504:9;:12;;;14490:11;:26;;;;:::i;:::-;14458:58:::0;-1:-1:-1;14537:25:0;;14533:161:::1;;14617:61;14630:24;14656:21;14617:12;:61::i;:::-;14745:13:::0;;14710:14:::1;::::0;14727:15:::1;:11:::0;14741:1:::1;14727:15;:::i;:::-;:31;;;;:::i;:::-;14710:48:::0;-1:-1:-1;14777:10:0;;14773:80:::1;;14816:2;::::0;14808:29:::1;::::0;-1:-1:-1;;;;;14816:2:0::1;14830:6:::0;14808:21:::1;:29::i;:::-;13780:1086;;;;;;;;13739:1127;13610:1263;8996:1;9012:15:::0;:23;;-1:-1:-1;;;;9012:23:0;;;8922:125;13530:1343;;:::o;4340:638::-;-1:-1:-1;;;;;4480:20:0;;4472:70;;;;-1:-1:-1;;;4472:70:0;;10433:2:1;4472:70:0;;;10415:21:1;10472:2;10452:18;;;10445:30;10511:34;10491:18;;;10484:62;-1:-1:-1;;;10562:18:1;;;10555:35;10607:19;;4472:70:0;10231:401:1;4472:70:0;-1:-1:-1;;;;;4561:23:0;;4553:71;;;;-1:-1:-1;;;4553:71:0;;10839:2:1;4553:71:0;;;10821:21:1;10878:2;10858:18;;;10851:30;10917:34;10897:18;;;10890:62;-1:-1:-1;;;10968:18:1;;;10961:33;11011:19;;4553:71:0;10637:399:1;4553:71:0;-1:-1:-1;;;;;4721:17:0;;4697:21;4721:17;;;;;;;;;;;4757:23;;;;4749:74;;;;-1:-1:-1;;;4749:74:0;;11243:2:1;4749:74:0;;;11225:21:1;11282:2;11262:18;;;11255:30;11321:34;11301:18;;;11294:62;-1:-1:-1;;;11372:18:1;;;11365:36;11418:19;;4749:74:0;11041:402:1;4749:74:0;4854:22;4870:6;4854:13;:22;:::i;:::-;-1:-1:-1;;;;;4834:17:0;;;:9;:17;;;;;;;;;;;:42;;;;4887:20;;;;;;;;:30;;4911:6;;4834:9;4887:30;;4911:6;;4887:30;:::i;:::-;;;;;;;;4952:9;-1:-1:-1;;;;;4935:35:0;4944:6;-1:-1:-1;;;;;4935:35:0;;4963:6;4935:35;;;;1614:25:1;;1602:2;1587:18;;1468:177;4935:35:0;;;;;;;;4461:517;4340:638;;;:::o;14881:526::-;15023:16;;;15037:1;15023:16;;;;;;;;14999:21;;15023:16;;;;;;;;;;-1:-1:-1;15023:16:0;14999:40;;15068:4;15050;15055:1;15050:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;15050:23:0;;;:7;;;;;;;;;;:23;;;;15094:6;;:13;;;-1:-1:-1;;;15094:13:0;;;;:6;;;;;:11;;:13;;;;;15050:7;;15094:13;;;;;:6;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;15084:4;15089:1;15084:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;15084:23:0;;;:7;;;;;;;;;:23;15152:6;;15120:53;;15137:4;;15152:6;15161:11;15120:8;:53::i;:::-;15212:6;;:187;;-1:-1:-1;;;15212:187:0;;-1:-1:-1;;;;;15212:6:0;;;;:57;;:187;;15284:11;;15212:6;;15326:4;;15353;;15373:15;;15212:187;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14936:471;14881:526;:::o;15415:500::-;15595:6;;15563:53;;15580:4;;-1:-1:-1;;;;;15595:6:0;15604:11;15563:8;:53::i;:::-;15659:6;;:248;;-1:-1:-1;;;15659:248:0;;15724:4;15659:248;;;13294:34:1;13344:18;;;13337:34;;;15659:6:0;13387:18:1;;;13380:34;;;13430:18;;;13423:34;8631:42:0;13473:19:1;;;13466:44;15881:15:0;13526:19:1;;;13519:35;-1:-1:-1;;;;;15659:6:0;;;;:22;;15690:9;;13228:19:1;;15659:248:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;15415:500;;:::o;5908:319::-;6023:6;5998:21;:31;;5990:73;;;;-1:-1:-1;;;5990:73:0;;14078:2:1;5990:73:0;;;14060:21:1;14117:2;14097:18;;;14090:30;14156:31;14136:18;;;14129:59;14205:18;;5990:73:0;13876:353:1;5990:73:0;6077:12;6095:9;-1:-1:-1;;;;;6095:14:0;6118:6;6095:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6076:54;;;6149:7;6141:78;;;;-1:-1:-1;;;6141:78:0;;14646:2:1;6141:78:0;;;14628:21:1;14685:2;14665:18;;;14658:30;14724:34;14704:18;;;14697:62;14795:28;14775:18;;;14768:56;14841:19;;6141:78:0;14444:422:1;6141:78:0;5979:248;5908:319;;:::o;14:248:1:-;82:6;90;143:2;131:9;122:7;118:23;114:32;111:52;;;159:1;156;149:12;111:52;-1:-1:-1;;182:23:1;;;252:2;237:18;;;224:32;;-1:-1:-1;14:248:1:o;267:548::-;379:4;408:2;437;426:9;419:21;469:6;463:13;512:6;507:2;496:9;492:18;485:34;537:1;547:140;561:6;558:1;555:13;547:140;;;656:14;;;652:23;;646:30;622:17;;;641:2;618:26;611:66;576:10;;547:140;;;551:3;736:1;731:2;722:6;711:9;707:22;703:31;696:42;806:2;799;795:7;790:2;782:6;778:15;774:29;763:9;759:45;755:54;747:62;;;;267:548;;;;:::o;820:131::-;-1:-1:-1;;;;;895:31:1;;885:42;;875:70;;941:1;938;931:12;956:315;1024:6;1032;1085:2;1073:9;1064:7;1060:23;1056:32;1053:52;;;1101:1;1098;1091:12;1053:52;1140:9;1127:23;1159:31;1184:5;1159:31;:::i;:::-;1209:5;1261:2;1246:18;;;;1233:32;;-1:-1:-1;;;956:315:1:o;1650:456::-;1727:6;1735;1743;1796:2;1784:9;1775:7;1771:23;1767:32;1764:52;;;1812:1;1809;1802:12;1764:52;1851:9;1838:23;1870:31;1895:5;1870:31;:::i;:::-;1920:5;-1:-1:-1;1977:2:1;1962:18;;1949:32;1990:33;1949:32;1990:33;:::i;:::-;1650:456;;2042:7;;-1:-1:-1;;;2096:2:1;2081:18;;;;2068:32;;1650:456::o;2508:180::-;2567:6;2620:2;2608:9;2599:7;2595:23;2591:32;2588:52;;;2636:1;2633;2626:12;2588:52;-1:-1:-1;2659:23:1;;2508:180;-1:-1:-1;2508:180:1:o;2693:247::-;2752:6;2805:2;2793:9;2784:7;2780:23;2776:32;2773:52;;;2821:1;2818;2811:12;2773:52;2860:9;2847:23;2879:31;2904:5;2879:31;:::i;:::-;2929:5;2693:247;-1:-1:-1;;;2693:247:1:o;3198:388::-;3266:6;3274;3327:2;3315:9;3306:7;3302:23;3298:32;3295:52;;;3343:1;3340;3333:12;3295:52;3382:9;3369:23;3401:31;3426:5;3401:31;:::i;:::-;3451:5;-1:-1:-1;3508:2:1;3493:18;;3480:32;3521:33;3480:32;3521:33;:::i;:::-;3573:7;3563:17;;;3198:388;;;;;:::o;3814:356::-;4016:2;3998:21;;;4035:18;;;4028:30;4094:34;4089:2;4074:18;;4067:62;4161:2;4146:18;;3814:356::o;4175:380::-;4254:1;4250:12;;;;4297;;;4318:61;;4372:4;4364:6;4360:17;4350:27;;4318:61;4425:2;4417:6;4414:14;4394:18;4391:38;4388:161;;4471:10;4466:3;4462:20;4459:1;4452:31;4506:4;4503:1;4496:15;4534:4;4531:1;4524:15;4388:161;;4175:380;;;:::o;4969:127::-;5030:10;5025:3;5021:20;5018:1;5011:31;5061:4;5058:1;5051:15;5085:4;5082:1;5075:15;5101:128;5168:9;;;5189:11;;;5186:37;;;5203:18;;:::i;5234:125::-;5299:9;;;5320:10;;;5317:36;;;5333:18;;:::i;5364:416::-;5453:1;5490:5;5453:1;5504:270;5525:7;5515:8;5512:21;5504:270;;;5584:4;5580:1;5576:6;5572:17;5566:4;5563:27;5560:53;;;5593:18;;:::i;:::-;5643:7;5633:8;5629:22;5626:55;;;5663:16;;;;5626:55;5742:22;;;;5702:15;;;;5504:270;;;5508:3;5364:416;;;;;:::o;5785:806::-;5834:5;5864:8;5854:80;;-1:-1:-1;5905:1:1;5919:5;;5854:80;5953:4;5943:76;;-1:-1:-1;5990:1:1;6004:5;;5943:76;6035:4;6053:1;6048:59;;;;6121:1;6116:130;;;;6028:218;;6048:59;6078:1;6069:10;;6092:5;;;6116:130;6153:3;6143:8;6140:17;6137:43;;;6160:18;;:::i;:::-;-1:-1:-1;;6216:1:1;6202:16;;6231:5;;6028:218;;6330:2;6320:8;6317:16;6311:3;6305:4;6302:13;6298:36;6292:2;6282:8;6279:16;6274:2;6268:4;6265:12;6261:35;6258:77;6255:159;;;-1:-1:-1;6367:19:1;;;6399:5;;6255:159;6446:34;6471:8;6465:4;6446:34;:::i;:::-;6516:6;6512:1;6508:6;6504:19;6495:7;6492:32;6489:58;;;6527:18;;:::i;:::-;6565:20;;5785:806;-1:-1:-1;;;5785:806:1:o;6596:140::-;6654:5;6683:47;6724:4;6714:8;6710:19;6704:4;6683:47;:::i;6741:168::-;6814:9;;;6845;;6862:15;;;6856:22;;6842:37;6832:71;;6883:18;;:::i;10009:217::-;10049:1;10075;10065:132;;10119:10;10114:3;10110:20;10107:1;10100:31;10154:4;10151:1;10144:15;10182:4;10179:1;10172:15;10065:132;-1:-1:-1;10211:9:1;;10009:217::o;11580:127::-;11641:10;11636:3;11632:20;11629:1;11622:31;11672:4;11669:1;11662:15;11696:4;11693:1;11686:15;11712:251;11782:6;11835:2;11823:9;11814:7;11810:23;11806:32;11803:52;;;11851:1;11848;11841:12;11803:52;11883:9;11877:16;11902:31;11927:5;11902:31;:::i;11968:980::-;12230:4;12278:3;12267:9;12263:19;12309:6;12298:9;12291:25;12335:2;12373:6;12368:2;12357:9;12353:18;12346:34;12416:3;12411:2;12400:9;12396:18;12389:31;12440:6;12475;12469:13;12506:6;12498;12491:22;12544:3;12533:9;12529:19;12522:26;;12583:2;12575:6;12571:15;12557:29;;12604:1;12614:195;12628:6;12625:1;12622:13;12614:195;;;12693:13;;-1:-1:-1;;;;;12689:39:1;12677:52;;12784:15;;;;12749:12;;;;12725:1;12643:9;12614:195;;;-1:-1:-1;;;;;;;12865:32:1;;;;12860:2;12845:18;;12838:60;-1:-1:-1;;;12929:3:1;12914:19;12907:35;12826:3;11968:980;-1:-1:-1;;;11968:980:1:o;13565:306::-;13653:6;13661;13669;13722:2;13710:9;13701:7;13697:23;13693:32;13690:52;;;13738:1;13735;13728:12;13690:52;13767:9;13761:16;13751:26;;13817:2;13806:9;13802:18;13796:25;13786:35;;13861:2;13850:9;13846:18;13840:25;13830:35;;13565:306;;;;;:::o

Swarm Source

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