ETH Price: $2,456.16 (+0.73%)

Token

ShibaBonk (SHIBO)
 

Overview

Max Total Supply

1,000,000,000 SHIBO

Holders

27

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
35,085,214.591884397 SHIBO

Value
$0.00
0x6f52266def784ce21e4bf40767b73bcdc0fbda1f
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:
SHIBO

Compiler Version
v0.8.17+commit.8df45f5f

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

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

/**
TG: https://t.me/shibabonketh
Website: https://shibabonk.com
Twitter: https://twitter.com/shibabonkerc

*/
// SPDX-License-Identifier: MIT

pragma solidity 0.8.17;


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

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

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

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

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

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

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

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

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

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

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

abstract contract Ownable is Context {
    address private _owner;

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

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

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

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

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

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

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

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

interface IRouter {
    function factory() external pure returns (address);
    function WETH() external pure returns (address);
    function addLiquidityETH(
        address token,
        uint amountTokenDesired,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external payable returns (uint amountToken, uint amountETH, uint liquidity);

    function removeLiquidityWithPermit(
        address tokenA,
        address tokenB,
        uint liquidity,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline,
        bool approveMax, uint8 v, bytes32 r, bytes32 s
    ) external returns (uint amountA, uint amountB);

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

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

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

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

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

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

    function name() public pure returns (string memory) {return _name;}
    function symbol() public pure returns (string memory) {return _symbol;}
    function decimals() public pure returns (uint8) {return _decimals;}
    function balanceOf(address account) public view override returns (uint256) {return _balances[account];}
    function transfer(address recipient, uint256 amount) public override returns (bool) {_transfer(msg.sender, recipient, amount);return true;}
    function allowance(address owner, address spender) public view override returns (uint256) {return _allowances[owner][spender];}
    function isCont(address addr) internal view returns (bool) {uint size; assembly { size := extcodesize(addr) } return size > 0; }
    function setisExempt(address _address, bool _enabled) external onlyOwner {isFeeExempt[_address] = _enabled;}
    function approve(address spender, uint256 amount) public override returns (bool) {_approve(msg.sender, spender, amount);return true;}
    function totalSupply() public view override returns (uint256) {return _totalSupply.sub(balanceOf(DEAD)).sub(balanceOf(address(0)));}
    function _maxWalletToken() public view returns (uint256) {return totalSupply() * _maxWalletPercentt / denominator;}
    function _maxTxAmount() public view returns (uint256) {return totalSupply() * _maxTxAmountPercentt / denominator;}
    function _maxTransferAmount() public view returns (uint256) {return totalSupply() * _maxTransferPercentt / denominator;}
    receive() external payable { require(isFeeExempt[msg.sender]); }

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

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

    function removeLimits() external onlyOwner {
        _maxTxAmountPercentt = 10000;
        _maxTransferPercentt = 10000;
        _maxWalletPercentt = 10000;
    }

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

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

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

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

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

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

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

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

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

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

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

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

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

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

}

Contract Security Audit

Contract ABI

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

6080604052620000126009600a62000339565b6200002290633b9aca0062000351565b600181905560fa600281905560038181556004919091556009805460ff60a01b191690556000600a819055600b819055600c819055600d819055600e819055600f8190556010556127106011556012805460ff19169055601555620186a0906200008f906103e862000351565b6200009b91906200036b565b601655620186a0600154600a620000b3919062000351565b620000bf91906200036b565b60175560188054336001600160a01b0319918216811790925560198054821683179055601a80549091169091179055348015620000fb57600080fd5b506200010733620001d4565b600880546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d908117909155306000908152600760209081526040808320805460ff199081166001908117909255601a546001600160a01b039081168652838620805483168417905560195416855282852080548216831790553380865283862080549092168317909155905460058452828520819055915191825292917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3506200038e565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b634e487b7160e01b600052601160045260246000fd5b600181815b808511156200027b5781600019048211156200025f576200025f62000224565b808516156200026d57918102915b93841c93908002906200023f565b509250929050565b600082620002945750600162000333565b81620002a35750600062000333565b8160018114620002bc5760028114620002c757620002e7565b600191505062000333565b60ff841115620002db57620002db62000224565b50506001821b62000333565b5060208310610133831016604e8410600b84101617156200030c575081810a62000333565b6200031883836200023a565b80600019048211156200032f576200032f62000224565b0290505b92915050565b60006200034a60ff84168362000283565b9392505050565b808202811582820484141762000333576200033362000224565b6000826200038957634e487b7160e01b600052601260045260246000fd5b500490565b611b6b806200039e6000396000f3fe60806040526004361061012e5760003560e01c8063751039fc116100ab578063a8aa1b311161006f578063a8aa1b3114610378578063a9059cbb14610398578063c9567bf9146103b8578063dd62ed3e146103c0578063e94dd17c14610406578063f2fde38b1461042657600080fd5b8063751039fc146102d957806378109e54146102ee5780637d1db4a5146103035780638da5cb5b1461031857806395d89b411461034a57600080fd5b8063313ce567116100f2578063313ce567146102225780633f4218e01461023e57806348ff2b8b1461026e57806370a082311461028e578063715018a6146102c457600080fd5b806306fdde0314610156578063095ea7b31461019a57806318160ddd146101ca5780631f976b7e146101ed57806323b872dd1461020257600080fd5b36610151573360009081526007602052604090205460ff1661014f57600080fd5b005b600080fd5b34801561016257600080fd5b506040805180820190915260098152685368696261426f6e6b60b81b60208201525b60405161019191906117d1565b60405180910390f35b3480156101a657600080fd5b506101ba6101b5366004611834565b610446565b6040519015158152602001610191565b3480156101d657600080fd5b506101df61045d565b604051908152602001610191565b3480156101f957600080fd5b506101df6104ce565b34801561020e57600080fd5b506101ba61021d366004611860565b6104f2565b34801561022e57600080fd5b5060405160098152602001610191565b34801561024a57600080fd5b506101ba6102593660046118a1565b60076020526000908152604090205460ff1681565b34801561027a57600080fd5b5061014f6102893660046118be565b61055c565b34801561029a57600080fd5b506101df6102a93660046118a1565b6001600160a01b031660009081526005602052604090205490565b3480156102d057600080fd5b5061014f6105ba565b3480156102e557600080fd5b5061014f6105f0565b3480156102fa57600080fd5b506101df61062c565b34801561030f57600080fd5b506101df61063c565b34801561032457600080fd5b506000546001600160a01b03165b6040516001600160a01b039091168152602001610191565b34801561035657600080fd5b50604080518082019091526005815264534849424f60d81b6020820152610184565b34801561038457600080fd5b50600954610332906001600160a01b031681565b3480156103a457600080fd5b506101ba6103b3366004611834565b61064c565b61014f610659565b3480156103cc57600080fd5b506101df6103db3660046118fc565b6001600160a01b03918216600090815260066020908152604080832093909416825291909152205490565b34801561041257600080fd5b5061014f61042136600461192a565b6108b0565b34801561043257600080fd5b5061014f6104413660046118a1565b61091c565b60006104533384846109b7565b5060015b92915050565b60056020527f05b8ccbb9d4d8fb16ea74ce3c29a41f1b461fbdaff4714a0d9a8eb05499746bc5461dead60009081527f7d509c07f0d4edcc2dd1b53aae68677132eb562dcba78e36381b63ccaf66e6ba5460015491926104c99290916104c39190610adb565b90610adb565b905090565b60006011546003546104de61045d565b6104e8919061196c565b6104c99190611983565b60006104ff848484610ae7565b610551843361054c85604051806060016040528060288152602001611b0e602891396001600160a01b038a1660009081526006602090815260408083203384529091529020549190610c0d565b6109b7565b5060015b9392505050565b6000546001600160a01b0316331461058f5760405162461bcd60e51b8152600401610586906119a5565b60405180910390fd5b6001600160a01b03919091166000908152600760205260409020805460ff1916911515919091179055565b6000546001600160a01b031633146105e45760405162461bcd60e51b8152600401610586906119a5565b6105ee6000610c39565b565b6000546001600160a01b0316331461061a5760405162461bcd60e51b8152600401610586906119a5565b61271060028190556003819055600455565b60006011546004546104de61045d565b60006011546002546104de61045d565b6000610453338484610ae7565b6009805460ff60a01b1916600160a01b1790556008546040805163c45a015560e01b815290516001600160a01b039092169163c45a0155916004808201926020929091908290030181865afa1580156106b6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106da91906119da565b6001600160a01b031663c9c6539630600860009054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561073c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061076091906119da565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af11580156107ad573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107d191906119da565b600980546001600160a01b0319166001600160a01b039283161790556008546107ff913091166000196109b7565b6008546001600160a01b031663f305d7193430610831816001600160a01b031660009081526005602052604090205490565b6000806108466000546001600160a01b031690565b426040518863ffffffff1660e01b8152600401610868969594939291906119f7565b60606040518083038185885af1158015610886573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906108ab9190611a32565b505050565b6000546001600160a01b031633146108da5760405162461bcd60e51b8152600401610586906119a5565b60158390556001546108fb90620186a0906108f59085610c89565b90610c95565b60165560015461091490620186a0906108f59084610c89565b601755505050565b6000546001600160a01b031633146109465760405162461bcd60e51b8152600401610586906119a5565b6001600160a01b0381166109ab5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610586565b6109b481610c39565b50565b6001600160a01b038316610a195760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610586565b6001600160a01b038216610a7a5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610586565b6001600160a01b0383811660008181526006602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b60006105558284611a60565b610af2838383610ca1565b610afc8383610e4b565b610b07838383610ee0565b610b118383610fd1565b610b1c8383836110ad565b610b278383836111e4565b6001600160a01b038316600090815260056020526040902054610b4a9082610adb565b6001600160a01b038416600090815260056020526040812091909155610b708484611209565b610b7a5781610b85565b610b8584848461124f565b6001600160a01b038416600090815260056020526040902054909150610bab9082611343565b6001600160a01b0380851660008181526005602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90610bff9085815260200190565b60405180910390a350505050565b60008184841115610c315760405162461bcd60e51b815260040161058691906117d1565b505050900390565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000610555828461196c565b60006105558284611983565b6001600160a01b038316610d055760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610586565b6001600160a01b038216610d675760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610586565b60008111610dc95760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610586565b6001600160a01b0383166000908152600560205260409020548111156108ab5760405162461bcd60e51b815260206004820152603160248201527f596f752061726520747279696e6720746f207472616e73666572206d6f7265206044820152707468616e20796f75722062616c616e636560781b6064820152608401610586565b6001600160a01b03821660009081526007602052604090205460ff16158015610e8d57506001600160a01b03811660009081526007602052604090205460ff16155b15610edc57600954600160a01b900460ff16610edc5760405162461bcd60e51b815260206004820152600e60248201526d1d1c98591a5b99d05b1b1bddd95960921b6044820152606401610586565b5050565b6001600160a01b03831660009081526007602052604090205460ff16158015610f2257506001600160a01b03821660009081526007602052604090205460ff16155b8015610f3c57506009546001600160a01b03838116911614155b8015610f5357506001600160a01b03821661dead14155b156108ab57610f6061062c565b6001600160a01b038316600090815260056020526040902054610f839083611343565b11156108ab5760405162461bcd60e51b815260206004820152601e60248201527f45786365656473206d6178696d756d2077616c6c657420616d6f756e742e00006044820152606401610586565b6009546001600160a01b03838116911614801561100657506001600160a01b03811660009081526007602052604090205460ff165b1561103957601a546001600160a01b03908116600090815260066020908152604080832093851683529290522060001990555b6009546001600160a01b03828116911614801561106f57506001600160a01b03821660009081526007602052604090205460ff16155b15610edc576001601360008282546110879190611a73565b9091555050601a80546001600160a01b0383166001600160a01b03199091161790555050565b6009546001600160a01b03848116911614611153576110ca6104ce565b811115806110f057506001600160a01b03831660009081526007602052604090205460ff165b8061111357506001600160a01b03821660009081526007602052604090205460ff165b6111535760405162461bcd60e51b8152602060048201526011602482015270151608131a5b5a5d08115e18d959591959607a1b6044820152606401610586565b61115b61063c565b8111158061118157506001600160a01b03831660009081526007602052604090205460ff165b806111a457506001600160a01b03821660009081526007602052604090205460ff165b6108ab5760405162461bcd60e51b8152602060048201526011602482015270151608131a5b5a5d08115e18d959591959607a1b6044820152606401610586565b6111ef83838361134f565b156108ab576111ff601654611402565b6000601355505050565b6001600160a01b03821660009081526007602052604081205460ff161580156105555750506001600160a01b031660009081526007602052604090205460ff1615919050565b60008061125c858561157f565b111561133c576000611285611271868661157f565b60115461127f908690610c95565b90610c89565b306000908152600560205260409020549091506112a29082611343565b30600081815260056020526040908190209290925590516001600160a01b038716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906112f39085815260200190565b60405180910390a3600d541561132a5761132a3061dead611325600d5461127f60115489610c9590919063ffffffff16565b610ae7565b6113348382610adb565b915050610555565b5092915050565b60006105558284611a73565b6017546016543060009081526005602052604081205460145491938510159211159060ff16158015611383575060125460ff165b80156113985750600954600160a01b900460ff165b80156113a15750815b80156113c657506001600160a01b03861660009081526007602052604090205460ff16155b80156113df57506009546001600160a01b038681169116145b80156113ef575060155460135410155b80156113f85750805b9695505050505050565b6014805460ff19166001908117909155600c54600b54600a5460009361143c9360029361127f939192611436928391611343565b90611343565b90506000611459826108f5600a5486610c8990919063ffffffff16565b905060006114678483610adb565b905047611473826115d5565b600061147f4783610adb565b905060006114a261149b600a5488610adb90919063ffffffff16565b8390610c95565b905060006114bb600a5483610c8990919063ffffffff16565b905080156114cd576114cd868261172f565b600b546000906114e29061127f856002610c89565b90508015611526576019546040516001600160a01b039091169082156108fc029083906000818181858888f19350505050158015611524573d6000803e3d6000fd5b505b478015611569576018546040516001600160a01b039091169082156108fc029083906000818181858888f19350505050158015611567573d6000803e3d6000fd5b505b50506014805460ff191690555050505050505050565b6009546000906001600160a01b03908116908316036115ac57600f546115a59047610adb565b9050610457565b6009546001600160a01b03908116908416036115cb5750600e54610457565b5060105492915050565b604080516002808252606082018352600092602083019080368337019050509050308160008151811061160a5761160a611a86565b6001600160a01b03928316602091820292909201810191909152600854604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015611663573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061168791906119da565b8160018151811061169a5761169a611a86565b6001600160a01b0392831660209182029290920101526008546116c091309116846109b7565b60085460405163791ac94760e01b81526001600160a01b039091169063791ac947906116f9908590600090869030904290600401611a9c565b600060405180830381600087803b15801561171357600080fd5b505af1158015611727573d6000803e3d6000fd5b505050505050565b6008546117479030906001600160a01b0316846109b7565b600854601a5460405163f305d71960e01b81526001600160a01b039283169263f305d71992859261178792309289926000928392169042906004016119f7565b60606040518083038185885af11580156117a5573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906117ca9190611a32565b5050505050565b600060208083528351808285015260005b818110156117fe578581018301518582016040015282016117e2565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b03811681146109b457600080fd5b6000806040838503121561184757600080fd5b82356118528161181f565b946020939093013593505050565b60008060006060848603121561187557600080fd5b83356118808161181f565b925060208401356118908161181f565b929592945050506040919091013590565b6000602082840312156118b357600080fd5b81356105558161181f565b600080604083850312156118d157600080fd5b82356118dc8161181f565b9150602083013580151581146118f157600080fd5b809150509250929050565b6000806040838503121561190f57600080fd5b823561191a8161181f565b915060208301356118f18161181f565b60008060006060848603121561193f57600080fd5b505081359360208301359350604090920135919050565b634e487b7160e01b600052601160045260246000fd5b808202811582820484141761045757610457611956565b6000826119a057634e487b7160e01b600052601260045260246000fd5b500490565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b6000602082840312156119ec57600080fd5b81516105558161181f565b6001600160a01b039687168152602081019590955260408501939093526060840191909152909216608082015260a081019190915260c00190565b600080600060608486031215611a4757600080fd5b8351925060208401519150604084015190509250925092565b8181038181111561045757610457611956565b8082018082111561045757610457611956565b634e487b7160e01b600052603260045260246000fd5b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015611aec5784516001600160a01b031683529383019391830191600101611ac7565b50506001600160a01b0396909616606085015250505060800152939250505056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212209fecf9d7ba07c9439505f2e8707ecb9f64d769183ad9e01dda76fb482970e37b64736f6c63430008110033

Deployed Bytecode

0x60806040526004361061012e5760003560e01c8063751039fc116100ab578063a8aa1b311161006f578063a8aa1b3114610378578063a9059cbb14610398578063c9567bf9146103b8578063dd62ed3e146103c0578063e94dd17c14610406578063f2fde38b1461042657600080fd5b8063751039fc146102d957806378109e54146102ee5780637d1db4a5146103035780638da5cb5b1461031857806395d89b411461034a57600080fd5b8063313ce567116100f2578063313ce567146102225780633f4218e01461023e57806348ff2b8b1461026e57806370a082311461028e578063715018a6146102c457600080fd5b806306fdde0314610156578063095ea7b31461019a57806318160ddd146101ca5780631f976b7e146101ed57806323b872dd1461020257600080fd5b36610151573360009081526007602052604090205460ff1661014f57600080fd5b005b600080fd5b34801561016257600080fd5b506040805180820190915260098152685368696261426f6e6b60b81b60208201525b60405161019191906117d1565b60405180910390f35b3480156101a657600080fd5b506101ba6101b5366004611834565b610446565b6040519015158152602001610191565b3480156101d657600080fd5b506101df61045d565b604051908152602001610191565b3480156101f957600080fd5b506101df6104ce565b34801561020e57600080fd5b506101ba61021d366004611860565b6104f2565b34801561022e57600080fd5b5060405160098152602001610191565b34801561024a57600080fd5b506101ba6102593660046118a1565b60076020526000908152604090205460ff1681565b34801561027a57600080fd5b5061014f6102893660046118be565b61055c565b34801561029a57600080fd5b506101df6102a93660046118a1565b6001600160a01b031660009081526005602052604090205490565b3480156102d057600080fd5b5061014f6105ba565b3480156102e557600080fd5b5061014f6105f0565b3480156102fa57600080fd5b506101df61062c565b34801561030f57600080fd5b506101df61063c565b34801561032457600080fd5b506000546001600160a01b03165b6040516001600160a01b039091168152602001610191565b34801561035657600080fd5b50604080518082019091526005815264534849424f60d81b6020820152610184565b34801561038457600080fd5b50600954610332906001600160a01b031681565b3480156103a457600080fd5b506101ba6103b3366004611834565b61064c565b61014f610659565b3480156103cc57600080fd5b506101df6103db3660046118fc565b6001600160a01b03918216600090815260066020908152604080832093909416825291909152205490565b34801561041257600080fd5b5061014f61042136600461192a565b6108b0565b34801561043257600080fd5b5061014f6104413660046118a1565b61091c565b60006104533384846109b7565b5060015b92915050565b60056020527f05b8ccbb9d4d8fb16ea74ce3c29a41f1b461fbdaff4714a0d9a8eb05499746bc5461dead60009081527f7d509c07f0d4edcc2dd1b53aae68677132eb562dcba78e36381b63ccaf66e6ba5460015491926104c99290916104c39190610adb565b90610adb565b905090565b60006011546003546104de61045d565b6104e8919061196c565b6104c99190611983565b60006104ff848484610ae7565b610551843361054c85604051806060016040528060288152602001611b0e602891396001600160a01b038a1660009081526006602090815260408083203384529091529020549190610c0d565b6109b7565b5060015b9392505050565b6000546001600160a01b0316331461058f5760405162461bcd60e51b8152600401610586906119a5565b60405180910390fd5b6001600160a01b03919091166000908152600760205260409020805460ff1916911515919091179055565b6000546001600160a01b031633146105e45760405162461bcd60e51b8152600401610586906119a5565b6105ee6000610c39565b565b6000546001600160a01b0316331461061a5760405162461bcd60e51b8152600401610586906119a5565b61271060028190556003819055600455565b60006011546004546104de61045d565b60006011546002546104de61045d565b6000610453338484610ae7565b6009805460ff60a01b1916600160a01b1790556008546040805163c45a015560e01b815290516001600160a01b039092169163c45a0155916004808201926020929091908290030181865afa1580156106b6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106da91906119da565b6001600160a01b031663c9c6539630600860009054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561073c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061076091906119da565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af11580156107ad573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107d191906119da565b600980546001600160a01b0319166001600160a01b039283161790556008546107ff913091166000196109b7565b6008546001600160a01b031663f305d7193430610831816001600160a01b031660009081526005602052604090205490565b6000806108466000546001600160a01b031690565b426040518863ffffffff1660e01b8152600401610868969594939291906119f7565b60606040518083038185885af1158015610886573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906108ab9190611a32565b505050565b6000546001600160a01b031633146108da5760405162461bcd60e51b8152600401610586906119a5565b60158390556001546108fb90620186a0906108f59085610c89565b90610c95565b60165560015461091490620186a0906108f59084610c89565b601755505050565b6000546001600160a01b031633146109465760405162461bcd60e51b8152600401610586906119a5565b6001600160a01b0381166109ab5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610586565b6109b481610c39565b50565b6001600160a01b038316610a195760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610586565b6001600160a01b038216610a7a5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610586565b6001600160a01b0383811660008181526006602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b60006105558284611a60565b610af2838383610ca1565b610afc8383610e4b565b610b07838383610ee0565b610b118383610fd1565b610b1c8383836110ad565b610b278383836111e4565b6001600160a01b038316600090815260056020526040902054610b4a9082610adb565b6001600160a01b038416600090815260056020526040812091909155610b708484611209565b610b7a5781610b85565b610b8584848461124f565b6001600160a01b038416600090815260056020526040902054909150610bab9082611343565b6001600160a01b0380851660008181526005602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90610bff9085815260200190565b60405180910390a350505050565b60008184841115610c315760405162461bcd60e51b815260040161058691906117d1565b505050900390565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000610555828461196c565b60006105558284611983565b6001600160a01b038316610d055760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610586565b6001600160a01b038216610d675760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610586565b60008111610dc95760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610586565b6001600160a01b0383166000908152600560205260409020548111156108ab5760405162461bcd60e51b815260206004820152603160248201527f596f752061726520747279696e6720746f207472616e73666572206d6f7265206044820152707468616e20796f75722062616c616e636560781b6064820152608401610586565b6001600160a01b03821660009081526007602052604090205460ff16158015610e8d57506001600160a01b03811660009081526007602052604090205460ff16155b15610edc57600954600160a01b900460ff16610edc5760405162461bcd60e51b815260206004820152600e60248201526d1d1c98591a5b99d05b1b1bddd95960921b6044820152606401610586565b5050565b6001600160a01b03831660009081526007602052604090205460ff16158015610f2257506001600160a01b03821660009081526007602052604090205460ff16155b8015610f3c57506009546001600160a01b03838116911614155b8015610f5357506001600160a01b03821661dead14155b156108ab57610f6061062c565b6001600160a01b038316600090815260056020526040902054610f839083611343565b11156108ab5760405162461bcd60e51b815260206004820152601e60248201527f45786365656473206d6178696d756d2077616c6c657420616d6f756e742e00006044820152606401610586565b6009546001600160a01b03838116911614801561100657506001600160a01b03811660009081526007602052604090205460ff165b1561103957601a546001600160a01b03908116600090815260066020908152604080832093851683529290522060001990555b6009546001600160a01b03828116911614801561106f57506001600160a01b03821660009081526007602052604090205460ff16155b15610edc576001601360008282546110879190611a73565b9091555050601a80546001600160a01b0383166001600160a01b03199091161790555050565b6009546001600160a01b03848116911614611153576110ca6104ce565b811115806110f057506001600160a01b03831660009081526007602052604090205460ff165b8061111357506001600160a01b03821660009081526007602052604090205460ff165b6111535760405162461bcd60e51b8152602060048201526011602482015270151608131a5b5a5d08115e18d959591959607a1b6044820152606401610586565b61115b61063c565b8111158061118157506001600160a01b03831660009081526007602052604090205460ff165b806111a457506001600160a01b03821660009081526007602052604090205460ff165b6108ab5760405162461bcd60e51b8152602060048201526011602482015270151608131a5b5a5d08115e18d959591959607a1b6044820152606401610586565b6111ef83838361134f565b156108ab576111ff601654611402565b6000601355505050565b6001600160a01b03821660009081526007602052604081205460ff161580156105555750506001600160a01b031660009081526007602052604090205460ff1615919050565b60008061125c858561157f565b111561133c576000611285611271868661157f565b60115461127f908690610c95565b90610c89565b306000908152600560205260409020549091506112a29082611343565b30600081815260056020526040908190209290925590516001600160a01b038716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906112f39085815260200190565b60405180910390a3600d541561132a5761132a3061dead611325600d5461127f60115489610c9590919063ffffffff16565b610ae7565b6113348382610adb565b915050610555565b5092915050565b60006105558284611a73565b6017546016543060009081526005602052604081205460145491938510159211159060ff16158015611383575060125460ff165b80156113985750600954600160a01b900460ff165b80156113a15750815b80156113c657506001600160a01b03861660009081526007602052604090205460ff16155b80156113df57506009546001600160a01b038681169116145b80156113ef575060155460135410155b80156113f85750805b9695505050505050565b6014805460ff19166001908117909155600c54600b54600a5460009361143c9360029361127f939192611436928391611343565b90611343565b90506000611459826108f5600a5486610c8990919063ffffffff16565b905060006114678483610adb565b905047611473826115d5565b600061147f4783610adb565b905060006114a261149b600a5488610adb90919063ffffffff16565b8390610c95565b905060006114bb600a5483610c8990919063ffffffff16565b905080156114cd576114cd868261172f565b600b546000906114e29061127f856002610c89565b90508015611526576019546040516001600160a01b039091169082156108fc029083906000818181858888f19350505050158015611524573d6000803e3d6000fd5b505b478015611569576018546040516001600160a01b039091169082156108fc029083906000818181858888f19350505050158015611567573d6000803e3d6000fd5b505b50506014805460ff191690555050505050505050565b6009546000906001600160a01b03908116908316036115ac57600f546115a59047610adb565b9050610457565b6009546001600160a01b03908116908416036115cb5750600e54610457565b5060105492915050565b604080516002808252606082018352600092602083019080368337019050509050308160008151811061160a5761160a611a86565b6001600160a01b03928316602091820292909201810191909152600854604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015611663573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061168791906119da565b8160018151811061169a5761169a611a86565b6001600160a01b0392831660209182029290920101526008546116c091309116846109b7565b60085460405163791ac94760e01b81526001600160a01b039091169063791ac947906116f9908590600090869030904290600401611a9c565b600060405180830381600087803b15801561171357600080fd5b505af1158015611727573d6000803e3d6000fd5b505050505050565b6008546117479030906001600160a01b0316846109b7565b600854601a5460405163f305d71960e01b81526001600160a01b039283169263f305d71992859261178792309289926000928392169042906004016119f7565b60606040518083038185885af11580156117a5573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906117ca9190611a32565b5050505050565b600060208083528351808285015260005b818110156117fe578581018301518582016040015282016117e2565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b03811681146109b457600080fd5b6000806040838503121561184757600080fd5b82356118528161181f565b946020939093013593505050565b60008060006060848603121561187557600080fd5b83356118808161181f565b925060208401356118908161181f565b929592945050506040919091013590565b6000602082840312156118b357600080fd5b81356105558161181f565b600080604083850312156118d157600080fd5b82356118dc8161181f565b9150602083013580151581146118f157600080fd5b809150509250929050565b6000806040838503121561190f57600080fd5b823561191a8161181f565b915060208301356118f18161181f565b60008060006060848603121561193f57600080fd5b505081359360208301359350604090920135919050565b634e487b7160e01b600052601160045260246000fd5b808202811582820484141761045757610457611956565b6000826119a057634e487b7160e01b600052601260045260246000fd5b500490565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b6000602082840312156119ec57600080fd5b81516105558161181f565b6001600160a01b039687168152602081019590955260408501939093526060840191909152909216608082015260a081019190915260c00190565b600080600060608486031215611a4757600080fd5b8351925060208401519150604084015190509250925092565b8181038181111561045757610457611956565b8082018082111561045757610457611956565b634e487b7160e01b600052603260045260246000fd5b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015611aec5784516001600160a01b031683529383019391830191600101611ac7565b50506001600160a01b0396909616606085015250505060800152939250505056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212209fecf9d7ba07c9439505f2e8707ecb9f64d769183ad9e01dda76fb482970e37b64736f6c63430008110033

Deployed Bytecode Sourcemap

6345:10903:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10261:10;10249:23;;;;:11;:23;;;;;;;;10241:32;;;;;;6345:10903;;;;;8710:67;;;;;;;;;;-1:-1:-1;8770:5:0;;;;;;;;;;;;-1:-1:-1;;;8770:5:0;;;;8710:67;;;;;;;:::i;:::-;;;;;;;;9568:133;;;;;;;;;;-1:-1:-1;9568:133:0;;;;;:::i;:::-;;:::i;:::-;;;1188:14:1;;1181:22;1163:41;;1151:2;1136:18;9568:133:0;1023:187:1;9707:132:0;;;;;;;;;;;;;:::i;:::-;;;1361:25:1;;;1349:2;1334:18;9707:132:0;1215:177:1;10086:120:0;;;;;;;;;;;;;:::i;16591:309::-;;;;;;;;;;-1:-1:-1;16591:309:0;;;;;:::i;:::-;;:::i;8860:67::-;;;;;;;;;;-1:-1:-1;8860:67:0;;6552:1;2000:36:1;;1988:2;1973:18;8860:67:0;1858:184:1;6894:44:0;;;;;;;;;;-1:-1:-1;6894:44:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;9454:108;;;;;;;;;;-1:-1:-1;9454:108:0;;;;;:::i;:::-;;:::i;8933:103::-;;;;;;;;;;-1:-1:-1;8933:103:0;;;;;:::i;:::-;-1:-1:-1;;;;;9016:18:0;8999:7;9016:18;;;:9;:18;;;;;;;8933:103;4175;;;;;;;;;;;;;:::i;11425:166::-;;;;;;;;;;;;;:::i;9845:115::-;;;;;;;;;;;;;:::i;9966:114::-;;;;;;;;;;;;;:::i;3524:87::-;;;;;;;;;;-1:-1:-1;3570:7:0;3597:6;-1:-1:-1;;;;;3597:6:0;3524:87;;;-1:-1:-1;;;;;2884:32:1;;;2866:51;;2854:2;2839:18;3524:87:0;2720:203:1;8783:71:0;;;;;;;;;;-1:-1:-1;8845:7:0;;;;;;;;;;;;-1:-1:-1;;;8845:7:0;;;;8783:71;;6966:19;;;;;;;;;;-1:-1:-1;6966:19:0;;;;-1:-1:-1;;;;;6966:19:0;;;9042:139;;;;;;;;;;-1:-1:-1;9042:139:0;;;;;:::i;:::-;;:::i;8354:348::-;;;:::i;9187:127::-;;;;;;;;;;-1:-1:-1;9187:127:0;;;;;:::i;:::-;-1:-1:-1;;;;;9285:18:0;;;9268:7;9285:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;9187:127;15087:315;;;;;;;;;;-1:-1:-1;15087:315:0;;;;;:::i;:::-;;:::i;4433:201::-;;;;;;;;;;-1:-1:-1;4433:201:0;;;;;:::i;:::-;;:::i;9568:133::-;9643:4;9650:37;9659:10;9671:7;9680:6;9650:8;:37::i;:::-;-1:-1:-1;9695:4:0;9568:133;;;;;:::o;9707:132::-;9016:9;:18;;;;7706:42;9760:7;9016:18;;;;;9777:12;;9760:7;;9777:60;;9016:18;;9777:33;;:12;:16;:33::i;:::-;:37;;:60::i;:::-;9770:67;;9707:132;:::o;10086:120::-;10137:7;10193:11;;10170:20;;10154:13;:11;:13::i;:::-;:36;;;;:::i;:::-;:50;;;;:::i;16591:309::-;16689:4;16706:36;16716:6;16724:9;16735:6;16706:9;:36::i;:::-;16753:117;16762:6;16770:10;16782:87;16818:6;16782:87;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;16782:19:0;;;;;;:11;:19;;;;;;;;16802:10;16782:31;;;;;;;;;:87;:35;:87::i;:::-;16753:8;:117::i;:::-;-1:-1:-1;16888:4:0;16591:309;;;;;;:::o;9454:108::-;3570:7;3597:6;-1:-1:-1;;;;;3597:6:0;2978:10;3744:23;3736:68;;;;-1:-1:-1;;;3736:68:0;;;;;;;:::i;:::-;;;;;;;;;-1:-1:-1;;;;;9528:21:0;;;::::1;;::::0;;;:11:::1;:21;::::0;;;;:32;;-1:-1:-1;;9528:32:0::1;::::0;::::1;;::::0;;;::::1;::::0;;9454:108::o;4175:103::-;3570:7;3597:6;-1:-1:-1;;;;;3597:6:0;2978:10;3744:23;3736:68;;;;-1:-1:-1;;;3736:68:0;;;;;;;:::i;:::-;4240:30:::1;4267:1;4240:18;:30::i;:::-;4175:103::o:0;11425:166::-;3570:7;3597:6;-1:-1:-1;;;;;3597:6:0;2978:10;3744:23;3736:68;;;;-1:-1:-1;;;3736:68:0;;;;;;;:::i;:::-;11502:5:::1;11479:20;:28:::0;;;11518:20:::1;:28:::0;;;11557:18:::1;:26:::0;11425:166::o;9845:115::-;9893:7;9947:11;;9926:18;;9910:13;:11;:13::i;9966:114::-;10011:7;10067:11;;10044:20;;10028:13;:11;:13::i;9042:139::-;9120:4;9127:40;9137:10;9149:9;9160:6;9127:9;:40::i;8354:348::-;8405:14;:21;;-1:-1:-1;;;;8405:21:0;-1:-1:-1;;;8405:21:0;;;8453:6;;:16;;;-1:-1:-1;;;8453:16:0;;;;-1:-1:-1;;;;;8453:6:0;;;;:14;;:16;;;;;;;;;;;;;;;:6;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;8444:37:0;;8490:4;8497:6;;;;;;;;;-1:-1:-1;;;;;8497:6:0;-1:-1:-1;;;;;8497:11:0;;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;8444:67;;-1:-1:-1;;;;;;8444:67:0;;;;;;;-1:-1:-1;;;;;5016:15:1;;;8444:67:0;;;4998:34:1;5068:15;;5048:18;;;5041:43;4933:18;;8444:67:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;8437:4;:74;;-1:-1:-1;;;;;;8437:74:0;-1:-1:-1;;;;;8437:74:0;;;;;;8554:6;;8522:53;;8539:4;;8554:6;-1:-1:-1;;8522:8:0;:53::i;:::-;8586:6;;-1:-1:-1;;;;;8586:6:0;:22;8616:9;8635:4;8641:24;8635:4;-1:-1:-1;;;;;9016:18:0;8999:7;9016:18;;;:9;:18;;;;;;;8933:103;8641:24;8666:1;8668;8670:7;3570;3597:6;-1:-1:-1;;;;;3597:6:0;;3524:87;8670:7;8678:15;8586:108;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;8354:348::o;15087:315::-;3570:7;3597:6;-1:-1:-1;;;;;3597:6:0;2978:10;3744:23;3736:68;;;;-1:-1:-1;;;3736:68:0;;;;;;;:::i;:::-;15216:10:::1;:24:::0;;;15258:12:::1;::::0;:53:::1;::::0;15303:6:::1;::::0;15258:32:::1;::::0;15275:14;15258:16:::1;:32::i;:::-;:36:::0;::::1;:53::i;:::-;15242:13;:69:::0;15340:12:::1;::::0;:54:::1;::::0;15386:6:::1;::::0;15340:33:::1;::::0;15357:15;15340:16:::1;:33::i;:54::-;15323:14;:71:::0;-1:-1:-1;;;15087:315:0:o;4433:201::-;3570:7;3597:6;-1:-1:-1;;;;;3597:6:0;2978:10;3744:23;3736:68;;;;-1:-1:-1;;;3736:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;4522:22:0;::::1;4514:73;;;::::0;-1:-1:-1;;;4514:73:0;;6220:2:1;4514:73:0::1;::::0;::::1;6202:21:1::0;6259:2;6239:18;;;6232:30;6298:34;6278:18;;;6271:62;-1:-1:-1;;;6349:18:1;;;6342:36;6395:19;;4514:73:0::1;6018:402:1::0;4514:73:0::1;4598:28;4617:8;4598:18;:28::i;:::-;4433:201:::0;:::o;16908:335::-;-1:-1:-1;;;;;17001:19:0;;16993:68;;;;-1:-1:-1;;;16993:68:0;;6627:2:1;16993:68:0;;;6609:21:1;6666:2;6646:18;;;6639:30;6705:34;6685:18;;;6678:62;-1:-1:-1;;;6756:18:1;;;6749:34;6800:19;;16993:68:0;6425:400:1;16993:68:0;-1:-1:-1;;;;;17080:21:0;;17072:68;;;;-1:-1:-1;;;17072:68:0;;7032:2:1;17072:68:0;;;7014:21:1;7071:2;7051:18;;;7044:30;7110:34;7090:18;;;7083:62;-1:-1:-1;;;7161:18:1;;;7154:32;7203:19;;17072:68:0;6830:398:1;17072:68:0;-1:-1:-1;;;;;17151:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;17203:32;;1361:25:1;;;17203:32:0;;1334:18:1;17203:32:0;;;;;;;16908:335;;;:::o;293:82::-;351:7;368:5;372:1;368;:5;:::i;10731:686::-;10820:37;10831:6;10839:9;10850:6;10820:10;:37::i;:::-;10868:38;10888:6;10896:9;10868:19;:38::i;:::-;10917:41;10932:6;10940:9;10951:6;10917:14;:41::i;:::-;10970:35;10987:6;10995:9;10970:16;:35::i;:::-;11016:39;11029:6;11037:9;11048:6;11016:12;:39::i;:::-;11067:35;11076:6;11084:9;11095:6;11067:8;:35::i;:::-;-1:-1:-1;;;;;11133:17:0;;;;;;:9;:17;;;;;;:29;;11155:6;11133:21;:29::i;:::-;-1:-1:-1;;;;;11113:17:0;;;;;;:9;:17;;;;;:49;;;;11198:32;11123:6;11220:9;11198:13;:32::i;:::-;:78;;11270:6;11198:78;;;11233:34;11241:6;11249:9;11260:6;11233:7;:34::i;:::-;-1:-1:-1;;;;;11310:20:0;;;;;;:9;:20;;;;;;11173:103;;-1:-1:-1;11310:40:0;;11173:103;11310:24;:40::i;:::-;-1:-1:-1;;;;;11287:20:0;;;;;;;:9;:20;;;;;;;:63;;;;11366:43;;;;;;;;;;11394:14;1361:25:1;;1349:2;1334:18;;1215:177;11366:43:0;;;;;;;;10809:608;10731:686;;;:::o;1506:162::-;1592:7;1638:12;1630:6;;;;1622:29;;;;-1:-1:-1;;;1622:29:0;;;;;;;;:::i;:::-;-1:-1:-1;;;1660:5:0;;;1506:162::o;4794:191::-;4868:16;4887:6;;-1:-1:-1;;;;;4904:17:0;;;-1:-1:-1;;;;;;4904:17:0;;;;;;4937:40;;4887:6;;;;;;;4937:40;;4868:16;4937:40;4857:128;4794:191;:::o;381:82::-;439:7;456:5;460:1;456;:5;:::i;469:82::-;527:7;544:5;548:1;544;:5;:::i;10284:439::-;-1:-1:-1;;;;;10388:20:0;;10380:70;;;;-1:-1:-1;;;10380:70:0;;7568:2:1;10380:70:0;;;7550:21:1;7607:2;7587:18;;;7580:30;7646:34;7626:18;;;7619:62;-1:-1:-1;;;7697:18:1;;;7690:35;7742:19;;10380:70:0;7366:401:1;10380:70:0;-1:-1:-1;;;;;10469:23:0;;10461:71;;;;-1:-1:-1;;;10461:71:0;;7974:2:1;10461:71:0;;;7956:21:1;8013:2;7993:18;;;7986:30;8052:34;8032:18;;;8025:62;-1:-1:-1;;;8103:18:1;;;8096:33;8146:19;;10461:71:0;7772:399:1;10461:71:0;10568:1;10551:6;:19;10543:73;;;;-1:-1:-1;;;10543:73:0;;8378:2:1;10543:73:0;;;8360:21:1;8417:2;8397:18;;;8390:30;8456:34;8436:18;;;8429:62;-1:-1:-1;;;8507:18:1;;;8500:39;8556:19;;10543:73:0;8176:405:1;10543:73:0;-1:-1:-1;;;;;9016:18:0;;8999:7;9016:18;;;:9;:18;;;;;;10635:6;:27;;10627:88;;;;-1:-1:-1;;;10627:88:0;;8788:2:1;10627:88:0;;;8770:21:1;8827:2;8807:18;;;8800:30;8866:34;8846:18;;;8839:62;-1:-1:-1;;;8917:18:1;;;8910:47;8974:19;;10627:88:0;8586:413:1;11599:191:0;-1:-1:-1;;;;;11692:19:0;;;;;;:11;:19;;;;;;;;11691:20;:47;;;;-1:-1:-1;;;;;;11716:22:0;;;;;;:11;:22;;;;;;;;11715:23;11691:47;11688:95;;;11748:14;;-1:-1:-1;;;11748:14:0;;;;11740:41;;;;-1:-1:-1;;;11740:41:0;;9206:2:1;11740:41:0;;;9188:21:1;9245:2;9225:18;;;9218:30;-1:-1:-1;;;9264:18:1;;;9257:44;9318:18;;11740:41:0;9004:338:1;11740:41:0;11599:191;;:::o;11802:333::-;-1:-1:-1;;;;;11906:19:0;;;;;;:11;:19;;;;;;;;11905:20;:47;;;;-1:-1:-1;;;;;;11930:22:0;;;;;;:11;:22;;;;;;;;11929:23;11905:47;:77;;;;-1:-1:-1;11977:4:0;;-1:-1:-1;;;;;11956:26:0;;;11977:4;;11956:26;;11905:77;:107;;;;-1:-1:-1;;;;;;11986:26:0;;7706:42;11986:26;;11905:107;11902:226;;;12074:17;:15;:17::i;:::-;-1:-1:-1;;;;;12037:20:0;;;;;;:9;:20;;;;;;:32;;12062:6;12037:24;:32::i;:::-;12036:55;;12028:98;;;;-1:-1:-1;;;12028:98:0;;9549:2:1;12028:98:0;;;9531:21:1;9588:2;9568:18;;;9561:30;9627:32;9607:18;;;9600:60;9677:18;;12028:98:0;9347:354:1;12143:305:0;12237:4;;-1:-1:-1;;;;;12227:14:0;;;12237:4;;12227:14;:40;;;;-1:-1:-1;;;;;;12245:22:0;;;;;;:11;:22;;;;;;;;12227:40;12224:104;;;12283:18;;-1:-1:-1;;;;;12283:18:0;;;12323:1;12271:31;;;:11;:31;;;;;;;;:42;;;;;;;;;-1:-1:-1;;12271:54:0;;12224:104;12354:4;;-1:-1:-1;;;;;12341:17:0;;;12354:4;;12341:17;:41;;;;-1:-1:-1;;;;;;12363:19:0;;;;;;:11;:19;;;;;;;;12362:20;12341:41;12338:103;;;12405:1;12384:9;;:23;;;;;;;:::i;:::-;;;;-1:-1:-1;;12409:18:0;:30;;-1:-1:-1;;;;;12409:30:0;;-1:-1:-1;;;;;;12409:30:0;;;;;;12143:305;;:::o;12456:349::-;12567:4;;-1:-1:-1;;;;;12557:14:0;;;12567:4;;12557:14;12554:130;;12591:20;:18;:20::i;:::-;12581:6;:30;;:53;;;-1:-1:-1;;;;;;12615:19:0;;;;;;:11;:19;;;;;;;;12581:53;:79;;;-1:-1:-1;;;;;;12638:22:0;;;;;;:11;:22;;;;;;;;12581:79;12573:109;;;;-1:-1:-1;;;12573:109:0;;10038:2:1;12573:109:0;;;10020:21:1;10077:2;10057:18;;;10050:30;-1:-1:-1;;;10096:18:1;;;10089:47;10153:18;;12573:109:0;9836:341:1;12573:109:0;12712:14;:12;:14::i;:::-;12702:6;:24;;:47;;;-1:-1:-1;;;;;;12730:19:0;;;;;;:11;:19;;;;;;;;12702:47;:73;;;-1:-1:-1;;;;;;12753:22:0;;;;;;:11;:22;;;;;;;;12702:73;12694:103;;;;-1:-1:-1;;;12694:103:0;;10038:2:1;12694:103:0;;;10020:21:1;10077:2;10057:18;;;10050:30;-1:-1:-1;;;10096:18:1;;;10089:47;10153:18;;12694:103:0;9836:341:1;15410:197:0;15502:41;15517:6;15525:9;15536:6;15502:14;:41::i;:::-;15499:101;;;15545:29;15560:13;;15545:14;:29::i;:::-;15596:1;15576:9;:22;15410:197;;;:::o;15615:160::-;-1:-1:-1;;;;;15721:19:0;;15696:4;15721:19;;;:11;:19;;;;;;;;15720:20;:47;;;;-1:-1:-1;;;;;;;15745:22:0;;;;;:11;:22;;;;;;;;15744:23;;15615:160;-1:-1:-1;15615:160:0:o;16037:546::-;16123:7;16179:1;16146:30;16158:6;16166:9;16146:11;:30::i;:::-;:34;16143:418;;;16192:17;16212:59;16240:30;16252:6;16260:9;16240:11;:30::i;:::-;16223:11;;16212:23;;:6;;:10;:23::i;:::-;:27;;:59::i;:::-;16327:4;16309:24;;;;:9;:24;;;;;;16192:79;;-1:-1:-1;16309:39:0;;16192:79;16309:28;:39::i;:::-;16300:4;16282:24;;;;:9;:24;;;;;;;:66;;;;16364:42;;-1:-1:-1;;;;;16364:42:0;;;;;;;16396:9;1361:25:1;;1349:2;1334:18;;1215:177;16364:42:0;;;;;;;;16420:7;;:20;16417:104;;16442:77;16460:4;7706:42;16482:36;16510:7;;16482:23;16493:11;;16482:6;:10;;:23;;;;:::i;:36::-;16442:9;:77::i;:::-;16538:21;:6;16549:9;16538:10;:21::i;:::-;16531:28;;;;;16143:418;-1:-1:-1;16569:6:0;16037:546;-1:-1:-1;;16037:546:0:o;205:82::-;263:7;280:5;284:1;280;:5;:::i;14680:399::-;14821:14;;14896:13;;14886:4;14778;9016:18;;;:9;:18;;;;;;14928:8;;14778:4;;14811:24;;;;-1:-1:-1;14868:41:0;;14928:8;;14927:9;:24;;;;-1:-1:-1;14940:11:0;;;;14927:24;:42;;;;-1:-1:-1;14955:14:0;;-1:-1:-1;;;14955:14:0;;;;14927:42;:54;;;;;14973:8;14927:54;:78;;;;-1:-1:-1;;;;;;14986:19:0;;;;;;:11;:19;;;;;;;;14985:20;14927:78;:99;;;;-1:-1:-1;15022:4:0;;-1:-1:-1;;;;;15009:17:0;;;15022:4;;15009:17;14927:99;:126;;;;;15043:10;;15030:9;;:23;;14927:126;:144;;;;;15057:14;14927:144;14920:151;14680:399;-1:-1:-1;;;;;;14680:399:0:o;12813:1066::-;7627:8;:15;;-1:-1:-1;;7627:15:0;7638:4;7627:15;;;;;;12950:14:::1;::::0;12932:12:::1;::::0;12908::::1;::::0;7627:8;;12907:66:::1;::::0;12971:1:::1;::::0;12908:57:::1;::::0;12950:14;;12908:37:::1;::::0;;;:16:::1;:19::i;:::-;:23:::0;::::1;:37::i;12907:66::-;12884:89;;12984:32;13019:42;13048:12;13019:24;13030:12;;13019:6;:10;;:24;;;;:::i;:42::-;12984:77:::0;-1:-1:-1;13072:14:0::1;13089:36;:6:::0;12984:77;13089:10:::1;:36::i;:::-;13072:53:::0;-1:-1:-1;13161:21:0::1;13193:24;13072:53:::0;13193:16:::1;:24::i;:::-;13228:20;13251:41;:21;13277:14:::0;13251:25:::1;:41::i;:::-;13228:64;;13303:19;13324:48;13341:30;13358:12;;13341;:16;;:30;;;;:::i;:::-;13324:12:::0;;:16:::1;:48::i;:::-;13303:69;;13383:29;13415;13431:12;;13415:11;:15;;:29;;;;:::i;:::-;13383:61:::0;-1:-1:-1;13458:34:0;;13455:103:::1;;13494:61;13507:24;13533:21;13494:12;:61::i;:::-;13614:12;::::0;13568:20:::1;::::0;13591:36:::1;::::0;:18:::1;:11:::0;13607:1:::1;13591:15;:18::i;:36::-;13568:59:::0;-1:-1:-1;13641:16:0;;13638:73:::1;;13667:18;::::0;13659:50:::1;::::0;-1:-1:-1;;;;;13667:18:0;;::::1;::::0;13659:50;::::1;;;::::0;13696:12;;13667:18:::1;13659:50:::0;13667:18;13659:50;13696:12;13667:18;13659:50;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;13638:73;13748:21;13783:29:::0;;13780:92:::1;;13822:20;::::0;13814:56:::1;::::0;-1:-1:-1;;;;;13822:20:0;;::::1;::::0;13814:56;::::1;;;::::0;13853:16;;13822:20:::1;13814:56:::0;13822:20;13814:56;13853:16;13822:20;13814:56;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;13780:92;-1:-1:-1::0;;7647:8:0;:16;;-1:-1:-1;;7647:16:0;;;-1:-1:-1;;;;;;;;12813:1066:0:o;15783:246::-;15898:4;;15862:7;;-1:-1:-1;;;;;15898:4:0;;;15885:17;;;;15882:65;;15911:7;;:34;;15923:21;15911:11;:34::i;:::-;15904:41;;;;15882:65;15970:4;;-1:-1:-1;;;;;15970:4:0;;;15960:14;;;;15957:36;;-1:-1:-1;15983:8:0;;15976:15;;15957:36;-1:-1:-1;16010:11:0;;15783:246;;;;:::o;14238:434::-;14328:16;;;14342:1;14328:16;;;;;;;;14304:21;;14328:16;;;;;;;;;;-1:-1:-1;14328:16:0;14304:40;;14373:4;14355;14360:1;14355:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;14355:23:0;;;:7;;;;;;;;;;:23;;;;14399:6;;:13;;;-1:-1:-1;;;14399:13:0;;;;:6;;;;;:11;;:13;;;;;14355:7;;14399:13;;;;;:6;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14389:4;14394:1;14389:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;14389:23:0;;;:7;;;;;;;;;:23;14455:6;;14423:53;;14440:4;;14455:6;14464:11;14423:8;:53::i;:::-;14487:6;;:177;;-1:-1:-1;;;14487:177:0;;-1:-1:-1;;;;;14487:6:0;;;;:57;;:177;;14559:11;;14487:6;;14601:4;;14628;;14648:15;;14487:177;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14293:379;14238:434;:::o;13887:343::-;14000:6;;13968:53;;13985:4;;-1:-1:-1;;;;;14000:6:0;14009:11;13968:8;:53::i;:::-;14032:6;;14173:18;;14032:190;;-1:-1:-1;;;14032:190:0;;-1:-1:-1;;;;;14032:6:0;;;;:22;;14062:9;;14032:190;;14095:4;;14115:11;;14032:6;;;;14173:18;;14206:15;;14032:190;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;13887:343;;:::o;14:548:1:-;126:4;155:2;184;173:9;166:21;216:6;210:13;259:6;254:2;243:9;239:18;232:34;284:1;294:140;308:6;305:1;302:13;294:140;;;403:14;;;399:23;;393:30;369:17;;;388:2;365:26;358:66;323:10;;294:140;;;298:3;483:1;478:2;469:6;458:9;454:22;450:31;443:42;553:2;546;542:7;537:2;529:6;525:15;521:29;510:9;506:45;502:54;494:62;;;;14:548;;;;:::o;567:131::-;-1:-1:-1;;;;;642:31:1;;632:42;;622:70;;688:1;685;678:12;703:315;771:6;779;832:2;820:9;811:7;807:23;803:32;800:52;;;848:1;845;838:12;800:52;887:9;874:23;906:31;931:5;906:31;:::i;:::-;956:5;1008:2;993:18;;;;980:32;;-1:-1:-1;;;703:315:1:o;1397:456::-;1474:6;1482;1490;1543:2;1531:9;1522:7;1518:23;1514:32;1511:52;;;1559:1;1556;1549:12;1511:52;1598:9;1585:23;1617:31;1642:5;1617:31;:::i;:::-;1667:5;-1:-1:-1;1724:2:1;1709:18;;1696:32;1737:33;1696:32;1737:33;:::i;:::-;1397:456;;1789:7;;-1:-1:-1;;;1843:2:1;1828:18;;;;1815:32;;1397:456::o;2047:247::-;2106:6;2159:2;2147:9;2138:7;2134:23;2130:32;2127:52;;;2175:1;2172;2165:12;2127:52;2214:9;2201:23;2233:31;2258:5;2233:31;:::i;2299:416::-;2364:6;2372;2425:2;2413:9;2404:7;2400:23;2396:32;2393:52;;;2441:1;2438;2431:12;2393:52;2480:9;2467:23;2499:31;2524:5;2499:31;:::i;:::-;2549:5;-1:-1:-1;2606:2:1;2591:18;;2578:32;2648:15;;2641:23;2629:36;;2619:64;;2679:1;2676;2669:12;2619:64;2702:7;2692:17;;;2299:416;;;;;:::o;2928:388::-;2996:6;3004;3057:2;3045:9;3036:7;3032:23;3028:32;3025:52;;;3073:1;3070;3063:12;3025:52;3112:9;3099:23;3131:31;3156:5;3131:31;:::i;:::-;3181:5;-1:-1:-1;3238:2:1;3223:18;;3210:32;3251:33;3210:32;3251:33;:::i;3321:316::-;3398:6;3406;3414;3467:2;3455:9;3446:7;3442:23;3438:32;3435:52;;;3483:1;3480;3473:12;3435:52;-1:-1:-1;;3506:23:1;;;3576:2;3561:18;;3548:32;;-1:-1:-1;3627:2:1;3612:18;;;3599:32;;3321:316;-1:-1:-1;3321:316:1:o;3642:127::-;3703:10;3698:3;3694:20;3691:1;3684:31;3734:4;3731:1;3724:15;3758:4;3755:1;3748:15;3774:168;3847:9;;;3878;;3895:15;;;3889:22;;3875:37;3865:71;;3916:18;;:::i;3947:217::-;3987:1;4013;4003:132;;4057:10;4052:3;4048:20;4045:1;4038:31;4092:4;4089:1;4082:15;4120:4;4117:1;4110:15;4003:132;-1:-1:-1;4149:9:1;;3947:217::o;4169:356::-;4371:2;4353:21;;;4390:18;;;4383:30;4449:34;4444:2;4429:18;;4422:62;4516:2;4501:18;;4169:356::o;4530:251::-;4600:6;4653:2;4641:9;4632:7;4628:23;4624:32;4621:52;;;4669:1;4666;4659:12;4621:52;4701:9;4695:16;4720:31;4745:5;4720:31;:::i;5095:607::-;-1:-1:-1;;;;;5454:15:1;;;5436:34;;5501:2;5486:18;;5479:34;;;;5544:2;5529:18;;5522:34;;;;5587:2;5572:18;;5565:34;;;;5636:15;;;5630:3;5615:19;;5608:44;5416:3;5668:19;;5661:35;;;;5385:3;5370:19;;5095:607::o;5707:306::-;5795:6;5803;5811;5864:2;5852:9;5843:7;5839:23;5835:32;5832:52;;;5880:1;5877;5870:12;5832:52;5909:9;5903:16;5893:26;;5959:2;5948:9;5944:18;5938:25;5928:35;;6003:2;5992:9;5988:18;5982:25;5972:35;;5707:306;;;;;:::o;7233:128::-;7300:9;;;7321:11;;;7318:37;;;7335:18;;:::i;9706:125::-;9771:9;;;9792:10;;;9789:36;;;9805:18;;:::i;10314:127::-;10375:10;10370:3;10366:20;10363:1;10356:31;10406:4;10403:1;10396:15;10430:4;10427:1;10420:15;10446:980;10708:4;10756:3;10745:9;10741:19;10787:6;10776:9;10769:25;10813:2;10851:6;10846:2;10835:9;10831:18;10824:34;10894:3;10889:2;10878:9;10874:18;10867:31;10918:6;10953;10947:13;10984:6;10976;10969:22;11022:3;11011:9;11007:19;11000:26;;11061:2;11053:6;11049:15;11035:29;;11082:1;11092:195;11106:6;11103:1;11100:13;11092:195;;;11171:13;;-1:-1:-1;;;;;11167:39:1;11155:52;;11262:15;;;;11227:12;;;;11203:1;11121:9;11092:195;;;-1:-1:-1;;;;;;;11343:32:1;;;;11338:2;11323:18;;11316:60;-1:-1:-1;;;11407:3:1;11392:19;11385:35;11304:3;10446:980;-1:-1:-1;;;10446:980:1:o

Swarm Source

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