ETH Price: $3,835.17 (-3.41%)

Token

TORA NEKO (TORA)
 

Overview

Max Total Supply

100,000,000 TORA

Holders

1,280 ( -0.078%)

Total Transfers

-

Market

Price

$0.00 @ 0.000000 ETH (+28.34%)

Onchain Market Cap

$109,541.00

Circulating Supply Market Cap

$109,541.00

Other Info

Token Contract (WITH 9 Decimals)

Loading...
Loading
Loading...
Loading
Loading...
Loading

OVERVIEW

Tora-Neko is the Japanese cat breed of the Tabby Cat. Kabosu's cat family breed are Tabby Cats just like $SHIBA is to $DOGE. Tora Neko has come to #ETH as the Shiba of cats.

Market

Volume (24H):$136,670.00
Market Capitalization:$109,541.00
Circulating Supply:100,000,000.00 TORA
Market Data Source: Coinmarketcap

# Exchange Pair Price  24H Volume % Volume

Contract Source Code Verified (Exact Match)

Contract Name:
TORA

Compiler Version
v0.8.26+commit.8a97fa7a

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, Unlicense license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2024-09-17
*/

/**

Website:  https://toraeth.com
TG:           https://t.me/toranekoeth
Twitter:    https://x.com/toranekoeth

*/
// SPDX-License-Identifier: Unlicensed

pragma solidity 0.8.26;

interface ERC20 {
    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 getOwner() external view returns (address);
    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 payable) {
        return payable(msg.sender);
    }
}

contract Ownable is Context {
    address public _owner;

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

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

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

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

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

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

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

interface IDEXRouter {
    function factory() external pure returns (address);
    function WETH() external pure returns (address);

    function addLiquidity(
        address tokenA,
        address tokenB,
        uint amountADesired,
        uint amountBDesired,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline
    ) external returns (uint amountA, uint amountB, uint liquidity);

    function addLiquidityETH(
        address token,
        uint amountTokenDesired,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external payable returns (uint amountToken, uint amountETH, uint liquidity);

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

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

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

interface InterfaceLP {
    function sync() external;
}

contract TORA is Ownable, ERC20 {

    address immutable WETH;
    address constant DEAD = 0x000000000000000000000000000000000000dEaD;

    string constant _name = "TORA NEKO";
    string constant _symbol = "TORA";
    uint8 constant _decimals = 9; 
  

    uint256 constant _totalSupply = 100000000 * 10**_decimals;

    uint256 public _maxTxAmount = _totalSupply / 50;
    uint256 public _maxWalletAmount = _totalSupply / 50;

    mapping (address => uint256) _balances;
    mapping (address => mapping (address => uint256)) _allowances;

    
    mapping (address => bool) isFeeExempt;
    mapping (address => bool) isTxLimitExempt;

    uint256 public  buyFee        = 20;
    uint256 public  sellFee       = 20;

    uint256 constant transferFee  = 0;
    
    uint256 private lastSwap;
    address private marketingFeeReceiver;

    IDEXRouter public router;
    InterfaceLP private pairContract;
    address immutable public pair;
    
    bool public TradingOpen = false;    

    bool public swapEnabled = true;
    uint256 public swapThreshold = _totalSupply / 100; 
    bool inSwap;
    modifier swapping() { inSwap = true; _; inSwap = false; }

    event maxWalletUpdated(uint256 indexed maxWalletAmount);
    event maxTxUpdated(uint256 indexed maxTxAmount);
    event maxLimitsRemoved(uint256 indexed maxWalletToken, uint256 indexed maxTxAmount);
    event exemptFees(address indexed holder, bool indexed exempt);
    event exemptTxLimit(address indexed holder, bool indexed exempt);
    event buyFeeUpdated(uint256 indexed buyFee);
    event sellFeeUpdated(uint256 indexed sellFee);
    event feesWalletUpdated(address indexed marketingFeeReceiver);
    event swapbackSettingsUpdated(bool indexed enabled, uint256 indexed amount);
    event tradingEnabled(bool indexed enabled, uint256 indexed startTime);
    
    constructor () {
        router = IDEXRouter(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        WETH = router.WETH();
        pair = IDEXFactory(router.factory()).createPair(WETH, address(this));
        pairContract = InterfaceLP(pair);
       
        
        _allowances[address(this)][address(router)] = type(uint256).max;

        marketingFeeReceiver = 0x8F98887C517B22F49a7876cEA866Adf7d075583f;

        isFeeExempt[msg.sender] = true; 
        isTxLimitExempt[msg.sender] = true;
        isTxLimitExempt[pair] = true;
        isTxLimitExempt[marketingFeeReceiver] = true;
        isTxLimitExempt[address(this)] = true;
        

        _balances[msg.sender] = _totalSupply;
        emit Transfer(address(0), msg.sender, _totalSupply);

    }

    receive() external payable { }

    function totalSupply() external pure override returns (uint256) { return _totalSupply; }
    function decimals() external pure override returns (uint8) { return _decimals; }
    function symbol() external pure override returns (string memory) { return _symbol; }
    function name() external pure override returns (string memory) { return _name; }
    function getOwner() external view override returns (address) {return owner();}
    function balanceOf(address account) public view override returns (uint256) { return _balances[account]; }
    function allowance(address holder, address spender) external view override returns (uint256) { return _allowances[holder][spender]; }

    function approve(address spender, uint256 amount) public override returns (bool) {
        require(spender != address(0), "Spender is the zero address");
        _allowances[msg.sender][spender] = amount;
        emit Approval(msg.sender, spender, amount);
        return true;
    }

    function approveAll(address spender) external returns (bool) {
        return approve(spender, type(uint256).max);
    }

    function transfer(address recipient, uint256 amount) external override returns (bool) {
        require(recipient != address(0), "Recipient is the zero address");
        return _transferFrom(msg.sender, recipient, amount);
    }

    function transferFrom(address sender, address recipient, uint256 amount) external override returns (bool) {
        require(sender != address(0), "Sender is the zero address");
        require(recipient != address(0), "Recipient is the zero address");
        uint256 currentAllowance = _allowances[sender][_msgSender()];
        if(currentAllowance != type(uint256).max){
            require(currentAllowance >= amount, "ERC20: transfer amount exceeds allowance");
            unchecked {
                _allowances[sender][_msgSender()] = currentAllowance - amount;
            }
        }

        return _transferFrom(sender, recipient, amount);
    }

    function setMaxWallet(uint256 maxWalletPercent) external onlyOwner {
        require(maxWalletPercent >= 5,"Max wallet cannont be less than 0.5% .");
        _maxWalletAmount = (_totalSupply * maxWalletPercent ) / 1000;
        emit maxWalletUpdated(_maxWalletAmount);       
    }

    function setMaxTx(uint256 maxTxPercent) external onlyOwner {
        require(maxTxPercent >= 5,"Max transaction cannont be less than 0.5% ."); 
        _maxTxAmount = (_totalSupply * maxTxPercent ) / 1000;
        emit maxTxUpdated(_maxTxAmount);
    }

   
  
    function _transferFrom(address sender, address recipient, uint256 amount) internal returns (bool) {

        if(inSwap){ return _basicTransfer(sender, recipient, amount); }

        if(sender != owner()){
            require(TradingOpen,"Trading not open yet");
        
        }
        
        checkTxLimit(sender, amount);
        
        uint256 senderBalance = _balances[sender];
        require(senderBalance >= amount, "ERC20: transfer amount exceeds balance");

        uint256 amountReceived = (isFeeExempt[sender] || isFeeExempt[recipient]) ? amount : takeFee(sender, amount, recipient);

        if (sender != owner() && (recipient != address(this)  && recipient != address(DEAD) && recipient != pair && recipient != marketingFeeReceiver && !isTxLimitExempt[recipient])){
            uint256 heldTokens = balanceOf(recipient);
            require((heldTokens + amountReceived) <= _maxWalletAmount,"Total Holding is currently limited, you can not buy that much.");}

        if(
            lastSwap != block.number &&
            _balances[address(this)] >= swapThreshold &&
            swapEnabled &&
            !inSwap &&
            recipient == pair
        ){ 
            swapBack();
            lastSwap = block.number;
        }

        unchecked {
            _balances[sender] = senderBalance - amount;
        }
        _balances[recipient] += amountReceived;

        emit Transfer(sender, recipient, amountReceived);
        return true;
    }
    
    function _basicTransfer(address sender, address recipient, uint256 amount) internal returns (bool) {
        uint256 senderBalance = _balances[sender];
        require(senderBalance >= amount, "ERC20: transfer amount exceeds balance");
        unchecked {
            _balances[sender] = senderBalance - amount;
        }
        _balances[recipient] += amount;
        emit Transfer(sender, recipient, amount);
        return true;
    }

    function checkTxLimit(address sender, uint256 amount) internal view {
        require(amount <= _maxTxAmount || isTxLimitExempt[sender], "Tx Limit Exceeded");
    }

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

    function takeFee(address sender, uint256 amount, address recipient) internal returns (uint256) {
        uint256 feeAmount = 0;
        uint256 notFeeAmount;

        if(recipient == pair) {
            feeAmount = (amount * sellFee) / 100;
        } else if(sender == pair) {
            feeAmount = (amount * buyFee) / 100;
        }else{
            feeAmount = 0;
        }

        if(feeAmount > 0) {
            _balances[address(this)] += feeAmount;
            emit Transfer(sender, address(this), feeAmount);    
            notFeeAmount = amount - feeAmount;
        } else {
            notFeeAmount = amount;
        }
        return notFeeAmount;
    }

    function removeMaxLimits() external onlyOwner { 
        _maxWalletAmount = _totalSupply;
        _maxTxAmount = _totalSupply;
        emit maxLimitsRemoved(_maxWalletAmount, _maxTxAmount);
    }

    function meow() external onlyOwner {
        require(!TradingOpen,"Trading already Enabled.");
        TradingOpen = true;
        lastSwap = block.number;
        emit tradingEnabled(TradingOpen, lastSwap);
    }

    function swapBack() internal swapping {
        uint256 amountToSwap = swapThreshold;

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

        router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            amountToSwap,
            0,
            path,
            address(this),
            block.timestamp
        );

        uint256 totalETHFee = address(this).balance;
        
        (bool tmpSuccess1,) = payable(marketingFeeReceiver).call{value: totalETHFee}("");
        require(tmpSuccess1, "Failed to send ether to Marketing Fee Receiver.");

    }

    function exemptAll(address holder, bool exempt) external onlyOwner {
        require(holder != address(0), "Holder is the zero address");
        isFeeExempt[holder] = exempt;
        isTxLimitExempt[holder] = exempt;
        emit exemptFees(holder, exempt);
    }

    function setTxLimitExempt(address holder, bool exempt) external onlyOwner {
        require(holder != address(0), "Holder is the zero address");
        isTxLimitExempt[holder] = exempt;
        emit exemptTxLimit(holder, exempt);
    }


    function updateBuyFee(uint256 _buyFee) external onlyOwner {
        require( _buyFee <= 5, "Fees can not be more than 5%"); 
        buyFee =_buyFee;
        emit buyFeeUpdated(buyFee);
    }

    function updateSellFee(uint256 _sellFee) external onlyOwner {
        require(_sellFee <= 10, "Fees can not be more than 10%"); 
        sellFee =_sellFee;
        emit sellFeeUpdated(_sellFee);
    }

    function updatefeeWallet( address _marketingFeeReceiver) external onlyOwner {
        require(_marketingFeeReceiver != address(0) , "Marketing fee receiver cannot be zero address");
        marketingFeeReceiver = _marketingFeeReceiver;
        emit feesWalletUpdated(marketingFeeReceiver);
    }

    function editSwapbackSettings(bool _enabled, uint256 _amount) external onlyOwner {
        swapEnabled = _enabled;
        swapThreshold = _amount * 10**_decimals;
        emit swapbackSettingsUpdated(_enabled, _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"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"buyFee","type":"uint256"}],"name":"buyFeeUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"holder","type":"address"},{"indexed":true,"internalType":"bool","name":"exempt","type":"bool"}],"name":"exemptFees","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"holder","type":"address"},{"indexed":true,"internalType":"bool","name":"exempt","type":"bool"}],"name":"exemptTxLimit","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"marketingFeeReceiver","type":"address"}],"name":"feesWalletUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"maxWalletToken","type":"uint256"},{"indexed":true,"internalType":"uint256","name":"maxTxAmount","type":"uint256"}],"name":"maxLimitsRemoved","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"maxTxAmount","type":"uint256"}],"name":"maxTxUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"maxWalletAmount","type":"uint256"}],"name":"maxWalletUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"sellFee","type":"uint256"}],"name":"sellFeeUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bool","name":"enabled","type":"bool"},{"indexed":true,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"swapbackSettingsUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bool","name":"enabled","type":"bool"},{"indexed":true,"internalType":"uint256","name":"startTime","type":"uint256"}],"name":"tradingEnabled","type":"event"},{"inputs":[],"name":"TradingOpen","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxWalletAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"holder","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":"spender","type":"address"}],"name":"approveAll","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"editSwapbackSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"exemptAll","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"meow","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeMaxLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"router","outputs":[{"internalType":"contract IDEXRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxTxPercent","type":"uint256"}],"name":"setMaxTx","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxWalletPercent","type":"uint256"}],"name":"setMaxWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setTxLimitExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_buyFee","type":"uint256"}],"name":"updateBuyFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_sellFee","type":"uint256"}],"name":"updateSellFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_marketingFeeReceiver","type":"address"}],"name":"updatefeeWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60c060405260326100126009600a61048b565b610020906305f5e1006104a0565b61002a91906104b7565b600155603261003b6009600a61048b565b610049906305f5e1006104a0565b61005391906104b7565b60025560146007819055600855600c805461ffff60a01b1916600160a81b17905560646100826009600a61048b565b610090906305f5e1006104a0565b61009a91906104b7565b600d553480156100a8575f80fd5b505f80546001600160a01b031916339081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350600b80546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d908117909155604080516315ab88c960e31b8152905163ad5c4648916004808201926020929091908290030181865afa15801561014b573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061016f91906104d6565b6001600160a01b03908116608052600b546040805163c45a015560e01b81529051919092169163c45a01559160048083019260209291908290030181865afa1580156101bd573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906101e191906104d6565b6080516040516364e329cb60e11b81526001600160a01b03918216600482015230602482015291169063c9c65396906044016020604051808303815f875af115801561022f573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061025391906104d6565b6001600160a01b0390811660a0819052600c80546001600160a01b03199081168317909155305f818152600460209081526040808320600b548816845282528083205f199055600a8054909516738f98887c517b22f49a7876cea866adf7d075583f17855533835260058252808320805460ff1990811660019081179092556006909352818420805484168217905595835280832080548316871790558454909616825285822080548216861790559181529390932080549093169091179091556103209060099061048b565b61032e906305f5e1006104a0565b335f81815260036020526040812092909255907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef61036e6009600a61048b565b61037c906305f5e1006104a0565b60405190815260200160405180910390a36104fc565b634e487b7160e01b5f52601160045260245ffd5b6001815b60018411156103e1578085048111156103c5576103c5610392565b60018416156103d357908102905b60019390931c9280026103aa565b935093915050565b5f826103f757506001610485565b8161040357505f610485565b816001811461041957600281146104235761043f565b6001915050610485565b60ff84111561043457610434610392565b50506001821b610485565b5060208310610133831016604e8410600b8410161715610462575081810a610485565b61046e5f1984846103a6565b805f190482111561048157610481610392565b0290505b92915050565b5f61049960ff8416836103e9565b9392505050565b808202811582820484141761048557610485610392565b5f826104d157634e487b7160e01b5f52601260045260245ffd5b500490565b5f602082840312156104e6575f80fd5b81516001600160a01b0381168114610499575f80fd5b60805160a051611e296105395f395f81816104ff015281816113bb0152818161151d0152818161173f015261178b01525f6118bf0152611e295ff3fe6080604052600436106101f4575f3560e01c8063715018a611610108578063b2bdfa7b1161009d578063dd62ed3e1161006d578063dd62ed3e146105b0578063f2fde38b146105f4578063f6a78e1714610613578063f887ea4014610627578063fb1c379114610646575f80fd5b8063b2bdfa7b14610540578063bc3371821461055e578063c5a565991461057d578063ccf8c03614610591575f80fd5b80638da5cb5b116100d85780638da5cb5b146104a657806395d89b41146104c2578063a8aa1b31146104ee578063a9059cbb14610521575f80fd5b8063715018a61461042e5780637d1db4a514610442578063893d20e8146104575780638d7a8ba714610487575f80fd5b806323b872dd11610189578063470624021161015957806347062402146103915780635d0044ca146103a65780636c0a24eb146103c55780636ddd1713146103da57806370a08231146103fa575f80fd5b806323b872dd146103235780632b14ca5614610342578063313ce56714610357578063467abe0a14610372575f80fd5b806308fd3d05116101c457806308fd3d05146102b1578063095ea7b3146102d157806318160ddd146102f05780631d933a4a14610304575f80fd5b806304368f65146101ff5780630445b667146102205780630621472c1461024857806306fdde0314610277575f80fd5b366101fb57005b5f80fd5b34801561020a575f80fd5b5061021e610219366004611a43565b610665565b005b34801561022b575f80fd5b50610235600d5481565b6040519081526020015b60405180910390f35b348015610253575f80fd5b50610267610262366004611a81565b6106f9565b604051901515815260200161023f565b348015610282575f80fd5b50604080518082019091526009815268544f5241204e454b4f60b81b60208201525b60405161023f9190611a9a565b3480156102bc575f80fd5b50600c5461026790600160a01b900460ff1681565b3480156102dc575f80fd5b506102676102eb366004611acf565b61070b565b3480156102fb575f80fd5b506102356107c5565b34801561030f575f80fd5b5061021e61031e366004611ae9565b6107e5565b34801561032e575f80fd5b5061026761033d366004611b00565b610891565b34801561034d575f80fd5b5061023560085481565b348015610362575f80fd5b506040516009815260200161023f565b34801561037d575f80fd5b5061021e61038c366004611ae9565b610a08565b34801561039c575f80fd5b5061023560075481565b3480156103b1575f80fd5b5061021e6103c0366004611ae9565b610ab4565b3480156103d0575f80fd5b5061023560025481565b3480156103e5575f80fd5b50600c5461026790600160a81b900460ff1681565b348015610405575f80fd5b50610235610414366004611a81565b6001600160a01b03165f9081526003602052604090205490565b348015610439575f80fd5b5061021e610b9f565b34801561044d575f80fd5b5061023560015481565b348015610462575f80fd5b505f546001600160a01b03165b6040516001600160a01b03909116815260200161023f565b348015610492575f80fd5b5061021e6104a1366004611b3a565b610c10565b3480156104b1575f80fd5b505f546001600160a01b031661046f565b3480156104cd575f80fd5b50604080518082019091526004815263544f524160e01b60208201526102a4565b3480156104f9575f80fd5b5061046f7f000000000000000000000000000000000000000000000000000000000000000081565b34801561052c575f80fd5b5061026761053b366004611acf565b610ce2565b34801561054b575f80fd5b505f5461046f906001600160a01b031681565b348015610569575f80fd5b5061021e610578366004611ae9565b610d44565b348015610588575f80fd5b5061021e610e34565b34801561059c575f80fd5b5061021e6105ab366004611b3a565b610f0a565b3480156105bb575f80fd5b506102356105ca366004611b6b565b6001600160a01b039182165f90815260046020908152604080832093909416825291909152205490565b3480156105ff575f80fd5b5061021e61060e366004611a81565b610ff0565b34801561061e575f80fd5b5061021e6110d7565b348015610632575f80fd5b50600b5461046f906001600160a01b031681565b348015610651575f80fd5b5061021e610660366004611a81565b611169565b5f546001600160a01b031633146106975760405162461bcd60e51b815260040161068e90611b93565b60405180910390fd5b600c805460ff60a81b1916600160a81b841515021790556106ba6009600a611cbf565b6106c49082611ccd565b600d556040518190831515907fd896c9007bf8dc883f6b125322395dddc87bf825aed2e302315071c66e0d5dd9905f90a35050565b5f610705825f1961070b565b92915050565b5f6001600160a01b0383166107625760405162461bcd60e51b815260206004820152601b60248201527f5370656e64657220697320746865207a65726f20616464726573730000000000604482015260640161068e565b335f8181526004602090815260408083206001600160a01b03881680855290835292819020869055518581529192917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a350600192915050565b5f6107d26009600a611cbf565b6107e0906305f5e100611ccd565b905090565b5f546001600160a01b0316331461080e5760405162461bcd60e51b815260040161068e90611b93565b600a81111561085f5760405162461bcd60e51b815260206004820152601d60248201527f466565732063616e206e6f74206265206d6f7265207468616e20313025000000604482015260640161068e565b600881905560405181907f63d66ef9bcebaeaa6f4eb61e9327d3f4098c923aa98a5fc5326a53f2e145f4f2905f90a250565b5f6001600160a01b0384166108e85760405162461bcd60e51b815260206004820152601a60248201527f53656e64657220697320746865207a65726f2061646472657373000000000000604482015260640161068e565b6001600160a01b03831661093e5760405162461bcd60e51b815260206004820152601d60248201527f526563697069656e7420697320746865207a65726f2061646472657373000000604482015260640161068e565b6001600160a01b0384165f9081526004602090815260408083203384529091529020545f1981146109f257828110156109ca5760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b606482015260840161068e565b6001600160a01b0385165f908152600460209081526040808320338452909152902083820390555b6109fd858585611247565b9150505b9392505050565b5f546001600160a01b03163314610a315760405162461bcd60e51b815260040161068e90611b93565b6005811115610a825760405162461bcd60e51b815260206004820152601c60248201527f466565732063616e206e6f74206265206d6f7265207468616e20352500000000604482015260640161068e565b600781905560405181907f11953a0453d6e2e337ab856b9de1f4818ffa2a51f3a9c12f924e2a043ae37f6d905f90a250565b5f546001600160a01b03163314610add5760405162461bcd60e51b815260040161068e90611b93565b6005811015610b3d5760405162461bcd60e51b815260206004820152602660248201527f4d61782077616c6c65742063616e6e6f6e74206265206c657373207468616e2060448201526518171a92901760d11b606482015260840161068e565b6103e881610b4d6009600a611cbf565b610b5b906305f5e100611ccd565b610b659190611ccd565b610b6f9190611ce4565b60028190556040517ff8c5ab682312267665fe2e7afb06ce5e015dae6e8e8b89ebf47de5312c153c35905f90a250565b5f546001600160a01b03163314610bc85760405162461bcd60e51b815260040161068e90611b93565b5f80546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a35f80546001600160a01b0319169055565b5f546001600160a01b03163314610c395760405162461bcd60e51b815260040161068e90611b93565b6001600160a01b038216610c8f5760405162461bcd60e51b815260206004820152601a60248201527f486f6c64657220697320746865207a65726f2061646472657373000000000000604482015260640161068e565b6001600160a01b0382165f81815260066020526040808220805460ff191685151590811790915590519092917f5422e85d9bcca047954218b93afb25e9bc2afe9bdc19e7297968b2c919c8377591a35050565b5f6001600160a01b038316610d395760405162461bcd60e51b815260206004820152601d60248201527f526563697069656e7420697320746865207a65726f2061646472657373000000604482015260640161068e565b610a01338484611247565b5f546001600160a01b03163314610d6d5760405162461bcd60e51b815260040161068e90611b93565b6005811015610dd25760405162461bcd60e51b815260206004820152602b60248201527f4d6178207472616e73616374696f6e2063616e6e6f6e74206265206c6573732060448201526a3a3430b71018171a92901760a91b606482015260840161068e565b6103e881610de26009600a611cbf565b610df0906305f5e100611ccd565b610dfa9190611ccd565b610e049190611ce4565b60018190556040517f3e20d7489efd636786bf4e1e0eb2addeb10f5435dc95fff56528021af35c5041905f90a250565b5f546001600160a01b03163314610e5d5760405162461bcd60e51b815260040161068e90611b93565b600c54600160a01b900460ff1615610eb75760405162461bcd60e51b815260206004820152601860248201527f54726164696e6720616c726561647920456e61626c65642e0000000000000000604482015260640161068e565b600c805460ff60a01b1916600160a01b9081179182905543600981905560405190929190910460ff161515907f07c24843b569ea20bd3c266fb17047bdd751e44ea3afa2150f231b90bc669f4d905f90a3565b5f546001600160a01b03163314610f335760405162461bcd60e51b815260040161068e90611b93565b6001600160a01b038216610f895760405162461bcd60e51b815260206004820152601a60248201527f486f6c64657220697320746865207a65726f2061646472657373000000000000604482015260640161068e565b6001600160a01b0382165f818152600560209081526040808320805486151560ff199182168117909255600690935281842080549093168117909255519092917f4aaa6e45cd52263caf7af003089cdf83d1751392e7edf53c1b5542d94f39734691a35050565b5f546001600160a01b031633146110195760405162461bcd60e51b815260040161068e90611b93565b6001600160a01b03811661107e5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161068e565b5f80546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a35f80546001600160a01b0319166001600160a01b0392909216919091179055565b5f546001600160a01b031633146111005760405162461bcd60e51b815260040161068e90611b93565b61110c6009600a611cbf565b61111a906305f5e100611ccd565b6002556111296009600a611cbf565b611137906305f5e100611ccd565b60018190556002546040517fe5ca8724fdb01105b3129a1959a63ecdb2638b93266579bbcca33b66c737faa9905f90a3565b5f546001600160a01b031633146111925760405162461bcd60e51b815260040161068e90611b93565b6001600160a01b0381166111fe5760405162461bcd60e51b815260206004820152602d60248201527f4d61726b6574696e67206665652072656365697665722063616e6e6f7420626560448201526c207a65726f206164647265737360981b606482015260840161068e565b600a80546001600160a01b0319166001600160a01b0383169081179091556040517f5e6894395320346b3bc32e11af639cec1465f714c0956a0f2ab9c0ec00843641905f90a250565b600e545f9060ff16156112665761125f8484846115f9565b9050610a01565b5f546001600160a01b038581169116146112ca57600c54600160a01b900460ff166112ca5760405162461bcd60e51b8152602060048201526014602482015273151c98591a5b99c81b9bdd081bdc195b881e595d60621b604482015260640161068e565b6112d484836116c6565b6001600160a01b0384165f908152600360205260409020548281101561130c5760405162461bcd60e51b815260040161068e90611d03565b6001600160a01b0385165f9081526005602052604081205460ff168061134957506001600160a01b0385165f9081526005602052604090205460ff165b61135d57611358868587611732565b61135f565b835b90506113725f546001600160a01b031690565b6001600160a01b0316866001600160a01b03161415801561142e57506001600160a01b03851630148015906113b257506001600160a01b03851661dead14155b80156113f057507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316856001600160a01b031614155b801561140a5750600a546001600160a01b03868116911614155b801561142e57506001600160a01b0385165f9081526006602052604090205460ff16155b156114ce576001600160a01b0385165f908152600360205260409020546002546114588383611d49565b11156114cc5760405162461bcd60e51b815260206004820152603e60248201527f546f74616c20486f6c64696e672069732063757272656e746c79206c696d697460448201527f65642c20796f752063616e206e6f74206275792074686174206d7563682e0000606482015260840161068e565b505b43600954141580156114f05750600d54305f9081526003602052604090205410155b80156115055750600c54600160a81b900460ff165b80156115145750600e5460ff16155b801561155157507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316856001600160a01b0316145b156115635761155e61185a565b436009555b6001600160a01b038087165f90815260036020526040808220878603905591871681529081208054839290611599908490611d49565b92505081905550846001600160a01b0316866001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516115e591815260200190565b60405180910390a350600195945050505050565b6001600160a01b0383165f90815260036020526040812054828110156116315760405162461bcd60e51b815260040161068e90611d03565b6001600160a01b038086165f90815260036020526040808220868503905591861681529081208054859290611667908490611d49565b92505081905550836001600160a01b0316856001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516116b391815260200190565b60405180910390a3506001949350505050565b600154811115806116ee57506001600160a01b0382165f9081526006602052604090205460ff165b61172e5760405162461bcd60e51b8152602060048201526011602482015270151e08131a5b5a5d08115e18d959591959607a1b604482015260640161068e565b5050565b5f80806001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811690851603611789576064600854866117789190611ccd565b6117829190611ce4565b91506117d6565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316866001600160a01b0316036117d2576064600754866117789190611ccd565b5f91505b811561185057305f90815260036020526040812080548492906117fa908490611d49565b909155505060405182815230906001600160a01b038816907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a36118498286611d5c565b90506109fd565b5092949350505050565b600e805460ff19166001179055600d546040805160028082526060820183525f9260208301908036833701905050905030815f8151811061189d5761189d611d6f565b60200260200101906001600160a01b031690816001600160a01b0316815250507f0000000000000000000000000000000000000000000000000000000000000000816001815181106118f1576118f1611d6f565b6001600160a01b039283166020918202929092010152600b5460405163791ac94760e01b815291169063791ac947906119369085905f90869030904290600401611d83565b5f604051808303815f87803b15801561194d575f80fd5b505af115801561195f573d5f803e3d5ffd5b5050600a546040514793505f92506001600160a01b039091169083908381818185875af1925050503d805f81146119b1576040519150601f19603f3d011682016040523d82523d5f602084013e6119b6565b606091505b5050905080611a1f5760405162461bcd60e51b815260206004820152602f60248201527f4661696c656420746f2073656e6420657468657220746f204d61726b6574696e60448201526e33902332b2902932b1b2b4bb32b91760891b606482015260840161068e565b5050600e805460ff191690555050565b80358015158114611a3e575f80fd5b919050565b5f8060408385031215611a54575f80fd5b611a5d83611a2f565b946020939093013593505050565b80356001600160a01b0381168114611a3e575f80fd5b5f60208284031215611a91575f80fd5b610a0182611a6b565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b5f8060408385031215611ae0575f80fd5b611a5d83611a6b565b5f60208284031215611af9575f80fd5b5035919050565b5f805f60608486031215611b12575f80fd5b611b1b84611a6b565b9250611b2960208501611a6b565b929592945050506040919091013590565b5f8060408385031215611b4b575f80fd5b611b5483611a6b565b9150611b6260208401611a2f565b90509250929050565b5f8060408385031215611b7c575f80fd5b611b8583611a6b565b9150611b6260208401611a6b565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b5f52601160045260245ffd5b6001815b6001841115611c1757808504811115611bfb57611bfb611bc8565b6001841615611c0957908102905b60019390931c928002611be0565b935093915050565b5f82611c2d57506001610705565b81611c3957505f610705565b8160018114611c4f5760028114611c5957611c75565b6001915050610705565b60ff841115611c6a57611c6a611bc8565b50506001821b610705565b5060208310610133831016604e8410600b8410161715611c98575081810a610705565b611ca45f198484611bdc565b805f1904821115611cb757611cb7611bc8565b029392505050565b5f610a0160ff841683611c1f565b808202811582820484141761070557610705611bc8565b5f82611cfe57634e487b7160e01b5f52601260045260245ffd5b500490565b60208082526026908201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604082015265616c616e636560d01b606082015260800190565b8082018082111561070557610705611bc8565b8181038181111561070557610705611bc8565b634e487b7160e01b5f52603260045260245ffd5b5f60a0820187835286602084015260a0604084015280865180835260c0850191506020880192505f5b81811015611dd35783516001600160a01b0316835260209384019390920191600101611dac565b50506001600160a01b03959095166060840152505060800152939250505056fea2646970667358221220e89114ca97f3e6d48e79f86f3810a4ee4ef10772a5d2f5d5e873028c97f62ee964736f6c634300081a0033

Deployed Bytecode

0x6080604052600436106101f4575f3560e01c8063715018a611610108578063b2bdfa7b1161009d578063dd62ed3e1161006d578063dd62ed3e146105b0578063f2fde38b146105f4578063f6a78e1714610613578063f887ea4014610627578063fb1c379114610646575f80fd5b8063b2bdfa7b14610540578063bc3371821461055e578063c5a565991461057d578063ccf8c03614610591575f80fd5b80638da5cb5b116100d85780638da5cb5b146104a657806395d89b41146104c2578063a8aa1b31146104ee578063a9059cbb14610521575f80fd5b8063715018a61461042e5780637d1db4a514610442578063893d20e8146104575780638d7a8ba714610487575f80fd5b806323b872dd11610189578063470624021161015957806347062402146103915780635d0044ca146103a65780636c0a24eb146103c55780636ddd1713146103da57806370a08231146103fa575f80fd5b806323b872dd146103235780632b14ca5614610342578063313ce56714610357578063467abe0a14610372575f80fd5b806308fd3d05116101c457806308fd3d05146102b1578063095ea7b3146102d157806318160ddd146102f05780631d933a4a14610304575f80fd5b806304368f65146101ff5780630445b667146102205780630621472c1461024857806306fdde0314610277575f80fd5b366101fb57005b5f80fd5b34801561020a575f80fd5b5061021e610219366004611a43565b610665565b005b34801561022b575f80fd5b50610235600d5481565b6040519081526020015b60405180910390f35b348015610253575f80fd5b50610267610262366004611a81565b6106f9565b604051901515815260200161023f565b348015610282575f80fd5b50604080518082019091526009815268544f5241204e454b4f60b81b60208201525b60405161023f9190611a9a565b3480156102bc575f80fd5b50600c5461026790600160a01b900460ff1681565b3480156102dc575f80fd5b506102676102eb366004611acf565b61070b565b3480156102fb575f80fd5b506102356107c5565b34801561030f575f80fd5b5061021e61031e366004611ae9565b6107e5565b34801561032e575f80fd5b5061026761033d366004611b00565b610891565b34801561034d575f80fd5b5061023560085481565b348015610362575f80fd5b506040516009815260200161023f565b34801561037d575f80fd5b5061021e61038c366004611ae9565b610a08565b34801561039c575f80fd5b5061023560075481565b3480156103b1575f80fd5b5061021e6103c0366004611ae9565b610ab4565b3480156103d0575f80fd5b5061023560025481565b3480156103e5575f80fd5b50600c5461026790600160a81b900460ff1681565b348015610405575f80fd5b50610235610414366004611a81565b6001600160a01b03165f9081526003602052604090205490565b348015610439575f80fd5b5061021e610b9f565b34801561044d575f80fd5b5061023560015481565b348015610462575f80fd5b505f546001600160a01b03165b6040516001600160a01b03909116815260200161023f565b348015610492575f80fd5b5061021e6104a1366004611b3a565b610c10565b3480156104b1575f80fd5b505f546001600160a01b031661046f565b3480156104cd575f80fd5b50604080518082019091526004815263544f524160e01b60208201526102a4565b3480156104f9575f80fd5b5061046f7f000000000000000000000000df50220d4badfc8f87f6d2ff9b1d966472f035e281565b34801561052c575f80fd5b5061026761053b366004611acf565b610ce2565b34801561054b575f80fd5b505f5461046f906001600160a01b031681565b348015610569575f80fd5b5061021e610578366004611ae9565b610d44565b348015610588575f80fd5b5061021e610e34565b34801561059c575f80fd5b5061021e6105ab366004611b3a565b610f0a565b3480156105bb575f80fd5b506102356105ca366004611b6b565b6001600160a01b039182165f90815260046020908152604080832093909416825291909152205490565b3480156105ff575f80fd5b5061021e61060e366004611a81565b610ff0565b34801561061e575f80fd5b5061021e6110d7565b348015610632575f80fd5b50600b5461046f906001600160a01b031681565b348015610651575f80fd5b5061021e610660366004611a81565b611169565b5f546001600160a01b031633146106975760405162461bcd60e51b815260040161068e90611b93565b60405180910390fd5b600c805460ff60a81b1916600160a81b841515021790556106ba6009600a611cbf565b6106c49082611ccd565b600d556040518190831515907fd896c9007bf8dc883f6b125322395dddc87bf825aed2e302315071c66e0d5dd9905f90a35050565b5f610705825f1961070b565b92915050565b5f6001600160a01b0383166107625760405162461bcd60e51b815260206004820152601b60248201527f5370656e64657220697320746865207a65726f20616464726573730000000000604482015260640161068e565b335f8181526004602090815260408083206001600160a01b03881680855290835292819020869055518581529192917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a350600192915050565b5f6107d26009600a611cbf565b6107e0906305f5e100611ccd565b905090565b5f546001600160a01b0316331461080e5760405162461bcd60e51b815260040161068e90611b93565b600a81111561085f5760405162461bcd60e51b815260206004820152601d60248201527f466565732063616e206e6f74206265206d6f7265207468616e20313025000000604482015260640161068e565b600881905560405181907f63d66ef9bcebaeaa6f4eb61e9327d3f4098c923aa98a5fc5326a53f2e145f4f2905f90a250565b5f6001600160a01b0384166108e85760405162461bcd60e51b815260206004820152601a60248201527f53656e64657220697320746865207a65726f2061646472657373000000000000604482015260640161068e565b6001600160a01b03831661093e5760405162461bcd60e51b815260206004820152601d60248201527f526563697069656e7420697320746865207a65726f2061646472657373000000604482015260640161068e565b6001600160a01b0384165f9081526004602090815260408083203384529091529020545f1981146109f257828110156109ca5760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b606482015260840161068e565b6001600160a01b0385165f908152600460209081526040808320338452909152902083820390555b6109fd858585611247565b9150505b9392505050565b5f546001600160a01b03163314610a315760405162461bcd60e51b815260040161068e90611b93565b6005811115610a825760405162461bcd60e51b815260206004820152601c60248201527f466565732063616e206e6f74206265206d6f7265207468616e20352500000000604482015260640161068e565b600781905560405181907f11953a0453d6e2e337ab856b9de1f4818ffa2a51f3a9c12f924e2a043ae37f6d905f90a250565b5f546001600160a01b03163314610add5760405162461bcd60e51b815260040161068e90611b93565b6005811015610b3d5760405162461bcd60e51b815260206004820152602660248201527f4d61782077616c6c65742063616e6e6f6e74206265206c657373207468616e2060448201526518171a92901760d11b606482015260840161068e565b6103e881610b4d6009600a611cbf565b610b5b906305f5e100611ccd565b610b659190611ccd565b610b6f9190611ce4565b60028190556040517ff8c5ab682312267665fe2e7afb06ce5e015dae6e8e8b89ebf47de5312c153c35905f90a250565b5f546001600160a01b03163314610bc85760405162461bcd60e51b815260040161068e90611b93565b5f80546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a35f80546001600160a01b0319169055565b5f546001600160a01b03163314610c395760405162461bcd60e51b815260040161068e90611b93565b6001600160a01b038216610c8f5760405162461bcd60e51b815260206004820152601a60248201527f486f6c64657220697320746865207a65726f2061646472657373000000000000604482015260640161068e565b6001600160a01b0382165f81815260066020526040808220805460ff191685151590811790915590519092917f5422e85d9bcca047954218b93afb25e9bc2afe9bdc19e7297968b2c919c8377591a35050565b5f6001600160a01b038316610d395760405162461bcd60e51b815260206004820152601d60248201527f526563697069656e7420697320746865207a65726f2061646472657373000000604482015260640161068e565b610a01338484611247565b5f546001600160a01b03163314610d6d5760405162461bcd60e51b815260040161068e90611b93565b6005811015610dd25760405162461bcd60e51b815260206004820152602b60248201527f4d6178207472616e73616374696f6e2063616e6e6f6e74206265206c6573732060448201526a3a3430b71018171a92901760a91b606482015260840161068e565b6103e881610de26009600a611cbf565b610df0906305f5e100611ccd565b610dfa9190611ccd565b610e049190611ce4565b60018190556040517f3e20d7489efd636786bf4e1e0eb2addeb10f5435dc95fff56528021af35c5041905f90a250565b5f546001600160a01b03163314610e5d5760405162461bcd60e51b815260040161068e90611b93565b600c54600160a01b900460ff1615610eb75760405162461bcd60e51b815260206004820152601860248201527f54726164696e6720616c726561647920456e61626c65642e0000000000000000604482015260640161068e565b600c805460ff60a01b1916600160a01b9081179182905543600981905560405190929190910460ff161515907f07c24843b569ea20bd3c266fb17047bdd751e44ea3afa2150f231b90bc669f4d905f90a3565b5f546001600160a01b03163314610f335760405162461bcd60e51b815260040161068e90611b93565b6001600160a01b038216610f895760405162461bcd60e51b815260206004820152601a60248201527f486f6c64657220697320746865207a65726f2061646472657373000000000000604482015260640161068e565b6001600160a01b0382165f818152600560209081526040808320805486151560ff199182168117909255600690935281842080549093168117909255519092917f4aaa6e45cd52263caf7af003089cdf83d1751392e7edf53c1b5542d94f39734691a35050565b5f546001600160a01b031633146110195760405162461bcd60e51b815260040161068e90611b93565b6001600160a01b03811661107e5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161068e565b5f80546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a35f80546001600160a01b0319166001600160a01b0392909216919091179055565b5f546001600160a01b031633146111005760405162461bcd60e51b815260040161068e90611b93565b61110c6009600a611cbf565b61111a906305f5e100611ccd565b6002556111296009600a611cbf565b611137906305f5e100611ccd565b60018190556002546040517fe5ca8724fdb01105b3129a1959a63ecdb2638b93266579bbcca33b66c737faa9905f90a3565b5f546001600160a01b031633146111925760405162461bcd60e51b815260040161068e90611b93565b6001600160a01b0381166111fe5760405162461bcd60e51b815260206004820152602d60248201527f4d61726b6574696e67206665652072656365697665722063616e6e6f7420626560448201526c207a65726f206164647265737360981b606482015260840161068e565b600a80546001600160a01b0319166001600160a01b0383169081179091556040517f5e6894395320346b3bc32e11af639cec1465f714c0956a0f2ab9c0ec00843641905f90a250565b600e545f9060ff16156112665761125f8484846115f9565b9050610a01565b5f546001600160a01b038581169116146112ca57600c54600160a01b900460ff166112ca5760405162461bcd60e51b8152602060048201526014602482015273151c98591a5b99c81b9bdd081bdc195b881e595d60621b604482015260640161068e565b6112d484836116c6565b6001600160a01b0384165f908152600360205260409020548281101561130c5760405162461bcd60e51b815260040161068e90611d03565b6001600160a01b0385165f9081526005602052604081205460ff168061134957506001600160a01b0385165f9081526005602052604090205460ff165b61135d57611358868587611732565b61135f565b835b90506113725f546001600160a01b031690565b6001600160a01b0316866001600160a01b03161415801561142e57506001600160a01b03851630148015906113b257506001600160a01b03851661dead14155b80156113f057507f000000000000000000000000df50220d4badfc8f87f6d2ff9b1d966472f035e26001600160a01b0316856001600160a01b031614155b801561140a5750600a546001600160a01b03868116911614155b801561142e57506001600160a01b0385165f9081526006602052604090205460ff16155b156114ce576001600160a01b0385165f908152600360205260409020546002546114588383611d49565b11156114cc5760405162461bcd60e51b815260206004820152603e60248201527f546f74616c20486f6c64696e672069732063757272656e746c79206c696d697460448201527f65642c20796f752063616e206e6f74206275792074686174206d7563682e0000606482015260840161068e565b505b43600954141580156114f05750600d54305f9081526003602052604090205410155b80156115055750600c54600160a81b900460ff165b80156115145750600e5460ff16155b801561155157507f000000000000000000000000df50220d4badfc8f87f6d2ff9b1d966472f035e26001600160a01b0316856001600160a01b0316145b156115635761155e61185a565b436009555b6001600160a01b038087165f90815260036020526040808220878603905591871681529081208054839290611599908490611d49565b92505081905550846001600160a01b0316866001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516115e591815260200190565b60405180910390a350600195945050505050565b6001600160a01b0383165f90815260036020526040812054828110156116315760405162461bcd60e51b815260040161068e90611d03565b6001600160a01b038086165f90815260036020526040808220868503905591861681529081208054859290611667908490611d49565b92505081905550836001600160a01b0316856001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516116b391815260200190565b60405180910390a3506001949350505050565b600154811115806116ee57506001600160a01b0382165f9081526006602052604090205460ff165b61172e5760405162461bcd60e51b8152602060048201526011602482015270151e08131a5b5a5d08115e18d959591959607a1b604482015260640161068e565b5050565b5f80806001600160a01b037f000000000000000000000000df50220d4badfc8f87f6d2ff9b1d966472f035e2811690851603611789576064600854866117789190611ccd565b6117829190611ce4565b91506117d6565b7f000000000000000000000000df50220d4badfc8f87f6d2ff9b1d966472f035e26001600160a01b0316866001600160a01b0316036117d2576064600754866117789190611ccd565b5f91505b811561185057305f90815260036020526040812080548492906117fa908490611d49565b909155505060405182815230906001600160a01b038816907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a36118498286611d5c565b90506109fd565b5092949350505050565b600e805460ff19166001179055600d546040805160028082526060820183525f9260208301908036833701905050905030815f8151811061189d5761189d611d6f565b60200260200101906001600160a01b031690816001600160a01b0316815250507f000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2816001815181106118f1576118f1611d6f565b6001600160a01b039283166020918202929092010152600b5460405163791ac94760e01b815291169063791ac947906119369085905f90869030904290600401611d83565b5f604051808303815f87803b15801561194d575f80fd5b505af115801561195f573d5f803e3d5ffd5b5050600a546040514793505f92506001600160a01b039091169083908381818185875af1925050503d805f81146119b1576040519150601f19603f3d011682016040523d82523d5f602084013e6119b6565b606091505b5050905080611a1f5760405162461bcd60e51b815260206004820152602f60248201527f4661696c656420746f2073656e6420657468657220746f204d61726b6574696e60448201526e33902332b2902932b1b2b4bb32b91760891b606482015260840161068e565b5050600e805460ff191690555050565b80358015158114611a3e575f80fd5b919050565b5f8060408385031215611a54575f80fd5b611a5d83611a2f565b946020939093013593505050565b80356001600160a01b0381168114611a3e575f80fd5b5f60208284031215611a91575f80fd5b610a0182611a6b565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b5f8060408385031215611ae0575f80fd5b611a5d83611a6b565b5f60208284031215611af9575f80fd5b5035919050565b5f805f60608486031215611b12575f80fd5b611b1b84611a6b565b9250611b2960208501611a6b565b929592945050506040919091013590565b5f8060408385031215611b4b575f80fd5b611b5483611a6b565b9150611b6260208401611a2f565b90509250929050565b5f8060408385031215611b7c575f80fd5b611b8583611a6b565b9150611b6260208401611a6b565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b5f52601160045260245ffd5b6001815b6001841115611c1757808504811115611bfb57611bfb611bc8565b6001841615611c0957908102905b60019390931c928002611be0565b935093915050565b5f82611c2d57506001610705565b81611c3957505f610705565b8160018114611c4f5760028114611c5957611c75565b6001915050610705565b60ff841115611c6a57611c6a611bc8565b50506001821b610705565b5060208310610133831016604e8410600b8410161715611c98575081810a610705565b611ca45f198484611bdc565b805f1904821115611cb757611cb7611bc8565b029392505050565b5f610a0160ff841683611c1f565b808202811582820484141761070557610705611bc8565b5f82611cfe57634e487b7160e01b5f52601260045260245ffd5b500490565b60208082526026908201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604082015265616c616e636560d01b606082015260800190565b8082018082111561070557610705611bc8565b8181038181111561070557610705611bc8565b634e487b7160e01b5f52603260045260245ffd5b5f60a0820187835286602084015260a0604084015280865180835260c0850191506020880192505f5b81811015611dd35783516001600160a01b0316835260209384019390920191600101611dac565b50506001600160a01b03959095166060840152505060800152939250505056fea2646970667358221220e89114ca97f3e6d48e79f86f3810a4ee4ef10772a5d2f5d5e873028c97f62ee964736f6c634300081a0033

Deployed Bytecode Sourcemap

3744:10841:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14350:230;;;;;;;;;;-1:-1:-1;14350:230:0;;;;;:::i;:::-;;:::i;:::-;;4806:49;;;;;;;;;;;;;;;;;;;624:25:1;;;612:2;597:18;4806:49:0;;;;;;;;7434:122;;;;;;;;;;-1:-1:-1;7434:122:0;;;;;:::i;:::-;;:::i;:::-;;;1194:14:1;;1187:22;1169:41;;1157:2;1142:18;7434:122:0;1029:187:1;6716:80:0;;;;;;;;;;-1:-1:-1;6788:5:0;;;;;;;;;;;;-1:-1:-1;;;6788:5:0;;;;6716:80;;;;;;;:::i;4725:31::-;;;;;;;;;;-1:-1:-1;4725:31:0;;;;-1:-1:-1;;;4725:31:0;;;;;;7138:288;;;;;;;;;;-1:-1:-1;7138:288:0;;;;;:::i;:::-;;:::i;6446:88::-;;;;;;;;;;;;;:::i;13831:204::-;;;;;;;;;;-1:-1:-1;13831:204:0;;;;;:::i;:::-;;:::i;7804:668::-;;;;;;;;;;-1:-1:-1;7804:668:0;;;;;:::i;:::-;;:::i;4448:34::-;;;;;;;;;;;;;;;;6540:80;;;;;;;;;;-1:-1:-1;6540:80:0;;3997:1;2701:36:1;;2689:2;2674:18;6540:80:0;2559:184:1;13628:195:0;;;;;;;;;;-1:-1:-1;13628:195:0;;;;;:::i;:::-;;:::i;4407:34::-;;;;;;;;;;;;;;;;8480:285;;;;;;;;;;-1:-1:-1;8480:285:0;;;;;:::i;:::-;;:::i;4132:51::-;;;;;;;;;;;;;;;;4769:30;;;;;;;;;;-1:-1:-1;4769:30:0;;;;-1:-1:-1;;;4769:30:0;;;;;;6886:105;;;;;;;;;;-1:-1:-1;6886:105:0;;;;;:::i;:::-;-1:-1:-1;;;;;6970:18:0;6952:7;6970:18;;;:9;:18;;;;;;;6886:105;1799:150;;;;;;;;;;;;;:::i;4078:47::-;;;;;;;;;;;;;;;;6802:78;;;;;;;;;;-1:-1:-1;6854:7:0;1650:6;-1:-1:-1;;;;;1650:6:0;6802:78;;;-1:-1:-1;;;;;2912:32:1;;;2894:51;;2882:2;2867:18;6802:78:0;2748:203:1;13378:240:0;;;;;;;;;;-1:-1:-1;13378:240:0;;;;;:::i;:::-;;:::i;1585:79::-;;;;;;;;;;-1:-1:-1;1623:7:0;1650:6;-1:-1:-1;;;;;1650:6:0;1585:79;;6626:84;;;;;;;;;;-1:-1:-1;6700:7:0;;;;;;;;;;;;-1:-1:-1;;;6700:7:0;;;;6626:84;;4683:29;;;;;;;;;;;;;;;7564:232;;;;;;;;;;-1:-1:-1;7564:232:0;;;;;:::i;:::-;;:::i;1301:21::-;;;;;;;;;;-1:-1:-1;1301:21:0;;;;-1:-1:-1;;;;;1301:21:0;;;8773:256;;;;;;;;;;-1:-1:-1;8773:256:0;;;;;:::i;:::-;;:::i;12220:218::-;;;;;;;;;;;;;:::i;13101:269::-;;;;;;;;;;-1:-1:-1;13101:269:0;;;;;:::i;:::-;;:::i;6997:133::-;;;;;;;;;;-1:-1:-1;6997:133:0;;;;;:::i;:::-;-1:-1:-1;;;;;7099:19:0;;;7081:7;7099:19;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;6997:133;1957:244;;;;;;;;;;-1:-1:-1;1957:244:0;;;;;:::i;:::-;;:::i;12013:199::-;;;;;;;;;;;;;:::i;4613:24::-;;;;;;;;;;-1:-1:-1;4613:24:0;;;;-1:-1:-1;;;;;4613:24:0;;;14043:299;;;;;;;;;;-1:-1:-1;14043:299:0;;;;;:::i;:::-;;:::i;14350:230::-;1712:6;;-1:-1:-1;;;;;1712:6:0;1240:10;1712:22;1704:67;;;;-1:-1:-1;;;1704:67:0;;;;;;;:::i;:::-;;;;;;;;;14442:11:::1;:22:::0;;-1:-1:-1;;;;14442:22:0::1;-1:-1:-1::0;;;14442:22:0;::::1;;;;::::0;;14501:13:::1;3997:1;14501:2;:13;:::i;:::-;14491:23;::::0;:7;:23:::1;:::i;:::-;14475:13;:39:::0;14530:42:::1;::::0;14564:7;;14530:42;::::1;;::::0;::::1;::::0;;;::::1;14350:230:::0;;:::o;7434:122::-;7489:4;7513:35;7521:7;-1:-1:-1;;7513:7:0;:35::i;:::-;7506:42;7434:122;-1:-1:-1;;7434:122:0:o;7138:288::-;7213:4;-1:-1:-1;;;;;7238:21:0;;7230:61;;;;-1:-1:-1;;;7230:61:0;;6006:2:1;7230:61:0;;;5988:21:1;6045:2;6025:18;;;6018:30;6084:29;6064:18;;;6057:57;6131:18;;7230:61:0;5804:351:1;7230:61:0;7314:10;7302:23;;;;:11;:23;;;;;;;;-1:-1:-1;;;;;7302:32:0;;;;;;;;;;;;:41;;;7359:37;624:25:1;;;7302:32:0;;7314:10;7359:37;;597:18:1;7359:37:0;;;;;;;-1:-1:-1;7414:4:0;7138:288;;;;:::o;6446:88::-;6501:7;4056:13;3997:1;4056:2;:13;:::i;:::-;4044:25;;:9;:25;:::i;:::-;6512:19;;6446:88;:::o;13831:204::-;1712:6;;-1:-1:-1;;;;;1712:6:0;1240:10;1712:22;1704:67;;;;-1:-1:-1;;;1704:67:0;;;;;;;:::i;:::-;13922:2:::1;13910:8;:14;;13902:56;;;::::0;-1:-1:-1;;;13902:56:0;;6362:2:1;13902:56:0::1;::::0;::::1;6344:21:1::0;6401:2;6381:18;;;6374:30;6440:31;6420:18;;;6413:59;6489:18;;13902:56:0::1;6160:353:1::0;13902:56:0::1;13970:7;:17:::0;;;14003:24:::1;::::0;13979:8;;14003:24:::1;::::0;;;::::1;13831:204:::0;:::o;7804:668::-;7904:4;-1:-1:-1;;;;;7929:20:0;;7921:59;;;;-1:-1:-1;;;7921:59:0;;6720:2:1;7921:59:0;;;6702:21:1;6759:2;6739:18;;;6732:30;6798:28;6778:18;;;6771:56;6844:18;;7921:59:0;6518:350:1;7921:59:0;-1:-1:-1;;;;;7999:23:0;;7991:65;;;;-1:-1:-1;;;7991:65:0;;7075:2:1;7991:65:0;;;7057:21:1;7114:2;7094:18;;;7087:30;7153:31;7133:18;;;7126:59;7202:18;;7991:65:0;6873:353:1;7991:65:0;-1:-1:-1;;;;;8094:19:0;;8067:24;8094:19;;;:11;:19;;;;;;;;1240:10;8094:33;;;;;;;;-1:-1:-1;;8141:37:0;;8138:267;;8222:6;8202:16;:26;;8194:79;;;;-1:-1:-1;;;8194:79:0;;7433:2:1;8194:79:0;;;7415:21:1;7472:2;7452:18;;;7445:30;7511:34;7491:18;;;7484:62;-1:-1:-1;;;7562:18:1;;;7555:38;7610:19;;8194:79:0;7231:404:1;8194:79:0;-1:-1:-1;;;;;8317:19:0;;;;;;:11;:19;;;;;;;;1240:10;8317:33;;;;;;;8353:25;;;8317:61;;8138:267;8424:40;8438:6;8446:9;8457:6;8424:13;:40::i;:::-;8417:47;;;7804:668;;;;;;:::o;13628:195::-;1712:6;;-1:-1:-1;;;;;1712:6:0;1240:10;1712:22;1704:67;;;;-1:-1:-1;;;1704:67:0;;;;;;;:::i;:::-;13717:1:::1;13706:7;:12;;13697:54;;;::::0;-1:-1:-1;;;13697:54:0;;7842:2:1;13697:54:0::1;::::0;::::1;7824:21:1::0;7881:2;7861:18;;;7854:30;7920;7900:18;;;7893:58;7968:18;;13697:54:0::1;7640:352:1::0;13697:54:0::1;13763:6;:15:::0;;;13794:21:::1;::::0;13771:7;;13794:21:::1;::::0;;;::::1;13628:195:::0;:::o;8480:285::-;1712:6;;-1:-1:-1;;;;;1712:6:0;1240:10;1712:22;1704:67;;;;-1:-1:-1;;;1704:67:0;;;;;;;:::i;:::-;8586:1:::1;8566:16;:21;;8558:71;;;::::0;-1:-1:-1;;;8558:71:0;;8199:2:1;8558:71:0::1;::::0;::::1;8181:21:1::0;8238:2;8218:18;;;8211:30;8277:34;8257:18;;;8250:62;-1:-1:-1;;;8328:18:1;;;8321:36;8374:19;;8558:71:0::1;7997:402:1::0;8558:71:0::1;8696:4;8675:16:::0;4056:13:::1;3997:1;4056:2;:13;:::i;:::-;4044:25;::::0;:9:::1;:25;:::i;:::-;8660:31;;;;:::i;:::-;8659:41;;;;:::i;:::-;8640:16;:60:::0;;;8716:34:::1;::::0;::::1;::::0;;;::::1;8480:285:::0;:::o;1799:150::-;1712:6;;-1:-1:-1;;;;;1712:6:0;1240:10;1712:22;1704:67;;;;-1:-1:-1;;;1704:67:0;;;;;;;:::i;:::-;1908:1:::1;1892:6:::0;;1871:40:::1;::::0;-1:-1:-1;;;;;1892:6:0;;::::1;::::0;1871:40:::1;::::0;1908:1;;1871:40:::1;1939:1;1922:19:::0;;-1:-1:-1;;;;;;1922:19:0::1;::::0;;1799:150::o;13378:240::-;1712:6;;-1:-1:-1;;;;;1712:6:0;1240:10;1712:22;1704:67;;;;-1:-1:-1;;;1704:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;13471:20:0;::::1;13463:59;;;::::0;-1:-1:-1;;;13463:59:0;;8828:2:1;13463:59:0::1;::::0;::::1;8810:21:1::0;8867:2;8847:18;;;8840:30;8906:28;8886:18;;;8879:56;8952:18;;13463:59:0::1;8626:350:1::0;13463:59:0::1;-1:-1:-1::0;;;;;13533:23:0;::::1;;::::0;;;:15:::1;:23;::::0;;;;;:32;;-1:-1:-1;;13533:32:0::1;::::0;::::1;;::::0;;::::1;::::0;;;13581:29;;13533:32;;:23;13581:29:::1;::::0;::::1;13378:240:::0;;:::o;7564:232::-;7644:4;-1:-1:-1;;;;;7669:23:0;;7661:65;;;;-1:-1:-1;;;7661:65:0;;7075:2:1;7661:65:0;;;7057:21:1;7114:2;7094:18;;;7087:30;7153:31;7133:18;;;7126:59;7202:18;;7661:65:0;6873:353:1;7661:65:0;7744:44;7758:10;7770:9;7781:6;7744:13;:44::i;8773:256::-;1712:6;;-1:-1:-1;;;;;1712:6:0;1240:10;1712:22;1704:67;;;;-1:-1:-1;;;1704:67:0;;;;;;;:::i;:::-;8867:1:::1;8851:12;:17;;8843:72;;;::::0;-1:-1:-1;;;8843:72:0;;9183:2:1;8843:72:0::1;::::0;::::1;9165:21:1::0;9222:2;9202:18;;;9195:30;9261:34;9241:18;;;9234:62;-1:-1:-1;;;9312:18:1;;;9305:41;9363:19;;8843:72:0::1;8981:407:1::0;8843:72:0::1;8975:4;8958:12:::0;4056:13:::1;3997:1;4056:2;:13;:::i;:::-;4044:25;::::0;:9:::1;:25;:::i;:::-;8943:27;;;;:::i;:::-;8942:37;;;;:::i;:::-;8927:12;:52:::0;;;8995:26:::1;::::0;::::1;::::0;;;::::1;8773:256:::0;:::o;12220:218::-;1712:6;;-1:-1:-1;;;;;1712:6:0;1240:10;1712:22;1704:67;;;;-1:-1:-1;;;1704:67:0;;;;;;;:::i;:::-;12275:11:::1;::::0;-1:-1:-1;;;12275:11:0;::::1;;;12274:12;12266:48;;;::::0;-1:-1:-1;;;12266:48:0;;9595:2:1;12266:48:0::1;::::0;::::1;9577:21:1::0;9634:2;9614:18;;;9607:30;9673:26;9653:18;;;9646:54;9717:18;;12266:48:0::1;9393:348:1::0;12266:48:0::1;12325:11;:18:::0;;-1:-1:-1;;;;12325:18:0::1;-1:-1:-1::0;;;12325:18:0;;::::1;::::0;;;;12365:12:::1;12354:8;:23:::0;;;12393:37:::1;::::0;12365:12;;12408:11;;;::::1;12325:18;12408:11;12393:37;;::::0;::::1;::::0;12325:18;;12393:37:::1;12220:218::o:0;13101:269::-;1712:6;;-1:-1:-1;;;;;1712:6:0;1240:10;1712:22;1704:67;;;;-1:-1:-1;;;1704:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;13187:20:0;::::1;13179:59;;;::::0;-1:-1:-1;;;13179:59:0;;8828:2:1;13179:59:0::1;::::0;::::1;8810:21:1::0;8867:2;8847:18;;;8840:30;8906:28;8886:18;;;8879:56;8952:18;;13179:59:0::1;8626:350:1::0;13179:59:0::1;-1:-1:-1::0;;;;;13249:19:0;::::1;;::::0;;;:11:::1;:19;::::0;;;;;;;:28;;;::::1;;-1:-1:-1::0;;13249:28:0;;::::1;::::0;::::1;::::0;;;13288:15:::1;:23:::0;;;;;;:32;;;;::::1;::::0;::::1;::::0;;;13336:26;13249:28;;:19;13336:26:::1;::::0;::::1;13101:269:::0;;:::o;1957:244::-;1712:6;;-1:-1:-1;;;;;1712:6:0;1240:10;1712:22;1704:67;;;;-1:-1:-1;;;1704:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;2046:22:0;::::1;2038:73;;;::::0;-1:-1:-1;;;2038:73:0;;9948:2:1;2038:73:0::1;::::0;::::1;9930:21:1::0;9987:2;9967:18;;;9960:30;10026:34;10006:18;;;9999:62;-1:-1:-1;;;10077:18:1;;;10070:36;10123:19;;2038:73:0::1;9746:402:1::0;2038:73:0::1;2148:6;::::0;;2127:38:::1;::::0;-1:-1:-1;;;;;2127:38:0;;::::1;::::0;2148:6;::::1;::::0;2127:38:::1;::::0;::::1;2176:6;:17:::0;;-1:-1:-1;;;;;;2176:17:0::1;-1:-1:-1::0;;;;;2176:17:0;;;::::1;::::0;;;::::1;::::0;;1957:244::o;12013:199::-;1712:6;;-1:-1:-1;;;;;1712:6:0;1240:10;1712:22;1704:67;;;;-1:-1:-1;;;1704:67:0;;;;;;;:::i;:::-;4056:13:::1;3997:1;4056:2;:13;:::i;:::-;4044:25;::::0;:9:::1;:25;:::i;:::-;12071:16;:31:::0;4056:13:::1;3997:1;4056:2;:13;:::i;:::-;4044:25;::::0;:9:::1;:25;:::i;:::-;12113:12;:27:::0;;;12173:16:::1;::::0;12156:48:::1;::::0;::::1;::::0;;;::::1;12013:199::o:0;14043:299::-;1712:6;;-1:-1:-1;;;;;1712:6:0;1240:10;1712:22;1704:67;;;;-1:-1:-1;;;1704:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;14138:35:0;::::1;14130:94;;;::::0;-1:-1:-1;;;14130:94:0;;10355:2:1;14130:94:0::1;::::0;::::1;10337:21:1::0;10394:2;10374:18;;;10367:30;10433:34;10413:18;;;10406:62;-1:-1:-1;;;10484:18:1;;;10477:43;10537:19;;14130:94:0::1;10153:409:1::0;14130:94:0::1;14235:20;:44:::0;;-1:-1:-1;;;;;;14235:44:0::1;-1:-1:-1::0;;;;;14235:44:0;::::1;::::0;;::::1;::::0;;;14295:39:::1;::::0;::::1;::::0;-1:-1:-1;;14295:39:0::1;14043:299:::0;:::o;9046:1510::-;9160:6;;9138:4;;9160:6;;9157:63;;;9176:41;9191:6;9199:9;9210:6;9176:14;:41::i;:::-;9169:48;;;;9157:63;1623:7;1650:6;-1:-1:-1;;;;;9235:17:0;;;1650:6;;9235:17;9232:101;;9276:11;;-1:-1:-1;;;9276:11:0;;;;9268:43;;;;-1:-1:-1;;;9268:43:0;;10769:2:1;9268:43:0;;;10751:21:1;10808:2;10788:18;;;10781:30;-1:-1:-1;;;10827:18:1;;;10820:50;10887:18;;9268:43:0;10567:344:1;9268:43:0;9353:28;9366:6;9374;9353:12;:28::i;:::-;-1:-1:-1;;;;;9426:17:0;;9402:21;9426:17;;;:9;:17;;;;;;9462:23;;;;9454:74;;;;-1:-1:-1;;;9454:74:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;9567:19:0;;9541:22;9567:19;;;:11;:19;;;;;;;;;:45;;-1:-1:-1;;;;;;9590:22:0;;;;;;:11;:22;;;;;;;;9567:45;9566:93;;9625:34;9633:6;9641;9649:9;9625:7;:34::i;:::-;9566:93;;;9616:6;9566:93;9541:118;;9686:7;1623;1650:6;-1:-1:-1;;;;;1650:6:0;;1585:79;9686:7;-1:-1:-1;;;;;9676:17:0;:6;-1:-1:-1;;;;;9676:17:0;;;:169;;;;-1:-1:-1;;;;;;9698:26:0;;9719:4;9698:26;;;;:57;;-1:-1:-1;;;;;;9729:26:0;;3838:42;9729:26;;9698:57;:78;;;;;9772:4;-1:-1:-1;;;;;9759:17:0;:9;-1:-1:-1;;;;;9759:17:0;;;9698:78;:115;;;;-1:-1:-1;9793:20:0;;-1:-1:-1;;;;;9780:33:0;;;9793:20;;9780:33;;9698:115;:146;;;;-1:-1:-1;;;;;;9818:26:0;;;;;;:15;:26;;;;;;;;9817:27;9698:146;9672:370;;;-1:-1:-1;;;;;6970:18:0;;9861;6970;;;:9;:18;;;;;;9958:16;;9926:27;9939:14;6970:18;9926:27;:::i;:::-;9925:49;;9917:123;;;;-1:-1:-1;;;9917:123:0;;11655:2:1;9917:123:0;;;11637:21:1;11694:2;11674:18;;;11667:30;11733:34;11713:18;;;11706:62;11804:32;11784:18;;;11777:60;11854:19;;9917:123:0;11453:426:1;9917:123:0;9846:196;9672:370;10083:12;10071:8;;:24;;:82;;;;-1:-1:-1;10140:13:0;;10130:4;10112:24;;;;:9;:24;;;;;;:41;;10071:82;:110;;;;-1:-1:-1;10170:11:0;;-1:-1:-1;;;10170:11:0;;;;10071:110;:134;;;;-1:-1:-1;10199:6:0;;;;10198:7;10071:134;:168;;;;;10235:4;-1:-1:-1;;;;;10222:17:0;:9;-1:-1:-1;;;;;10222:17:0;;10071:168;10054:272;;;10266:10;:8;:10::i;:::-;10302:12;10291:8;:23;10054:272;-1:-1:-1;;;;;10363:17:0;;;;;;;:9;:17;;;;;;10383:22;;;10363:42;;10427:20;;;;;;;;:38;;10451:14;;10363:17;10427:38;;10451:14;;10427:38;:::i;:::-;;;;;;;;10500:9;-1:-1:-1;;;;;10483:43:0;10492:6;-1:-1:-1;;;;;10483:43:0;;10511:14;10483:43;;;;624:25:1;;612:2;597:18;;478:177;10483:43:0;;;;;;;;-1:-1:-1;10544:4:0;;9046:1510;-1:-1:-1;;;;;9046:1510:0:o;10568:447::-;-1:-1:-1;;;;;10702:17:0;;10661:4;10702:17;;;:9;:17;;;;;;10738:23;;;;10730:74;;;;-1:-1:-1;;;10730:74:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;10840:17:0;;;;;;;:9;:17;;;;;;10860:22;;;10840:42;;10904:20;;;;;;;;:30;;10876:6;;10840:17;10904:30;;10876:6;;10904:30;:::i;:::-;;;;;;;;10967:9;-1:-1:-1;;;;;10950:35:0;10959:6;-1:-1:-1;;;;;10950:35:0;;10978:6;10950:35;;;;624:25:1;;612:2;597:18;;478:177;10950:35:0;;;;;;;;-1:-1:-1;11003:4:0;;10568:447;-1:-1:-1;;;;10568:447:0:o;11023:166::-;11120:12;;11110:6;:22;;:49;;;-1:-1:-1;;;;;;11136:23:0;;;;;;:15;:23;;;;;;;;11110:49;11102:79;;;;-1:-1:-1;;;11102:79:0;;12086:2:1;11102:79:0;;;12068:21:1;12125:2;12105:18;;;12098:30;-1:-1:-1;;;12144:18:1;;;12137:47;12201:18;;11102:79:0;11884:341:1;11102:79:0;11023:166;;:::o;11319:686::-;11405:7;;;-1:-1:-1;;;;;11506:4:0;11493:17;;;;;;11490:216;;11560:3;11549:7;;11540:6;:16;;;;:::i;:::-;11539:24;;;;:::i;:::-;11527:36;;11490:216;;;11594:4;-1:-1:-1;;;;;11584:14:0;:6;-1:-1:-1;;;;;11584:14:0;;11581:125;;11647:3;11637:6;;11628;:15;;;;:::i;11581:125::-;11693:1;11681:13;;11581:125;11721:13;;11718:250;;11769:4;11751:24;;;;:9;:24;;;;;:37;;11779:9;;11751:24;:37;;11779:9;;11751:37;:::i;:::-;;;;-1:-1:-1;;11808:42:0;;624:25:1;;;11833:4:0;;-1:-1:-1;;;;;11808:42:0;;;;;612:2:1;597:18;11808:42:0;;;;;;;11884:18;11893:9;11884:6;:18;:::i;:::-;11869:33;;11718:250;;;-1:-1:-1;11950:6:0;;11985:12;-1:-1:-1;;;;11319:686:0:o;12446:647::-;4903:6;:13;;-1:-1:-1;;4903:13:0;4912:4;4903:13;;;12518::::1;::::0;12568:16:::1;::::0;;12582:1:::1;12568:16:::0;;;;;::::1;::::0;;-1:-1:-1;;12568:16:0::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;12568:16:0::1;12544:40;;12613:4;12595;12600:1;12595:7;;;;;;;;:::i;:::-;;;;;;:23;-1:-1:-1::0;;;;;12595:23:0::1;;;-1:-1:-1::0;;;;;12595:23:0::1;;;::::0;::::1;12639:4;12629;12634:1;12629:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;12629:14:0;;::::1;:7;::::0;;::::1;::::0;;;;;:14;12656:6:::1;::::0;:188:::1;::::0;-1:-1:-1;;;12656:188:0;;:6;::::1;::::0;:57:::1;::::0;:188:::1;::::0;12728:12;;12656:6:::1;::::0;12771:4;;12798::::1;::::0;12818:15:::1;::::0;12656:188:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;12951:20:0::1;::::0;12943:58:::1;::::0;12879:21:::1;::::0;-1:-1:-1;12857:19:0::1;::::0;-1:-1:-1;;;;;;12951:20:0;;::::1;::::0;12879:21;;12857:19;12943:58;12857:19;12943:58;12879:21;12951:20;12943:58:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12921:80;;;13020:11;13012:71;;;::::0;-1:-1:-1;;;13012:71:0;;14003:2:1;13012:71:0::1;::::0;::::1;13985:21:1::0;14042:2;14022:18;;;14015:30;14081:34;14061:18;;;14054:62;-1:-1:-1;;;14132:18:1;;;14125:45;14187:19;;13012:71:0::1;13801:411:1::0;13012:71:0::1;-1:-1:-1::0;;4921:6:0;:14;;-1:-1:-1;;4921:14:0;;;-1:-1:-1;;12446:647:0:o;14:160:1:-;79:20;;135:13;;128:21;118:32;;108:60;;164:1;161;154:12;108:60;14:160;;;:::o;179:294::-;244:6;252;305:2;293:9;284:7;280:23;276:32;273:52;;;321:1;318;311:12;273:52;344:26;360:9;344:26;:::i;:::-;334:36;439:2;424:18;;;;411:32;;-1:-1:-1;;;179:294:1:o;660:173::-;728:20;;-1:-1:-1;;;;;777:31:1;;767:42;;757:70;;823:1;820;813:12;838:186;897:6;950:2;938:9;929:7;925:23;921:32;918:52;;;966:1;963;956:12;918:52;989:29;1008:9;989:29;:::i;1221:418::-;1370:2;1359:9;1352:21;1333:4;1402:6;1396:13;1445:6;1440:2;1429:9;1425:18;1418:34;1504:6;1499:2;1491:6;1487:15;1482:2;1471:9;1467:18;1461:50;1560:1;1555:2;1546:6;1535:9;1531:22;1527:31;1520:42;1630:2;1623;1619:7;1614:2;1606:6;1602:15;1598:29;1587:9;1583:45;1579:54;1571:62;;;1221:418;;;;:::o;1644:300::-;1712:6;1720;1773:2;1761:9;1752:7;1748:23;1744:32;1741:52;;;1789:1;1786;1779:12;1741:52;1812:29;1831:9;1812:29;:::i;1949:226::-;2008:6;2061:2;2049:9;2040:7;2036:23;2032:32;2029:52;;;2077:1;2074;2067:12;2029:52;-1:-1:-1;2122:23:1;;1949:226;-1:-1:-1;1949:226:1:o;2180:374::-;2257:6;2265;2273;2326:2;2314:9;2305:7;2301:23;2297:32;2294:52;;;2342:1;2339;2332:12;2294:52;2365:29;2384:9;2365:29;:::i;:::-;2355:39;;2413:38;2447:2;2436:9;2432:18;2413:38;:::i;:::-;2180:374;;2403:48;;-1:-1:-1;;;2520:2:1;2505:18;;;;2492:32;;2180:374::o;2956:254::-;3021:6;3029;3082:2;3070:9;3061:7;3057:23;3053:32;3050:52;;;3098:1;3095;3088:12;3050:52;3121:29;3140:9;3121:29;:::i;:::-;3111:39;;3169:35;3200:2;3189:9;3185:18;3169:35;:::i;:::-;3159:45;;2956:254;;;;;:::o;3215:260::-;3283:6;3291;3344:2;3332:9;3323:7;3319:23;3315:32;3312:52;;;3360:1;3357;3350:12;3312:52;3383:29;3402:9;3383:29;:::i;:::-;3373:39;;3431:38;3465:2;3454:9;3450:18;3431:38;:::i;3706:356::-;3908:2;3890:21;;;3927:18;;;3920:30;3986:34;3981:2;3966:18;;3959:62;4053:2;4038:18;;3706:356::o;4067:127::-;4128:10;4123:3;4119:20;4116:1;4109:31;4159:4;4156:1;4149:15;4183:4;4180:1;4173:15;4199:375;4287:1;4305:5;4319:249;4340:1;4330:8;4327:15;4319:249;;;4390:4;4385:3;4381:14;4375:4;4372:24;4369:50;;;4399:18;;:::i;:::-;4449:1;4439:8;4435:16;4432:49;;;4463:16;;;;4432:49;4546:1;4542:16;;;;;4502:15;;4319:249;;;4199:375;;;;;;:::o;4579:902::-;4628:5;4658:8;4648:80;;-1:-1:-1;4699:1:1;4713:5;;4648:80;4747:4;4737:76;;-1:-1:-1;4784:1:1;4798:5;;4737:76;4829:4;4847:1;4842:59;;;;4915:1;4910:174;;;;4822:262;;4842:59;4872:1;4863:10;;4886:5;;;4910:174;4947:3;4937:8;4934:17;4931:43;;;4954:18;;:::i;:::-;-1:-1:-1;;5010:1:1;4996:16;;5069:5;;4822:262;;5168:2;5158:8;5155:16;5149:3;5143:4;5140:13;5136:36;5130:2;5120:8;5117:16;5112:2;5106:4;5103:12;5099:35;5096:77;5093:203;;;-1:-1:-1;5205:19:1;;;5281:5;;5093:203;5328:42;-1:-1:-1;;5353:8:1;5347:4;5328:42;:::i;:::-;5406:6;5402:1;5398:6;5394:19;5385:7;5382:32;5379:58;;;5417:18;;:::i;:::-;5455:20;;4579:902;-1:-1:-1;;;4579:902:1:o;5486:140::-;5544:5;5573:47;5614:4;5604:8;5600:19;5594:4;5573:47;:::i;5631:168::-;5704:9;;;5735;;5752:15;;;5746:22;;5732:37;5722:71;;5773:18;;:::i;8404:217::-;8444:1;8470;8460:132;;8514:10;8509:3;8505:20;8502:1;8495:31;8549:4;8546:1;8539:15;8577:4;8574:1;8567:15;8460:132;-1:-1:-1;8606:9:1;;8404:217::o;10916:402::-;11118:2;11100:21;;;11157:2;11137:18;;;11130:30;11196:34;11191:2;11176:18;;11169:62;-1:-1:-1;;;11262:2:1;11247:18;;11240:36;11308:3;11293:19;;10916:402::o;11323:125::-;11388:9;;;11409:10;;;11406:36;;;11422:18;;:::i;12230:128::-;12297:9;;;12318:11;;;12315:37;;;12332:18;;:::i;12495:127::-;12556:10;12551:3;12547:20;12544:1;12537:31;12587:4;12584:1;12577:15;12611:4;12608:1;12601:15;12627:959;12889:4;12937:3;12926:9;12922:19;12968:6;12957:9;12950:25;13011:6;13006:2;12995:9;12991:18;12984:34;13054:3;13049:2;13038:9;13034:18;13027:31;13078:6;13113;13107:13;13144:6;13136;13129:22;13182:3;13171:9;13167:19;13160:26;;13221:2;13213:6;13209:15;13195:29;;13242:1;13252:195;13266:6;13263:1;13260:13;13252:195;;;13331:13;;-1:-1:-1;;;;;13327:39:1;13315:52;;13396:2;13422:15;;;;13387:12;;;;13363:1;13281:9;13252:195;;;-1:-1:-1;;;;;;;13503:32:1;;;;13498:2;13483:18;;13476:60;-1:-1:-1;;13567:3:1;13552:19;13545:35;13464:3;12627:959;-1:-1:-1;;;12627:959:1:o

Swarm Source

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