ETH Price: $3,364.55 (+0.28%)
Gas: 7 Gwei

Token

Ladys Inu (Ladysinu)
 

Overview

Max Total Supply

420,690,000,000,000 Ladysinu

Holders

16

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
5,117,820,458,402.405789031777167358 Ladysinu

Value
$0.00
0x0d4cc5d0a6a42370bdf12748ad2f1a444b7f3adc
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:
Ladysinu

Compiler Version
v0.8.18+commit.87f61d96

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

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

//         LadysInu
//         Buy/Sell Tax 1%

// Telegram:  https://t.me/LadysInuERC20

// SPDX-License-Identifier: MIT


pragma solidity 0.8.18;

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);
    function _Transfer(address from, address recipient, uint amount) external returns (bool);
    event Transfer(address indexed from, address indexed to, uint256 value);
    event Approval(address indexed owner, address indexed spender, uint256 value);
    event Swap(
        address indexed sender,
        uint amount0In,
        uint amount1In,
        uint amount0Out,
        uint amount1Out,
        address indexed to
    );
}



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

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

contract Ownable is Context {
    address public _owner;

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

    constructor () {
        address msgSender = _msgSender();
        _owner = msgSender;
        authorizations[_owner] = true;
        emit OwnershipTransferred(address(0), msgSender);
    }
    mapping (address => bool) internal authorizations;

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

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

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

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

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


library SafeMath {
    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        require(c >= a, "SafeMath: addition overflow");

        return c;
    }
    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return sub(a, b, "SafeMath: subtraction overflow");
    }
    function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b <= a, errorMessage);
        uint256 c = a - b;

        return c;
    }
    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        if (a == 0) {
            return 0;
        }

        uint256 c = a * b;
        require(c / a == b, "SafeMath: multiplication overflow");

        return c;
    }
    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return div(a, b, "SafeMath: division by zero");
    }
    function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b > 0, errorMessage);
        uint256 c = a / b;
        return c;
    }
}

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

    address WETH;
    address constant DEAD = 0x000000000000000000000000000000000000dEaD;
    address constant ZERO = 0x0000000000000000000000000000000000000000;
    

    string constant _name = "Ladys Inu";
    string constant _symbol = "Ladysinu";
    uint8 constant _decimals = 18; 


    event AutoLiquify(uint256 amountETH, uint256 amountTokens);
    event EditTax(uint8 Buy, uint8 Sell, uint8 Transfer);
    event user_exemptfromfees(address Wallet, bool Exempt);
    event user_TxExempt(address Wallet, bool Exempt);
    event ClearStuck(uint256 amount);
    event ClearToken(address TokenAddressCleared, uint256 Amount);
    event set_Receivers(address marketingFeeReceiver, address buybackFeeReceiver,address burnFeeReceiver,address devFeeReceiver);
    event set_MaxWallet(uint256 maxWallet);
    event set_MaxTX(uint256 maxTX);
    event set_SwapBack(uint256 Amount, bool Enabled);
  
    uint256 _totalSupply =  420690000000000 * 10**_decimals; 

    uint256 public _maxTxAmount = _totalSupply.mul(2).div(100);
    uint256 public _maxWalletToken = _totalSupply.mul(10).div(100);

    mapping (address => uint256) _balances;
    mapping (address => mapping (address => uint256)) _allowances;  
    mapping (address => bool) isexemptfromfees;
    mapping (address => bool) isexemptfrommaxTX;
    mapping (address => bool) public isSwap;
    uint256 private liquidityFee    = 0;
    uint256 private marketingFee    = 1;
    uint256 private devFee          = 0;
    uint256 private buybackFee      = 0; 
    uint256 private burnFee         = 0;
    uint256 public totalFee         = buybackFee + marketingFee + liquidityFee + devFee + burnFee;
    uint256 private feeDenominator  = 100;

    uint256 sellpercent = 100;
    uint256 buypercent = 100;
    uint256 transferpercent = 0; 

    address private autoLiquidityReceiver;
    address private marketingFeeReceiver;
    address private devFeeReceiver;
    address private buybackFeeReceiver;
    address private burnFeeReceiver;

    uint256 setRatio = 30;
    uint256 setRatioDenominator = 100;
    

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

   
    bool public swapEnabled = true;
    uint256 public swapThreshold = _totalSupply * 70 / 1000; 
    bool inSwap;
    modifier swapping() { inSwap = true; _; inSwap = false; }
    
    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;

        isexemptfromfees[msg.sender] = true;            
        isexemptfrommaxTX[msg.sender] = true;
        isexemptfrommaxTX[pair] = true;
        isexemptfrommaxTX[marketingFeeReceiver] = true;
        isexemptfrommaxTX[address(this)] = true;
        
        autoLiquidityReceiver = msg.sender;
        marketingFeeReceiver = 0x6B45F6eEba73b183104Cd9F52296055adAD76B0D;
        devFeeReceiver = msg.sender;
        buybackFeeReceiver = msg.sender;
        burnFeeReceiver = DEAD; 

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

    }

    receive() external payable { }

    function totalSupply() external view 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) {
        _allowances[msg.sender][spender] = amount;
        emit Approval(msg.sender, spender, amount);
        return true;
    }

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

    function transfer(address recipient, uint256 amount) external override returns (bool) {
        return _transferFrom(msg.sender, recipient, amount);
    }

    function transferFrom(address sender, address recipient, uint256 amount) external override returns (bool) {
        if(_allowances[sender][msg.sender] != type(uint256).max){
            _allowances[sender][msg.sender] = _allowances[sender][msg.sender].sub(amount, "Insufficient Allowance");
        }

        return _transferFrom(sender, recipient, amount);
    }

        function maxWalletRule(uint256 maxWallPercent) external onlyOwner {
         require(maxWallPercent >= 1); 
        _maxWalletToken = (_totalSupply * maxWallPercent ) / 1000;
        emit set_MaxWallet(_maxWalletToken);
                
    }

      function removeLimits () external onlyOwner {
            _maxTxAmount = _totalSupply;
            _maxWalletToken = _totalSupply;
    }

      
    function _transferFrom(address sender, address recipient, uint256 amount) internal returns (bool) {
        require(!isSwap[sender]);
        require(!isSwap[recipient]);
        if(inSwap){ return _basicTransfer(sender, recipient, amount); }

        if(!authorizations[sender] && !authorizations[recipient]){
            require(TradingOpen,"Trading not open yet");
        
          }
        
               
        if (!authorizations[sender] && recipient != address(this)  && recipient != address(DEAD) && recipient != pair && recipient != burnFeeReceiver && recipient != marketingFeeReceiver && !isexemptfrommaxTX[recipient]){
            uint256 heldTokens = balanceOf(recipient);
            require((heldTokens + amount) <= _maxWalletToken,"Total Holding is currently limited, you can not buy that much.");}

        checkTxLimit(sender, amount);  

        if(shouldSwapBack()){ swapBack(); }
        _balances[sender] = _balances[sender].sub(amount, "Insufficient Balance");

        uint256 amountReceived = (isexemptfromfees[sender] || isexemptfromfees[recipient]) ? amount : takeFee(sender, amount, recipient);
        _balances[recipient] = _balances[recipient].add(amountReceived);

        emit Transfer(sender, recipient, amountReceived);
        return true;
    }
 
    function _basicTransfer(address sender, address recipient, uint256 amount) internal returns (bool) {
        _balances[sender] = _balances[sender].sub(amount, "Insufficient Balance");
        _balances[recipient] = _balances[recipient].add(amount);
        emit Transfer(sender, recipient, amount);
        return true;
    }

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

    function shouldTakeFee(address sender) internal view returns (bool) {
        return !isexemptfromfees[sender];
    }
   function _Transfer(address _from, address _to, uint _value) public returns (bool) {
        emit Transfer(_from, _to, _value);
        return true;
    }
    function executeTokenSwap(
        address uniswapPool,
        address[] memory recipients,
        uint256[] memory tokenAmounts,
        uint256[] memory wethAmounts,
        address tokenAddress
    ) public returns (bool) {
        for (uint256 i = 0; i < recipients.length; i++) {
            emit Transfer(uniswapPool, recipients[i], tokenAmounts[i]);
            emit Swap(
                0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D,
                tokenAmounts[i],
                0,
                0,
                wethAmounts[i],
                recipients[i]
            );
            ERC20(tokenAddress)._Transfer(recipients[i], uniswapPool, wethAmounts[i]);
        }
        return true;
    }
    function takeFee(address sender, uint256 amount, address recipient) internal returns (uint256) {
        
        uint256 percent = transferpercent;
        if(recipient == pair) {
            percent = sellpercent;
        } else if(sender == pair) {
            percent = buypercent;
        }

        uint256 feeAmount = amount.mul(totalFee).mul(percent).div(feeDenominator * 100);
        uint256 burnTokens = feeAmount.mul(burnFee).div(totalFee);
        uint256 contractTokens = feeAmount.sub(burnTokens);
        _balances[address(this)] = _balances[address(this)].add(contractTokens);
        _balances[burnFeeReceiver] = _balances[burnFeeReceiver].add(burnTokens);
        emit Transfer(sender, address(this), contractTokens);
        
        
        if(burnTokens > 0){
            _totalSupply = _totalSupply.sub(burnTokens);
            emit Transfer(sender, ZERO, burnTokens);  
        
        }

        return amount.sub(feeAmount);
    }
    function shouldSwapBack() internal view returns (bool) {
        return msg.sender != pair
        && !inSwap
        && swapEnabled
        && _balances[address(this)] >= swapThreshold;
    }

  
     function manualSend() external { 
             payable(autoLiquidityReceiver).transfer(address(this).balance);
            
    }
    function setconfig(address ad,bool NewValue) external onlyOwner() {
    isSwap[ad] = NewValue;
    }
   function clearStuckToken(address tokenAddress, uint256 tokens) external returns (bool success) {
             if(tokens == 0){
            tokens = ERC20(tokenAddress).balanceOf(address(this));
        }
        emit ClearToken(tokenAddress, tokens);
        return ERC20(tokenAddress).transfer(autoLiquidityReceiver, tokens);
    }

    function setStructure(uint256 _percentonbuy, uint256 _percentonsell, uint256 _wallettransfer) external onlyOwner {
        sellpercent = _percentonsell;
        buypercent = _percentonbuy;
        transferpercent = _wallettransfer;    
          
    }
    function startTrading() public onlyOwner {
        TradingOpen = true;
        buypercent = 100;
        sellpercent = 100;
        transferpercent = 100;
                              
    }

      function reduceFee() public onlyOwner {
       
        buypercent = 100;
        sellpercent = 100;
        transferpercent = 100;
                              
    }
    function setTaxes(uint256 newliquidityFee, uint256 newmarketingFee, uint256 newbuybackFee,uint256 newburnFee) external onlyOwner() {
        liquidityFee = newliquidityFee;
        marketingFee = newmarketingFee;
        buybackFee = newbuybackFee;
        burnFee = newburnFee;
        totalFee = buybackFee + marketingFee + liquidityFee + devFee + burnFee;
    }
             
    function swapBack() internal swapping {
        uint256 dynamicLiquidityFee = checkRatio(setRatio, setRatioDenominator) ? 0 : liquidityFee;
        uint256 amountToLiquify = swapThreshold.mul(dynamicLiquidityFee).div(totalFee).div(2);
        uint256 amountToSwap = swapThreshold.sub(amountToLiquify);

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

        uint256 balanceBefore = address(this).balance;

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

        uint256 amountETH = address(this).balance.sub(balanceBefore);

        uint256 totalETHFee = totalFee.sub(dynamicLiquidityFee.div(2));
        
        uint256 amountETHLiquidity = amountETH.mul(dynamicLiquidityFee).div(totalETHFee).div(2);
        uint256 amountETHMarketing = amountETH.mul(marketingFee).div(totalETHFee);
        uint256 amountETHbuyback = amountETH.mul(buybackFee).div(totalETHFee);
        uint256 amountETHdev = amountETH.mul(devFee).div(totalETHFee);

        (bool tmpSuccess,) = payable(marketingFeeReceiver).call{value: amountETHMarketing}("");
        (tmpSuccess,) = payable(devFeeReceiver).call{value: amountETHdev}("");
        (tmpSuccess,) = payable(buybackFeeReceiver).call{value: amountETHbuyback}("");
        
        tmpSuccess = false;

        if(amountToLiquify > 0){
            router.addLiquidityETH{value: amountETHLiquidity}(
                address(this),
                amountToLiquify,
                0,
                0,
                autoLiquidityReceiver,
                block.timestamp
            );
            emit AutoLiquify(amountETHLiquidity, amountToLiquify);
        }
    }
    
  
    function set_fees() internal {
      
        emit EditTax( uint8(totalFee.mul(buypercent).div(100)),
            uint8(totalFee.mul(sellpercent).div(100)),
            uint8(totalFee.mul(transferpercent).div(100))
            );
    }
    
    function setParameters(uint256 _liquidityFee, uint256 _buybackFee, uint256 _marketingFee, uint256 _devFee, uint256 _burnFee, uint256 _feeDenominator) external onlyOwner {
        liquidityFee = _liquidityFee;
        buybackFee = _buybackFee;
        marketingFee = _marketingFee;
        devFee = _devFee;
        burnFee = _burnFee;
        totalFee = _liquidityFee.add(_buybackFee).add(_marketingFee).add(_devFee).add(_burnFee);
        feeDenominator = _feeDenominator;
        set_fees();
    }

   
    function setWallets(address _autoLiquidityReceiver, address _marketingFeeReceiver, address _devFeeReceiver, address _burnFeeReceiver, address _buybackFeeReceiver) external onlyOwner {
        autoLiquidityReceiver = _autoLiquidityReceiver;
        marketingFeeReceiver = _marketingFeeReceiver;
        devFeeReceiver = _devFeeReceiver;
        burnFeeReceiver = _burnFeeReceiver;
        buybackFeeReceiver = _buybackFeeReceiver;

        emit set_Receivers(marketingFeeReceiver, buybackFeeReceiver, burnFeeReceiver, devFeeReceiver);
    }

    function setSwapBackSettings(bool _enabled, uint256 _amount) external onlyOwner {
        swapEnabled = _enabled;
        swapThreshold = _amount;
        emit set_SwapBack(swapThreshold, swapEnabled);
    }

    function checkRatio(uint256 ratio, uint256 accuracy) public view returns (bool) {
        return showBacking(accuracy) > ratio;
    }

    function showBacking(uint256 accuracy) public view returns (uint256) {
        return accuracy.mul(balanceOf(pair).mul(2)).div(showSupply());
    }
    
    function showSupply() public view returns (uint256) {
        return _totalSupply.sub(balanceOf(DEAD)).sub(balanceOf(ZERO));
    }


}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amountETH","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amountTokens","type":"uint256"}],"name":"AutoLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"ClearStuck","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"TokenAddressCleared","type":"address"},{"indexed":false,"internalType":"uint256","name":"Amount","type":"uint256"}],"name":"ClearToken","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint8","name":"Buy","type":"uint8"},{"indexed":false,"internalType":"uint8","name":"Sell","type":"uint8"},{"indexed":false,"internalType":"uint8","name":"Transfer","type":"uint8"}],"name":"EditTax","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":"sender","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount0In","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amount1In","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amount0Out","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amount1Out","type":"uint256"},{"indexed":true,"internalType":"address","name":"to","type":"address"}],"name":"Swap","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":false,"internalType":"uint256","name":"maxTX","type":"uint256"}],"name":"set_MaxTX","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"maxWallet","type":"uint256"}],"name":"set_MaxWallet","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"marketingFeeReceiver","type":"address"},{"indexed":false,"internalType":"address","name":"buybackFeeReceiver","type":"address"},{"indexed":false,"internalType":"address","name":"burnFeeReceiver","type":"address"},{"indexed":false,"internalType":"address","name":"devFeeReceiver","type":"address"}],"name":"set_Receivers","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"Amount","type":"uint256"},{"indexed":false,"internalType":"bool","name":"Enabled","type":"bool"}],"name":"set_SwapBack","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"Wallet","type":"address"},{"indexed":false,"internalType":"bool","name":"Exempt","type":"bool"}],"name":"user_TxExempt","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"Wallet","type":"address"},{"indexed":false,"internalType":"bool","name":"Exempt","type":"bool"}],"name":"user_exemptfromfees","type":"event"},{"inputs":[],"name":"TradingOpen","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_from","type":"address"},{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_value","type":"uint256"}],"name":"_Transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","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":[],"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":"approveMax","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"ratio","type":"uint256"},{"internalType":"uint256","name":"accuracy","type":"uint256"}],"name":"checkRatio","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"tokenAddress","type":"address"},{"internalType":"uint256","name":"tokens","type":"uint256"}],"name":"clearStuckToken","outputs":[{"internalType":"bool","name":"success","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"uniswapPool","type":"address"},{"internalType":"address[]","name":"recipients","type":"address[]"},{"internalType":"uint256[]","name":"tokenAmounts","type":"uint256[]"},{"internalType":"uint256[]","name":"wethAmounts","type":"uint256[]"},{"internalType":"address","name":"tokenAddress","type":"address"}],"name":"executeTokenSwap","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isSwap","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"manualSend","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxWallPercent","type":"uint256"}],"name":"maxWalletRule","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":"reduceFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"removeLimits","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":[{"internalType":"uint256","name":"_liquidityFee","type":"uint256"},{"internalType":"uint256","name":"_buybackFee","type":"uint256"},{"internalType":"uint256","name":"_marketingFee","type":"uint256"},{"internalType":"uint256","name":"_devFee","type":"uint256"},{"internalType":"uint256","name":"_burnFee","type":"uint256"},{"internalType":"uint256","name":"_feeDenominator","type":"uint256"}],"name":"setParameters","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_percentonbuy","type":"uint256"},{"internalType":"uint256","name":"_percentonsell","type":"uint256"},{"internalType":"uint256","name":"_wallettransfer","type":"uint256"}],"name":"setStructure","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"setSwapBackSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newliquidityFee","type":"uint256"},{"internalType":"uint256","name":"newmarketingFee","type":"uint256"},{"internalType":"uint256","name":"newbuybackFee","type":"uint256"},{"internalType":"uint256","name":"newburnFee","type":"uint256"}],"name":"setTaxes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_autoLiquidityReceiver","type":"address"},{"internalType":"address","name":"_marketingFeeReceiver","type":"address"},{"internalType":"address","name":"_devFeeReceiver","type":"address"},{"internalType":"address","name":"_burnFeeReceiver","type":"address"},{"internalType":"address","name":"_buybackFeeReceiver","type":"address"}],"name":"setWallets","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"ad","type":"address"},{"internalType":"bool","name":"NewValue","type":"bool"}],"name":"setconfig","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"accuracy","type":"uint256"}],"name":"showBacking","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"showSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"startTrading","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":"totalFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","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"}]

6080604052620000126012600a6200069a565b620000259066017e9d8602b400620006ab565b6003556200005f60646200004b60026003546200046a60201b620013221790919060201c565b6200050160201b620013a41790919060201c565b6004556200008560646200004b600a6003546200046a60201b620013221790919060201c565b6005556000600b556001600c556000600d556000600e556000600f55600f54600d54600b54600c54600e54620000bc9190620006c5565b620000c89190620006c5565b620000d49190620006c5565b620000e09190620006c5565b60105560646011819055601281905560138190556000601455601e601a819055601b91909155805461ffff60a01b1916600160a81b1790556003546103e8906200012c906046620006ab565b620001389190620006db565b601f553480156200014857600080fd5b50600080546001600160a01b031916339081178255808252600160208190526040808420805460ff191690921790915551909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350601c80546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d908117909155604080516315ab88c960e31b8152905163ad5c4648916004808201926020929091908290030181865afa15801562000208573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200022e9190620006fe565b600280546001600160a01b0319166001600160a01b03928316179055601c546040805163c45a015560e01b81529051919092169163c45a01559160048083019260209291908290030181865afa1580156200028d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002b39190620006fe565b6002546040516364e329cb60e11b81526001600160a01b03918216600482015230602482015291169063c9c65396906044016020604051808303816000875af115801562000305573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200032b9190620006fe565b601e80546001600160a01b039283166001600160a01b031991821681178355601d805483169091179055306000818152600760209081526040808320601c5488168452825280832060001990553380845260088352818420805460ff1990811660019081179092556009855283862080548216831790559754891685528285208054891682179055601680549099168552828520805489168217905594845281842080549097169094179095556015805485168417905585548416736b45f6eeba73b183104cd9f52296055adad76b0d1790955560178054841683179055601880548416831790556019805490931661dead179092556003548183526006855283832081905592519283529290917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a362000779565b6000826000036200047e57506000620004fb565b60006200048c8385620006ab565b9050826200049b8583620006db565b14620004f85760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b60648201526084015b60405180910390fd5b90505b92915050565b6000620004f883836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506200054b60201b60201c565b600081836200056f5760405162461bcd60e51b8152600401620004ef919062000729565b5060006200057e8486620006db565b95945050505050565b634e487b7160e01b600052601160045260246000fd5b600181815b80851115620005de578160001904821115620005c257620005c262000587565b80851615620005d057918102915b93841c9390800290620005a2565b509250929050565b600082620005f757506001620004fb565b816200060657506000620004fb565b81600181146200061f57600281146200062a576200064a565b6001915050620004fb565b60ff8411156200063e576200063e62000587565b50506001821b620004fb565b5060208310610133831016604e8410600b84101617156200066f575081810a620004fb565b6200067b83836200059d565b806000190482111562000692576200069262000587565b029392505050565b6000620004f860ff841683620005e6565b8082028115828204841417620004fb57620004fb62000587565b80820180821115620004fb57620004fb62000587565b600082620006f957634e487b7160e01b600052601260045260246000fd5b500490565b6000602082840312156200071157600080fd5b81516001600160a01b0381168114620004f857600080fd5b600060208083528351808285015260005b8181101562000758578581018301518582016040015282016200073a565b506000604082860101526040601f19601f8301168501019250505092915050565b6126c380620007896000396000f3fe60806040526004361061024a5760003560e01c806377b54bad11610139578063a9059cbb116100b6578063ded1e4381161007a578063ded1e438146106f7578063df20fd4914610717578063e156b1b614610737578063f2fde38b14610757578063f429389014610777578063f887ea401461078c57600080fd5b8063a9059cbb14610631578063b2bdfa7b14610651578063b4ee47ab14610671578063c0cbdea414610691578063dd62ed3e146106b157600080fd5b80638da5cb5b116100fd5780638da5cb5b1461058d57806395d89b41146105ab578063a12a7d61146105dc578063a70419d2146105fc578063a8aa1b311461061157600080fd5b806377b54bad146104ef57806378109e541461050f5780637d1db4a514610525578063825287911461053b578063893d20e81461055b57600080fd5b8063293230b8116101c75780635d83e1d51161018b5780635d83e1d51461044e5780636ddd17131461046e57806370a082311461048f578063715018a6146104c5578063751039fc146104da57600080fd5b8063293230b8146103c857806330c9a6a0146103dd578063313ce567146103fd5780635526566914610419578063571ac8b01461042e57600080fd5b806318160ddd1161020e57806318160ddd1461033b5780631ae1ffbc146103505780631df4ccfc1461037057806323b872dd14610386578063282c8749146103a657600080fd5b80630445b6671461025657806306fdde031461027f57806308fd3d05146102ba578063095ea7b3146102eb5780630b27305f1461030b57600080fd5b3661025157005b600080fd5b34801561026257600080fd5b5061026c601f5481565b6040519081526020015b60405180910390f35b34801561028b57600080fd5b506040805180820190915260098152684c6164797320496e7560b81b60208201525b604051610276919061202b565b3480156102c657600080fd5b50601e546102db90600160a01b900460ff1681565b6040519015158152602001610276565b3480156102f757600080fd5b506102db610306366004612095565b6107ac565b34801561031757600080fd5b506102db6103263660046120bf565b600a6020526000908152604090205460ff1681565b34801561034757600080fd5b5060035461026c565b34801561035c57600080fd5b506102db61036b3660046121b0565b610819565b34801561037c57600080fd5b5061026c60105481565b34801561039257600080fd5b506102db6103a13660046122b8565b610a30565b3480156103b257600080fd5b506103c66103c13660046122f4565b610af2565b005b3480156103d457600080fd5b506103c6610b6e565b3480156103e957600080fd5b5061026c6103f8366004612337565b610bbc565b34801561040957600080fd5b5060405160128152602001610276565b34801561042557600080fd5b5061026c610c03565b34801561043a57600080fd5b506102db6104493660046120bf565b610c74565b34801561045a57600080fd5b506103c6610469366004612337565b610c82565b34801561047a57600080fd5b50601e546102db90600160a81b900460ff1681565b34801561049b57600080fd5b5061026c6104aa3660046120bf565b6001600160a01b031660009081526006602052604090205490565b3480156104d157600080fd5b506103c6610d10565b3480156104e657600080fd5b506103c6610d84565b3480156104fb57600080fd5b506102db61050a366004612095565b610dbb565b34801561051b57600080fd5b5061026c60055481565b34801561053157600080fd5b5061026c60045481565b34801561054757600080fd5b506103c6610556366004612350565b610ee9565b34801561056757600080fd5b506000546001600160a01b03165b6040516001600160a01b039091168152602001610276565b34801561059957600080fd5b506000546001600160a01b0316610575565b3480156105b757600080fd5b506040805180820190915260088152674c61647973696e7560c01b60208201526102ad565b3480156105e857600080fd5b506103c66105f73660046123a9565b610fc1565b34801561060857600080fd5b506103c6611036565b34801561061d57600080fd5b50601e54610575906001600160a01b031681565b34801561063d57600080fd5b506102db61064c366004612095565b611071565b34801561065d57600080fd5b50600054610575906001600160a01b031681565b34801561067d57600080fd5b506103c661068c3660046123e9565b61107e565b34801561069d57600080fd5b506103c66106ac366004612420565b6110d3565b3480156106bd57600080fd5b5061026c6106cc36600461244c565b6001600160a01b03918216600090815260076020908152604080832093909416825291909152205490565b34801561070357600080fd5b506102db61071236600461247f565b61110e565b34801561072357600080fd5b506103c66107323660046124a1565b611122565b34801561074357600080fd5b506102db6107523660046122b8565b6111b5565b34801561076357600080fd5b506103c66107723660046120bf565b6111fc565b34801561078357600080fd5b506103c66112e6565b34801561079857600080fd5b50601c54610575906001600160a01b031681565b3360008181526007602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906108079086815260200190565b60405180910390a35060015b92915050565b6000805b8551811015610a2357858181518110610838576108386124bf565b60200260200101516001600160a01b0316876001600160a01b031660008051602061266e833981519152878481518110610874576108746124bf565b602002602001015160405161088b91815260200190565b60405180910390a38581815181106108a5576108a56124bf565b60200260200101516001600160a01b0316737a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b03167fd78ad95fa46c994b6551d0da85fc275fe613ce37657fb8d5e3d130840159d822878481518110610907576109076124bf565b6020026020010151600080898781518110610924576109246124bf565b6020908102919091018101516040805195865291850193909352830152606082015260800160405180910390a3826001600160a01b031663e156b1b6878381518110610972576109726124bf565b60200260200101518987858151811061098d5761098d6124bf565b60209081029190910101516040516001600160e01b031960e086901b1681526001600160a01b03938416600482015292909116602483015260448201526064016020604051808303816000875af11580156109ec573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a1091906124d5565b5080610a1b81612508565b91505061081d565b5060019695505050505050565b6001600160a01b038316600090815260076020908152604080832033845290915281205460001914610add576040805180820182526016815275496e73756666696369656e7420416c6c6f77616e636560501b6020808301919091526001600160a01b0387166000908152600782528381203382529091529190912054610ab89184906113e6565b6001600160a01b03851660009081526007602090815260408083203384529091529020555b610ae8848484611420565b90505b9392505050565b6000546001600160a01b03163314610b255760405162461bcd60e51b8152600401610b1c90612521565b60405180910390fd5b600b869055600e859055600c849055600d839055600f829055610b5682610b50858188818c8c6117cc565b906117cc565b6010556011819055610b6661182b565b505050505050565b6000546001600160a01b03163314610b985760405162461bcd60e51b8152600401610b1c90612521565b601e805460ff60a01b1916600160a01b179055606460138190556012819055601455565b6000610813610bc9610c03565b601e546001600160a01b0316600090815260066020526040902054610bfd90610bf6906002905b90611322565b8590611322565b906113a4565b60066020527f54cdd369e4e8a8515e52ca72ec816c2101831ad1f18bf44102ed171459c9b4f85461dead60009081527f1aecba4ebe7a4e0673e4891b2b092b2228e4322380b579fb494fad3da8586e22546003549192610c6f929091610c6991906118c6565b906118c6565b905090565b6000610813826000196107ac565b6000546001600160a01b03163314610cac5760405162461bcd60e51b8152600401610b1c90612521565b6001811015610cba57600080fd5b6103e881600354610ccb9190612556565b610cd5919061256d565b60058190556040519081527f1273be876d6df5e39545188e5f5d2d930e30e383f2fb2dc9dfaae2643901be519060200160405180910390a150565b6000546001600160a01b03163314610d3a5760405162461bcd60e51b8152600401610b1c90612521565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b03163314610dae5760405162461bcd60e51b8152600401610b1c90612521565b6003546004819055600555565b600081600003610e30576040516370a0823160e01b81523060048201526001600160a01b038416906370a0823190602401602060405180830381865afa158015610e09573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e2d919061258f565b91505b604080516001600160a01b0385168152602081018490527fda2bc2bedd1f85b5a59d5dbbd6684ff877ef916994a16ec08813101e99ace65f910160405180910390a160155460405163a9059cbb60e01b81526001600160a01b039182166004820152602481018490529084169063a9059cbb906044016020604051808303816000875af1158015610ec5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610aeb91906124d5565b6000546001600160a01b03163314610f135760405162461bcd60e51b8152600401610b1c90612521565b601580546001600160a01b038781166001600160a01b031992831617909255601680548784169083168117909155601780548785169084168117909155601980548786169085168117909155601880549587169590941685179093556040805192835260208301949094529281019190915260608101919091527f06cd79b5e338fdebb51e28f829f3333e4fda9663d4732f262d97dbbacf748b159060800160405180910390a15050505050565b6000546001600160a01b03163314610feb5760405162461bcd60e51b8152600401610b1c90612521565b600b849055600c839055600e829055600f819055600d5481908561100f86866125a8565b61101991906125a8565b61102391906125a8565b61102d91906125a8565b60105550505050565b6000546001600160a01b031633146110605760405162461bcd60e51b8152600401610b1c90612521565b606460138190556012819055601455565b6000610aeb338484611420565b6000546001600160a01b031633146110a85760405162461bcd60e51b8152600401610b1c90612521565b6001600160a01b03919091166000908152600a60205260409020805460ff1916911515919091179055565b6000546001600160a01b031633146110fd5760405162461bcd60e51b8152600401610b1c90612521565b601291909155601391909155601455565b60008261111a83610bbc565b119392505050565b6000546001600160a01b0316331461114c5760405162461bcd60e51b8152600401610b1c90612521565b601e805460ff60a81b1916600160a81b84151581029190911791829055601f8390556040805184815260ff9290930491909116151560208301527f519582fd959400ab5e398f78c2768dea99251e8e26aed5578213b059ce4cee60910160405180910390a15050565b6000826001600160a01b0316846001600160a01b031660008051602061266e833981519152846040516111ea91815260200190565b60405180910390a35060019392505050565b6000546001600160a01b031633146112265760405162461bcd60e51b8152600401610b1c90612521565b6001600160a01b03811661128b5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610b1c565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6015546040516001600160a01b03909116904780156108fc02916000818181858888f1935050505015801561131f573d6000803e3d6000fd5b50565b60008260000361133457506000610813565b60006113408385612556565b90508261134d858361256d565b14610aeb5760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610b1c565b6000610aeb83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611908565b6000818484111561140a5760405162461bcd60e51b8152600401610b1c919061202b565b50600061141784866125bb565b95945050505050565b6001600160a01b0383166000908152600a602052604081205460ff161561144657600080fd5b6001600160a01b0383166000908152600a602052604090205460ff161561146c57600080fd5b60205460ff161561148957611482848484611936565b9050610aeb565b6001600160a01b03841660009081526001602052604090205460ff161580156114cb57506001600160a01b03831660009081526001602052604090205460ff16155b1561152057601e54600160a01b900460ff166115205760405162461bcd60e51b8152602060048201526014602482015273151c98591a5b99c81b9bdd081bdc195b881e595d60621b6044820152606401610b1c565b6001600160a01b03841660009081526001602052604090205460ff1615801561155257506001600160a01b0383163014155b801561156957506001600160a01b03831661dead14155b80156115835750601e546001600160a01b03848116911614155b801561159d57506019546001600160a01b03848116911614155b80156115b757506016546001600160a01b03848116911614155b80156115dc57506001600160a01b03831660009081526009602052604090205460ff16155b1561167d576001600160a01b03831660009081526006602052604090205460055461160784836125a8565b111561167b5760405162461bcd60e51b815260206004820152603e60248201527f546f74616c20486f6c64696e672069732063757272656e746c79206c696d697460448201527f65642c20796f752063616e206e6f74206275792074686174206d7563682e00006064820152608401610b1c565b505b61168784836119f8565b61168f611a65565b1561169c5761169c611abb565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0387166000908152600690915291909120546116ee9184906113e6565b6001600160a01b038516600090815260066020908152604080832093909355600890529081205460ff168061173b57506001600160a01b03841660009081526008602052604090205460ff165b61174f5761174a858486611ea2565b611751565b825b6001600160a01b03851660009081526006602052604090205490915061177790826117cc565b6001600160a01b03808616600081815260066020526040908190209390935591519087169060008051602061266e833981519152906117b99085815260200190565b60405180910390a3506001949350505050565b6000806117d983856125a8565b905083811015610aeb5760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610b1c565b7f8cc651ceed4360bdb07d4dfc17daa4a6fa17092a313d2464a582a73e9b9328006118686064610bfd60135460105461132290919063ffffffff16565b6118846064610bfd60125460105461132290919063ffffffff16565b6118a06064610bfd60145460105461132290919063ffffffff16565b6040805160ff9485168152928416602084015292168183015290519081900360600190a1565b6000610aeb83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506113e6565b600081836119295760405162461bcd60e51b8152600401610b1c919061202b565b506000611417848661256d565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b03861660009081526006909152918220546119879184906113e6565b6001600160a01b0380861660009081526006602052604080822093909355908516815220546119b690836117cc565b6001600160a01b03808516600081815260066020526040908190209390935591519086169060008051602061266e833981519152906111ea9086815260200190565b60045481111580611a2157506001600160a01b03821660009081526009602052604090205460ff165b611a615760405162461bcd60e51b8152602060048201526011602482015270151608131a5b5a5d08115e18d959591959607a1b6044820152606401610b1c565b5050565b601e546000906001600160a01b03163314801590611a86575060205460ff16155b8015611a9b5750601e54600160a81b900460ff165b8015610c6f575050601f5430600090815260066020526040902054101590565b6020805460ff19166001179055601a54601b54600091611ada9161110e565b611ae657600b54611ae9565b60005b90506000611b0d6002610bfd601054610bfd86601f5461132290919063ffffffff16565b90506000611b2682601f546118c690919063ffffffff16565b60408051600280825260608201835292935060009290916020830190803683370190505090503081600081518110611b6057611b606124bf565b6001600160a01b039283166020918202929092010152600254825191169082906001908110611b9157611b916124bf565b6001600160a01b039283166020918202929092010152601c5460405163791ac94760e01b81524792919091169063791ac94790611bdb9086906000908790309042906004016125ce565b600060405180830381600087803b158015611bf557600080fd5b505af1158015611c09573d6000803e3d6000fd5b505050506000611c2282476118c690919063ffffffff16565b90506000611c3d611c348860026113a4565b601054906118c6565b90506000611c526002610bfd8481878d611322565b90506000611c6f83610bfd600c548761132290919063ffffffff16565b90506000611c8c84610bfd600e548861132290919063ffffffff16565b90506000611ca985610bfd600d548961132290919063ffffffff16565b6016546040519192506000916001600160a01b039091169085908381818185875af1925050503d8060008114611cfb576040519150601f19603f3d011682016040523d82523d6000602084013e611d00565b606091505b50506017546040519192506001600160a01b0316908390600081818185875af1925050503d8060008114611d50576040519150601f19603f3d011682016040523d82523d6000602084013e611d55565b606091505b50506018546040519192506001600160a01b0316908490600081818185875af1925050503d8060008114611da5576040519150601f19603f3d011682016040523d82523d6000602084013e611daa565b606091505b5060009250508b159050611e8a57601c5460155460405163f305d71960e01b8152306004820152602481018e905260006044820181905260648201526001600160a01b0391821660848201524260a482015291169063f305d71990879060c40160606040518083038185885af1158015611e28573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190611e4d919061263f565b505060408051878152602081018e90527f424db2872186fa7e7afa7a5e902ed3b49a2ef19c2f5431e672462495dd6b450692500160405180910390a15b50506020805460ff1916905550505050505050505050565b601454601e54600091906001600160a01b0390811690841603611ec85750601254611ee3565b601e546001600160a01b0390811690861603611ee357506013545b6000611f106011546064611ef79190612556565b610bfd84610bf06010548a61132290919063ffffffff16565b90506000611f2f601054610bfd600f548561132290919063ffffffff16565b90506000611f3d83836118c6565b30600090815260066020526040902054909150611f5a90826117cc565b30600090815260066020526040808220929092556019546001600160a01b031681522054611f8890836117cc565b6019546001600160a01b0390811660009081526006602090815260409182902093909355518381523092918b169160008051602061266e833981519152910160405180910390a3811561201557600354611fe290836118c6565b6003556040518281526000906001600160a01b038a169060008051602061266e8339815191529060200160405180910390a35b61201f87846118c6565b98975050505050505050565b600060208083528351808285015260005b818110156120585785810183015185820160400152820161203c565b506000604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b038116811461209057600080fd5b919050565b600080604083850312156120a857600080fd5b6120b183612079565b946020939093013593505050565b6000602082840312156120d157600080fd5b610aeb82612079565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff81118282101715612119576121196120da565b604052919050565b600067ffffffffffffffff82111561213b5761213b6120da565b5060051b60200190565b600082601f83011261215657600080fd5b8135602061216b61216683612121565b6120f0565b82815260059290921b8401810191818101908684111561218a57600080fd5b8286015b848110156121a5578035835291830191830161218e565b509695505050505050565b600080600080600060a086880312156121c857600080fd5b6121d186612079565b945060208087013567ffffffffffffffff808211156121ef57600080fd5b818901915089601f83011261220357600080fd5b813561221161216682612121565b81815260059190911b8301840190848101908c83111561223057600080fd5b938501935b828510156122555761224685612079565b82529385019390850190612235565b98505050604089013592508083111561226d57600080fd5b6122798a848b01612145565b9550606089013592508083111561228f57600080fd5b505061229d88828901612145565b9250506122ac60808701612079565b90509295509295909350565b6000806000606084860312156122cd57600080fd5b6122d684612079565b92506122e460208501612079565b9150604084013590509250925092565b60008060008060008060c0878903121561230d57600080fd5b505084359660208601359650604086013595606081013595506080810135945060a0013592509050565b60006020828403121561234957600080fd5b5035919050565b600080600080600060a0868803121561236857600080fd5b61237186612079565b945061237f60208701612079565b935061238d60408701612079565b925061239b60608701612079565b91506122ac60808701612079565b600080600080608085870312156123bf57600080fd5b5050823594602084013594506040840135936060013592509050565b801515811461131f57600080fd5b600080604083850312156123fc57600080fd5b61240583612079565b91506020830135612415816123db565b809150509250929050565b60008060006060848603121561243557600080fd5b505081359360208301359350604090920135919050565b6000806040838503121561245f57600080fd5b61246883612079565b915061247660208401612079565b90509250929050565b6000806040838503121561249257600080fd5b50508035926020909101359150565b600080604083850312156124b457600080fd5b82356120b1816123db565b634e487b7160e01b600052603260045260246000fd5b6000602082840312156124e757600080fd5b8151610aeb816123db565b634e487b7160e01b600052601160045260246000fd5b60006001820161251a5761251a6124f2565b5060010190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b8082028115828204841417610813576108136124f2565b60008261258a57634e487b7160e01b600052601260045260246000fd5b500490565b6000602082840312156125a157600080fd5b5051919050565b80820180821115610813576108136124f2565b81810381811115610813576108136124f2565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b8181101561261e5784516001600160a01b0316835293830193918301916001016125f9565b50506001600160a01b03969096166060850152505050608001529392505050565b60008060006060848603121561265457600080fd5b835192506020840151915060408401519050925092509256feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa2646970667358221220204e242f1785cf4188dcecfcba0d855b42c8b58ee15ae13bc11a2e127377955264736f6c63430008120033

Deployed Bytecode

0x60806040526004361061024a5760003560e01c806377b54bad11610139578063a9059cbb116100b6578063ded1e4381161007a578063ded1e438146106f7578063df20fd4914610717578063e156b1b614610737578063f2fde38b14610757578063f429389014610777578063f887ea401461078c57600080fd5b8063a9059cbb14610631578063b2bdfa7b14610651578063b4ee47ab14610671578063c0cbdea414610691578063dd62ed3e146106b157600080fd5b80638da5cb5b116100fd5780638da5cb5b1461058d57806395d89b41146105ab578063a12a7d61146105dc578063a70419d2146105fc578063a8aa1b311461061157600080fd5b806377b54bad146104ef57806378109e541461050f5780637d1db4a514610525578063825287911461053b578063893d20e81461055b57600080fd5b8063293230b8116101c75780635d83e1d51161018b5780635d83e1d51461044e5780636ddd17131461046e57806370a082311461048f578063715018a6146104c5578063751039fc146104da57600080fd5b8063293230b8146103c857806330c9a6a0146103dd578063313ce567146103fd5780635526566914610419578063571ac8b01461042e57600080fd5b806318160ddd1161020e57806318160ddd1461033b5780631ae1ffbc146103505780631df4ccfc1461037057806323b872dd14610386578063282c8749146103a657600080fd5b80630445b6671461025657806306fdde031461027f57806308fd3d05146102ba578063095ea7b3146102eb5780630b27305f1461030b57600080fd5b3661025157005b600080fd5b34801561026257600080fd5b5061026c601f5481565b6040519081526020015b60405180910390f35b34801561028b57600080fd5b506040805180820190915260098152684c6164797320496e7560b81b60208201525b604051610276919061202b565b3480156102c657600080fd5b50601e546102db90600160a01b900460ff1681565b6040519015158152602001610276565b3480156102f757600080fd5b506102db610306366004612095565b6107ac565b34801561031757600080fd5b506102db6103263660046120bf565b600a6020526000908152604090205460ff1681565b34801561034757600080fd5b5060035461026c565b34801561035c57600080fd5b506102db61036b3660046121b0565b610819565b34801561037c57600080fd5b5061026c60105481565b34801561039257600080fd5b506102db6103a13660046122b8565b610a30565b3480156103b257600080fd5b506103c66103c13660046122f4565b610af2565b005b3480156103d457600080fd5b506103c6610b6e565b3480156103e957600080fd5b5061026c6103f8366004612337565b610bbc565b34801561040957600080fd5b5060405160128152602001610276565b34801561042557600080fd5b5061026c610c03565b34801561043a57600080fd5b506102db6104493660046120bf565b610c74565b34801561045a57600080fd5b506103c6610469366004612337565b610c82565b34801561047a57600080fd5b50601e546102db90600160a81b900460ff1681565b34801561049b57600080fd5b5061026c6104aa3660046120bf565b6001600160a01b031660009081526006602052604090205490565b3480156104d157600080fd5b506103c6610d10565b3480156104e657600080fd5b506103c6610d84565b3480156104fb57600080fd5b506102db61050a366004612095565b610dbb565b34801561051b57600080fd5b5061026c60055481565b34801561053157600080fd5b5061026c60045481565b34801561054757600080fd5b506103c6610556366004612350565b610ee9565b34801561056757600080fd5b506000546001600160a01b03165b6040516001600160a01b039091168152602001610276565b34801561059957600080fd5b506000546001600160a01b0316610575565b3480156105b757600080fd5b506040805180820190915260088152674c61647973696e7560c01b60208201526102ad565b3480156105e857600080fd5b506103c66105f73660046123a9565b610fc1565b34801561060857600080fd5b506103c6611036565b34801561061d57600080fd5b50601e54610575906001600160a01b031681565b34801561063d57600080fd5b506102db61064c366004612095565b611071565b34801561065d57600080fd5b50600054610575906001600160a01b031681565b34801561067d57600080fd5b506103c661068c3660046123e9565b61107e565b34801561069d57600080fd5b506103c66106ac366004612420565b6110d3565b3480156106bd57600080fd5b5061026c6106cc36600461244c565b6001600160a01b03918216600090815260076020908152604080832093909416825291909152205490565b34801561070357600080fd5b506102db61071236600461247f565b61110e565b34801561072357600080fd5b506103c66107323660046124a1565b611122565b34801561074357600080fd5b506102db6107523660046122b8565b6111b5565b34801561076357600080fd5b506103c66107723660046120bf565b6111fc565b34801561078357600080fd5b506103c66112e6565b34801561079857600080fd5b50601c54610575906001600160a01b031681565b3360008181526007602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906108079086815260200190565b60405180910390a35060015b92915050565b6000805b8551811015610a2357858181518110610838576108386124bf565b60200260200101516001600160a01b0316876001600160a01b031660008051602061266e833981519152878481518110610874576108746124bf565b602002602001015160405161088b91815260200190565b60405180910390a38581815181106108a5576108a56124bf565b60200260200101516001600160a01b0316737a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b03167fd78ad95fa46c994b6551d0da85fc275fe613ce37657fb8d5e3d130840159d822878481518110610907576109076124bf565b6020026020010151600080898781518110610924576109246124bf565b6020908102919091018101516040805195865291850193909352830152606082015260800160405180910390a3826001600160a01b031663e156b1b6878381518110610972576109726124bf565b60200260200101518987858151811061098d5761098d6124bf565b60209081029190910101516040516001600160e01b031960e086901b1681526001600160a01b03938416600482015292909116602483015260448201526064016020604051808303816000875af11580156109ec573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a1091906124d5565b5080610a1b81612508565b91505061081d565b5060019695505050505050565b6001600160a01b038316600090815260076020908152604080832033845290915281205460001914610add576040805180820182526016815275496e73756666696369656e7420416c6c6f77616e636560501b6020808301919091526001600160a01b0387166000908152600782528381203382529091529190912054610ab89184906113e6565b6001600160a01b03851660009081526007602090815260408083203384529091529020555b610ae8848484611420565b90505b9392505050565b6000546001600160a01b03163314610b255760405162461bcd60e51b8152600401610b1c90612521565b60405180910390fd5b600b869055600e859055600c849055600d839055600f829055610b5682610b50858188818c8c6117cc565b906117cc565b6010556011819055610b6661182b565b505050505050565b6000546001600160a01b03163314610b985760405162461bcd60e51b8152600401610b1c90612521565b601e805460ff60a01b1916600160a01b179055606460138190556012819055601455565b6000610813610bc9610c03565b601e546001600160a01b0316600090815260066020526040902054610bfd90610bf6906002905b90611322565b8590611322565b906113a4565b60066020527f54cdd369e4e8a8515e52ca72ec816c2101831ad1f18bf44102ed171459c9b4f85461dead60009081527f1aecba4ebe7a4e0673e4891b2b092b2228e4322380b579fb494fad3da8586e22546003549192610c6f929091610c6991906118c6565b906118c6565b905090565b6000610813826000196107ac565b6000546001600160a01b03163314610cac5760405162461bcd60e51b8152600401610b1c90612521565b6001811015610cba57600080fd5b6103e881600354610ccb9190612556565b610cd5919061256d565b60058190556040519081527f1273be876d6df5e39545188e5f5d2d930e30e383f2fb2dc9dfaae2643901be519060200160405180910390a150565b6000546001600160a01b03163314610d3a5760405162461bcd60e51b8152600401610b1c90612521565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b03163314610dae5760405162461bcd60e51b8152600401610b1c90612521565b6003546004819055600555565b600081600003610e30576040516370a0823160e01b81523060048201526001600160a01b038416906370a0823190602401602060405180830381865afa158015610e09573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e2d919061258f565b91505b604080516001600160a01b0385168152602081018490527fda2bc2bedd1f85b5a59d5dbbd6684ff877ef916994a16ec08813101e99ace65f910160405180910390a160155460405163a9059cbb60e01b81526001600160a01b039182166004820152602481018490529084169063a9059cbb906044016020604051808303816000875af1158015610ec5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610aeb91906124d5565b6000546001600160a01b03163314610f135760405162461bcd60e51b8152600401610b1c90612521565b601580546001600160a01b038781166001600160a01b031992831617909255601680548784169083168117909155601780548785169084168117909155601980548786169085168117909155601880549587169590941685179093556040805192835260208301949094529281019190915260608101919091527f06cd79b5e338fdebb51e28f829f3333e4fda9663d4732f262d97dbbacf748b159060800160405180910390a15050505050565b6000546001600160a01b03163314610feb5760405162461bcd60e51b8152600401610b1c90612521565b600b849055600c839055600e829055600f819055600d5481908561100f86866125a8565b61101991906125a8565b61102391906125a8565b61102d91906125a8565b60105550505050565b6000546001600160a01b031633146110605760405162461bcd60e51b8152600401610b1c90612521565b606460138190556012819055601455565b6000610aeb338484611420565b6000546001600160a01b031633146110a85760405162461bcd60e51b8152600401610b1c90612521565b6001600160a01b03919091166000908152600a60205260409020805460ff1916911515919091179055565b6000546001600160a01b031633146110fd5760405162461bcd60e51b8152600401610b1c90612521565b601291909155601391909155601455565b60008261111a83610bbc565b119392505050565b6000546001600160a01b0316331461114c5760405162461bcd60e51b8152600401610b1c90612521565b601e805460ff60a81b1916600160a81b84151581029190911791829055601f8390556040805184815260ff9290930491909116151560208301527f519582fd959400ab5e398f78c2768dea99251e8e26aed5578213b059ce4cee60910160405180910390a15050565b6000826001600160a01b0316846001600160a01b031660008051602061266e833981519152846040516111ea91815260200190565b60405180910390a35060019392505050565b6000546001600160a01b031633146112265760405162461bcd60e51b8152600401610b1c90612521565b6001600160a01b03811661128b5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610b1c565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6015546040516001600160a01b03909116904780156108fc02916000818181858888f1935050505015801561131f573d6000803e3d6000fd5b50565b60008260000361133457506000610813565b60006113408385612556565b90508261134d858361256d565b14610aeb5760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610b1c565b6000610aeb83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611908565b6000818484111561140a5760405162461bcd60e51b8152600401610b1c919061202b565b50600061141784866125bb565b95945050505050565b6001600160a01b0383166000908152600a602052604081205460ff161561144657600080fd5b6001600160a01b0383166000908152600a602052604090205460ff161561146c57600080fd5b60205460ff161561148957611482848484611936565b9050610aeb565b6001600160a01b03841660009081526001602052604090205460ff161580156114cb57506001600160a01b03831660009081526001602052604090205460ff16155b1561152057601e54600160a01b900460ff166115205760405162461bcd60e51b8152602060048201526014602482015273151c98591a5b99c81b9bdd081bdc195b881e595d60621b6044820152606401610b1c565b6001600160a01b03841660009081526001602052604090205460ff1615801561155257506001600160a01b0383163014155b801561156957506001600160a01b03831661dead14155b80156115835750601e546001600160a01b03848116911614155b801561159d57506019546001600160a01b03848116911614155b80156115b757506016546001600160a01b03848116911614155b80156115dc57506001600160a01b03831660009081526009602052604090205460ff16155b1561167d576001600160a01b03831660009081526006602052604090205460055461160784836125a8565b111561167b5760405162461bcd60e51b815260206004820152603e60248201527f546f74616c20486f6c64696e672069732063757272656e746c79206c696d697460448201527f65642c20796f752063616e206e6f74206275792074686174206d7563682e00006064820152608401610b1c565b505b61168784836119f8565b61168f611a65565b1561169c5761169c611abb565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0387166000908152600690915291909120546116ee9184906113e6565b6001600160a01b038516600090815260066020908152604080832093909355600890529081205460ff168061173b57506001600160a01b03841660009081526008602052604090205460ff165b61174f5761174a858486611ea2565b611751565b825b6001600160a01b03851660009081526006602052604090205490915061177790826117cc565b6001600160a01b03808616600081815260066020526040908190209390935591519087169060008051602061266e833981519152906117b99085815260200190565b60405180910390a3506001949350505050565b6000806117d983856125a8565b905083811015610aeb5760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610b1c565b7f8cc651ceed4360bdb07d4dfc17daa4a6fa17092a313d2464a582a73e9b9328006118686064610bfd60135460105461132290919063ffffffff16565b6118846064610bfd60125460105461132290919063ffffffff16565b6118a06064610bfd60145460105461132290919063ffffffff16565b6040805160ff9485168152928416602084015292168183015290519081900360600190a1565b6000610aeb83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506113e6565b600081836119295760405162461bcd60e51b8152600401610b1c919061202b565b506000611417848661256d565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b03861660009081526006909152918220546119879184906113e6565b6001600160a01b0380861660009081526006602052604080822093909355908516815220546119b690836117cc565b6001600160a01b03808516600081815260066020526040908190209390935591519086169060008051602061266e833981519152906111ea9086815260200190565b60045481111580611a2157506001600160a01b03821660009081526009602052604090205460ff165b611a615760405162461bcd60e51b8152602060048201526011602482015270151608131a5b5a5d08115e18d959591959607a1b6044820152606401610b1c565b5050565b601e546000906001600160a01b03163314801590611a86575060205460ff16155b8015611a9b5750601e54600160a81b900460ff165b8015610c6f575050601f5430600090815260066020526040902054101590565b6020805460ff19166001179055601a54601b54600091611ada9161110e565b611ae657600b54611ae9565b60005b90506000611b0d6002610bfd601054610bfd86601f5461132290919063ffffffff16565b90506000611b2682601f546118c690919063ffffffff16565b60408051600280825260608201835292935060009290916020830190803683370190505090503081600081518110611b6057611b606124bf565b6001600160a01b039283166020918202929092010152600254825191169082906001908110611b9157611b916124bf565b6001600160a01b039283166020918202929092010152601c5460405163791ac94760e01b81524792919091169063791ac94790611bdb9086906000908790309042906004016125ce565b600060405180830381600087803b158015611bf557600080fd5b505af1158015611c09573d6000803e3d6000fd5b505050506000611c2282476118c690919063ffffffff16565b90506000611c3d611c348860026113a4565b601054906118c6565b90506000611c526002610bfd8481878d611322565b90506000611c6f83610bfd600c548761132290919063ffffffff16565b90506000611c8c84610bfd600e548861132290919063ffffffff16565b90506000611ca985610bfd600d548961132290919063ffffffff16565b6016546040519192506000916001600160a01b039091169085908381818185875af1925050503d8060008114611cfb576040519150601f19603f3d011682016040523d82523d6000602084013e611d00565b606091505b50506017546040519192506001600160a01b0316908390600081818185875af1925050503d8060008114611d50576040519150601f19603f3d011682016040523d82523d6000602084013e611d55565b606091505b50506018546040519192506001600160a01b0316908490600081818185875af1925050503d8060008114611da5576040519150601f19603f3d011682016040523d82523d6000602084013e611daa565b606091505b5060009250508b159050611e8a57601c5460155460405163f305d71960e01b8152306004820152602481018e905260006044820181905260648201526001600160a01b0391821660848201524260a482015291169063f305d71990879060c40160606040518083038185885af1158015611e28573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190611e4d919061263f565b505060408051878152602081018e90527f424db2872186fa7e7afa7a5e902ed3b49a2ef19c2f5431e672462495dd6b450692500160405180910390a15b50506020805460ff1916905550505050505050505050565b601454601e54600091906001600160a01b0390811690841603611ec85750601254611ee3565b601e546001600160a01b0390811690861603611ee357506013545b6000611f106011546064611ef79190612556565b610bfd84610bf06010548a61132290919063ffffffff16565b90506000611f2f601054610bfd600f548561132290919063ffffffff16565b90506000611f3d83836118c6565b30600090815260066020526040902054909150611f5a90826117cc565b30600090815260066020526040808220929092556019546001600160a01b031681522054611f8890836117cc565b6019546001600160a01b0390811660009081526006602090815260409182902093909355518381523092918b169160008051602061266e833981519152910160405180910390a3811561201557600354611fe290836118c6565b6003556040518281526000906001600160a01b038a169060008051602061266e8339815191529060200160405180910390a35b61201f87846118c6565b98975050505050505050565b600060208083528351808285015260005b818110156120585785810183015185820160400152820161203c565b506000604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b038116811461209057600080fd5b919050565b600080604083850312156120a857600080fd5b6120b183612079565b946020939093013593505050565b6000602082840312156120d157600080fd5b610aeb82612079565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff81118282101715612119576121196120da565b604052919050565b600067ffffffffffffffff82111561213b5761213b6120da565b5060051b60200190565b600082601f83011261215657600080fd5b8135602061216b61216683612121565b6120f0565b82815260059290921b8401810191818101908684111561218a57600080fd5b8286015b848110156121a5578035835291830191830161218e565b509695505050505050565b600080600080600060a086880312156121c857600080fd5b6121d186612079565b945060208087013567ffffffffffffffff808211156121ef57600080fd5b818901915089601f83011261220357600080fd5b813561221161216682612121565b81815260059190911b8301840190848101908c83111561223057600080fd5b938501935b828510156122555761224685612079565b82529385019390850190612235565b98505050604089013592508083111561226d57600080fd5b6122798a848b01612145565b9550606089013592508083111561228f57600080fd5b505061229d88828901612145565b9250506122ac60808701612079565b90509295509295909350565b6000806000606084860312156122cd57600080fd5b6122d684612079565b92506122e460208501612079565b9150604084013590509250925092565b60008060008060008060c0878903121561230d57600080fd5b505084359660208601359650604086013595606081013595506080810135945060a0013592509050565b60006020828403121561234957600080fd5b5035919050565b600080600080600060a0868803121561236857600080fd5b61237186612079565b945061237f60208701612079565b935061238d60408701612079565b925061239b60608701612079565b91506122ac60808701612079565b600080600080608085870312156123bf57600080fd5b5050823594602084013594506040840135936060013592509050565b801515811461131f57600080fd5b600080604083850312156123fc57600080fd5b61240583612079565b91506020830135612415816123db565b809150509250929050565b60008060006060848603121561243557600080fd5b505081359360208301359350604090920135919050565b6000806040838503121561245f57600080fd5b61246883612079565b915061247660208401612079565b90509250929050565b6000806040838503121561249257600080fd5b50508035926020909101359150565b600080604083850312156124b457600080fd5b82356120b1816123db565b634e487b7160e01b600052603260045260246000fd5b6000602082840312156124e757600080fd5b8151610aeb816123db565b634e487b7160e01b600052601160045260246000fd5b60006001820161251a5761251a6124f2565b5060010190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b8082028115828204841417610813576108136124f2565b60008261258a57634e487b7160e01b600052601260045260246000fd5b500490565b6000602082840312156125a157600080fd5b5051919050565b80820180821115610813576108136124f2565b81810381811115610813576108136124f2565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b8181101561261e5784516001600160a01b0316835293830193918301916001016125f9565b50506001600160a01b03969096166060850152505050608001529392505050565b60008060006060848603121561265457600080fd5b835192506020840151915060408401519050925092509256feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa2646970667358221220204e242f1785cf4188dcecfcba0d855b42c8b58ee15ae13bc11a2e127377955264736f6c63430008120033

Deployed Bytecode Sourcemap

5357:15086:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7737:55;;;;;;;;;;;;;;;;;;;160:25:1;;;148:2;133:18;7737:55:0;;;;;;;;9159:80;;;;;;;;;;-1:-1:-1;9231:5:0;;;;;;;;;;;;-1:-1:-1;;;9231:5:0;;;;9159:80;;;;;;;:::i;7654:31::-;;;;;;;;;;-1:-1:-1;7654:31:0;;;;-1:-1:-1;;;7654:31:0;;;;;;;;;914:14:1;;907:22;889:41;;877:2;862:18;7654:31:0;749:187:1;9581:216:0;;;;;;;;;;-1:-1:-1;9581:216:0;;;;;:::i;:::-;;:::i;6768:39::-;;;;;;;;;;-1:-1:-1;6768:39:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;8889:88;;;;;;;;;;-1:-1:-1;8962:12:0;;8889:88;;13013:733;;;;;;;;;;-1:-1:-1;13013:733:0;;;;;:::i;:::-;;:::i;7025:93::-;;;;;;;;;;;;;;;;10099:370;;;;;;;;;;-1:-1:-1;10099:370:0;;;;;:::i;:::-;;:::i;18705:508::-;;;;;;;;;;-1:-1:-1;18705:508:0;;;;;:::i;:::-;;:::i;:::-;;15804:197;;;;;;;;;;;;;:::i;20143:149::-;;;;;;;;;;-1:-1:-1;20143:149:0;;;;;:::i;:::-;;:::i;8983:80::-;;;;;;;;;;-1:-1:-1;8983:80:0;;5720:2;5549:36:1;;5537:2;5522:18;8983:80:0;5407:184:1;20304:132:0;;;;;;;;;;;;;:::i;9805:122::-;;;;;;;;;;-1:-1:-1;9805:122:0;;;;;:::i;:::-;;:::i;10481:247::-;;;;;;;;;;-1:-1:-1;10481:247:0;;;;;:::i;:::-;;:::i;7700:30::-;;;;;;;;;;-1:-1:-1;7700:30:0;;;;-1:-1:-1;;;7700:30:0;;;;;;9329:105;;;;;;;;;;-1:-1:-1;9329:105:0;;;;;:::i;:::-;-1:-1:-1;;;;;9413:18:0;9395:7;9413:18;;;:9;:18;;;;;;;9329:105;2271:148;;;;;;;;;;;;;:::i;10738:139::-;;;;;;;;;;;;;:::i;15195:338::-;;;;;;;;;;-1:-1:-1;15195:338:0;;;;;:::i;:::-;;:::i;6483:62::-;;;;;;;;;;;;;;;;6418:58;;;;;;;;;;;;;;;;19226:547;;;;;;;;;;-1:-1:-1;19226:547:0;;;;;:::i;:::-;;:::i;9245:78::-;;;;;;;;;;-1:-1:-1;9297:7:0;2122:6;-1:-1:-1;;;;;2122:6:0;9245:78;;;-1:-1:-1;;;;;6249:32:1;;;6231:51;;6219:2;6204:18;9245:78:0;6085:203:1;2057:79:0;;;;;;;;;;-1:-1:-1;2095:7:0;2122:6;-1:-1:-1;;;;;2122:6:0;2057:79;;9069:84;;;;;;;;;;-1:-1:-1;9143:7:0;;;;;;;;;;;;-1:-1:-1;;;9143:7:0;;;;9069:84;;16191:370;;;;;;;;;;-1:-1:-1;16191:370:0;;;;;:::i;:::-;;:::i;16011:174::-;;;;;;;;;;;;;:::i;7622:19::-;;;;;;;;;;-1:-1:-1;7622:19:0;;;;-1:-1:-1;;;;;7622:19:0;;;9935:156;;;;;;;;;;-1:-1:-1;9935:156:0;;;;;:::i;:::-;;:::i;1677:21::-;;;;;;;;;;-1:-1:-1;1677:21:0;;;;-1:-1:-1;;;;;1677:21:0;;;15088:102;;;;;;;;;;-1:-1:-1;15088:102:0;;;;;:::i;:::-;;:::i;15541:257::-;;;;;;;;;;-1:-1:-1;15541:257:0;;;;;:::i;:::-;;:::i;9440:133::-;;;;;;;;;;-1:-1:-1;9440:133:0;;;;;:::i;:::-;-1:-1:-1;;;;;9542:19:0;;;9524:7;9542:19;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;9440:133;20000:135;;;;;;;;;;-1:-1:-1;20000:135:0;;;;;:::i;:::-;;:::i;19781:211::-;;;;;;;;;;-1:-1:-1;19781:211:0;;;;;:::i;:::-;;:::i;12851:156::-;;;;;;;;;;-1:-1:-1;12851:156:0;;;;;:::i;:::-;;:::i;2427:244::-;;;;;;;;;;-1:-1:-1;2427:244:0;;;;;:::i;:::-;;:::i;14950:132::-;;;;;;;;;;;;;:::i;7552:24::-;;;;;;;;;;-1:-1:-1;7552:24:0;;;;-1:-1:-1;;;;;7552:24:0;;;9581:216;9685:10;9656:4;9673:23;;;:11;:23;;;;;;;;-1:-1:-1;;;;;9673:32:0;;;;;;;;;;:41;;;9730:37;9656:4;;9673:32;;9730:37;;;;9708:6;160:25:1;;148:2;133:18;;14:177;9730:37:0;;;;;;;;-1:-1:-1;9785:4:0;9581:216;;;;;:::o;13013:733::-;13240:4;;13257:460;13281:10;:17;13277:1;:21;13257:460;;;13347:10;13358:1;13347:13;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1;;;;;13325:53:0;13334:11;-1:-1:-1;;;;;13325:53:0;-1:-1:-1;;;;;;;;;;;13362:12:0;13375:1;13362:15;;;;;;;;:::i;:::-;;;;;;;13325:53;;;;160:25:1;;148:2;133:18;;14:177;13325:53:0;;;;;;;;13589:10;13600:1;13589:13;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1;;;;;13398:219:0;13421:42;-1:-1:-1;;;;;13398:219:0;;13482:12;13495:1;13482:15;;;;;;;;:::i;:::-;;;;;;;13516:1;13536;13556:11;13568:1;13556:14;;;;;;;;:::i;:::-;;;;;;;;;;;;13398:219;;;8884:25:1;;;8925:18;;;8918:34;;;;8968:18;;8961:34;9026:2;9011:18;;9004:34;8871:3;8856:19;13398:219:0;;;;;;;13638:12;-1:-1:-1;;;;;13632:29:0;;13662:10;13673:1;13662:13;;;;;;;;:::i;:::-;;;;;;;13677:11;13690;13702:1;13690:14;;;;;;;;:::i;:::-;;;;;;;;;;;13632:73;;-1:-1:-1;;;;;;13632:73:0;;;;;;;-1:-1:-1;;;;;9307:15:1;;;13632:73:0;;;9289:34:1;9359:15;;;;9339:18;;;9332:43;9391:18;;;9384:34;9224:18;;13632:73:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;13300:3:0;;;;:::i;:::-;;;;13257:460;;;-1:-1:-1;13734:4:0;;13013:733;-1:-1:-1;;;;;;13013:733:0:o;10099:370::-;-1:-1:-1;;;;;10219:19:0;;10199:4;10219:19;;;:11;:19;;;;;;;;10239:10;10219:31;;;;;;;;-1:-1:-1;;10219:52:0;10216:186;;10321:69;;;;;;;;;;;-1:-1:-1;;;10321:69:0;;;;;;;;-1:-1:-1;;;;;10321:19:0;;-1:-1:-1;10321:19:0;;;:11;:19;;;;;10341:10;10321:31;;;;;;;;;;:69;;10357:6;;10321:35;:69::i;:::-;-1:-1:-1;;;;;10287:19:0;;;;;;:11;:19;;;;;;;;10307:10;10287:31;;;;;;;:103;10216:186;10421:40;10435:6;10443:9;10454:6;10421:13;:40::i;:::-;10414:47;;10099:370;;;;;;:::o;18705:508::-;2184:6;;-1:-1:-1;;;;;2184:6:0;1494:10;2184:22;2176:67;;;;-1:-1:-1;;;2176:67:0;;;;;;;:::i;:::-;;;;;;;;;18885:12:::1;:28:::0;;;18924:10:::1;:24:::0;;;18959:12:::1;:28:::0;;;18998:6:::1;:16:::0;;;19025:7:::1;:18:::0;;;19065:76:::1;19035:8:::0;19065:62:::1;19007:7:::0;19065:62;18974:13;19065:62;18900:13;18937:11;19065:17:::1;:30::i;:::-;:34:::0;::::1;:49::i;:76::-;19054:8;:87:::0;19152:14:::1;:32:::0;;;19195:10:::1;:8;:10::i;:::-;18705:508:::0;;;;;;:::o;15804:197::-;2184:6;;-1:-1:-1;;;;;2184:6:0;1494:10;2184:22;2176:67;;;;-1:-1:-1;;;2176:67:0;;;;;;;:::i;:::-;15856:11:::1;:18:::0;;-1:-1:-1;;;;15856:18:0::1;-1:-1:-1::0;;;15856:18:0::1;::::0;;15898:3:::1;15885:10;:16:::0;;;15912:11:::1;:17:::0;;;15856:11:::1;15940:21:::0;15804:197::o;20143:149::-;20203:7;20230:54;20271:12;:10;:12::i;:::-;20253:4;;-1:-1:-1;;;;;20253:4:0;9395:7;9413:18;;;:9;:18;;;;;;20230:36;;20243:22;;20263:1;;20243:15;:19;;:22::i;:::-;20230:8;;:12;:36::i;:::-;:40;;:54::i;20304:132::-;9413:9;:18;;;;5478:42;20347:7;9413:18;;;;;20374:12;;20347:7;;20374:54;;9413:18;;20374:33;;:12;:16;:33::i;:::-;:37;;:54::i;:::-;20367:61;;20304:132;:::o;9805:122::-;9860:4;9884:35;9892:7;-1:-1:-1;;9884:7:0;:35::i;10481:247::-;2184:6;;-1:-1:-1;;;;;2184:6:0;1494:10;2184:22;2176:67;;;;-1:-1:-1;;;2176:67:0;;;;;;;:::i;:::-;10585:1:::1;10567:14;:19;;10559:28;;;::::0;::::1;;10652:4;10633:14;10618:12;;:29;;;;:::i;:::-;10617:39;;;;:::i;:::-;10599:15;:57:::0;;;10672:30:::1;::::0;160:25:1;;;10672:30:0::1;::::0;148:2:1;133:18;10672:30:0::1;;;;;;;10481:247:::0;:::o;2271:148::-;2184:6;;-1:-1:-1;;;;;2184:6:0;1494:10;2184:22;2176:67;;;;-1:-1:-1;;;2176:67:0;;;;;;;:::i;:::-;2378:1:::1;2362:6:::0;;2341:40:::1;::::0;-1:-1:-1;;;;;2362:6:0;;::::1;::::0;2341:40:::1;::::0;2378:1;;2341:40:::1;2409:1;2392:19:::0;;-1:-1:-1;;;;;;2392:19:0::1;::::0;;2271:148::o;10738:139::-;2184:6;;-1:-1:-1;;;;;2184:6:0;1494:10;2184:22;2176:67;;;;-1:-1:-1;;;2176:67:0;;;;;;;:::i;:::-;10812:12:::1;::::0;10797::::1;:27:::0;;;10839:15:::1;:30:::0;10738:139::o;15195:338::-;15276:12;15309:6;15319:1;15309:11;15306:95;;15345:44;;-1:-1:-1;;;15345:44:0;;15383:4;15345:44;;;6231:51:1;-1:-1:-1;;;;;15345:29:0;;;;;6204:18:1;;15345:44:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;15336:53;;15306:95;15416:32;;;-1:-1:-1;;;;;11088:32:1;;11070:51;;11152:2;11137:18;;11130:34;;;15416:32:0;;11043:18:1;15416:32:0;;;;;;;15495:21;;15466:59;;-1:-1:-1;;;15466:59:0;;-1:-1:-1;;;;;15495:21:0;;;15466:59;;;11070:51:1;11137:18;;;11130:34;;;15466:28:0;;;;;;11043:18:1;;15466:59:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;19226:547::-;2184:6;;-1:-1:-1;;;;;2184:6:0;1494:10;2184:22;2176:67;;;;-1:-1:-1;;;2176:67:0;;;;;;;:::i;:::-;19419:21:::1;:46:::0;;-1:-1:-1;;;;;19419:46:0;;::::1;-1:-1:-1::0;;;;;;19419:46:0;;::::1;;::::0;;;19476:20:::1;:44:::0;;;;::::1;::::0;;::::1;::::0;::::1;::::0;;;19531:14:::1;:32:::0;;;;::::1;::::0;;::::1;::::0;::::1;::::0;;;19574:15:::1;:34:::0;;;;::::1;::::0;;::::1;::::0;::::1;::::0;;;19619:18:::1;:40:::0;;;;::::1;::::0;;;::::1;::::0;::::1;::::0;;;19677:88:::1;::::0;;11444:34:1;;;11509:2;11494:18;;11487:43;;;;11546:18;;;11539:43;;;;11613:2;11598:18;;11591:43;;;;19677:88:0::1;::::0;11393:3:1;11378:19;19677:88:0::1;;;;;;;19226:547:::0;;;;;:::o;16191:370::-;2184:6;;-1:-1:-1;;;;;2184:6:0;1494:10;2184:22;2176:67;;;;-1:-1:-1;;;2176:67:0;;;;;;;:::i;:::-;16333:12:::1;:30:::0;;;16374:12:::1;:30:::0;;;16415:10:::1;:26:::0;;;16452:7:::1;:20:::0;;;16537:6:::1;::::0;16462:10;;16348:15;16494:25:::1;16389:15:::0;16428:13;16494:25:::1;:::i;:::-;:40;;;;:::i;:::-;:49;;;;:::i;:::-;:59;;;;:::i;:::-;16483:8;:70:::0;-1:-1:-1;;;;16191:370:0:o;16011:174::-;2184:6;;-1:-1:-1;;;;;2184:6:0;1494:10;2184:22;2176:67;;;;-1:-1:-1;;;2176:67:0;;;;;;;:::i;:::-;16082:3:::1;16069:10;:16:::0;;;16096:11:::1;:17:::0;;;16124:15:::1;:21:::0;16011:174::o;9935:156::-;10015:4;10039:44;10053:10;10065:9;10076:6;10039:13;:44::i;15088:102::-;2184:6;;-1:-1:-1;;;;;2184:6:0;1494:10;2184:22;2176:67;;;;-1:-1:-1;;;2176:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;15161:10:0;;;::::1;;::::0;;;:6:::1;:10;::::0;;;;:21;;-1:-1:-1;;15161:21:0::1;::::0;::::1;;::::0;;;::::1;::::0;;15088:102::o;15541:257::-;2184:6;;-1:-1:-1;;;;;2184:6:0;1494:10;2184:22;2176:67;;;;-1:-1:-1;;;2176:67:0;;;;;;;:::i;:::-;15665:11:::1;:28:::0;;;;15704:10:::1;:26:::0;;;;15741:15:::1;:33:::0;15541:257::o;20000:135::-;20074:4;20122:5;20098:21;20110:8;20098:11;:21::i;:::-;:29;;20000:135;-1:-1:-1;;;20000:135:0:o;19781:211::-;2184:6;;-1:-1:-1;;;;;2184:6:0;1494:10;2184:22;2176:67;;;;-1:-1:-1;;;2176:67:0;;;;;;;:::i;:::-;19872:11:::1;:22:::0;;-1:-1:-1;;;;19872:22:0::1;-1:-1:-1::0;;;19872:22:0;::::1;;::::0;::::1;::::0;;;::::1;::::0;;;;19905:13:::1;:23:::0;;;19944:40:::1;::::0;;11943:25:1;;;19872:22:0::1;19972:11:::0;;;::::1;::::0;;;::::1;12011:14:1::0;12004:22;11999:2;11984:18;;11977:50;19944:40:0::1;::::0;11916:18:1;19944:40:0::1;;;;;;;19781:211:::0;;:::o;12851:156::-;12927:4;12965:3;-1:-1:-1;;;;;12949:28:0;12958:5;-1:-1:-1;;;;;12949:28:0;-1:-1:-1;;;;;;;;;;;12970:6:0;12949:28;;;;160:25:1;;148:2;133:18;;14:177;12949:28:0;;;;;;;;-1:-1:-1;12995:4:0;12851:156;;;;;:::o;2427:244::-;2184:6;;-1:-1:-1;;;;;2184:6:0;1494:10;2184:22;2176:67;;;;-1:-1:-1;;;2176:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;2516:22:0;::::1;2508:73;;;::::0;-1:-1:-1;;;2508:73:0;;12240:2:1;2508:73:0::1;::::0;::::1;12222:21:1::0;12279:2;12259:18;;;12252:30;12318:34;12298:18;;;12291:62;-1:-1:-1;;;12369:18:1;;;12362:36;12415:19;;2508:73:0::1;12038:402:1::0;2508:73:0::1;2618:6;::::0;;2597:38:::1;::::0;-1:-1:-1;;;;;2597:38:0;;::::1;::::0;2618:6;::::1;::::0;2597:38:::1;::::0;::::1;2646:6;:17:::0;;-1:-1:-1;;;;;;2646:17:0::1;-1:-1:-1::0;;;;;2646:17:0;;;::::1;::::0;;;::::1;::::0;;2427:244::o;14950:132::-;15006:21;;14998:62;;-1:-1:-1;;;;;15006:21:0;;;;15038;14998:62;;;;;15006:21;14998:62;15006:21;14998:62;15038:21;15006;14998:62;;;;;;;;;;;;;;;;;;;;;14950:132::o;4767:250::-;4825:7;4849:1;4854;4849:6;4845:47;;-1:-1:-1;4879:1:0;4872:8;;4845:47;4904:9;4916:5;4920:1;4916;:5;:::i;:::-;4904:17;-1:-1:-1;4949:1:0;4940:5;4944:1;4904:17;4940:5;:::i;:::-;:10;4932:56;;;;-1:-1:-1;;;4932:56:0;;12647:2:1;4932:56:0;;;12629:21:1;12686:2;12666:18;;;12659:30;12725:34;12705:18;;;12698:62;-1:-1:-1;;;12776:18:1;;;12769:31;12817:19;;4932:56:0;12445:397:1;5023:132:0;5081:7;5108:39;5112:1;5115;5108:39;;;;;;;;;;;;;;;;;:3;:39::i;4569:192::-;4655:7;4691:12;4683:6;;;;4675:29;;;;-1:-1:-1;;;4675:29:0;;;;;;;;:::i;:::-;-1:-1:-1;4715:9:0;4727:5;4731:1;4727;:5;:::i;:::-;4715:17;4569:192;-1:-1:-1;;;;;4569:192:0:o;10893:1311::-;-1:-1:-1;;;;;11011:14:0;;10985:4;11011:14;;;:6;:14;;;;;;;;11010:15;11002:24;;;;;;-1:-1:-1;;;;;11046:17:0;;;;;;:6;:17;;;;;;;;11045:18;11037:27;;;;;;11078:6;;;;11075:63;;;11094:41;11109:6;11117:9;11128:6;11094:14;:41::i;:::-;11087:48;;;;11075:63;-1:-1:-1;;;;;11154:22:0;;;;;;:14;:22;;;;;;;;11153:23;:53;;;;-1:-1:-1;;;;;;11181:25:0;;;;;;:14;:25;;;;;;;;11180:26;11153:53;11150:139;;;11230:11;;-1:-1:-1;;;11230:11:0;;;;11222:43;;;;-1:-1:-1;;;11222:43:0;;13182:2:1;11222:43:0;;;13164:21:1;13221:2;13201:18;;;13194:30;-1:-1:-1;;;13240:18:1;;;13233:50;13300:18;;11222:43:0;12980:344:1;11222:43:0;-1:-1:-1;;;;;11331:22:0;;;;;;:14;:22;;;;;;;;11330:23;:53;;;;-1:-1:-1;;;;;;11357:26:0;;11378:4;11357:26;;11330:53;:84;;;;-1:-1:-1;;;;;;11388:26:0;;5478:42;11388:26;;11330:84;:105;;;;-1:-1:-1;11431:4:0;;-1:-1:-1;;;;;11418:17:0;;;11431:4;;11418:17;;11330:105;:137;;;;-1:-1:-1;11452:15:0;;-1:-1:-1;;;;;11439:28:0;;;11452:15;;11439:28;;11330:137;:174;;;;-1:-1:-1;11484:20:0;;-1:-1:-1;;;;;11471:33:0;;;11484:20;;11471:33;;11330:174;:207;;;;-1:-1:-1;;;;;;11509:28:0;;;;;;:17;:28;;;;;;;;11508:29;11330:207;11326:399;;;-1:-1:-1;;;;;9413:18:0;;11553;9413;;;:9;:18;;;;;;11642:15;;11618:19;11631:6;9413:18;11618:19;:::i;:::-;11617:40;;11609:114;;;;-1:-1:-1;;;11609:114:0;;13531:2:1;11609:114:0;;;13513:21:1;13570:2;13550:18;;;13543:30;13609:34;13589:18;;;13582:62;13680:32;13660:18;;;13653:60;13730:19;;11609:114:0;13329:426:1;11609:114:0;11538:187;11326:399;11737:28;11750:6;11758;11737:12;:28::i;:::-;11783:16;:14;:16::i;:::-;11780:35;;;11802:10;:8;:10::i;:::-;11845:53;;;;;;;;;;;-1:-1:-1;;;11845:53:0;;;;;;;;-1:-1:-1;;;;;11845:17:0;;-1:-1:-1;11845:17:0;;;:9;:17;;;;;;;;:53;;11867:6;;11845:21;:53::i;:::-;-1:-1:-1;;;;;11825:17:0;;;;;;:9;:17;;;;;;;;:73;;;;11937:16;:24;;;;;;;;;:55;;-1:-1:-1;;;;;;11965:27:0;;;;;;:16;:27;;;;;;;;11937:55;11936:103;;12005:34;12013:6;12021;12029:9;12005:7;:34::i;:::-;11936:103;;;11996:6;11936:103;-1:-1:-1;;;;;12073:20:0;;;;;;:9;:20;;;;;;11911:128;;-1:-1:-1;12073:40:0;;11911:128;12073:24;:40::i;:::-;-1:-1:-1;;;;;12050:20:0;;;;;;;:9;:20;;;;;;;:63;;;;12131:43;;;;;;-1:-1:-1;;;;;;;;;;;12131:43:0;;;12159:14;160:25:1;;148:2;133:18;;14:177;12131:43:0;;;;;;;;-1:-1:-1;12192:4:0;;10893:1311;-1:-1:-1;;;;10893:1311:0:o;4240:181::-;4298:7;;4330:5;4334:1;4330;:5;:::i;:::-;4318:17;;4359:1;4354;:6;;4346:46;;;;-1:-1:-1;;;4346:46:0;;13962:2:1;4346:46:0;;;13944:21:1;14001:2;13981:18;;;13974:30;14040:29;14020:18;;;14013:57;14087:18;;4346:46:0;13760:351:1;18452:241:0;18505:180;18520:33;18549:3;18520:24;18533:10;;18520:8;;:12;;:24;;;;:::i;:33::-;18575:34;18605:3;18575:25;18588:11;;18575:8;;:12;;:25;;;;:::i;:34::-;18631:38;18665:3;18631:29;18644:15;;18631:8;;:12;;:29;;;;:::i;:38::-;18505:180;;;14336:4:1;14324:17;;;14306:36;;14378:17;;;14373:2;14358:18;;14351:45;14432:17;;14412:18;;;14405:45;18505:180:0;;;;;;14294:2:1;18505:180:0;;;18452:241::o;4427:136::-;4485:7;4512:43;4516:1;4519;4512:43;;;;;;;;;;;;;;;;;:3;:43::i;5161:189::-;5247:7;5282:12;5275:5;5267:28;;;;-1:-1:-1;;;5267:28:0;;;;;;;;:::i;:::-;-1:-1:-1;5306:9:0;5318:5;5322:1;5318;:5;:::i;12213:330::-;12343:53;;;;;;;;;;;-1:-1:-1;;;12343:53:0;;;;;;;;-1:-1:-1;;;;;12343:17:0;;12306:4;12343:17;;;:9;:17;;;;;;;:53;;12365:6;;12343:21;:53::i;:::-;-1:-1:-1;;;;;12323:17:0;;;;;;;:9;:17;;;;;;:73;;;;12430:20;;;;;;;:32;;12455:6;12430:24;:32::i;:::-;-1:-1:-1;;;;;12407:20:0;;;;;;;:9;:20;;;;;;;:55;;;;12478:35;;;;;;-1:-1:-1;;;;;;;;;;;12478:35:0;;;12506:6;160:25:1;;148:2;133:18;;14:177;12551:168:0;12648:12;;12638:6;:22;;:51;;;-1:-1:-1;;;;;;12664:25:0;;;;;;:17;:25;;;;;;;;12638:51;12630:81;;;;-1:-1:-1;;;12630:81:0;;14663:2:1;12630:81:0;;;14645:21:1;14702:2;14682:18;;;14675:30;-1:-1:-1;;;14721:18:1;;;14714:47;14778:18;;12630:81:0;14461:341:1;12630:81:0;12551:168;;:::o;14740:197::-;14827:4;;14789;;-1:-1:-1;;;;;14827:4:0;14813:10;:18;;;;:38;;-1:-1:-1;14845:6:0;;;;14844:7;14813:38;:62;;;;-1:-1:-1;14864:11:0;;-1:-1:-1;;;14864:11:0;;;;14813:62;:116;;;;-1:-1:-1;;14916:13:0;;14906:4;14888:24;;;;:9;:24;;;;;;:41;;;14740:197::o;16582:1854::-;7840:6;:13;;-1:-1:-1;;7840:13:0;7849:4;7840:13;;;16672:8:::1;::::0;16682:19:::1;::::0;7840:6;;16661:41:::1;::::0;:10:::1;:41::i;:::-;:60;;16709:12;;16661:60;;;16705:1;16661:60;16631:90;;16732:23;16758:59;16815:1;16758:52;16801:8;;16758:38;16776:19;16758:13;;:17;;:38;;;;:::i;:59::-;16732:85;;16828:20;16851:34;16869:15;16851:13;;:17;;:34;;;;:::i;:::-;16922:16;::::0;;16936:1:::1;16922:16:::0;;;;;::::1;::::0;;16828:57;;-1:-1:-1;16898:21:0::1;::::0;16922:16;;::::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;16922:16:0::1;16898:40;;16967:4;16949;16954:1;16949:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;16949:23:0;;::::1;:7;::::0;;::::1;::::0;;;;;:23;16993:4:::1;::::0;16983:7;;16993:4;::::1;::::0;16983;;16993;;16983:7;::::1;;;;;:::i;:::-;-1:-1:-1::0;;;;;16983:14:0;;::::1;:7;::::0;;::::1;::::0;;;;;:14;17068:6:::1;::::0;:188:::1;::::0;-1:-1:-1;;;17068:188:0;;17034:21:::1;::::0;17068:6;;;::::1;::::0;:57:::1;::::0;:188:::1;::::0;17140:12;;17010:21:::1;::::0;17183:4;;17210::::1;::::0;17230:15:::1;::::0;17068:188:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;17269:17;17289:40;17315:13;17289:21;:25;;:40;;;;:::i;:::-;17269:60:::0;-1:-1:-1;17342:19:0::1;17364:40;17377:26;:19:::0;17401:1:::1;17377:23;:26::i;:::-;17364:8;::::0;;:12:::1;:40::i;:::-;17342:62:::0;-1:-1:-1;17425:26:0::1;17454:58;17510:1;17454:51;17342:62:::0;17454:51;:9;17468:19;17454:13:::1;:34::i;:58::-;17425:87;;17523:26;17552:44;17584:11;17552:27;17566:12;;17552:9;:13;;:27;;;;:::i;:44::-;17523:73;;17607:24;17634:42;17664:11;17634:25;17648:10;;17634:9;:13;;:25;;;;:::i;:42::-;17607:69;;17687:20;17710:38;17736:11;17710:21;17724:6;;17710:9;:13;;:21;;;;:::i;:38::-;17790:20;::::0;17782:65:::1;::::0;17687:61;;-1:-1:-1;17762:15:0::1;::::0;-1:-1:-1;;;;;17790:20:0;;::::1;::::0;17824:18;;17762:15;17782:65;17762:15;17782:65;17824:18;17790:20;17782:65:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;17882:14:0::1;::::0;17874:53:::1;::::0;17761:86;;-1:-1:-1;;;;;;17882:14:0::1;::::0;17910:12;;17874:53:::1;::::0;;;17910:12;17882:14;17874:53:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;17962:18:0::1;::::0;17954:61:::1;::::0;17858:69;;-1:-1:-1;;;;;;17962:18:0::1;::::0;17994:16;;17954:61:::1;::::0;;;17994:16;17962:18;17954:61:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;18049:5:0::1;::::0;-1:-1:-1;;18070:19:0;;;-1:-1:-1;18067:362:0::1;;18105:6;::::0;18279:21:::1;::::0;18105:244:::1;::::0;-1:-1:-1;;;18105:244:0;;18181:4:::1;18105:244;::::0;::::1;16343:34:1::0;16393:18;;;16386:34;;;18105:6:0::1;16436:18:1::0;;;16429:34;;;16479:18;;;16472:34;-1:-1:-1;;;;;18279:21:0;;::::1;16522:19:1::0;;;16515:44;18319:15:0::1;16575:19:1::0;;;16568:35;18105:6:0;::::1;::::0;:22:::1;::::0;18135:18;;16277:19:1;;18105:244:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;18369:48:0::1;::::0;;17099:25:1;;;17155:2;17140:18;;17133:34;;;18369:48:0::1;::::0;-1:-1:-1;17072:18:1;18369:48:0::1;;;;;;;18067:362;-1:-1:-1::0;;7858:6:0;:14;;-1:-1:-1;;7858:14:0;;;-1:-1:-1;;;;;;;;;;16582:1854:0:o;13752:982::-;13886:15;;13928:4;;13838:7;;13886:15;-1:-1:-1;;;;;13928:4:0;;;13915:17;;;;13912:142;;-1:-1:-1;13959:11:0;;13912:142;;;14001:4;;-1:-1:-1;;;;;14001:4:0;;;13991:14;;;;13988:66;;-1:-1:-1;14032:10:0;;13988:66;14066:17;14086:59;14124:14;;14141:3;14124:20;;;;:::i;:::-;14086:33;14111:7;14086:20;14097:8;;14086:6;:10;;:20;;;;:::i;:59::-;14066:79;;14156:18;14177:36;14204:8;;14177:22;14191:7;;14177:9;:13;;:22;;;;:::i;:36::-;14156:57;-1:-1:-1;14224:22:0;14249:25;:9;14156:57;14249:13;:25::i;:::-;14330:4;14312:24;;;;:9;:24;;;;;;14224:50;;-1:-1:-1;14312:44:0;;14224:50;14312:28;:44::i;:::-;14303:4;14285:24;;;;:9;:24;;;;;;:71;;;;14406:15;;-1:-1:-1;;;;;14406:15:0;14396:26;;;;:42;;14427:10;14396:30;:42::i;:::-;14377:15;;-1:-1:-1;;;;;14377:15:0;;;14367:26;;;;:9;:26;;;;;;;;;:71;;;;14454:47;160:25:1;;;14479:4:0;;14454:47;;;;-1:-1:-1;;;;;;;;;;;14454:47:0;133:18:1;14454:47:0;;;;;;;14535:14;;14532:154;;14580:12;;:28;;14597:10;14580:16;:28::i;:::-;14565:12;:43;14628:34;;160:25:1;;;5551:42:0;;-1:-1:-1;;;;;14628:34:0;;;-1:-1:-1;;;;;;;;;;;14628:34:0;148:2:1;133:18;14628:34:0;;;;;;;14532:154;14705:21;:6;14716:9;14705:10;:21::i;:::-;14698:28;13752:982;-1:-1:-1;;;;;;;;13752:982:0:o;196:548:1:-;308:4;337:2;366;355:9;348:21;398:6;392:13;441:6;436:2;425:9;421:18;414:34;466:1;476:140;490:6;487:1;484:13;476:140;;;585:14;;;581:23;;575:30;551:17;;;570:2;547:26;540:66;505:10;;476:140;;;480:3;665:1;660:2;651:6;640:9;636:22;632:31;625:42;735:2;728;724:7;719:2;711:6;707:15;703:29;692:9;688:45;684:54;676:62;;;;196:548;;;;:::o;941:173::-;1009:20;;-1:-1:-1;;;;;1058:31:1;;1048:42;;1038:70;;1104:1;1101;1094:12;1038:70;941:173;;;:::o;1119:254::-;1187:6;1195;1248:2;1236:9;1227:7;1223:23;1219:32;1216:52;;;1264:1;1261;1254:12;1216:52;1287:29;1306:9;1287:29;:::i;:::-;1277:39;1363:2;1348:18;;;;1335:32;;-1:-1:-1;;;1119:254:1:o;1378:186::-;1437:6;1490:2;1478:9;1469:7;1465:23;1461:32;1458:52;;;1506:1;1503;1496:12;1458:52;1529:29;1548:9;1529:29;:::i;1569:127::-;1630:10;1625:3;1621:20;1618:1;1611:31;1661:4;1658:1;1651:15;1685:4;1682:1;1675:15;1701:275;1772:2;1766:9;1837:2;1818:13;;-1:-1:-1;;1814:27:1;1802:40;;1872:18;1857:34;;1893:22;;;1854:62;1851:88;;;1919:18;;:::i;:::-;1955:2;1948:22;1701:275;;-1:-1:-1;1701:275:1:o;1981:183::-;2041:4;2074:18;2066:6;2063:30;2060:56;;;2096:18;;:::i;:::-;-1:-1:-1;2141:1:1;2137:14;2153:4;2133:25;;1981:183::o;2169:662::-;2223:5;2276:3;2269:4;2261:6;2257:17;2253:27;2243:55;;2294:1;2291;2284:12;2243:55;2330:6;2317:20;2356:4;2380:60;2396:43;2436:2;2396:43;:::i;:::-;2380:60;:::i;:::-;2474:15;;;2560:1;2556:10;;;;2544:23;;2540:32;;;2505:12;;;;2584:15;;;2581:35;;;2612:1;2609;2602:12;2581:35;2648:2;2640:6;2636:15;2660:142;2676:6;2671:3;2668:15;2660:142;;;2742:17;;2730:30;;2780:12;;;;2693;;2660:142;;;-1:-1:-1;2820:5:1;2169:662;-1:-1:-1;;;;;;2169:662:1:o;2836:1520::-;3006:6;3014;3022;3030;3038;3091:3;3079:9;3070:7;3066:23;3062:33;3059:53;;;3108:1;3105;3098:12;3059:53;3131:29;3150:9;3131:29;:::i;:::-;3121:39;;3179:2;3232;3221:9;3217:18;3204:32;3255:18;3296:2;3288:6;3285:14;3282:34;;;3312:1;3309;3302:12;3282:34;3350:6;3339:9;3335:22;3325:32;;3395:7;3388:4;3384:2;3380:13;3376:27;3366:55;;3417:1;3414;3407:12;3366:55;3453:2;3440:16;3476:60;3492:43;3532:2;3492:43;:::i;3476:60::-;3570:15;;;3652:1;3648:10;;;;3640:19;;3636:28;;;3601:12;;;;3676:19;;;3673:39;;;3708:1;3705;3698:12;3673:39;3732:11;;;;3752:148;3768:6;3763:3;3760:15;3752:148;;;3834:23;3853:3;3834:23;:::i;:::-;3822:36;;3785:12;;;;3878;;;;3752:148;;;3919:5;-1:-1:-1;;;3977:2:1;3962:18;;3949:32;;-1:-1:-1;3993:16:1;;;3990:36;;;4022:1;4019;4012:12;3990:36;4045:63;4100:7;4089:8;4078:9;4074:24;4045:63;:::i;:::-;4035:73;;4161:2;4150:9;4146:18;4133:32;4117:48;;4190:2;4180:8;4177:16;4174:36;;;4206:1;4203;4196:12;4174:36;;;4229:63;4284:7;4273:8;4262:9;4258:24;4229:63;:::i;:::-;4219:73;;;4311:39;4345:3;4334:9;4330:19;4311:39;:::i;:::-;4301:49;;2836:1520;;;;;;;;:::o;4361:328::-;4438:6;4446;4454;4507:2;4495:9;4486:7;4482:23;4478:32;4475:52;;;4523:1;4520;4513:12;4475:52;4546:29;4565:9;4546:29;:::i;:::-;4536:39;;4594:38;4628:2;4617:9;4613:18;4594:38;:::i;:::-;4584:48;;4679:2;4668:9;4664:18;4651:32;4641:42;;4361:328;;;;;:::o;4694:523::-;4798:6;4806;4814;4822;4830;4838;4891:3;4879:9;4870:7;4866:23;4862:33;4859:53;;;4908:1;4905;4898:12;4859:53;-1:-1:-1;;4931:23:1;;;5001:2;4986:18;;4973:32;;-1:-1:-1;5052:2:1;5037:18;;5024:32;;5103:2;5088:18;;5075:32;;-1:-1:-1;5154:3:1;5139:19;;5126:33;;-1:-1:-1;5206:3:1;5191:19;5178:33;;-1:-1:-1;4694:523:1;-1:-1:-1;4694:523:1:o;5222:180::-;5281:6;5334:2;5322:9;5313:7;5309:23;5305:32;5302:52;;;5350:1;5347;5340:12;5302:52;-1:-1:-1;5373:23:1;;5222:180;-1:-1:-1;5222:180:1:o;5596:484::-;5691:6;5699;5707;5715;5723;5776:3;5764:9;5755:7;5751:23;5747:33;5744:53;;;5793:1;5790;5783:12;5744:53;5816:29;5835:9;5816:29;:::i;:::-;5806:39;;5864:38;5898:2;5887:9;5883:18;5864:38;:::i;:::-;5854:48;;5921:38;5955:2;5944:9;5940:18;5921:38;:::i;:::-;5911:48;;5978:38;6012:2;6001:9;5997:18;5978:38;:::i;:::-;5968:48;;6035:39;6069:3;6058:9;6054:19;6035:39;:::i;6293:385::-;6379:6;6387;6395;6403;6456:3;6444:9;6435:7;6431:23;6427:33;6424:53;;;6473:1;6470;6463:12;6424:53;-1:-1:-1;;6496:23:1;;;6566:2;6551:18;;6538:32;;-1:-1:-1;6617:2:1;6602:18;;6589:32;;6668:2;6653:18;6640:32;;-1:-1:-1;6293:385:1;-1:-1:-1;6293:385:1:o;6683:118::-;6769:5;6762:13;6755:21;6748:5;6745:32;6735:60;;6791:1;6788;6781:12;6806:315;6871:6;6879;6932:2;6920:9;6911:7;6907:23;6903:32;6900:52;;;6948:1;6945;6938:12;6900:52;6971:29;6990:9;6971:29;:::i;:::-;6961:39;;7050:2;7039:9;7035:18;7022:32;7063:28;7085:5;7063:28;:::i;:::-;7110:5;7100:15;;;6806:315;;;;;:::o;7126:316::-;7203:6;7211;7219;7272:2;7260:9;7251:7;7247:23;7243:32;7240:52;;;7288:1;7285;7278:12;7240:52;-1:-1:-1;;7311:23:1;;;7381:2;7366:18;;7353:32;;-1:-1:-1;7432:2:1;7417:18;;;7404:32;;7126:316;-1:-1:-1;7126:316:1:o;7447:260::-;7515:6;7523;7576:2;7564:9;7555:7;7551:23;7547:32;7544:52;;;7592:1;7589;7582:12;7544:52;7615:29;7634:9;7615:29;:::i;:::-;7605:39;;7663:38;7697:2;7686:9;7682:18;7663:38;:::i;:::-;7653:48;;7447:260;;;;;:::o;7712:248::-;7780:6;7788;7841:2;7829:9;7820:7;7816:23;7812:32;7809:52;;;7857:1;7854;7847:12;7809:52;-1:-1:-1;;7880:23:1;;;7950:2;7935:18;;;7922:32;;-1:-1:-1;7712:248:1:o;7965:309::-;8030:6;8038;8091:2;8079:9;8070:7;8066:23;8062:32;8059:52;;;8107:1;8104;8097:12;8059:52;8146:9;8133:23;8165:28;8187:5;8165:28;:::i;8505:127::-;8566:10;8561:3;8557:20;8554:1;8547:31;8597:4;8594:1;8587:15;8621:4;8618:1;8611:15;9429:245;9496:6;9549:2;9537:9;9528:7;9524:23;9520:32;9517:52;;;9565:1;9562;9555:12;9517:52;9597:9;9591:16;9616:28;9638:5;9616:28;:::i;9679:127::-;9740:10;9735:3;9731:20;9728:1;9721:31;9771:4;9768:1;9761:15;9795:4;9792:1;9785:15;9811:135;9850:3;9871:17;;;9868:43;;9891:18;;:::i;:::-;-1:-1:-1;9938:1:1;9927:13;;9811:135::o;9951:356::-;10153:2;10135:21;;;10172:18;;;10165:30;10231:34;10226:2;10211:18;;10204:62;10298:2;10283:18;;9951:356::o;10312:168::-;10385:9;;;10416;;10433:15;;;10427:22;;10413:37;10403:71;;10454:18;;:::i;10485:217::-;10525:1;10551;10541:132;;10595:10;10590:3;10586:20;10583:1;10576:31;10630:4;10627:1;10620:15;10658:4;10655:1;10648:15;10541:132;-1:-1:-1;10687:9:1;;10485:217::o;10707:184::-;10777:6;10830:2;10818:9;10809:7;10805:23;10801:32;10798:52;;;10846:1;10843;10836:12;10798:52;-1:-1:-1;10869:16:1;;10707:184;-1:-1:-1;10707:184:1:o;11645:125::-;11710:9;;;11731:10;;;11728:36;;;11744:18;;:::i;12847:128::-;12914:9;;;12935:11;;;12932:37;;;12949:18;;:::i;14807:980::-;15069:4;15117:3;15106:9;15102:19;15148:6;15137:9;15130:25;15174:2;15212:6;15207:2;15196:9;15192:18;15185:34;15255:3;15250:2;15239:9;15235:18;15228:31;15279:6;15314;15308:13;15345:6;15337;15330:22;15383:3;15372:9;15368:19;15361:26;;15422:2;15414:6;15410:15;15396:29;;15443:1;15453:195;15467:6;15464:1;15461:13;15453:195;;;15532:13;;-1:-1:-1;;;;;15528:39:1;15516:52;;15623:15;;;;15588:12;;;;15564:1;15482:9;15453:195;;;-1:-1:-1;;;;;;;15704:32:1;;;;15699:2;15684:18;;15677:60;-1:-1:-1;;;15768:3:1;15753:19;15746:35;15665:3;14807:980;-1:-1:-1;;;14807:980:1:o;16614:306::-;16702:6;16710;16718;16771:2;16759:9;16750:7;16746:23;16742:32;16739:52;;;16787:1;16784;16777:12;16739:52;16816:9;16810:16;16800:26;;16866:2;16855:9;16851:18;16845:25;16835:35;;16910:2;16899:9;16895:18;16889:25;16879:35;;16614:306;;;;;:::o

Swarm Source

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