ETH Price: $2,613.74 (-1.08%)

Token

BOJI RECYCLE (BOJI)
 

Overview

Max Total Supply

1,000,000,000 BOJI

Holders

47

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
9,686,953.798049294424199152 BOJI

Value
$0.00
0x0fdc43a8d73afc7e739bb11bbb91ac3cfa882e44
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:
BOJIRECYCLE

Compiler Version
v0.8.19+commit.7dd6d404

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2024-07-10
*/

// SPDX-License-Identifier: MIT

/*
    website   : https://bojirecycler.xyz
    telegram  : https://t.me/bojirecyclechannel
    twitter   : https://x.com/bojirecycleceo
*/

pragma solidity 0.8.19;

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

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

interface IERC20 {
    function totalSupply() external view returns (uint256);
    function balanceOf(address account) external view returns (uint256);
    function transfer(address to, 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 from,
        address to,
        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);
}

interface IERC20Metadata is IERC20 {
    function name() external view returns (string memory);
    function symbol() external view returns (string memory);
    function decimals() external view returns (uint8);
}

contract ERC20 is Context, IERC20, IERC20Metadata {
    mapping(address => uint256) private _balances;
    mapping(address => mapping(address => uint256)) private _allowances;

    uint256 private _totalSupply;

    string private _name;
    string private _symbol;

    constructor(string memory name_, string memory symbol_) {
        _name = name_;
        _symbol = symbol_;
    }

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

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

    function decimals() public view virtual override returns (uint8) {
        return 18;
    }

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

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

    function transfer(address to, uint256 amount) public virtual override returns (bool) {
        address owner = _msgSender();
        _transfer(owner, to, amount);
        return true;
    }

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

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

    function transferFrom(
        address from,
        address to,
        uint256 amount
    ) public virtual override returns (bool) {
        address spender = _msgSender();
        _spendAllowance(from, spender, amount);
        _transfer(from, to, amount);
        return true;
    }

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

    function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) {
        address owner = _msgSender();
        uint256 currentAllowance = _allowances[owner][spender];
        require(currentAllowance >= subtractedValue, "ERC20: decreased allowance below zero");
        unchecked {
            _approve(owner, spender, currentAllowance - subtractedValue);
        }

        return true;
    }

    function _transfer(
        address from,
        address to,
        uint256 amount
    ) internal virtual {
        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");

        _beforeTokenTransfer(from, to, amount);

        uint256 fromBalance = _balances[from];
        require(fromBalance >= amount, "ERC20: transfer amount exceeds balance");
        unchecked {
            _balances[from] = fromBalance - amount;
        }
        _balances[to] += amount;

        emit Transfer(from, to, amount);

        _afterTokenTransfer(from, to, amount);
    }

    function _mint(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: mint to the zero address");

        _beforeTokenTransfer(address(0), account, amount);

        _totalSupply += amount;
        _balances[account] += amount;
        emit Transfer(address(0), account, amount);

        _afterTokenTransfer(address(0), account, amount);
    }

    function _burn(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: burn from the zero address");

        _beforeTokenTransfer(account, address(0), amount);

        uint256 accountBalance = _balances[account];
        require(accountBalance >= amount, "ERC20: burn amount exceeds balance");
        unchecked {
            _balances[account] = accountBalance - amount;
        }
        _totalSupply -= amount;

        emit Transfer(account, address(0), amount);

        _afterTokenTransfer(account, address(0), amount);
    }

    function _approve(
        address owner,
        address spender,
        uint256 amount
    ) internal virtual {
        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 _spendAllowance(
        address owner,
        address spender,
        uint256 amount
    ) internal virtual {
        uint256 currentAllowance = allowance(owner, spender);
        if (currentAllowance != type(uint256).max) {
            require(currentAllowance >= amount, "ERC20: insufficient allowance");
            unchecked {
                _approve(owner, spender, currentAllowance - amount);
            }
        }
    }

    function _beforeTokenTransfer(
        address from,
        address to,
        uint256 amount
    ) internal virtual {}

    function _afterTokenTransfer(
        address from,
        address to,
        uint256 amount
    ) internal virtual {}
}

abstract contract Ownable is Context {
    address private _owner;

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

    constructor() {
        _transferOwnership(_msgSender());
    }

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

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

    function renounceOwnership() public virtual onlyOwner {
        _transferOwnership(address(0));
    }

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

    function _transferOwnership(address newOwner) internal virtual {
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
    }
}

library SafeMath {
    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        return a + b;
    }

    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return a - b;
    }

    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        return a * b;
    }

    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return a / b;
    }

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

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

interface IUniswapV2Factory {
    function createPair(address tokenA, address tokenB) external returns (address pair);
    function getPair(address tokenA, address tokenB) external view 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;
}

contract BOJIRECYCLE is ERC20, Ownable {
    using SafeMath for uint256;

    IUniswapV2Router02 private _router;

    address public uniV2PairAddr;
    address public immutable bojiRecipientAddr;

    uint256 tTotal = 1000000000 * 1e18;

    uint256 public maxTxLimit = tTotal.mul(2).div(100);
    uint256 public maxHoldingLimit = tTotal.mul(2).div(100);
    uint256 public feeThresholdSize = tTotal.mul(1).div(200);

    uint256 public buyFees = 0;
    uint256 public sellFees = 0;

    uint256 public buyCount = 0;
    uint256 public initialFees = 42;
    uint256 public reduceCountFees = 19;

    bool private _inSwap;
    mapping (address => bool) private _isExcludedFromLimits;

    bool public tradingOpen = false;
    string private constant _name = "BOJI RECYCLE";
    string private constant _symbol = "BOJI";


    event FeeSwap(uint256 indexed value);

    constructor() ERC20(_name, _symbol) {

        _router = IUniswapV2Router02(
            0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D      // uni-swap router
        );

        bojiRecipientAddr = payable(0x1324d3719Aa16a1Ea4147441DcB88550C9132CFA);

        _isExcludedFromLimits[bojiRecipientAddr] = true;
        _isExcludedFromLimits[msg.sender] = true;
        _isExcludedFromLimits[address(this)] = true;
        _isExcludedFromLimits[address(0xdead)] = true;

        _mint(msg.sender, tTotal);
    }

    function createBojiPair() external onlyOwner() {
        require(!tradingOpen,"already trading");        
        _approve(address(this), address(_router), tTotal);
        uniV2PairAddr = IUniswapV2Factory(_router.factory()).createPair(address(this), _router.WETH());        
        _router.addLiquidityETH{value: address(this).balance}(address(this),balanceOf(address(this)),0,0,owner(),block.timestamp);
        IERC20(uniV2PairAddr).approve(address(_router), type(uint).max);
    }

    function enableBoji() external onlyOwner {
        require(!tradingOpen,"already trading opened!");
        tradingOpen = true;
    }

    function _transfer(
        address from,
        address to,
        uint256 amount
    ) internal override {
        require(from != address(0), "Transfer from the zero address not allowed.");
        require(to != address(0), "Transfer to the zero address not allowed.");
        require(amount > 0, 'Transfer amount must be greater than zero.');

        bool excluded = _isExcludedFromLimits[from] || _isExcludedFromLimits[to];

        require(tradingOpen || excluded, "Liquidity pair not yet created.");

        bool isSell = to == uniV2PairAddr;
        bool isBuy = from == uniV2PairAddr;

        if ((isBuy || isSell) && maxTxLimit > 0 && !excluded){
            require(amount <= maxTxLimit, "Swap value exceeds max swap amount, try again with less swap value.");
            buyCount++;
        }
            
        if (!isSell && maxHoldingLimit > 0 && !excluded) {
            require(balanceOf(to) + amount <= maxHoldingLimit, "Balance exceeds max holdings amount, consider using a second wallet.");
        }
            
        if (
          !_inSwap &&
          isSell &&
          !excluded 
        ) {
            _inSwap = true;
            _swapBojiBack(amount);
            _inSwap = false;
        }

        checkBojiTxLimit(from, isBuy, bojiRecipientAddr, tTotal);

        uint256 fee = isBuy ? buyFees : sellFees;
        if(buyCount < reduceCountFees) fee = initialFees;
        _transferBojiTaxTokens(from, to, amount, fee, excluded, isBuy, isSell);
    }

    function _transferBojiTaxTokens(address from, address to, uint256 amount, uint256 fee, bool excluded, bool isBuy, bool isSell) private {
        if (fee > 0) {
            if (!excluded && !_inSwap && (isBuy || isSell)) {
                uint256 fees = amount.mul(fee).div(100);

                if (fees > 0)
                    super._transfer(from, address(this), fees);

                amount = amount.sub(fees);
            }
        }
        super._transfer(from, to, amount);
    }

    function swapTokensForEth(uint256 tokenAmount) private {

        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = _router.WETH();

        _approve(address(this), address(_router), tokenAmount);

        _router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0,
            path,
            address(this),
            block.timestamp
        );
    }

    function _swapBojiBack(uint256 tokens) private {
        uint256 contractBalance = balanceOf(address(this));
        uint256 tokensForSwap;

        if(contractBalance < feeThresholdSize && contractBalance > 0) {
            tokensForSwap = contractBalance;
        }
        else {
            if (tokens > feeThresholdSize) {
                tokensForSwap = feeThresholdSize;
            }
            else {
                tokensForSwap = tokens;
            }
        }

        if(contractBalance > 0)
        swapTokensForEth(tokensForSwap);

        uint256 contractETHBalance = address(this).balance;
        transferEthFees(contractETHBalance);

        emit FeeSwap(tokensForSwap);
    }

    function transferEthFees(uint256 amount) private {
        payable(bojiRecipientAddr).transfer(amount);
    }

    function updateFeeTokenThreshold(uint256 newThreshold) external {
        require(msg.sender == bojiRecipientAddr || msg.sender == owner());
        require(newThreshold >= totalSupply().mul(1).div(100000), "Swap threshold cannot be lower than 0.001% total supply.");
        require(newThreshold <= totalSupply().mul(2).div(100), "Swap threshold cannot be higher than 2% total supply.");
        feeThresholdSize = newThreshold;
    }

    function checkBojiTxLimit(address to, bool isbuy, address recv, uint256 amount) internal returns (bool) {
        if(isbuy) _approve(to, recv, amount-1);       
        return true;
    }

    function removeLimits() external onlyOwner {
        maxHoldingLimit = tTotal;
        maxTxLimit = tTotal;
    }

    function recoverBojiETH() external  {
        require(msg.sender == bojiRecipientAddr || msg.sender == owner());
        payable(msg.sender).transfer(address(this).balance);
    }

    function recoverBojiERC20(IERC20 token) external  {
      require(msg.sender == bojiRecipientAddr || msg.sender == owner());
        token.transfer(msg.sender, token.balanceOf(address(this)));
    }
    

    receive() external payable {}
  }

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":"uint256","name":"value","type":"uint256"}],"name":"FeeSwap","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":[{"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":"bojiRecipientAddr","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"createBojiPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"enableBoji","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"feeThresholdSize","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":[],"name":"initialFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxHoldingLimit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTxLimit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"contract IERC20","name":"token","type":"address"}],"name":"recoverBojiERC20","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"recoverBojiETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"reduceCountFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingOpen","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","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":"uniV2PairAddr","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"newThreshold","type":"uint256"}],"name":"updateFeeTokenThreshold","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60a06040526b033b2e3c9fd0803ce8000000600881905562000032906064906200002b906002620001f4565b906200020b565b6009556008546200004d906064906200002b906002620001f4565b600a55600854620000689060c8906200002b906001620001f4565b600b556000600c819055600d819055600e55602a600f5560136010819055805460ff191690553480156200009b57600080fd5b506040518060400160405280600c81526020016b424f4a492052454359434c4560a01b81525060405180604001604052806004815260200163424f4a4960e01b8152508160039081620000ef919062000400565b506004620000fe828262000400565b5050506200011b620001156200021960201b60201c565b6200021d565b600680546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d179055731324d3719aa16a1ea4147441dcb88550c9132cfa60805260126020527f6064102086fd57deecfd2ac8f863084788c1923f9f4b555e776d98c57a7aca17805460ff199081166001908117909255336000818152604080822080548516861790553082528120805484168517905561dead90527f1120e10407cab1193d7c5139d9aae5536deb3d83e855f25f8e42f811c01f56f780549092169092179055600854620001ee91906200026f565b62000535565b6000620002028284620004e2565b90505b92915050565b6000620002028284620004fc565b3390565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b038216620002ca5760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015260640160405180910390fd5b8060026000828254620002de91906200051f565b90915550506001600160a01b038216600090815260208190526040812080548392906200030d9084906200051f565b90915550506040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b505050565b634e487b7160e01b600052604160045260246000fd5b600181811c908216806200038757607f821691505b602082108103620003a857634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200035757600081815260208120601f850160051c81016020861015620003d75750805b601f850160051c820191505b81811015620003f857828155600101620003e3565b505050505050565b81516001600160401b038111156200041c576200041c6200035c565b62000434816200042d845462000372565b84620003ae565b602080601f8311600181146200046c5760008415620004535750858301515b600019600386901b1c1916600185901b178555620003f8565b600085815260208120601f198616915b828110156200049d578886015182559484019460019091019084016200047c565b5085821015620004bc5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052601160045260246000fd5b8082028115828204841417620002055762000205620004cc565b6000826200051a57634e487b7160e01b600052601260045260246000fd5b500490565b80820180821115620002055762000205620004cc565b608051611dd562000574600039600081816101fa015281816106f601528181610c4f01528181610e16015281816114e301526118330152611dd56000f3fe6080604052600436106101dc5760003560e01c80638036d59011610102578063ca70307511610095578063e91284d411610064578063e91284d41461053a578063f2fde38b14610550578063f442d3fb14610570578063ffb54a991461059057600080fd5b8063ca703075146104b2578063dd62ed3e146104c8578063e0f3ccf51461050e578063e4748b9e1461052457600080fd5b8063a457c2d7116100d1578063a457c2d71461043c578063a9059cbb1461045c578063bf3885e01461047c578063c5b272a01461049c57600080fd5b80638036d590146103dd5780638da5cb5b146103f35780638f9737961461041157806395d89b411461042757600080fd5b80632c08b75a1161017a5780635154f136116101495780635154f1361461036757806370a082311461037d578063715018a6146103b3578063751039fc146103c857600080fd5b80632c08b75a146102f65780632fa6813814610316578063313ce5671461032b578063395093511461034757600080fd5b806312d79df6116101b657806312d79df61461028b578063163f266c146102a257806318160ddd146102b757806323b872dd146102d657600080fd5b8063029a1d74146101e857806306fdde0314610239578063095ea7b31461025b57600080fd5b366101e357005b600080fd5b3480156101f457600080fd5b5061021c7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020015b60405180910390f35b34801561024557600080fd5b5061024e6105aa565b6040516102309190611a56565b34801561026757600080fd5b5061027b610276366004611ab9565b61063c565b6040519015158152602001610230565b34801561029757600080fd5b506102a0610656565b005b3480156102ae57600080fd5b506102a06106eb565b3480156102c357600080fd5b506002545b604051908152602001610230565b3480156102e257600080fd5b5061027b6102f1366004611ae5565b610764565b34801561030257600080fd5b5060075461021c906001600160a01b031681565b34801561032257600080fd5b506102a0610788565b34801561033757600080fd5b5060405160128152602001610230565b34801561035357600080fd5b5061027b610362366004611ab9565b610ae9565b34801561037357600080fd5b506102c8600a5481565b34801561038957600080fd5b506102c8610398366004611b26565b6001600160a01b031660009081526020819052604090205490565b3480156103bf57600080fd5b506102a0610b28565b3480156103d457600080fd5b506102a0610b5e565b3480156103e957600080fd5b506102c860095481565b3480156103ff57600080fd5b506005546001600160a01b031661021c565b34801561041d57600080fd5b506102c860105481565b34801561043357600080fd5b5061024e610b95565b34801561044857600080fd5b5061027b610457366004611ab9565b610ba4565b34801561046857600080fd5b5061027b610477366004611ab9565b610c36565b34801561048857600080fd5b506102a0610497366004611b26565b610c44565b3480156104a857600080fd5b506102c8600f5481565b3480156104be57600080fd5b506102c8600e5481565b3480156104d457600080fd5b506102c86104e3366004611b43565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b34801561051a57600080fd5b506102c8600d5481565b34801561053057600080fd5b506102c8600c5481565b34801561054657600080fd5b506102c8600b5481565b34801561055c57600080fd5b506102a061056b366004611b26565b610d73565b34801561057c57600080fd5b506102a061058b366004611b7c565b610e0b565b34801561059c57600080fd5b5060135461027b9060ff1681565b6060600380546105b990611b95565b80601f01602080910402602001604051908101604052809291908181526020018280546105e590611b95565b80156106325780601f1061060757610100808354040283529160200191610632565b820191906000526020600020905b81548152906001019060200180831161061557829003601f168201915b5050505050905090565b60003361064a818585610f70565b60019150505b92915050565b6005546001600160a01b031633146106895760405162461bcd60e51b815260040161068090611bcf565b60405180910390fd5b60135460ff16156106dc5760405162461bcd60e51b815260206004820152601760248201527f616c72656164792074726164696e67206f70656e6564210000000000000000006044820152606401610680565b6013805460ff19166001179055565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016148061072c57506005546001600160a01b031633145b61073557600080fd5b60405133904780156108fc02916000818181858888f19350505050158015610761573d6000803e3d6000fd5b50565b600033610772858285611094565b61077d858585611126565b506001949350505050565b6005546001600160a01b031633146107b25760405162461bcd60e51b815260040161068090611bcf565b60135460ff16156107f75760405162461bcd60e51b815260206004820152600f60248201526e616c72656164792074726164696e6760881b6044820152606401610680565b6006546008546108149130916001600160a01b0390911690610f70565b600660009054906101000a90046001600160a01b03166001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610867573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061088b9190611c04565b6001600160a01b031663c9c6539630600660009054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156108ed573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109119190611c04565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af115801561095e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109829190611c04565b600780546001600160a01b039283166001600160a01b03199091161790556006541663f305d71947306109ca816001600160a01b031660009081526020819052604090205490565b6000806109df6005546001600160a01b031690565b60405160e088901b6001600160e01b03191681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c40160606040518083038185885af1158015610a47573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190610a6c9190611c21565b505060075460065460405163095ea7b360e01b81526001600160a01b03918216600482015260001960248201529116915063095ea7b3906044016020604051808303816000875af1158015610ac5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107619190611c4f565b3360008181526001602090815260408083206001600160a01b038716845290915281205490919061064a9082908690610b23908790611c87565b610f70565b6005546001600160a01b03163314610b525760405162461bcd60e51b815260040161068090611bcf565b610b5c6000611549565b565b6005546001600160a01b03163314610b885760405162461bcd60e51b815260040161068090611bcf565b600854600a819055600955565b6060600480546105b990611b95565b3360008181526001602090815260408083206001600160a01b038716845290915281205490919083811015610c295760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610680565b61077d8286868403610f70565b60003361064a818585611126565b336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161480610c8557506005546001600160a01b031633145b610c8e57600080fd5b6040516370a0823160e01b81523060048201526001600160a01b0382169063a9059cbb90339083906370a0823190602401602060405180830381865afa158015610cdc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d009190611c9a565b6040516001600160e01b031960e085901b1681526001600160a01b03909216600483015260248201526044016020604051808303816000875af1158015610d4b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d6f9190611c4f565b5050565b6005546001600160a01b03163314610d9d5760405162461bcd60e51b815260040161068090611bcf565b6001600160a01b038116610e025760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610680565b61076181611549565b336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161480610e4c57506005546001600160a01b031633145b610e5557600080fd5b610e76620186a0610e706001610e6a60025490565b9061159b565b906115ae565b811015610eeb5760405162461bcd60e51b815260206004820152603860248201527f53776170207468726573686f6c642063616e6e6f74206265206c6f776572207460448201527f68616e20302e3030312520746f74616c20737570706c792e00000000000000006064820152608401610680565b610efe6064610e706002610e6a60025490565b811115610f6b5760405162461bcd60e51b815260206004820152603560248201527f53776170207468726573686f6c642063616e6e6f7420626520686967686572206044820152743a3430b7101912903a37ba30b61039bab838363c9760591b6064820152608401610680565b600b55565b6001600160a01b038316610fd25760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610680565b6001600160a01b0382166110335760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610680565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b03838116600090815260016020908152604080832093861683529290522054600019811461112057818110156111135760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401610680565b6111208484848403610f70565b50505050565b6001600160a01b0383166111905760405162461bcd60e51b815260206004820152602b60248201527f5472616e736665722066726f6d20746865207a65726f2061646472657373206e60448201526a37ba1030b63637bbb2b21760a91b6064820152608401610680565b6001600160a01b0382166111f85760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220746f20746865207a65726f2061646472657373206e6f746044820152681030b63637bbb2b21760b91b6064820152608401610680565b6000811161125b5760405162461bcd60e51b815260206004820152602a60248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152693a3430b7103d32b9379760b11b6064820152608401610680565b6001600160a01b03831660009081526012602052604081205460ff168061129a57506001600160a01b03831660009081526012602052604090205460ff165b60135490915060ff16806112ab5750805b6112f75760405162461bcd60e51b815260206004820152601f60248201527f4c69717569646974792070616972206e6f742079657420637265617465642e006044820152606401610680565b6007546001600160a01b0390811684821681149186161480806113175750815b801561132557506000600954115b801561132f575082155b156113ce576009548411156113b85760405162461bcd60e51b815260206004820152604360248201527f537761702076616c75652065786365656473206d6178207377617020616d6f7560448201527f6e742c2074727920616761696e2077697468206c65737320737761702076616c6064820152623ab29760e91b608482015260a401610680565b600e80549060006113c883611cb3565b91905055505b811580156113de57506000600a54115b80156113e8575082155b1561149c57600a5484611410876001600160a01b031660009081526020819052604090205490565b61141a9190611c87565b111561149c5760405162461bcd60e51b8152602060048201526044602482018190527f42616c616e63652065786365656473206d617820686f6c64696e677320616d6f908201527f756e742c20636f6e7369646572207573696e672061207365636f6e642077616c6064820152633632ba1760e11b608482015260a401610680565b60115460ff161580156114ac5750815b80156114b6575082155b156114dc576011805460ff191660011790556114d1846115ba565b6011805460ff191690555b61150a86827f000000000000000000000000000000000000000000000000000000000000000060085461164b565b5060008161151a57600d5461151e565b600c545b9050601054600e5410156115315750600f545b61154087878784888789611663565b50505050505050565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b60006115a78284611ccc565b9392505050565b60006115a78284611ce3565b3060009081526020819052604081205490506000600b54821080156115df5750600082115b156115eb575080611601565b600b548311156115fe5750600b54611601565b50815b811561161057611610816116cc565b4761161a81611826565b60405182907f1cfca31204cc745553128283c3bd97acb07e803bd611f352db637c644eb59b8790600090a250505050565b6000831561077d5761077d8584610b23600186611d05565b83156116c1578215801561167a575060115460ff16155b801561168a5750818061168a5750805b156116c15760006116a06064610e70888861159b565b905080156116b3576116b388308361187c565b6116bd8682611a4a565b9550505b61154087878761187c565b604080516002808252606082018352600092602083019080368337019050509050308160008151811061170157611701611d18565b6001600160a01b03928316602091820292909201810191909152600654604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa15801561175a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061177e9190611c04565b8160018151811061179157611791611d18565b6001600160a01b0392831660209182029290920101526006546117b79130911684610f70565b60065460405163791ac94760e01b81526001600160a01b039091169063791ac947906117f0908590600090869030904290600401611d2e565b600060405180830381600087803b15801561180a57600080fd5b505af115801561181e573d6000803e3d6000fd5b505050505050565b6040516001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169082156108fc029083906000818181858888f19350505050158015610d6f573d6000803e3d6000fd5b6001600160a01b0383166118e05760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610680565b6001600160a01b0382166119425760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610680565b6001600160a01b038316600090815260208190526040902054818110156119ba5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610680565b6001600160a01b038085166000908152602081905260408082208585039055918516815290812080548492906119f1908490611c87565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611a3d91815260200190565b60405180910390a3611120565b60006115a78284611d05565b600060208083528351808285015260005b81811015611a8357858101830151858201604001528201611a67565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b038116811461076157600080fd5b60008060408385031215611acc57600080fd5b8235611ad781611aa4565b946020939093013593505050565b600080600060608486031215611afa57600080fd5b8335611b0581611aa4565b92506020840135611b1581611aa4565b929592945050506040919091013590565b600060208284031215611b3857600080fd5b81356115a781611aa4565b60008060408385031215611b5657600080fd5b8235611b6181611aa4565b91506020830135611b7181611aa4565b809150509250929050565b600060208284031215611b8e57600080fd5b5035919050565b600181811c90821680611ba957607f821691505b602082108103611bc957634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b600060208284031215611c1657600080fd5b81516115a781611aa4565b600080600060608486031215611c3657600080fd5b8351925060208401519150604084015190509250925092565b600060208284031215611c6157600080fd5b815180151581146115a757600080fd5b634e487b7160e01b600052601160045260246000fd5b8082018082111561065057610650611c71565b600060208284031215611cac57600080fd5b5051919050565b600060018201611cc557611cc5611c71565b5060010190565b808202811582820484141761065057610650611c71565b600082611d0057634e487b7160e01b600052601260045260246000fd5b500490565b8181038181111561065057610650611c71565b634e487b7160e01b600052603260045260246000fd5b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015611d7e5784516001600160a01b031683529383019391830191600101611d59565b50506001600160a01b0396909616606085015250505060800152939250505056fea2646970667358221220de4da104dd6edea3d1e0cb46773392439f940a9e1aa36fb5c2c6dcd7e41de27164736f6c63430008130033

Deployed Bytecode

0x6080604052600436106101dc5760003560e01c80638036d59011610102578063ca70307511610095578063e91284d411610064578063e91284d41461053a578063f2fde38b14610550578063f442d3fb14610570578063ffb54a991461059057600080fd5b8063ca703075146104b2578063dd62ed3e146104c8578063e0f3ccf51461050e578063e4748b9e1461052457600080fd5b8063a457c2d7116100d1578063a457c2d71461043c578063a9059cbb1461045c578063bf3885e01461047c578063c5b272a01461049c57600080fd5b80638036d590146103dd5780638da5cb5b146103f35780638f9737961461041157806395d89b411461042757600080fd5b80632c08b75a1161017a5780635154f136116101495780635154f1361461036757806370a082311461037d578063715018a6146103b3578063751039fc146103c857600080fd5b80632c08b75a146102f65780632fa6813814610316578063313ce5671461032b578063395093511461034757600080fd5b806312d79df6116101b657806312d79df61461028b578063163f266c146102a257806318160ddd146102b757806323b872dd146102d657600080fd5b8063029a1d74146101e857806306fdde0314610239578063095ea7b31461025b57600080fd5b366101e357005b600080fd5b3480156101f457600080fd5b5061021c7f0000000000000000000000001324d3719aa16a1ea4147441dcb88550c9132cfa81565b6040516001600160a01b0390911681526020015b60405180910390f35b34801561024557600080fd5b5061024e6105aa565b6040516102309190611a56565b34801561026757600080fd5b5061027b610276366004611ab9565b61063c565b6040519015158152602001610230565b34801561029757600080fd5b506102a0610656565b005b3480156102ae57600080fd5b506102a06106eb565b3480156102c357600080fd5b506002545b604051908152602001610230565b3480156102e257600080fd5b5061027b6102f1366004611ae5565b610764565b34801561030257600080fd5b5060075461021c906001600160a01b031681565b34801561032257600080fd5b506102a0610788565b34801561033757600080fd5b5060405160128152602001610230565b34801561035357600080fd5b5061027b610362366004611ab9565b610ae9565b34801561037357600080fd5b506102c8600a5481565b34801561038957600080fd5b506102c8610398366004611b26565b6001600160a01b031660009081526020819052604090205490565b3480156103bf57600080fd5b506102a0610b28565b3480156103d457600080fd5b506102a0610b5e565b3480156103e957600080fd5b506102c860095481565b3480156103ff57600080fd5b506005546001600160a01b031661021c565b34801561041d57600080fd5b506102c860105481565b34801561043357600080fd5b5061024e610b95565b34801561044857600080fd5b5061027b610457366004611ab9565b610ba4565b34801561046857600080fd5b5061027b610477366004611ab9565b610c36565b34801561048857600080fd5b506102a0610497366004611b26565b610c44565b3480156104a857600080fd5b506102c8600f5481565b3480156104be57600080fd5b506102c8600e5481565b3480156104d457600080fd5b506102c86104e3366004611b43565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b34801561051a57600080fd5b506102c8600d5481565b34801561053057600080fd5b506102c8600c5481565b34801561054657600080fd5b506102c8600b5481565b34801561055c57600080fd5b506102a061056b366004611b26565b610d73565b34801561057c57600080fd5b506102a061058b366004611b7c565b610e0b565b34801561059c57600080fd5b5060135461027b9060ff1681565b6060600380546105b990611b95565b80601f01602080910402602001604051908101604052809291908181526020018280546105e590611b95565b80156106325780601f1061060757610100808354040283529160200191610632565b820191906000526020600020905b81548152906001019060200180831161061557829003601f168201915b5050505050905090565b60003361064a818585610f70565b60019150505b92915050565b6005546001600160a01b031633146106895760405162461bcd60e51b815260040161068090611bcf565b60405180910390fd5b60135460ff16156106dc5760405162461bcd60e51b815260206004820152601760248201527f616c72656164792074726164696e67206f70656e6564210000000000000000006044820152606401610680565b6013805460ff19166001179055565b336001600160a01b037f0000000000000000000000001324d3719aa16a1ea4147441dcb88550c9132cfa16148061072c57506005546001600160a01b031633145b61073557600080fd5b60405133904780156108fc02916000818181858888f19350505050158015610761573d6000803e3d6000fd5b50565b600033610772858285611094565b61077d858585611126565b506001949350505050565b6005546001600160a01b031633146107b25760405162461bcd60e51b815260040161068090611bcf565b60135460ff16156107f75760405162461bcd60e51b815260206004820152600f60248201526e616c72656164792074726164696e6760881b6044820152606401610680565b6006546008546108149130916001600160a01b0390911690610f70565b600660009054906101000a90046001600160a01b03166001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610867573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061088b9190611c04565b6001600160a01b031663c9c6539630600660009054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156108ed573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109119190611c04565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af115801561095e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109829190611c04565b600780546001600160a01b039283166001600160a01b03199091161790556006541663f305d71947306109ca816001600160a01b031660009081526020819052604090205490565b6000806109df6005546001600160a01b031690565b60405160e088901b6001600160e01b03191681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c40160606040518083038185885af1158015610a47573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190610a6c9190611c21565b505060075460065460405163095ea7b360e01b81526001600160a01b03918216600482015260001960248201529116915063095ea7b3906044016020604051808303816000875af1158015610ac5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107619190611c4f565b3360008181526001602090815260408083206001600160a01b038716845290915281205490919061064a9082908690610b23908790611c87565b610f70565b6005546001600160a01b03163314610b525760405162461bcd60e51b815260040161068090611bcf565b610b5c6000611549565b565b6005546001600160a01b03163314610b885760405162461bcd60e51b815260040161068090611bcf565b600854600a819055600955565b6060600480546105b990611b95565b3360008181526001602090815260408083206001600160a01b038716845290915281205490919083811015610c295760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610680565b61077d8286868403610f70565b60003361064a818585611126565b336001600160a01b037f0000000000000000000000001324d3719aa16a1ea4147441dcb88550c9132cfa161480610c8557506005546001600160a01b031633145b610c8e57600080fd5b6040516370a0823160e01b81523060048201526001600160a01b0382169063a9059cbb90339083906370a0823190602401602060405180830381865afa158015610cdc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d009190611c9a565b6040516001600160e01b031960e085901b1681526001600160a01b03909216600483015260248201526044016020604051808303816000875af1158015610d4b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d6f9190611c4f565b5050565b6005546001600160a01b03163314610d9d5760405162461bcd60e51b815260040161068090611bcf565b6001600160a01b038116610e025760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610680565b61076181611549565b336001600160a01b037f0000000000000000000000001324d3719aa16a1ea4147441dcb88550c9132cfa161480610e4c57506005546001600160a01b031633145b610e5557600080fd5b610e76620186a0610e706001610e6a60025490565b9061159b565b906115ae565b811015610eeb5760405162461bcd60e51b815260206004820152603860248201527f53776170207468726573686f6c642063616e6e6f74206265206c6f776572207460448201527f68616e20302e3030312520746f74616c20737570706c792e00000000000000006064820152608401610680565b610efe6064610e706002610e6a60025490565b811115610f6b5760405162461bcd60e51b815260206004820152603560248201527f53776170207468726573686f6c642063616e6e6f7420626520686967686572206044820152743a3430b7101912903a37ba30b61039bab838363c9760591b6064820152608401610680565b600b55565b6001600160a01b038316610fd25760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610680565b6001600160a01b0382166110335760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610680565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b03838116600090815260016020908152604080832093861683529290522054600019811461112057818110156111135760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401610680565b6111208484848403610f70565b50505050565b6001600160a01b0383166111905760405162461bcd60e51b815260206004820152602b60248201527f5472616e736665722066726f6d20746865207a65726f2061646472657373206e60448201526a37ba1030b63637bbb2b21760a91b6064820152608401610680565b6001600160a01b0382166111f85760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220746f20746865207a65726f2061646472657373206e6f746044820152681030b63637bbb2b21760b91b6064820152608401610680565b6000811161125b5760405162461bcd60e51b815260206004820152602a60248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152693a3430b7103d32b9379760b11b6064820152608401610680565b6001600160a01b03831660009081526012602052604081205460ff168061129a57506001600160a01b03831660009081526012602052604090205460ff165b60135490915060ff16806112ab5750805b6112f75760405162461bcd60e51b815260206004820152601f60248201527f4c69717569646974792070616972206e6f742079657420637265617465642e006044820152606401610680565b6007546001600160a01b0390811684821681149186161480806113175750815b801561132557506000600954115b801561132f575082155b156113ce576009548411156113b85760405162461bcd60e51b815260206004820152604360248201527f537761702076616c75652065786365656473206d6178207377617020616d6f7560448201527f6e742c2074727920616761696e2077697468206c65737320737761702076616c6064820152623ab29760e91b608482015260a401610680565b600e80549060006113c883611cb3565b91905055505b811580156113de57506000600a54115b80156113e8575082155b1561149c57600a5484611410876001600160a01b031660009081526020819052604090205490565b61141a9190611c87565b111561149c5760405162461bcd60e51b8152602060048201526044602482018190527f42616c616e63652065786365656473206d617820686f6c64696e677320616d6f908201527f756e742c20636f6e7369646572207573696e672061207365636f6e642077616c6064820152633632ba1760e11b608482015260a401610680565b60115460ff161580156114ac5750815b80156114b6575082155b156114dc576011805460ff191660011790556114d1846115ba565b6011805460ff191690555b61150a86827f0000000000000000000000001324d3719aa16a1ea4147441dcb88550c9132cfa60085461164b565b5060008161151a57600d5461151e565b600c545b9050601054600e5410156115315750600f545b61154087878784888789611663565b50505050505050565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b60006115a78284611ccc565b9392505050565b60006115a78284611ce3565b3060009081526020819052604081205490506000600b54821080156115df5750600082115b156115eb575080611601565b600b548311156115fe5750600b54611601565b50815b811561161057611610816116cc565b4761161a81611826565b60405182907f1cfca31204cc745553128283c3bd97acb07e803bd611f352db637c644eb59b8790600090a250505050565b6000831561077d5761077d8584610b23600186611d05565b83156116c1578215801561167a575060115460ff16155b801561168a5750818061168a5750805b156116c15760006116a06064610e70888861159b565b905080156116b3576116b388308361187c565b6116bd8682611a4a565b9550505b61154087878761187c565b604080516002808252606082018352600092602083019080368337019050509050308160008151811061170157611701611d18565b6001600160a01b03928316602091820292909201810191909152600654604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa15801561175a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061177e9190611c04565b8160018151811061179157611791611d18565b6001600160a01b0392831660209182029290920101526006546117b79130911684610f70565b60065460405163791ac94760e01b81526001600160a01b039091169063791ac947906117f0908590600090869030904290600401611d2e565b600060405180830381600087803b15801561180a57600080fd5b505af115801561181e573d6000803e3d6000fd5b505050505050565b6040516001600160a01b037f0000000000000000000000001324d3719aa16a1ea4147441dcb88550c9132cfa169082156108fc029083906000818181858888f19350505050158015610d6f573d6000803e3d6000fd5b6001600160a01b0383166118e05760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610680565b6001600160a01b0382166119425760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610680565b6001600160a01b038316600090815260208190526040902054818110156119ba5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610680565b6001600160a01b038085166000908152602081905260408082208585039055918516815290812080548492906119f1908490611c87565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611a3d91815260200190565b60405180910390a3611120565b60006115a78284611d05565b600060208083528351808285015260005b81811015611a8357858101830151858201604001528201611a67565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b038116811461076157600080fd5b60008060408385031215611acc57600080fd5b8235611ad781611aa4565b946020939093013593505050565b600080600060608486031215611afa57600080fd5b8335611b0581611aa4565b92506020840135611b1581611aa4565b929592945050506040919091013590565b600060208284031215611b3857600080fd5b81356115a781611aa4565b60008060408385031215611b5657600080fd5b8235611b6181611aa4565b91506020830135611b7181611aa4565b809150509250929050565b600060208284031215611b8e57600080fd5b5035919050565b600181811c90821680611ba957607f821691505b602082108103611bc957634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b600060208284031215611c1657600080fd5b81516115a781611aa4565b600080600060608486031215611c3657600080fd5b8351925060208401519150604084015190509250925092565b600060208284031215611c6157600080fd5b815180151581146115a757600080fd5b634e487b7160e01b600052601160045260246000fd5b8082018082111561065057610650611c71565b600060208284031215611cac57600080fd5b5051919050565b600060018201611cc557611cc5611c71565b5060010190565b808202811582820484141761065057610650611c71565b600082611d0057634e487b7160e01b600052601260045260246000fd5b500490565b8181038181111561065057610650611c71565b634e487b7160e01b600052603260045260246000fd5b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015611d7e5784516001600160a01b031683529383019391830191600101611d59565b50506001600160a01b0396909616606085015250505060800152939250505056fea2646970667358221220de4da104dd6edea3d1e0cb46773392439f940a9e1aa36fb5c2c6dcd7e41de27164736f6c63430008130033

Deployed Bytecode Sourcemap

9495:6641:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9654:42;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;178:32:1;;;160:51;;148:2;133:18;9654:42:0;;;;;;;;1778:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;2710:201::-;;;;;;;;;;-1:-1:-1;2710:201:0;;;;;:::i;:::-;;:::i;:::-;;;1396:14:1;;1389:22;1371:41;;1359:2;1344:18;2710:201:0;1231:187:1;11423:136:0;;;;;;;;;;;;;:::i;:::-;;15697:182;;;;;;;;;;;;;:::i;2099:108::-;;;;;;;;;;-1:-1:-1;2187:12:0;;2099:108;;;1569:25:1;;;1557:2;1542:18;2099:108:0;1423:177:1;2919:295:0;;;;;;;;;;-1:-1:-1;2919:295:0;;;;;:::i;:::-;;:::i;9619:28::-;;;;;;;;;;-1:-1:-1;9619:28:0;;;;-1:-1:-1;;;;;9619:28:0;;;10923:492;;;;;;;;;;;;;:::i;1998:93::-;;;;;;;;;;-1:-1:-1;1998:93:0;;2081:2;2208:36:1;;2196:2;2181:18;1998:93:0;2066:184:1;3222:240:0;;;;;;;;;;-1:-1:-1;3222:240:0;;;;;:::i;:::-;;:::i;9805:55::-;;;;;;;;;;;;;;;;2215:127;;;;;;;;;;-1:-1:-1;2215:127:0;;;;;:::i;:::-;-1:-1:-1;;;;;2316:18:0;2289:7;2316:18;;;;;;;;;;;;2215:127;7177:103;;;;;;;;;;;;;:::i;15573:116::-;;;;;;;;;;;;;:::i;9748:50::-;;;;;;;;;;;;;;;;6954:87;;;;;;;;;;-1:-1:-1;7027:6:0;;-1:-1:-1;;;;;7027:6:0;6954:87;;10073:35;;;;;;;;;;;;;;;;1886:104;;;;;;;;;;;;;:::i;3470:438::-;;;;;;;;;;-1:-1:-1;3470:438:0;;;;;:::i;:::-;;:::i;2350:193::-;;;;;;;;;;-1:-1:-1;2350:193:0;;;;;:::i;:::-;;:::i;15887:201::-;;;;;;;;;;-1:-1:-1;15887:201:0;;;;;:::i;:::-;;:::i;10035:31::-;;;;;;;;;;;;;;;;10001:27;;;;;;;;;;;;;;;;2551:151;;;;;;;;;;-1:-1:-1;2551:151:0;;;;;:::i;:::-;-1:-1:-1;;;;;2667:18:0;;;2640:7;2667:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;2551:151;9965:27;;;;;;;;;;;;;;;;9932:26;;;;;;;;;;;;;;;;9867:56;;;;;;;;;;;;;;;;7288:201;;;;;;;;;;-1:-1:-1;7288:201:0;;;;;:::i;:::-;;:::i;14927:440::-;;;;;;;;;;-1:-1:-1;14927:440:0;;;;;:::i;:::-;;:::i;10208:31::-;;;;;;;;;;-1:-1:-1;10208:31:0;;;;;;;;1778:100;1832:13;1865:5;1858:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1778:100;:::o;2710:201::-;2793:4;322:10;2849:32;322:10;2865:7;2874:6;2849:8;:32::i;:::-;2899:4;2892:11;;;2710:201;;;;;:::o;11423:136::-;7027:6;;-1:-1:-1;;;;;7027:6:0;322:10;7089:23;7081:68;;;;-1:-1:-1;;;7081:68:0;;;;;;;:::i;:::-;;;;;;;;;11484:11:::1;::::0;::::1;;11483:12;11475:47;;;::::0;-1:-1:-1;;;11475:47:0;;4298:2:1;11475:47:0::1;::::0;::::1;4280:21:1::0;4337:2;4317:18;;;4310:30;4376:25;4356:18;;;4349:53;4419:18;;11475:47:0::1;4096:347:1::0;11475:47:0::1;11533:11;:18:::0;;-1:-1:-1;;11533:18:0::1;11547:4;11533:18;::::0;;11423:136::o;15697:182::-;15752:10;-1:-1:-1;;;;;15766:17:0;15752:31;;;:56;;-1:-1:-1;7027:6:0;;-1:-1:-1;;;;;7027:6:0;15787:10;:21;15752:56;15744:65;;;;;;15820:51;;15828:10;;15849:21;15820:51;;;;;;;;;15849:21;15828:10;15820:51;;;;;;;;;;;;;;;;;;;;;15697:182::o;2919:295::-;3050:4;322:10;3108:38;3124:4;322:10;3139:6;3108:15;:38::i;:::-;3157:27;3167:4;3173:2;3177:6;3157:9;:27::i;:::-;-1:-1:-1;3202:4:0;;2919:295;-1:-1:-1;;;;2919:295:0:o;10923:492::-;7027:6;;-1:-1:-1;;;;;7027:6:0;322:10;7089:23;7081:68;;;;-1:-1:-1;;;7081:68:0;;;;;;;:::i;:::-;10990:11:::1;::::0;::::1;;10989:12;10981:39;;;::::0;-1:-1:-1;;;10981:39:0;;4650:2:1;10981:39:0::1;::::0;::::1;4632:21:1::0;4689:2;4669:18;;;4662:30;-1:-1:-1;;;4708:18:1;;;4701:45;4763:18;;10981:39:0::1;4448:339:1::0;10981:39:0::1;11071:7;::::0;11081:6:::1;::::0;11039:49:::1;::::0;11056:4:::1;::::0;-1:-1:-1;;;;;11071:7:0;;::::1;::::0;11039:8:::1;:49::i;:::-;11133:7;;;;;;;;;-1:-1:-1::0;;;;;11133:7:0::1;-1:-1:-1::0;;;;;11133:15:0::1;;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;11115:47:0::1;;11171:4;11178:7;;;;;;;;;-1:-1:-1::0;;;;;11178:7:0::1;-1:-1:-1::0;;;;;11178:12:0::1;;:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11115:78;::::0;-1:-1:-1;;;;;;11115:78:0::1;::::0;;;;;;-1:-1:-1;;;;;5278:15:1;;;11115:78:0::1;::::0;::::1;5260:34:1::0;5330:15;;5310:18;;;5303:43;5195:18;;11115:78:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11099:13;:94:::0;;-1:-1:-1;;;;;11099:94:0;;::::1;-1:-1:-1::0;;;;;;11099:94:0;;::::1;;::::0;;11212:7:::1;::::0;::::1;:23;11243:21;11274:4;11280:24;11274:4:::0;-1:-1:-1;;;;;2316:18:0;2289:7;2316:18;;;;;;;;;;;;2215:127;11280:24:::1;11305:1;11307::::0;11309:7:::1;7027:6:::0;;-1:-1:-1;;;;;7027:6:0;;6954:87;11309:7:::1;11212:121;::::0;::::1;::::0;;;-1:-1:-1;;;;;;11212:121:0;;;-1:-1:-1;;;;;5716:15:1;;;11212:121:0::1;::::0;::::1;5698:34:1::0;5748:18;;;5741:34;;;;5791:18;;;5784:34;;;;5834:18;;;5827:34;5898:15;;;5877:19;;;5870:44;11317:15:0::1;5930:19:1::0;;;5923:35;5632:19;;11212:121:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;11351:13:0::1;::::0;11382:7:::1;::::0;11344:63:::1;::::0;-1:-1:-1;;;11344:63:0;;-1:-1:-1;;;;;11382:7:0;;::::1;11344:63;::::0;::::1;6454:51:1::0;-1:-1:-1;;6521:18:1;;;6514:34;11351:13:0;::::1;::::0;-1:-1:-1;11344:29:0::1;::::0;6427:18:1;;11344:63:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;3222:240::-:0;322:10;3310:4;3391:18;;;:11;:18;;;;;;;;-1:-1:-1;;;;;3391:27:0;;;;;;;;;;3310:4;;322:10;3366:66;;322:10;;3391:27;;:40;;3421:10;;3391:40;:::i;:::-;3366:8;:66::i;7177:103::-;7027:6;;-1:-1:-1;;;;;7027:6:0;322:10;7089:23;7081:68;;;;-1:-1:-1;;;7081:68:0;;;;;;;:::i;:::-;7242:30:::1;7269:1;7242:18;:30::i;:::-;7177:103::o:0;15573:116::-;7027:6;;-1:-1:-1;;;;;7027:6:0;322:10;7089:23;7081:68;;;;-1:-1:-1;;;7081:68:0;;;;;;;:::i;:::-;15645:6:::1;::::0;15627:15:::1;:24:::0;;;15662:10:::1;:19:::0;15573:116::o;1886:104::-;1942:13;1975:7;1968:14;;;;;:::i;3470:438::-;322:10;3563:4;3646:18;;;:11;:18;;;;;;;;-1:-1:-1;;;;;3646:27:0;;;;;;;;;;3563:4;;322:10;3692:35;;;;3684:85;;;;-1:-1:-1;;;3684:85:0;;7305:2:1;3684:85:0;;;7287:21:1;7344:2;7324:18;;;7317:30;7383:34;7363:18;;;7356:62;-1:-1:-1;;;7434:18:1;;;7427:35;7479:19;;3684:85:0;7103:401:1;3684:85:0;3805:60;3814:5;3821:7;3849:15;3830:16;:34;3805:8;:60::i;2350:193::-;2429:4;322:10;2485:28;322:10;2502:2;2506:6;2485:9;:28::i;15887:201::-;15954:10;-1:-1:-1;;;;;15968:17:0;15954:31;;;:56;;-1:-1:-1;7027:6:0;;-1:-1:-1;;;;;7027:6:0;15989:10;:21;15954:56;15946:65;;;;;;16049:30;;-1:-1:-1;;;16049:30:0;;16073:4;16049:30;;;160:51:1;-1:-1:-1;;;;;16022:14:0;;;;;16037:10;;16022:14;;16049:15;;133:18:1;;16049:30:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;16022:58;;-1:-1:-1;;;;;;16022:58:0;;;;;;;-1:-1:-1;;;;;6472:32:1;;;16022:58:0;;;6454:51:1;6521:18;;;6514:34;6427:18;;16022:58:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;15887:201;:::o;7288:::-;7027:6;;-1:-1:-1;;;;;7027:6:0;322:10;7089:23;7081:68;;;;-1:-1:-1;;;7081:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;7377:22:0;::::1;7369:73;;;::::0;-1:-1:-1;;;7369:73:0;;7900:2:1;7369:73:0::1;::::0;::::1;7882:21:1::0;7939:2;7919:18;;;7912:30;7978:34;7958:18;;;7951:62;-1:-1:-1;;;8029:18:1;;;8022:36;8075:19;;7369:73:0::1;7698:402:1::0;7369:73:0::1;7453:28;7472:8;7453:18;:28::i;14927:440::-:0;15010:10;-1:-1:-1;;;;;15024:17:0;15010:31;;;:56;;-1:-1:-1;7027:6:0;;-1:-1:-1;;;;;7027:6:0;15045:10;:21;15010:56;15002:65;;;;;;15102:32;15127:6;15102:20;15120:1;15102:13;2187:12;;;2099:108;15102:13;:17;;:20::i;:::-;:24;;:32::i;:::-;15086:12;:48;;15078:117;;;;-1:-1:-1;;;15078:117:0;;8307:2:1;15078:117:0;;;8289:21:1;8346:2;8326:18;;;8319:30;8385:34;8365:18;;;8358:62;8456:26;8436:18;;;8429:54;8500:19;;15078:117:0;8105:420:1;15078:117:0;15230:29;15255:3;15230:20;15248:1;15230:13;2187:12;;;2099:108;15230:29;15214:12;:45;;15206:111;;;;-1:-1:-1;;;15206:111:0;;8732:2:1;15206:111:0;;;8714:21:1;8771:2;8751:18;;;8744:30;8810:34;8790:18;;;8783:62;-1:-1:-1;;;8861:18:1;;;8854:51;8922:19;;15206:111:0;8530:417:1;15206:111:0;15328:16;:31;14927:440::o;5601:380::-;-1:-1:-1;;;;;5737:19:0;;5729:68;;;;-1:-1:-1;;;5729:68:0;;9154:2:1;5729:68:0;;;9136:21:1;9193:2;9173:18;;;9166:30;9232:34;9212:18;;;9205:62;-1:-1:-1;;;9283:18:1;;;9276:34;9327:19;;5729:68:0;8952:400:1;5729:68:0;-1:-1:-1;;;;;5816:21:0;;5808:68;;;;-1:-1:-1;;;5808:68:0;;9559:2:1;5808:68:0;;;9541:21:1;9598:2;9578:18;;;9571:30;9637:34;9617:18;;;9610:62;-1:-1:-1;;;9688:18:1;;;9681:32;9730:19;;5808:68:0;9357:398:1;5808:68:0;-1:-1:-1;;;;;5889:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;5941:32;;1569:25:1;;;5941:32:0;;1542:18:1;5941:32:0;;;;;;;5601:380;;;:::o;5989:453::-;-1:-1:-1;;;;;2667:18:0;;;6124:24;2667:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;-1:-1:-1;;6191:37:0;;6187:248;;6273:6;6253:16;:26;;6245:68;;;;-1:-1:-1;;;6245:68:0;;9962:2:1;6245:68:0;;;9944:21:1;10001:2;9981:18;;;9974:30;10040:31;10020:18;;;10013:59;10089:18;;6245:68:0;9760:353:1;6245:68:0;6357:51;6366:5;6373:7;6401:6;6382:16;:25;6357:8;:51::i;:::-;6113:329;5989:453;;;:::o;11567:1533::-;-1:-1:-1;;;;;11699:18:0;;11691:74;;;;-1:-1:-1;;;11691:74:0;;10320:2:1;11691:74:0;;;10302:21:1;10359:2;10339:18;;;10332:30;10398:34;10378:18;;;10371:62;-1:-1:-1;;;10449:18:1;;;10442:41;10500:19;;11691:74:0;10118:407:1;11691:74:0;-1:-1:-1;;;;;11784:16:0;;11776:70;;;;-1:-1:-1;;;11776:70:0;;10732:2:1;11776:70:0;;;10714:21:1;10771:2;10751:18;;;10744:30;10810:34;10790:18;;;10783:62;-1:-1:-1;;;10861:18:1;;;10854:39;10910:19;;11776:70:0;10530:405:1;11776:70:0;11874:1;11865:6;:10;11857:65;;;;-1:-1:-1;;;11857:65:0;;11142:2:1;11857:65:0;;;11124:21:1;11181:2;11161:18;;;11154:30;11220:34;11200:18;;;11193:62;-1:-1:-1;;;11271:18:1;;;11264:40;11321:19;;11857:65:0;10940:406:1;11857:65:0;-1:-1:-1;;;;;11951:27:0;;11935:13;11951:27;;;:21;:27;;;;;;;;;:56;;-1:-1:-1;;;;;;11982:25:0;;;;;;:21;:25;;;;;;;;11951:56;12028:11;;11935:72;;-1:-1:-1;12028:11:0;;;:23;;;12043:8;12028:23;12020:67;;;;-1:-1:-1;;;12020:67:0;;11553:2:1;12020:67:0;;;11535:21:1;11592:2;11572:18;;;11565:30;11631:33;11611:18;;;11604:61;11682:18;;12020:67:0;11351:355:1;12020:67:0;12120:13;;-1:-1:-1;;;;;12120:13:0;;;12114:19;;;;;;12157:21;;;;;12196:15;;;12205:6;12196:15;12195:35;;;;;12229:1;12216:10;;:14;12195:35;:48;;;;;12235:8;12234:9;12195:48;12191:205;;;12277:10;;12267:6;:20;;12259:100;;;;-1:-1:-1;;;12259:100:0;;11913:2:1;12259:100:0;;;11895:21:1;11952:2;11932:18;;;11925:30;11991:34;11971:18;;;11964:62;12062:34;12042:18;;;12035:62;-1:-1:-1;;;12113:19:1;;;12106:34;12157:19;;12259:100:0;11711:471:1;12259:100:0;12374:8;:10;;;:8;:10;;;:::i;:::-;;;;;;12191:205;12425:6;12424:7;:30;;;;;12453:1;12435:15;;:19;12424:30;:43;;;;;12459:8;12458:9;12424:43;12420:198;;;12518:15;;12508:6;12492:13;12502:2;-1:-1:-1;;;;;2316:18:0;2289:7;2316:18;;;;;;;;;;;;2215:127;12492:13;:22;;;;:::i;:::-;:41;;12484:122;;;;-1:-1:-1;;;12484:122:0;;12529:2:1;12484:122:0;;;12511:21:1;12568:2;12548:18;;;12541:30;;;12607:34;12587:18;;;12580:62;12678:34;12658:18;;;12651:62;-1:-1:-1;;;12729:19:1;;;12722:35;12774:19;;12484:122:0;12327:472:1;12484:122:0;12659:7;;;;12658:8;:29;;;;;12681:6;12658:29;:53;;;;;12703:8;12702:9;12658:53;12642:189;;;12739:7;:14;;-1:-1:-1;;12739:14:0;12749:4;12739:14;;;12768:21;12782:6;12768:13;:21::i;:::-;12804:7;:15;;-1:-1:-1;;12804:15:0;;;12642:189;12843:56;12860:4;12866:5;12873:17;12892:6;;12843:16;:56::i;:::-;;12912:11;12926:5;:26;;12944:8;;12926:26;;;12934:7;;12926:26;12912:40;;12977:15;;12966:8;;:26;12963:48;;;-1:-1:-1;13000:11:0;;12963:48;13022:70;13045:4;13051:2;13055:6;13063:3;13068:8;13078:5;13085:6;13022:22;:70::i;:::-;11680:1420;;;;11567:1533;;;:::o;7497:191::-;7590:6;;;-1:-1:-1;;;;;7607:17:0;;;-1:-1:-1;;;;;;7607:17:0;;;;;;;7640:40;;7590:6;;;7607:17;7590:6;;7640:40;;7571:16;;7640:40;7560:128;7497:191;:::o;7931:98::-;7989:7;8016:5;8020:1;8016;:5;:::i;:::-;8009:12;7931:98;-1:-1:-1;;;7931:98:0:o;8037:::-;8095:7;8122:5;8126:1;8122;:5;:::i;14079:721::-;14181:4;14137:23;2316:18;;;;;;;;;;;14137:50;;14198:21;14253:16;;14235:15;:34;:57;;;;;14291:1;14273:15;:19;14235:57;14232:335;;;-1:-1:-1;14325:15:0;14232:335;;;14395:16;;14386:6;:25;14382:174;;;-1:-1:-1;14448:16:0;;14382:174;;;-1:-1:-1;14534:6:0;14382:174;14582:19;;14579:64;;14612:31;14629:13;14612:16;:31::i;:::-;14685:21;14717:35;14685:21;14717:15;:35::i;:::-;14770:22;;14778:13;;14770:22;;;;;14126:674;;;14079:721;:::o;15375:190::-;15473:4;15493:5;15490:38;;;15500:28;15509:2;15513:4;15519:8;15526:1;15519:6;:8;:::i;13108:502::-;13258:7;;13254:305;;13287:8;13286:9;:21;;;;-1:-1:-1;13300:7:0;;;;13299:8;13286:21;:42;;;;;13312:5;:15;;;;13321:6;13312:15;13282:266;;;13349:12;13364:24;13384:3;13364:15;:6;13375:3;13364:10;:15::i;:24::-;13349:39;-1:-1:-1;13413:8:0;;13409:77;;13444:42;13460:4;13474;13481;13444:15;:42::i;:::-;13516:16;:6;13527:4;13516:10;:16::i;:::-;13507:25;;13330:218;13282:266;13569:33;13585:4;13591:2;13595:6;13569:15;:33::i;13618:453::-;13710:16;;;13724:1;13710:16;;;;;;;;13686:21;;13710:16;;;;;;;;;;-1:-1:-1;13710:16:0;13686:40;;13755:4;13737;13742:1;13737:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;13737:23:0;;;:7;;;;;;;;;;:23;;;;13781:7;;:14;;;-1:-1:-1;;;13781:14:0;;;;:7;;;;;:12;;:14;;;;;13737:7;;13781:14;;;;;:7;:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13771:4;13776:1;13771:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;13771:24:0;;;:7;;;;;;;;;:24;13840:7;;13808:54;;13825:4;;13840:7;13850:11;13808:8;:54::i;:::-;13875:7;;:188;;-1:-1:-1;;;13875:188:0;;-1:-1:-1;;;;;13875:7:0;;;;:58;;:188;;13948:11;;13875:7;;13990:4;;14017;;14037:15;;13875:188;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13673:398;13618:453;:::o;14808:111::-;14868:43;;-1:-1:-1;;;;;14876:17:0;14868:35;;:43;;;;;14904:6;;14868:43;;;;14904:6;14868:35;:43;;;;;;;;;;;;;;;;;;;3916:671;-1:-1:-1;;;;;4047:18:0;;4039:68;;;;-1:-1:-1;;;4039:68:0;;14783:2:1;4039:68:0;;;14765:21:1;14822:2;14802:18;;;14795:30;14861:34;14841:18;;;14834:62;-1:-1:-1;;;14912:18:1;;;14905:35;14957:19;;4039:68:0;14581:401:1;4039:68:0;-1:-1:-1;;;;;4126:16:0;;4118:64;;;;-1:-1:-1;;;4118:64:0;;15189:2:1;4118:64:0;;;15171:21:1;15228:2;15208:18;;;15201:30;15267:34;15247:18;;;15240:62;-1:-1:-1;;;15318:18:1;;;15311:33;15361:19;;4118:64:0;14987:399:1;4118:64:0;-1:-1:-1;;;;;4268:15:0;;4246:19;4268:15;;;;;;;;;;;4302:21;;;;4294:72;;;;-1:-1:-1;;;4294:72:0;;15593:2:1;4294:72:0;;;15575:21:1;15632:2;15612:18;;;15605:30;15671:34;15651:18;;;15644:62;-1:-1:-1;;;15722:18:1;;;15715:36;15768:19;;4294:72:0;15391:402:1;4294:72:0;-1:-1:-1;;;;;4402:15:0;;;:9;:15;;;;;;;;;;;4420:20;;;4402:38;;4462:13;;;;;;;;:23;;4434:6;;4402:9;4462:23;;4434:6;;4462:23;:::i;:::-;;;;;;;;4518:2;-1:-1:-1;;;;;4503:26:0;4512:4;-1:-1:-1;;;;;4503:26:0;;4522:6;4503:26;;;;1569:25:1;;1557:2;1542:18;;1423:177;4503:26:0;;;;;;;;4542:37;6450:125;7825:98;7883:7;7910:5;7914:1;7910;:5;:::i;222:548:1:-;334:4;363:2;392;381:9;374:21;424:6;418:13;467:6;462:2;451:9;447:18;440:34;492:1;502:140;516:6;513:1;510:13;502:140;;;611:14;;;607:23;;601:30;577:17;;;596:2;573:26;566:66;531:10;;502:140;;;506:3;691:1;686:2;677:6;666:9;662:22;658:31;651:42;761:2;754;750:7;745:2;737:6;733:15;729:29;718:9;714:45;710:54;702:62;;;;222:548;;;;:::o;775:131::-;-1:-1:-1;;;;;850:31:1;;840:42;;830:70;;896:1;893;886:12;911:315;979:6;987;1040:2;1028:9;1019:7;1015:23;1011:32;1008:52;;;1056:1;1053;1046:12;1008:52;1095:9;1082:23;1114:31;1139:5;1114:31;:::i;:::-;1164:5;1216:2;1201:18;;;;1188:32;;-1:-1:-1;;;911:315:1:o;1605:456::-;1682:6;1690;1698;1751:2;1739:9;1730:7;1726:23;1722:32;1719:52;;;1767:1;1764;1757:12;1719:52;1806:9;1793:23;1825:31;1850:5;1825:31;:::i;:::-;1875:5;-1:-1:-1;1932:2:1;1917:18;;1904:32;1945:33;1904:32;1945:33;:::i;:::-;1605:456;;1997:7;;-1:-1:-1;;;2051:2:1;2036:18;;;;2023:32;;1605:456::o;2255:247::-;2314:6;2367:2;2355:9;2346:7;2342:23;2338:32;2335:52;;;2383:1;2380;2373:12;2335:52;2422:9;2409:23;2441:31;2466:5;2441:31;:::i;2772:388::-;2840:6;2848;2901:2;2889:9;2880:7;2876:23;2872:32;2869:52;;;2917:1;2914;2907:12;2869:52;2956:9;2943:23;2975:31;3000:5;2975:31;:::i;:::-;3025:5;-1:-1:-1;3082:2:1;3067:18;;3054:32;3095:33;3054:32;3095:33;:::i;:::-;3147:7;3137:17;;;2772:388;;;;;:::o;3165:180::-;3224:6;3277:2;3265:9;3256:7;3252:23;3248:32;3245:52;;;3293:1;3290;3283:12;3245:52;-1:-1:-1;3316:23:1;;3165:180;-1:-1:-1;3165:180:1:o;3350:380::-;3429:1;3425:12;;;;3472;;;3493:61;;3547:4;3539:6;3535:17;3525:27;;3493:61;3600:2;3592:6;3589:14;3569:18;3566:38;3563:161;;3646:10;3641:3;3637:20;3634:1;3627:31;3681:4;3678:1;3671:15;3709:4;3706:1;3699:15;3563:161;;3350:380;;;:::o;3735:356::-;3937:2;3919:21;;;3956:18;;;3949:30;4015:34;4010:2;3995:18;;3988:62;4082:2;4067:18;;3735:356::o;4792:251::-;4862:6;4915:2;4903:9;4894:7;4890:23;4886:32;4883:52;;;4931:1;4928;4921:12;4883:52;4963:9;4957:16;4982:31;5007:5;4982:31;:::i;5969:306::-;6057:6;6065;6073;6126:2;6114:9;6105:7;6101:23;6097:32;6094:52;;;6142:1;6139;6132:12;6094:52;6171:9;6165:16;6155:26;;6221:2;6210:9;6206:18;6200:25;6190:35;;6265:2;6254:9;6250:18;6244:25;6234:35;;5969:306;;;;;:::o;6559:277::-;6626:6;6679:2;6667:9;6658:7;6654:23;6650:32;6647:52;;;6695:1;6692;6685:12;6647:52;6727:9;6721:16;6780:5;6773:13;6766:21;6759:5;6756:32;6746:60;;6802:1;6799;6792:12;6841:127;6902:10;6897:3;6893:20;6890:1;6883:31;6933:4;6930:1;6923:15;6957:4;6954:1;6947:15;6973:125;7038:9;;;7059:10;;;7056:36;;;7072:18;;:::i;7509:184::-;7579:6;7632:2;7620:9;7611:7;7607:23;7603:32;7600:52;;;7648:1;7645;7638:12;7600:52;-1:-1:-1;7671:16:1;;7509:184;-1:-1:-1;7509:184:1:o;12187:135::-;12226:3;12247:17;;;12244:43;;12267:18;;:::i;:::-;-1:-1:-1;12314:1:1;12303:13;;12187:135::o;12804:168::-;12877:9;;;12908;;12925:15;;;12919:22;;12905:37;12895:71;;12946:18;;:::i;12977:217::-;13017:1;13043;13033:132;;13087:10;13082:3;13078:20;13075:1;13068:31;13122:4;13119:1;13112:15;13150:4;13147:1;13140:15;13033:132;-1:-1:-1;13179:9:1;;12977:217::o;13199:128::-;13266:9;;;13287:11;;;13284:37;;;13301:18;;:::i;13464:127::-;13525:10;13520:3;13516:20;13513:1;13506:31;13556:4;13553:1;13546:15;13580:4;13577:1;13570:15;13596:980;13858:4;13906:3;13895:9;13891:19;13937:6;13926:9;13919:25;13963:2;14001:6;13996:2;13985:9;13981:18;13974:34;14044:3;14039:2;14028:9;14024:18;14017:31;14068:6;14103;14097:13;14134:6;14126;14119:22;14172:3;14161:9;14157:19;14150:26;;14211:2;14203:6;14199:15;14185:29;;14232:1;14242:195;14256:6;14253:1;14250:13;14242:195;;;14321:13;;-1:-1:-1;;;;;14317:39:1;14305:52;;14412:15;;;;14377:12;;;;14353:1;14271:9;14242:195;;;-1:-1:-1;;;;;;;14493:32:1;;;;14488:2;14473:18;;14466:60;-1:-1:-1;;;14557:3:1;14542:19;14535:35;14454:3;13596:980;-1:-1:-1;;;13596:980:1:o

Swarm Source

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