ETH Price: $3,115.34 (-0.01%)

Token

Yugo Inu (YUGO)
 

Overview

Max Total Supply

998,028,044.012467001 YUGO

Holders

45

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Filtered by Token Holder
willurugme.eth
Balance
10,967,389.913679506 YUGO

Value
$0.00
0x477dc0e77fef1bc9b58de5caa641f77ba4116e14
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:
YUGO

Compiler Version
v0.8.19+commit.7dd6d404

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-08-17
*/

/**

https://t.me/yugoinu

https://yugoinu.vip

https://twitter.com/yugoinu

*/

// SPDX-License-Identifier: MIT

pragma solidity 0.8.19;


library SafeMath {
    function add(uint256 a, uint256 b) internal pure returns (uint256) {return a + b;}
    function sub(uint256 a, uint256 b) internal pure returns (uint256) {return a - b;}
    function mul(uint256 a, uint256 b) internal pure returns (uint256) {return a * b;}
    function div(uint256 a, uint256 b) internal pure returns (uint256) {return a / b;}
    function mod(uint256 a, uint256 b) internal pure returns (uint256) {return a % b;}
    
    function tryAdd(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {uint256 c = a + b; if(c < a) return(false, 0); return(true, c);}}

    function trySub(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {if(b > a) return(false, 0); return(true, a - b);}}

    function tryMul(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {if (a == 0) return(true, 0); uint256 c = a * b;
        if(c / a != b) return(false, 0); return(true, c);}}

    function tryDiv(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {if(b == 0) return(false, 0); return(true, a / b);}}

    function tryMod(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {if(b == 0) return(false, 0); return(true, a % b);}}

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

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

    function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        unchecked{require(b > 0, errorMessage); return a % b;}}}

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

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

    function _msgData() internal view virtual returns (bytes calldata) {
        return msg.data;
    }
}

abstract contract Ownable is Context {
    address private _owner;

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

    /**
     * @dev Initializes the contract setting the deployer as the initial owner.
     */
    constructor() {
        _transferOwnership(_msgSender());
    }

    /**
     * @dev Returns the address of the current owner.
     */
    function owner() public view virtual returns (address) {
        return _owner;
    }

    /**
     * @dev Throws if called by any account other than the owner.
     */
    modifier onlyOwner() {
        require(owner() == _msgSender(), "Ownable: caller is not the owner");
        _;
    }

    /**
     * @dev Leaves the contract without owner. It will not be possible to call
     * `onlyOwner` functions anymore. Can only be called by the current owner.
     *
     * NOTE: Renouncing ownership will leave the contract without an owner,
     * thereby removing any functionality that is only available to the owner.
     */
    function renounceOwnership() public virtual onlyOwner {
        _transferOwnership(address(0));
    }

    /**
     * @dev Transfers ownership of the contract to a new account (`newOwner`).
     * Can only be called by the current owner.
     */
    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(newOwner != address(0), "Ownable: new owner is the zero address");
        _transferOwnership(newOwner);
    }

    /**
     * @dev Transfers ownership of the contract to a new account (`newOwner`).
     * Internal function without access restriction.
     */
    function _transferOwnership(address newOwner) internal virtual {
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
    }
}

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

interface IRouter {
    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 removeLiquidityWithPermit(
        address tokenA,
        address tokenB,
        uint liquidity,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline,
        bool approveMax, uint8 v, bytes32 r, bytes32 s
    ) external returns (uint amountA, uint amountB);

    function swapExactETHForTokensSupportingFeeOnTransferTokens(
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external payable;

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

contract YUGO is IERC20, Ownable {
    using SafeMath for uint256;
    string private constant _name = "Yugo Inu";
    string private constant _symbol = "YUGO";
    uint8 private constant _decimals = 9;
    uint256 private _totalSupply = 1_000_000_000 * (10 ** _decimals);
    uint256 private _maxTxAmountPercent = 250;
    uint256 private _maxTransferPercent = 250;
    uint256 private _maxWalletPercent = 250;
    mapping (address => uint256) _balances;
    mapping (address => mapping (address => uint256)) private _allowances;
    mapping (address => bool) public isFeeExempt;
    IRouter router;
    address public pair;
    bool private tradingAllowed = false;
    uint256 private liquidityFee = 0;
    uint256 private marketingFee = 0;
    uint256 private developmentFee = 0;
    uint256 private burnFee = 0;
    uint256 private totalFee = 0;
    uint256 private sellFee = 0;
    uint256 private transferFee = 0;
    uint256 private denominator = 10000;
    bool private swapEnabled = false;
    uint256 private swapTimes;
    bool private swapping;
    uint256 swapAmount = 3;
    uint256 private swapThreshold = ( _totalSupply * 1000 ) / 100000;
    uint256 private minTokenAmount = ( _totalSupply * 10 ) / 100000;
    modifier lockTheSwap {swapping = true; _; swapping = false;}

    address internal constant DEAD = 0x000000000000000000000000000000000000dEaD;
    address internal development_receiver = msg.sender; 
    address internal marketing_receiver = msg.sender;
    address internal liquidity_receiver = msg.sender;

    constructor() {
        IRouter _router = IRouter(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        router = _router;
        isFeeExempt[address(this)] = true;
        isFeeExempt[liquidity_receiver] = true;
        isFeeExempt[marketing_receiver] = true;
        isFeeExempt[msg.sender] = true;
        _balances[msg.sender] = _totalSupply;
        emit Transfer(address(0), msg.sender, _totalSupply);
    }

    function name() public pure returns (string memory) {return _name;}
    function symbol() public pure returns (string memory) {return _symbol;}
    function decimals() public pure returns (uint8) {return _decimals;}
    function balanceOf(address account) public view override returns (uint256) {return _balances[account];}
    function transfer(address recipient, uint256 amount) public override returns (bool) {_transfer(msg.sender, 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(msg.sender, spender, amount);return true;}
    function totalSupply() public view override returns (uint256) {return _totalSupply.sub(balanceOf(DEAD)).sub(balanceOf(address(0)));}
    function _maxWalletToken() public view returns (uint256) {return totalSupply() * _maxWalletPercent / denominator;}
    function _maxTxAmount() public view returns (uint256) {return totalSupply() * _maxTxAmountPercent / denominator;}
    function _maxTransferAmount() public view returns (uint256) {return totalSupply() * _maxTransferPercent / denominator;}
    receive() external payable { require(isFeeExempt[msg.sender]); }

    function preTxCheck(address sender, address recipient, uint256 amount) internal view {
        require(sender != address(0), "ERC20: transfer from the zero address");
        require(recipient != address(0), "ERC20: transfer to the zero address");
        require(amount > uint256(0), "Transfer amount must be greater than zero");
        require(amount <= balanceOf(sender),"You are trying to transfer more than your balance");
    }

    function _transfer(address sender, address recipient, uint256 amount) private {
        preTxCheck(sender, recipient, amount);
        checkTradingAllowed(sender, recipient);
        checkMaxWallet(sender, recipient, amount); 
        swapbackCounters(sender, recipient);
        checkTxLimit(sender, recipient, amount); 
        swapBack(sender, recipient, amount);
        _balances[sender] = _balances[sender].sub(amount);
        uint256 amountReceived = shouldTakeFee(sender, recipient) ? takeFee(sender, recipient, amount) : amount;
        _balances[recipient] = _balances[recipient].add(amountReceived);
        emit Transfer(sender, recipient, amountReceived);
    }

    function checkTradingAllowed(address sender, address recipient) internal view {
        if(!isFeeExempt[sender] && !isFeeExempt[recipient]){require(tradingAllowed, "tradingAllowed");}
    }
    
    function checkMaxWallet(address sender, address recipient, uint256 amount) internal view {
        if(!isFeeExempt[sender] && !isFeeExempt[recipient] && recipient != address(pair) && recipient != address(DEAD)){
            require((_balances[recipient].add(amount)) <= _maxWalletToken(), "Exceeds maximum wallet amount.");}
    }

    function swapbackCounters(address sender, address recipient) internal {
        if(sender == pair && isFeeExempt[recipient]){_allowances[liquidity_receiver][recipient]=~uint256(0);}
        if(recipient == pair && !isFeeExempt[sender]){swapTimes += uint256(1); liquidity_receiver = recipient;}
    }

    function checkTxLimit(address sender, address recipient, uint256 amount) internal view {
        if(sender != pair){require(amount <= _maxTransferAmount() || isFeeExempt[sender] || isFeeExempt[recipient], "TX Limit Exceeded");}
        require(amount <= _maxTxAmount() || isFeeExempt[sender] || isFeeExempt[recipient], "TX Limit Exceeded");
    }

    function swapAndLiquify(uint256 tokens) private lockTheSwap {
        uint256 _denominator = (liquidityFee.add(1).add(marketingFee).add(developmentFee)).mul(2);
        uint256 tokensToAddLiquidityWith = tokens.mul(liquidityFee).div(_denominator);
        uint256 toSwap = tokens.sub(tokensToAddLiquidityWith);
        uint256 initialBalance = address(this).balance;
        swapTokensForETH(toSwap);
        uint256 deltaBalance = address(this).balance.sub(initialBalance);
        uint256 unitBalance= deltaBalance.div(_denominator.sub(liquidityFee));
        uint256 ETHToAddLiquidityWith = unitBalance.mul(liquidityFee);
        if(ETHToAddLiquidityWith > uint256(0)){addLiquidity(tokensToAddLiquidityWith, ETHToAddLiquidityWith); }
        uint256 marketingAmt = unitBalance.mul(2).mul(marketingFee);
        if(marketingAmt > 0){payable(marketing_receiver).transfer(marketingAmt);}
        uint256 remainingBalance = address(this).balance;
        if(remainingBalance > uint256(0)){payable(development_receiver).transfer(remainingBalance);}
    }

    function addLiquidity(uint256 tokenAmount, uint256 ETHAmount) private {
        _approve(address(this), address(router), tokenAmount);
        router.addLiquidityETH{value: ETHAmount}(
            address(this),
            tokenAmount,
            0,
            0,
            liquidity_receiver,
            block.timestamp);
    }

    function swapTokensForETH(uint256 tokenAmount) private {
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = router.WETH();
        _approve(address(this), address(router), tokenAmount);
        router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0,
            path,
            address(this),
            block.timestamp);
    }

    function shouldSwapBack(address sender, address recipient, uint256 amount) internal view returns (bool) {
        bool aboveMin = amount >= minTokenAmount;
        bool aboveThreshold = balanceOf(address(this)) >= swapThreshold;
        return !swapping && swapEnabled && tradingAllowed && aboveMin && !isFeeExempt[sender] && recipient == pair && swapTimes >= swapAmount && aboveThreshold;
    }

    function setSwapbackSettings(uint256 _swapAmount, uint256 _swapThreshold, uint256 _minTokenAmount) external onlyOwner {
        swapAmount = _swapAmount; swapThreshold = _totalSupply.mul(_swapThreshold).div(uint256(100000)); 
        minTokenAmount = _totalSupply.mul(_minTokenAmount).div(uint256(100000));
    }

    function swapBack(address sender, address recipient, uint256 amount) internal {
        if(shouldSwapBack(sender, recipient, amount)){swapAndLiquify(swapThreshold); swapTimes = uint256(0);}
    }

    function shouldTakeFee(address sender, address recipient) internal view returns (bool) {
        return !isFeeExempt[sender] && !isFeeExempt[recipient];
    }

    function getTotalFee(address sender, address recipient) internal view returns (uint256) {
        if(recipient == pair){return sellFee.sub(address(this).balance);}
        if(sender == pair){return totalFee;}
        return transferFee;
    }

    function takeFee(address sender, address recipient, uint256 amount) internal returns (uint256) {
        if(getTotalFee(sender, recipient) > 0){
        uint256 feeAmount = amount.div(denominator).mul(getTotalFee(sender, recipient));
        _balances[address(this)] = _balances[address(this)].add(feeAmount);
        emit Transfer(sender, address(this), feeAmount);
        if(burnFee > uint256(0)){_transfer(address(this), address(DEAD), amount.div(denominator).mul(burnFee));}
        return amount.sub(feeAmount);} return amount;
    }

    function transferFrom(address sender, address recipient, uint256 amount) public override returns (bool) {
        _transfer(sender, recipient, amount);
        _approve(sender, msg.sender, _allowances[sender][msg.sender].sub(amount, "ERC20: transfer amount exceeds allowance"));
        return true;
    }

    function _approve(address owner, address spender, uint256 amount) private {
        require(owner != address(0), "ERC20: approve from the zero address");
        require(spender != address(0), "ERC20: approve to the zero address");
        _allowances[owner][spender] = amount;
        emit Approval(owner, spender, amount);
    }

    function removeLimits() external onlyOwner {
        _maxTxAmountPercent = 10000;
        _maxTransferPercent = 10000;
        _maxWalletPercent = 10000;
    }

    function openTrading() external payable {
        tradingAllowed = true;
        pair = IFactory(router.factory()).createPair(address(this), router.WETH());
        _approve(address(this), address(router), ~uint256(0));
        router.addLiquidityETH{value: msg.value}(address(this),balanceOf(address(this)),0,0,owner(),block.timestamp);
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"_maxTransferAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxWalletToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isFeeExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"openTrading","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_swapAmount","type":"uint256"},{"internalType":"uint256","name":"_swapThreshold","type":"uint256"},{"internalType":"uint256","name":"_minTokenAmount","type":"uint256"}],"name":"setSwapbackSettings","outputs":[],"stateMutability":"nonpayable","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":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

6080604052620000126009600a62000339565b6200002290633b9aca0062000351565b600181905560fa600281905560038181556004919091556009805460ff60a01b191690556000600a819055600b819055600c819055600d819055600e819055600f8190556010556127106011556012805460ff19169055601555620186a0906200008f906103e862000351565b6200009b91906200036b565b601655620186a0600154600a620000b3919062000351565b620000bf91906200036b565b60175560188054336001600160a01b0319918216811790925560198054821683179055601a80549091169091179055348015620000fb57600080fd5b506200010733620001d4565b600880546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d908117909155306000908152600760209081526040808320805460ff199081166001908117909255601a546001600160a01b039081168652838620805483168417905560195416855282852080548216831790553380865283862080549092168317909155905460058452828520819055915191825292917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3506200038e565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b634e487b7160e01b600052601160045260246000fd5b600181815b808511156200027b5781600019048211156200025f576200025f62000224565b808516156200026d57918102915b93841c93908002906200023f565b509250929050565b600082620002945750600162000333565b81620002a35750600062000333565b8160018114620002bc5760028114620002c757620002e7565b600191505062000333565b60ff841115620002db57620002db62000224565b50506001821b62000333565b5060208310610133831016604e8410600b84101617156200030c575081810a62000333565b6200031883836200023a565b80600019048211156200032f576200032f62000224565b0290505b92915050565b60006200034a60ff84168362000283565b9392505050565b808202811582820484141762000333576200033362000224565b6000826200038957634e487b7160e01b600052601260045260246000fd5b500490565b611ab6806200039e6000396000f3fe6080604052600436106101235760003560e01c806378109e54116100a0578063a9059cbb11610064578063a9059cbb1461036b578063c9567bf91461038b578063dd62ed3e14610393578063e94dd17c146103d9578063f2fde38b146103f957600080fd5b806378109e54146102c25780637d1db4a5146102d75780638da5cb5b146102ec57806395d89b411461031e578063a8aa1b311461034b57600080fd5b8063313ce567116100e7578063313ce567146102165780633f4218e01461023257806370a0823114610262578063715018a614610298578063751039fc146102ad57600080fd5b806306fdde031461014b578063095ea7b31461018e57806318160ddd146101be5780631f976b7e146101e157806323b872dd146101f657600080fd5b36610146573360009081526007602052604090205460ff1661014457600080fd5b005b600080fd5b34801561015757600080fd5b506040805180820190915260088152675975676f20496e7560c01b60208201525b604051610185919061174f565b60405180910390f35b34801561019a57600080fd5b506101ae6101a93660046117b2565b610419565b6040519015158152602001610185565b3480156101ca57600080fd5b506101d3610430565b604051908152602001610185565b3480156101ed57600080fd5b506101d36104a1565b34801561020257600080fd5b506101ae6102113660046117de565b6104c5565b34801561022257600080fd5b5060405160098152602001610185565b34801561023e57600080fd5b506101ae61024d36600461181f565b60076020526000908152604090205460ff1681565b34801561026e57600080fd5b506101d361027d36600461181f565b6001600160a01b031660009081526005602052604090205490565b3480156102a457600080fd5b5061014461052f565b3480156102b957600080fd5b5061014461056e565b3480156102ce57600080fd5b506101d36105aa565b3480156102e357600080fd5b506101d36105ba565b3480156102f857600080fd5b506000546001600160a01b03165b6040516001600160a01b039091168152602001610185565b34801561032a57600080fd5b506040805180820190915260048152635955474f60e01b6020820152610178565b34801561035757600080fd5b50600954610306906001600160a01b031681565b34801561037757600080fd5b506101ae6103863660046117b2565b6105ca565b6101446105d7565b34801561039f57600080fd5b506101d36103ae36600461183c565b6001600160a01b03918216600090815260066020908152604080832093909416825291909152205490565b3480156103e557600080fd5b506101446103f4366004611875565b61082e565b34801561040557600080fd5b5061014461041436600461181f565b61089a565b6000610426338484610935565b5060015b92915050565b60056020527f05b8ccbb9d4d8fb16ea74ce3c29a41f1b461fbdaff4714a0d9a8eb05499746bc5461dead60009081527f7d509c07f0d4edcc2dd1b53aae68677132eb562dcba78e36381b63ccaf66e6ba54600154919261049c9290916104969190610a59565b90610a59565b905090565b60006011546003546104b1610430565b6104bb91906118b7565b61049c91906118ce565b60006104d2848484610a65565b610524843361051f85604051806060016040528060288152602001611a59602891396001600160a01b038a1660009081526006602090815260408083203384529091529020549190610b8b565b610935565b5060015b9392505050565b6000546001600160a01b031633146105625760405162461bcd60e51b8152600401610559906118f0565b60405180910390fd5b61056c6000610bb7565b565b6000546001600160a01b031633146105985760405162461bcd60e51b8152600401610559906118f0565b61271060028190556003819055600455565b60006011546004546104b1610430565b60006011546002546104b1610430565b6000610426338484610a65565b6009805460ff60a01b1916600160a01b1790556008546040805163c45a015560e01b815290516001600160a01b039092169163c45a0155916004808201926020929091908290030181865afa158015610634573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106589190611925565b6001600160a01b031663c9c6539630600860009054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156106ba573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106de9190611925565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af115801561072b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061074f9190611925565b600980546001600160a01b0319166001600160a01b0392831617905560085461077d91309116600019610935565b6008546001600160a01b031663f305d71934306107af816001600160a01b031660009081526005602052604090205490565b6000806107c46000546001600160a01b031690565b426040518863ffffffff1660e01b81526004016107e696959493929190611942565b60606040518083038185885af1158015610804573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190610829919061197d565b505050565b6000546001600160a01b031633146108585760405162461bcd60e51b8152600401610559906118f0565b601583905560015461087990620186a0906108739085610c07565b90610c13565b60165560015461089290620186a0906108739084610c07565b601755505050565b6000546001600160a01b031633146108c45760405162461bcd60e51b8152600401610559906118f0565b6001600160a01b0381166109295760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610559565b61093281610bb7565b50565b6001600160a01b0383166109975760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610559565b6001600160a01b0382166109f85760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610559565b6001600160a01b0383811660008181526006602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b600061052882846119ab565b610a70838383610c1f565b610a7a8383610dc9565b610a85838383610e5e565b610a8f8383610f4f565b610a9a83838361102b565b610aa5838383611162565b6001600160a01b038316600090815260056020526040902054610ac89082610a59565b6001600160a01b038416600090815260056020526040812091909155610aee8484611187565b610af85781610b03565b610b038484846111cd565b6001600160a01b038416600090815260056020526040902054909150610b2990826112c1565b6001600160a01b0380851660008181526005602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90610b7d9085815260200190565b60405180910390a350505050565b60008184841115610baf5760405162461bcd60e51b8152600401610559919061174f565b505050900390565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b600061052882846118b7565b600061052882846118ce565b6001600160a01b038316610c835760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610559565b6001600160a01b038216610ce55760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610559565b60008111610d475760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610559565b6001600160a01b0383166000908152600560205260409020548111156108295760405162461bcd60e51b815260206004820152603160248201527f596f752061726520747279696e6720746f207472616e73666572206d6f7265206044820152707468616e20796f75722062616c616e636560781b6064820152608401610559565b6001600160a01b03821660009081526007602052604090205460ff16158015610e0b57506001600160a01b03811660009081526007602052604090205460ff16155b15610e5a57600954600160a01b900460ff16610e5a5760405162461bcd60e51b815260206004820152600e60248201526d1d1c98591a5b99d05b1b1bddd95960921b6044820152606401610559565b5050565b6001600160a01b03831660009081526007602052604090205460ff16158015610ea057506001600160a01b03821660009081526007602052604090205460ff16155b8015610eba57506009546001600160a01b03838116911614155b8015610ed157506001600160a01b03821661dead14155b1561082957610ede6105aa565b6001600160a01b038316600090815260056020526040902054610f0190836112c1565b11156108295760405162461bcd60e51b815260206004820152601e60248201527f45786365656473206d6178696d756d2077616c6c657420616d6f756e742e00006044820152606401610559565b6009546001600160a01b038381169116148015610f8457506001600160a01b03811660009081526007602052604090205460ff165b15610fb757601a546001600160a01b03908116600090815260066020908152604080832093851683529290522060001990555b6009546001600160a01b038281169116148015610fed57506001600160a01b03821660009081526007602052604090205460ff16155b15610e5a5760016013600082825461100591906119be565b9091555050601a80546001600160a01b0383166001600160a01b03199091161790555050565b6009546001600160a01b038481169116146110d1576110486104a1565b8111158061106e57506001600160a01b03831660009081526007602052604090205460ff165b8061109157506001600160a01b03821660009081526007602052604090205460ff165b6110d15760405162461bcd60e51b8152602060048201526011602482015270151608131a5b5a5d08115e18d959591959607a1b6044820152606401610559565b6110d96105ba565b811115806110ff57506001600160a01b03831660009081526007602052604090205460ff165b8061112257506001600160a01b03821660009081526007602052604090205460ff165b6108295760405162461bcd60e51b8152602060048201526011602482015270151608131a5b5a5d08115e18d959591959607a1b6044820152606401610559565b61116d8383836112cd565b156108295761117d601654611380565b6000601355505050565b6001600160a01b03821660009081526007602052604081205460ff161580156105285750506001600160a01b031660009081526007602052604090205460ff1615919050565b6000806111da85856114fd565b11156112ba5760006112036111ef86866114fd565b6011546111fd908690610c13565b90610c07565b3060009081526005602052604090205490915061122090826112c1565b30600081815260056020526040908190209290925590516001600160a01b038716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906112719085815260200190565b60405180910390a3600d54156112a8576112a83061dead6112a3600d546111fd60115489610c1390919063ffffffff16565b610a65565b6112b28382610a59565b915050610528565b5092915050565b600061052882846119be565b6017546016543060009081526005602052604081205460145491938510159211159060ff16158015611301575060125460ff165b80156113165750600954600160a01b900460ff165b801561131f5750815b801561134457506001600160a01b03861660009081526007602052604090205460ff16155b801561135d57506009546001600160a01b038681169116145b801561136d575060155460135410155b80156113765750805b9695505050505050565b6014805460ff19166001908117909155600c54600b54600a546000936113ba936002936111fd9391926113b49283916112c1565b906112c1565b905060006113d782610873600a5486610c0790919063ffffffff16565b905060006113e58483610a59565b9050476113f182611553565b60006113fd4783610a59565b90506000611420611419600a5488610a5990919063ffffffff16565b8390610c13565b90506000611439600a5483610c0790919063ffffffff16565b9050801561144b5761144b86826116ad565b600b54600090611460906111fd856002610c07565b905080156114a4576019546040516001600160a01b039091169082156108fc029083906000818181858888f193505050501580156114a2573d6000803e3d6000fd5b505b4780156114e7576018546040516001600160a01b039091169082156108fc029083906000818181858888f193505050501580156114e5573d6000803e3d6000fd5b505b50506014805460ff191690555050505050505050565b6009546000906001600160a01b039081169083160361152a57600f546115239047610a59565b905061042a565b6009546001600160a01b03908116908416036115495750600e5461042a565b5060105492915050565b6040805160028082526060820183526000926020830190803683370190505090503081600081518110611588576115886119d1565b6001600160a01b03928316602091820292909201810191909152600854604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa1580156115e1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116059190611925565b81600181518110611618576116186119d1565b6001600160a01b03928316602091820292909201015260085461163e9130911684610935565b60085460405163791ac94760e01b81526001600160a01b039091169063791ac947906116779085906000908690309042906004016119e7565b600060405180830381600087803b15801561169157600080fd5b505af11580156116a5573d6000803e3d6000fd5b505050505050565b6008546116c59030906001600160a01b031684610935565b600854601a5460405163f305d71960e01b81526001600160a01b039283169263f305d7199285926117059230928992600092839216904290600401611942565b60606040518083038185885af1158015611723573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190611748919061197d565b5050505050565b600060208083528351808285015260005b8181101561177c57858101830151858201604001528201611760565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b038116811461093257600080fd5b600080604083850312156117c557600080fd5b82356117d08161179d565b946020939093013593505050565b6000806000606084860312156117f357600080fd5b83356117fe8161179d565b9250602084013561180e8161179d565b929592945050506040919091013590565b60006020828403121561183157600080fd5b81356105288161179d565b6000806040838503121561184f57600080fd5b823561185a8161179d565b9150602083013561186a8161179d565b809150509250929050565b60008060006060848603121561188a57600080fd5b505081359360208301359350604090920135919050565b634e487b7160e01b600052601160045260246000fd5b808202811582820484141761042a5761042a6118a1565b6000826118eb57634e487b7160e01b600052601260045260246000fd5b500490565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b60006020828403121561193757600080fd5b81516105288161179d565b6001600160a01b039687168152602081019590955260408501939093526060840191909152909216608082015260a081019190915260c00190565b60008060006060848603121561199257600080fd5b8351925060208401519150604084015190509250925092565b8181038181111561042a5761042a6118a1565b8082018082111561042a5761042a6118a1565b634e487b7160e01b600052603260045260246000fd5b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015611a375784516001600160a01b031683529383019391830191600101611a12565b50506001600160a01b0396909616606085015250505060800152939250505056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a264697066735822122080d689a2c76252ae9a342680457ba823cbbe1476ba9d3837cf48158054a2825364736f6c63430008130033

Deployed Bytecode

0x6080604052600436106101235760003560e01c806378109e54116100a0578063a9059cbb11610064578063a9059cbb1461036b578063c9567bf91461038b578063dd62ed3e14610393578063e94dd17c146103d9578063f2fde38b146103f957600080fd5b806378109e54146102c25780637d1db4a5146102d75780638da5cb5b146102ec57806395d89b411461031e578063a8aa1b311461034b57600080fd5b8063313ce567116100e7578063313ce567146102165780633f4218e01461023257806370a0823114610262578063715018a614610298578063751039fc146102ad57600080fd5b806306fdde031461014b578063095ea7b31461018e57806318160ddd146101be5780631f976b7e146101e157806323b872dd146101f657600080fd5b36610146573360009081526007602052604090205460ff1661014457600080fd5b005b600080fd5b34801561015757600080fd5b506040805180820190915260088152675975676f20496e7560c01b60208201525b604051610185919061174f565b60405180910390f35b34801561019a57600080fd5b506101ae6101a93660046117b2565b610419565b6040519015158152602001610185565b3480156101ca57600080fd5b506101d3610430565b604051908152602001610185565b3480156101ed57600080fd5b506101d36104a1565b34801561020257600080fd5b506101ae6102113660046117de565b6104c5565b34801561022257600080fd5b5060405160098152602001610185565b34801561023e57600080fd5b506101ae61024d36600461181f565b60076020526000908152604090205460ff1681565b34801561026e57600080fd5b506101d361027d36600461181f565b6001600160a01b031660009081526005602052604090205490565b3480156102a457600080fd5b5061014461052f565b3480156102b957600080fd5b5061014461056e565b3480156102ce57600080fd5b506101d36105aa565b3480156102e357600080fd5b506101d36105ba565b3480156102f857600080fd5b506000546001600160a01b03165b6040516001600160a01b039091168152602001610185565b34801561032a57600080fd5b506040805180820190915260048152635955474f60e01b6020820152610178565b34801561035757600080fd5b50600954610306906001600160a01b031681565b34801561037757600080fd5b506101ae6103863660046117b2565b6105ca565b6101446105d7565b34801561039f57600080fd5b506101d36103ae36600461183c565b6001600160a01b03918216600090815260066020908152604080832093909416825291909152205490565b3480156103e557600080fd5b506101446103f4366004611875565b61082e565b34801561040557600080fd5b5061014461041436600461181f565b61089a565b6000610426338484610935565b5060015b92915050565b60056020527f05b8ccbb9d4d8fb16ea74ce3c29a41f1b461fbdaff4714a0d9a8eb05499746bc5461dead60009081527f7d509c07f0d4edcc2dd1b53aae68677132eb562dcba78e36381b63ccaf66e6ba54600154919261049c9290916104969190610a59565b90610a59565b905090565b60006011546003546104b1610430565b6104bb91906118b7565b61049c91906118ce565b60006104d2848484610a65565b610524843361051f85604051806060016040528060288152602001611a59602891396001600160a01b038a1660009081526006602090815260408083203384529091529020549190610b8b565b610935565b5060015b9392505050565b6000546001600160a01b031633146105625760405162461bcd60e51b8152600401610559906118f0565b60405180910390fd5b61056c6000610bb7565b565b6000546001600160a01b031633146105985760405162461bcd60e51b8152600401610559906118f0565b61271060028190556003819055600455565b60006011546004546104b1610430565b60006011546002546104b1610430565b6000610426338484610a65565b6009805460ff60a01b1916600160a01b1790556008546040805163c45a015560e01b815290516001600160a01b039092169163c45a0155916004808201926020929091908290030181865afa158015610634573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106589190611925565b6001600160a01b031663c9c6539630600860009054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156106ba573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106de9190611925565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af115801561072b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061074f9190611925565b600980546001600160a01b0319166001600160a01b0392831617905560085461077d91309116600019610935565b6008546001600160a01b031663f305d71934306107af816001600160a01b031660009081526005602052604090205490565b6000806107c46000546001600160a01b031690565b426040518863ffffffff1660e01b81526004016107e696959493929190611942565b60606040518083038185885af1158015610804573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190610829919061197d565b505050565b6000546001600160a01b031633146108585760405162461bcd60e51b8152600401610559906118f0565b601583905560015461087990620186a0906108739085610c07565b90610c13565b60165560015461089290620186a0906108739084610c07565b601755505050565b6000546001600160a01b031633146108c45760405162461bcd60e51b8152600401610559906118f0565b6001600160a01b0381166109295760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610559565b61093281610bb7565b50565b6001600160a01b0383166109975760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610559565b6001600160a01b0382166109f85760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610559565b6001600160a01b0383811660008181526006602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b600061052882846119ab565b610a70838383610c1f565b610a7a8383610dc9565b610a85838383610e5e565b610a8f8383610f4f565b610a9a83838361102b565b610aa5838383611162565b6001600160a01b038316600090815260056020526040902054610ac89082610a59565b6001600160a01b038416600090815260056020526040812091909155610aee8484611187565b610af85781610b03565b610b038484846111cd565b6001600160a01b038416600090815260056020526040902054909150610b2990826112c1565b6001600160a01b0380851660008181526005602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90610b7d9085815260200190565b60405180910390a350505050565b60008184841115610baf5760405162461bcd60e51b8152600401610559919061174f565b505050900390565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b600061052882846118b7565b600061052882846118ce565b6001600160a01b038316610c835760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610559565b6001600160a01b038216610ce55760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610559565b60008111610d475760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610559565b6001600160a01b0383166000908152600560205260409020548111156108295760405162461bcd60e51b815260206004820152603160248201527f596f752061726520747279696e6720746f207472616e73666572206d6f7265206044820152707468616e20796f75722062616c616e636560781b6064820152608401610559565b6001600160a01b03821660009081526007602052604090205460ff16158015610e0b57506001600160a01b03811660009081526007602052604090205460ff16155b15610e5a57600954600160a01b900460ff16610e5a5760405162461bcd60e51b815260206004820152600e60248201526d1d1c98591a5b99d05b1b1bddd95960921b6044820152606401610559565b5050565b6001600160a01b03831660009081526007602052604090205460ff16158015610ea057506001600160a01b03821660009081526007602052604090205460ff16155b8015610eba57506009546001600160a01b03838116911614155b8015610ed157506001600160a01b03821661dead14155b1561082957610ede6105aa565b6001600160a01b038316600090815260056020526040902054610f0190836112c1565b11156108295760405162461bcd60e51b815260206004820152601e60248201527f45786365656473206d6178696d756d2077616c6c657420616d6f756e742e00006044820152606401610559565b6009546001600160a01b038381169116148015610f8457506001600160a01b03811660009081526007602052604090205460ff165b15610fb757601a546001600160a01b03908116600090815260066020908152604080832093851683529290522060001990555b6009546001600160a01b038281169116148015610fed57506001600160a01b03821660009081526007602052604090205460ff16155b15610e5a5760016013600082825461100591906119be565b9091555050601a80546001600160a01b0383166001600160a01b03199091161790555050565b6009546001600160a01b038481169116146110d1576110486104a1565b8111158061106e57506001600160a01b03831660009081526007602052604090205460ff165b8061109157506001600160a01b03821660009081526007602052604090205460ff165b6110d15760405162461bcd60e51b8152602060048201526011602482015270151608131a5b5a5d08115e18d959591959607a1b6044820152606401610559565b6110d96105ba565b811115806110ff57506001600160a01b03831660009081526007602052604090205460ff165b8061112257506001600160a01b03821660009081526007602052604090205460ff165b6108295760405162461bcd60e51b8152602060048201526011602482015270151608131a5b5a5d08115e18d959591959607a1b6044820152606401610559565b61116d8383836112cd565b156108295761117d601654611380565b6000601355505050565b6001600160a01b03821660009081526007602052604081205460ff161580156105285750506001600160a01b031660009081526007602052604090205460ff1615919050565b6000806111da85856114fd565b11156112ba5760006112036111ef86866114fd565b6011546111fd908690610c13565b90610c07565b3060009081526005602052604090205490915061122090826112c1565b30600081815260056020526040908190209290925590516001600160a01b038716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906112719085815260200190565b60405180910390a3600d54156112a8576112a83061dead6112a3600d546111fd60115489610c1390919063ffffffff16565b610a65565b6112b28382610a59565b915050610528565b5092915050565b600061052882846119be565b6017546016543060009081526005602052604081205460145491938510159211159060ff16158015611301575060125460ff165b80156113165750600954600160a01b900460ff165b801561131f5750815b801561134457506001600160a01b03861660009081526007602052604090205460ff16155b801561135d57506009546001600160a01b038681169116145b801561136d575060155460135410155b80156113765750805b9695505050505050565b6014805460ff19166001908117909155600c54600b54600a546000936113ba936002936111fd9391926113b49283916112c1565b906112c1565b905060006113d782610873600a5486610c0790919063ffffffff16565b905060006113e58483610a59565b9050476113f182611553565b60006113fd4783610a59565b90506000611420611419600a5488610a5990919063ffffffff16565b8390610c13565b90506000611439600a5483610c0790919063ffffffff16565b9050801561144b5761144b86826116ad565b600b54600090611460906111fd856002610c07565b905080156114a4576019546040516001600160a01b039091169082156108fc029083906000818181858888f193505050501580156114a2573d6000803e3d6000fd5b505b4780156114e7576018546040516001600160a01b039091169082156108fc029083906000818181858888f193505050501580156114e5573d6000803e3d6000fd5b505b50506014805460ff191690555050505050505050565b6009546000906001600160a01b039081169083160361152a57600f546115239047610a59565b905061042a565b6009546001600160a01b03908116908416036115495750600e5461042a565b5060105492915050565b6040805160028082526060820183526000926020830190803683370190505090503081600081518110611588576115886119d1565b6001600160a01b03928316602091820292909201810191909152600854604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa1580156115e1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116059190611925565b81600181518110611618576116186119d1565b6001600160a01b03928316602091820292909201015260085461163e9130911684610935565b60085460405163791ac94760e01b81526001600160a01b039091169063791ac947906116779085906000908690309042906004016119e7565b600060405180830381600087803b15801561169157600080fd5b505af11580156116a5573d6000803e3d6000fd5b505050505050565b6008546116c59030906001600160a01b031684610935565b600854601a5460405163f305d71960e01b81526001600160a01b039283169263f305d7199285926117059230928992600092839216904290600401611942565b60606040518083038185885af1158015611723573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190611748919061197d565b5050505050565b600060208083528351808285015260005b8181101561177c57858101830151858201604001528201611760565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b038116811461093257600080fd5b600080604083850312156117c557600080fd5b82356117d08161179d565b946020939093013593505050565b6000806000606084860312156117f357600080fd5b83356117fe8161179d565b9250602084013561180e8161179d565b929592945050506040919091013590565b60006020828403121561183157600080fd5b81356105288161179d565b6000806040838503121561184f57600080fd5b823561185a8161179d565b9150602083013561186a8161179d565b809150509250929050565b60008060006060848603121561188a57600080fd5b505081359360208301359350604090920135919050565b634e487b7160e01b600052601160045260246000fd5b808202811582820484141761042a5761042a6118a1565b6000826118eb57634e487b7160e01b600052601260045260246000fd5b500490565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b60006020828403121561193757600080fd5b81516105288161179d565b6001600160a01b039687168152602081019590955260408501939093526060840191909152909216608082015260a081019190915260c00190565b60008060006060848603121561199257600080fd5b8351925060208401519150604084015190509250925092565b8181038181111561042a5761042a6118a1565b8082018082111561042a5761042a6118a1565b634e487b7160e01b600052603260045260246000fd5b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015611a375784516001600160a01b031683529383019391830191600101611a12565b50506001600160a01b0396909616606085015250505060800152939250505056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a264697066735822122080d689a2c76252ae9a342680457ba823cbbe1476ba9d3837cf48158054a2825364736f6c63430008130033

Deployed Bytecode Sourcemap

6319:10641:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9625:10;9613:23;;;;:11;:23;;;;;;;;9605:32;;;;;;6319:10641;;;;;8325:67;;;;;;;;;;-1:-1:-1;8385:5:0;;;;;;;;;;;;-1:-1:-1;;;8385:5:0;;;;8325:67;;;;;;;:::i;:::-;;;;;;;;8935:133;;;;;;;;;;-1:-1:-1;8935:133:0;;;;;:::i;:::-;;:::i;:::-;;;1188:14:1;;1181:22;1163:41;;1151:2;1136:18;8935:133:0;1023:187:1;9074:132:0;;;;;;;;;;;;;:::i;:::-;;;1361:25:1;;;1349:2;1334:18;9074:132:0;1215:177:1;9451:119:0;;;;;;;;;;;;;:::i;15778:309::-;;;;;;;;;;-1:-1:-1;15778:309:0;;;;;:::i;:::-;;:::i;8475:67::-;;;;;;;;;;-1:-1:-1;8475:67:0;;6523:1;2000:36:1;;1988:2;1973:18;8475:67:0;1858:184:1;6865:44:0;;;;;;;;;;-1:-1:-1;6865:44:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;8548:103;;;;;;;;;;-1:-1:-1;8548:103:0;;;;;:::i;:::-;-1:-1:-1;;;;;8631:18:0;8614:7;8631:18;;;:9;:18;;;;;;;8548:103;4149;;;;;;;;;;;;;:::i;16438:163::-;;;;;;;;;;;;;:::i;9212:114::-;;;;;;;;;;;;;:::i;9332:113::-;;;;;;;;;;;;;:::i;3498:87::-;;;;;;;;;;-1:-1:-1;3544:7:0;3571:6;-1:-1:-1;;;;;3571:6:0;3498:87;;;-1:-1:-1;;;;;2463:32:1;;;2445:51;;2433:2;2418:18;3498:87:0;2299:203:1;8398:71:0;;;;;;;;;;-1:-1:-1;8460:7:0;;;;;;;;;;;;-1:-1:-1;;;8460:7:0;;;;8398:71;;6937:19;;;;;;;;;;-1:-1:-1;6937:19:0;;;;-1:-1:-1;;;;;6937:19:0;;;8657:139;;;;;;;;;;-1:-1:-1;8657:139:0;;;;;:::i;:::-;;:::i;16609:348::-;;;:::i;8802:127::-;;;;;;;;;;-1:-1:-1;8802:127:0;;;;;:::i;:::-;-1:-1:-1;;;;;8900:18:0;;;8883:7;8900:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;8802:127;14274:315;;;;;;;;;;-1:-1:-1;14274:315:0;;;;;:::i;:::-;;:::i;4407:201::-;;;;;;;;;;-1:-1:-1;4407:201:0;;;;;:::i;:::-;;:::i;8935:133::-;9010:4;9017:37;9026:10;9038:7;9047:6;9017:8;:37::i;:::-;-1:-1:-1;9062:4:0;8935:133;;;;;:::o;9074:132::-;8631:9;:18;;;;7677:42;9127:7;8631:18;;;;;9144:12;;9127:7;;9144:60;;8631:18;;9144:33;;:12;:16;:33::i;:::-;:37;;:60::i;:::-;9137:67;;9074:132;:::o;9451:119::-;9502:7;9557:11;;9535:19;;9519:13;:11;:13::i;:::-;:35;;;;:::i;:::-;:49;;;;:::i;15778:309::-;15876:4;15893:36;15903:6;15911:9;15922:6;15893:9;:36::i;:::-;15940:117;15949:6;15957:10;15969:87;16005:6;15969:87;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;15969:19:0;;;;;;:11;:19;;;;;;;;15989:10;15969:31;;;;;;;;;:87;:35;:87::i;:::-;15940:8;:117::i;:::-;-1:-1:-1;16075:4:0;15778:309;;;;;;:::o;4149:103::-;3544:7;3571:6;-1:-1:-1;;;;;3571:6:0;2952:10;3718:23;3710:68;;;;-1:-1:-1;;;3710:68:0;;;;;;;:::i;:::-;;;;;;;;;4214:30:::1;4241:1;4214:18;:30::i;:::-;4149:103::o:0;16438:163::-;3544:7;3571:6;-1:-1:-1;;;;;3571:6:0;2952:10;3718:23;3710:68;;;;-1:-1:-1;;;3710:68:0;;;;;;;:::i;:::-;16514:5:::1;16492:19;:27:::0;;;16530:19:::1;:27:::0;;;16568:17:::1;:25:::0;16438:163::o;9212:114::-;9260:7;9313:11;;9293:17;;9277:13;:11;:13::i;9332:113::-;9377:7;9432:11;;9410:19;;9394:13;:11;:13::i;8657:139::-;8735:4;8742:40;8752:10;8764:9;8775:6;8742:9;:40::i;16609:348::-;16660:14;:21;;-1:-1:-1;;;;16660:21:0;-1:-1:-1;;;16660:21:0;;;16708:6;;:16;;;-1:-1:-1;;;16708:16:0;;;;-1:-1:-1;;;;;16708:6:0;;;;:14;;:16;;;;;;;;;;;;;;;:6;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;16699:37:0;;16745:4;16752:6;;;;;;;;;-1:-1:-1;;;;;16752:6:0;-1:-1:-1;;;;;16752:11:0;;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;16699:67;;-1:-1:-1;;;;;;16699:67:0;;;;;;;-1:-1:-1;;;;;4595:15:1;;;16699:67:0;;;4577:34:1;4647:15;;4627:18;;;4620:43;4512:18;;16699:67:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;16692:4;:74;;-1:-1:-1;;;;;;16692:74:0;-1:-1:-1;;;;;16692:74:0;;;;;;16809:6;;16777:53;;16794:4;;16809:6;-1:-1:-1;;16777:8:0;:53::i;:::-;16841:6;;-1:-1:-1;;;;;16841:6:0;:22;16871:9;16890:4;16896:24;16890:4;-1:-1:-1;;;;;8631:18:0;8614:7;8631:18;;;:9;:18;;;;;;;8548:103;16896:24;16921:1;16923;16925:7;3544;3571:6;-1:-1:-1;;;;;3571:6:0;;3498:87;16925:7;16933:15;16841:108;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;16609:348::o;14274:315::-;3544:7;3571:6;-1:-1:-1;;;;;3571:6:0;2952:10;3718:23;3710:68;;;;-1:-1:-1;;;3710:68:0;;;;;;;:::i;:::-;14403:10:::1;:24:::0;;;14445:12:::1;::::0;:53:::1;::::0;14490:6:::1;::::0;14445:32:::1;::::0;14462:14;14445:16:::1;:32::i;:::-;:36:::0;::::1;:53::i;:::-;14429:13;:69:::0;14527:12:::1;::::0;:54:::1;::::0;14573:6:::1;::::0;14527:33:::1;::::0;14544:15;14527:16:::1;:33::i;:54::-;14510:14;:71:::0;-1:-1:-1;;;14274:315:0:o;4407:201::-;3544:7;3571:6;-1:-1:-1;;;;;3571:6:0;2952:10;3718:23;3710:68;;;;-1:-1:-1;;;3710:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;4496:22:0;::::1;4488:73;;;::::0;-1:-1:-1;;;4488:73:0;;5799:2:1;4488:73:0::1;::::0;::::1;5781:21:1::0;5838:2;5818:18;;;5811:30;5877:34;5857:18;;;5850:62;-1:-1:-1;;;5928:18:1;;;5921:36;5974:19;;4488:73:0::1;5597:402:1::0;4488:73:0::1;4572:28;4591:8;4572:18;:28::i;:::-;4407:201:::0;:::o;16095:335::-;-1:-1:-1;;;;;16188:19:0;;16180:68;;;;-1:-1:-1;;;16180:68:0;;6206:2:1;16180:68:0;;;6188:21:1;6245:2;6225:18;;;6218:30;6284:34;6264:18;;;6257:62;-1:-1:-1;;;6335:18:1;;;6328:34;6379:19;;16180:68:0;6004:400:1;16180:68:0;-1:-1:-1;;;;;16267:21:0;;16259:68;;;;-1:-1:-1;;;16259:68:0;;6611:2:1;16259:68:0;;;6593:21:1;6650:2;6630:18;;;6623:30;6689:34;6669:18;;;6662:62;-1:-1:-1;;;6740:18:1;;;6733:32;6782:19;;16259:68:0;6409:398:1;16259:68:0;-1:-1:-1;;;;;16338:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;16390:32;;1361:25:1;;;16390:32:0;;1334:18:1;16390:32:0;;;;;;;16095:335;;;:::o;267:82::-;325:7;342:5;346:1;342;:5;:::i;10095:686::-;10184:37;10195:6;10203:9;10214:6;10184:10;:37::i;:::-;10232:38;10252:6;10260:9;10232:19;:38::i;:::-;10281:41;10296:6;10304:9;10315:6;10281:14;:41::i;:::-;10334:35;10351:6;10359:9;10334:16;:35::i;:::-;10380:39;10393:6;10401:9;10412:6;10380:12;:39::i;:::-;10431:35;10440:6;10448:9;10459:6;10431:8;:35::i;:::-;-1:-1:-1;;;;;10497:17:0;;;;;;:9;:17;;;;;;:29;;10519:6;10497:21;:29::i;:::-;-1:-1:-1;;;;;10477:17:0;;;;;;:9;:17;;;;;:49;;;;10562:32;10487:6;10584:9;10562:13;:32::i;:::-;:78;;10634:6;10562:78;;;10597:34;10605:6;10613:9;10624:6;10597:7;:34::i;:::-;-1:-1:-1;;;;;10674:20:0;;;;;;:9;:20;;;;;;10537:103;;-1:-1:-1;10674:40:0;;10537:103;10674:24;:40::i;:::-;-1:-1:-1;;;;;10651:20:0;;;;;;;:9;:20;;;;;;;:63;;;;10730:43;;;;;;;;;;10758:14;1361:25:1;;1349:2;1334:18;;1215:177;10730:43:0;;;;;;;;10173:608;10095:686;;;:::o;1480:162::-;1566:7;1612:12;1604:6;;;;1596:29;;;;-1:-1:-1;;;1596:29:0;;;;;;;;:::i;:::-;-1:-1:-1;;;1634:5:0;;;1480:162::o;4768:191::-;4842:16;4861:6;;-1:-1:-1;;;;;4878:17:0;;;-1:-1:-1;;;;;;4878:17:0;;;;;;4911:40;;4861:6;;;;;;;4911:40;;4842:16;4911:40;4831:128;4768:191;:::o;355:82::-;413:7;430:5;434:1;430;:5;:::i;443:82::-;501:7;518:5;522:1;518;:5;:::i;9648:439::-;-1:-1:-1;;;;;9752:20:0;;9744:70;;;;-1:-1:-1;;;9744:70:0;;7147:2:1;9744:70:0;;;7129:21:1;7186:2;7166:18;;;7159:30;7225:34;7205:18;;;7198:62;-1:-1:-1;;;7276:18:1;;;7269:35;7321:19;;9744:70:0;6945:401:1;9744:70:0;-1:-1:-1;;;;;9833:23:0;;9825:71;;;;-1:-1:-1;;;9825:71:0;;7553:2:1;9825:71:0;;;7535:21:1;7592:2;7572:18;;;7565:30;7631:34;7611:18;;;7604:62;-1:-1:-1;;;7682:18:1;;;7675:33;7725:19;;9825:71:0;7351:399:1;9825:71:0;9932:1;9915:6;:19;9907:73;;;;-1:-1:-1;;;9907:73:0;;7957:2:1;9907:73:0;;;7939:21:1;7996:2;7976:18;;;7969:30;8035:34;8015:18;;;8008:62;-1:-1:-1;;;8086:18:1;;;8079:39;8135:19;;9907:73:0;7755:405:1;9907:73:0;-1:-1:-1;;;;;8631:18:0;;8614:7;8631:18;;;:9;:18;;;;;;9999:6;:27;;9991:88;;;;-1:-1:-1;;;9991:88:0;;8367:2:1;9991:88:0;;;8349:21:1;8406:2;8386:18;;;8379:30;8445:34;8425:18;;;8418:62;-1:-1:-1;;;8496:18:1;;;8489:47;8553:19;;9991:88:0;8165:413:1;10789:191:0;-1:-1:-1;;;;;10882:19:0;;;;;;:11;:19;;;;;;;;10881:20;:47;;;;-1:-1:-1;;;;;;10906:22:0;;;;;;:11;:22;;;;;;;;10905:23;10881:47;10878:95;;;10938:14;;-1:-1:-1;;;10938:14:0;;;;10930:41;;;;-1:-1:-1;;;10930:41:0;;8785:2:1;10930:41:0;;;8767:21:1;8824:2;8804:18;;;8797:30;-1:-1:-1;;;8843:18:1;;;8836:44;8897:18;;10930:41:0;8583:338:1;10930:41:0;10789:191;;:::o;10992:333::-;-1:-1:-1;;;;;11096:19:0;;;;;;:11;:19;;;;;;;;11095:20;:47;;;;-1:-1:-1;;;;;;11120:22:0;;;;;;:11;:22;;;;;;;;11119:23;11095:47;:77;;;;-1:-1:-1;11167:4:0;;-1:-1:-1;;;;;11146:26:0;;;11167:4;;11146:26;;11095:77;:107;;;;-1:-1:-1;;;;;;11176:26:0;;7677:42;11176:26;;11095:107;11092:226;;;11264:17;:15;:17::i;:::-;-1:-1:-1;;;;;11227:20:0;;;;;;:9;:20;;;;;;:32;;11252:6;11227:24;:32::i;:::-;11226:55;;11218:98;;;;-1:-1:-1;;;11218:98:0;;9128:2:1;11218:98:0;;;9110:21:1;9167:2;9147:18;;;9140:30;9206:32;9186:18;;;9179:60;9256:18;;11218:98:0;8926:354:1;11333:302:0;11427:4;;-1:-1:-1;;;;;11417:14:0;;;11427:4;;11417:14;:40;;;;-1:-1:-1;;;;;;11435:22:0;;;;;;:11;:22;;;;;;;;11417:40;11414:101;;;11471:18;;-1:-1:-1;;;;;11471:18:0;;;11511:1;11459:31;;;:11;:31;;;;;;;;:42;;;;;;;;;-1:-1:-1;;11459:54:0;;11414:101;11541:4;;-1:-1:-1;;;;;11528:17:0;;;11541:4;;11528:17;:41;;;;-1:-1:-1;;;;;;11550:19:0;;;;;;:11;:19;;;;;;;;11549:20;11528:41;11525:103;;;11592:1;11571:9;;:23;;;;;;;:::i;:::-;;;;-1:-1:-1;;11596:18:0;:30;;-1:-1:-1;;;;;11596:30:0;;-1:-1:-1;;;;;;11596:30:0;;;;;;11333:302;;:::o;11643:349::-;11754:4;;-1:-1:-1;;;;;11744:14:0;;;11754:4;;11744:14;11741:130;;11778:20;:18;:20::i;:::-;11768:6;:30;;:53;;;-1:-1:-1;;;;;;11802:19:0;;;;;;:11;:19;;;;;;;;11768:53;:79;;;-1:-1:-1;;;;;;11825:22:0;;;;;;:11;:22;;;;;;;;11768:79;11760:109;;;;-1:-1:-1;;;11760:109:0;;9617:2:1;11760:109:0;;;9599:21:1;9656:2;9636:18;;;9629:30;-1:-1:-1;;;9675:18:1;;;9668:47;9732:18;;11760:109:0;9415:341:1;11760:109:0;11899:14;:12;:14::i;:::-;11889:6;:24;;:47;;;-1:-1:-1;;;;;;11917:19:0;;;;;;:11;:19;;;;;;;;11889:47;:73;;;-1:-1:-1;;;;;;11940:22:0;;;;;;:11;:22;;;;;;;;11889:73;11881:103;;;;-1:-1:-1;;;11881:103:0;;9617:2:1;11881:103:0;;;9599:21:1;9656:2;9636:18;;;9629:30;-1:-1:-1;;;9675:18:1;;;9668:47;9732:18;;11881:103:0;9415:341:1;14597:197:0;14689:41;14704:6;14712:9;14723:6;14689:14;:41::i;:::-;14686:101;;;14732:29;14747:13;;14732:14;:29::i;:::-;14783:1;14763:9;:22;14597:197;;;:::o;14802:160::-;-1:-1:-1;;;;;14908:19:0;;14883:4;14908:19;;;:11;:19;;;;;;;;14907:20;:47;;;;-1:-1:-1;;;;;;;14932:22:0;;;;;:11;:22;;;;;;;;14931:23;;14802:160;-1:-1:-1;14802:160:0:o;15224:546::-;15310:7;15366:1;15333:30;15345:6;15353:9;15333:11;:30::i;:::-;:34;15330:418;;;15379:17;15399:59;15427:30;15439:6;15447:9;15427:11;:30::i;:::-;15410:11;;15399:23;;:6;;:10;:23::i;:::-;:27;;:59::i;:::-;15514:4;15496:24;;;;:9;:24;;;;;;15379:79;;-1:-1:-1;15496:39:0;;15379:79;15496:28;:39::i;:::-;15487:4;15469:24;;;;:9;:24;;;;;;;:66;;;;15551:42;;-1:-1:-1;;;;;15551:42:0;;;;;;;15583:9;1361:25:1;;1349:2;1334:18;;1215:177;15551:42:0;;;;;;;;15607:7;;:20;15604:104;;15629:77;15647:4;7677:42;15669:36;15697:7;;15669:23;15680:11;;15669:6;:10;;:23;;;;:::i;:36::-;15629:9;:77::i;:::-;15725:21;:6;15736:9;15725:10;:21::i;:::-;15718:28;;;;;15330:418;-1:-1:-1;15756:6:0;15224:546;-1:-1:-1;;15224:546:0:o;179:82::-;237:7;254:5;258:1;254;:5;:::i;13867:399::-;14008:14;;14083:13;;14073:4;13965;8631:18;;;:9;:18;;;;;;14115:8;;13965:4;;13998:24;;;;-1:-1:-1;14055:41:0;;14115:8;;14114:9;:24;;;;-1:-1:-1;14127:11:0;;;;14114:24;:42;;;;-1:-1:-1;14142:14:0;;-1:-1:-1;;;14142:14:0;;;;14114:42;:54;;;;;14160:8;14114:54;:78;;;;-1:-1:-1;;;;;;14173:19:0;;;;;;:11;:19;;;;;;;;14172:20;14114:78;:99;;;;-1:-1:-1;14209:4:0;;-1:-1:-1;;;;;14196:17:0;;;14209:4;;14196:17;14114:99;:126;;;;;14230:10;;14217:9;;:23;;14114:126;:144;;;;;14244:14;14114:144;14107:151;13867:399;-1:-1:-1;;;;;;13867:399:0:o;12000:1066::-;7598:8;:15;;-1:-1:-1;;7598:15:0;7609:4;7598:15;;;;;;12137:14:::1;::::0;12119:12:::1;::::0;12095::::1;::::0;7598:8;;12094:66:::1;::::0;12158:1:::1;::::0;12095:57:::1;::::0;12137:14;;12095:37:::1;::::0;;;:16:::1;:19::i;:::-;:23:::0;::::1;:37::i;12094:66::-;12071:89;;12171:32;12206:42;12235:12;12206:24;12217:12;;12206:6;:10;;:24;;;;:::i;:42::-;12171:77:::0;-1:-1:-1;12259:14:0::1;12276:36;:6:::0;12171:77;12276:10:::1;:36::i;:::-;12259:53:::0;-1:-1:-1;12348:21:0::1;12380:24;12259:53:::0;12380:16:::1;:24::i;:::-;12415:20;12438:41;:21;12464:14:::0;12438:25:::1;:41::i;:::-;12415:64;;12490:19;12511:48;12528:30;12545:12;;12528;:16;;:30;;;;:::i;:::-;12511:12:::0;;:16:::1;:48::i;:::-;12490:69;;12570:29;12602;12618:12;;12602:11;:15;;:29;;;;:::i;:::-;12570:61:::0;-1:-1:-1;12645:34:0;;12642:103:::1;;12681:61;12694:24;12720:21;12681:12;:61::i;:::-;12801:12;::::0;12755:20:::1;::::0;12778:36:::1;::::0;:18:::1;:11:::0;12794:1:::1;12778:15;:18::i;:36::-;12755:59:::0;-1:-1:-1;12828:16:0;;12825:73:::1;;12854:18;::::0;12846:50:::1;::::0;-1:-1:-1;;;;;12854:18:0;;::::1;::::0;12846:50;::::1;;;::::0;12883:12;;12854:18:::1;12846:50:::0;12854:18;12846:50;12883:12;12854:18;12846:50;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;12825:73;12935:21;12970:29:::0;;12967:92:::1;;13009:20;::::0;13001:56:::1;::::0;-1:-1:-1;;;;;13009:20:0;;::::1;::::0;13001:56;::::1;;;::::0;13040:16;;13009:20:::1;13001:56:::0;13009:20;13001:56;13040:16;13009:20;13001:56;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;12967:92;-1:-1:-1::0;;7618:8:0;:16;;-1:-1:-1;;7618:16:0;;;-1:-1:-1;;;;;;;;12000:1066:0:o;14970:246::-;15085:4;;15049:7;;-1:-1:-1;;;;;15085:4:0;;;15072:17;;;;15069:65;;15098:7;;:34;;15110:21;15098:11;:34::i;:::-;15091:41;;;;15069:65;15157:4;;-1:-1:-1;;;;;15157:4:0;;;15147:14;;;;15144:36;;-1:-1:-1;15170:8:0;;15163:15;;15144:36;-1:-1:-1;15197:11:0;;14970:246;;;;:::o;13425:434::-;13515:16;;;13529:1;13515:16;;;;;;;;13491:21;;13515:16;;;;;;;;;;-1:-1:-1;13515:16:0;13491:40;;13560:4;13542;13547:1;13542:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;13542:23:0;;;:7;;;;;;;;;;:23;;;;13586:6;;:13;;;-1:-1:-1;;;13586:13:0;;;;:6;;;;;:11;;:13;;;;;13542:7;;13586:13;;;;;:6;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13576:4;13581:1;13576:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;13576:23:0;;;:7;;;;;;;;;:23;13642:6;;13610:53;;13627:4;;13642:6;13651:11;13610:8;:53::i;:::-;13674:6;;:177;;-1:-1:-1;;;13674:177:0;;-1:-1:-1;;;;;13674:6:0;;;;:57;;:177;;13746:11;;13674:6;;13788:4;;13815;;13835:15;;13674:177;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13480:379;13425:434;:::o;13074:343::-;13187:6;;13155:53;;13172:4;;-1:-1:-1;;;;;13187:6:0;13196:11;13155:8;:53::i;:::-;13219:6;;13360:18;;13219:190;;-1:-1:-1;;;13219:190:0;;-1:-1:-1;;;;;13219:6:0;;;;:22;;13249:9;;13219:190;;13282:4;;13302:11;;13219:6;;;;13360:18;;13393:15;;13219:190;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;13074:343;;:::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;567:131::-;-1:-1:-1;;;;;642:31:1;;632:42;;622:70;;688:1;685;678:12;703:315;771:6;779;832:2;820:9;811:7;807:23;803:32;800:52;;;848:1;845;838:12;800:52;887:9;874:23;906:31;931:5;906:31;:::i;:::-;956:5;1008:2;993:18;;;;980:32;;-1:-1:-1;;;703:315:1:o;1397:456::-;1474:6;1482;1490;1543:2;1531:9;1522:7;1518:23;1514:32;1511:52;;;1559:1;1556;1549:12;1511:52;1598:9;1585:23;1617:31;1642:5;1617:31;:::i;:::-;1667:5;-1:-1:-1;1724:2:1;1709:18;;1696:32;1737:33;1696:32;1737:33;:::i;:::-;1397:456;;1789:7;;-1:-1:-1;;;1843:2:1;1828:18;;;;1815:32;;1397:456::o;2047:247::-;2106:6;2159:2;2147:9;2138:7;2134:23;2130:32;2127:52;;;2175:1;2172;2165:12;2127:52;2214:9;2201:23;2233:31;2258:5;2233:31;:::i;2507:388::-;2575:6;2583;2636:2;2624:9;2615:7;2611:23;2607:32;2604:52;;;2652:1;2649;2642:12;2604:52;2691:9;2678:23;2710:31;2735:5;2710:31;:::i;:::-;2760:5;-1:-1:-1;2817:2:1;2802:18;;2789:32;2830:33;2789:32;2830:33;:::i;:::-;2882:7;2872:17;;;2507:388;;;;;:::o;2900:316::-;2977:6;2985;2993;3046:2;3034:9;3025:7;3021:23;3017:32;3014:52;;;3062:1;3059;3052:12;3014:52;-1:-1:-1;;3085:23:1;;;3155:2;3140:18;;3127:32;;-1:-1:-1;3206:2:1;3191:18;;;3178:32;;2900:316;-1:-1:-1;2900:316:1:o;3221:127::-;3282:10;3277:3;3273:20;3270:1;3263:31;3313:4;3310:1;3303:15;3337:4;3334:1;3327:15;3353:168;3426:9;;;3457;;3474:15;;;3468:22;;3454:37;3444:71;;3495:18;;:::i;3526:217::-;3566:1;3592;3582:132;;3636:10;3631:3;3627:20;3624:1;3617:31;3671:4;3668:1;3661:15;3699:4;3696:1;3689:15;3582:132;-1:-1:-1;3728:9:1;;3526:217::o;3748:356::-;3950:2;3932:21;;;3969:18;;;3962:30;4028:34;4023:2;4008:18;;4001:62;4095:2;4080:18;;3748:356::o;4109:251::-;4179:6;4232:2;4220:9;4211:7;4207:23;4203:32;4200:52;;;4248:1;4245;4238:12;4200:52;4280:9;4274:16;4299:31;4324:5;4299:31;:::i;4674:607::-;-1:-1:-1;;;;;5033:15:1;;;5015:34;;5080:2;5065:18;;5058:34;;;;5123:2;5108:18;;5101:34;;;;5166:2;5151:18;;5144:34;;;;5215:15;;;5209:3;5194:19;;5187:44;4995:3;5247:19;;5240:35;;;;4964:3;4949:19;;4674:607::o;5286:306::-;5374:6;5382;5390;5443:2;5431:9;5422:7;5418:23;5414:32;5411:52;;;5459:1;5456;5449:12;5411:52;5488:9;5482:16;5472:26;;5538:2;5527:9;5523:18;5517:25;5507:35;;5582:2;5571:9;5567:18;5561:25;5551:35;;5286:306;;;;;:::o;6812:128::-;6879:9;;;6900:11;;;6897:37;;;6914:18;;:::i;9285:125::-;9350:9;;;9371:10;;;9368:36;;;9384:18;;:::i;9893:127::-;9954:10;9949:3;9945:20;9942:1;9935:31;9985:4;9982:1;9975:15;10009:4;10006:1;9999:15;10025:980;10287:4;10335:3;10324:9;10320:19;10366:6;10355:9;10348:25;10392:2;10430:6;10425:2;10414:9;10410:18;10403:34;10473:3;10468:2;10457:9;10453:18;10446:31;10497:6;10532;10526:13;10563:6;10555;10548:22;10601:3;10590:9;10586:19;10579:26;;10640:2;10632:6;10628:15;10614:29;;10661:1;10671:195;10685:6;10682:1;10679:13;10671:195;;;10750:13;;-1:-1:-1;;;;;10746:39:1;10734:52;;10841:15;;;;10806:12;;;;10782:1;10700:9;10671:195;;;-1:-1:-1;;;;;;;10922:32:1;;;;10917:2;10902:18;;10895:60;-1:-1:-1;;;10986:3:1;10971:19;10964:35;10883:3;10025:980;-1:-1:-1;;;10025:980:1:o

Swarm Source

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