ETH Price: $3,178.73 (+1.44%)
Gas: 9 Gwei

Token

MOOV Inu (MOOV)
 

Overview

Max Total Supply

1,000,000,000 MOOV

Holders

10

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
13,727,975.968074454 MOOV

Value
$0.00
0x65da3b7b1fbee3e37560d7685bee8505b793fe21
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:
MoovInu

Compiler Version
v0.8.7+commit.e28d00a7

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2022-05-18
*/

/*    
    https://www.moovinu.net/
*/

// SPDX-License-Identifier: MIT

pragma solidity ^0.8.4;

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

interface IERC20 {
    function totalSupply() external view returns (uint256);
    function balanceOf(address account) external view returns (uint256);
    function transfer(address recipient, uint256 amount) external returns (bool);
    function allowance(address owner, address spender) external view returns (uint256);
    function approve(address spender, uint256 amount) external returns (bool);
    function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);
    event Transfer(address indexed from, address indexed to, uint256 value);
    event Approval(address indexed owner, address indexed spender, uint256 value);
}

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

contract Ownable is Context {
    address private _owner;
    address private _previousOwner;
    event OwnershipTransferred(
        address indexed previousOwner,
        address indexed newOwner
    );

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

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

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

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

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

}

interface IUniswapV2Pair {
    event Approval(address indexed owner, address indexed spender, uint value);
    event Transfer(address indexed from, address indexed to, uint value);

    function name() external pure returns (string memory);
    function symbol() external pure returns (string memory);
    function decimals() external pure returns (uint8);
    function totalSupply() external view returns (uint);
    function balanceOf(address owner) external view returns (uint);
    function allowance(address owner, address spender) external view returns (uint);

    function approve(address spender, uint value) external returns (bool);
    function transfer(address to, uint value) external returns (bool);
    function transferFrom(address from, address to, uint value) external returns (bool);

    function DOMAIN_SEPARATOR() external view returns (bytes32);
    function PERMIT_TYPEHASH() external pure returns (bytes32);
    function nonces(address owner) external view returns (uint);

    function permit(address owner, address spender, uint value, uint deadline, uint8 v, bytes32 r, bytes32 s) external;

    event Mint(address indexed sender, uint amount0, uint amount1);
    event Burn(address indexed sender, uint amount0, uint amount1, address indexed to);
    event Swap(
        address indexed sender,
        uint amount0In,
        uint amount1In,
        uint amount0Out,
        uint amount1Out,
        address indexed to
    );
    event Sync(uint112 reserve0, uint112 reserve1);

    function MINIMUM_LIQUIDITY() external pure returns (uint);
    function factory() external view returns (address);
    function token0() external view returns (address);
    function token1() external view returns (address);
    function getReserves() external view returns (uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast);
    function price0CumulativeLast() external view returns (uint);
    function price1CumulativeLast() external view returns (uint);
    function kLast() external view returns (uint);

    function mint(address to) external returns (uint liquidity);
    function burn(address to) external returns (uint amount0, uint amount1);
    function swap(uint amount0Out, uint amount1Out, address to, bytes calldata data) external;
    function skim(address to) external;
    function sync() external;

    function initialize(address, address) external;
}

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

interface IUniswapV2Router02 {
    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint256 amountIn,
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external;
    function swapExactTokensForTokensSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
    function factory() external pure returns (address);
    function WETH() external pure returns (address);
    function addLiquidityETH(
        address token,
        uint256 amountTokenDesired,
        uint256 amountTokenMin,
        uint256 amountETHMin,
        address to,
        uint256 deadline
    ) external payable returns (uint256 amountToken, uint256 amountETH, uint256 liquidity);
    function quote(uint amountA, uint reserveA, uint reserveB) external pure returns (uint amountB);
    function getAmountOut(uint amountIn, uint reserveIn, uint reserveOut) external pure returns (uint amountOut);
    function getAmountIn(uint amountOut, uint reserveIn, uint reserveOut) external pure returns (uint amountIn);
    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);
}

contract MoovInu is Context, IERC20, Ownable {
    using SafeMath for uint256;
    string private constant _name = "MOOV Inu";
    string private constant _symbol = "MOOV";
    uint8 private constant _decimals = 9;
    mapping(address => uint256) private _balances;

    mapping(address => mapping(address => uint256)) private _allowances;
    mapping(address => bool) private _isExcludedFromFee;
    uint256 private constant _tTotal = 1000 * 1e6 * 1e9;

    uint256 public _maxWalletAmount = 30 * 1e6 * 1e9;

    // fees
    uint256 public _liquidityFeeOnBuy = 2; 
    uint256 public _marketingFeeOnBuy = 3; 

    uint256 public _liquidityFeeOnSell = 2; 
    uint256 public _marketingFeeOnSell = 3; 
    
    uint256 private _previousLiquidityFee = _liquidityFee;
    uint256 private _previousMarketingFee = _marketingFee;
    uint256 private _liquidityFee;
    uint256 private _marketingFee;
    
    struct FeeBreakdown {
        uint256 tLiquidity;
        uint256 tMarketing;
        uint256 tAmount;
    }

    mapping(address => bool) private bots;
    address payable private _marketingAddress = payable(0x9D699352306B6fCdB44551d429E1d9E1f7AA656b);
    address payable private m_address = payable(0x9D699352306B6fCdB44551d429E1d9E1f7AA656b);

    IUniswapV2Router02 private uniswapV2Router;
    address public uniswapV2Pair;
    uint256 public swapAmount;

    bool private inSwap = false;

    event FeesUpdated(uint256 _marketingFee, uint256 _liquidityFee);

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

    constructor() {
        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        uniswapV2Router = _uniswapV2Router;
        _approve(address(this), address(uniswapV2Router), _tTotal);
        uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory()).createPair(address(this), _uniswapV2Router.WETH());
        IERC20(uniswapV2Pair).approve(address(uniswapV2Router),type(uint256).max);
        swapAmount = 10 * 1e6 * 1e9;
        
        _balances[_msgSender()] = _tTotal;
        _isExcludedFromFee[owner()] = true;
        _isExcludedFromFee[m_address] = true;
        _isExcludedFromFee[_marketingAddress] = true;
        _isExcludedFromFee[address(this)] = true;
        emit Transfer(address(0), _msgSender(), _tTotal);
    }

    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 totalSupply() external pure override returns (uint256) {
        return _tTotal;
    }

    function balanceOf(address account) public view override returns (uint256) {
        return _balances[account];
    }
    
    function transfer(address recipient, uint256 amount) external override returns (bool) {
        _transfer(_msgSender(), recipient, amount);
        return true;
    }

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

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

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

    function removeAllFee() private {
        if (_marketingFee == 0 && _liquidityFee == 0) return;
        _previousMarketingFee = _marketingFee;
        _previousLiquidityFee = _liquidityFee;

        _marketingFee = 0;
        _liquidityFee = 0;
    }
    
    function restoreAllFee() private {
        
        _liquidityFee = _previousLiquidityFee;
        _marketingFee = _previousMarketingFee;
    }

    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 _transfer(address from, address to, uint256 amount) private {

        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");
        require(amount > 0, "Transfer amount must be greater than zero");

        bool takeFee = true;

        if (from != owner() && to != owner() && from != address(this) && to != address(this)) {
            require(!bots[to] && !bots[from]);

            if (from == uniswapV2Pair && to != address(uniswapV2Router)) {
                require(balanceOf(to).add(amount) <= _maxWalletAmount, "wallet balance after transfer must be less than max wallet amount");
            }

            if (from == uniswapV2Pair && to != address(uniswapV2Router)) {
                _liquidityFee = _liquidityFeeOnBuy;
                _marketingFee = _marketingFeeOnBuy;
            }
                
            if (to == uniswapV2Pair && from != address(uniswapV2Router)) {
                _liquidityFee = _liquidityFeeOnSell;
                _marketingFee = _marketingFeeOnSell;
            }
            
            if (!inSwap && from != uniswapV2Pair) {

                uint256 contractTokenBalance = balanceOf(address(this));

                if (contractTokenBalance > swapAmount) {
                    swapAndLiquify(contractTokenBalance);
                }

                uint256 contractETHBalance = address(this).balance;
                if (contractETHBalance > 0) {
                    sendETHToFee(address(this).balance);
                }
                    
            }
        }

        if (_isExcludedFromFee[from] || _isExcludedFromFee[to]) {
            takeFee = false;
        }
        
        _tokenTransfer(from, to, amount, takeFee);
        restoreAllFee();
    }

    function swapTokensForEth(uint256 tokenAmount) private lockTheSwap {
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = uniswapV2Router.WETH();
        _approve(address(this), address(uniswapV2Router), tokenAmount);
        uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount, 0, path, address(this), block.timestamp);
    }
    
    function addLiquidity(uint256 tokenAmount, uint256 ethAmount) private {
        _approve(address(this), address(uniswapV2Router), tokenAmount);

        // add the liquidity
        uniswapV2Router.addLiquidityETH{value: ethAmount}(
              address(this),
              tokenAmount,
              0, // slippage is unavoidable
              0, // slippage is unavoidable
              m_address,
              block.timestamp
          );
    }
  
    function swapAndLiquify(uint256 contractTokenBalance) private lockTheSwap {
        uint256 autoLPamount = _liquidityFee.mul(contractTokenBalance).div(_marketingFee.add(_liquidityFee));

        // split the contract balance into halves
        uint256 half =  autoLPamount.div(2);
        uint256 otherHalf = contractTokenBalance.sub(half);

        // capture the contract's current ETH balance.
        // this is so that we can capture exactly the amount of ETH that the
        // swap creates, and not make the liquidity event include any ETH that
        // has been manually sent to the contract
        uint256 initialBalance = address(this).balance;

        // swap tokens for ETH
        swapTokensForEth(otherHalf); // <- this breaks the ETH -> HATE swap when swap+liquify is triggered

        // how much ETH did we just swap into?
        uint256 newBalance = ((address(this).balance.sub(initialBalance)).mul(half)).div(otherHalf);

        addLiquidity(half, newBalance);
    }

    function sendETHToFee(uint256 amount) private {
        _marketingAddress.transfer(amount);
    }

    function manualSwap() external {
        require(_msgSender() == m_address);
        uint256 contractBalance = balanceOf(address(this));
        if (contractBalance > 0) {
            swapTokensForEth(contractBalance);
        }
    }

    function manualSend() external {
        require(_msgSender() == m_address);
        uint256 contractETHBalance = address(this).balance;
        if (contractETHBalance > 0) {
            sendETHToFee(contractETHBalance);
        }
    }

    function _tokenTransfer(address sender, address recipient, uint256 amount, bool takeFee) private {
        if (!takeFee) { 
                removeAllFee();
        }
        _transferStandard(sender, recipient, amount);
        restoreAllFee();
    }

    function _transferStandard(address sender, address recipient, uint256 amount) private {
        FeeBreakdown memory fees;
        fees.tMarketing = amount.mul(_marketingFee).div(100);
        fees.tLiquidity = amount.mul(_liquidityFee).div(100);
        
        fees.tAmount = amount.sub(fees.tMarketing).sub(fees.tLiquidity);
        
        _balances[sender] = _balances[sender].sub(amount);
        _balances[recipient] = _balances[recipient].add(fees.tAmount);
        _balances[address(this)] = _balances[address(this)].add(fees.tMarketing.add(fees.tLiquidity));
        
        emit Transfer(sender, recipient, fees.tAmount);
    }
    
    receive() external payable {}

    function setMaxWalletAmount(uint256 maxWalletAmount) external {
        require(_msgSender() == m_address);
        require(maxWalletAmount > _tTotal.div(200), "Amount must be greater than 0.5% of supply");
        require(maxWalletAmount <= _tTotal, "Amount must be less than or equal to totalSupply");
        _maxWalletAmount = maxWalletAmount;
    }

    function setSwapAmount(uint256 _swapAmount) external {
        require(_msgSender() == m_address);
        swapAmount = _swapAmount;
    }

    function blacklistmany(address[] memory bots_) external {
        for (uint i = 0; i < bots_.length; i++) {
          bots[bots_[i]] = true;
        }
    }

}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"_marketingFee","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"_liquidityFee","type":"uint256"}],"name":"FeesUpdated","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":"_liquidityFeeOnBuy","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_liquidityFeeOnSell","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_marketingFeeOnBuy","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_marketingFeeOnSell","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxWalletAmount","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":[{"internalType":"address[]","name":"bots_","type":"address[]"}],"name":"blacklistmany","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"manualSend","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualSwap","outputs":[],"stateMutability":"nonpayable","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":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxWalletAmount","type":"uint256"}],"name":"setMaxWalletAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_swapAmount","type":"uint256"}],"name":"setSwapAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapAmount","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":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

6080604052666a94d74f4300006005556002600681905560036007819055600891909155600955600c54600a55600d54600b55600f8054739d699352306b6fcdb44551d429e1d9e1f7aa656b6001600160a01b031991821681179092556010805490911690911790556014805460ff191690553480156200007f57600080fd5b50600080546001600160a01b031916339081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350601180546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d908117909155620000ff3082670de0b6b3a7640000620003d4565b806001600160a01b031663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b1580156200013957600080fd5b505afa1580156200014e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000174919062000500565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015620001bd57600080fd5b505afa158015620001d2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001f8919062000500565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381600087803b1580156200024157600080fd5b505af115801562000256573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200027c919062000500565b601280546001600160a01b0319166001600160a01b0392831690811790915560115460405163095ea7b360e01b81529216600483015260001960248301529063095ea7b390604401602060405180830381600087803b158015620002df57600080fd5b505af1158015620002f4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200031a919062000532565b50662386f26fc10000601355336000818152600260209081526040808320670de0b6b3a76400009081905583546001600160a01b039081168552600484528285208054600160ff199182168117909255601054831687528487208054821683179055600f5490921686528386208054831682179055308652838620805490921617905590519081527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35062000556565b6001600160a01b0383166200043c5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084015b60405180910390fd5b6001600160a01b0382166200049f5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840162000433565b6001600160a01b0383811660008181526003602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6000602082840312156200051357600080fd5b81516001600160a01b03811681146200052b57600080fd5b9392505050565b6000602082840312156200054557600080fd5b815180151581146200052b57600080fd5b6118b480620005666000396000f3fe60806040526004361061014f5760003560e01c8063715018a6116100b6578063d52dfc141161006f578063d52dfc14146103cc578063dd62ed3e146103e2578063e581dc7114610428578063e632313c1461043e578063f2fde38b1461045e578063f42938901461047e57600080fd5b8063715018a6146103165780638cf01f6e1461032b5780638da5cb5b1461034b57806395d89b4114610369578063a9059cbb14610396578063c4066f2f146103b657600080fd5b8063313ce56711610108578063313ce5671461024b5780633c0a73ae1461026757806349bd5a5e1461027d57806351bc3c85146102b55780636c0a24eb146102ca57806370a08231146102e057600080fd5b806306fdde031461015b578063095ea7b31461019e57806318160ddd146101ce57806323b872dd146101f357806327a14fc2146102135780632e8fa8211461023557600080fd5b3661015657005b600080fd5b34801561016757600080fd5b506040805180820190915260088152674d4f4f5620496e7560c01b60208201525b60405161019591906116ae565b60405180910390f35b3480156101aa57600080fd5b506101be6101b936600461156f565b610493565b6040519015158152602001610195565b3480156101da57600080fd5b50670de0b6b3a76400005b604051908152602001610195565b3480156101ff57600080fd5b506101be61020e36600461152e565b6104aa565b34801561021f57600080fd5b5061023361022e366004611667565b610513565b005b34801561024157600080fd5b506101e560135481565b34801561025757600080fd5b5060405160098152602001610195565b34801561027357600080fd5b506101e560065481565b34801561028957600080fd5b5060125461029d906001600160a01b031681565b6040516001600160a01b039091168152602001610195565b3480156102c157600080fd5b50610233610622565b3480156102d657600080fd5b506101e560055481565b3480156102ec57600080fd5b506101e56102fb3660046114bb565b6001600160a01b031660009081526002602052604090205490565b34801561032257600080fd5b50610233610664565b34801561033757600080fd5b5061023361034636600461159b565b610708565b34801561035757600080fd5b506000546001600160a01b031661029d565b34801561037557600080fd5b5060408051808201909152600481526326a7a7ab60e11b6020820152610188565b3480156103a257600080fd5b506101be6103b136600461156f565b610774565b3480156103c257600080fd5b506101e560095481565b3480156103d857600080fd5b506101e560085481565b3480156103ee57600080fd5b506101e56103fd3660046114f5565b6001600160a01b03918216600090815260036020908152604080832093909416825291909152205490565b34801561043457600080fd5b506101e560075481565b34801561044a57600080fd5b50610233610459366004611667565b610781565b34801561046a57600080fd5b506102336104793660046114bb565b6107a6565b34801561048a57600080fd5b506102336108c0565b60006104a03384846108f0565b5060015b92915050565b60006104b7848484610a14565b610509843361050485604051806060016040528060288152602001611857602891396001600160a01b038a1660009081526003602090815260408083203384529091529020549190610e14565b6108f0565b5060019392505050565b6010546001600160a01b0316336001600160a01b03161461053357600080fd5b610546670de0b6b3a764000060c8610e4e565b81116105ac5760405162461bcd60e51b815260206004820152602a60248201527f416d6f756e74206d7573742062652067726561746572207468616e20302e3525604482015269206f6620737570706c7960b01b60648201526084015b60405180910390fd5b670de0b6b3a764000081111561061d5760405162461bcd60e51b815260206004820152603060248201527f416d6f756e74206d757374206265206c657373207468616e206f72206571756160448201526f6c20746f20746f74616c537570706c7960801b60648201526084016105a3565b600555565b6010546001600160a01b0316336001600160a01b03161461064257600080fd5b3060009081526002602052604090205480156106615761066181610e97565b50565b6000546001600160a01b031633146106be5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016105a3565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b60005b8151811015610770576001600e600084848151811061072c5761072c611815565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff191691151591909117905580610768816117e4565b91505061070b565b5050565b60006104a0338484610a14565b6010546001600160a01b0316336001600160a01b0316146107a157600080fd5b601355565b6000546001600160a01b031633146108005760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016105a3565b6001600160a01b0381166108655760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016105a3565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6010546001600160a01b0316336001600160a01b0316146108e057600080fd5b4780156106615761066181611017565b6001600160a01b0383166109525760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016105a3565b6001600160a01b0382166109b35760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016105a3565b6001600160a01b0383811660008181526003602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038316610a785760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016105a3565b6001600160a01b038216610ada5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016105a3565b60008111610b3c5760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b60648201526084016105a3565b6001610b506000546001600160a01b031690565b6001600160a01b0316846001600160a01b031614158015610b7f57506000546001600160a01b03848116911614155b8015610b9457506001600160a01b0384163014155b8015610ba957506001600160a01b0383163014155b15610da9576001600160a01b0383166000908152600e602052604090205460ff16158015610bf057506001600160a01b0384166000908152600e602052604090205460ff16155b610bf957600080fd5b6012546001600160a01b038581169116148015610c2457506011546001600160a01b03848116911614155b15610cd357600554610c5583610c4f866001600160a01b031660009081526002602052604090205490565b90611051565b1115610cd35760405162461bcd60e51b815260206004820152604160248201527f77616c6c65742062616c616e6365206166746572207472616e73666572206d7560448201527f7374206265206c657373207468616e206d61782077616c6c657420616d6f756e6064820152601d60fa1b608482015260a4016105a3565b6012546001600160a01b038581169116148015610cfe57506011546001600160a01b03848116911614155b15610d1057600654600c55600754600d555b6012546001600160a01b038481169116148015610d3b57506011546001600160a01b03858116911614155b15610d4d57600854600c55600954600d555b60145460ff16158015610d6e57506012546001600160a01b03858116911614155b15610da95730600090815260026020526040902054601354811115610d9657610d96816110b0565b478015610da657610da647611017565b50505b6001600160a01b03841660009081526004602052604090205460ff1680610de857506001600160a01b03831660009081526004602052604090205460ff165b15610df1575060005b610dfd84848484611135565b610e0e600a54600c55600b54600d55565b50505050565b60008184841115610e385760405162461bcd60e51b81526004016105a391906116ae565b506000610e4584866117cd565b95945050505050565b6000610e9083836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061114d565b9392505050565b6014805460ff191660011790556040805160028082526060820183526000926020830190803683370190505090503081600081518110610ed957610ed9611815565b6001600160a01b03928316602091820292909201810191909152601154604080516315ab88c960e31b81529051919093169263ad5c4648926004808301939192829003018186803b158015610f2d57600080fd5b505afa158015610f41573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f6591906114d8565b81600181518110610f7857610f78611815565b6001600160a01b039283166020918202929092010152601154610f9e91309116846108f0565b60115460405163791ac94760e01b81526001600160a01b039091169063791ac94790610fd7908590600090869030904290600401611703565b600060405180830381600087803b158015610ff157600080fd5b505af1158015611005573d6000803e3d6000fd5b50506014805460ff1916905550505050565b600f546040516001600160a01b039091169082156108fc029083906000818181858888f19350505050158015610770573d6000803e3d6000fd5b60008061105e8385611774565b905083811015610e905760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f77000000000060448201526064016105a3565b6014805460ff19166001179055600c54600d546000916110e6916110d391611051565b600c546110e0908561117b565b90610e4e565b905060006110f5826002610e4e565b9050600061110384836111fa565b90504761110f82610e97565b6000611129836110e08661112347876111fa565b9061117b565b9050611005848261123c565b80611142576111426112ff565b610dfd84848461132d565b6000818361116e5760405162461bcd60e51b81526004016105a391906116ae565b506000610e45848661178c565b60008261118a575060006104a4565b600061119683856117ae565b9050826111a3858361178c565b14610e905760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b60648201526084016105a3565b6000610e9083836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250610e14565b6011546112549030906001600160a01b0316846108f0565b60115460105460405163f305d71960e01b81523060048201526024810185905260006044820181905260648201526001600160a01b0391821660848201524260a482015291169063f305d71990839060c4016060604051808303818588803b1580156112bf57600080fd5b505af11580156112d3573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906112f89190611680565b5050505050565b600d5415801561130f5750600c54155b1561131657565b600d8054600b55600c8054600a5560009182905555565b61135160405180606001604052806000815260200160008152602001600081525090565b61136b60646110e0600d548561117b90919063ffffffff16565b6020820152600c54611385906064906110e090859061117b565b80825260208201516113a3919061139d9085906111fa565b906111fa565b6040808301919091526001600160a01b0385166000908152600260205220546113cc90836111fa565b6001600160a01b0380861660009081526002602052604080822093909355838301519186168152919091205461140191611051565b6001600160a01b03841660009081526002602090815260409091209190915581519082015161144a916114349190611051565b3060009081526002602052604090205490611051565b30600090815260026020908152604091829020929092558281015190519081526001600160a01b0385811692908716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a350505050565b80356114b681611841565b919050565b6000602082840312156114cd57600080fd5b8135610e9081611841565b6000602082840312156114ea57600080fd5b8151610e9081611841565b6000806040838503121561150857600080fd5b823561151381611841565b9150602083013561152381611841565b809150509250929050565b60008060006060848603121561154357600080fd5b833561154e81611841565b9250602084013561155e81611841565b929592945050506040919091013590565b6000806040838503121561158257600080fd5b823561158d81611841565b946020939093013593505050565b600060208083850312156115ae57600080fd5b823567ffffffffffffffff808211156115c657600080fd5b818501915085601f8301126115da57600080fd5b8135818111156115ec576115ec61182b565b8060051b604051601f19603f830116810181811085821117156116115761161161182b565b604052828152858101935084860182860187018a101561163057600080fd5b600095505b8386101561165a57611646816114ab565b855260019590950194938601938601611635565b5098975050505050505050565b60006020828403121561167957600080fd5b5035919050565b60008060006060848603121561169557600080fd5b8351925060208401519150604084015190509250925092565b600060208083528351808285015260005b818110156116db578581018301518582016040015282016116bf565b818111156116ed576000604083870101525b50601f01601f1916929092016040019392505050565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156117535784516001600160a01b03168352938301939183019160010161172e565b50506001600160a01b03969096166060850152505050608001529392505050565b60008219821115611787576117876117ff565b500190565b6000826117a957634e487b7160e01b600052601260045260246000fd5b500490565b60008160001904831182151516156117c8576117c86117ff565b500290565b6000828210156117df576117df6117ff565b500390565b60006000198214156117f8576117f86117ff565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6001600160a01b038116811461066157600080fdfe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212200c3142ad6f556ee011e6d1000192e993c948eb155eb832c3f385a222d973ccec64736f6c63430008070033

Deployed Bytecode

0x60806040526004361061014f5760003560e01c8063715018a6116100b6578063d52dfc141161006f578063d52dfc14146103cc578063dd62ed3e146103e2578063e581dc7114610428578063e632313c1461043e578063f2fde38b1461045e578063f42938901461047e57600080fd5b8063715018a6146103165780638cf01f6e1461032b5780638da5cb5b1461034b57806395d89b4114610369578063a9059cbb14610396578063c4066f2f146103b657600080fd5b8063313ce56711610108578063313ce5671461024b5780633c0a73ae1461026757806349bd5a5e1461027d57806351bc3c85146102b55780636c0a24eb146102ca57806370a08231146102e057600080fd5b806306fdde031461015b578063095ea7b31461019e57806318160ddd146101ce57806323b872dd146101f357806327a14fc2146102135780632e8fa8211461023557600080fd5b3661015657005b600080fd5b34801561016757600080fd5b506040805180820190915260088152674d4f4f5620496e7560c01b60208201525b60405161019591906116ae565b60405180910390f35b3480156101aa57600080fd5b506101be6101b936600461156f565b610493565b6040519015158152602001610195565b3480156101da57600080fd5b50670de0b6b3a76400005b604051908152602001610195565b3480156101ff57600080fd5b506101be61020e36600461152e565b6104aa565b34801561021f57600080fd5b5061023361022e366004611667565b610513565b005b34801561024157600080fd5b506101e560135481565b34801561025757600080fd5b5060405160098152602001610195565b34801561027357600080fd5b506101e560065481565b34801561028957600080fd5b5060125461029d906001600160a01b031681565b6040516001600160a01b039091168152602001610195565b3480156102c157600080fd5b50610233610622565b3480156102d657600080fd5b506101e560055481565b3480156102ec57600080fd5b506101e56102fb3660046114bb565b6001600160a01b031660009081526002602052604090205490565b34801561032257600080fd5b50610233610664565b34801561033757600080fd5b5061023361034636600461159b565b610708565b34801561035757600080fd5b506000546001600160a01b031661029d565b34801561037557600080fd5b5060408051808201909152600481526326a7a7ab60e11b6020820152610188565b3480156103a257600080fd5b506101be6103b136600461156f565b610774565b3480156103c257600080fd5b506101e560095481565b3480156103d857600080fd5b506101e560085481565b3480156103ee57600080fd5b506101e56103fd3660046114f5565b6001600160a01b03918216600090815260036020908152604080832093909416825291909152205490565b34801561043457600080fd5b506101e560075481565b34801561044a57600080fd5b50610233610459366004611667565b610781565b34801561046a57600080fd5b506102336104793660046114bb565b6107a6565b34801561048a57600080fd5b506102336108c0565b60006104a03384846108f0565b5060015b92915050565b60006104b7848484610a14565b610509843361050485604051806060016040528060288152602001611857602891396001600160a01b038a1660009081526003602090815260408083203384529091529020549190610e14565b6108f0565b5060019392505050565b6010546001600160a01b0316336001600160a01b03161461053357600080fd5b610546670de0b6b3a764000060c8610e4e565b81116105ac5760405162461bcd60e51b815260206004820152602a60248201527f416d6f756e74206d7573742062652067726561746572207468616e20302e3525604482015269206f6620737570706c7960b01b60648201526084015b60405180910390fd5b670de0b6b3a764000081111561061d5760405162461bcd60e51b815260206004820152603060248201527f416d6f756e74206d757374206265206c657373207468616e206f72206571756160448201526f6c20746f20746f74616c537570706c7960801b60648201526084016105a3565b600555565b6010546001600160a01b0316336001600160a01b03161461064257600080fd5b3060009081526002602052604090205480156106615761066181610e97565b50565b6000546001600160a01b031633146106be5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016105a3565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b60005b8151811015610770576001600e600084848151811061072c5761072c611815565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff191691151591909117905580610768816117e4565b91505061070b565b5050565b60006104a0338484610a14565b6010546001600160a01b0316336001600160a01b0316146107a157600080fd5b601355565b6000546001600160a01b031633146108005760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016105a3565b6001600160a01b0381166108655760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016105a3565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6010546001600160a01b0316336001600160a01b0316146108e057600080fd5b4780156106615761066181611017565b6001600160a01b0383166109525760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016105a3565b6001600160a01b0382166109b35760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016105a3565b6001600160a01b0383811660008181526003602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038316610a785760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016105a3565b6001600160a01b038216610ada5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016105a3565b60008111610b3c5760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b60648201526084016105a3565b6001610b506000546001600160a01b031690565b6001600160a01b0316846001600160a01b031614158015610b7f57506000546001600160a01b03848116911614155b8015610b9457506001600160a01b0384163014155b8015610ba957506001600160a01b0383163014155b15610da9576001600160a01b0383166000908152600e602052604090205460ff16158015610bf057506001600160a01b0384166000908152600e602052604090205460ff16155b610bf957600080fd5b6012546001600160a01b038581169116148015610c2457506011546001600160a01b03848116911614155b15610cd357600554610c5583610c4f866001600160a01b031660009081526002602052604090205490565b90611051565b1115610cd35760405162461bcd60e51b815260206004820152604160248201527f77616c6c65742062616c616e6365206166746572207472616e73666572206d7560448201527f7374206265206c657373207468616e206d61782077616c6c657420616d6f756e6064820152601d60fa1b608482015260a4016105a3565b6012546001600160a01b038581169116148015610cfe57506011546001600160a01b03848116911614155b15610d1057600654600c55600754600d555b6012546001600160a01b038481169116148015610d3b57506011546001600160a01b03858116911614155b15610d4d57600854600c55600954600d555b60145460ff16158015610d6e57506012546001600160a01b03858116911614155b15610da95730600090815260026020526040902054601354811115610d9657610d96816110b0565b478015610da657610da647611017565b50505b6001600160a01b03841660009081526004602052604090205460ff1680610de857506001600160a01b03831660009081526004602052604090205460ff165b15610df1575060005b610dfd84848484611135565b610e0e600a54600c55600b54600d55565b50505050565b60008184841115610e385760405162461bcd60e51b81526004016105a391906116ae565b506000610e4584866117cd565b95945050505050565b6000610e9083836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061114d565b9392505050565b6014805460ff191660011790556040805160028082526060820183526000926020830190803683370190505090503081600081518110610ed957610ed9611815565b6001600160a01b03928316602091820292909201810191909152601154604080516315ab88c960e31b81529051919093169263ad5c4648926004808301939192829003018186803b158015610f2d57600080fd5b505afa158015610f41573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f6591906114d8565b81600181518110610f7857610f78611815565b6001600160a01b039283166020918202929092010152601154610f9e91309116846108f0565b60115460405163791ac94760e01b81526001600160a01b039091169063791ac94790610fd7908590600090869030904290600401611703565b600060405180830381600087803b158015610ff157600080fd5b505af1158015611005573d6000803e3d6000fd5b50506014805460ff1916905550505050565b600f546040516001600160a01b039091169082156108fc029083906000818181858888f19350505050158015610770573d6000803e3d6000fd5b60008061105e8385611774565b905083811015610e905760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f77000000000060448201526064016105a3565b6014805460ff19166001179055600c54600d546000916110e6916110d391611051565b600c546110e0908561117b565b90610e4e565b905060006110f5826002610e4e565b9050600061110384836111fa565b90504761110f82610e97565b6000611129836110e08661112347876111fa565b9061117b565b9050611005848261123c565b80611142576111426112ff565b610dfd84848461132d565b6000818361116e5760405162461bcd60e51b81526004016105a391906116ae565b506000610e45848661178c565b60008261118a575060006104a4565b600061119683856117ae565b9050826111a3858361178c565b14610e905760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b60648201526084016105a3565b6000610e9083836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250610e14565b6011546112549030906001600160a01b0316846108f0565b60115460105460405163f305d71960e01b81523060048201526024810185905260006044820181905260648201526001600160a01b0391821660848201524260a482015291169063f305d71990839060c4016060604051808303818588803b1580156112bf57600080fd5b505af11580156112d3573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906112f89190611680565b5050505050565b600d5415801561130f5750600c54155b1561131657565b600d8054600b55600c8054600a5560009182905555565b61135160405180606001604052806000815260200160008152602001600081525090565b61136b60646110e0600d548561117b90919063ffffffff16565b6020820152600c54611385906064906110e090859061117b565b80825260208201516113a3919061139d9085906111fa565b906111fa565b6040808301919091526001600160a01b0385166000908152600260205220546113cc90836111fa565b6001600160a01b0380861660009081526002602052604080822093909355838301519186168152919091205461140191611051565b6001600160a01b03841660009081526002602090815260409091209190915581519082015161144a916114349190611051565b3060009081526002602052604090205490611051565b30600090815260026020908152604091829020929092558281015190519081526001600160a01b0385811692908716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a350505050565b80356114b681611841565b919050565b6000602082840312156114cd57600080fd5b8135610e9081611841565b6000602082840312156114ea57600080fd5b8151610e9081611841565b6000806040838503121561150857600080fd5b823561151381611841565b9150602083013561152381611841565b809150509250929050565b60008060006060848603121561154357600080fd5b833561154e81611841565b9250602084013561155e81611841565b929592945050506040919091013590565b6000806040838503121561158257600080fd5b823561158d81611841565b946020939093013593505050565b600060208083850312156115ae57600080fd5b823567ffffffffffffffff808211156115c657600080fd5b818501915085601f8301126115da57600080fd5b8135818111156115ec576115ec61182b565b8060051b604051601f19603f830116810181811085821117156116115761161161182b565b604052828152858101935084860182860187018a101561163057600080fd5b600095505b8386101561165a57611646816114ab565b855260019590950194938601938601611635565b5098975050505050505050565b60006020828403121561167957600080fd5b5035919050565b60008060006060848603121561169557600080fd5b8351925060208401519150604084015190509250925092565b600060208083528351808285015260005b818110156116db578581018301518582016040015282016116bf565b818111156116ed576000604083870101525b50601f01601f1916929092016040019392505050565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156117535784516001600160a01b03168352938301939183019160010161172e565b50506001600160a01b03969096166060850152505050608001529392505050565b60008219821115611787576117876117ff565b500190565b6000826117a957634e487b7160e01b600052601260045260246000fd5b500490565b60008160001904831182151516156117c8576117c86117ff565b500290565b6000828210156117df576117df6117ff565b500390565b60006000198214156117f8576117f86117ff565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6001600160a01b038116811461066157600080fdfe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212200c3142ad6f556ee011e6d1000192e993c948eb155eb832c3f385a222d973ccec64736f6c63430008070033

Deployed Bytecode Sourcemap

7085:10561:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9510:83;;;;;;;;;;-1:-1:-1;9580:5:0;;;;;;;;;;;;-1:-1:-1;;;9580:5:0;;;;9510:83;;;;;;;:::i;:::-;;;;;;;;10353:163;;;;;;;;;;-1:-1:-1;10353:163:0;;;;;:::i;:::-;;:::i;:::-;;;4461:14:1;;4454:22;4436:41;;4424:2;4409:18;10353:163:0;4296:187:1;9787:97:0;;;;;;;;;;-1:-1:-1;7530:16:0;9787:97;;;10092:25:1;;;10080:2;10065:18;9787:97:0;9946:177:1;10524:312:0;;;;;;;;;;-1:-1:-1;10524:312:0;;;;;:::i;:::-;;:::i;16966:358::-;;;;;;;;;;-1:-1:-1;16966:358:0;;;;;:::i;:::-;;:::i;:::-;;8459:25;;;;;;;;;;;;;;;;9696:83;;;;;;;;;;-1:-1:-1;9696:83:0;;7301:1;11255:36:1;;11243:2;11228:18;9696:83:0;11113:184:1;7625:37:0;;;;;;;;;;;;;;;;8424:28;;;;;;;;;;-1:-1:-1;8424:28:0;;;;-1:-1:-1;;;;;8424:28:0;;;;;;-1:-1:-1;;;;;3632:32:1;;;3614:51;;3602:2;3587:18;8424:28:0;3468:203:1;15503:240:0;;;;;;;;;;;;;:::i;7555:48::-;;;;;;;;;;;;;;;;9892:119;;;;;;;;;;-1:-1:-1;9892:119:0;;;;;:::i;:::-;-1:-1:-1;;;;;9985:18:0;9958:7;9985:18;;;:9;:18;;;;;;;9892:119;2657:148;;;;;;;;;;;;;:::i;17481:160::-;;;;;;;;;;-1:-1:-1;17481:160:0;;;;;:::i;:::-;;:::i;2443:79::-;;;;;;;;;;-1:-1:-1;2481:7:0;2508:6;-1:-1:-1;;;;;2508:6:0;2443:79;;9601:87;;;;;;;;;;-1:-1:-1;9673:7:0;;;;;;;;;;;;-1:-1:-1;;;9673:7:0;;;;9601:87;;10023:169;;;;;;;;;;-1:-1:-1;10023:169:0;;;;;:::i;:::-;;:::i;7763:38::-;;;;;;;;;;;;;;;;7717;;;;;;;;;;;;;;;;10200:145;;;;;;;;;;-1:-1:-1;10200:145:0;;;;;:::i;:::-;-1:-1:-1;;;;;10310:18:0;;;10283:7;10310:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;10200:145;7670:37;;;;;;;;;;;;;;;;17332:141;;;;;;;;;;-1:-1:-1;17332:141:0;;;;;:::i;:::-;;:::i;2813:244::-;;;;;;;;;;-1:-1:-1;2813:244:0;;;;;:::i;:::-;;:::i;15751:242::-;;;;;;;;;;;;;:::i;10353:163::-;10430:4;10447:39;219:10;10470:7;10479:6;10447:8;:39::i;:::-;-1:-1:-1;10504:4:0;10353:163;;;;;:::o;10524:312::-;10624:4;10641:36;10651:6;10659:9;10670:6;10641:9;:36::i;:::-;10688:118;10697:6;219:10;10717:88;10755:6;10717:88;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;10717:19:0;;;;;;:11;:19;;;;;;;;219:10;10717:33;;;;;;;;;;:37;:88::i;:::-;10688:8;:118::i;:::-;-1:-1:-1;10824:4:0;10524:312;;;;;:::o;16966:358::-;17063:9;;-1:-1:-1;;;;;17063:9:0;219:10;-1:-1:-1;;;;;17047:25:0;;17039:34;;;;;;17110:16;7530;17122:3;17110:11;:16::i;:::-;17092:15;:34;17084:89;;;;-1:-1:-1;;;17084:89:0;;7336:2:1;17084:89:0;;;7318:21:1;7375:2;7355:18;;;7348:30;7414:34;7394:18;;;7387:62;-1:-1:-1;;;7465:18:1;;;7458:40;7515:19;;17084:89:0;;;;;;;;;7530:16;17192:15;:26;;17184:87;;;;-1:-1:-1;;;17184:87:0;;8920:2:1;17184:87:0;;;8902:21:1;8959:2;8939:18;;;8932:30;8998:34;8978:18;;;8971:62;-1:-1:-1;;;9049:18:1;;;9042:46;9105:19;;17184:87:0;8718:412:1;17184:87:0;17282:16;:34;16966:358::o;15503:240::-;15569:9;;-1:-1:-1;;;;;15569:9:0;219:10;-1:-1:-1;;;;;15553:25:0;;15545:34;;;;;;15634:4;15590:23;9985:18;;;:9;:18;;;;;;15655:19;;15651:85;;15691:33;15708:15;15691:16;:33::i;:::-;15534:209;15503:240::o;2657:148::-;2570:6;;-1:-1:-1;;;;;2570:6:0;219:10;2570:22;2562:67;;;;-1:-1:-1;;;2562:67:0;;8149:2:1;2562:67:0;;;8131:21:1;;;8168:18;;;8161:30;8227:34;8207:18;;;8200:62;8279:18;;2562:67:0;7947:356:1;2562:67:0;2764:1:::1;2748:6:::0;;2727:40:::1;::::0;-1:-1:-1;;;;;2748:6:0;;::::1;::::0;2727:40:::1;::::0;2764:1;;2727:40:::1;2795:1;2778:19:::0;;-1:-1:-1;;;;;;2778:19:0::1;::::0;;2657:148::o;17481:160::-;17553:6;17548:86;17569:5;:12;17565:1;:16;17548:86;;;17618:4;17601;:14;17606:5;17612:1;17606:8;;;;;;;;:::i;:::-;;;;;;;;;;;;-1:-1:-1;;;;;17601:14:0;;;;;;;;;;;-1:-1:-1;17601:14:0;:21;;-1:-1:-1;;17601:21:0;;;;;;;;;;17583:3;;;;:::i;:::-;;;;17548:86;;;;17481:160;:::o;10023:169::-;10103:4;10120:42;219:10;10144:9;10155:6;10120:9;:42::i;17332:141::-;17420:9;;-1:-1:-1;;;;;17420:9:0;219:10;-1:-1:-1;;;;;17404:25:0;;17396:34;;;;;;17441:10;:24;17332:141::o;2813:244::-;2570:6;;-1:-1:-1;;;;;2570:6:0;219:10;2570:22;2562:67;;;;-1:-1:-1;;;2562:67:0;;8149:2:1;2562:67:0;;;8131:21:1;;;8168:18;;;8161:30;8227:34;8207:18;;;8200:62;8279:18;;2562:67:0;7947:356:1;2562:67:0;-1:-1:-1;;;;;2902:22:0;::::1;2894:73;;;::::0;-1:-1:-1;;;2894:73:0;;5696:2:1;2894:73:0::1;::::0;::::1;5678:21:1::0;5735:2;5715:18;;;5708:30;5774:34;5754:18;;;5747:62;-1:-1:-1;;;5825:18:1;;;5818:36;5871:19;;2894:73:0::1;5494:402:1::0;2894:73:0::1;3004:6;::::0;;2983:38:::1;::::0;-1:-1:-1;;;;;2983:38:0;;::::1;::::0;3004:6;::::1;::::0;2983:38:::1;::::0;::::1;3032:6;:17:::0;;-1:-1:-1;;;;;;3032:17:0::1;-1:-1:-1::0;;;;;3032:17:0;;;::::1;::::0;;;::::1;::::0;;2813:244::o;15751:242::-;15817:9;;-1:-1:-1;;;;;15817:9:0;219:10;-1:-1:-1;;;;;15801:25:0;;15793:34;;;;;;15867:21;15903:22;;15899:87;;15942:32;15955:18;15942:12;:32::i;11268:335::-;-1:-1:-1;;;;;11361:19:0;;11353:68;;;;-1:-1:-1;;;11353:68:0;;9743:2:1;11353:68:0;;;9725:21:1;9782:2;9762:18;;;9755:30;9821:34;9801:18;;;9794:62;-1:-1:-1;;;9872:18:1;;;9865:34;9916:19;;11353:68:0;9541:400:1;11353:68:0;-1:-1:-1;;;;;11440:21:0;;11432:68;;;;-1:-1:-1;;;11432:68:0;;6103:2:1;11432:68:0;;;6085:21:1;6142:2;6122:18;;;6115:30;6181:34;6161:18;;;6154:62;-1:-1:-1;;;6232:18:1;;;6225:32;6274:19;;11432:68:0;5901:398:1;11432:68:0;-1:-1:-1;;;;;11511:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;11563:32;;10092:25:1;;;11563:32:0;;10065:18:1;11563:32:0;;;;;;;11268:335;;;:::o;11615:1860::-;-1:-1:-1;;;;;11705:18:0;;11697:68;;;;-1:-1:-1;;;11697:68:0;;9337:2:1;11697:68:0;;;9319:21:1;9376:2;9356:18;;;9349:30;9415:34;9395:18;;;9388:62;-1:-1:-1;;;9466:18:1;;;9459:35;9511:19;;11697:68:0;9135:401:1;11697:68:0;-1:-1:-1;;;;;11784:16:0;;11776:64;;;;-1:-1:-1;;;11776:64:0;;5292:2:1;11776:64:0;;;5274:21:1;5331:2;5311:18;;;5304:30;5370:34;5350:18;;;5343:62;-1:-1:-1;;;5421:18:1;;;5414:33;5464:19;;11776:64:0;5090:399:1;11776:64:0;11868:1;11859:6;:10;11851:64;;;;-1:-1:-1;;;11851:64:0;;8510:2:1;11851:64:0;;;8492:21:1;8549:2;8529:18;;;8522:30;8588:34;8568:18;;;8561:62;-1:-1:-1;;;8639:18:1;;;8632:39;8688:19;;11851:64:0;8308:405:1;11851:64:0;11943:4;11972:7;2481;2508:6;-1:-1:-1;;;;;2508:6:0;;2443:79;11972:7;-1:-1:-1;;;;;11964:15:0;:4;-1:-1:-1;;;;;11964:15:0;;;:32;;;;-1:-1:-1;2481:7:0;2508:6;-1:-1:-1;;;;;11983:13:0;;;2508:6;;11983:13;;11964:32;:57;;;;-1:-1:-1;;;;;;12000:21:0;;12016:4;12000:21;;11964:57;:80;;;;-1:-1:-1;;;;;;12025:19:0;;12039:4;12025:19;;11964:80;11960:1310;;;-1:-1:-1;;;;;12070:8:0;;;;;;:4;:8;;;;;;;;12069:9;:24;;;;-1:-1:-1;;;;;;12083:10:0;;;;;;:4;:10;;;;;;;;12082:11;12069:24;12061:33;;;;;;12123:13;;-1:-1:-1;;;;;12115:21:0;;;12123:13;;12115:21;:55;;;;-1:-1:-1;12154:15:0;;-1:-1:-1;;;;;12140:30:0;;;12154:15;;12140:30;;12115:55;12111:219;;;12228:16;;12199:25;12217:6;12199:13;12209:2;-1:-1:-1;;;;;9985:18:0;9958:7;9985:18;;;:9;:18;;;;;;;9892:119;12199:13;:17;;:25::i;:::-;:45;;12191:123;;;;-1:-1:-1;;;12191:123:0;;6862:2:1;12191:123:0;;;6844:21:1;6901:2;6881:18;;;6874:30;6940:34;6920:18;;;6913:62;7011:34;6991:18;;;6984:62;-1:-1:-1;;;7062:19:1;;;7055:32;7104:19;;12191:123:0;6660:469:1;12191:123:0;12358:13;;-1:-1:-1;;;;;12350:21:0;;;12358:13;;12350:21;:55;;;;-1:-1:-1;12389:15:0;;-1:-1:-1;;;;;12375:30:0;;;12389:15;;12375:30;;12350:55;12346:183;;;12442:18;;12426:13;:34;12495:18;;12479:13;:34;12346:183;12571:13;;-1:-1:-1;;;;;12565:19:0;;;12571:13;;12565:19;:55;;;;-1:-1:-1;12604:15:0;;-1:-1:-1;;;;;12588:32:0;;;12604:15;;12588:32;;12565:55;12561:185;;;12657:19;;12641:13;:35;12711:19;;12695:13;:35;12561:185;12779:6;;;;12778:7;:32;;;;-1:-1:-1;12797:13:0;;-1:-1:-1;;;;;12789:21:0;;;12797:13;;12789:21;;12778:32;12774:485;;;12882:4;12833:28;9985:18;;;:9;:18;;;;;;12936:10;;12913:33;;12909:118;;;12971:36;12986:20;12971:14;:36::i;:::-;13076:21;13120:22;;13116:106;;13167:35;13180:21;13167:12;:35::i;:::-;12812:447;;12774:485;-1:-1:-1;;;;;13286:24:0;;;;;;:18;:24;;;;;;;;;:50;;-1:-1:-1;;;;;;13314:22:0;;;;;;:18;:22;;;;;;;;13286:50;13282:98;;;-1:-1:-1;13363:5:0;13282:98;13400:41;13415:4;13421:2;13425:6;13433:7;13400:14;:41::i;:::-;13452:15;11183:21;;11167:13;:37;11231:21;;11215:13;:37;11113:147;13452:15;11684:1791;11615:1860;;;:::o;1276:190::-;1362:7;1398:12;1390:6;;;;1382:29;;;;-1:-1:-1;;;1382:29:0;;;;;;;;:::i;:::-;-1:-1:-1;1422:9:0;1434:5;1438:1;1434;:5;:::i;:::-;1422:17;1276:190;-1:-1:-1;;;;;1276:190:0:o;1728:132::-;1786:7;1813:39;1817:1;1820;1813:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;1806:46;1728:132;-1:-1:-1;;;1728:132:0:o;13483:407::-;8633:6;:13;;-1:-1:-1;;8633:13:0;8642:4;8633:13;;;13585:16:::1;::::0;;13599:1:::1;13585:16:::0;;;;;::::1;::::0;;-1:-1:-1;;13585:16:0::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;13585:16:0::1;13561:40;;13630:4;13612;13617:1;13612:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;13612:23:0;;::::1;:7;::::0;;::::1;::::0;;;;;;:23;;;;13656:15:::1;::::0;:22:::1;::::0;;-1:-1:-1;;;13656:22:0;;;;:15;;;::::1;::::0;:20:::1;::::0;:22:::1;::::0;;::::1;::::0;13612:7;;13656:22;;;;;:15;:22;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13646:4;13651:1;13646:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;13646:32:0;;::::1;:7;::::0;;::::1;::::0;;;;;:32;13721:15:::1;::::0;13689:62:::1;::::0;13706:4:::1;::::0;13721:15:::1;13739:11:::0;13689:8:::1;:62::i;:::-;13762:15;::::0;:120:::1;::::0;-1:-1:-1;;;13762:120:0;;-1:-1:-1;;;;;13762:15:0;;::::1;::::0;:66:::1;::::0;:120:::1;::::0;13829:11;;13762:15:::1;::::0;13845:4;;13859::::1;::::0;13866:15:::1;::::0;13762:120:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;8669:6:0;:14;;-1:-1:-1;;8669:14:0;;;-1:-1:-1;;;;13483:407:0:o;15396:99::-;15453:17;;:34;;-1:-1:-1;;;;;15453:17:0;;;;:34;;;;;15480:6;;15453:17;:34;:17;:34;15480:6;15453:17;:34;;;;;;;;;;;;;;;;;;;945:179;1003:7;;1035:5;1039:1;1035;:5;:::i;:::-;1023:17;;1064:1;1059;:6;;1051:46;;;;-1:-1:-1;;;1051:46:0;;6506:2:1;1051:46:0;;;6488:21:1;6545:2;6525:18;;;6518:30;6584:29;6564:18;;;6557:57;6631:18;;1051:46:0;6304:351:1;14374:1014:0;8633:6;:13;;-1:-1:-1;;8633:13:0;8642:4;8633:13;;;14544::::1;::::0;14526::::1;::::0;8633:6;;14482:77:::1;::::0;14526:32:::1;::::0;:17:::1;:32::i;:::-;14482:13;::::0;:39:::1;::::0;14500:20;14482:17:::1;:39::i;:::-;:43:::0;::::1;:77::i;:::-;14459:100:::0;-1:-1:-1;14623:12:0::1;14639:19;14459:100:::0;14656:1:::1;14639:16;:19::i;:::-;14623:35:::0;-1:-1:-1;14669:17:0::1;14689:30;:20:::0;14623:35;14689:24:::1;:30::i;:::-;14669:50:::0;-1:-1:-1;15022:21:0::1;15088:27;14669:50:::0;15088:16:::1;:27::i;:::-;15246:18;15267:70;15327:9:::0;15268:53:::1;15316:4:::0;15269:41:::1;:21;15295:14:::0;15269:25:::1;:41::i;:::-;15268:47:::0;::::1;:53::i;15267:70::-;15246:91;;15350:30;15363:4;15369:10;15350:12;:30::i;16001:256::-:0;16114:7;16109:60;;16143:14;:12;:14::i;:::-;16179:44;16197:6;16205:9;16216:6;16179:17;:44::i;1868:189::-;1954:7;1989:12;1982:5;1974:28;;;;-1:-1:-1;;;1974:28:0;;;;;;;;:::i;:::-;-1:-1:-1;2013:9:0;2025:5;2029:1;2025;:5;:::i;1474:246::-;1532:7;1556:6;1552:47;;-1:-1:-1;1586:1:0;1579:8;;1552:47;1609:9;1621:5;1625:1;1621;:5;:::i;:::-;1609:17;-1:-1:-1;1654:1:0;1645:5;1649:1;1609:17;1645:5;:::i;:::-;:10;1637:56;;;;-1:-1:-1;;;1637:56:0;;7747:2:1;1637:56:0;;;7729:21:1;7786:2;7766:18;;;7759:30;7825:34;7805:18;;;7798:62;-1:-1:-1;;;7876:18:1;;;7869:31;7917:19;;1637:56:0;7545:397:1;1132:136:0;1190:7;1217:43;1221:1;1224;1217:43;;;;;;;;;;;;;;;;;:3;:43::i;13902:462::-;14015:15;;13983:62;;14000:4;;-1:-1:-1;;;;;14015:15:0;14033:11;13983:8;:62::i;:::-;14088:15;;14302:9;;14088:268;;-1:-1:-1;;;14088:268:0;;14162:4;14088:268;;;4025:34:1;4075:18;;;4068:34;;;14088:15:0;4118:18:1;;;4111:34;;;4161:18;;;4154:34;-1:-1:-1;;;;;14302:9:0;;;4204:19:1;;;4197:44;14328:15:0;4257:19:1;;;4250:35;14088:15:0;;;:31;;14127:9;;3959:19:1;;14088:268:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;13902:462;;:::o;10844:257::-;10891:13;;:18;:40;;;;-1:-1:-1;10913:13:0;;:18;10891:40;10887:53;;;10844:257::o;10887:53::-;10974:13;;;10950:21;:37;11022:13;;;10998:21;:37;-1:-1:-1;11048:17:0;;;;11076;10844:257::o;16265:652::-;16362:24;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;16362:24:0;16415:34;16445:3;16415:25;16426:13;;16415:6;:10;;:25;;;;:::i;:34::-;16397:15;;;:52;16489:13;;16478:34;;16508:3;;16478:25;;:6;;:10;:25::i;:34::-;16460:52;;;16559:15;;;;16548:48;;16460:52;16548:27;;:6;;:10;:27::i;:::-;:31;;:48::i;:::-;16533:12;;;;:63;;;;-1:-1:-1;;;;;16637:17:0;;;;;;:9;:17;;;;:29;;16659:6;16637:21;:29::i;:::-;-1:-1:-1;;;;;16617:17:0;;;;;;;:9;:17;;;;;;:49;;;;16725:12;;;;16700:20;;;;;;;;;;:38;;:24;:38::i;:::-;-1:-1:-1;;;;;16677:20:0;;;;;;:9;:20;;;;;;;;:61;;;;16825:15;;16805;;;;16776:66;;16805:36;;:15;:19;:36::i;:::-;16794:4;16776:24;;;;:9;:24;;;;;;;:28;:66::i;:::-;16767:4;16749:24;;;;:9;:24;;;;;;;;;:93;;;;16896:12;;;;16868:41;;10092:25:1;;;-1:-1:-1;;;;;16868:41:0;;;;;;;;;;10065:18:1;16868:41:0;;;;;;;16351:566;16265:652;;;:::o;14:134:1:-;82:20;;111:31;82:20;111:31;:::i;:::-;14:134;;;:::o;153:247::-;212:6;265:2;253:9;244:7;240:23;236:32;233:52;;;281:1;278;271:12;233:52;320:9;307:23;339:31;364:5;339:31;:::i;405:251::-;475:6;528:2;516:9;507:7;503:23;499:32;496:52;;;544:1;541;534:12;496:52;576:9;570:16;595:31;620:5;595:31;:::i;661:388::-;729:6;737;790:2;778:9;769:7;765:23;761:32;758:52;;;806:1;803;796:12;758:52;845:9;832:23;864:31;889:5;864:31;:::i;:::-;914:5;-1:-1:-1;971:2:1;956:18;;943:32;984:33;943:32;984:33;:::i;:::-;1036:7;1026:17;;;661:388;;;;;:::o;1054:456::-;1131:6;1139;1147;1200:2;1188:9;1179:7;1175:23;1171:32;1168:52;;;1216:1;1213;1206:12;1168:52;1255:9;1242:23;1274:31;1299:5;1274:31;:::i;:::-;1324:5;-1:-1:-1;1381:2:1;1366:18;;1353:32;1394:33;1353:32;1394:33;:::i;:::-;1054:456;;1446:7;;-1:-1:-1;;;1500:2:1;1485:18;;;;1472:32;;1054:456::o;1515:315::-;1583:6;1591;1644:2;1632:9;1623:7;1619:23;1615:32;1612:52;;;1660:1;1657;1650:12;1612:52;1699:9;1686:23;1718:31;1743:5;1718:31;:::i;:::-;1768:5;1820:2;1805:18;;;;1792:32;;-1:-1:-1;;;1515:315:1:o;1835:1132::-;1919:6;1950:2;1993;1981:9;1972:7;1968:23;1964:32;1961:52;;;2009:1;2006;1999:12;1961:52;2049:9;2036:23;2078:18;2119:2;2111:6;2108:14;2105:34;;;2135:1;2132;2125:12;2105:34;2173:6;2162:9;2158:22;2148:32;;2218:7;2211:4;2207:2;2203:13;2199:27;2189:55;;2240:1;2237;2230:12;2189:55;2276:2;2263:16;2298:2;2294;2291:10;2288:36;;;2304:18;;:::i;:::-;2350:2;2347:1;2343:10;2382:2;2376:9;2445:2;2441:7;2436:2;2432;2428:11;2424:25;2416:6;2412:38;2500:6;2488:10;2485:22;2480:2;2468:10;2465:18;2462:46;2459:72;;;2511:18;;:::i;:::-;2547:2;2540:22;2597:18;;;2631:15;;;;-1:-1:-1;2666:11:1;;;2696;;;2692:20;;2689:33;-1:-1:-1;2686:53:1;;;2735:1;2732;2725:12;2686:53;2757:1;2748:10;;2767:169;2781:2;2778:1;2775:9;2767:169;;;2838:23;2857:3;2838:23;:::i;:::-;2826:36;;2799:1;2792:9;;;;;2882:12;;;;2914;;2767:169;;;-1:-1:-1;2955:6:1;1835:1132;-1:-1:-1;;;;;;;;1835:1132:1:o;2972:180::-;3031:6;3084:2;3072:9;3063:7;3059:23;3055:32;3052:52;;;3100:1;3097;3090:12;3052:52;-1:-1:-1;3123:23:1;;2972:180;-1:-1:-1;2972:180:1:o;3157:306::-;3245:6;3253;3261;3314:2;3302:9;3293:7;3289:23;3285:32;3282:52;;;3330:1;3327;3320:12;3282:52;3359:9;3353:16;3343:26;;3409:2;3398:9;3394:18;3388:25;3378:35;;3453:2;3442:9;3438:18;3432:25;3422:35;;3157:306;;;;;:::o;4488:597::-;4600:4;4629:2;4658;4647:9;4640:21;4690:6;4684:13;4733:6;4728:2;4717:9;4713:18;4706:34;4758:1;4768:140;4782:6;4779:1;4776:13;4768:140;;;4877:14;;;4873:23;;4867:30;4843:17;;;4862:2;4839:26;4832:66;4797:10;;4768:140;;;4926:6;4923:1;4920:13;4917:91;;;4996:1;4991:2;4982:6;4971:9;4967:22;4963:31;4956:42;4917:91;-1:-1:-1;5069:2:1;5048:15;-1:-1:-1;;5044:29:1;5029:45;;;;5076:2;5025:54;;4488:597;-1:-1:-1;;;4488:597:1:o;10128:980::-;10390:4;10438:3;10427:9;10423:19;10469:6;10458:9;10451:25;10495:2;10533:6;10528:2;10517:9;10513:18;10506:34;10576:3;10571:2;10560:9;10556:18;10549:31;10600:6;10635;10629:13;10666:6;10658;10651:22;10704:3;10693:9;10689:19;10682:26;;10743:2;10735:6;10731:15;10717:29;;10764:1;10774:195;10788:6;10785:1;10782:13;10774:195;;;10853:13;;-1:-1:-1;;;;;10849:39:1;10837:52;;10944:15;;;;10909:12;;;;10885:1;10803:9;10774:195;;;-1:-1:-1;;;;;;;11025:32:1;;;;11020:2;11005:18;;10998:60;-1:-1:-1;;;11089:3:1;11074:19;11067:35;10986:3;10128:980;-1:-1:-1;;;10128:980:1:o;11302:128::-;11342:3;11373:1;11369:6;11366:1;11363:13;11360:39;;;11379:18;;:::i;:::-;-1:-1:-1;11415:9:1;;11302:128::o;11435:217::-;11475:1;11501;11491:132;;11545:10;11540:3;11536:20;11533:1;11526:31;11580:4;11577:1;11570:15;11608:4;11605:1;11598:15;11491:132;-1:-1:-1;11637:9:1;;11435:217::o;11657:168::-;11697:7;11763:1;11759;11755:6;11751:14;11748:1;11745:21;11740:1;11733:9;11726:17;11722:45;11719:71;;;11770:18;;:::i;:::-;-1:-1:-1;11810:9:1;;11657:168::o;11830:125::-;11870:4;11898:1;11895;11892:8;11889:34;;;11903:18;;:::i;:::-;-1:-1:-1;11940:9:1;;11830:125::o;11960:135::-;11999:3;-1:-1:-1;;12020:17:1;;12017:43;;;12040:18;;:::i;:::-;-1:-1:-1;12087:1:1;12076:13;;11960:135::o;12100:127::-;12161:10;12156:3;12152:20;12149:1;12142:31;12192:4;12189:1;12182:15;12216:4;12213:1;12206:15;12232:127;12293:10;12288:3;12284:20;12281:1;12274:31;12324:4;12321:1;12314:15;12348:4;12345:1;12338:15;12364:127;12425:10;12420:3;12416:20;12413:1;12406:31;12456:4;12453:1;12446:15;12480:4;12477:1;12470:15;12496:131;-1:-1:-1;;;;;12571:31:1;;12561:42;;12551:70;;12617:1;12614;12607:12

Swarm Source

ipfs://0c3142ad6f556ee011e6d1000192e993c948eb155eb832c3f385a222d973ccec
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.