ETH Price: $2,354.07 (-3.91%)

Token

LuffyToken (LUFFY)
 

Overview

Max Total Supply

420,000,000 LUFFY

Holders

54

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 8 Decimals)

Filtered by Token Holder
Uniswap V2: LUFFY 63
Balance
0.00000148 LUFFY

Value
$0.00
0x90139f7fcf0b88906e4c112da3793a6cb42ecf55
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:
LuffyTokenErc

Compiler Version
v0.8.22+commit.4fc1097e

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

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

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

// SPDX-License-Identifier: MIT
/** 

                    ___           ___           ___                                ___           ___           ___     
                   /\  \         /\__\         /\__\                              /\__\         /\  \         /\__\    
                   \:\  \       /:/ _/_       /:/ _/_         ___                /:/ _/_       /::\  \       /:/  /    
                    \:\  \     /:/ /\__\     /:/ /\__\       /|  |              /:/ /\__\     /:/\:\__\     /:/  /     
  ___     ___   ___  \:\  \   /:/ /:/  /    /:/ /:/  /      |:|  |             /:/ /:/ _/_   /:/ /:/  /    /:/  /  ___ 
 /\  \   /\__\ /\  \  \:\__\ /:/_/:/  /    /:/_/:/  /       |:|  |            /:/_/:/ /\__\ /:/_/:/__/___ /:/__/  /\__\
 \:\  \ /:/  / \:\  \ /:/  / \:\/:/  /     \:\/:/  /      __|:|__|            \:\/:/ /:/  / \:\/:::::/  / \:\  \ /:/  /
  \:\  /:/  /   \:\  /:/  /   \::/__/       \::/__/      /::::\  \             \::/_/:/  /   \::/~~/~~~~   \:\  /:/  / 
   \:\/:/  /     \:\/:/  /     \:\  \        \:\  \      ~~~~\:\  \             \:\/:/  /     \:\~~\        \:\/:/  /  
    \::/  /       \::/  /       \:\__\        \:\__\          \:\__\             \::/  /       \:\__\        \::/  /   
     \/__/         \/__/         \/__/         \/__/           \/__/              \/__/         \/__/         \/__/


     Website https://luffytokenerc.xyz
     X https://twitter.com/LuffyTokenERC20
     Tg https://t.me/luffyTokenERC

     Tax 0/0
**/


pragma solidity ^0.8.10;

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

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

interface IERC20 {
    function totalSupply() external view returns (uint256);
    function balanceOf(address _account) external view returns (uint256);
    function transfer(address recipient, uint256 amount)
        external
        returns (bool);
    function allowance(address owner, address spender)
        external
        view
        returns (uint256);
    function approve(address spender, uint256 amount) external returns (bool);
    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) external returns (bool);
    event Transfer(address indexed from, address indexed to, uint256 value);
    event Approval(
        address indexed owner,
        address indexed spender,
        uint256 value
    );
}

abstract contract Ownable is Context {
    address private _owner;

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

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

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

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

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

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

    function _setOwner(address newOwner) private {
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
    }
}

library SafeMath {

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

        return c;
    }

    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return sub(a, b, "SafeMath: subtraction overflow");
    }

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

        return c;
    }

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

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

        return c;
    }

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

    function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b > 0, errorMessage);
        uint256 c = a / b;
        // assert(a == b * c + a % b); // There is no case in which this doesn't hold

        return c;
    }

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

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

interface IDexSwapFactory {
    event PairCreated(address indexed token0, address indexed token1, address pair, uint);
    function getPair(address tokenA, address tokenB) external view returns (address pair);
    function createPair(address tokenA, address tokenB) external returns (address pair);
}

interface IDexSwapPair {
    event Approval(address indexed owner, address indexed spender, uint value);
    event Transfer(address indexed from, address indexed to, uint value);

    function name() external pure returns (string memory);
    function symbol() external pure returns (string memory);
    function decimals() external pure returns (uint8);
    function totalSupply() external view returns (uint);
    function balanceOf(address owner) external view returns (uint);
    function allowance(address owner, address spender) external view returns (uint);

    function approve(address spender, uint value) external returns (bool);
    function transfer(address to, uint value) external returns (bool);
    function transferFrom(address from, address to, uint value) external returns (bool);

    function DOMAIN_SEPARATOR() external view returns (bytes32);
    function PERMIT_TYPEHASH() external pure returns (bytes32);
    function nonces(address owner) external view returns (uint);

    function permit(address owner, address spender, uint value, uint deadline, uint8 v, bytes32 r, bytes32 s) external;
    
    event Burn(address indexed sender, uint amount0, uint amount1, address indexed to);
    event Swap(
        address indexed sender,
        uint amount0In,
        uint amount1In,
        uint amount0Out,
        uint amount1Out,
        address indexed to
    );
    event Sync(uint112 reserve0, uint112 reserve1);

    function MINIMUM_LIQUIDITY() external pure returns (uint);
    function factory() external view returns (address);
    function token0() external view returns (address);
    function token1() external view returns (address);
    function getReserves() external view returns (uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast);
    function price0CumulativeLast() external view returns (uint);
    function price1CumulativeLast() external view returns (uint);
    function kLast() external view returns (uint);

    function burn(address to) external returns (uint amount0, uint amount1);
    function swap(uint amount0Out, uint amount1Out, address to, bytes calldata data) external;
    function skim(address to) external;
    function sync() external;

    function initialize(address, address) external;
}

interface IDexSwapRouter {
    function factory() external pure returns (address);
    function WETH() external pure returns (address);
    function addLiquidityETH(
        address token,
        uint amountTokenDesired,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external payable returns (uint amountToken, uint amountETH, uint liquidity);
    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;

}

contract LuffyTokenErc is Context, IERC20, Ownable {

    using SafeMath for uint256;

    string private _name = "LuffyToken";
    string private _symbol = "LUFFY";
    uint8 private _decimals = 8; 

    address public immutable deadAddress = 0x000000000000000000000000000000000000dEaD;
    address public immutable zeroAddress = 0x0000000000000000000000000000000000000000;

    uint _buydevelopmentTax = 0;
    uint _buyLpTax = 0;
    uint _buyRewardTax = 0;

    uint _selldevelopmentTax = 0;
    uint _sellLpTax = 0;
    uint _sellRewardTax = 0;

    uint256 public _totalbuyFee = _buydevelopmentTax.add(_buyLpTax).add(_buyRewardTax);
    uint256 public _totalSellFee = _selldevelopmentTax.add(_sellLpTax).add(_sellRewardTax);

    address public developmentWallet = address(0xB1FfF8FBa00634905174256D357d8E88Ef3aE0c4);
    address public lpReceiverWallet;
    address public rewardWallet = address(0xB1FfF8FBa00634905174256D357d8E88Ef3aE0c4);
    
    uint256 feedenominator = 100;

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

    mapping (address => bool) public isExcludedFromFee;
    mapping (address => bool) public isMarketPair;
    mapping (address => bool) public isWalletLimitExempt;
    mapping (address => bool) public isTxLimitExempt;

    uint256 private _totalSupply = 420_000_000 * 10**_decimals;

    uint256 public _maxTxAmount =  _totalSupply.mul(1).div(100);     // 1%
    uint256 public _walletMax = _totalSupply.mul(1).div(100);        // 1%

    uint256 public swapThreshold = 500_000 * 10**_decimals;

    uint256 public launchedAt;
    bool public normalizeTrade;

    bool tradingActive;

    bool public swapEnabled = false;
    bool public swapbylimit = false;
    bool public EnableTxLimit = false;
    bool public checkWalletLimit = false;

    IDexSwapRouter public dexRouter;
    address public dexPair;

    bool inSwap;

    modifier onlyGuard() {
        require(msg.sender == lpReceiverWallet,"Invalid Caller");
        _;
    }

    modifier swapping() {
        inSwap = true;
        _;
        inSwap = false;
    }
    
    event SwapTokensForETH(
        uint256 amountIn,
        address[] path
    );

    constructor() {

        IDexSwapRouter _dexRouter = IDexSwapRouter(
            0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D
        );

        dexRouter = _dexRouter;
        
        lpReceiverWallet = msg.sender;

        isExcludedFromFee[address(this)] = true;
        isExcludedFromFee[msg.sender] = true;
        isExcludedFromFee[address(dexRouter)] = true;

        isWalletLimitExempt[msg.sender] = true;
        isWalletLimitExempt[address(dexRouter)] = true;
        isWalletLimitExempt[address(this)] = true;
        isWalletLimitExempt[deadAddress] = true;
        isWalletLimitExempt[zeroAddress] = true;
        
        isTxLimitExempt[deadAddress] = true;
        isTxLimitExempt[zeroAddress] = true;
        isTxLimitExempt[msg.sender] = true;
        isTxLimitExempt[address(this)] = true;
        isTxLimitExempt[address(dexRouter)] = true;

        isMarketPair[address(dexPair)] = true;

        _allowances[address(this)][address(dexRouter)] = ~uint256(0);

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

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

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

    function decimals() public view returns (uint8) {
        return _decimals;
    }

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

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

    function allowance(address owner, address spender) public view override returns (uint256) {
        return _allowances[owner][spender];
    }
    
    function getCirculatingSupply() public view returns (uint256) {
        return _totalSupply.sub(balanceOf(deadAddress)).sub(balanceOf(zeroAddress));
    }

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

    function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) {
        _approve(_msgSender(), spender, _allowances[_msgSender()][spender].sub(subtractedValue, "ERC20: decreased allowance below zero"));
        return true;
    }

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

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

        _allowances[owner][spender] = amount;
        emit Approval(owner, spender, amount);
    }

     //to recieve ETH from Router when swaping
    receive() external payable {}

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

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

    function _transfer(address sender, address recipient, uint256 amount) private returns (bool) {

        require(sender != address(0));
        require(recipient != address(0));
        require(amount > 0);
    
        if (inSwap) {
            return _basicTransfer(sender, recipient, amount);
        }
        else {

            if (!tradingActive) {
                require(isExcludedFromFee[sender] || isExcludedFromFee[recipient],"Trading is not active.");
            }

            if (launchedAt != 0 && !normalizeTrade) {
                dynamicTaxSetter();
            }

            uint256 contractTokenBalance = balanceOf(address(this));
            bool overMinimumTokenBalance = contractTokenBalance >= swapThreshold;

            if (
                overMinimumTokenBalance && 
                !inSwap && 
                !isMarketPair[sender] && 
                swapEnabled &&
                !isExcludedFromFee[sender] &&
                !isExcludedFromFee[recipient]
                ) {
                swapBack(contractTokenBalance);
            }

            if(!isTxLimitExempt[sender] && !isTxLimitExempt[recipient] && EnableTxLimit) {
                require(amount <= _maxTxAmount, "Exceeds maxTxAmount");
            } 
            
            _balances[sender] = _balances[sender].sub(amount, "Insufficient Balance");

            uint256 finalAmount = shouldNotTakeFee(sender,recipient) ? amount : takeFee(sender, recipient, amount);

            if(checkWalletLimit && !isWalletLimitExempt[recipient]) {
                require(balanceOf(recipient).add(finalAmount) <= _walletMax,"Exceeds Wallet");
            }

            _balances[recipient] = _balances[recipient].add(finalAmount);

            emit Transfer(sender, recipient, finalAmount);
            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 shouldNotTakeFee(address sender, address recipient) internal view returns (bool) {
        if(isExcludedFromFee[sender] || isExcludedFromFee[recipient]) {
            return true;
        }
        else if (isMarketPair[sender] || isMarketPair[recipient]) {
            return false;
        }
        else {
            return false;
        }
    }

    function takeFee(address sender, address recipient, uint256 amount) internal returns (uint256) {
        
        uint feeAmount;

        unchecked {

            if(isMarketPair[sender]) { 
                feeAmount = amount.mul(_totalbuyFee).div(feedenominator);
            } 
            else if(isMarketPair[recipient]) { 
                feeAmount = amount.mul(_totalSellFee).div(feedenominator);
            }

            if(feeAmount > 0) {
                _balances[address(this)] = _balances[address(this)].add(feeAmount);
                emit Transfer(sender, address(this), feeAmount);
            }

            return amount.sub(feeAmount);
        }
        
    }

    function launch() public payable onlyOwner {
        require(launchedAt == 0, "Already launched!");
        launchedAt = block.number;
        tradingActive = true;

        uint tokenForLp = _balances[address(this)];

        _buydevelopmentTax = 1;
        _buyLpTax = 0;
        _buyRewardTax = 0;

        _selldevelopmentTax = 1;
        _sellLpTax = 0;
        _sellRewardTax = 0;

        dexRouter.addLiquidityETH{ value: msg.value }(
            address(this),
            tokenForLp,
            0,
            0,
            owner(),
            block.timestamp
        );

        IDexSwapFactory factory = IDexSwapFactory(dexRouter.factory());

        IDexSwapPair pair = IDexSwapPair(factory.getPair(address(this), dexRouter.WETH()));

        dexPair = address(pair);

        isMarketPair[address(dexPair)] = true;
        isWalletLimitExempt[address(dexPair)] = true;
        _allowances[address(this)][address(dexPair)] = ~uint256(0);

        swapEnabled = true;
        EnableTxLimit = true;
        checkWalletLimit =  true;
    }

    function dynamicTaxSetter() internal {
        if (block.number <= launchedAt + 3) {
            dynamicSetter(20,20);
        }
        if (block.number > launchedAt + 3 && block.number <= launchedAt + 22) {
            dynamicSetter(10,10);
        }
        if (block.number > launchedAt + 22) {
            dynamicSetter(0,0);
            normalizeTrade = true;
        }
            
    }

    function dynamicSetter(uint _buy, uint _Sell) internal {
        _totalbuyFee = _buy;
        _totalSellFee = _Sell;
    }


    function swapBack(uint contractBalance) internal swapping {

        if(swapbylimit) contractBalance = swapThreshold;

        uint256 totalShares = _totalbuyFee.add(_totalSellFee);

        uint256 _liquidityShare = _buyLpTax.add(_sellLpTax);
        // uint256 _developmentShare = _buydevelopmentTax.add(_selldevelopmentTax);
        uint256 _rewardShare = _buyRewardTax.add(_sellRewardTax);

        uint256 tokensForLP = contractBalance.mul(_liquidityShare).div(totalShares).div(2);
        uint256 tokensForSwap = contractBalance.sub(tokensForLP);

        uint256 initialBalance = address(this).balance;
        swapTokensForEth(tokensForSwap);
        uint256 amountReceived = address(this).balance.sub(initialBalance);

        uint256 totalETHFee = totalShares.sub(_liquidityShare.div(2));
        
        uint256 amountETHLiquidity = amountReceived.mul(_liquidityShare).div(totalETHFee).div(2);
        uint256 amountETHReward = amountReceived.mul(_rewardShare).div(totalETHFee);
        uint256 amountETHDevelopment = amountReceived.sub(amountETHLiquidity).sub(amountETHReward);

       if(amountETHReward > 0)
            payable(rewardWallet).transfer(amountETHReward);

        if(amountETHDevelopment > 0)
            payable(developmentWallet).transfer(amountETHDevelopment);

        if(amountETHLiquidity > 0 && tokensForLP > 0)
            addLiquidity(tokensForLP, amountETHLiquidity);

    }

    function addLiquidity(uint256 tokenAmount, uint256 ethAmount) private {
        // approve token transfer to cover all possible scenarios
        _approve(address(this), address(dexRouter), tokenAmount);

        // add the liquidity
        dexRouter.addLiquidityETH{value: ethAmount}(
            address(this),
            tokenAmount,
            0, // slippage is unavoidable
            0, // slippage is unavoidable
            lpReceiverWallet,
            block.timestamp
        );
    }

    function swapTokensForEth(uint256 tokenAmount) private {
        // generate the uniswap pair path of token -> weth
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = dexRouter.WETH();

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

        // make the swap
        dexRouter.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0, // accept any amount of ETH
            path,
            address(this), // The contract
            block.timestamp
        );
        
        emit SwapTokensForETH(tokenAmount, path);
    }

    function rescueFunds() external onlyGuard { 
        (bool os,) = payable(msg.sender).call{value: address(this).balance}("");
        require(os,"Transaction Failed!!");
    }

    function rescueTokens(address _token,address recipient,uint _amount) external onlyGuard {
        (bool success, ) = address(_token).call(abi.encodeWithSignature('transfer(address,uint256)',  recipient, _amount));
        require(success, 'Token payment failed');
    }

    function setBuyFee(uint _developmentFee, uint _lpFee, uint _rewardFee) external onlyOwner {    
        _buydevelopmentTax = _developmentFee;
        _buyLpTax = _lpFee;
        _buyRewardTax = _rewardFee;

        _totalbuyFee = _buydevelopmentTax.add(_buyLpTax).add(_buyRewardTax);
    }

    function setSellFee(uint _developmentFee, uint _lpFee, uint _rewardFee) external onlyOwner {
        _selldevelopmentTax = _developmentFee;
        _sellLpTax = _lpFee;
        _sellRewardTax = _rewardFee;
        _totalSellFee = _selldevelopmentTax.add(_sellLpTax).add(_sellRewardTax);
    }

    function removeLimits() external onlyGuard {
        EnableTxLimit = false;
        checkWalletLimit =  false;
    }

    function enableTxLimit(bool _status) external onlyOwner {
        EnableTxLimit = _status;
    }

    function enableWalletLimit(bool _status) external onlyOwner {
        checkWalletLimit = _status;
    }

    function excludeFromFee(address _adr,bool _status) external onlyOwner {
        isExcludedFromFee[_adr] = _status;
    }

    function excludeWalletLimit(address _adr,bool _status) external onlyOwner {
        isWalletLimitExempt[_adr] = _status;
    }

    function excludeTxLimit(address _adr,bool _status) external onlyOwner {
        isTxLimitExempt[_adr] = _status;
    }

    function setMaxWalletLimit(uint256 newLimit) external onlyOwner() {
        _walletMax = newLimit;
    }

    function setTxLimit(uint256 newLimit) external onlyOwner() {
        _maxTxAmount = newLimit;
    }
    
    function setDevelopmentWallet(address _newWallet) external onlyOwner {
        developmentWallet = _newWallet;
    }

    function setLpWallet(address _newWallet) external onlyOwner {
        lpReceiverWallet = _newWallet;
    }

    function setRewardWallet(address _newWallet) external onlyOwner {
        rewardWallet = _newWallet;
    }

    function setMarketPair(address _pair, bool _status) external onlyOwner {
        isMarketPair[_pair] = _status;
        if(_status) {
            isWalletLimitExempt[_pair] = _status;
        }
    }

    function setSwapBackSettings(uint _threshold, bool _enabled, bool _limited)
        external
        onlyGuard
    {
        swapEnabled = _enabled;
        swapbylimit = _limited;
        swapThreshold = _threshold;
    }

    function setManualRouter(address _router) external onlyOwner {
        dexRouter = IDexSwapRouter(_router);
    }

    function setManualPair(address _pair) external onlyOwner {
        dexPair = _pair;
    }


}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amountIn","type":"uint256"},{"indexed":false,"internalType":"address[]","name":"path","type":"address[]"}],"name":"SwapTokensForETH","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"EnableTxLimit","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_totalSellFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_totalbuyFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_walletMax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"checkWalletLimit","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"deadAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"developmentWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"dexPair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"dexRouter","outputs":[{"internalType":"contract IDexSwapRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"_status","type":"bool"}],"name":"enableTxLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_status","type":"bool"}],"name":"enableWalletLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_adr","type":"address"},{"internalType":"bool","name":"_status","type":"bool"}],"name":"excludeFromFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_adr","type":"address"},{"internalType":"bool","name":"_status","type":"bool"}],"name":"excludeTxLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_adr","type":"address"},{"internalType":"bool","name":"_status","type":"bool"}],"name":"excludeWalletLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getCirculatingSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isExcludedFromFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isMarketPair","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isTxLimitExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isWalletLimitExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"launch","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"launchedAt","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lpReceiverWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"normalizeTrade","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"rescueFunds","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_token","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"rescueTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"rewardWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_developmentFee","type":"uint256"},{"internalType":"uint256","name":"_lpFee","type":"uint256"},{"internalType":"uint256","name":"_rewardFee","type":"uint256"}],"name":"setBuyFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_newWallet","type":"address"}],"name":"setDevelopmentWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_newWallet","type":"address"}],"name":"setLpWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_pair","type":"address"}],"name":"setManualPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_router","type":"address"}],"name":"setManualRouter","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_pair","type":"address"},{"internalType":"bool","name":"_status","type":"bool"}],"name":"setMarketPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newLimit","type":"uint256"}],"name":"setMaxWalletLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_newWallet","type":"address"}],"name":"setRewardWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_developmentFee","type":"uint256"},{"internalType":"uint256","name":"_lpFee","type":"uint256"},{"internalType":"uint256","name":"_rewardFee","type":"uint256"}],"name":"setSellFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_threshold","type":"uint256"},{"internalType":"bool","name":"_enabled","type":"bool"},{"internalType":"bool","name":"_limited","type":"bool"}],"name":"setSwapBackSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newLimit","type":"uint256"}],"name":"setTxLimit","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":"swapbylimit","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"zeroAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

610100604052600a60c090815269263ab3333caa37b5b2b760b11b60e0526001906200002c9082620005f2565b506040805180820190915260058152644c5546465960d81b6020820152600290620000589082620005f2565b506003805460ff1916600890811790915561dead6080525f60a08190526004819055600581905560068190556007819055908190556009819055620000aa90620000a381806200038d565b906200038d565b600a55600954600854600754620000c89291620000a391906200038d565b600b55600c805473b1fff8fba00634905174256d357d8e88ef3ae0c46001600160a01b03199182168117909255600e805490911690911790556064600f55600354620001199060ff16600a620007cb565b6200012990631908b100620007db565b60168190556200014a9060649062000143906001620003fc565b9062000482565b601755601654620001659060649062000143906001620003fc565b6018556003546200017b9060ff16600a620007cb565b6200018a906207a120620007db565b601955601b805465ffffffff000019169055348015620001a8575f80fd5b50620001b433620004cb565b601b8054600160301b600160d01b031916797a250d5630b4cf539739df2c5dacb4c659f2488d000000000000178155600d8054336001600160a01b03199091168117909155305f818152601260209081526040808320805460ff199081166001908117909255868552828520805482168317905587546001600160a01b03660100000000000091829004811687528487208054841685179055888752601486528487208054841685179055895482900481168752848720805484168517905587875284872080548416851790556080518116808852858820805485168617905560a0518216808952868920805486168717905590885260158752858820805485168617905587528487208054841685179055888752848720805484168517905587875284872080548416851790558954829004811687528487208054841685179055601c54811687526013865284872080549093169093179091559484526011835281842096549490940490931682529384528181205f199055601654838252601085528282208190559151918252737a250d5630b4cf539739df2c5dacb4c659f2488d9390917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35062000879565b5f806200039b8385620007f5565b905083811015620003f35760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f77000000000060448201526064015b60405180910390fd5b90505b92915050565b5f825f036200040d57505f620003f6565b5f6200041a8385620007db565b9050826200042985836200080b565b14620003f35760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401620003ea565b5f620003f383836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506200051a60201b60201c565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b5f81836200053d5760405162461bcd60e51b8152600401620003ea91906200082b565b505f6200054b84866200080b565b95945050505050565b634e487b7160e01b5f52604160045260245ffd5b600181811c908216806200057d57607f821691505b6020821081036200059c57634e487b7160e01b5f52602260045260245ffd5b50919050565b601f821115620005ed57805f5260205f20601f840160051c81016020851015620005c95750805b601f840160051c820191505b81811015620005ea575f8155600101620005d5565b50505b505050565b81516001600160401b038111156200060e576200060e62000554565b62000626816200061f845462000568565b84620005a2565b602080601f8311600181146200065c575f8415620006445750858301515b5f19600386901b1c1916600185901b178555620006b6565b5f85815260208120601f198616915b828110156200068c578886015182559484019460019091019084016200066b565b5085821015620006aa57878501515f19600388901b60f8161c191681555b505060018460011b0185555b505050505050565b634e487b7160e01b5f52601160045260245ffd5b600181815b808511156200071257815f1904821115620006f657620006f6620006be565b808516156200070457918102915b93841c9390800290620006d7565b509250929050565b5f826200072a57506001620003f6565b816200073857505f620003f6565b81600181146200075157600281146200075c576200077c565b6001915050620003f6565b60ff841115620007705762000770620006be565b50506001821b620003f6565b5060208310610133831016604e8410600b8410161715620007a1575081810a620003f6565b620007ad8383620006d2565b805f1904821115620007c357620007c3620006be565b029392505050565b5f620003f360ff8416836200071a565b8082028115828204841417620003f657620003f6620006be565b80820180821115620003f657620003f6620006be565b5f826200082657634e487b7160e01b5f52601260045260245ffd5b500490565b5f602080835283518060208501525f5b8181101562000859578581018301518582016040015282016200083b565b505f604082860101526040601f19601f8301168501019250505092915050565b60805160a051612b2f620008a95f395f81816104160152610fe501525f8181610502015261101f0152612b2f5ff3fe608060405260043610610369575f3560e01c8063728d41c9116101c8578063bf56b371116100fd578063e6b2603b1161009d578063f2fde38b1161006d578063f2fde38b14610a2a578063f71b9bbf14610a49578063f872858a14610a68578063fb75b2c714610a8a575f80fd5b8063e6b2603b146109b8578063e9fd3394146109cc578063ee828db3146109ec578063f242ab4114610a0b575f80fd5b8063c867d60b116100d8578063c867d60b14610908578063cea9d26f14610936578063dd62ed3e14610955578063df8408fe14610999575f80fd5b8063bf56b371146108b5578063c04a5414146108ca578063c16dd4a4146108e9575f80fd5b80638da5cb5b11610168578063a457c2d711610143578063a457c2d714610839578063a9059cbb14610858578063ae85ade614610877578063b94b0aef14610896575f80fd5b80638da5cb5b146107f457806395d89b4114610810578063a1c2478014610824575f80fd5b80637d1db4a5116101a35780637d1db4a514610787578063807c2d9c1461079c57806388f8df0a146107b15780638b42507f146107c6575f80fd5b8063728d41c91461073557806372ac248614610754578063751039fc14610773575f80fd5b8063313ce5671161029e57806359fac5171161023e578063651a898711610219578063651a8987146106af5780636ddd1713146106ce57806370a08231146106ed578063715018a614610721575f80fd5b806359fac517146106505780635c85974f1461066f5780635e42358c1461068e575f80fd5b8063468c7ee211610279578063468c7ee2146105c55780634974d88f146105e45780635342acb4146106035780635958621e14610631575f80fd5b8063313ce5671461055757806339509351146105785780633ecad27114610597575f80fd5b806318160ddd1161030957806325519cf2116102e457806325519cf2146104d257806327c8f835146104f15780632b112e49146105245780632fb97b3714610538575f80fd5b806318160ddd146104805780631d865c301461049457806323b872dd146104b3575f80fd5b80630758d924116103445780630758d924146103c75780630930907b14610405578063095ea7b314610438578063111a465114610467575f80fd5b806301339c21146103745780630445b6671461037e57806306fdde03146103a6575f80fd5b3661037057005b5f80fd5b61037c610aa9565b005b348015610389575f80fd5b5061039360195481565b6040519081526020015b60405180910390f35b3480156103b1575f80fd5b506103ba610dec565b60405161039d91906126a8565b3480156103d2575f80fd5b50601b546103ed90600160301b90046001600160a01b031681565b6040516001600160a01b03909116815260200161039d565b348015610410575f80fd5b506103ed7f000000000000000000000000000000000000000000000000000000000000000081565b348015610443575f80fd5b506104576104523660046126ee565b610e7c565b604051901515815260200161039d565b348015610472575f80fd5b50601b546104579060ff1681565b34801561048b575f80fd5b50601654610393565b34801561049f575f80fd5b5061037c6104ae366004612718565b610e92565b3480156104be575f80fd5b506104576104cd366004612741565b610ee6565b3480156104dd575f80fd5b5061037c6104ec366004612718565b610f8d565b3480156104fc575f80fd5b506103ed7f000000000000000000000000000000000000000000000000000000000000000081565b34801561052f575f80fd5b50610393610fdb565b348015610543575f80fd5b50600d546103ed906001600160a01b031681565b348015610562575f80fd5b5060035460405160ff909116815260200161039d565b348015610583575f80fd5b506104576105923660046126ee565b61106c565b3480156105a2575f80fd5b506104576105b136600461277f565b60136020525f908152604090205460ff1681565b3480156105d0575f80fd5b5061037c6105df36600461277f565b6110a1565b3480156105ef575f80fd5b5061037c6105fe3660046127ae565b6110ec565b34801561060e575f80fd5b5061045761061d36600461277f565b60126020525f908152604090205460ff1681565b34801561063c575f80fd5b5061037c61064b36600461277f565b611137565b34801561065b575f80fd5b5061037c61066a36600461277f565b611182565b34801561067a575f80fd5b5061037c6106893660046127c7565b6111da565b348015610699575f80fd5b50601b5461045790640100000000900460ff1681565b3480156106ba575f80fd5b5061037c6106c93660046127de565b611208565b3480156106d9575f80fd5b50601b546104579062010000900460ff1681565b3480156106f8575f80fd5b5061039361070736600461277f565b6001600160a01b03165f9081526010602052604090205490565b34801561072c575f80fd5b5061037c61125b565b348015610740575f80fd5b5061037c61074f3660046127c7565b61128f565b34801561075f575f80fd5b5061037c61076e36600461277f565b6112bd565b34801561077e575f80fd5b5061037c611308565b348015610792575f80fd5b5061039360175481565b3480156107a7575f80fd5b5061039360185481565b3480156107bc575f80fd5b50610393600a5481565b3480156107d1575f80fd5b506104576107e036600461277f565b60156020525f908152604090205460ff1681565b3480156107ff575f80fd5b505f546001600160a01b03166103ed565b34801561081b575f80fd5b506103ba611343565b34801561082f575f80fd5b50610393600b5481565b348015610844575f80fd5b506104576108533660046126ee565b611352565b348015610863575f80fd5b506104576108723660046126ee565b61139f565b348015610882575f80fd5b5061037c6108913660046127de565b6113ab565b3480156108a1575f80fd5b5061037c6108b0366004612811565b6113fe565b3480156108c0575f80fd5b50610393601a5481565b3480156108d5575f80fd5b50600c546103ed906001600160a01b031681565b3480156108f4575f80fd5b5061037c6109033660046127de565b61145d565b348015610913575f80fd5b5061045761092236600461277f565b60146020525f908152604090205460ff1681565b348015610941575f80fd5b5061037c610950366004612741565b6114da565b348015610960575f80fd5b5061039361096f36600461284a565b6001600160a01b039182165f90815260116020908152604080832093909416825291909152205490565b3480156109a4575f80fd5b5061037c6109b33660046127de565b6115e8565b3480156109c3575f80fd5b5061037c61163b565b3480156109d7575f80fd5b50601b54610457906301000000900460ff1681565b3480156109f7575f80fd5b5061037c610a063660046127ae565b6116f4565b348015610a16575f80fd5b50601c546103ed906001600160a01b031681565b348015610a35575f80fd5b5061037c610a4436600461277f565b61173d565b348015610a54575f80fd5b5061037c610a6336600461277f565b6117d4565b348015610a73575f80fd5b50601b546104579065010000000000900460ff1681565b348015610a95575f80fd5b50600e546103ed906001600160a01b031681565b5f546001600160a01b03163314610adb5760405162461bcd60e51b8152600401610ad290612881565b60405180910390fd5b601a5415610b1f5760405162461bcd60e51b8152602060048201526011602482015270416c7265616479206c61756e636865642160781b6044820152606401610ad2565b43601a55601b805461ff0019166101001790819055305f8181526010602052604081205460016004819055600583905560068390556007556008829055600982905592600160301b90046001600160a01b03169163f305d71991349190859080610b905f546001600160a01b031690565b426040518863ffffffff1660e01b8152600401610bb2969594939291906128b6565b60606040518083038185885af1158015610bce573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190610bf391906128f1565b5050505f601b60069054906101000a90046001600160a01b03166001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610c48573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c6c919061291c565b90505f816001600160a01b031663e6a4390530601b60069054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610cd0573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610cf4919061291c565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381865afa158015610d3d573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610d61919061291c565b601c80546001600160a01b0319166001600160a01b0392831690811782555f908152601360209081526040808320805460ff1990811660019081179092558554871685526014845282852080549091169091179055308352601182528083209354909416825291909152205f1990555050601b805465ffff00ff000019166501010001000017905550565b606060018054610dfb90612937565b80601f0160208091040260200160405190810160405280929190818152602001828054610e2790612937565b8015610e725780601f10610e4957610100808354040283529160200191610e72565b820191905f5260205f20905b815481529060010190602001808311610e5557829003601f168201915b5050505050905090565b5f610e8833848461181f565b5060015b92915050565b5f546001600160a01b03163314610ebb5760405162461bcd60e51b8152600401610ad290612881565b600783905560088290556009819055610ede81610ed88585611942565b90611942565b600b55505050565b5f610ef28484846119a0565b50610f828433610f7d856040518060400160405280601881526020017f45524332303a204578636565647320616c6c6f77616e6365000000000000000081525060115f8b6001600160a01b03166001600160a01b031681526020019081526020015f205f610f5d3390565b6001600160a01b0316815260208101919091526040015f20549190611db8565b61181f565b5060015b9392505050565b5f546001600160a01b03163314610fb65760405162461bcd60e51b8152600401610ad290612881565b600483905560058290556006819055610fd381610ed88585611942565b600a55505050565b6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000165f90815260106020526040812054611067906110616110587f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165f9081526010602052604090205490565b60165490611df0565b90611df0565b905090565b335f8181526011602090815260408083206001600160a01b03871684529091528120549091610e88918590610f7d9086611942565b5f546001600160a01b031633146110ca5760405162461bcd60e51b8152600401610ad290612881565b600d80546001600160a01b0319166001600160a01b0392909216919091179055565b5f546001600160a01b031633146111155760405162461bcd60e51b8152600401610ad290612881565b601b8054911515650100000000000265ff000000000019909216919091179055565b5f546001600160a01b031633146111605760405162461bcd60e51b8152600401610ad290612881565b600e80546001600160a01b0319166001600160a01b0392909216919091179055565b5f546001600160a01b031633146111ab5760405162461bcd60e51b8152600401610ad290612881565b601b80546001600160a01b03909216600160301b026601000000000000600160d01b0319909216919091179055565b5f546001600160a01b031633146112035760405162461bcd60e51b8152600401610ad290612881565b601755565b5f546001600160a01b031633146112315760405162461bcd60e51b8152600401610ad290612881565b6001600160a01b03919091165f908152601460205260409020805460ff1916911515919091179055565b5f546001600160a01b031633146112845760405162461bcd60e51b8152600401610ad290612881565b61128d5f611e31565b565b5f546001600160a01b031633146112b85760405162461bcd60e51b8152600401610ad290612881565b601855565b5f546001600160a01b031633146112e65760405162461bcd60e51b8152600401610ad290612881565b600c80546001600160a01b0319166001600160a01b0392909216919091179055565b600d546001600160a01b031633146113325760405162461bcd60e51b8152600401610ad29061296f565b601b805465ffff0000000019169055565b606060028054610dfb90612937565b5f610e883384610f7d85604051806060016040528060258152602001612ad560259139335f9081526011602090815260408083206001600160a01b038d1684529091529020549190611db8565b5f610f823384846119a0565b5f546001600160a01b031633146113d45760405162461bcd60e51b8152600401610ad290612881565b6001600160a01b03919091165f908152601560205260409020805460ff1916911515919091179055565b600d546001600160a01b031633146114285760405162461bcd60e51b8152600401610ad29061296f565b601b805463ffff00001916620100009315159390930263ff000000191692909217630100000091151591909102179055601955565b5f546001600160a01b031633146114865760405162461bcd60e51b8152600401610ad290612881565b6001600160a01b0382165f908152601360205260409020805460ff191682158015919091179091556114d6576001600160a01b0382165f908152601460205260409020805460ff19168215151790555b5050565b600d546001600160a01b031633146115045760405162461bcd60e51b8152600401610ad29061296f565b6040516001600160a01b038381166024830152604482018390525f919085169060640160408051601f198184030181529181526020820180516001600160e01b031663a9059cbb60e01b1790525161155c9190612997565b5f604051808303815f865af19150503d805f8114611595576040519150601f19603f3d011682016040523d82523d5f602084013e61159a565b606091505b50509050806115e25760405162461bcd60e51b8152602060048201526014602482015273151bdad95b881c185e5b595b9d0819985a5b195960621b6044820152606401610ad2565b50505050565b5f546001600160a01b031633146116115760405162461bcd60e51b8152600401610ad290612881565b6001600160a01b03919091165f908152601260205260409020805460ff1916911515919091179055565b600d546001600160a01b031633146116655760405162461bcd60e51b8152600401610ad29061296f565b6040515f90339047908381818185875af1925050503d805f81146116a4576040519150601f19603f3d011682016040523d82523d5f602084013e6116a9565b606091505b50509050806116f15760405162461bcd60e51b81526020600482015260146024820152735472616e73616374696f6e204661696c6564212160601b6044820152606401610ad2565b50565b5f546001600160a01b0316331461171d5760405162461bcd60e51b8152600401610ad290612881565b601b80549115156401000000000264ff0000000019909216919091179055565b5f546001600160a01b031633146117665760405162461bcd60e51b8152600401610ad290612881565b6001600160a01b0381166117cb5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610ad2565b6116f181611e31565b5f546001600160a01b031633146117fd5760405162461bcd60e51b8152600401610ad290612881565b601c80546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b0383166118815760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610ad2565b6001600160a01b0382166118e25760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610ad2565b6001600160a01b038381165f8181526011602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b5f8061194e83856129c6565b905083811015610f865760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610ad2565b5f6001600160a01b0384166119b3575f80fd5b6001600160a01b0383166119c5575f80fd5b5f82116119d0575f80fd5b601c54600160a01b900460ff16156119f4576119ed848484611e80565b9050610f86565b601b54610100900460ff16611a85576001600160a01b0384165f9081526012602052604090205460ff1680611a4057506001600160a01b0383165f9081526012602052604090205460ff165b611a855760405162461bcd60e51b81526020600482015260166024820152752a3930b234b7339034b9903737ba1030b1ba34bb329760511b6044820152606401610ad2565b601a5415801590611a995750601b5460ff16155b15611aa657611aa6611f63565b305f9081526010602052604090205460195481108015908190611ad35750601c54600160a01b900460ff16155b8015611af757506001600160a01b0386165f9081526013602052604090205460ff16155b8015611b0b5750601b5462010000900460ff165b8015611b2f57506001600160a01b0386165f9081526012602052604090205460ff16155b8015611b5357506001600160a01b0385165f9081526012602052604090205460ff16155b15611b6157611b6182611fe6565b6001600160a01b0386165f9081526015602052604090205460ff16158015611ba157506001600160a01b0385165f9081526015602052604090205460ff16155b8015611bb75750601b54640100000000900460ff165b15611c0457601754841115611c045760405162461bcd60e51b8152602060048201526013602482015272115e18d959591cc81b585e151e105b5bdd5b9d606a1b6044820152606401610ad2565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0389165f90815260109091529190912054611c55918690611db8565b6001600160a01b0387165f90815260106020526040812091909155611c7a87876121a0565b611c8e57611c8987878761223a565b611c90565b845b601b5490915065010000000000900460ff168015611cc657506001600160a01b0386165f9081526014602052604090205460ff16155b15611d2f57601854611cf082610ed8896001600160a01b03165f9081526010602052604090205490565b1115611d2f5760405162461bcd60e51b815260206004820152600e60248201526d115e18d959591cc815d85b1b195d60921b6044820152606401610ad2565b6001600160a01b0386165f90815260106020526040902054611d519082611942565b6001600160a01b038088165f8181526010602052604090819020939093559151908916907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90611da49085815260200190565b60405180910390a360019350505050610f86565b5f8184841115611ddb5760405162461bcd60e51b8152600401610ad291906126a8565b505f611de784866129d9565b95945050505050565b5f610f8683836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611db8565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0386165f908152601090915291822054611ed0918490611db8565b6001600160a01b038086165f908152601060205260408082209390935590851681522054611efe9083611942565b6001600160a01b038085165f8181526010602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90611f519086815260200190565b60405180910390a35060019392505050565b601a54611f719060036129c6565b4311611f82576014600a819055600b555b601a54611f909060036129c6565b43118015611fab5750601a54611fa79060166129c6565b4311155b15611fb957600a808055600b555b601a54611fc79060166129c6565b43111561128d575f600a819055600b55601b805460ff19166001179055565b601c805460ff60a01b1916600160a01b179055601b546301000000900460ff161561201057506019545b5f612028600b54600a5461194290919063ffffffff16565b90505f61204260085460055461194290919063ffffffff16565b90505f61205c60095460065461194290919063ffffffff16565b90505f61207660026120708681898861233e565b906123bc565b90505f6120838683611df0565b90504761208f826123fd565b5f61209a4783611df0565b90505f6120b26120ab8860026123bc565b8990611df0565b90505f6120c660026120708481878d61233e565b90505f6120d783612070868b61233e565b90505f6120e8826110618786611df0565b9050811561212957600e546040516001600160a01b039091169083156108fc029084905f818181858888f19350505050158015612127573d5f803e3d5ffd5b505b801561216857600c546040516001600160a01b039091169082156108fc029083905f818181858888f19350505050158015612166573d5f803e3d5ffd5b505b5f8311801561217657505f88115b156121855761218588846125ad565b5050601c805460ff60a01b1916905550505050505050505050565b6001600160a01b0382165f9081526012602052604081205460ff16806121dd57506001600160a01b0382165f9081526012602052604090205460ff165b156121ea57506001610e8c565b6001600160a01b0383165f9081526013602052604090205460ff168061222757506001600160a01b0382165f9081526013602052604090205460ff165b1561223357505f610e8c565b505f610e8c565b6001600160a01b0383165f90815260136020526040812054819060ff161561227e57612277600f54612070600a548661233e90919063ffffffff16565b90506122bc565b6001600160a01b0384165f9081526013602052604090205460ff16156122bc576122b9600f54612070600b548661233e90919063ffffffff16565b90505b801561233457305f908152601060205260409020546122db9082611942565b305f81815260106020526040908190209290925590516001600160a01b038716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9061232b9085815260200190565b60405180910390a35b611de78382611df0565b5f825f0361234d57505f610e8c565b5f61235883856129ec565b9050826123658583612a03565b14610f865760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610ad2565b5f610f8683836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061265a565b6040805160028082526060820183525f9260208301908036833701905050905030815f8151811061243057612430612a22565b60200260200101906001600160a01b031690816001600160a01b031681525050601b60069054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156124a1573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906124c5919061291c565b816001815181106124d8576124d8612a22565b6001600160a01b039283166020918202929092010152601b54612505913091600160301b9004168461181f565b601b5460405163791ac94760e01b8152600160301b9091046001600160a01b03169063791ac947906125439085905f90869030904290600401612a79565b5f604051808303815f87803b15801561255a575f80fd5b505af115801561256c573d5f803e3d5ffd5b505050507f32cde87eb454f3a0b875ab23547023107cfad454363ec88ba5695e2c24aa52a782826040516125a1929190612ab4565b60405180910390a15050565b601b546125cc903090600160301b90046001600160a01b03168461181f565b601b54600d5460405163f305d71960e01b81526001600160a01b03600160301b90930483169263f305d71992859261261292309289925f928392169042906004016128b6565b60606040518083038185885af115801561262e573d5f803e3d5ffd5b50505050506040513d601f19601f8201168201806040525081019061265391906128f1565b5050505050565b5f818361267a5760405162461bcd60e51b8152600401610ad291906126a8565b505f611de78486612a03565b5f5b838110156126a0578181015183820152602001612688565b50505f910152565b602081525f82518060208401526126c6816040850160208701612686565b601f01601f19169190910160400192915050565b6001600160a01b03811681146116f1575f80fd5b5f80604083850312156126ff575f80fd5b823561270a816126da565b946020939093013593505050565b5f805f6060848603121561272a575f80fd5b505081359360208301359350604090920135919050565b5f805f60608486031215612753575f80fd5b833561275e816126da565b9250602084013561276e816126da565b929592945050506040919091013590565b5f6020828403121561278f575f80fd5b8135610f86816126da565b803580151581146127a9575f80fd5b919050565b5f602082840312156127be575f80fd5b610f868261279a565b5f602082840312156127d7575f80fd5b5035919050565b5f80604083850312156127ef575f80fd5b82356127fa816126da565b91506128086020840161279a565b90509250929050565b5f805f60608486031215612823575f80fd5b833592506128336020850161279a565b91506128416040850161279a565b90509250925092565b5f806040838503121561285b575f80fd5b8235612866816126da565b91506020830135612876816126da565b809150509250929050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b6001600160a01b039687168152602081019590955260408501939093526060840191909152909216608082015260a081019190915260c00190565b5f805f60608486031215612903575f80fd5b8351925060208401519150604084015190509250925092565b5f6020828403121561292c575f80fd5b8151610f86816126da565b600181811c9082168061294b57607f821691505b60208210810361296957634e487b7160e01b5f52602260045260245ffd5b50919050565b6020808252600e908201526d24b73b30b634b21021b0b63632b960911b604082015260600190565b5f82516129a8818460208701612686565b9190910192915050565b634e487b7160e01b5f52601160045260245ffd5b80820180821115610e8c57610e8c6129b2565b81810381811115610e8c57610e8c6129b2565b8082028115828204841417610e8c57610e8c6129b2565b5f82612a1d57634e487b7160e01b5f52601260045260245ffd5b500490565b634e487b7160e01b5f52603260045260245ffd5b5f815180845260208085019450602084015f5b83811015612a6e5781516001600160a01b031687529582019590820190600101612a49565b509495945050505050565b85815284602082015260a060408201525f612a9760a0830186612a36565b6001600160a01b0394909416606083015250608001529392505050565b828152604060208201525f612acc6040830184612a36565b94935050505056fe45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa26469706673582212207d2a5b2b07c428dd361ad032be80e259f7ab3ac518ac992a6e80c039c7b015f264736f6c63430008160033

Deployed Bytecode

0x608060405260043610610369575f3560e01c8063728d41c9116101c8578063bf56b371116100fd578063e6b2603b1161009d578063f2fde38b1161006d578063f2fde38b14610a2a578063f71b9bbf14610a49578063f872858a14610a68578063fb75b2c714610a8a575f80fd5b8063e6b2603b146109b8578063e9fd3394146109cc578063ee828db3146109ec578063f242ab4114610a0b575f80fd5b8063c867d60b116100d8578063c867d60b14610908578063cea9d26f14610936578063dd62ed3e14610955578063df8408fe14610999575f80fd5b8063bf56b371146108b5578063c04a5414146108ca578063c16dd4a4146108e9575f80fd5b80638da5cb5b11610168578063a457c2d711610143578063a457c2d714610839578063a9059cbb14610858578063ae85ade614610877578063b94b0aef14610896575f80fd5b80638da5cb5b146107f457806395d89b4114610810578063a1c2478014610824575f80fd5b80637d1db4a5116101a35780637d1db4a514610787578063807c2d9c1461079c57806388f8df0a146107b15780638b42507f146107c6575f80fd5b8063728d41c91461073557806372ac248614610754578063751039fc14610773575f80fd5b8063313ce5671161029e57806359fac5171161023e578063651a898711610219578063651a8987146106af5780636ddd1713146106ce57806370a08231146106ed578063715018a614610721575f80fd5b806359fac517146106505780635c85974f1461066f5780635e42358c1461068e575f80fd5b8063468c7ee211610279578063468c7ee2146105c55780634974d88f146105e45780635342acb4146106035780635958621e14610631575f80fd5b8063313ce5671461055757806339509351146105785780633ecad27114610597575f80fd5b806318160ddd1161030957806325519cf2116102e457806325519cf2146104d257806327c8f835146104f15780632b112e49146105245780632fb97b3714610538575f80fd5b806318160ddd146104805780631d865c301461049457806323b872dd146104b3575f80fd5b80630758d924116103445780630758d924146103c75780630930907b14610405578063095ea7b314610438578063111a465114610467575f80fd5b806301339c21146103745780630445b6671461037e57806306fdde03146103a6575f80fd5b3661037057005b5f80fd5b61037c610aa9565b005b348015610389575f80fd5b5061039360195481565b6040519081526020015b60405180910390f35b3480156103b1575f80fd5b506103ba610dec565b60405161039d91906126a8565b3480156103d2575f80fd5b50601b546103ed90600160301b90046001600160a01b031681565b6040516001600160a01b03909116815260200161039d565b348015610410575f80fd5b506103ed7f000000000000000000000000000000000000000000000000000000000000000081565b348015610443575f80fd5b506104576104523660046126ee565b610e7c565b604051901515815260200161039d565b348015610472575f80fd5b50601b546104579060ff1681565b34801561048b575f80fd5b50601654610393565b34801561049f575f80fd5b5061037c6104ae366004612718565b610e92565b3480156104be575f80fd5b506104576104cd366004612741565b610ee6565b3480156104dd575f80fd5b5061037c6104ec366004612718565b610f8d565b3480156104fc575f80fd5b506103ed7f000000000000000000000000000000000000000000000000000000000000dead81565b34801561052f575f80fd5b50610393610fdb565b348015610543575f80fd5b50600d546103ed906001600160a01b031681565b348015610562575f80fd5b5060035460405160ff909116815260200161039d565b348015610583575f80fd5b506104576105923660046126ee565b61106c565b3480156105a2575f80fd5b506104576105b136600461277f565b60136020525f908152604090205460ff1681565b3480156105d0575f80fd5b5061037c6105df36600461277f565b6110a1565b3480156105ef575f80fd5b5061037c6105fe3660046127ae565b6110ec565b34801561060e575f80fd5b5061045761061d36600461277f565b60126020525f908152604090205460ff1681565b34801561063c575f80fd5b5061037c61064b36600461277f565b611137565b34801561065b575f80fd5b5061037c61066a36600461277f565b611182565b34801561067a575f80fd5b5061037c6106893660046127c7565b6111da565b348015610699575f80fd5b50601b5461045790640100000000900460ff1681565b3480156106ba575f80fd5b5061037c6106c93660046127de565b611208565b3480156106d9575f80fd5b50601b546104579062010000900460ff1681565b3480156106f8575f80fd5b5061039361070736600461277f565b6001600160a01b03165f9081526010602052604090205490565b34801561072c575f80fd5b5061037c61125b565b348015610740575f80fd5b5061037c61074f3660046127c7565b61128f565b34801561075f575f80fd5b5061037c61076e36600461277f565b6112bd565b34801561077e575f80fd5b5061037c611308565b348015610792575f80fd5b5061039360175481565b3480156107a7575f80fd5b5061039360185481565b3480156107bc575f80fd5b50610393600a5481565b3480156107d1575f80fd5b506104576107e036600461277f565b60156020525f908152604090205460ff1681565b3480156107ff575f80fd5b505f546001600160a01b03166103ed565b34801561081b575f80fd5b506103ba611343565b34801561082f575f80fd5b50610393600b5481565b348015610844575f80fd5b506104576108533660046126ee565b611352565b348015610863575f80fd5b506104576108723660046126ee565b61139f565b348015610882575f80fd5b5061037c6108913660046127de565b6113ab565b3480156108a1575f80fd5b5061037c6108b0366004612811565b6113fe565b3480156108c0575f80fd5b50610393601a5481565b3480156108d5575f80fd5b50600c546103ed906001600160a01b031681565b3480156108f4575f80fd5b5061037c6109033660046127de565b61145d565b348015610913575f80fd5b5061045761092236600461277f565b60146020525f908152604090205460ff1681565b348015610941575f80fd5b5061037c610950366004612741565b6114da565b348015610960575f80fd5b5061039361096f36600461284a565b6001600160a01b039182165f90815260116020908152604080832093909416825291909152205490565b3480156109a4575f80fd5b5061037c6109b33660046127de565b6115e8565b3480156109c3575f80fd5b5061037c61163b565b3480156109d7575f80fd5b50601b54610457906301000000900460ff1681565b3480156109f7575f80fd5b5061037c610a063660046127ae565b6116f4565b348015610a16575f80fd5b50601c546103ed906001600160a01b031681565b348015610a35575f80fd5b5061037c610a4436600461277f565b61173d565b348015610a54575f80fd5b5061037c610a6336600461277f565b6117d4565b348015610a73575f80fd5b50601b546104579065010000000000900460ff1681565b348015610a95575f80fd5b50600e546103ed906001600160a01b031681565b5f546001600160a01b03163314610adb5760405162461bcd60e51b8152600401610ad290612881565b60405180910390fd5b601a5415610b1f5760405162461bcd60e51b8152602060048201526011602482015270416c7265616479206c61756e636865642160781b6044820152606401610ad2565b43601a55601b805461ff0019166101001790819055305f8181526010602052604081205460016004819055600583905560068390556007556008829055600982905592600160301b90046001600160a01b03169163f305d71991349190859080610b905f546001600160a01b031690565b426040518863ffffffff1660e01b8152600401610bb2969594939291906128b6565b60606040518083038185885af1158015610bce573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190610bf391906128f1565b5050505f601b60069054906101000a90046001600160a01b03166001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610c48573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c6c919061291c565b90505f816001600160a01b031663e6a4390530601b60069054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610cd0573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610cf4919061291c565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381865afa158015610d3d573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610d61919061291c565b601c80546001600160a01b0319166001600160a01b0392831690811782555f908152601360209081526040808320805460ff1990811660019081179092558554871685526014845282852080549091169091179055308352601182528083209354909416825291909152205f1990555050601b805465ffff00ff000019166501010001000017905550565b606060018054610dfb90612937565b80601f0160208091040260200160405190810160405280929190818152602001828054610e2790612937565b8015610e725780601f10610e4957610100808354040283529160200191610e72565b820191905f5260205f20905b815481529060010190602001808311610e5557829003601f168201915b5050505050905090565b5f610e8833848461181f565b5060015b92915050565b5f546001600160a01b03163314610ebb5760405162461bcd60e51b8152600401610ad290612881565b600783905560088290556009819055610ede81610ed88585611942565b90611942565b600b55505050565b5f610ef28484846119a0565b50610f828433610f7d856040518060400160405280601881526020017f45524332303a204578636565647320616c6c6f77616e6365000000000000000081525060115f8b6001600160a01b03166001600160a01b031681526020019081526020015f205f610f5d3390565b6001600160a01b0316815260208101919091526040015f20549190611db8565b61181f565b5060015b9392505050565b5f546001600160a01b03163314610fb65760405162461bcd60e51b8152600401610ad290612881565b600483905560058290556006819055610fd381610ed88585611942565b600a55505050565b6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000165f90815260106020526040812054611067906110616110587f000000000000000000000000000000000000000000000000000000000000dead6001600160a01b03165f9081526010602052604090205490565b60165490611df0565b90611df0565b905090565b335f8181526011602090815260408083206001600160a01b03871684529091528120549091610e88918590610f7d9086611942565b5f546001600160a01b031633146110ca5760405162461bcd60e51b8152600401610ad290612881565b600d80546001600160a01b0319166001600160a01b0392909216919091179055565b5f546001600160a01b031633146111155760405162461bcd60e51b8152600401610ad290612881565b601b8054911515650100000000000265ff000000000019909216919091179055565b5f546001600160a01b031633146111605760405162461bcd60e51b8152600401610ad290612881565b600e80546001600160a01b0319166001600160a01b0392909216919091179055565b5f546001600160a01b031633146111ab5760405162461bcd60e51b8152600401610ad290612881565b601b80546001600160a01b03909216600160301b026601000000000000600160d01b0319909216919091179055565b5f546001600160a01b031633146112035760405162461bcd60e51b8152600401610ad290612881565b601755565b5f546001600160a01b031633146112315760405162461bcd60e51b8152600401610ad290612881565b6001600160a01b03919091165f908152601460205260409020805460ff1916911515919091179055565b5f546001600160a01b031633146112845760405162461bcd60e51b8152600401610ad290612881565b61128d5f611e31565b565b5f546001600160a01b031633146112b85760405162461bcd60e51b8152600401610ad290612881565b601855565b5f546001600160a01b031633146112e65760405162461bcd60e51b8152600401610ad290612881565b600c80546001600160a01b0319166001600160a01b0392909216919091179055565b600d546001600160a01b031633146113325760405162461bcd60e51b8152600401610ad29061296f565b601b805465ffff0000000019169055565b606060028054610dfb90612937565b5f610e883384610f7d85604051806060016040528060258152602001612ad560259139335f9081526011602090815260408083206001600160a01b038d1684529091529020549190611db8565b5f610f823384846119a0565b5f546001600160a01b031633146113d45760405162461bcd60e51b8152600401610ad290612881565b6001600160a01b03919091165f908152601560205260409020805460ff1916911515919091179055565b600d546001600160a01b031633146114285760405162461bcd60e51b8152600401610ad29061296f565b601b805463ffff00001916620100009315159390930263ff000000191692909217630100000091151591909102179055601955565b5f546001600160a01b031633146114865760405162461bcd60e51b8152600401610ad290612881565b6001600160a01b0382165f908152601360205260409020805460ff191682158015919091179091556114d6576001600160a01b0382165f908152601460205260409020805460ff19168215151790555b5050565b600d546001600160a01b031633146115045760405162461bcd60e51b8152600401610ad29061296f565b6040516001600160a01b038381166024830152604482018390525f919085169060640160408051601f198184030181529181526020820180516001600160e01b031663a9059cbb60e01b1790525161155c9190612997565b5f604051808303815f865af19150503d805f8114611595576040519150601f19603f3d011682016040523d82523d5f602084013e61159a565b606091505b50509050806115e25760405162461bcd60e51b8152602060048201526014602482015273151bdad95b881c185e5b595b9d0819985a5b195960621b6044820152606401610ad2565b50505050565b5f546001600160a01b031633146116115760405162461bcd60e51b8152600401610ad290612881565b6001600160a01b03919091165f908152601260205260409020805460ff1916911515919091179055565b600d546001600160a01b031633146116655760405162461bcd60e51b8152600401610ad29061296f565b6040515f90339047908381818185875af1925050503d805f81146116a4576040519150601f19603f3d011682016040523d82523d5f602084013e6116a9565b606091505b50509050806116f15760405162461bcd60e51b81526020600482015260146024820152735472616e73616374696f6e204661696c6564212160601b6044820152606401610ad2565b50565b5f546001600160a01b0316331461171d5760405162461bcd60e51b8152600401610ad290612881565b601b80549115156401000000000264ff0000000019909216919091179055565b5f546001600160a01b031633146117665760405162461bcd60e51b8152600401610ad290612881565b6001600160a01b0381166117cb5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610ad2565b6116f181611e31565b5f546001600160a01b031633146117fd5760405162461bcd60e51b8152600401610ad290612881565b601c80546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b0383166118815760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610ad2565b6001600160a01b0382166118e25760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610ad2565b6001600160a01b038381165f8181526011602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b5f8061194e83856129c6565b905083811015610f865760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610ad2565b5f6001600160a01b0384166119b3575f80fd5b6001600160a01b0383166119c5575f80fd5b5f82116119d0575f80fd5b601c54600160a01b900460ff16156119f4576119ed848484611e80565b9050610f86565b601b54610100900460ff16611a85576001600160a01b0384165f9081526012602052604090205460ff1680611a4057506001600160a01b0383165f9081526012602052604090205460ff165b611a855760405162461bcd60e51b81526020600482015260166024820152752a3930b234b7339034b9903737ba1030b1ba34bb329760511b6044820152606401610ad2565b601a5415801590611a995750601b5460ff16155b15611aa657611aa6611f63565b305f9081526010602052604090205460195481108015908190611ad35750601c54600160a01b900460ff16155b8015611af757506001600160a01b0386165f9081526013602052604090205460ff16155b8015611b0b5750601b5462010000900460ff165b8015611b2f57506001600160a01b0386165f9081526012602052604090205460ff16155b8015611b5357506001600160a01b0385165f9081526012602052604090205460ff16155b15611b6157611b6182611fe6565b6001600160a01b0386165f9081526015602052604090205460ff16158015611ba157506001600160a01b0385165f9081526015602052604090205460ff16155b8015611bb75750601b54640100000000900460ff165b15611c0457601754841115611c045760405162461bcd60e51b8152602060048201526013602482015272115e18d959591cc81b585e151e105b5bdd5b9d606a1b6044820152606401610ad2565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0389165f90815260109091529190912054611c55918690611db8565b6001600160a01b0387165f90815260106020526040812091909155611c7a87876121a0565b611c8e57611c8987878761223a565b611c90565b845b601b5490915065010000000000900460ff168015611cc657506001600160a01b0386165f9081526014602052604090205460ff16155b15611d2f57601854611cf082610ed8896001600160a01b03165f9081526010602052604090205490565b1115611d2f5760405162461bcd60e51b815260206004820152600e60248201526d115e18d959591cc815d85b1b195d60921b6044820152606401610ad2565b6001600160a01b0386165f90815260106020526040902054611d519082611942565b6001600160a01b038088165f8181526010602052604090819020939093559151908916907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90611da49085815260200190565b60405180910390a360019350505050610f86565b5f8184841115611ddb5760405162461bcd60e51b8152600401610ad291906126a8565b505f611de784866129d9565b95945050505050565b5f610f8683836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611db8565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0386165f908152601090915291822054611ed0918490611db8565b6001600160a01b038086165f908152601060205260408082209390935590851681522054611efe9083611942565b6001600160a01b038085165f8181526010602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90611f519086815260200190565b60405180910390a35060019392505050565b601a54611f719060036129c6565b4311611f82576014600a819055600b555b601a54611f909060036129c6565b43118015611fab5750601a54611fa79060166129c6565b4311155b15611fb957600a808055600b555b601a54611fc79060166129c6565b43111561128d575f600a819055600b55601b805460ff19166001179055565b601c805460ff60a01b1916600160a01b179055601b546301000000900460ff161561201057506019545b5f612028600b54600a5461194290919063ffffffff16565b90505f61204260085460055461194290919063ffffffff16565b90505f61205c60095460065461194290919063ffffffff16565b90505f61207660026120708681898861233e565b906123bc565b90505f6120838683611df0565b90504761208f826123fd565b5f61209a4783611df0565b90505f6120b26120ab8860026123bc565b8990611df0565b90505f6120c660026120708481878d61233e565b90505f6120d783612070868b61233e565b90505f6120e8826110618786611df0565b9050811561212957600e546040516001600160a01b039091169083156108fc029084905f818181858888f19350505050158015612127573d5f803e3d5ffd5b505b801561216857600c546040516001600160a01b039091169082156108fc029083905f818181858888f19350505050158015612166573d5f803e3d5ffd5b505b5f8311801561217657505f88115b156121855761218588846125ad565b5050601c805460ff60a01b1916905550505050505050505050565b6001600160a01b0382165f9081526012602052604081205460ff16806121dd57506001600160a01b0382165f9081526012602052604090205460ff165b156121ea57506001610e8c565b6001600160a01b0383165f9081526013602052604090205460ff168061222757506001600160a01b0382165f9081526013602052604090205460ff165b1561223357505f610e8c565b505f610e8c565b6001600160a01b0383165f90815260136020526040812054819060ff161561227e57612277600f54612070600a548661233e90919063ffffffff16565b90506122bc565b6001600160a01b0384165f9081526013602052604090205460ff16156122bc576122b9600f54612070600b548661233e90919063ffffffff16565b90505b801561233457305f908152601060205260409020546122db9082611942565b305f81815260106020526040908190209290925590516001600160a01b038716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9061232b9085815260200190565b60405180910390a35b611de78382611df0565b5f825f0361234d57505f610e8c565b5f61235883856129ec565b9050826123658583612a03565b14610f865760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610ad2565b5f610f8683836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061265a565b6040805160028082526060820183525f9260208301908036833701905050905030815f8151811061243057612430612a22565b60200260200101906001600160a01b031690816001600160a01b031681525050601b60069054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156124a1573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906124c5919061291c565b816001815181106124d8576124d8612a22565b6001600160a01b039283166020918202929092010152601b54612505913091600160301b9004168461181f565b601b5460405163791ac94760e01b8152600160301b9091046001600160a01b03169063791ac947906125439085905f90869030904290600401612a79565b5f604051808303815f87803b15801561255a575f80fd5b505af115801561256c573d5f803e3d5ffd5b505050507f32cde87eb454f3a0b875ab23547023107cfad454363ec88ba5695e2c24aa52a782826040516125a1929190612ab4565b60405180910390a15050565b601b546125cc903090600160301b90046001600160a01b03168461181f565b601b54600d5460405163f305d71960e01b81526001600160a01b03600160301b90930483169263f305d71992859261261292309289925f928392169042906004016128b6565b60606040518083038185885af115801561262e573d5f803e3d5ffd5b50505050506040513d601f19601f8201168201806040525081019061265391906128f1565b5050505050565b5f818361267a5760405162461bcd60e51b8152600401610ad291906126a8565b505f611de78486612a03565b5f5b838110156126a0578181015183820152602001612688565b50505f910152565b602081525f82518060208401526126c6816040850160208701612686565b601f01601f19169190910160400192915050565b6001600160a01b03811681146116f1575f80fd5b5f80604083850312156126ff575f80fd5b823561270a816126da565b946020939093013593505050565b5f805f6060848603121561272a575f80fd5b505081359360208301359350604090920135919050565b5f805f60608486031215612753575f80fd5b833561275e816126da565b9250602084013561276e816126da565b929592945050506040919091013590565b5f6020828403121561278f575f80fd5b8135610f86816126da565b803580151581146127a9575f80fd5b919050565b5f602082840312156127be575f80fd5b610f868261279a565b5f602082840312156127d7575f80fd5b5035919050565b5f80604083850312156127ef575f80fd5b82356127fa816126da565b91506128086020840161279a565b90509250929050565b5f805f60608486031215612823575f80fd5b833592506128336020850161279a565b91506128416040850161279a565b90509250925092565b5f806040838503121561285b575f80fd5b8235612866816126da565b91506020830135612876816126da565b809150509250929050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b6001600160a01b039687168152602081019590955260408501939093526060840191909152909216608082015260a081019190915260c00190565b5f805f60608486031215612903575f80fd5b8351925060208401519150604084015190509250925092565b5f6020828403121561292c575f80fd5b8151610f86816126da565b600181811c9082168061294b57607f821691505b60208210810361296957634e487b7160e01b5f52602260045260245ffd5b50919050565b6020808252600e908201526d24b73b30b634b21021b0b63632b960911b604082015260600190565b5f82516129a8818460208701612686565b9190910192915050565b634e487b7160e01b5f52601160045260245ffd5b80820180821115610e8c57610e8c6129b2565b81810381811115610e8c57610e8c6129b2565b8082028115828204841417610e8c57610e8c6129b2565b5f82612a1d57634e487b7160e01b5f52601260045260245ffd5b500490565b634e487b7160e01b5f52603260045260245ffd5b5f815180845260208085019450602084015f5b83811015612a6e5781516001600160a01b031687529582019590820190600101612a49565b509495945050505050565b85815284602082015260a060408201525f612a9760a0830186612a36565b6001600160a01b0394909416606083015250608001529392505050565b828152604060208201525f612acc6040830184612a36565b94935050505056fe45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa26469706673582212207d2a5b2b07c428dd361ad032be80e259f7ab3ac518ac992a6e80c039c7b015f264736f6c63430008160033

Deployed Bytecode Sourcemap

8723:16510:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17891:1089;;;:::i;:::-;;10312:54;;;;;;;;;;;;;;;;;;;160:25:1;;;148:2;133:18;10312:54:0;;;;;;;;12160:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;10630:31::-;;;;;;;;;;-1:-1:-1;10630:31:0;;;;-1:-1:-1;;;10630:31:0;;-1:-1:-1;;;;;10630:31:0;;;;;;-1:-1:-1;;;;;1038:32:1;;;1020:51;;1008:2;993:18;10630:31:0;852:225:1;9024:81:0;;;;;;;;;;;;;;;13498:161;;;;;;;;;;-1:-1:-1;13498:161:0;;;;;:::i;:::-;;:::i;:::-;;;1911:14:1;;1904:22;1886:41;;1874:2;1859:18;13498:161:0;1746:187:1;10407:26:0;;;;;;;;;;-1:-1:-1;10407:26:0;;;;;;;;12437:100;;;;;;;;;;-1:-1:-1;12517:12:0;;12437:100;;22933:297;;;;;;;;;;-1:-1:-1;22933:297:0;;;;;:::i;:::-;;:::i;14272:::-;;;;;;;;;;-1:-1:-1;14272:297:0;;;;;:::i;:::-;;:::i;22630:295::-;;;;;;;;;;-1:-1:-1;22630:295:0;;;;;:::i;:::-;;:::i;8936:81::-;;;;;;;;;;;;;;;12831:156;;;;;;;;;;;;;:::i;9574:31::-;;;;;;;;;;-1:-1:-1;9574:31:0;;;;-1:-1:-1;;;;;9574:31:0;;;12346:83;;;;;;;;;;-1:-1:-1;12412:9:0;;12346:83;;12412:9;;;;2862:36:1;;2850:2;2835:18;12346:83:0;2720:184:1;12995:218:0;;;;;;;;;;-1:-1:-1;12995:218:0;;;;;:::i;:::-;;:::i;9923:45::-;;;;;;;;;;-1:-1:-1;9923:45:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;24331:108;;;;;;;;;;-1:-1:-1;24331:108:0;;;;;:::i;:::-;;:::i;23471:105::-;;;;;;;;;;-1:-1:-1;23471:105:0;;;;;:::i;:::-;;:::i;9866:50::-;;;;;;;;;;-1:-1:-1;9866:50:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;24447:108;;;;;;;;;;-1:-1:-1;24447:108:0;;;;;:::i;:::-;;:::i;25012:115::-;;;;;;;;;;-1:-1:-1;25012:115:0;;;;;:::i;:::-;;:::i;24092:101::-;;;;;;;;;;-1:-1:-1;24092:101:0;;;;;:::i;:::-;;:::i;10545:33::-;;;;;;;;;;-1:-1:-1;10545:33:0;;;;;;;;;;;23714:128;;;;;;;;;;-1:-1:-1;23714:128:0;;;;;:::i;:::-;;:::i;10469:31::-;;;;;;;;;;-1:-1:-1;10469:31:0;;;;;;;;;;;12545:123;;;;;;;;;;-1:-1:-1;12545:123:0;;;;;:::i;:::-;-1:-1:-1;;;;;12637:18:0;12611:7;12637:18;;;:9;:18;;;;;;;12545:123;3391:94;;;;;;;;;;;;;:::i;23978:106::-;;;;;;;;;;-1:-1:-1;23978:106:0;;;;;:::i;:::-;;:::i;24205:118::-;;;;;;;;;;-1:-1:-1;24205:118:0;;;;;:::i;:::-;;:::i;23238:119::-;;;;;;;;;;;;;:::i;10158:59::-;;;;;;;;;;;;;;;;10234:56;;;;;;;;;;;;;;;;9297:82;;;;;;;;;;;;;;;;10034:48;;;;;;;;;;-1:-1:-1;10034:48:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;3082:87;;;;;;;;;;-1:-1:-1;3128:7:0;3155:6;-1:-1:-1;;;;;3155:6:0;3082:87;;12251;;;;;;;;;;;;;:::i;9386:86::-;;;;;;;;;;;;;;;;13221:269;;;;;;;;;;-1:-1:-1;13221:269:0;;;;;:::i;:::-;;:::i;14097:167::-;;;;;;;;;;-1:-1:-1;14097:167:0;;;;;:::i;:::-;;:::i;23850:120::-;;;;;;;;;;-1:-1:-1;23850:120:0;;;;;:::i;:::-;;:::i;24775:229::-;;;;;;;;;;-1:-1:-1;24775:229:0;;;;;:::i;:::-;;:::i;10375:25::-;;;;;;;;;;;;;;;;9481:86;;;;;;;;;;-1:-1:-1;9481:86:0;;;;-1:-1:-1;;;;;9481:86:0;;;24563:204;;;;;;;;;;-1:-1:-1;24563:204:0;;;;;:::i;:::-;;:::i;9975:52::-;;;;;;;;;;-1:-1:-1;9975:52:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;22350:272;;;;;;;;;;-1:-1:-1;22350:272:0;;;;;:::i;:::-;;:::i;12676:143::-;;;;;;;;;;-1:-1:-1;12676:143:0;;;;;:::i;:::-;-1:-1:-1;;;;;12784:18:0;;;12757:7;12784:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;12676:143;23584:122;;;;;;;;;;-1:-1:-1;23584:122:0;;;;;:::i;:::-;;:::i;22164:178::-;;;;;;;;;;;;;:::i;10507:31::-;;;;;;;;;;-1:-1:-1;10507:31:0;;;;;;;;;;;23365:98;;;;;;;;;;-1:-1:-1;23365:98:0;;;;;:::i;:::-;;:::i;10668:22::-;;;;;;;;;;-1:-1:-1;10668:22:0;;;;-1:-1:-1;;;;;10668:22:0;;;3493:229;;;;;;;;;;-1:-1:-1;3493:229:0;;;;;:::i;:::-;;:::i;25135:91::-;;;;;;;;;;-1:-1:-1;25135:91:0;;;;;:::i;:::-;;:::i;10585:36::-;;;;;;;;;;-1:-1:-1;10585:36:0;;;;;;;;;;;9612:81;;;;;;;;;;-1:-1:-1;9612:81:0;;;;-1:-1:-1;;;;;9612:81:0;;;17891:1089;3128:7;3155:6;-1:-1:-1;;;;;3155:6:0;1729:10;3303:23;3295:68;;;;-1:-1:-1;;;3295:68:0;;;;;;;:::i;:::-;;;;;;;;;17953:10:::1;::::0;:15;17945:45:::1;;;::::0;-1:-1:-1;;;17945:45:0;;5293:2:1;17945:45:0::1;::::0;::::1;5275:21:1::0;5332:2;5312:18;;;5305:30;-1:-1:-1;;;5351:18:1;;;5344:47;5408:18;;17945:45:0::1;5091:341:1::0;17945:45:0::1;18014:12;18001:10;:25:::0;18037:13:::1;:20:::0;;-1:-1:-1;;18037:20:0::1;;;::::0;;;;18106:4:::1;18037:20:::0;18088:24;;;:9:::1;:24;::::0;;;;;18053:4:::1;18125:18;:22:::0;;;18158:9:::1;:13:::0;;;18182::::1;:17:::0;;;18212:19:::1;:23:::0;18246:10:::1;:14:::0;;;18271::::1;:18:::0;;;18088:24;-1:-1:-1;;;18302:9:0;::::1;-1:-1:-1::0;;;;;18302:9:0::1;::::0;:25:::1;::::0;18336:9:::1;::::0;18106:4;18088:24;;18037:20;18447:7:::1;3128::::0;3155:6;-1:-1:-1;;;;;3155:6:0;;3082:87;18447:7:::1;18469:15;18302:193;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;18508:23;18550:9;;;;;;;;;-1:-1:-1::0;;;;;18550:9:0::1;-1:-1:-1::0;;;;;18550:17:0::1;;:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;18508:62;;18583:17;18616:7;-1:-1:-1::0;;;;;18616:15:0::1;;18640:4;18647:9;;;;;;;;;-1:-1:-1::0;;;;;18647:9:0::1;-1:-1:-1::0;;;;;18647:14:0::1;;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;18616:48;::::0;-1:-1:-1;;;;;;18616:48:0::1;::::0;;;;;;-1:-1:-1;;;;;6846:15:1;;;18616:48:0::1;::::0;::::1;6828:34:1::0;6898:15;;6878:18;;;6871:43;6763:18;;18616:48:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;18678:7;:23:::0;;-1:-1:-1;;;;;;18678:23:0::1;-1:-1:-1::0;;;;;18678:23:0;;::::1;::::0;;::::1;::::0;;-1:-1:-1;18714:30:0;;;:12:::1;:30;::::0;;;;;;;:37;;-1:-1:-1;;18714:37:0;;::::1;-1:-1:-1::0;18714:37:0;;::::1;::::0;;;18790:7;;;::::1;18762:37:::0;;:19:::1;:37:::0;;;;;:44;;;;::::1;::::0;;::::1;::::0;;18837:4:::1;18817:26:::0;;:11:::1;:26:::0;;;;;18852:7;;;;::::1;18817:44:::0;;;;;;;-1:-1:-1;;18817:58:0;;-1:-1:-1;;18888:11:0::1;:18:::0;;-1:-1:-1;;18948:24:0;;;;;-1:-1:-1;17891:1089:0:o;12160:83::-;12197:13;12230:5;12223:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12160:83;:::o;13498:161::-;13573:4;13590:39;1729:10;13613:7;13622:6;13590:8;:39::i;:::-;-1:-1:-1;13647:4:0;13498:161;;;;;:::o;22933:297::-;3128:7;3155:6;-1:-1:-1;;;;;3155:6:0;1729:10;3303:23;3295:68;;;;-1:-1:-1;;;3295:68:0;;;;;;;:::i;:::-;23035:19:::1;:37:::0;;;23083:10:::1;:19:::0;;;23113:14:::1;:27:::0;;;23167:55:::1;23130:10:::0;23167:35:::1;23057:15:::0;23096:6;23167:23:::1;:35::i;:::-;:39:::0;::::1;:55::i;:::-;23151:13;:71:::0;-1:-1:-1;;;22933:297:0:o;14272:::-;14370:4;14387:36;14397:6;14405:9;14416:6;14387:9;:36::i;:::-;-1:-1:-1;14434:105:0;14443:6;1729:10;14465:73;14503:6;14465:73;;;;;;;;;;;;;;;;;:11;:19;14477:6;-1:-1:-1;;;;;14465:19:0;-1:-1:-1;;;;;14465:19:0;;;;;;;;;;;;:33;14485:12;1729:10;;1649:98;14485:12;-1:-1:-1;;;;;14465:33:0;;;;;;;;;;;;-1:-1:-1;14465:33:0;;;:73;:37;:73::i;:::-;14434:8;:105::i;:::-;-1:-1:-1;14557:4:0;14272:297;;;;;;:::o;22630:295::-;3128:7;3155:6;-1:-1:-1;;;;;3155:6:0;1729:10;3303:23;3295:68;;;;-1:-1:-1;;;3295:68:0;;;;;;;:::i;:::-;22735:18:::1;:36:::0;;;22782:9:::1;:18:::0;;;22811:13:::1;:26:::0;;;22865:52:::1;22827:10:::0;22865:33:::1;22756:15:::0;22794:6;22865:22:::1;:33::i;:52::-;22850:12;:67:::0;-1:-1:-1;;;22630:295:0:o;12831:156::-;-1:-1:-1;;;;;12966:11:0;12637:18;12884:7;12637:18;;;:9;:18;;;;;;12911:68;;:40;12928:22;12938:11;-1:-1:-1;;;;;12637:18:0;12611:7;12637:18;;;:9;:18;;;;;;;12545:123;12928:22;12911:12;;;:16;:40::i;:::-;:44;;:68::i;:::-;12904:75;;12831:156;:::o;12995:218::-;1729:10;13083:4;13132:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;13132:34:0;;;;;;;;;;13083:4;;13100:83;;13123:7;;13132:50;;13171:10;13132:38;:50::i;24331:108::-;3128:7;3155:6;-1:-1:-1;;;;;3155:6:0;1729:10;3303:23;3295:68;;;;-1:-1:-1;;;3295:68:0;;;;;;;:::i;:::-;24402:16:::1;:29:::0;;-1:-1:-1;;;;;;24402:29:0::1;-1:-1:-1::0;;;;;24402:29:0;;;::::1;::::0;;;::::1;::::0;;24331:108::o;23471:105::-;3128:7;3155:6;-1:-1:-1;;;;;3155:6:0;1729:10;3303:23;3295:68;;;;-1:-1:-1;;;3295:68:0;;;;;;;:::i;:::-;23542:16:::1;:26:::0;;;::::1;;::::0;::::1;-1:-1:-1::0;;23542:26:0;;::::1;::::0;;;::::1;::::0;;23471:105::o;24447:108::-;3128:7;3155:6;-1:-1:-1;;;;;3155:6:0;1729:10;3303:23;3295:68;;;;-1:-1:-1;;;3295:68:0;;;;;;;:::i;:::-;24522:12:::1;:25:::0;;-1:-1:-1;;;;;;24522:25:0::1;-1:-1:-1::0;;;;;24522:25:0;;;::::1;::::0;;;::::1;::::0;;24447:108::o;25012:115::-;3128:7;3155:6;-1:-1:-1;;;;;3155:6:0;1729:10;3303:23;3295:68;;;;-1:-1:-1;;;3295:68:0;;;;;;;:::i;:::-;25084:9:::1;:35:::0;;-1:-1:-1;;;;;25084:35:0;;::::1;-1:-1:-1::0;;;25084:35:0::1;-1:-1:-1::0;;;;;;25084:35:0;;::::1;::::0;;;::::1;::::0;;25012:115::o;24092:101::-;3128:7;3155:6;-1:-1:-1;;;;;3155:6:0;1729:10;3303:23;3295:68;;;;-1:-1:-1;;;3295:68:0;;;;;;;:::i;:::-;24162:12:::1;:23:::0;24092:101::o;23714:128::-;3128:7;3155:6;-1:-1:-1;;;;;3155:6:0;1729:10;3303:23;3295:68;;;;-1:-1:-1;;;3295:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;23799:25:0;;;::::1;;::::0;;;:19:::1;:25;::::0;;;;:35;;-1:-1:-1;;23799:35:0::1;::::0;::::1;;::::0;;;::::1;::::0;;23714:128::o;3391:94::-;3128:7;3155:6;-1:-1:-1;;;;;3155:6:0;1729:10;3303:23;3295:68;;;;-1:-1:-1;;;3295:68:0;;;;;;;:::i;:::-;3456:21:::1;3474:1;3456:9;:21::i;:::-;3391:94::o:0;23978:106::-;3128:7;3155:6;-1:-1:-1;;;;;3155:6:0;1729:10;3303:23;3295:68;;;;-1:-1:-1;;;3295:68:0;;;;;;;:::i;:::-;24055:10:::1;:21:::0;23978:106::o;24205:118::-;3128:7;3155:6;-1:-1:-1;;;;;3155:6:0;1729:10;3303:23;3295:68;;;;-1:-1:-1;;;3295:68:0;;;;;;;:::i;:::-;24285:17:::1;:30:::0;;-1:-1:-1;;;;;;24285:30:0::1;-1:-1:-1::0;;;;;24285:30:0;;;::::1;::::0;;;::::1;::::0;;24205:118::o;23238:119::-;10773:16;;-1:-1:-1;;;;;10773:16:0;10759:10;:30;10751:56;;;;-1:-1:-1;;;10751:56:0;;;;;;;:::i;:::-;23292:13:::1;:21:::0;;-1:-1:-1;;23324:25:0;;;23238:119::o;12251:87::-;12290:13;12323:7;12316:14;;;;;:::i;13221:269::-;13314:4;13331:129;1729:10;13354:7;13363:96;13402:15;13363:96;;;;;;;;;;;;;;;;;1729:10;13363:25;;;;:11;:25;;;;;;;;-1:-1:-1;;;;;13363:34:0;;;;;;;;;;;;:38;:96::i;14097:167::-;14175:4;14192:42;1729:10;14216:9;14227:6;14192:9;:42::i;23850:120::-;3128:7;3155:6;-1:-1:-1;;;;;3155:6:0;1729:10;3303:23;3295:68;;;;-1:-1:-1;;;3295:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;23931:21:0;;;::::1;;::::0;;;:15:::1;:21;::::0;;;;:31;;-1:-1:-1;;23931:31:0::1;::::0;::::1;;::::0;;;::::1;::::0;;23850:120::o;24775:229::-;10773:16;;-1:-1:-1;;;;;10773:16:0;10759:10;:30;10751:56;;;;-1:-1:-1;;;10751:56:0;;;;;;;:::i;:::-;24904:11:::1;:22:::0;;-1:-1:-1;;24937:22:0;24904;;::::1;;::::0;;;::::1;-1:-1:-1::0;;24937:22:0;;;;;;;::::1;;::::0;;;::::1;;::::0;;24970:13:::1;:26:::0;24775:229::o;24563:204::-;3128:7;3155:6;-1:-1:-1;;;;;3155:6:0;1729:10;3303:23;3295:68;;;;-1:-1:-1;;;3295:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;24645:19:0;::::1;;::::0;;;:12:::1;:19;::::0;;;;:29;;-1:-1:-1;;24645:29:0::1;::::0;::::1;::::0;::::1;::::0;;;::::1;::::0;;;24685:75:::1;;-1:-1:-1::0;;;;;24712:26:0;::::1;;::::0;;;:19:::1;:26;::::0;;;;:36;;-1:-1:-1;;24712:36:0::1;::::0;::::1;;;::::0;;24685:75:::1;24563:204:::0;;:::o;22350:272::-;10773:16;;-1:-1:-1;;;;;10773:16:0;10759:10;:30;10751:56;;;;-1:-1:-1;;;10751:56:0;;;;;;;:::i;:::-;22489:73:::1;::::0;-1:-1:-1;;;;;7845:32:1;;;22489:73:0::1;::::0;::::1;7827:51:1::0;7894:18;;;7887:34;;;22450:12:0::1;::::0;22468:20;;::::1;::::0;7800:18:1;;22489:73:0::1;::::0;;-1:-1:-1;;22489:73:0;;::::1;::::0;;;;;;::::1;::::0;::::1;::::0;;-1:-1:-1;;;;;22489:73:0::1;-1:-1:-1::0;;;22489:73:0::1;::::0;;22468:95;::::1;::::0;22489:73;22468:95:::1;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22449:114;;;22582:7;22574:40;;;::::0;-1:-1:-1;;;22574:40:0;;8426:2:1;22574:40:0::1;::::0;::::1;8408:21:1::0;8465:2;8445:18;;;8438:30;-1:-1:-1;;;8484:18:1;;;8477:50;8544:18;;22574:40:0::1;8224:344:1::0;22574:40:0::1;22438:184;22350:272:::0;;;:::o;23584:122::-;3128:7;3155:6;-1:-1:-1;;;;;3155:6:0;1729:10;3303:23;3295:68;;;;-1:-1:-1;;;3295:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;23665:23:0;;;::::1;;::::0;;;:17:::1;:23;::::0;;;;:33;;-1:-1:-1;;23665:33:0::1;::::0;::::1;;::::0;;;::::1;::::0;;23584:122::o;22164:178::-;10773:16;;-1:-1:-1;;;;;10773:16:0;10759:10;:30;10751:56;;;;-1:-1:-1;;;10751:56:0;;;;;;;:::i;:::-;22231:58:::1;::::0;22219:7:::1;::::0;22239:10:::1;::::0;22263:21:::1;::::0;22219:7;22231:58;22219:7;22231:58;22263:21;22239:10;22231:58:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22218:71;;;22308:2;22300:34;;;::::0;-1:-1:-1;;;22300:34:0;;8985:2:1;22300:34:0::1;::::0;::::1;8967:21:1::0;9024:2;9004:18;;;8997:30;-1:-1:-1;;;9043:18:1;;;9036:50;9103:18;;22300:34:0::1;8783:344:1::0;22300:34:0::1;22206:136;22164:178::o:0;23365:98::-;3128:7;3155:6;-1:-1:-1;;;;;3155:6:0;1729:10;3303:23;3295:68;;;;-1:-1:-1;;;3295:68:0;;;;;;;:::i;:::-;23432:13:::1;:23:::0;;;::::1;;::::0;::::1;-1:-1:-1::0;;23432:23:0;;::::1;::::0;;;::::1;::::0;;23365:98::o;3493:229::-;3128:7;3155:6;-1:-1:-1;;;;;3155:6:0;1729:10;3303:23;3295:68;;;;-1:-1:-1;;;3295:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;3596:22:0;::::1;3574:110;;;::::0;-1:-1:-1;;;3574:110:0;;9334:2:1;3574:110:0::1;::::0;::::1;9316:21:1::0;9373:2;9353:18;;;9346:30;9412:34;9392:18;;;9385:62;-1:-1:-1;;;9463:18:1;;;9456:36;9509:19;;3574:110:0::1;9132:402:1::0;3574:110:0::1;3695:19;3705:8;3695:9;:19::i;25135:91::-:0;3128:7;3155:6;-1:-1:-1;;;;;3155:6:0;1729:10;3303:23;3295:68;;;;-1:-1:-1;;;3295:68:0;;;;;;;:::i;:::-;25203:7:::1;:15:::0;;-1:-1:-1;;;;;;25203:15:0::1;-1:-1:-1::0;;;;;25203:15:0;;;::::1;::::0;;;::::1;::::0;;25135:91::o;13667:337::-;-1:-1:-1;;;;;13760:19:0;;13752:68;;;;-1:-1:-1;;;13752:68:0;;9741:2:1;13752:68:0;;;9723:21:1;9780:2;9760:18;;;9753:30;9819:34;9799:18;;;9792:62;-1:-1:-1;;;9870:18:1;;;9863:34;9914:19;;13752:68:0;9539:400:1;13752:68:0;-1:-1:-1;;;;;13839:21:0;;13831:68;;;;-1:-1:-1;;;13831:68:0;;10146:2:1;13831:68:0;;;10128:21:1;10185:2;10165:18;;;10158:30;10224:34;10204:18;;;10197:62;-1:-1:-1;;;10275:18:1;;;10268:32;10317:19;;13831:68:0;9944:398:1;13831:68:0;-1:-1:-1;;;;;13912:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;13964:32;;160:25:1;;;13964:32:0;;133:18:1;13964:32:0;;;;;;;13667:337;;;:::o;3936:181::-;3994:7;;4026:5;4030:1;4026;:5;:::i;:::-;4014:17;;4055:1;4050;:6;;4042:46;;;;-1:-1:-1;;;4042:46:0;;10811:2:1;4042:46:0;;;10793:21:1;10850:2;10830:18;;;10823:30;10889:29;10869:18;;;10862:57;10936:18;;4042:46:0;10609:351:1;14577:1877:0;14664:4;-1:-1:-1;;;;;14691:20:0;;14683:29;;;;;;-1:-1:-1;;;;;14731:23:0;;14723:32;;;;;;14783:1;14774:6;:10;14766:19;;;;;;14806:6;;-1:-1:-1;;;14806:6:0;;;;14802:1643;;;14836:41;14851:6;14859:9;14870:6;14836:14;:41::i;:::-;14829:48;;;;14802:1643;14926:13;;;;;;;14921:146;;-1:-1:-1;;;;;14968:25:0;;;;;;:17;:25;;;;;;;;;:57;;-1:-1:-1;;;;;;14997:28:0;;;;;;:17;:28;;;;;;;;14968:57;14960:91;;;;-1:-1:-1;;;14960:91:0;;11167:2:1;14960:91:0;;;11149:21:1;11206:2;11186:18;;;11179:30;-1:-1:-1;;;11225:18:1;;;11218:52;11287:18;;14960:91:0;10965:346:1;14960:91:0;15087:10;;:15;;;;:34;;-1:-1:-1;15107:14:0;;;;15106:15;15087:34;15083:93;;;15142:18;:16;:18::i;:::-;15241:4;15192:28;12637:18;;;:9;:18;;;;;;15317:13;;15293:37;;;;;;;15369:52;;-1:-1:-1;15415:6:0;;-1:-1:-1;;;15415:6:0;;;;15414:7;15369:52;:95;;;;-1:-1:-1;;;;;;15444:20:0;;;;;;:12;:20;;;;;;;;15443:21;15369:95;:128;;;;-1:-1:-1;15486:11:0;;;;;;;15369:128;:175;;;;-1:-1:-1;;;;;;15519:25:0;;;;;;:17;:25;;;;;;;;15518:26;15369:175;:225;;;;-1:-1:-1;;;;;;15566:28:0;;;;;;:17;:28;;;;;;;;15565:29;15369:225;15347:332;;;15633:30;15642:20;15633:8;:30::i;:::-;-1:-1:-1;;;;;15699:23:0;;;;;;:15;:23;;;;;;;;15698:24;:55;;;;-1:-1:-1;;;;;;15727:26:0;;;;;;:15;:26;;;;;;;;15726:27;15698:55;:72;;;;-1:-1:-1;15757:13:0;;;;;;;15698:72;15695:166;;;15809:12;;15799:6;:22;;15791:54;;;;-1:-1:-1;;;15791:54:0;;11518:2:1;15791:54:0;;;11500:21:1;11557:2;11537:18;;;11530:30;-1:-1:-1;;;11576:18:1;;;11569:49;11635:18;;15791:54:0;11316:343:1;15791:54:0;15910:53;;;;;;;;;;;-1:-1:-1;;;15910:53:0;;;;;;;;-1:-1:-1;;;;;15910:17:0;;-1:-1:-1;15910:17:0;;;:9;:17;;;;;;;;:53;;15932:6;;15910:21;:53::i;:::-;-1:-1:-1;;;;;15890:17:0;;;;;;:9;:17;;;;;:73;;;;16002:34;15900:6;16026:9;16002:16;:34::i;:::-;:80;;16048:34;16056:6;16064:9;16075:6;16048:7;:34::i;:::-;16002:80;;;16039:6;16002:80;16102:16;;15980:102;;-1:-1:-1;16102:16:0;;;;;:51;;;;-1:-1:-1;;;;;;16123:30:0;;;;;;:19;:30;;;;;;;;16122:31;16102:51;16099:168;;;16223:10;;16182:37;16207:11;16182:20;16192:9;-1:-1:-1;;;;;12637:18:0;12611:7;12637:18;;;:9;:18;;;;;;;12545:123;16182:37;:51;;16174:77;;;;-1:-1:-1;;;16174:77:0;;11866:2:1;16174:77:0;;;11848:21:1;11905:2;11885:18;;;11878:30;-1:-1:-1;;;11924:18:1;;;11917:44;11978:18;;16174:77:0;11664:338:1;16174:77:0;-1:-1:-1;;;;;16306:20:0;;;;;;:9;:20;;;;;;:37;;16331:11;16306:24;:37::i;:::-;-1:-1:-1;;;;;16283:20:0;;;;;;;:9;:20;;;;;;;:60;;;;16365:40;;;;;;;;;;16393:11;160:25:1;;148:2;133:18;;14:177;16365:40:0;;;;;;;;16427:4;16420:11;;;;;;;4269:192;4355:7;4391:12;4383:6;;;;4375:29;;;;-1:-1:-1;;;4375:29:0;;;;;;;;:::i;:::-;-1:-1:-1;4415:9:0;4427:5;4431:1;4427;:5;:::i;:::-;4415:17;4269:192;-1:-1:-1;;;;;4269:192:0:o;4125:136::-;4183:7;4210:43;4214:1;4217;4210:43;;;;;;;;;;;;;;;;;:3;:43::i;3730:173::-;3786:16;3805:6;;-1:-1:-1;;;;;3822:17:0;;;-1:-1:-1;;;;;;3822:17:0;;;;;;3855:40;;3805:6;;;;;;;3855:40;;3786:16;3855:40;3775:128;3730:173;:::o;16462:330::-;16592:53;;;;;;;;;;;-1:-1:-1;;;16592:53:0;;;;;;;;-1:-1:-1;;;;;16592:17:0;;16555:4;16592:17;;;:9;:17;;;;;;;:53;;16614:6;;16592:21;:53::i;:::-;-1:-1:-1;;;;;16572:17:0;;;;;;;:9;:17;;;;;;:73;;;;16679:20;;;;;;;:32;;16704:6;16679:24;:32::i;:::-;-1:-1:-1;;;;;16656:20:0;;;;;;;:9;:20;;;;;;;:55;;;;16727:35;;;;;;;;;;16755:6;160:25:1;;148:2;133:18;;14:177;16727:35:0;;;;;;;;-1:-1:-1;16780:4:0;16462:330;;;;;:::o;18988:406::-;19056:10;;:14;;19069:1;19056:14;:::i;:::-;19040:12;:30;19036:83;;19101:2;19468:12;:19;;;19498:13;:21;19087:20;19148:10;;:14;;19161:1;19148:14;:::i;:::-;19133:12;:29;:64;;;;-1:-1:-1;19182:10:0;;:15;;19195:2;19182:15;:::i;:::-;19166:12;:31;;19133:64;19129:117;;;19228:2;19468:19;;;19498:13;:21;19214:20;19275:10;;:15;;19288:2;19275:15;:::i;:::-;19260:12;:30;19256:117;;;19321:1;19468:12;:19;;;19498:13;:21;19340:14;:21;;-1:-1:-1;;19340:21:0;19357:4;19340:21;;;18988:406::o;19537:1445::-;10866:6;:13;;-1:-1:-1;;;;10866:13:0;-1:-1:-1;;;10866:13:0;;;19611:11:::1;::::0;;;::::1;10866:13:::0;19611:11:::1;19608:47;;;-1:-1:-1::0;19642:13:0::1;::::0;19608:47:::1;19668:19;19690:31;19707:13;;19690:12;;:16;;:31;;;;:::i;:::-;19668:53;;19734:23;19760:25;19774:10;;19760:9;;:13;;:25;;;;:::i;:::-;19734:51;;19881:20;19904:33;19922:14;;19904:13;;:17;;:33;;;;:::i;:::-;19881:56:::0;-1:-1:-1;19950:19:0::1;19972:60;20030:1;19972:53;20013:11:::0;19972:53;:15;19992;19972:19:::1;:36::i;:::-;:40:::0;::::1;:53::i;:60::-;19950:82:::0;-1:-1:-1;20043:21:0::1;20067:32;:15:::0;19950:82;20067:19:::1;:32::i;:::-;20043:56:::0;-1:-1:-1;20137:21:0::1;20169:31;20043:56:::0;20169:16:::1;:31::i;:::-;20211:22;20236:41;:21;20262:14:::0;20236:25:::1;:41::i;:::-;20211:66:::0;-1:-1:-1;20290:19:0::1;20312:39;20328:22;:15:::0;20348:1:::1;20328:19;:22::i;:::-;20312:11:::0;;:15:::1;:39::i;:::-;20290:61:::0;-1:-1:-1;20372:26:0::1;20401:59;20458:1;20401:52;20290:61:::0;20401:52;:14;20420:15;20401:18:::1;:35::i;:59::-;20372:88:::0;-1:-1:-1;20471:23:0::1;20497:49;20534:11:::0;20497:32:::1;:14:::0;20516:12;20497:18:::1;:32::i;:49::-;20471:75:::0;-1:-1:-1;20557:28:0::1;20588:59;20471:75:::0;20588:38:::1;:14:::0;20607:18;20588::::1;:38::i;:59::-;20557:90:::0;-1:-1:-1;20662:19:0;;20659:84:::1;;20704:12;::::0;20696:47:::1;::::0;-1:-1:-1;;;;;20704:12:0;;::::1;::::0;20696:47;::::1;;;::::0;20727:15;;20704:12:::1;20696:47:::0;20704:12;20696:47;20727:15;20704:12;20696:47;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;20659:84;20759:24:::0;;20756:99:::1;;20806:17;::::0;20798:57:::1;::::0;-1:-1:-1;;;;;20806:17:0;;::::1;::::0;20798:57;::::1;;;::::0;20834:20;;20806:17:::1;20798:57:::0;20806:17;20798:57;20834:20;20806:17;20798:57;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;20756:99;20892:1;20871:18;:22;:41;;;;;20911:1;20897:11;:15;20871:41;20868:104;;;20927:45;20940:11;20953:18;20927:12;:45::i;:::-;-1:-1:-1::0;;10902:6:0;:14;;-1:-1:-1;;;;10902:14:0;;;-1:-1:-1;;;;;;;;;;19537:1445:0:o;16804:369::-;-1:-1:-1;;;;;16908:25:0;;16888:4;16908:25;;;:17;:25;;;;;;;;;:57;;-1:-1:-1;;;;;;16937:28:0;;;;;;:17;:28;;;;;;;;16908:57;16905:261;;;-1:-1:-1;16989:4:0;16982:11;;16905:261;-1:-1:-1;;;;;17024:20:0;;;;;;:12;:20;;;;;;;;;:47;;-1:-1:-1;;;;;;17048:23:0;;;;;;:12;:23;;;;;;;;17024:47;17020:146;;;-1:-1:-1;17095:5:0;17088:12;;17020:146;-1:-1:-1;17149:5:0;17142:12;;17181:702;-1:-1:-1;;;;;17354:20:0;;17267:7;17354:20;;;:12;:20;;;;;;17267:7;;17354:20;;17351:258;;;17408:44;17437:14;;17408:24;17419:12;;17408:6;:10;;:24;;;;:::i;:44::-;17396:56;;17351:258;;;-1:-1:-1;;;;;17491:23:0;;;;;;:12;:23;;;;;;;;17488:121;;;17548:45;17578:14;;17548:25;17559:13;;17548:6;:10;;:25;;;;:::i;:45::-;17536:57;;17488:121;17628:13;;17625:185;;17707:4;17689:24;;;;:9;:24;;;;;;:39;;17718:9;17689:28;:39::i;:::-;17680:4;17662:24;;;;:9;:24;;;;;;;:66;;;;17752:42;;-1:-1:-1;;;;;17752:42:0;;;;;;;17784:9;160:25:1;;148:2;133:18;;14:177;17752:42:0;;;;;;;;17625:185;17833:21;:6;17844:9;17833:10;:21::i;4469:250::-;4527:7;4551:1;4556;4551:6;4547:47;;-1:-1:-1;4581:1:0;4574:8;;4547:47;4606:9;4618:5;4622:1;4618;:5;:::i;:::-;4606:17;-1:-1:-1;4651:1:0;4642:5;4646:1;4606:17;4642:5;:::i;:::-;:10;4634:56;;;;-1:-1:-1;;;4634:56:0;;12737:2:1;4634:56:0;;;12719:21:1;12776:2;12756:18;;;12749:30;12815:34;12795:18;;;12788:62;-1:-1:-1;;;12866:18:1;;;12859:31;12907:19;;4634:56:0;12535:397:1;4727:132:0;4785:7;4812:39;4816:1;4819;4812:39;;;;;;;;;;;;;;;;;:3;:39::i;21508:648::-;21658:16;;;21672:1;21658:16;;;;;;;;21634:21;;21658:16;;;;;;;;;;-1:-1:-1;21658:16:0;21634:40;;21703:4;21685;21690:1;21685:7;;;;;;;;:::i;:::-;;;;;;:23;-1:-1:-1;;;;;21685:23:0;;;-1:-1:-1;;;;;21685:23:0;;;;;21729:9;;;;;;;;;-1:-1:-1;;;;;21729:9:0;-1:-1:-1;;;;;21729:14:0;;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;21719:4;21724:1;21719:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;21719:26:0;;;:7;;;;;;;;;:26;21790:9;;21758:56;;21775:4;;-1:-1:-1;;;21790:9:0;;;21802:11;21758:8;:56::i;:::-;21853:9;;:234;;-1:-1:-1;;;21853:234:0;;-1:-1:-1;;;21853:9:0;;;-1:-1:-1;;;;;21853:9:0;;:60;;:234;;21928:11;;21954:1;;21998:4;;22025;;22061:15;;21853:234;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22113:35;22130:11;22143:4;22113:35;;;;;;;:::i;:::-;;;;;;;;21563:593;21508:648;:::o;20990:510::-;21170:9;;21138:56;;21155:4;;-1:-1:-1;;;21170:9:0;;-1:-1:-1;;;;;21170:9:0;21182:11;21138:8;:56::i;:::-;21237:9;;21435:16;;21237:255;;-1:-1:-1;;;21237:255:0;;-1:-1:-1;;;;;;;;21237:9:0;;;;;;:25;;21270:9;;21237:255;;21303:4;;21323:11;;21349:1;;;;21435:16;;21466:15;;21237:255;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;20990:510;;:::o;4867:278::-;4953:7;4988:12;4981:5;4973:28;;;;-1:-1:-1;;;4973:28:0;;;;;;;;:::i;:::-;-1:-1:-1;5012:9:0;5024:5;5028:1;5024;:5;:::i;196:250:1:-;281:1;291:113;305:6;302:1;299:13;291:113;;;381:11;;;375:18;362:11;;;355:39;327:2;320:10;291:113;;;-1:-1:-1;;438:1:1;420:16;;413:27;196:250::o;451:396::-;600:2;589:9;582:21;563:4;632:6;626:13;675:6;670:2;659:9;655:18;648:34;691:79;763:6;758:2;747:9;743:18;738:2;730:6;726:15;691:79;:::i;:::-;831:2;810:15;-1:-1:-1;;806:29:1;791:45;;;;838:2;787:54;;451:396;-1:-1:-1;;451:396:1:o;1290:131::-;-1:-1:-1;;;;;1365:31:1;;1355:42;;1345:70;;1411:1;1408;1401:12;1426:315;1494:6;1502;1555:2;1543:9;1534:7;1530:23;1526:32;1523:52;;;1571:1;1568;1561:12;1523:52;1610:9;1597:23;1629:31;1654:5;1629:31;:::i;:::-;1679:5;1731:2;1716:18;;;;1703:32;;-1:-1:-1;;;1426:315:1:o;1938:316::-;2015:6;2023;2031;2084:2;2072:9;2063:7;2059:23;2055:32;2052:52;;;2100:1;2097;2090:12;2052:52;-1:-1:-1;;2123:23:1;;;2193:2;2178:18;;2165:32;;-1:-1:-1;2244:2:1;2229:18;;;2216:32;;1938:316;-1:-1:-1;1938:316:1:o;2259:456::-;2336:6;2344;2352;2405:2;2393:9;2384:7;2380:23;2376:32;2373:52;;;2421:1;2418;2411:12;2373:52;2460:9;2447:23;2479:31;2504:5;2479:31;:::i;:::-;2529:5;-1:-1:-1;2586:2:1;2571:18;;2558:32;2599:33;2558:32;2599:33;:::i;:::-;2259:456;;2651:7;;-1:-1:-1;;;2705:2:1;2690:18;;;;2677:32;;2259:456::o;2909:247::-;2968:6;3021:2;3009:9;3000:7;2996:23;2992:32;2989:52;;;3037:1;3034;3027:12;2989:52;3076:9;3063:23;3095:31;3120:5;3095:31;:::i;3161:160::-;3226:20;;3282:13;;3275:21;3265:32;;3255:60;;3311:1;3308;3301:12;3255:60;3161:160;;;:::o;3326:180::-;3382:6;3435:2;3423:9;3414:7;3410:23;3406:32;3403:52;;;3451:1;3448;3441:12;3403:52;3474:26;3490:9;3474:26;:::i;3511:180::-;3570:6;3623:2;3611:9;3602:7;3598:23;3594:32;3591:52;;;3639:1;3636;3629:12;3591:52;-1:-1:-1;3662:23:1;;3511:180;-1:-1:-1;3511:180:1:o;3696:315::-;3761:6;3769;3822:2;3810:9;3801:7;3797:23;3793:32;3790:52;;;3838:1;3835;3828:12;3790:52;3877:9;3864:23;3896:31;3921:5;3896:31;:::i;:::-;3946:5;-1:-1:-1;3970:35:1;4001:2;3986:18;;3970:35;:::i;:::-;3960:45;;3696:315;;;;;:::o;4016:316::-;4087:6;4095;4103;4156:2;4144:9;4135:7;4131:23;4127:32;4124:52;;;4172:1;4169;4162:12;4124:52;4208:9;4195:23;4185:33;;4237:35;4268:2;4257:9;4253:18;4237:35;:::i;:::-;4227:45;;4291:35;4322:2;4311:9;4307:18;4291:35;:::i;:::-;4281:45;;4016:316;;;;;:::o;4337:388::-;4405:6;4413;4466:2;4454:9;4445:7;4441:23;4437:32;4434:52;;;4482:1;4479;4472:12;4434:52;4521:9;4508:23;4540:31;4565:5;4540:31;:::i;:::-;4590:5;-1:-1:-1;4647:2:1;4632:18;;4619:32;4660:33;4619:32;4660:33;:::i;:::-;4712:7;4702:17;;;4337:388;;;;;:::o;4730:356::-;4932:2;4914:21;;;4951:18;;;4944:30;5010:34;5005:2;4990:18;;4983:62;5077:2;5062:18;;4730:356::o;5437:607::-;-1:-1:-1;;;;;5796:15:1;;;5778:34;;5843:2;5828:18;;5821:34;;;;5886:2;5871:18;;5864:34;;;;5929:2;5914:18;;5907:34;;;;5978:15;;;5972:3;5957:19;;5950:44;5758:3;6010:19;;6003:35;;;;5727:3;5712:19;;5437:607::o;6049:306::-;6137:6;6145;6153;6206:2;6194:9;6185:7;6181:23;6177:32;6174:52;;;6222:1;6219;6212:12;6174:52;6251:9;6245:16;6235:26;;6301:2;6290:9;6286:18;6280:25;6270:35;;6345:2;6334:9;6330:18;6324:25;6314:35;;6049:306;;;;;:::o;6360:251::-;6430:6;6483:2;6471:9;6462:7;6458:23;6454:32;6451:52;;;6499:1;6496;6489:12;6451:52;6531:9;6525:16;6550:31;6575:5;6550:31;:::i;6925:380::-;7004:1;7000:12;;;;7047;;;7068:61;;7122:4;7114:6;7110:17;7100:27;;7068:61;7175:2;7167:6;7164:14;7144:18;7141:38;7138:161;;7221:10;7216:3;7212:20;7209:1;7202:31;7256:4;7253:1;7246:15;7284:4;7281:1;7274:15;7138:161;;6925:380;;;:::o;7310:338::-;7512:2;7494:21;;;7551:2;7531:18;;;7524:30;-1:-1:-1;;;7585:2:1;7570:18;;7563:44;7639:2;7624:18;;7310:338::o;7932:287::-;8061:3;8099:6;8093:13;8115:66;8174:6;8169:3;8162:4;8154:6;8150:17;8115:66;:::i;:::-;8197:16;;;;;7932:287;-1:-1:-1;;7932:287:1:o;10347:127::-;10408:10;10403:3;10399:20;10396:1;10389:31;10439:4;10436:1;10429:15;10463:4;10460:1;10453:15;10479:125;10544:9;;;10565:10;;;10562:36;;;10578:18;;:::i;12007:128::-;12074:9;;;12095:11;;;12092:37;;;12109:18;;:::i;12140:168::-;12213:9;;;12244;;12261:15;;;12255:22;;12241:37;12231:71;;12282:18;;:::i;12313:217::-;12353:1;12379;12369:132;;12423:10;12418:3;12414:20;12411:1;12404:31;12458:4;12455:1;12448:15;12486:4;12483:1;12476:15;12369:132;-1:-1:-1;12515:9:1;;12313:217::o;13069:127::-;13130:10;13125:3;13121:20;13118:1;13111:31;13161:4;13158:1;13151:15;13185:4;13182:1;13175:15;13201:465;13254:3;13292:5;13286:12;13319:6;13314:3;13307:19;13345:4;13374;13369:3;13365:14;13358:21;;13413:4;13406:5;13402:16;13436:1;13446:195;13460:6;13457:1;13454:13;13446:195;;;13525:13;;-1:-1:-1;;;;;13521:39:1;13509:52;;13581:12;;;;13616:15;;;;13557:1;13475:9;13446:195;;;-1:-1:-1;13657:3:1;;13201:465;-1:-1:-1;;;;;13201:465:1:o;13671:582::-;13970:6;13959:9;13952:25;14013:6;14008:2;13997:9;13993:18;13986:34;14056:3;14051:2;14040:9;14036:18;14029:31;13933:4;14077:57;14129:3;14118:9;14114:19;14106:6;14077:57;:::i;:::-;-1:-1:-1;;;;;14170:32:1;;;;14165:2;14150:18;;14143:60;-1:-1:-1;14234:3:1;14219:19;14212:35;14069:65;13671:582;-1:-1:-1;;;13671:582:1:o;14258:332::-;14465:6;14454:9;14447:25;14508:2;14503;14492:9;14488:18;14481:30;14428:4;14528:56;14580:2;14569:9;14565:18;14557:6;14528:56;:::i;:::-;14520:64;14258:332;-1:-1:-1;;;;14258:332:1:o

Swarm Source

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