ETH Price: $2,522.81 (+0.30%)

Token

Tatami (Tatami)
 

Overview

Max Total Supply

7,000,000 Tatami

Holders

538

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
67 Tatami

Value
$0.00
0x1513782FF33D0C3Be1cBB861E4fFd4E9d069292d
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:
Tatami

Compiler Version
v0.8.18+commit.87f61d96

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-09-26
*/

/*
.___________.        ___         .___________.        ___         .___  ___.     __  
|           |       /   \        |           |       /   \        |   \/   |    |  | 
`---|  |----`      /  ^  \       `---|  |----`      /  ^  \       |  \  /  |    |  | 
    |  |          /  /_\  \          |  |          /  /_\  \      |  |\/|  |    |  | 
    |  |         /  _____  \         |  |         /  _____  \     |  |  |  |    |  | 
    |__|        /__/     \__\        |__|        /__/     \__\    |__|  |__|    |__| 
                                                                                     
*/

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

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

// Dex Factory contract interface
interface IDexFactory {
    function createPair(
        address tokenA,
        address tokenB
    ) external returns (address pair);
}

// Dex Router contract interface
interface IDexRouter {
    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;
}

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

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

contract Ownable is Context {
    address private _owner;

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

    constructor() {
        _owner = _msgSender();
        emit OwnershipTransferred(address(0), _owner);
    }

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

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

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

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

//Tatami Main Token

contract Tatami is Context, IERC20, Ownable {
    //*****************************Tokenomics*********************************/

    string private _name = "Tatami";
    string private _symbol = "Tatami";
    uint8 private _decimals = 18;
    uint256 private _totalSupply = 7_000_000 * 1e18; //7 Million

    uint256 public minSwapAmount = _totalSupply / (2000);
    uint256 public percentDivider = 100;
    mapping(address => uint256) private _balances;
    mapping(address => mapping(address => uint256)) private _allowances;

    mapping(address => bool) public isExcludedFromFee;

    bool public distributeAndLiquifyStatus = true;
    bool public feesStatus = true; // enable by default

    IDexRouter public dexRouter; //Uniswap  router declaration

    address public dexPair; //Uniswap  pair address declaration
    address public marketWallet;

    address private constant DEAD = address(0xdead);

    uint256 public marketFeeOnBuy = 1;

    uint256 public marketFeeOnSell = 9;

    event ExcludeFromFee(address indexed account, bool isExcluded);
    event NewSwapAmount(uint256 newAmount);
    event DistributionStatus(bool Status);
    event FeeStatus(bool Status);
    event FeeUpdated(uint256 amount);

    event marketWalletUpdated(
        address indexed newWallet,
        address indexed oldWallet
    );

    event SwapAndLiquify(
        uint256 tokensSwapped,
        uint256 ethReceived,
        uint256 tokensIntoLiqudity
    );

    constructor() {
        _balances[address(owner())] = _totalSupply; // Deployer

        marketWallet = address(0xcC4dfdb1964aD165797e8E43a5665924DD2f5D56); //Marketing Wallet

        IDexRouter _dexRouter = IDexRouter(
            0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D
        );
        // Create a dex pair for this new ERC20
        address _dexPair = IDexFactory(_dexRouter.factory()).createPair(
            address(this),
            _dexRouter.WETH()
        );
        dexPair = _dexPair;

        // set the rest of the contract variables
        dexRouter = _dexRouter;

        //exclude owner and this contract from fee
        isExcludedFromFee[owner()] = true;
        isExcludedFromFee[address(this)] = true;
        isExcludedFromFee[address(dexRouter)] = true;
        emit Transfer(address(0), address(owner()), _totalSupply);
    }

    //////////////////////////////////////////////////////////////////////////////////////////////////////////////

    //to receive ETH from dexRouter when swapping
    receive() external payable {}

    //////////////////////////////////////////////////////////////////////////////////////////////////////////////
    // Public viewable functions

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

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

    function decimals() public view returns (uint8) {
        return _decimals;
    }

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

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

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

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

    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);
        _approve(
            sender,
            _msgSender(),
            _allowances[sender][_msgSender()] - 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) {
        _approve(
            _msgSender(),
            spender,
            _allowances[_msgSender()][spender] - subtractedValue
        );
        return true;
    }

    function totalBuyFeePerTx(uint256 amount) public view returns (uint256) {
        uint256 fee = (amount * marketFeeOnBuy) / percentDivider;
        return fee;
    }

    function totalSellFeePerTx(uint256 amount) public view returns (uint256) {
        uint256 fee = (amount * marketFeeOnSell) / percentDivider;
        return fee;
    }

    //////////////////////////////////////////////////////////////////////////////////////////////////////////////

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

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

    function _transfer(address from, address to, uint256 amount) private {
        require(from != address(0), "Tatami: transfer from the zero address");
        require(to != address(0), "Tatami: transfer to the zero address");
        require(amount > 0, "Tatami: Amount must be greater than zero");

        // swap and liquify
        distributeAndLiquify(from, to);

        //indicates if fee should be deducted from transfer
        bool takeFee = true;

        //if any account belongs to isExcludedFromFee account then remove the fee
        if (isExcludedFromFee[from] || isExcludedFromFee[to] || !feesStatus) {
            takeFee = false;
        }

        //transfer amount, it will take tax, burn, liquidity fee
        _tokenTransfer(from, to, amount, takeFee);
    }

    //this method is responsible for processing all fee, if takeFee is true
    function _tokenTransfer(
        address sender,
        address recipient,
        uint256 amount,
        bool takeFee
    ) private {
        if (dexPair == sender && takeFee) {
            uint256 allFee;
            uint256 tTransferAmount;
            allFee = totalBuyFeePerTx(amount);
            tTransferAmount = amount - allFee;

            _balances[sender] = _balances[sender] - amount;
            _balances[recipient] = _balances[recipient] + tTransferAmount;
            emit Transfer(sender, recipient, tTransferAmount);

            takeTokenFee(sender, allFee);
        } else if (dexPair == recipient && takeFee) {
            uint256 allFee = totalSellFeePerTx(amount);
            uint256 tTransferAmount = amount - allFee;
            _balances[sender] = _balances[sender] - amount;
            _balances[recipient] = _balances[recipient] + tTransferAmount;
            emit Transfer(sender, recipient, tTransferAmount);

            takeTokenFee(sender, allFee);
        } else {
            _balances[sender] = _balances[sender] - amount;
            _balances[recipient] = _balances[recipient] + (amount);
            emit Transfer(sender, recipient, amount);
        }
    }

    function takeTokenFee(address sender, uint256 amount) private {
        _balances[address(this)] = _balances[address(this)] + amount;

        emit Transfer(sender, address(this), amount);
    }

    // to withdarw ETH from contract
    function withdrawETH(uint256 _amount) external onlyOwner {
        require(address(this).balance >= _amount, "Invalid Amount");
        payable(msg.sender).transfer(_amount);

        emit Transfer(address(this), msg.sender, _amount);
    }

    function distributeAndLiquify(address from, address to) private {
        uint256 contractTokenBalance = balanceOf(address(this));

        if (
            contractTokenBalance >= minSwapAmount &&
            from != dexPair &&
            distributeAndLiquifyStatus &&
            !(from == address(this) && to == dexPair) // swap 1 time
        ) {
            // approve contract
            _approve(address(this), address(dexRouter), minSwapAmount);

            // lock into liquidty pool
            Utils.swapTokensForEth(address(dexRouter), minSwapAmount);
            uint256 ethForMarketing = address(this).balance;

            // sending Eth to Marketing wallet
            if (ethForMarketing > 0)
                payable(marketWallet).transfer(ethForMarketing);
        }
    }

    //////////////////////////////////////////////////////////////////////////////////////////////////////////////
    //Ownable functions

    function setIncludeOrExcludeFromFee(
        address account,
        bool value
    ) external onlyOwner {
        isExcludedFromFee[account] = value;
        emit ExcludeFromFee(account, value);
    }

    function updateSwapAmount(uint256 _amount) external onlyOwner {
        require(_amount > 0, "min swap amount should be greater than zero");
        minSwapAmount = _amount * 1e18;
        emit NewSwapAmount(minSwapAmount);
    }

    function updateBuyFee(uint256 _marketFee) external onlyOwner {
        require(_marketFee <= 10, "max buy fee is 10");
        marketFeeOnBuy = _marketFee;
        emit FeeUpdated(marketFeeOnBuy);
    }

    function updateSellFee(uint256 _marketFee) external onlyOwner {
        require(_marketFee <= 10, "max sell fee is 10");
        marketFeeOnSell = _marketFee;
        emit FeeUpdated(marketFeeOnSell);
    }

    function setDistributionStatus(bool _value) external onlyOwner {
        // Check if the new value is different from the current state
        require(
            _value != distributeAndLiquifyStatus,
            "Value must be different from current state"
        );
        distributeAndLiquifyStatus = _value;
        emit DistributionStatus(_value);
    }

    function enableOrDisableFees(bool _value) external onlyOwner {
        // Check if the new value is different from the current state
        require(
            _value != feesStatus,
            "Value must be different from current state"
        );
        feesStatus = _value;
        emit FeeStatus(_value);
    }

    function updatemarketWallet(address newmarketWallet) external onlyOwner {
        require(
            newmarketWallet != address(0),
            "Ownable: new marketWallet is the zero address"
        );
        emit marketWalletUpdated(newmarketWallet, marketWallet);
        marketWallet = newmarketWallet;
    }
    //********************************************************************************************************* */
}

// Library dex swap
library Utils {
    function swapTokensForEth(
        address routerAddress,
        uint256 tokenAmount
    ) internal {
        IDexRouter dexRouter = IDexRouter(routerAddress);

        // generate the Dex pair path of token -> weth
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = dexRouter.WETH();

        // make the swap
        dexRouter.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0, // accept any amount of ETH
            path,
            address(this),
            block.timestamp + 300
        );
    }
}

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":false,"internalType":"bool","name":"Status","type":"bool"}],"name":"DistributionStatus","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"isExcluded","type":"bool"}],"name":"ExcludeFromFee","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"Status","type":"bool"}],"name":"FeeStatus","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"FeeUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"NewSwapAmount","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":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethReceived","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokensIntoLiqudity","type":"uint256"}],"name":"SwapAndLiquify","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"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newWallet","type":"address"},{"indexed":true,"internalType":"address","name":"oldWallet","type":"address"}],"name":"marketWalletUpdated","type":"event"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"dexPair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"dexRouter","outputs":[{"internalType":"contract IDexRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"distributeAndLiquifyStatus","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"_value","type":"bool"}],"name":"enableOrDisableFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"feesStatus","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":[{"internalType":"address","name":"","type":"address"}],"name":"isExcludedFromFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketFeeOnBuy","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketFeeOnSell","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"minSwapAmount","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":"percentDivider","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_value","type":"bool"}],"name":"setDistributionStatus","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"setIncludeOrExcludeFromFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"totalBuyFeePerTx","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"totalSellFeePerTx","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"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":"uint256","name":"_marketFee","type":"uint256"}],"name":"updateBuyFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_marketFee","type":"uint256"}],"name":"updateSellFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"updateSwapAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newmarketWallet","type":"address"}],"name":"updatemarketWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"withdrawETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60c06040526006608090815265546174616d6960d01b60a05260019062000027908262000436565b50604080518082019091526006815265546174616d6960d01b602082015260029062000054908262000436565b506003805460ff191660121790556a05ca4ec2a79a7f67000000600481905562000082906107d09062000502565b6005556064600655600a805461ffff19166101011790556001600d556009600e55348015620000b057600080fd5b50600080546001600160a01b0319163390811782556040519091907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3600454600760006200010a6000546001600160a01b031690565b6001600160a01b031681526020808201929092526040908101600090812093909355600c80546001600160a01b03191673cc4dfdb1964ad165797e8e43a5665924dd2f5d56179055805163c45a015560e01b81529051737a250d5630b4cf539739df2c5dacb4c659f2488d9392849263c45a015592600480830193928290030181865afa158015620001a0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001c6919062000525565b6001600160a01b031663c9c6539630846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000214573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200023a919062000525565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af115801562000288573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002ae919062000525565b600b80546001600160a01b0319166001600160a01b0383811691909117909155600a805462010000600160b01b031916620100008684168102919091178255600080548416815260096020526040808220805460ff1990811660019081179092553084528284208054821683179055945493909304851682528120805490931690911790915554919250166001600160a01b031660006001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6004546040516200038191815260200190565b60405180910390a3505062000557565b634e487b7160e01b600052604160045260246000fd5b600181811c90821680620003bc57607f821691505b602082108103620003dd57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200043157600081815260208120601f850160051c810160208610156200040c5750805b601f850160051c820191505b818110156200042d5782815560010162000418565b5050505b505050565b81516001600160401b0381111562000452576200045262000391565b6200046a81620004638454620003a7565b84620003e3565b602080601f831160018114620004a25760008415620004895750858301515b600019600386901b1c1916600185901b1785556200042d565b600085815260208120601f198616915b82811015620004d357888601518255948401946001909101908401620004b2565b5085821015620004f25787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6000826200052057634e487b7160e01b600052601260045260246000fd5b500490565b6000602082840312156200053857600080fd5b81516001600160a01b03811681146200055057600080fd5b9392505050565b611a5680620005676000396000f3fe6080604052600436106101fd5760003560e01c80638da5cb5b1161010d578063dd62ed3e116100a0578063f14210a61161006f578063f14210a6146105f4578063f242ab4114610614578063f2fde38b14610634578063f4b3dbc314610654578063fe6f1b051461067457600080fd5b8063dd62ed3e14610558578063dd96022c1461059e578063e4440a86146105b4578063ed421429146105d457600080fd5b8063a457c2d7116100dc578063a457c2d7146104d8578063a9059cbb146104f8578063ab3b554514610518578063b0bc2a2d1461053857600080fd5b80638da5cb5b1461046557806392596c8c1461048357806395d89b41146104a357806396c24e4b146104b857600080fd5b8063338246e21161019057806370a082311161015f57806370a08231146103cb578063715018a61461040157806375cc54501461041657806379777b4e1461042c578063879dd3c51461044657600080fd5b8063338246e214610345578063395093511461035b578063467abe0a1461037b5780635342acb41461039b57600080fd5b806318160ddd116101cc57806318160ddd146102c45780631d933a4a146102e357806323b872dd14610303578063313ce5671461032357600080fd5b806306fdde03146102095780630758d92414610234578063095ea7b3146102725780630a2d140c146102a257600080fd5b3661020457005b600080fd5b34801561021557600080fd5b5061021e61068a565b60405161022b9190611687565b60405180910390f35b34801561024057600080fd5b50600a5461025a906201000090046001600160a01b031681565b6040516001600160a01b03909116815260200161022b565b34801561027e57600080fd5b5061029261028d3660046116ed565b61071c565b604051901515815260200161022b565b3480156102ae57600080fd5b506102c26102bd36600461172e565b610733565b005b3480156102d057600080fd5b506004545b60405190815260200161022b565b3480156102ef57600080fd5b506102c26102fe366004611749565b6107d6565b34801561030f57600080fd5b5061029261031e366004611762565b61087b565b34801561032f57600080fd5b5060035460405160ff909116815260200161022b565b34801561035157600080fd5b506102d560055481565b34801561036757600080fd5b506102926103763660046116ed565b6108cd565b34801561038757600080fd5b506102c2610396366004611749565b610904565b3480156103a757600080fd5b506102926103b63660046117a3565b60096020526000908152604090205460ff1681565b3480156103d757600080fd5b506102d56103e63660046117a3565b6001600160a01b031660009081526007602052604090205490565b34801561040d57600080fd5b506102c26109a8565b34801561042257600080fd5b506102d5600e5481565b34801561043857600080fd5b50600a546102929060ff1681565b34801561045257600080fd5b50600a5461029290610100900460ff1681565b34801561047157600080fd5b506000546001600160a01b031661025a565b34801561048f57600080fd5b506102c261049e3660046117c0565b610a1c565b3480156104af57600080fd5b5061021e610aa5565b3480156104c457600080fd5b506102c26104d33660046117a3565b610ab4565b3480156104e457600080fd5b506102926104f33660046116ed565b610ba7565b34801561050457600080fd5b506102926105133660046116ed565b610bde565b34801561052457600080fd5b506102c2610533366004611749565b610beb565b34801561054457600080fd5b506102c261055336600461172e565b610cc0565b34801561056457600080fd5b506102d56105733660046117f5565b6001600160a01b03918216600090815260086020908152604080832093909416825291909152205490565b3480156105aa57600080fd5b506102d5600d5481565b3480156105c057600080fd5b50600c5461025a906001600160a01b031681565b3480156105e057600080fd5b506102d56105ef366004611749565b610d60565b34801561060057600080fd5b506102c261060f366004611749565b610d85565b34801561062057600080fd5b50600b5461025a906001600160a01b031681565b34801561064057600080fd5b506102c261064f3660046117a3565b610e46565b34801561066057600080fd5b506102d561066f366004611749565b610f30565b34801561068057600080fd5b506102d560065481565b6060600180546106999061182e565b80601f01602080910402602001604051908101604052809291908181526020018280546106c59061182e565b80156107125780601f106106e757610100808354040283529160200191610712565b820191906000526020600020905b8154815290600101906020018083116106f557829003601f168201915b5050505050905090565b6000610729338484610f44565b5060015b92915050565b6000546001600160a01b031633146107665760405162461bcd60e51b815260040161075d90611868565b60405180910390fd5b600a5460ff1615158115150361078e5760405162461bcd60e51b815260040161075d9061189d565b600a805460ff19168215159081179091556040519081527f0ff846c521f32cbf9b5885504ef4a918e437ceb78c26a4b3bdde29162fc36dd3906020015b60405180910390a150565b6000546001600160a01b031633146108005760405162461bcd60e51b815260040161075d90611868565b600a8111156108465760405162461bcd60e51b815260206004820152601260248201527106d61782073656c6c206665652069732031360741b604482015260640161075d565b600e8190556040518181527f8c4d35e54a3f2ef1134138fd8ea3daee6a3c89e10d2665996babdf70261e2c76906020016107cb565b600061088884848461106b565b6001600160a01b0384166000908152600860209081526040808320338085529252909120546108c39186916108be9086906118fd565b610f44565b5060019392505050565b3360008181526008602090815260408083206001600160a01b038716845290915281205490916107299185906108be908690611910565b6000546001600160a01b0316331461092e5760405162461bcd60e51b815260040161075d90611868565b600a8111156109735760405162461bcd60e51b815260206004820152601160248201527006d6178206275792066656520697320313607c1b604482015260640161075d565b600d8190556040518181527f8c4d35e54a3f2ef1134138fd8ea3daee6a3c89e10d2665996babdf70261e2c76906020016107cb565b6000546001600160a01b031633146109d25760405162461bcd60e51b815260040161075d90611868565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b03163314610a465760405162461bcd60e51b815260040161075d90611868565b6001600160a01b038216600081815260096020908152604091829020805460ff191685151590811790915591519182527fd5144d2a6c8ff9b87b7a40852df5102cab2ce561c06b56cc6fe7ccf1fa7f8c2d910160405180910390a25050565b6060600280546106999061182e565b6000546001600160a01b03163314610ade5760405162461bcd60e51b815260040161075d90611868565b6001600160a01b038116610b4a5760405162461bcd60e51b815260206004820152602d60248201527f4f776e61626c653a206e6577206d61726b657457616c6c65742069732074686560448201526c207a65726f206164647265737360981b606482015260840161075d565b600c546040516001600160a01b03918216918316907ffbc4855d2e668d02a931a2a40a0bc9b0be8adde30550851b1a650aabc0d498f190600090a3600c80546001600160a01b0319166001600160a01b0392909216919091179055565b3360008181526008602090815260408083206001600160a01b038716845290915281205490916107299185906108be9086906118fd565b600061072933848461106b565b6000546001600160a01b03163314610c155760405162461bcd60e51b815260040161075d90611868565b60008111610c795760405162461bcd60e51b815260206004820152602b60248201527f6d696e207377617020616d6f756e742073686f756c642062652067726561746560448201526a72207468616e207a65726f60a81b606482015260840161075d565b610c8b81670de0b6b3a7640000611923565b60058190556040519081527f2e6bb606f8e40581f3aead29e6b2d80455a891e6b1a8cee3624f74a93f015593906020016107cb565b6000546001600160a01b03163314610cea5760405162461bcd60e51b815260040161075d90611868565b600a54610100900460ff16151581151503610d175760405162461bcd60e51b815260040161075d9061189d565b600a80548215156101000261ff00199091161790556040517f257582677437c495f1b305cc04a478c3678e6859529c07c31ca8a2efd7e0c0b8906107cb90831515815260200190565b600080600654600d5484610d749190611923565b610d7e919061193a565b9392505050565b6000546001600160a01b03163314610daf5760405162461bcd60e51b815260040161075d90611868565b80471015610df05760405162461bcd60e51b815260206004820152600e60248201526d125b9d985b1a5908105b5bdd5b9d60921b604482015260640161075d565b604051339082156108fc029083906000818181858888f19350505050158015610e1d573d6000803e3d6000fd5b5060405181815233903090600080516020611a018339815191529060200160405180910390a350565b6000546001600160a01b03163314610e705760405162461bcd60e51b815260040161075d90611868565b6001600160a01b038116610ed55760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161075d565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b600080600654600e5484610d749190611923565b6001600160a01b038316610fa85760405162461bcd60e51b815260206004820152602560248201527f546174616d693a20617070726f76652066726f6d20746865207a65726f206164604482015264647265737360d81b606482015260840161075d565b6001600160a01b03821661100a5760405162461bcd60e51b815260206004820152602360248201527f546174616d693a20617070726f766520746f20746865207a65726f206164647260448201526265737360e81b606482015260840161075d565b6001600160a01b0383811660008181526008602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0383166110d05760405162461bcd60e51b815260206004820152602660248201527f546174616d693a207472616e736665722066726f6d20746865207a65726f206160448201526564647265737360d01b606482015260840161075d565b6001600160a01b0382166111325760405162461bcd60e51b8152602060048201526024808201527f546174616d693a207472616e7366657220746f20746865207a65726f206164646044820152637265737360e01b606482015260840161075d565b600081116111935760405162461bcd60e51b815260206004820152602860248201527f546174616d693a20416d6f756e74206d7573742062652067726561746572207460448201526768616e207a65726f60c01b606482015260840161075d565b61119d838361120d565b6001600160a01b03831660009081526009602052604090205460019060ff16806111df57506001600160a01b03831660009081526009602052604090205460ff165b806111f25750600a54610100900460ff16155b156111fb575060005b61120784848484611308565b50505050565b30600090815260076020526040902054600554811080159061123d5750600b546001600160a01b03848116911614155b801561124b5750600a5460ff165b801561127957506001600160a01b038316301480156112775750600b546001600160a01b038381169116145b155b15611303576112a030600a60029054906101000a90046001600160a01b0316600554610f44565b600a546005546112bf916201000090046001600160a01b0316906114cd565b47801561120757600c546040516001600160a01b039091169082156108fc029083906000818181858888f19350505050158015611300573d6000803e3d6000fd5b50505b505050565b600b546001600160a01b0385811691161480156113225750805b156113f15760008061133384610d60565b915061133f82856118fd565b6001600160a01b0387166000908152600760205260409020549091506113669085906118fd565b6001600160a01b038088166000908152600760205260408082209390935590871681522054611396908290611910565b6001600160a01b038087166000818152600760205260409081902093909355915190881690600080516020611a01833981519152906113d89085815260200190565b60405180910390a36113ea8683611621565b5050611207565b600b546001600160a01b03848116911614801561140b5750805b1561142957600061141b83610f30565b9050600061133f82856118fd565b6001600160a01b03841660009081526007602052604090205461144d9083906118fd565b6001600160a01b03808616600090815260076020526040808220939093559085168152205461147d908390611910565b6001600160a01b038085166000818152600760205260409081902093909355915190861690600080516020611a01833981519152906114bf9086815260200190565b60405180910390a350505050565b6040805160028082526060820183528492600092919060208301908036833701905050905030816000815181106115065761150661195c565b60200260200101906001600160a01b031690816001600160a01b031681525050816001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611564573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115889190611972565b8160018151811061159b5761159b61195c565b6001600160a01b039283166020918202929092010152821663791ac94784600084306115c94261012c611910565b6040518663ffffffff1660e01b81526004016115e995949392919061198f565b600060405180830381600087803b15801561160357600080fd5b505af1158015611617573d6000803e3d6000fd5b5050505050505050565b3060009081526007602052604090205461163c908290611910565b30600081815260076020526040908190209290925590516001600160a01b03841690600080516020611a018339815191529061167b9085815260200190565b60405180910390a35050565b600060208083528351808285015260005b818110156116b457858101830151858201604001528201611698565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b03811681146116ea57600080fd5b50565b6000806040838503121561170057600080fd5b823561170b816116d5565b946020939093013593505050565b8035801515811461172957600080fd5b919050565b60006020828403121561174057600080fd5b610d7e82611719565b60006020828403121561175b57600080fd5b5035919050565b60008060006060848603121561177757600080fd5b8335611782816116d5565b92506020840135611792816116d5565b929592945050506040919091013590565b6000602082840312156117b557600080fd5b8135610d7e816116d5565b600080604083850312156117d357600080fd5b82356117de816116d5565b91506117ec60208401611719565b90509250929050565b6000806040838503121561180857600080fd5b8235611813816116d5565b91506020830135611823816116d5565b809150509250929050565b600181811c9082168061184257607f821691505b60208210810361186257634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b6020808252602a908201527f56616c7565206d75737420626520646966666572656e742066726f6d2063757260408201526972656e7420737461746560b01b606082015260800190565b634e487b7160e01b600052601160045260246000fd5b8181038181111561072d5761072d6118e7565b8082018082111561072d5761072d6118e7565b808202811582820484141761072d5761072d6118e7565b60008261195757634e487b7160e01b600052601260045260246000fd5b500490565b634e487b7160e01b600052603260045260246000fd5b60006020828403121561198457600080fd5b8151610d7e816116d5565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156119df5784516001600160a01b0316835293830193918301916001016119ba565b50506001600160a01b0396909616606085015250505060800152939250505056feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa264697066735822122003b902e49bc3bca6401be6a86bd6c4514130dbf838cdc91aaf087471cb409ce764736f6c63430008120033

Deployed Bytecode

0x6080604052600436106101fd5760003560e01c80638da5cb5b1161010d578063dd62ed3e116100a0578063f14210a61161006f578063f14210a6146105f4578063f242ab4114610614578063f2fde38b14610634578063f4b3dbc314610654578063fe6f1b051461067457600080fd5b8063dd62ed3e14610558578063dd96022c1461059e578063e4440a86146105b4578063ed421429146105d457600080fd5b8063a457c2d7116100dc578063a457c2d7146104d8578063a9059cbb146104f8578063ab3b554514610518578063b0bc2a2d1461053857600080fd5b80638da5cb5b1461046557806392596c8c1461048357806395d89b41146104a357806396c24e4b146104b857600080fd5b8063338246e21161019057806370a082311161015f57806370a08231146103cb578063715018a61461040157806375cc54501461041657806379777b4e1461042c578063879dd3c51461044657600080fd5b8063338246e214610345578063395093511461035b578063467abe0a1461037b5780635342acb41461039b57600080fd5b806318160ddd116101cc57806318160ddd146102c45780631d933a4a146102e357806323b872dd14610303578063313ce5671461032357600080fd5b806306fdde03146102095780630758d92414610234578063095ea7b3146102725780630a2d140c146102a257600080fd5b3661020457005b600080fd5b34801561021557600080fd5b5061021e61068a565b60405161022b9190611687565b60405180910390f35b34801561024057600080fd5b50600a5461025a906201000090046001600160a01b031681565b6040516001600160a01b03909116815260200161022b565b34801561027e57600080fd5b5061029261028d3660046116ed565b61071c565b604051901515815260200161022b565b3480156102ae57600080fd5b506102c26102bd36600461172e565b610733565b005b3480156102d057600080fd5b506004545b60405190815260200161022b565b3480156102ef57600080fd5b506102c26102fe366004611749565b6107d6565b34801561030f57600080fd5b5061029261031e366004611762565b61087b565b34801561032f57600080fd5b5060035460405160ff909116815260200161022b565b34801561035157600080fd5b506102d560055481565b34801561036757600080fd5b506102926103763660046116ed565b6108cd565b34801561038757600080fd5b506102c2610396366004611749565b610904565b3480156103a757600080fd5b506102926103b63660046117a3565b60096020526000908152604090205460ff1681565b3480156103d757600080fd5b506102d56103e63660046117a3565b6001600160a01b031660009081526007602052604090205490565b34801561040d57600080fd5b506102c26109a8565b34801561042257600080fd5b506102d5600e5481565b34801561043857600080fd5b50600a546102929060ff1681565b34801561045257600080fd5b50600a5461029290610100900460ff1681565b34801561047157600080fd5b506000546001600160a01b031661025a565b34801561048f57600080fd5b506102c261049e3660046117c0565b610a1c565b3480156104af57600080fd5b5061021e610aa5565b3480156104c457600080fd5b506102c26104d33660046117a3565b610ab4565b3480156104e457600080fd5b506102926104f33660046116ed565b610ba7565b34801561050457600080fd5b506102926105133660046116ed565b610bde565b34801561052457600080fd5b506102c2610533366004611749565b610beb565b34801561054457600080fd5b506102c261055336600461172e565b610cc0565b34801561056457600080fd5b506102d56105733660046117f5565b6001600160a01b03918216600090815260086020908152604080832093909416825291909152205490565b3480156105aa57600080fd5b506102d5600d5481565b3480156105c057600080fd5b50600c5461025a906001600160a01b031681565b3480156105e057600080fd5b506102d56105ef366004611749565b610d60565b34801561060057600080fd5b506102c261060f366004611749565b610d85565b34801561062057600080fd5b50600b5461025a906001600160a01b031681565b34801561064057600080fd5b506102c261064f3660046117a3565b610e46565b34801561066057600080fd5b506102d561066f366004611749565b610f30565b34801561068057600080fd5b506102d560065481565b6060600180546106999061182e565b80601f01602080910402602001604051908101604052809291908181526020018280546106c59061182e565b80156107125780601f106106e757610100808354040283529160200191610712565b820191906000526020600020905b8154815290600101906020018083116106f557829003601f168201915b5050505050905090565b6000610729338484610f44565b5060015b92915050565b6000546001600160a01b031633146107665760405162461bcd60e51b815260040161075d90611868565b60405180910390fd5b600a5460ff1615158115150361078e5760405162461bcd60e51b815260040161075d9061189d565b600a805460ff19168215159081179091556040519081527f0ff846c521f32cbf9b5885504ef4a918e437ceb78c26a4b3bdde29162fc36dd3906020015b60405180910390a150565b6000546001600160a01b031633146108005760405162461bcd60e51b815260040161075d90611868565b600a8111156108465760405162461bcd60e51b815260206004820152601260248201527106d61782073656c6c206665652069732031360741b604482015260640161075d565b600e8190556040518181527f8c4d35e54a3f2ef1134138fd8ea3daee6a3c89e10d2665996babdf70261e2c76906020016107cb565b600061088884848461106b565b6001600160a01b0384166000908152600860209081526040808320338085529252909120546108c39186916108be9086906118fd565b610f44565b5060019392505050565b3360008181526008602090815260408083206001600160a01b038716845290915281205490916107299185906108be908690611910565b6000546001600160a01b0316331461092e5760405162461bcd60e51b815260040161075d90611868565b600a8111156109735760405162461bcd60e51b815260206004820152601160248201527006d6178206275792066656520697320313607c1b604482015260640161075d565b600d8190556040518181527f8c4d35e54a3f2ef1134138fd8ea3daee6a3c89e10d2665996babdf70261e2c76906020016107cb565b6000546001600160a01b031633146109d25760405162461bcd60e51b815260040161075d90611868565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b03163314610a465760405162461bcd60e51b815260040161075d90611868565b6001600160a01b038216600081815260096020908152604091829020805460ff191685151590811790915591519182527fd5144d2a6c8ff9b87b7a40852df5102cab2ce561c06b56cc6fe7ccf1fa7f8c2d910160405180910390a25050565b6060600280546106999061182e565b6000546001600160a01b03163314610ade5760405162461bcd60e51b815260040161075d90611868565b6001600160a01b038116610b4a5760405162461bcd60e51b815260206004820152602d60248201527f4f776e61626c653a206e6577206d61726b657457616c6c65742069732074686560448201526c207a65726f206164647265737360981b606482015260840161075d565b600c546040516001600160a01b03918216918316907ffbc4855d2e668d02a931a2a40a0bc9b0be8adde30550851b1a650aabc0d498f190600090a3600c80546001600160a01b0319166001600160a01b0392909216919091179055565b3360008181526008602090815260408083206001600160a01b038716845290915281205490916107299185906108be9086906118fd565b600061072933848461106b565b6000546001600160a01b03163314610c155760405162461bcd60e51b815260040161075d90611868565b60008111610c795760405162461bcd60e51b815260206004820152602b60248201527f6d696e207377617020616d6f756e742073686f756c642062652067726561746560448201526a72207468616e207a65726f60a81b606482015260840161075d565b610c8b81670de0b6b3a7640000611923565b60058190556040519081527f2e6bb606f8e40581f3aead29e6b2d80455a891e6b1a8cee3624f74a93f015593906020016107cb565b6000546001600160a01b03163314610cea5760405162461bcd60e51b815260040161075d90611868565b600a54610100900460ff16151581151503610d175760405162461bcd60e51b815260040161075d9061189d565b600a80548215156101000261ff00199091161790556040517f257582677437c495f1b305cc04a478c3678e6859529c07c31ca8a2efd7e0c0b8906107cb90831515815260200190565b600080600654600d5484610d749190611923565b610d7e919061193a565b9392505050565b6000546001600160a01b03163314610daf5760405162461bcd60e51b815260040161075d90611868565b80471015610df05760405162461bcd60e51b815260206004820152600e60248201526d125b9d985b1a5908105b5bdd5b9d60921b604482015260640161075d565b604051339082156108fc029083906000818181858888f19350505050158015610e1d573d6000803e3d6000fd5b5060405181815233903090600080516020611a018339815191529060200160405180910390a350565b6000546001600160a01b03163314610e705760405162461bcd60e51b815260040161075d90611868565b6001600160a01b038116610ed55760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161075d565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b600080600654600e5484610d749190611923565b6001600160a01b038316610fa85760405162461bcd60e51b815260206004820152602560248201527f546174616d693a20617070726f76652066726f6d20746865207a65726f206164604482015264647265737360d81b606482015260840161075d565b6001600160a01b03821661100a5760405162461bcd60e51b815260206004820152602360248201527f546174616d693a20617070726f766520746f20746865207a65726f206164647260448201526265737360e81b606482015260840161075d565b6001600160a01b0383811660008181526008602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0383166110d05760405162461bcd60e51b815260206004820152602660248201527f546174616d693a207472616e736665722066726f6d20746865207a65726f206160448201526564647265737360d01b606482015260840161075d565b6001600160a01b0382166111325760405162461bcd60e51b8152602060048201526024808201527f546174616d693a207472616e7366657220746f20746865207a65726f206164646044820152637265737360e01b606482015260840161075d565b600081116111935760405162461bcd60e51b815260206004820152602860248201527f546174616d693a20416d6f756e74206d7573742062652067726561746572207460448201526768616e207a65726f60c01b606482015260840161075d565b61119d838361120d565b6001600160a01b03831660009081526009602052604090205460019060ff16806111df57506001600160a01b03831660009081526009602052604090205460ff165b806111f25750600a54610100900460ff16155b156111fb575060005b61120784848484611308565b50505050565b30600090815260076020526040902054600554811080159061123d5750600b546001600160a01b03848116911614155b801561124b5750600a5460ff165b801561127957506001600160a01b038316301480156112775750600b546001600160a01b038381169116145b155b15611303576112a030600a60029054906101000a90046001600160a01b0316600554610f44565b600a546005546112bf916201000090046001600160a01b0316906114cd565b47801561120757600c546040516001600160a01b039091169082156108fc029083906000818181858888f19350505050158015611300573d6000803e3d6000fd5b50505b505050565b600b546001600160a01b0385811691161480156113225750805b156113f15760008061133384610d60565b915061133f82856118fd565b6001600160a01b0387166000908152600760205260409020549091506113669085906118fd565b6001600160a01b038088166000908152600760205260408082209390935590871681522054611396908290611910565b6001600160a01b038087166000818152600760205260409081902093909355915190881690600080516020611a01833981519152906113d89085815260200190565b60405180910390a36113ea8683611621565b5050611207565b600b546001600160a01b03848116911614801561140b5750805b1561142957600061141b83610f30565b9050600061133f82856118fd565b6001600160a01b03841660009081526007602052604090205461144d9083906118fd565b6001600160a01b03808616600090815260076020526040808220939093559085168152205461147d908390611910565b6001600160a01b038085166000818152600760205260409081902093909355915190861690600080516020611a01833981519152906114bf9086815260200190565b60405180910390a350505050565b6040805160028082526060820183528492600092919060208301908036833701905050905030816000815181106115065761150661195c565b60200260200101906001600160a01b031690816001600160a01b031681525050816001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611564573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115889190611972565b8160018151811061159b5761159b61195c565b6001600160a01b039283166020918202929092010152821663791ac94784600084306115c94261012c611910565b6040518663ffffffff1660e01b81526004016115e995949392919061198f565b600060405180830381600087803b15801561160357600080fd5b505af1158015611617573d6000803e3d6000fd5b5050505050505050565b3060009081526007602052604090205461163c908290611910565b30600081815260076020526040908190209290925590516001600160a01b03841690600080516020611a018339815191529061167b9085815260200190565b60405180910390a35050565b600060208083528351808285015260005b818110156116b457858101830151858201604001528201611698565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b03811681146116ea57600080fd5b50565b6000806040838503121561170057600080fd5b823561170b816116d5565b946020939093013593505050565b8035801515811461172957600080fd5b919050565b60006020828403121561174057600080fd5b610d7e82611719565b60006020828403121561175b57600080fd5b5035919050565b60008060006060848603121561177757600080fd5b8335611782816116d5565b92506020840135611792816116d5565b929592945050506040919091013590565b6000602082840312156117b557600080fd5b8135610d7e816116d5565b600080604083850312156117d357600080fd5b82356117de816116d5565b91506117ec60208401611719565b90509250929050565b6000806040838503121561180857600080fd5b8235611813816116d5565b91506020830135611823816116d5565b809150509250929050565b600181811c9082168061184257607f821691505b60208210810361186257634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b6020808252602a908201527f56616c7565206d75737420626520646966666572656e742066726f6d2063757260408201526972656e7420737461746560b01b606082015260800190565b634e487b7160e01b600052601160045260246000fd5b8181038181111561072d5761072d6118e7565b8082018082111561072d5761072d6118e7565b808202811582820484141761072d5761072d6118e7565b60008261195757634e487b7160e01b600052601260045260246000fd5b500490565b634e487b7160e01b600052603260045260246000fd5b60006020828403121561198457600080fd5b8151610d7e816116d5565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156119df5784516001600160a01b0316835293830193918301916001016119ba565b50506001600160a01b0396909616606085015250505060800152939250505056feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa264697066735822122003b902e49bc3bca6401be6a86bd6c4514130dbf838cdc91aaf087471cb409ce764736f6c63430008120033

Deployed Bytecode Sourcemap

3779:11241:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6528:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4492:27;;;;;;;;;;-1:-1:-1;4492:27:0;;;;;;;-1:-1:-1;;;;;4492:27:0;;;;;;-1:-1:-1;;;;;749:32:1;;;731:51;;719:2;704:18;4492:27:0;567:221:1;7416:186:0;;;;;;;;;;-1:-1:-1;7416:186:0;;;;;:::i;:::-;;:::i;:::-;;;1414:14:1;;1407:22;1389:41;;1377:2;1362:18;7416:186:0;1249:187:1;13868:369:0;;;;;;;;;;-1:-1:-1;13868:369:0;;;;;:::i;:::-;;:::i;:::-;;6805:100;;;;;;;;;;-1:-1:-1;6885:12:0;;6805:100;;;1937:25:1;;;1925:2;1910:18;6805:100:0;1791:177:1;13650:210:0;;;;;;;;;;-1:-1:-1;13650:210:0;;;;;:::i;:::-;;:::i;7610:350::-;;;;;;;;;;-1:-1:-1;7610:350:0;;;;;:::i;:::-;;:::i;6714:83::-;;;;;;;;;;-1:-1:-1;6780:9:0;;6714:83;;6780:9;;;;2761:36:1;;2749:2;2734:18;6714:83:0;2619:184:1;4094:52:0;;;;;;;;;;;;;;;;7968:292;;;;;;;;;;-1:-1:-1;7968:292:0;;;;;:::i;:::-;;:::i;13436:206::-;;;;;;;;;;-1:-1:-1;13436:206:0;;;;;:::i;:::-;;:::i;4323:49::-;;;;;;;;;;-1:-1:-1;4323:49:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;6913:119;;;;;;;;;;-1:-1:-1;6913:119:0;;;;;:::i;:::-;-1:-1:-1;;;;;7006:18:0;6979:7;7006:18;;;:9;:18;;;;;;;6913:119;3303:157;;;;;;;;;;;;;:::i;4757:34::-;;;;;;;;;;;;;;;;4381:45;;;;;;;;;;-1:-1:-1;4381:45:0;;;;;;;;4433:29;;;;;;;;;;-1:-1:-1;4433:29:0;;;;;;;;;;;3089:79;;;;;;;;;;-1:-1:-1;3127:7:0;3154:6;-1:-1:-1;;;;;3154:6:0;3089:79;;12979:208;;;;;;;;;;-1:-1:-1;12979:208:0;;;;;:::i;:::-;;:::i;6619:87::-;;;;;;;;;;;;;:::i;14579:322::-;;;;;;;;;;-1:-1:-1;14579:322:0;;;;;:::i;:::-;;:::i;8268:300::-;;;;;;;;;;-1:-1:-1;8268:300:0;;;;;:::i;:::-;;:::i;7040:192::-;;;;;;;;;;-1:-1:-1;7040:192:0;;;;;:::i;:::-;;:::i;13195:233::-;;;;;;;;;;-1:-1:-1;13195:233:0;;;;;:::i;:::-;;:::i;14245:326::-;;;;;;;;;;-1:-1:-1;14245:326:0;;;;;:::i;:::-;;:::i;7240:168::-;;;;;;;;;;-1:-1:-1;7240:168:0;;;;;:::i;:::-;-1:-1:-1;;;;;7373:18:0;;;7346:7;7373:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;7240:168;4715:33;;;;;;;;;;;;;;;;4623:27;;;;;;;;;;-1:-1:-1;4623:27:0;;;;-1:-1:-1;;;;;4623:27:0;;;8576:168;;;;;;;;;;-1:-1:-1;8576:168:0;;;;;:::i;:::-;;:::i;11762:245::-;;;;;;;;;;-1:-1:-1;11762:245:0;;;;;:::i;:::-;;:::i;4558:22::-;;;;;;;;;;-1:-1:-1;4558:22:0;;;;-1:-1:-1;;;;;4558:22:0;;;3468:281;;;;;;;;;;-1:-1:-1;3468:281:0;;;;;:::i;:::-;;:::i;8752:170::-;;;;;;;;;;-1:-1:-1;8752:170:0;;;;;:::i;:::-;;:::i;4153:35::-;;;;;;;;;;;;;;;;6528:83;6565:13;6598:5;6591:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6528:83;:::o;7416:186::-;7516:4;7533:39;2521:10;7556:7;7565:6;7533:8;:39::i;:::-;-1:-1:-1;7590:4:0;7416:186;;;;;:::o;13868:369::-;3216:6;;-1:-1:-1;;;;;3216:6:0;2521:10;3216:22;3208:67;;;;-1:-1:-1;;;3208:67:0;;;;;;;:::i;:::-;;;;;;;;;14045:26:::1;::::0;::::1;;14035:36;;::::0;::::1;;::::0;14013:128:::1;;;;-1:-1:-1::0;;;14013:128:0::1;;;;;;;:::i;:::-;14152:26;:35:::0;;-1:-1:-1;;14152:35:0::1;::::0;::::1;;::::0;;::::1;::::0;;;14203:26:::1;::::0;1389:41:1;;;14203:26:0::1;::::0;1377:2:1;1362:18;14203:26:0::1;;;;;;;;13868:369:::0;:::o;13650:210::-;3216:6;;-1:-1:-1;;;;;3216:6:0;2521:10;3216:22;3208:67;;;;-1:-1:-1;;;3208:67:0;;;;;;;:::i;:::-;13745:2:::1;13731:10;:16;;13723:47;;;::::0;-1:-1:-1;;;13723:47:0;;5340:2:1;13723:47:0::1;::::0;::::1;5322:21:1::0;5379:2;5359:18;;;5352:30;-1:-1:-1;;;5398:18:1;;;5391:48;5456:18;;13723:47:0::1;5138:342:1::0;13723:47:0::1;13781:15;:28:::0;;;13825:27:::1;::::0;1937:25:1;;;13825:27:0::1;::::0;1925:2:1;1910:18;13825:27:0::1;1791:177:1::0;7610:350:0;7742:4;7759:36;7769:6;7777:9;7788:6;7759:9;:36::i;:::-;-1:-1:-1;;;;;7877:19:0;;;;;;:11;:19;;;;;;;;2521:10;7877:33;;;;;;;;;7806:124;;7829:6;;7877:42;;7913:6;;7877:42;:::i;:::-;7806:8;:124::i;:::-;-1:-1:-1;7948:4:0;7610:350;;;;;:::o;7968:292::-;2521:10;8081:4;8170:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;8170:34:0;;;;;;;;;;8081:4;;8098:132;;8148:7;;8170:49;;8208:10;;8170:49;:::i;13436:206::-;3216:6;;-1:-1:-1;;;;;3216:6:0;2521:10;3216:22;3208:67;;;;-1:-1:-1;;;3208:67:0;;;;;;;:::i;:::-;13530:2:::1;13516:10;:16;;13508:46;;;::::0;-1:-1:-1;;;13508:46:0;;6082:2:1;13508:46:0::1;::::0;::::1;6064:21:1::0;6121:2;6101:18;;;6094:30;-1:-1:-1;;;6140:18:1;;;6133:47;6197:18;;13508:46:0::1;5880:341:1::0;13508:46:0::1;13565:14;:27:::0;;;13608:26:::1;::::0;1937:25:1;;;13608:26:0::1;::::0;1925:2:1;1910:18;13608:26:0::1;1791:177:1::0;3303:157:0;3216:6;;-1:-1:-1;;;;;3216:6:0;2521:10;3216:22;3208:67;;;;-1:-1:-1;;;3208:67:0;;;;;;;:::i;:::-;3410:1:::1;3394:6:::0;;3373:40:::1;::::0;-1:-1:-1;;;;;3394:6:0;;::::1;::::0;3373:40:::1;::::0;3410:1;;3373:40:::1;3449:1;3424:28:::0;;-1:-1:-1;;;;;;3424:28:0::1;::::0;;3303:157::o;12979:208::-;3216:6;;-1:-1:-1;;;;;3216:6:0;2521:10;3216:22;3208:67;;;;-1:-1:-1;;;3208:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;13099:26:0;::::1;;::::0;;;:17:::1;:26;::::0;;;;;;;;:34;;-1:-1:-1;;13099:34:0::1;::::0;::::1;;::::0;;::::1;::::0;;;13149:30;;1389:41:1;;;13149:30:0::1;::::0;1362:18:1;13149:30:0::1;;;;;;;12979:208:::0;;:::o;6619:87::-;6658:13;6691:7;6684:14;;;;;:::i;14579:322::-;3216:6;;-1:-1:-1;;;;;3216:6:0;2521:10;3216:22;3208:67;;;;-1:-1:-1;;;3208:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;14684:29:0;::::1;14662:124;;;::::0;-1:-1:-1;;;14662:124:0;;6428:2:1;14662:124:0::1;::::0;::::1;6410:21:1::0;6467:2;6447:18;;;6440:30;6506:34;6486:18;;;6479:62;-1:-1:-1;;;6557:18:1;;;6550:43;6610:19;;14662:124:0::1;6226:409:1::0;14662:124:0::1;14839:12;::::0;14802:50:::1;::::0;-1:-1:-1;;;;;14839:12:0;;::::1;::::0;14802:50;::::1;::::0;::::1;::::0;14839:12:::1;::::0;14802:50:::1;14863:12;:30:::0;;-1:-1:-1;;;;;;14863:30:0::1;-1:-1:-1::0;;;;;14863:30:0;;;::::1;::::0;;;::::1;::::0;;14579:322::o;8268:300::-;2521:10;8386:4;8475:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;8475:34:0;;;;;;;;;;8386:4;;8403:135;;8453:7;;8475:52;;8512:15;;8475:52;:::i;7040:192::-;7143:4;7160:42;2521:10;7184:9;7195:6;7160:9;:42::i;13195:233::-;3216:6;;-1:-1:-1;;;;;3216:6:0;2521:10;3216:22;3208:67;;;;-1:-1:-1;;;3208:67:0;;;;;;;:::i;:::-;13286:1:::1;13276:7;:11;13268:67;;;::::0;-1:-1:-1;;;13268:67:0;;6842:2:1;13268:67:0::1;::::0;::::1;6824:21:1::0;6881:2;6861:18;;;6854:30;6920:34;6900:18;;;6893:62;-1:-1:-1;;;6971:18:1;;;6964:41;7022:19;;13268:67:0::1;6640:407:1::0;13268:67:0::1;13362:14;:7:::0;13372:4:::1;13362:14;:::i;:::-;13346:13;:30:::0;;;13392:28:::1;::::0;1937:25:1;;;13392:28:0::1;::::0;1925:2:1;1910:18;13392:28:0::1;1791:177:1::0;14245:326:0;3216:6;;-1:-1:-1;;;;;3216:6:0;2521:10;3216:22;3208:67;;;;-1:-1:-1;;;3208:67:0;;;;;;;:::i;:::-;14420:10:::1;::::0;::::1;::::0;::::1;;;14410:20;;::::0;::::1;;::::0;14388:112:::1;;;;-1:-1:-1::0;;;14388:112:0::1;;;;;;;:::i;:::-;14511:10;:19:::0;;;::::1;;;;-1:-1:-1::0;;14511:19:0;;::::1;;::::0;;14546:17:::1;::::0;::::1;::::0;::::1;::::0;14524:6;1414:14:1;1407:22;1389:41;;1377:2;1362:18;;1249:187;8576:168:0;8639:7;8659:11;8701:14;;8683;;8674:6;:23;;;;:::i;:::-;8673:42;;;;:::i;:::-;8659:56;8576:168;-1:-1:-1;;;8576:168:0:o;11762:245::-;3216:6;;-1:-1:-1;;;;;3216:6:0;2521:10;3216:22;3208:67;;;;-1:-1:-1;;;3208:67:0;;;;;;;:::i;:::-;11863:7:::1;11838:21;:32;;11830:59;;;::::0;-1:-1:-1;;;11830:59:0;;7649:2:1;11830:59:0::1;::::0;::::1;7631:21:1::0;7688:2;7668:18;;;7661:30;-1:-1:-1;;;7707:18:1;;;7700:44;7761:18;;11830:59:0::1;7447:338:1::0;11830:59:0::1;11900:37;::::0;11908:10:::1;::::0;11900:37;::::1;;;::::0;11929:7;;11900:37:::1;::::0;;;11929:7;11908:10;11900:37;::::1;;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;11955:44:0::1;::::0;1937:25:1;;;11979:10:0::1;::::0;11972:4:::1;::::0;-1:-1:-1;;;;;;;;;;;11955:44:0;1925:2:1;1910:18;11955:44:0::1;;;;;;;11762:245:::0;:::o;3468:281::-;3216:6;;-1:-1:-1;;;;;3216:6:0;2521:10;3216:22;3208:67;;;;-1:-1:-1;;;3208:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;3571:22:0;::::1;3549:110;;;::::0;-1:-1:-1;;;3549:110:0;;7992:2:1;3549:110:0::1;::::0;::::1;7974:21:1::0;8031:2;8011:18;;;8004:30;8070:34;8050:18;;;8043:62;-1:-1:-1;;;8121:18:1;;;8114:36;8167:19;;3549:110:0::1;7790:402:1::0;3549:110:0::1;3696:6;::::0;;3675:38:::1;::::0;-1:-1:-1;;;;;3675:38:0;;::::1;::::0;3696:6;::::1;::::0;3675:38:::1;::::0;::::1;3724:6;:17:::0;;-1:-1:-1;;;;;;3724:17:0::1;-1:-1:-1::0;;;;;3724:17:0;;;::::1;::::0;;;::::1;::::0;;3468:281::o;8752:170::-;8816:7;8836:11;8879:14;;8860:15;;8851:6;:24;;;;:::i;9048:339::-;-1:-1:-1;;;;;9141:19:0;;9133:69;;;;-1:-1:-1;;;9133:69:0;;8399:2:1;9133:69:0;;;8381:21:1;8438:2;8418:18;;;8411:30;8477:34;8457:18;;;8450:62;-1:-1:-1;;;8528:18:1;;;8521:35;8573:19;;9133:69:0;8197:401:1;9133:69:0;-1:-1:-1;;;;;9221:21:0;;9213:69;;;;-1:-1:-1;;;9213:69:0;;8805:2:1;9213:69:0;;;8787:21:1;8844:2;8824:18;;;8817:30;8883:34;8863:18;;;8856:62;-1:-1:-1;;;8934:18:1;;;8927:33;8977:19;;9213:69:0;8603:399:1;9213:69:0;-1:-1:-1;;;;;9295:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;9347:32;;1937:25:1;;;9347:32:0;;1910:18:1;9347:32:0;;;;;;;9048:339;;;:::o;9395:798::-;-1:-1:-1;;;;;9483:18:0;;9475:69;;;;-1:-1:-1;;;9475:69:0;;9209:2:1;9475:69:0;;;9191:21:1;9248:2;9228:18;;;9221:30;9287:34;9267:18;;;9260:62;-1:-1:-1;;;9338:18:1;;;9331:36;9384:19;;9475:69:0;9007:402:1;9475:69:0;-1:-1:-1;;;;;9563:16:0;;9555:65;;;;-1:-1:-1;;;9555:65:0;;9616:2:1;9555:65:0;;;9598:21:1;9655:2;9635:18;;;9628:30;9694:34;9674:18;;;9667:62;-1:-1:-1;;;9745:18:1;;;9738:34;9789:19;;9555:65:0;9414:400:1;9555:65:0;9648:1;9639:6;:10;9631:63;;;;-1:-1:-1;;;9631:63:0;;10021:2:1;9631:63:0;;;10003:21:1;10060:2;10040:18;;;10033:30;10099:34;10079:18;;;10072:62;-1:-1:-1;;;10150:18:1;;;10143:38;10198:19;;9631:63:0;9819:404:1;9631:63:0;9736:30;9757:4;9763:2;9736:20;:30::i;:::-;-1:-1:-1;;;;;9959:23:0;;9840:12;9959:23;;;:17;:23;;;;;;9855:4;;9959:23;;;:48;;-1:-1:-1;;;;;;9986:21:0;;;;;;:17;:21;;;;;;;;9959:48;:63;;;-1:-1:-1;10012:10:0;;;;;;;10011:11;9959:63;9955:111;;;-1:-1:-1;10049:5:0;9955:111;10144:41;10159:4;10165:2;10169:6;10177:7;10144:14;:41::i;:::-;9464:729;9395:798;;;:::o;12015:813::-;12139:4;12090:28;7006:18;;;:9;:18;;;;;;12200:13;;12176:37;;;;;:69;;-1:-1:-1;12238:7:0;;-1:-1:-1;;;;;12230:15:0;;;12238:7;;12230:15;;12176:69;:112;;;;-1:-1:-1;12262:26:0;;;;12176:112;:170;;;;-1:-1:-1;;;;;;12307:21:0;;12323:4;12307:21;:38;;;;-1:-1:-1;12338:7:0;;-1:-1:-1;;;;;12332:13:0;;;12338:7;;12332:13;12307:38;12305:41;12176:170;12158:663;;;12421:58;12438:4;12453:9;;;;;;;;;-1:-1:-1;;;;;12453:9:0;12465:13;;12421:8;:58::i;:::-;12567:9;;12579:13;;12536:57;;12567:9;;;-1:-1:-1;;;;;12567:9:0;;12536:22;:57::i;:::-;12634:21;12724:19;;12720:89;;12770:12;;12762:47;;-1:-1:-1;;;;;12770:12:0;;;;12762:47;;;;;12793:15;;12770:12;12762:47;12770:12;12762:47;12793:15;12770:12;12762:47;;;;;;;;;;;;;;;;;;;;;12373:448;12158:663;12079:749;12015:813;;:::o;10278:1232::-;10433:7;;-1:-1:-1;;;;;10433:17:0;;;:7;;:17;:28;;;;;10454:7;10433:28;10429:1074;;;10478:14;10507:23;10554:24;10571:6;10554:16;:24::i;:::-;10545:33;-1:-1:-1;10611:15:0;10545:33;10611:6;:15;:::i;:::-;-1:-1:-1;;;;;10663:17:0;;;;;;:9;:17;;;;;;10593:33;;-1:-1:-1;10663:26:0;;10683:6;;10663:26;:::i;:::-;-1:-1:-1;;;;;10643:17:0;;;;;;;:9;:17;;;;;;:46;;;;10727:20;;;;;;;:38;;10750:15;;10727:38;:::i;:::-;-1:-1:-1;;;;;10704:20:0;;;;;;;:9;:20;;;;;;;:61;;;;10785:44;;;;;;-1:-1:-1;;;;;;;;;;;10785:44:0;;;10813:15;1937:25:1;;1925:2;1910:18;;1791:177;10785:44:0;;;;;;;;10846:28;10859:6;10867;10846:12;:28::i;:::-;10463:423;;10429:1074;;;10896:7;;-1:-1:-1;;;;;10896:20:0;;;:7;;:20;:31;;;;;10920:7;10896:31;10892:611;;;10944:14;10961:25;10979:6;10961:17;:25::i;:::-;10944:42;-1:-1:-1;11001:23:0;11027:15;10944:42;11027:6;:15;:::i;10892:611::-;-1:-1:-1;;;;;11341:17:0;;;;;;:9;:17;;;;;;:26;;11361:6;;11341:26;:::i;:::-;-1:-1:-1;;;;;11321:17:0;;;;;;;:9;:17;;;;;;:46;;;;11405:20;;;;;;;:31;;11429:6;;11405:31;:::i;:::-;-1:-1:-1;;;;;11382:20:0;;;;;;;:9;:20;;;;;;;:54;;;;11456:35;;;;;;-1:-1:-1;;;;;;;;;;;11456:35:0;;;11484:6;1937:25:1;;1925:2;1910:18;;1791:177;11456:35:0;;;;;;;;10278:1232;;;;:::o;15066:614::-;15322:16;;;15336:1;15322:16;;;;;;;;15215:13;;15181:20;;15322:16;15336:1;15322:16;;;;;;;;;;-1:-1:-1;15322:16:0;15298:40;;15367:4;15349;15354:1;15349:7;;;;;;;;:::i;:::-;;;;;;:23;-1:-1:-1;;;;;15349:23:0;;;-1:-1:-1;;;;;15349:23:0;;;;;15393:9;-1:-1:-1;;;;;15393:14:0;;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;15383:4;15388:1;15383:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;15383:26:0;;;:7;;;;;;;;;:26;15448:60;;;15523:11;15549:1;15593:4;15620;15640:21;:15;15658:3;15640:21;:::i;:::-;15448:224;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15170:510;;15066:614;;:::o;11518:198::-;11636:4;11618:24;;;;:9;:24;;;;;;:33;;11645:6;;11618:33;:::i;:::-;11609:4;11591:24;;;;:9;:24;;;;;;;:60;;;;11669:39;;-1:-1:-1;;;;;11669:39:0;;;-1:-1:-1;;;;;;;;;;;11669:39:0;;;11701:6;1937:25:1;;1925:2;1910:18;;1791:177;11669:39:0;;;;;;;;11518:198;;:::o;14:548:1:-;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;793:131::-;-1:-1:-1;;;;;868:31:1;;858:42;;848:70;;914:1;911;904:12;848:70;793:131;:::o;929:315::-;997:6;1005;1058:2;1046:9;1037:7;1033:23;1029:32;1026:52;;;1074:1;1071;1064:12;1026:52;1113:9;1100:23;1132:31;1157:5;1132:31;:::i;:::-;1182:5;1234:2;1219:18;;;;1206:32;;-1:-1:-1;;;929:315:1:o;1441:160::-;1506:20;;1562:13;;1555:21;1545:32;;1535:60;;1591:1;1588;1581:12;1535:60;1441:160;;;:::o;1606:180::-;1662:6;1715:2;1703:9;1694:7;1690:23;1686:32;1683:52;;;1731:1;1728;1721:12;1683:52;1754:26;1770:9;1754:26;:::i;1973:180::-;2032:6;2085:2;2073:9;2064:7;2060:23;2056:32;2053:52;;;2101:1;2098;2091:12;2053:52;-1:-1:-1;2124:23:1;;1973:180;-1:-1:-1;1973:180:1:o;2158:456::-;2235:6;2243;2251;2304:2;2292:9;2283:7;2279:23;2275:32;2272:52;;;2320:1;2317;2310:12;2272:52;2359:9;2346:23;2378:31;2403:5;2378:31;:::i;:::-;2428:5;-1:-1:-1;2485:2:1;2470:18;;2457:32;2498:33;2457:32;2498:33;:::i;:::-;2158:456;;2550:7;;-1:-1:-1;;;2604:2:1;2589:18;;;;2576:32;;2158:456::o;2808:247::-;2867:6;2920:2;2908:9;2899:7;2895:23;2891:32;2888:52;;;2936:1;2933;2926:12;2888:52;2975:9;2962:23;2994:31;3019:5;2994:31;:::i;3268:315::-;3333:6;3341;3394:2;3382:9;3373:7;3369:23;3365:32;3362:52;;;3410:1;3407;3400:12;3362:52;3449:9;3436:23;3468:31;3493:5;3468:31;:::i;:::-;3518:5;-1:-1:-1;3542:35:1;3573:2;3558:18;;3542:35;:::i;:::-;3532:45;;3268:315;;;;;:::o;3588:388::-;3656:6;3664;3717:2;3705:9;3696:7;3692:23;3688:32;3685:52;;;3733:1;3730;3723:12;3685:52;3772:9;3759:23;3791:31;3816:5;3791:31;:::i;:::-;3841:5;-1:-1:-1;3898:2:1;3883:18;;3870:32;3911:33;3870:32;3911:33;:::i;:::-;3963:7;3953:17;;;3588:388;;;;;:::o;3981:380::-;4060:1;4056:12;;;;4103;;;4124:61;;4178:4;4170:6;4166:17;4156:27;;4124:61;4231:2;4223:6;4220:14;4200:18;4197:38;4194:161;;4277:10;4272:3;4268:20;4265:1;4258:31;4312:4;4309:1;4302:15;4340:4;4337:1;4330:15;4194:161;;3981:380;;;:::o;4366:356::-;4568:2;4550:21;;;4587:18;;;4580:30;4646:34;4641:2;4626:18;;4619:62;4713:2;4698:18;;4366:356::o;4727:406::-;4929:2;4911:21;;;4968:2;4948:18;;;4941:30;5007:34;5002:2;4987:18;;4980:62;-1:-1:-1;;;5073:2:1;5058:18;;5051:40;5123:3;5108:19;;4727:406::o;5485:127::-;5546:10;5541:3;5537:20;5534:1;5527:31;5577:4;5574:1;5567:15;5601:4;5598:1;5591:15;5617:128;5684:9;;;5705:11;;;5702:37;;;5719:18;;:::i;5750:125::-;5815:9;;;5836:10;;;5833:36;;;5849:18;;:::i;7052:168::-;7125:9;;;7156;;7173:15;;;7167:22;;7153:37;7143:71;;7194:18;;:::i;7225:217::-;7265:1;7291;7281:132;;7335:10;7330:3;7326:20;7323:1;7316:31;7370:4;7367:1;7360:15;7398:4;7395:1;7388:15;7281:132;-1:-1:-1;7427:9:1;;7225:217::o;10360:127::-;10421:10;10416:3;10412:20;10409:1;10402:31;10452:4;10449:1;10442:15;10476:4;10473:1;10466:15;10492:251;10562:6;10615:2;10603:9;10594:7;10590:23;10586:32;10583:52;;;10631:1;10628;10621:12;10583:52;10663:9;10657:16;10682:31;10707:5;10682:31;:::i;10748:980::-;11010:4;11058:3;11047:9;11043:19;11089:6;11078:9;11071:25;11115:2;11153:6;11148:2;11137:9;11133:18;11126:34;11196:3;11191:2;11180:9;11176:18;11169:31;11220:6;11255;11249:13;11286:6;11278;11271:22;11324:3;11313:9;11309:19;11302:26;;11363:2;11355:6;11351:15;11337:29;;11384:1;11394:195;11408:6;11405:1;11402:13;11394:195;;;11473:13;;-1:-1:-1;;;;;11469:39:1;11457:52;;11564:15;;;;11529:12;;;;11505:1;11423:9;11394:195;;;-1:-1:-1;;;;;;;11645:32:1;;;;11640:2;11625:18;;11618:60;-1:-1:-1;;;11709:3:1;11694:19;11687:35;11606:3;10748:980;-1:-1:-1;;;10748:980:1:o

Swarm Source

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