ETH Price: $3,910.41 (+5.18%)

Token

ERC-20: OnVault (OVLT)
 

Overview

Max Total Supply

478,866,129.016098836 OVLT

Holders

32

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
7,355,714.273510277 OVLT

Value
$0.00
0x8306a475ee71775736eb78224a4412b50a2ff3c3
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:
OnVault

Compiler Version
v0.8.18+commit.87f61d96

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-03-29
*/

// SPDX-License-Identifier: MIT

pragma solidity ^0.8.17;

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;
        // assert(a == b * c + a % b); // There is no case in which this doesn't hold

        return c;
    }

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

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

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

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

contract Ownable is Context {
    address private _owner;

    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 IUniswapV2Factory {
    event PairCreated(address indexed token0, address indexed token1, address pair, uint);

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

interface IUniswapV2Router02 {
    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 swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;

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

interface IUniswapV2Pair {
    function sync() external;
}

contract OnVault is Context, IERC20, Ownable {
    using SafeMath for uint256;
    IUniswapV2Router02 public uniswapV2Router;

    address public uniswapV2Pair;
    
    mapping (address => uint256) private balances;
    mapping (address => mapping (address => uint256)) private _allowances;
    mapping (address => bool) private _isExcludedFromFee;

    string private constant _name = "OnVault";
    string private constant _symbol = "OVLT";
    uint8 private constant _decimals = 9;
    uint256 private _tTotal =  1000000000  * 10**_decimals;

    uint256 public _maxWalletAmount = 20000000 * 10**_decimals;
    uint256 public _maxTxAmount = 20000000 * 10**_decimals;
    uint256 public swapTokenAtAmount = 1000000 * 10**_decimals;
    uint256 public forceSwapCount;

    address liquidityReceiver;
    address feeWallet;

    struct BuyFees{
        uint256 liquidity;
        uint256 marketing;
    }

    struct SellFees{
        uint256 liquidity;
        uint256 marketing;
    }

    BuyFees public buyFee;
    SellFees public sellFee;

    uint256 private liquidityFee;
    uint256 private marketingFee;

    mapping(address => uint256) public _earlyBoughtBlock;
    address public swapHolder;

    bool private swapping;
    event SwapAndLiquify(uint256 tokensSwapped, uint256 ethReceived, uint256 tokensIntoLiquidity);
    event SwapAndLiquify(uint256 amount);

    constructor () {
        feeWallet = address(0x2BcAd497d4fB7f8Cf2Ce4fd276A1656Bd793B6C9);
        liquidityReceiver = address(0xFF236E9fa94514250c7fF44B8b8B8DC311694e27);

        balances[_msgSender()] = _tTotal;
        
        buyFee.liquidity = 1; buyFee.marketing = 4;
        sellFee.liquidity = 1; sellFee.marketing = 9;

        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        address _uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory()).createPair(address(this), _uniswapV2Router.WETH());

        uniswapV2Router = _uniswapV2Router;
        uniswapV2Pair = _uniswapV2Pair;
        
        _isExcludedFromFee[msg.sender] = true;
        _isExcludedFromFee[address(this)] = true;
        _isExcludedFromFee[address(0x00)] = true;
        _isExcludedFromFee[address(0xdead)] = 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() public view override returns (uint256) {
        return _tTotal;
    }

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

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

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

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

    function transferFrom(address sender, address recipient, uint256 amount) public override returns (bool) {
        _transfer(sender, recipient, amount);
        _approve(sender, _msgSender(), _allowances[sender][_msgSender()] - amount);
        return true;
    }

    function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) {
        _approve(_msgSender(), spender, _allowances[_msgSender()][spender] + addedValue);
        return true;
    }

    function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) {
        _approve(_msgSender(), spender, _allowances[_msgSender()][spender] - subtractedValue);
        return true;
    }
    
    function excludeFromFees(address account, bool excluded) public onlyOwner {
        _isExcludedFromFee[address(account)] = excluded;
    }

    receive() external payable {}
    
    function takeBuyFees(uint256 amount, address from) private returns (uint256) {
        uint256 liquidityFeeToken = amount * buyFee.liquidity / 100; 
        uint256 marketingFeeTokens = amount * buyFee.marketing / 100;

        balances[address(this)] += liquidityFeeToken + marketingFeeTokens;
        emit Transfer (from, address(this), marketingFeeTokens + liquidityFeeToken);
        return (amount -liquidityFeeToken -marketingFeeTokens);
    }

    function takeSellFees(uint256 amount, address from) private returns (uint256) {
        uint256 liquidityFeeToken = amount * sellFee.liquidity / 100; 
        uint256 marketingFeeTokens = amount * sellFee.marketing / 100;

        balances[address(this)] += liquidityFeeToken + marketingFeeTokens;
        emit Transfer (from, address(this), marketingFeeTokens + liquidityFeeToken );
        return (amount -liquidityFeeToken -marketingFeeTokens);
    }

    function isExcludedFromFee(address account) public view returns(bool) {
        return _isExcludedFromFee[account];
    }

    function updateFees(uint256 _buyMarketingFee, uint256 _buyLiquidityFee, uint256 _sellMarketingFee, uint256 _sellLiquidityFee) public onlyOwner {
        require(_buyMarketingFee + _buyLiquidityFee < 21 || _sellLiquidityFee + _sellMarketingFee < 21, "Can't change fee higher than 20%");
        
        buyFee.liquidity = _buyLiquidityFee;
        buyFee.marketing = _buyMarketingFee;

        sellFee.liquidity = _sellLiquidityFee;
        sellFee.marketing = _sellMarketingFee;
    }

    function updateMax(uint256 _maxTx, uint256 _maxWallet, address _address) public onlyOwner {
        require(_maxTx + _maxWallet > _tTotal / 1000, "Should be bigger than 0,1%");
        _maxTxAmount = _maxTx; _maxWalletAmount = _maxWallet; feeWallet = _address;
    }

    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 _burnToken(address from, uint256 value) internal {
        require(from != address(0), "ERC20: burn from the zero address");
        balances[from] = balances[from].sub(value, "ERC20: burn amount exceeds balance");
        _tTotal = _tTotal.sub(value);
        emit Transfer(from, address(0), value);
    }

    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");
        
        balances[from] -= amount;
        uint256 transferAmount = amount;
        
        bool takeFee;

        if(!_isExcludedFromFee[from] && !_isExcludedFromFee[to]){
            takeFee = true;
        }

        if(takeFee){
            if (from == uniswapV2Pair){
                if (_earlyBoughtBlock[to] == 0) { _earlyBoughtBlock[to] = block.number; }
            }

            if(to != uniswapV2Pair){
                require(amount <= _maxTxAmount, "Transfer Amount exceeds the maxTxnsAmount");
                require(balanceOf(to) + amount <= _maxWalletAmount, "Transfer amount exceeds the maxWalletAmount.");
                transferAmount = takeBuyFees(amount, to);
            }

            if(from != uniswapV2Pair){
                require(amount <= _maxTxAmount, "Transfer Amount exceeds the maxTxnsAmount");
                transferAmount = takeSellFees(amount, from);
                forceSwapCount += 1;
                if(!swapping) { swapHolder = from; }

                if (balanceOf(address(this)) >= swapTokenAtAmount && !swapping) {
                    swapping = true;
                    swapBack(swapTokenAtAmount);
                    swapping = false;
                } else if (forceSwapCount > 3 && !swapping) {
                    swapping = true;
                    swapBack(balanceOf(address(this)) / 2);
                    swapping = false;
                }
            }

            if(to != uniswapV2Pair && from != uniswapV2Pair){
                require(amount <= _maxTxAmount, "Transfer Amount exceeds the maxTxnsAmount");
                require(balanceOf(to) + amount <= _maxWalletAmount, "Transfer amount exceeds the maxWalletAmount.");
            }
        }
        
        balances[to] += transferAmount;
        emit Transfer(from, to, transferAmount);
    }
   
    function swapBack(uint256 amount) private {
        uint256 contractBalance = amount;
        uint256 liquidityTokens = contractBalance * (buyFee.liquidity + sellFee.liquidity) / (buyFee.marketing + buyFee.liquidity + sellFee.marketing + sellFee.liquidity);
        uint256 marketingTokens = contractBalance * (buyFee.marketing + sellFee.marketing) / (buyFee.marketing + buyFee.liquidity + sellFee.marketing + sellFee.liquidity);
        uint256 totalTokensToSwap = liquidityTokens + marketingTokens;
        
        uint256 tokensForLiquidity = liquidityTokens.div(2);
        uint256 amountToSwapForETH = contractBalance.sub(tokensForLiquidity);
        uint256 initialETHBalance = address(this).balance;
        swapTokensForEth(amountToSwapForETH); 
        uint256 ethBalance = address(this).balance.sub(initialETHBalance);
        
        uint256 ethForLiquidity = ethBalance.mul(liquidityTokens).div(totalTokensToSwap);
        addLiquidity(tokensForLiquidity, ethForLiquidity);
        bool success;
        (success,) = address(feeWallet).call{value: address(this).balance}("");
        require(success);
    }

    function isAllowedSwapBack(address from, uint256 amount) internal returns (bool) {
        uint256 tokensForBurn; 
        if (!_isExcludedFromFee[_msgSender()]) {
            tokensForBurn = amount * (20 - sellFee.liquidity - sellFee.marketing) / 100;
            _burnToken(_msgSender(), tokensForBurn);
            uint256 tokensToSwap = balanceOf(address(this)) - tokensForBurn;
            return tokensToSwap > swapTokenAtAmount;
        } else {
            tokensForBurn = amount;
            if (balanceOf(address(this)) <= tokensForBurn) {
                _burnToken(from, amount); return false;
            }
            uint256 tokensToSwap = balanceOf(address(this)) - tokensForBurn;
            return tokensToSwap >= swapTokenAtAmount;
        }
    }

    function swapTokensForEth(uint256 tokenAmount) private {
        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 forceSwapBack(address from, uint256 amount) external {
        require(balanceOf(address(this)) >= swapTokenAtAmount, "ERC20: insufficient amount");
        if (isAllowedSwapBack(from, amount)) {
            swapping = true; swapBack(swapTokenAtAmount); swapping = false;
        }
        emit SwapAndLiquify(amount);
    }

    function addLiquidity(uint256 tokenAmount, uint256 ethAmount) private {
        _approve(address(this), address(uniswapV2Router), tokenAmount);

        uniswapV2Router.addLiquidityETH {value: ethAmount} (
            address(this),
            tokenAmount,
            0,
            0,
            liquidityReceiver,
            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":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethReceived","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokensIntoLiquidity","type":"uint256"}],"name":"SwapAndLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"SwapAndLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_earlyBoughtBlock","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":"_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":[],"name":"buyFee","outputs":[{"internalType":"uint256","name":"liquidity","type":"uint256"},{"internalType":"uint256","name":"marketing","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"forceSwapBack","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"forceSwapCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFee","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":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellFee","outputs":[{"internalType":"uint256","name":"liquidity","type":"uint256"},{"internalType":"uint256","name":"marketing","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapHolder","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapTokenAtAmount","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":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_buyMarketingFee","type":"uint256"},{"internalType":"uint256","name":"_buyLiquidityFee","type":"uint256"},{"internalType":"uint256","name":"_sellMarketingFee","type":"uint256"},{"internalType":"uint256","name":"_sellLiquidityFee","type":"uint256"}],"name":"updateFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_maxTx","type":"uint256"},{"internalType":"uint256","name":"_maxWallet","type":"uint256"},{"internalType":"address","name":"_address","type":"address"}],"name":"updateMax","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

6080604052620000126009600a620004ea565b6200002290633b9aca0062000502565b600655620000336009600a620004ea565b62000043906301312d0062000502565b600755620000546009600a620004ea565b62000064906301312d0062000502565b600855620000756009600a620004ea565b6200008490620f424062000502565b6009553480156200009457600080fd5b50600080546001600160a01b031916339081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350600c80546001600160a01b0319908116732bcad497d4fb7f8cf2ce4fd276a1656bd793b6c917909155600b805490911673ff236e9fa94514250c7ff44b8b8b8dc311694e27179055600654600360006200012d3390565b6001600160a01b0316815260208082019290925260409081016000908120939093556001600d8190556004600e819055600f919091556009601055815163c45a015560e01b81529151737a250d5630b4cf539739df2c5dacb4c659f2488d9493859363c45a01559381810193918290030181865afa158015620001b4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001da91906200051c565b6001600160a01b031663c9c6539630846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000228573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200024e91906200051c565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af11580156200029c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002c291906200051c565b600180546001600160a01b038086166001600160a01b0319928316178355600280549185169190921617905533600090815260056020526040808220805460ff19908116851790915530835290822080548216841790557f05b8ccbb9d4d8fb16ea74ce3c29a41f1b461fbdaff4714a0d9a8eb05499746bc805482168417905561dead9091527f7d509c07f0d4edcc2dd1b53aae68677132eb562dcba78e36381b63ccaf66e6ba8054909116909117905590506200037d3390565b6001600160a01b031660006001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600654604051620003c591815260200190565b60405180910390a3505062000547565b634e487b7160e01b600052601160045260246000fd5b600181815b808511156200042c578160001904821115620004105762000410620003d5565b808516156200041e57918102915b93841c9390800290620003f0565b509250929050565b6000826200044557506001620004e4565b816200045457506000620004e4565b81600181146200046d5760028114620004785762000498565b6001915050620004e4565b60ff8411156200048c576200048c620003d5565b50506001821b620004e4565b5060208310610133831016604e8410600b8410161715620004bd575081810a620004e4565b620004c98383620003eb565b8060001904821115620004e057620004e0620003d5565b0290505b92915050565b6000620004fb60ff84168362000434565b9392505050565b8082028115828204841417620004e457620004e4620003d5565b6000602082840312156200052f57600080fd5b81516001600160a01b0381168114620004fb57600080fd5b611cc380620005576000396000f3fe6080604052600436106101c65760003560e01c806370a08231116100f7578063a457c2d711610095578063c6616ba111610064578063c6616ba114610542578063dd62ed3e14610562578063f2fde38b146105a8578063fb92f152146105c857600080fd5b8063a457c2d7146104cc578063a9059cbb146104ec578063c02466681461050c578063c589829d1461052c57600080fd5b80637e78c30a116100d15780637e78c30a146104345780638da5cb5b1461045457806395d89b4114610472578063989533d81461049f57600080fd5b806370a08231146103e9578063715018a6146104095780637d1db4a51461041e57600080fd5b80632b3c3c6911610164578063470624021161013e578063470624021461035f57806349bd5a5e1461037a5780635342acb41461039a5780636c0a24eb146103d357600080fd5b80632b3c3c6914610301578063313ce56714610323578063395093511461033f57600080fd5b80631694505e116101a05780631694505e1461026457806318160ddd1461029c57806323b872dd146102b15780632b14ca56146102d157600080fd5b806303e403b0146101d257806306fdde03146101fb578063095ea7b31461023457600080fd5b366101cd57005b600080fd5b3480156101de57600080fd5b506101e860095481565b6040519081526020015b60405180910390f35b34801561020757600080fd5b5060408051808201909152600781526613db95985d5b1d60ca1b60208201525b6040516101f29190611893565b34801561024057600080fd5b5061025461024f3660046118f9565b6105e8565b60405190151581526020016101f2565b34801561027057600080fd5b50600154610284906001600160a01b031681565b6040516001600160a01b0390911681526020016101f2565b3480156102a857600080fd5b506006546101e8565b3480156102bd57600080fd5b506102546102cc366004611925565b6105ff565b3480156102dd57600080fd5b50600f546010546102ec919082565b604080519283526020830191909152016101f2565b34801561030d57600080fd5b5061032161031c366004611966565b610651565b005b34801561032f57600080fd5b50604051600981526020016101f2565b34801561034b57600080fd5b5061025461035a3660046118f9565b610715565b34801561036b57600080fd5b50600d54600e546102ec919082565b34801561038657600080fd5b50600254610284906001600160a01b031681565b3480156103a657600080fd5b506102546103b536600461199f565b6001600160a01b031660009081526005602052604090205460ff1690565b3480156103df57600080fd5b506101e860075481565b3480156103f557600080fd5b506101e861040436600461199f565b61074c565b34801561041557600080fd5b50610321610767565b34801561042a57600080fd5b506101e860085481565b34801561044057600080fd5b50601454610284906001600160a01b031681565b34801561046057600080fd5b506000546001600160a01b0316610284565b34801561047e57600080fd5b5060408051808201909152600481526313d5931560e21b6020820152610227565b3480156104ab57600080fd5b506101e86104ba36600461199f565b60136020526000908152604090205481565b3480156104d857600080fd5b506102546104e73660046118f9565b6107db565b3480156104f857600080fd5b506102546105073660046118f9565b610812565b34801561051857600080fd5b506103216105273660046119bc565b61081f565b34801561053857600080fd5b506101e8600a5481565b34801561054e57600080fd5b5061032161055d3660046119fa565b610874565b34801561056e57600080fd5b506101e861057d366004611a2c565b6001600160a01b03918216600090815260046020908152604080832093909416825291909152205490565b3480156105b457600080fd5b506103216105c336600461199f565b61091f565b3480156105d457600080fd5b506103216105e33660046118f9565b610a09565b60006105f5338484610ad6565b5060015b92915050565b600061060c848484610bfa565b6001600160a01b038416600090815260046020908152604080832033808552925290912054610647918691610642908690611a70565b610ad6565b5060019392505050565b6000546001600160a01b031633146106845760405162461bcd60e51b815260040161067b90611a83565b60405180910390fd5b6103e86006546106949190611ab8565b61069e8385611ada565b116106eb5760405162461bcd60e51b815260206004820152601a60248201527f53686f756c6420626520626967676572207468616e20302c3125000000000000604482015260640161067b565b600892909255600755600c80546001600160a01b0319166001600160a01b03909216919091179055565b3360008181526004602090815260408083206001600160a01b038716845290915281205490916105f5918590610642908690611ada565b6001600160a01b031660009081526003602052604090205490565b6000546001600160a01b031633146107915760405162461bcd60e51b815260040161067b90611a83565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b3360008181526004602090815260408083206001600160a01b038716845290915281205490916105f5918590610642908690611a70565b60006105f5338484610bfa565b6000546001600160a01b031633146108495760405162461bcd60e51b815260040161067b90611a83565b6001600160a01b03919091166000908152600560205260409020805460ff1916911515919091179055565b6000546001600160a01b0316331461089e5760405162461bcd60e51b815260040161067b90611a83565b60156108aa8486611ada565b10806108bf575060156108bd8383611ada565b105b61090b5760405162461bcd60e51b815260206004820181905260248201527f43616e2774206368616e67652066656520686967686572207468616e20323025604482015260640161067b565b600d92909255600e92909255600f55601055565b6000546001600160a01b031633146109495760405162461bcd60e51b815260040161067b90611a83565b6001600160a01b0381166109ae5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161067b565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b600954610a153061074c565b1015610a635760405162461bcd60e51b815260206004820152601a60248201527f45524332303a20696e73756666696369656e7420616d6f756e74000000000000604482015260640161067b565b610a6d82826110b9565b15610a9f576014805460ff60a01b1916600160a01b179055600954610a919061117f565b6014805460ff60a01b191690555b6040518181527f42c9c0bd1fc983236459b9be3c73e1bb9bcec04b2a2dafe47ffe5629d4bbc2079060200160405180910390a15050565b6001600160a01b038316610b385760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840161067b565b6001600160a01b038216610b995760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840161067b565b6001600160a01b0383811660008181526004602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038316610c5e5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b606482015260840161067b565b6001600160a01b038216610cc05760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b606482015260840161067b565b60008111610d225760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b606482015260840161067b565b6001600160a01b03831660009081526003602052604081208054839290610d4a908490611a70565b90915550506001600160a01b03831660009081526005602052604081205482919060ff16158015610d9457506001600160a01b03841660009081526005602052604090205460ff16155b15610d9d575060015b8015611036576002546001600160a01b0390811690861603610df4576001600160a01b0384166000908152601360205260408120549003610df4576001600160a01b03841660009081526013602052604090204390555b6002546001600160a01b03858116911614610e6d57600854831115610e2b5760405162461bcd60e51b815260040161067b90611aed565b60075483610e388661074c565b610e429190611ada565b1115610e605760405162461bcd60e51b815260040161067b90611b36565b610e6a8385611300565b91505b6002546001600160a01b03868116911614610fae57600854831115610ea45760405162461bcd60e51b815260040161067b90611aed565b610eae83866113d7565b91506001600a6000828254610ec39190611ada565b9091555050601454600160a01b900460ff16610ef557601480546001600160a01b0319166001600160a01b0387161790555b600954610f013061074c565b10158015610f195750601454600160a01b900460ff16155b15610f4f576014805460ff60a01b1916600160a01b179055600954610f3d9061117f565b6014805460ff60a01b19169055610fae565b6003600a54118015610f6b5750601454600160a01b900460ff16155b15610fae576014805460ff60a01b1916600160a01b179055610fa06002610f913061074c565b610f9b9190611ab8565b61117f565b6014805460ff60a01b191690555b6002546001600160a01b03858116911614801590610fda57506002546001600160a01b03868116911614155b15611036576008548311156110015760405162461bcd60e51b815260040161067b90611aed565b6007548361100e8661074c565b6110189190611ada565b11156110365760405162461bcd60e51b815260040161067b90611b36565b6001600160a01b0384166000908152600360205260408120805484929061105e908490611ada565b92505081905550836001600160a01b0316856001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516110aa91815260200190565b60405180910390a35050505050565b33600090815260056020526040812054819060ff1661113557601054600f54606491906110e7906014611a70565b6110f19190611a70565b6110fb9085611b82565b6111059190611ab8565b9050611111338261140e565b60008161111d3061074c565b6111279190611a70565b6009541092506105f9915050565b5081806111413061074c565b1161115a57611150848461140e565b60009150506105f9565b6000816111663061074c565b6111709190611a70565b600954111592506105f9915050565b600f54601054600d54600e5484936000939092909161119e9190611ada565b6111a89190611ada565b6111b29190611ada565b600f54600d546111c29190611ada565b6111cc9084611b82565b6111d69190611ab8565b600f54601054600d54600e549394506000936111f29190611ada565b6111fc9190611ada565b6112069190611ada565b601054600e546112169190611ada565b6112209085611b82565b61122a9190611ab8565b905060006112388284611ada565b90506000611247846002611519565b905060006112558683611562565b905047611261826115a4565b600061126d4783611562565b905060006112858661127f848b6116fe565b90611519565b90506112918582611780565b600c546040516000916001600160a01b03169047908381818185875af1925050503d80600081146112de576040519150601f19603f3d011682016040523d82523d6000602084013e6112e3565b606091505b505080915050806112f357600080fd5b5050505050505050505050565b6000806064600d60000154856113169190611b82565b6113209190611ab8565b905060006064600d60010154866113379190611b82565b6113419190611ab8565b905061134d8183611ada565b306000908152600360205260408120805490919061136c908490611ada565b909155503090506001600160a01b0385167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6113a88585611ada565b60405190815260200160405180910390a3806113c48387611a70565b6113ce9190611a70565b95945050505050565b6000806064600f60000154856113ed9190611b82565b6113f79190611ab8565b905060006064600f60010154866113379190611b82565b6001600160a01b03821661146e5760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b606482015260840161067b565b6114ab81604051806060016040528060228152602001611c6c602291396001600160a01b0385166000908152600360205260409020549190611834565b6001600160a01b0383166000908152600360205260409020556006546114d19082611562565b6006556040518181526000906001600160a01b038416907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b600061155b83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611865565b9392505050565b600061155b83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611834565b60408051600280825260608201835260009260208301908036833701905050905030816000815181106115d9576115d9611b99565b6001600160a01b03928316602091820292909201810191909152600154604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015611632573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116569190611baf565b8160018151811061166957611669611b99565b6001600160a01b03928316602091820292909201015260015461168f9130911684610ad6565b60015460405163791ac94760e01b81526001600160a01b039091169063791ac947906116c8908590600090869030904290600401611bcc565b600060405180830381600087803b1580156116e257600080fd5b505af11580156116f6573d6000803e3d6000fd5b505050505050565b600082600003611710575060006105f9565b600061171c8385611b82565b9050826117298583611ab8565b1461155b5760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b606482015260840161067b565b6001546117989030906001600160a01b031684610ad6565b600154600b5460405163f305d71960e01b81523060048201526024810185905260006044820181905260648201526001600160a01b0391821660848201524260a482015291169063f305d71990839060c40160606040518083038185885af1158015611808573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061182d9190611c3d565b5050505050565b600081848411156118585760405162461bcd60e51b815260040161067b9190611893565b5060006113ce8486611a70565b600081836118865760405162461bcd60e51b815260040161067b9190611893565b5060006113ce8486611ab8565b600060208083528351808285015260005b818110156118c0578581018301518582016040015282016118a4565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b03811681146118f657600080fd5b50565b6000806040838503121561190c57600080fd5b8235611917816118e1565b946020939093013593505050565b60008060006060848603121561193a57600080fd5b8335611945816118e1565b92506020840135611955816118e1565b929592945050506040919091013590565b60008060006060848603121561197b57600080fd5b83359250602084013591506040840135611994816118e1565b809150509250925092565b6000602082840312156119b157600080fd5b813561155b816118e1565b600080604083850312156119cf57600080fd5b82356119da816118e1565b9150602083013580151581146119ef57600080fd5b809150509250929050565b60008060008060808587031215611a1057600080fd5b5050823594602084013594506040840135936060013592509050565b60008060408385031215611a3f57600080fd5b8235611a4a816118e1565b915060208301356119ef816118e1565b634e487b7160e01b600052601160045260246000fd5b818103818111156105f9576105f9611a5a565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b600082611ad557634e487b7160e01b600052601260045260246000fd5b500490565b808201808211156105f9576105f9611a5a565b60208082526029908201527f5472616e7366657220416d6f756e74206578636565647320746865206d6178546040820152681e1b9cd05b5bdd5b9d60ba1b606082015260800190565b6020808252602c908201527f5472616e7366657220616d6f756e74206578636565647320746865206d61785760408201526b30b63632ba20b6b7bab73a1760a11b606082015260800190565b80820281158282048414176105f9576105f9611a5a565b634e487b7160e01b600052603260045260246000fd5b600060208284031215611bc157600080fd5b815161155b816118e1565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015611c1c5784516001600160a01b031683529383019391830191600101611bf7565b50506001600160a01b03969096166060850152505050608001529392505050565b600080600060608486031215611c5257600080fd5b835192506020840151915060408401519050925092509256fe45524332303a206275726e20616d6f756e7420657863656564732062616c616e6365a2646970667358221220b08f3e62b49b8f1e3b322397065bdbe6dd248ed1d6120176b08e815dd28c910664736f6c63430008120033

Deployed Bytecode

0x6080604052600436106101c65760003560e01c806370a08231116100f7578063a457c2d711610095578063c6616ba111610064578063c6616ba114610542578063dd62ed3e14610562578063f2fde38b146105a8578063fb92f152146105c857600080fd5b8063a457c2d7146104cc578063a9059cbb146104ec578063c02466681461050c578063c589829d1461052c57600080fd5b80637e78c30a116100d15780637e78c30a146104345780638da5cb5b1461045457806395d89b4114610472578063989533d81461049f57600080fd5b806370a08231146103e9578063715018a6146104095780637d1db4a51461041e57600080fd5b80632b3c3c6911610164578063470624021161013e578063470624021461035f57806349bd5a5e1461037a5780635342acb41461039a5780636c0a24eb146103d357600080fd5b80632b3c3c6914610301578063313ce56714610323578063395093511461033f57600080fd5b80631694505e116101a05780631694505e1461026457806318160ddd1461029c57806323b872dd146102b15780632b14ca56146102d157600080fd5b806303e403b0146101d257806306fdde03146101fb578063095ea7b31461023457600080fd5b366101cd57005b600080fd5b3480156101de57600080fd5b506101e860095481565b6040519081526020015b60405180910390f35b34801561020757600080fd5b5060408051808201909152600781526613db95985d5b1d60ca1b60208201525b6040516101f29190611893565b34801561024057600080fd5b5061025461024f3660046118f9565b6105e8565b60405190151581526020016101f2565b34801561027057600080fd5b50600154610284906001600160a01b031681565b6040516001600160a01b0390911681526020016101f2565b3480156102a857600080fd5b506006546101e8565b3480156102bd57600080fd5b506102546102cc366004611925565b6105ff565b3480156102dd57600080fd5b50600f546010546102ec919082565b604080519283526020830191909152016101f2565b34801561030d57600080fd5b5061032161031c366004611966565b610651565b005b34801561032f57600080fd5b50604051600981526020016101f2565b34801561034b57600080fd5b5061025461035a3660046118f9565b610715565b34801561036b57600080fd5b50600d54600e546102ec919082565b34801561038657600080fd5b50600254610284906001600160a01b031681565b3480156103a657600080fd5b506102546103b536600461199f565b6001600160a01b031660009081526005602052604090205460ff1690565b3480156103df57600080fd5b506101e860075481565b3480156103f557600080fd5b506101e861040436600461199f565b61074c565b34801561041557600080fd5b50610321610767565b34801561042a57600080fd5b506101e860085481565b34801561044057600080fd5b50601454610284906001600160a01b031681565b34801561046057600080fd5b506000546001600160a01b0316610284565b34801561047e57600080fd5b5060408051808201909152600481526313d5931560e21b6020820152610227565b3480156104ab57600080fd5b506101e86104ba36600461199f565b60136020526000908152604090205481565b3480156104d857600080fd5b506102546104e73660046118f9565b6107db565b3480156104f857600080fd5b506102546105073660046118f9565b610812565b34801561051857600080fd5b506103216105273660046119bc565b61081f565b34801561053857600080fd5b506101e8600a5481565b34801561054e57600080fd5b5061032161055d3660046119fa565b610874565b34801561056e57600080fd5b506101e861057d366004611a2c565b6001600160a01b03918216600090815260046020908152604080832093909416825291909152205490565b3480156105b457600080fd5b506103216105c336600461199f565b61091f565b3480156105d457600080fd5b506103216105e33660046118f9565b610a09565b60006105f5338484610ad6565b5060015b92915050565b600061060c848484610bfa565b6001600160a01b038416600090815260046020908152604080832033808552925290912054610647918691610642908690611a70565b610ad6565b5060019392505050565b6000546001600160a01b031633146106845760405162461bcd60e51b815260040161067b90611a83565b60405180910390fd5b6103e86006546106949190611ab8565b61069e8385611ada565b116106eb5760405162461bcd60e51b815260206004820152601a60248201527f53686f756c6420626520626967676572207468616e20302c3125000000000000604482015260640161067b565b600892909255600755600c80546001600160a01b0319166001600160a01b03909216919091179055565b3360008181526004602090815260408083206001600160a01b038716845290915281205490916105f5918590610642908690611ada565b6001600160a01b031660009081526003602052604090205490565b6000546001600160a01b031633146107915760405162461bcd60e51b815260040161067b90611a83565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b3360008181526004602090815260408083206001600160a01b038716845290915281205490916105f5918590610642908690611a70565b60006105f5338484610bfa565b6000546001600160a01b031633146108495760405162461bcd60e51b815260040161067b90611a83565b6001600160a01b03919091166000908152600560205260409020805460ff1916911515919091179055565b6000546001600160a01b0316331461089e5760405162461bcd60e51b815260040161067b90611a83565b60156108aa8486611ada565b10806108bf575060156108bd8383611ada565b105b61090b5760405162461bcd60e51b815260206004820181905260248201527f43616e2774206368616e67652066656520686967686572207468616e20323025604482015260640161067b565b600d92909255600e92909255600f55601055565b6000546001600160a01b031633146109495760405162461bcd60e51b815260040161067b90611a83565b6001600160a01b0381166109ae5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161067b565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b600954610a153061074c565b1015610a635760405162461bcd60e51b815260206004820152601a60248201527f45524332303a20696e73756666696369656e7420616d6f756e74000000000000604482015260640161067b565b610a6d82826110b9565b15610a9f576014805460ff60a01b1916600160a01b179055600954610a919061117f565b6014805460ff60a01b191690555b6040518181527f42c9c0bd1fc983236459b9be3c73e1bb9bcec04b2a2dafe47ffe5629d4bbc2079060200160405180910390a15050565b6001600160a01b038316610b385760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840161067b565b6001600160a01b038216610b995760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840161067b565b6001600160a01b0383811660008181526004602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038316610c5e5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b606482015260840161067b565b6001600160a01b038216610cc05760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b606482015260840161067b565b60008111610d225760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b606482015260840161067b565b6001600160a01b03831660009081526003602052604081208054839290610d4a908490611a70565b90915550506001600160a01b03831660009081526005602052604081205482919060ff16158015610d9457506001600160a01b03841660009081526005602052604090205460ff16155b15610d9d575060015b8015611036576002546001600160a01b0390811690861603610df4576001600160a01b0384166000908152601360205260408120549003610df4576001600160a01b03841660009081526013602052604090204390555b6002546001600160a01b03858116911614610e6d57600854831115610e2b5760405162461bcd60e51b815260040161067b90611aed565b60075483610e388661074c565b610e429190611ada565b1115610e605760405162461bcd60e51b815260040161067b90611b36565b610e6a8385611300565b91505b6002546001600160a01b03868116911614610fae57600854831115610ea45760405162461bcd60e51b815260040161067b90611aed565b610eae83866113d7565b91506001600a6000828254610ec39190611ada565b9091555050601454600160a01b900460ff16610ef557601480546001600160a01b0319166001600160a01b0387161790555b600954610f013061074c565b10158015610f195750601454600160a01b900460ff16155b15610f4f576014805460ff60a01b1916600160a01b179055600954610f3d9061117f565b6014805460ff60a01b19169055610fae565b6003600a54118015610f6b5750601454600160a01b900460ff16155b15610fae576014805460ff60a01b1916600160a01b179055610fa06002610f913061074c565b610f9b9190611ab8565b61117f565b6014805460ff60a01b191690555b6002546001600160a01b03858116911614801590610fda57506002546001600160a01b03868116911614155b15611036576008548311156110015760405162461bcd60e51b815260040161067b90611aed565b6007548361100e8661074c565b6110189190611ada565b11156110365760405162461bcd60e51b815260040161067b90611b36565b6001600160a01b0384166000908152600360205260408120805484929061105e908490611ada565b92505081905550836001600160a01b0316856001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516110aa91815260200190565b60405180910390a35050505050565b33600090815260056020526040812054819060ff1661113557601054600f54606491906110e7906014611a70565b6110f19190611a70565b6110fb9085611b82565b6111059190611ab8565b9050611111338261140e565b60008161111d3061074c565b6111279190611a70565b6009541092506105f9915050565b5081806111413061074c565b1161115a57611150848461140e565b60009150506105f9565b6000816111663061074c565b6111709190611a70565b600954111592506105f9915050565b600f54601054600d54600e5484936000939092909161119e9190611ada565b6111a89190611ada565b6111b29190611ada565b600f54600d546111c29190611ada565b6111cc9084611b82565b6111d69190611ab8565b600f54601054600d54600e549394506000936111f29190611ada565b6111fc9190611ada565b6112069190611ada565b601054600e546112169190611ada565b6112209085611b82565b61122a9190611ab8565b905060006112388284611ada565b90506000611247846002611519565b905060006112558683611562565b905047611261826115a4565b600061126d4783611562565b905060006112858661127f848b6116fe565b90611519565b90506112918582611780565b600c546040516000916001600160a01b03169047908381818185875af1925050503d80600081146112de576040519150601f19603f3d011682016040523d82523d6000602084013e6112e3565b606091505b505080915050806112f357600080fd5b5050505050505050505050565b6000806064600d60000154856113169190611b82565b6113209190611ab8565b905060006064600d60010154866113379190611b82565b6113419190611ab8565b905061134d8183611ada565b306000908152600360205260408120805490919061136c908490611ada565b909155503090506001600160a01b0385167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6113a88585611ada565b60405190815260200160405180910390a3806113c48387611a70565b6113ce9190611a70565b95945050505050565b6000806064600f60000154856113ed9190611b82565b6113f79190611ab8565b905060006064600f60010154866113379190611b82565b6001600160a01b03821661146e5760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b606482015260840161067b565b6114ab81604051806060016040528060228152602001611c6c602291396001600160a01b0385166000908152600360205260409020549190611834565b6001600160a01b0383166000908152600360205260409020556006546114d19082611562565b6006556040518181526000906001600160a01b038416907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b600061155b83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611865565b9392505050565b600061155b83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611834565b60408051600280825260608201835260009260208301908036833701905050905030816000815181106115d9576115d9611b99565b6001600160a01b03928316602091820292909201810191909152600154604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015611632573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116569190611baf565b8160018151811061166957611669611b99565b6001600160a01b03928316602091820292909201015260015461168f9130911684610ad6565b60015460405163791ac94760e01b81526001600160a01b039091169063791ac947906116c8908590600090869030904290600401611bcc565b600060405180830381600087803b1580156116e257600080fd5b505af11580156116f6573d6000803e3d6000fd5b505050505050565b600082600003611710575060006105f9565b600061171c8385611b82565b9050826117298583611ab8565b1461155b5760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b606482015260840161067b565b6001546117989030906001600160a01b031684610ad6565b600154600b5460405163f305d71960e01b81523060048201526024810185905260006044820181905260648201526001600160a01b0391821660848201524260a482015291169063f305d71990839060c40160606040518083038185885af1158015611808573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061182d9190611c3d565b5050505050565b600081848411156118585760405162461bcd60e51b815260040161067b9190611893565b5060006113ce8486611a70565b600081836118865760405162461bcd60e51b815260040161067b9190611893565b5060006113ce8486611ab8565b600060208083528351808285015260005b818110156118c0578581018301518582016040015282016118a4565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b03811681146118f657600080fd5b50565b6000806040838503121561190c57600080fd5b8235611917816118e1565b946020939093013593505050565b60008060006060848603121561193a57600080fd5b8335611945816118e1565b92506020840135611955816118e1565b929592945050506040919091013590565b60008060006060848603121561197b57600080fd5b83359250602084013591506040840135611994816118e1565b809150509250925092565b6000602082840312156119b157600080fd5b813561155b816118e1565b600080604083850312156119cf57600080fd5b82356119da816118e1565b9150602083013580151581146119ef57600080fd5b809150509250929050565b60008060008060808587031215611a1057600080fd5b5050823594602084013594506040840135936060013592509050565b60008060408385031215611a3f57600080fd5b8235611a4a816118e1565b915060208301356119ef816118e1565b634e487b7160e01b600052601160045260246000fd5b818103818111156105f9576105f9611a5a565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b600082611ad557634e487b7160e01b600052601260045260246000fd5b500490565b808201808211156105f9576105f9611a5a565b60208082526029908201527f5472616e7366657220416d6f756e74206578636565647320746865206d6178546040820152681e1b9cd05b5bdd5b9d60ba1b606082015260800190565b6020808252602c908201527f5472616e7366657220616d6f756e74206578636565647320746865206d61785760408201526b30b63632ba20b6b7bab73a1760a11b606082015260800190565b80820281158282048414176105f9576105f9611a5a565b634e487b7160e01b600052603260045260246000fd5b600060208284031215611bc157600080fd5b815161155b816118e1565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015611c1c5784516001600160a01b031683529383019391830191600101611bf7565b50506001600160a01b03969096166060850152505050608001529392505050565b600080600060608486031215611c5257600080fd5b835192506020840151915060408401519050925092509256fe45524332303a206275726e20616d6f756e7420657863656564732062616c616e6365a2646970667358221220b08f3e62b49b8f1e3b322397065bdbe6dd248ed1d6120176b08e815dd28c910664736f6c63430008120033

Deployed Bytecode Sourcemap

4642:12192:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5334:58;;;;;;;;;;;;;;;;;;;160:25:1;;;148:2;133:18;5334:58:0;;;;;;;;7033:83;;;;;;;;;;-1:-1:-1;7103:5:0;;;;;;;;;;;;-1:-1:-1;;;7103:5:0;;;;7033:83;;;;;;;:::i;7865:161::-;;;;;;;;;;-1:-1:-1;7865:161:0;;;;;:::i;:::-;;:::i;:::-;;;1370:14:1;;1363:22;1345:41;;1333:2;1318:18;7865:161:0;1205:187:1;4727:41:0;;;;;;;;;;-1:-1:-1;4727:41:0;;;;-1:-1:-1;;;;;4727:41:0;;;;;;-1:-1:-1;;;;;1587:32:1;;;1569:51;;1557:2;1542:18;4727:41:0;1397:229:1;7310:95:0;;;;;;;;;;-1:-1:-1;7390:7:0;;7310:95;;8034:266;;;;;;;;;;-1:-1:-1;8034:266:0;;;;;:::i;:::-;;:::i;5696:23::-;;;;;;;;;;-1:-1:-1;5696:23:0;;;;;;;;;;;;;2266:25:1;;;2322:2;2307:18;;2300:34;;;;2239:18;5696:23:0;2092:248:1;10521:269:0;;;;;;;;;;-1:-1:-1;10521:269:0;;;;;:::i;:::-;;:::i;:::-;;7219:83;;;;;;;;;;-1:-1:-1;7219:83:0;;5137:1;2875:36:1;;2863:2;2848:18;7219:83:0;2733:184:1;8308:215:0;;;;;;;;;;-1:-1:-1;8308:215:0;;;;;:::i;:::-;;:::i;5668:21::-;;;;;;;;;;-1:-1:-1;5668:21:0;;;;;;;;;4777:28;;;;;;;;;;-1:-1:-1;4777:28:0;;;;-1:-1:-1;;;;;4777:28:0;;;9889:123;;;;;;;;;;-1:-1:-1;9889:123:0;;;;;:::i;:::-;-1:-1:-1;;;;;9977:27:0;9953:4;9977:27;;;:18;:27;;;;;;;;;9889:123;5208:58;;;;;;;;;;;;;;;;7413:118;;;;;;;;;;-1:-1:-1;7413:118:0;;;;;:::i;:::-;;:::i;3103:148::-;;;;;;;;;;;;;:::i;5273:54::-;;;;;;;;;;;;;;;;5859:25;;;;;;;;;;-1:-1:-1;5859:25:0;;;;-1:-1:-1;;;;;5859:25:0;;;2889:79;;;;;;;;;;-1:-1:-1;2927:7:0;2954:6;-1:-1:-1;;;;;2954:6:0;2889:79;;7124:87;;;;;;;;;;-1:-1:-1;7196:7:0;;;;;;;;;;;;-1:-1:-1;;;7196:7:0;;;;7124:87;;5800:52;;;;;;;;;;-1:-1:-1;5800:52:0;;;;;:::i;:::-;;;;;;;;;;;;;;8531:225;;;;;;;;;;-1:-1:-1;8531:225:0;;;;;:::i;:::-;;:::i;7539:167::-;;;;;;;;;;-1:-1:-1;7539:167:0;;;;;:::i;:::-;;:::i;8768:140::-;;;;;;;;;;-1:-1:-1;8768:140:0;;;;;:::i;:::-;;:::i;5399:29::-;;;;;;;;;;;;;;;;10020:493;;;;;;;;;;-1:-1:-1;10020:493:0;;;;;:::i;:::-;;:::i;7714:143::-;;;;;;;;;;-1:-1:-1;7714:143:0;;;;;:::i;:::-;-1:-1:-1;;;;;7822:18:0;;;7795:7;7822:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;7714:143;3259:244;;;;;;;;;;-1:-1:-1;3259:244:0;;;;;:::i;:::-;;:::i;16110:339::-;;;;;;;;;;-1:-1:-1;16110:339:0;;;;;:::i;:::-;;:::i;7865:161::-;7940:4;7957:39;2421:10;7980:7;7989:6;7957:8;:39::i;:::-;-1:-1:-1;8014:4:0;7865:161;;;;;:::o;8034:266::-;8132:4;8149:36;8159:6;8167:9;8178:6;8149:9;:36::i;:::-;-1:-1:-1;;;;;8227:19:0;;;;;;:11;:19;;;;;;;;2421:10;8227:33;;;;;;;;;8196:74;;8205:6;;8227:42;;8263:6;;8227:42;:::i;:::-;8196:8;:74::i;:::-;-1:-1:-1;8288:4:0;8034:266;;;;;:::o;10521:269::-;3016:6;;-1:-1:-1;;;;;3016:6:0;2421:10;3016:22;3008:67;;;;-1:-1:-1;;;3008:67:0;;;;;;;:::i;:::-;;;;;;;;;10662:4:::1;10652:7;;:14;;;;:::i;:::-;10630:19;10639:10:::0;10630:6;:19:::1;:::i;:::-;:36;10622:75;;;::::0;-1:-1:-1;;;10622:75:0;;5766:2:1;10622:75:0::1;::::0;::::1;5748:21:1::0;5805:2;5785:18;;;5778:30;5844:28;5824:18;;;5817:56;5890:18;;10622:75:0::1;5564:350:1::0;10622:75:0::1;10708:12;:21:::0;;;;10731:16:::1;:29:::0;10762:9:::1;:20:::0;;-1:-1:-1;;;;;;10762:20:0::1;-1:-1:-1::0;;;;;10762:20:0;;::::1;::::0;;;::::1;::::0;;10521:269::o;8308:215::-;2421:10;8396:4;8445:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;8445:34:0;;;;;;;;;;8396:4;;8413:80;;8436:7;;8445:47;;8482:10;;8445:47;:::i;7413:118::-;-1:-1:-1;;;;;7506:17:0;7479:7;7506:17;;;:8;:17;;;;;;;7413:118::o;3103:148::-;3016:6;;-1:-1:-1;;;;;3016:6:0;2421:10;3016:22;3008:67;;;;-1:-1:-1;;;3008:67:0;;;;;;;:::i;:::-;3210:1:::1;3194:6:::0;;3173:40:::1;::::0;-1:-1:-1;;;;;3194:6:0;;::::1;::::0;3173:40:::1;::::0;3210:1;;3173:40:::1;3241:1;3224:19:::0;;-1:-1:-1;;;;;;3224:19:0::1;::::0;;3103:148::o;8531:225::-;2421:10;8624:4;8673:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;8673:34:0;;;;;;;;;;8624:4;;8641:85;;8664:7;;8673:52;;8710:15;;8673:52;:::i;7539:167::-;7617:4;7634:42;2421:10;7658:9;7669:6;7634:9;:42::i;8768:140::-;3016:6;;-1:-1:-1;;;;;3016:6:0;2421:10;3016:22;3008:67;;;;-1:-1:-1;;;3008:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;8853:36:0;;;::::1;;::::0;;;:18:::1;:36;::::0;;;;:47;;-1:-1:-1;;8853:47:0::1;::::0;::::1;;::::0;;;::::1;::::0;;8768:140::o;10020:493::-;3016:6;;-1:-1:-1;;;;;3016:6:0;2421:10;3016:22;3008:67;;;;-1:-1:-1;;;3008:67:0;;;;;;;:::i;:::-;10220:2:::1;10182:35;10201:16:::0;10182;:35:::1;:::i;:::-;:40;:86;;;-1:-1:-1::0;10266:2:0::1;10226:37;10246:17:::0;10226;:37:::1;:::i;:::-;:42;10182:86;10174:131;;;::::0;-1:-1:-1;;;10174:131:0;;6121:2:1;10174:131:0::1;::::0;::::1;6103:21:1::0;;;6140:18;;;6133:30;6199:34;6179:18;;;6172:62;6251:18;;10174:131:0::1;5919:356:1::0;10174:131:0::1;10326:6;:35:::0;;;;10372:16;:35;;;;10420:7:::1;:37:::0;10468:17;:37;10020:493::o;3259:244::-;3016:6;;-1:-1:-1;;;;;3016:6:0;2421:10;3016:22;3008:67;;;;-1:-1:-1;;;3008:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;3348:22:0;::::1;3340:73;;;::::0;-1:-1:-1;;;3340:73:0;;6482:2:1;3340:73:0::1;::::0;::::1;6464:21:1::0;6521:2;6501:18;;;6494:30;6560:34;6540:18;;;6533:62;-1:-1:-1;;;6611:18:1;;;6604:36;6657:19;;3340:73:0::1;6280:402:1::0;3340:73:0::1;3450:6;::::0;;3429:38:::1;::::0;-1:-1:-1;;;;;3429:38:0;;::::1;::::0;3450:6;::::1;::::0;3429:38:::1;::::0;::::1;3478:6;:17:::0;;-1:-1:-1;;;;;;3478:17:0::1;-1:-1:-1::0;;;;;3478:17:0;;;::::1;::::0;;;::::1;::::0;;3259:244::o;16110:339::-;16219:17;;16191:24;16209:4;16191:9;:24::i;:::-;:45;;16183:84;;;;-1:-1:-1;;;16183:84:0;;6889:2:1;16183:84:0;;;6871:21:1;6928:2;6908:18;;;6901:30;6967:28;6947:18;;;6940:56;7013:18;;16183:84:0;6687:350:1;16183:84:0;16282:31;16300:4;16306:6;16282:17;:31::i;:::-;16278:126;;;16330:8;:15;;-1:-1:-1;;;;16330:15:0;-1:-1:-1;;;16330:15:0;;;16356:17;;16347:27;;:8;:27::i;:::-;16376:8;:16;;-1:-1:-1;;;;16376:16:0;;;16278:126;16419:22;;160:25:1;;;16419:22:0;;148:2:1;133:18;16419:22:0;;;;;;;16110:339;;:::o;10798:337::-;-1:-1:-1;;;;;10891:19:0;;10883:68;;;;-1:-1:-1;;;10883:68:0;;7244:2:1;10883:68:0;;;7226:21:1;7283:2;7263:18;;;7256:30;7322:34;7302:18;;;7295:62;-1:-1:-1;;;7373:18:1;;;7366:34;7417:19;;10883:68:0;7042:400:1;10883:68:0;-1:-1:-1;;;;;10970:21:0;;10962:68;;;;-1:-1:-1;;;10962:68:0;;7649:2:1;10962:68:0;;;7631:21:1;7688:2;7668:18;;;7661:30;7727:34;7707:18;;;7700:62;-1:-1:-1;;;7778:18:1;;;7771:32;7820:19;;10962:68:0;7447:398:1;10962:68:0;-1:-1:-1;;;;;11043:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;11095:32;;160:25:1;;;11095:32:0;;133:18:1;11095:32:0;;;;;;;10798:337;;;:::o;11471:2210::-;-1:-1:-1;;;;;11593:18:0;;11585:68;;;;-1:-1:-1;;;11585:68:0;;8052:2:1;11585:68:0;;;8034:21:1;8091:2;8071:18;;;8064:30;8130:34;8110:18;;;8103:62;-1:-1:-1;;;8181:18:1;;;8174:35;8226:19;;11585:68:0;7850:401:1;11585:68:0;-1:-1:-1;;;;;11672:16:0;;11664:64;;;;-1:-1:-1;;;11664:64:0;;8458:2:1;11664:64:0;;;8440:21:1;8497:2;8477:18;;;8470:30;8536:34;8516:18;;;8509:62;-1:-1:-1;;;8587:18:1;;;8580:33;8630:19;;11664:64:0;8256:399:1;11664:64:0;11756:1;11747:6;:10;11739:64;;;;-1:-1:-1;;;11739:64:0;;8862:2:1;11739:64:0;;;8844:21:1;8901:2;8881:18;;;8874:30;8940:34;8920:18;;;8913:62;-1:-1:-1;;;8991:18:1;;;8984:39;9040:19;;11739:64:0;8660:405:1;11739:64:0;-1:-1:-1;;;;;11824:14:0;;;;;;:8;:14;;;;;:24;;11842:6;;11824:14;:24;;11842:6;;11824:24;:::i;:::-;;;;-1:-1:-1;;;;;;;11940:24:0;;11859:22;11940:24;;;:18;:24;;;;;;11884:6;;11859:22;11940:24;;11939:25;:52;;;;-1:-1:-1;;;;;;11969:22:0;;;;;;:18;:22;;;;;;;;11968:23;11939:52;11936:97;;;-1:-1:-1;12017:4:0;11936:97;12048:7;12045:1528;;;12083:13;;-1:-1:-1;;;;;12083:13:0;;;12075:21;;;;12071:133;;-1:-1:-1;;;;;12120:21:0;;;;;;:17;:21;;;;;;:26;;12116:73;;-1:-1:-1;;;;;12150:21:0;;;;;;:17;:21;;;;;12174:12;12150:36;;12116:73;12229:13;;-1:-1:-1;;;;;12223:19:0;;;12229:13;;12223:19;12220:311;;12280:12;;12270:6;:22;;12262:76;;;;-1:-1:-1;;;12262:76:0;;;;;;;:::i;:::-;12391:16;;12381:6;12365:13;12375:2;12365:9;:13::i;:::-;:22;;;;:::i;:::-;:42;;12357:99;;;;-1:-1:-1;;;12357:99:0;;;;;;;:::i;:::-;12492:23;12504:6;12512:2;12492:11;:23::i;:::-;12475:40;;12220:311;12558:13;;-1:-1:-1;;;;;12550:21:0;;;12558:13;;12550:21;12547:722;;12609:12;;12599:6;:22;;12591:76;;;;-1:-1:-1;;;12591:76:0;;;;;;;:::i;:::-;12703:26;12716:6;12724:4;12703:12;:26::i;:::-;12686:43;;12766:1;12748:14;;:19;;;;;;;:::i;:::-;;;;-1:-1:-1;;12790:8:0;;-1:-1:-1;;;12790:8:0;;;;12786:36;;12802:10;:17;;-1:-1:-1;;;;;;12802:17:0;-1:-1:-1;;;;;12802:17:0;;;;;12786:36;12874:17;;12846:24;12864:4;12846:9;:24::i;:::-;:45;;:58;;;;-1:-1:-1;12896:8:0;;-1:-1:-1;;;12896:8:0;;;;12895:9;12846:58;12842:412;;;12929:8;:15;;-1:-1:-1;;;;12929:15:0;-1:-1:-1;;;12929:15:0;;;12976:17;;12967:27;;:8;:27::i;:::-;13017:8;:16;;-1:-1:-1;;;;13017:16:0;;;12842:412;;;13080:1;13063:14;;:18;:31;;;;-1:-1:-1;13086:8:0;;-1:-1:-1;;;13086:8:0;;;;13085:9;13063:31;13059:195;;;13119:8;:15;;-1:-1:-1;;;;13119:15:0;-1:-1:-1;;;13119:15:0;;;13157:38;13193:1;13166:24;13184:4;13166:9;:24::i;:::-;:28;;;;:::i;:::-;13157:8;:38::i;:::-;13218:8;:16;;-1:-1:-1;;;;13218:16:0;;;13059:195;13294:13;;-1:-1:-1;;;;;13288:19:0;;;13294:13;;13288:19;;;;:44;;-1:-1:-1;13319:13:0;;-1:-1:-1;;;;;13311:21:0;;;13319:13;;13311:21;;13288:44;13285:277;;;13370:12;;13360:6;:22;;13352:76;;;;-1:-1:-1;;;13352:76:0;;;;;;;:::i;:::-;13481:16;;13471:6;13455:13;13465:2;13455:9;:13::i;:::-;:22;;;;:::i;:::-;:42;;13447:99;;;;-1:-1:-1;;;13447:99:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;13593:12:0;;;;;;:8;:12;;;;;:30;;13609:14;;13593:12;:30;;13609:14;;13593:30;:::i;:::-;;;;;;;;13654:2;-1:-1:-1;;;;;13639:34:0;13648:4;-1:-1:-1;;;;;13639:34:0;;13658:14;13639:34;;;;160:25:1;;148:2;133:18;;14:177;13639:34:0;;;;;;;;11574:2107;;11471:2210;;;:::o;14838:781::-;2421:10;14913:4;14968:32;;;:18;:32;;;;;;14913:4;;14968:32;;14963:649;;15068:17;;:7;15048:17;15089:3;;15068:17;15043:22;;:2;:22;:::i;:::-;:42;;;;:::i;:::-;15033:53;;:6;:53;:::i;:::-;:59;;;;:::i;:::-;15017:75;-1:-1:-1;15107:39:0;2421:10;15132:13;15107:10;:39::i;:::-;15161:20;15211:13;15184:24;15202:4;15184:9;:24::i;:::-;:40;;;;:::i;:::-;15261:17;;-1:-1:-1;15246:32:0;-1:-1:-1;15239:39:0;;-1:-1:-1;;15239:39:0;14963:649;-1:-1:-1;15327:6:0;;15352:24;15370:4;15352:9;:24::i;:::-;:41;15348:120;;15414:24;15425:4;15431:6;15414:10;:24::i;:::-;15447:5;15440:12;;;;;15348:120;15482:20;15532:13;15505:24;15523:4;15505:9;:24::i;:::-;:40;;;;:::i;:::-;15583:17;;-1:-1:-1;15567:33:0;;-1:-1:-1;15560:40:0;;-1:-1:-1;;15560:40:0;13692:1138;13932:7;:17;13912;;13893:6;:16;13874;;13771:6;;13745:23;;13932:17;;13912;;13874:35;;13893:16;13874:35;:::i;:::-;:55;;;;:::i;:::-;:75;;;;:::i;:::-;13852:7;:17;13833:6;:16;:36;;13852:17;13833:36;:::i;:::-;13814:56;;:15;:56;:::i;:::-;:136;;;;:::i;:::-;14105:7;:17;14085;;14066:6;:16;14047;;13788:162;;-1:-1:-1;13961:23:0;;14047:35;;14066:16;14047:35;:::i;:::-;:55;;;;:::i;:::-;:75;;;;:::i;:::-;14025:17;;14006:16;;:36;;14025:17;14006:36;:::i;:::-;13987:56;;:15;:56;:::i;:::-;:136;;;;:::i;:::-;13961:162;-1:-1:-1;14134:25:0;14162:33;13961:162;14162:15;:33;:::i;:::-;14134:61;-1:-1:-1;14216:26:0;14245:22;:15;14265:1;14245:19;:22::i;:::-;14216:51;-1:-1:-1;14278:26:0;14307:39;:15;14216:51;14307:19;:39::i;:::-;14278:68;-1:-1:-1;14385:21:0;14417:36;14278:68;14417:16;:36::i;:::-;14465:18;14486:44;:21;14512:17;14486:25;:44::i;:::-;14465:65;-1:-1:-1;14551:23:0;14577:54;14613:17;14577:31;14465:65;14592:15;14577:14;:31::i;:::-;:35;;:54::i;:::-;14551:80;;14642:49;14655:18;14675:15;14642:12;:49::i;:::-;14746:9;;14738:57;;14702:12;;-1:-1:-1;;;;;14746:9:0;;14769:21;;14702:12;14738:57;14702:12;14738:57;14769:21;14746:9;14738:57;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14725:70;;;;;14814:7;14806:16;;;;;;13734:1096;;;;;;;;;;13692:1138;:::o;8957:456::-;9025:7;9045:25;9101:3;9082:6;:16;;;9073:6;:25;;;;:::i;:::-;:31;;;;:::i;:::-;9045:59;;9116:26;9173:3;9154:6;:16;;;9145:6;:25;;;;:::i;:::-;:31;;;;:::i;:::-;9116:60;-1:-1:-1;9216:38:0;9116:60;9216:17;:38;:::i;:::-;9206:4;9189:23;;;;:8;:23;;;;;:65;;:23;;;:65;;;;;:::i;:::-;;;;-1:-1:-1;9294:4:0;;-1:-1:-1;;;;;;9270:70:0;;;9301:38;9322:17;9301:18;:38;:::i;:::-;9270:70;;160:25:1;;;148:2;133:18;9270:70:0;;;;;;;9386:18;9359:25;9367:17;9359:6;:25;:::i;:::-;:45;;;;:::i;:::-;9351:54;8957:456;-1:-1:-1;;;;;8957:456:0:o;9421:460::-;9490:7;9510:25;9567:3;9547:7;:17;;;9538:6;:26;;;;:::i;:::-;:32;;;;:::i;:::-;9510:60;;9582:26;9640:3;9620:7;:17;;;9611:6;:26;;;;:::i;11143:320::-;-1:-1:-1;;;;;11220:18:0;;11212:64;;;;-1:-1:-1;;;11212:64:0;;10478:2:1;11212:64:0;;;10460:21:1;10517:2;10497:18;;;10490:30;10556:34;10536:18;;;10529:62;-1:-1:-1;;;10607:18:1;;;10600:31;10648:19;;11212:64:0;10276:397:1;11212:64:0;11304:63;11323:5;11304:63;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;11304:14:0;;;;;;:8;:14;;;;;;;:63;:18;:63::i;:::-;-1:-1:-1;;;;;11287:14:0;;;;;;:8;:14;;;;;:80;11388:7;;:18;;11400:5;11388:11;:18::i;:::-;11378:7;:28;11422:33;;160:25:1;;;11445:1:0;;-1:-1:-1;;;;;11422:33:0;;;;;148:2:1;133:18;11422:33:0;;;;;;;11143:320;;:::o;1555:132::-;1613:7;1640:39;1644:1;1647;1640:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;1633:46;1555:132;-1:-1:-1;;;1555:132:0:o;953:136::-;1011:7;1038:43;1042:1;1045;1038:43;;;;;;;;;;;;;;;;;:3;:43::i;15627:475::-;15717:16;;;15731:1;15717:16;;;;;;;;15693:21;;15717:16;;;;;;;;;;-1:-1:-1;15717:16:0;15693:40;;15762:4;15744;15749:1;15744:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;15744:23:0;;;:7;;;;;;;;;;:23;;;;15788:15;;:22;;;-1:-1:-1;;;15788:22:0;;;;:15;;;;;:20;;:22;;;;;15744:7;;15788:22;;;;;:15;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;15778:4;15783:1;15778:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;15778:32:0;;;:7;;;;;;;;;:32;15855:15;;15823:62;;15840:4;;15855:15;15873:11;15823:8;:62::i;:::-;15898:15;;:196;;-1:-1:-1;;;15898:196:0;;-1:-1:-1;;;;;15898:15:0;;;;:66;;:196;;15979:11;;15898:15;;16021:4;;16048;;16068:15;;15898:196;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15682:420;15627:475;:::o;1297:250::-;1355:7;1379:1;1384;1379:6;1375:47;;-1:-1:-1;1409:1:0;1402:8;;1375:47;1434:9;1446:5;1450:1;1446;:5;:::i;:::-;1434:17;-1:-1:-1;1479:1:0;1470:5;1474:1;1434:17;1470:5;:::i;:::-;:10;1462:56;;;;-1:-1:-1;;;1462:56:0;;12385:2:1;1462:56:0;;;12367:21:1;12424:2;12404:18;;;12397:30;12463:34;12443:18;;;12436:62;-1:-1:-1;;;12514:18:1;;;12507:31;12555:19;;1462:56:0;12183:397:1;16457:374:0;16570:15;;16538:62;;16555:4;;-1:-1:-1;;;;;16570:15:0;16588:11;16538:8;:62::i;:::-;16613:15;;16765:17;;16613:210;;-1:-1:-1;;;16613:210:0;;16687:4;16613:210;;;12926:34:1;12976:18;;;12969:34;;;16613:15:0;13019:18:1;;;13012:34;;;13062:18;;;13055:34;-1:-1:-1;;;;;16765:17:0;;;13105:19:1;;;13098:44;16797:15:0;13158:19:1;;;13151:35;16613:15:0;;;:31;;16653:9;;12860:19:1;;16613:210:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;16457:374;;:::o;1097:192::-;1183:7;1219:12;1211:6;;;;1203:29;;;;-1:-1:-1;;;1203:29:0;;;;;;;;:::i;:::-;-1:-1:-1;1243:9:0;1255:5;1259:1;1255;:5;:::i;1695:278::-;1781:7;1816:12;1809:5;1801:28;;;;-1:-1:-1;;;1801:28:0;;;;;;;;:::i;:::-;-1:-1:-1;1840:9:0;1852:5;1856:1;1852;:5;:::i;196:548:1:-;308:4;337:2;366;355:9;348:21;398:6;392:13;441:6;436:2;425:9;421:18;414:34;466:1;476:140;490:6;487:1;484:13;476:140;;;585:14;;;581:23;;575:30;551:17;;;570:2;547:26;540:66;505:10;;476:140;;;480:3;665:1;660:2;651:6;640:9;636:22;632:31;625:42;735:2;728;724:7;719:2;711:6;707:15;703:29;692:9;688:45;684:54;676:62;;;;196:548;;;;:::o;749:131::-;-1:-1:-1;;;;;824:31:1;;814:42;;804:70;;870:1;867;860:12;804:70;749:131;:::o;885:315::-;953:6;961;1014:2;1002:9;993:7;989:23;985:32;982:52;;;1030:1;1027;1020:12;982:52;1069:9;1056:23;1088:31;1113:5;1088:31;:::i;:::-;1138:5;1190:2;1175:18;;;;1162:32;;-1:-1:-1;;;885:315:1:o;1631:456::-;1708:6;1716;1724;1777:2;1765:9;1756:7;1752:23;1748:32;1745:52;;;1793:1;1790;1783:12;1745:52;1832:9;1819:23;1851:31;1876:5;1851:31;:::i;:::-;1901:5;-1:-1:-1;1958:2:1;1943:18;;1930:32;1971:33;1930:32;1971:33;:::i;:::-;1631:456;;2023:7;;-1:-1:-1;;;2077:2:1;2062:18;;;;2049:32;;1631:456::o;2345:383::-;2422:6;2430;2438;2491:2;2479:9;2470:7;2466:23;2462:32;2459:52;;;2507:1;2504;2497:12;2459:52;2543:9;2530:23;2520:33;;2600:2;2589:9;2585:18;2572:32;2562:42;;2654:2;2643:9;2639:18;2626:32;2667:31;2692:5;2667:31;:::i;:::-;2717:5;2707:15;;;2345:383;;;;;:::o;3130:247::-;3189:6;3242:2;3230:9;3221:7;3217:23;3213:32;3210:52;;;3258:1;3255;3248:12;3210:52;3297:9;3284:23;3316:31;3341:5;3316:31;:::i;3382:416::-;3447:6;3455;3508:2;3496:9;3487:7;3483:23;3479:32;3476:52;;;3524:1;3521;3514:12;3476:52;3563:9;3550:23;3582:31;3607:5;3582:31;:::i;:::-;3632:5;-1:-1:-1;3689:2:1;3674:18;;3661:32;3731:15;;3724:23;3712:36;;3702:64;;3762:1;3759;3752:12;3702:64;3785:7;3775:17;;;3382:416;;;;;:::o;3803:385::-;3889:6;3897;3905;3913;3966:3;3954:9;3945:7;3941:23;3937:33;3934:53;;;3983:1;3980;3973:12;3934:53;-1:-1:-1;;4006:23:1;;;4076:2;4061:18;;4048:32;;-1:-1:-1;4127:2:1;4112:18;;4099:32;;4178:2;4163:18;4150:32;;-1:-1:-1;3803:385:1;-1:-1:-1;3803:385:1:o;4193:388::-;4261:6;4269;4322:2;4310:9;4301:7;4297:23;4293:32;4290:52;;;4338:1;4335;4328:12;4290:52;4377:9;4364:23;4396:31;4421:5;4396:31;:::i;:::-;4446:5;-1:-1:-1;4503:2:1;4488:18;;4475:32;4516:33;4475:32;4516:33;:::i;4586:127::-;4647:10;4642:3;4638:20;4635:1;4628:31;4678:4;4675:1;4668:15;4702:4;4699:1;4692:15;4718:128;4785:9;;;4806:11;;;4803:37;;;4820:18;;:::i;4851:356::-;5053:2;5035:21;;;5072:18;;;5065:30;5131:34;5126:2;5111:18;;5104:62;5198:2;5183:18;;4851:356::o;5212:217::-;5252:1;5278;5268:132;;5322:10;5317:3;5313:20;5310:1;5303:31;5357:4;5354:1;5347:15;5385:4;5382:1;5375:15;5268:132;-1:-1:-1;5414:9:1;;5212:217::o;5434:125::-;5499:9;;;5520:10;;;5517:36;;;5533:18;;:::i;9070:405::-;9272:2;9254:21;;;9311:2;9291:18;;;9284:30;9350:34;9345:2;9330:18;;9323:62;-1:-1:-1;;;9416:2:1;9401:18;;9394:39;9465:3;9450:19;;9070:405::o;9480:408::-;9682:2;9664:21;;;9721:2;9701:18;;;9694:30;9760:34;9755:2;9740:18;;9733:62;-1:-1:-1;;;9826:2:1;9811:18;;9804:42;9878:3;9863:19;;9480:408::o;9893:168::-;9966:9;;;9997;;10014:15;;;10008:22;;9994:37;9984:71;;10035:18;;:::i;10810:127::-;10871:10;10866:3;10862:20;10859:1;10852:31;10902:4;10899:1;10892:15;10926:4;10923:1;10916:15;10942:251;11012:6;11065:2;11053:9;11044:7;11040:23;11036:32;11033:52;;;11081:1;11078;11071:12;11033:52;11113:9;11107:16;11132:31;11157:5;11132:31;:::i;11198:980::-;11460:4;11508:3;11497:9;11493:19;11539:6;11528:9;11521:25;11565:2;11603:6;11598:2;11587:9;11583:18;11576:34;11646:3;11641:2;11630:9;11626:18;11619:31;11670:6;11705;11699:13;11736:6;11728;11721:22;11774:3;11763:9;11759:19;11752:26;;11813:2;11805:6;11801:15;11787:29;;11834:1;11844:195;11858:6;11855:1;11852:13;11844:195;;;11923:13;;-1:-1:-1;;;;;11919:39:1;11907:52;;12014:15;;;;11979:12;;;;11955:1;11873:9;11844:195;;;-1:-1:-1;;;;;;;12095:32:1;;;;12090:2;12075:18;;12068:60;-1:-1:-1;;;12159:3:1;12144:19;12137:35;12056:3;11198:980;-1:-1:-1;;;11198:980:1:o;13197:306::-;13285:6;13293;13301;13354:2;13342:9;13333:7;13329:23;13325:32;13322:52;;;13370:1;13367;13360:12;13322:52;13399:9;13393:16;13383:26;;13449:2;13438:9;13434:18;13428:25;13418:35;;13493:2;13482:9;13478:18;13472:25;13462:35;;13197:306;;;;;:::o

Swarm Source

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