ETH Price: $3,309.50 (-3.22%)
Gas: 14 Gwei

Token

Cane Inu (CANE)
 

Overview

Max Total Supply

10,000,000,000 CANE

Holders

65

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
0 CANE

Value
$0.00
0x78430d9827d941509473108bfa3abda11a2af186
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:
CaneInu

Compiler Version
v0.8.11+commit.d7f03943

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2022-01-18
*/

/**
Cane Inu
*/

// SPDX-License-Identifier: Unlicensed

pragma solidity ^0.8.4;

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

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

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

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

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

    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        if (a == 0) {
            return 0;
        }
        uint256 c = a * b;
        require(c / a == b, "SafeMath: multiplication overflow");
        return c;
    }

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

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

}

contract Ownable is Context {
    address private _owner;
    address private _previousOwner;
    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);

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

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

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

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

}  

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

interface IUniswapV2Router02 {
    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
    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);
}

contract CaneInu is Context, IERC20, Ownable {
    using SafeMath for uint256;
    mapping (address => uint256) private _rOwned;
    mapping (address => mapping (address => uint256)) private _allowances;
    mapping (address => bool) private _isExcludedFromFee;
    mapping (address => bool) private bots;
    mapping (address => uint) private cooldown;
    uint256 private constant _tTotal = 1e10 * 10**9;
    
    uint256 private _buyProjectFee = 4;
    uint256 private _previousBuyProjectFee = _buyProjectFee;
    uint256 private _buyLiquidityFee = 5;
    uint256 private _previousBuyLiquidityFee = _buyLiquidityFee;
    uint256 private _buyRewardFee = 1;
    uint256 private _previousBuyRewardFee = _buyRewardFee;
    
    uint256 private _sellProjectFee = 14;
    uint256 private _previousSellProjectFee = _sellProjectFee;
    uint256 private _sellLiquidityFee = 10;
    uint256 private _previousSellLiquidityFee = _sellLiquidityFee;
    uint256 private _sellRewardFee = 4;
    uint256 private _previousSellRewardFee = _sellRewardFee;

    uint256 private tokensForReward;
    uint256 private tokensForProject;
    uint256 private tokensForLiquidity;

    address payable private _rewardWallet;
    address payable private _projectWallet;
    address payable private _liquidityWallet;
    
    string private constant _name = "Cane Inu";
    string private constant _symbol = "CANE";
    uint8 private constant _decimals = 9;
    
    IUniswapV2Router02 private uniswapV2Router;
    address private uniswapV2Pair;
    bool private tradingOpen;
    bool private swapping;
    bool private inSwap = false;
    bool private swapEnabled = false;
    bool private cooldownEnabled = false;
    uint256 private tradingActiveBlock = 0; // 0 means trading is not active
    uint256 private blocksToBlacklist = 2;
    uint256 private _maxBuyAmount = _tTotal;
    uint256 private _maxSellAmount = _tTotal;
    uint256 private _maxWalletAmount = _tTotal;
    uint256 private swapTokensAtAmount = 0;
    
    event MaxBuyAmountUpdated(uint _maxBuyAmount);
    event MaxSellAmountUpdated(uint _maxSellAmount);
    event SwapAndLiquify(
        uint256 tokensSwapped,
        uint256 ethReceived,
        uint256 tokensIntoLiquidity
    );
    modifier lockTheSwap {
        inSwap = true;
        _;
        inSwap = false;
    }
    constructor () {
        _projectWallet = payable(0xFF439987A347fdDdEA41f5f93f0F26DEb4C81AFB);
        _liquidityWallet = payable(0xFF439987A347fdDdEA41f5f93f0F26DEb4C81AFB);
        _rewardWallet = payable(0x2cCA80F20811F7011F6fb5d096BEFF178C4311ff);
        _rOwned[_msgSender()] = _tTotal;
        _isExcludedFromFee[owner()] = true;
        _isExcludedFromFee[address(this)] = true;
        _isExcludedFromFee[_projectWallet] = true;
        _isExcludedFromFee[_liquidityWallet] = true;
        _isExcludedFromFee[_rewardWallet] = true;
        emit Transfer(address(0x433cAEaB78ba8B9F5ab6736A436A81C47A679244), _msgSender(), _tTotal);
    }

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

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

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

    function totalSupply() public pure override returns (uint256) {
        return _tTotal;
    }

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

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

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

    function approve(address spender, uint256 amount) public override returns (bool) {
        _approve(_msgSender(), spender, 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: transfer amount exceeds allowance"));
        return true;
    }

    function setCooldownEnabled(bool onoff) external onlyOwner() {
        cooldownEnabled = onoff;
    }

    function setSwapEnabled(bool onoff) external onlyOwner(){
        swapEnabled = onoff;
    }

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

    function _transfer(address from, address to, uint256 amount) private {
        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");
        require(amount > 0, "Transfer amount must be greater than zero");
        bool takeFee = false;
        bool shouldSwap = false;
        if (from != owner() && to != owner() && to != address(0) && to != address(0xdead) && !swapping) {
            require(!bots[from] && !bots[to]);

            takeFee = true;
            if (from == uniswapV2Pair && to != address(uniswapV2Router) && !_isExcludedFromFee[to] && cooldownEnabled) {
                require(amount <= _maxBuyAmount, "Transfer amount exceeds the maxBuyAmount.");
                require(balanceOf(to) + amount <= _maxWalletAmount, "Exceeds maximum wallet token amount.");
                require(cooldown[to] < block.timestamp);
                cooldown[to] = block.timestamp + (30 seconds);
            }
            
            if (to == uniswapV2Pair && from != address(uniswapV2Router) && !_isExcludedFromFee[from] && cooldownEnabled) {
                require(amount <= _maxSellAmount, "Transfer amount exceeds the maxSellAmount.");
                shouldSwap = true;
            }
        }

        if(_isExcludedFromFee[from] || _isExcludedFromFee[to]) {
            takeFee = false;
        }

        uint256 contractTokenBalance = balanceOf(address(this));
        bool canSwap = (contractTokenBalance > swapTokensAtAmount) && shouldSwap;

        if (canSwap && swapEnabled && !swapping && !_isExcludedFromFee[from] && !_isExcludedFromFee[to]) {
            swapping = true;
            swapBack();
            swapping = false;
        }

        _tokenTransfer(from,to,amount,takeFee, shouldSwap);
    }

    function swapBack() private {
        uint256 contractBalance = balanceOf(address(this));
        uint256 totalTokensToSwap = tokensForLiquidity + tokensForReward + tokensForProject;
        bool success;
        
        if(contractBalance == 0 || totalTokensToSwap == 0) {return;}

        if(contractBalance > swapTokensAtAmount * 10) {
            contractBalance = swapTokensAtAmount * 10;
        }
        
        // Halve the amount of liquidity tokens
        uint256 liquidityTokens = contractBalance * tokensForLiquidity / totalTokensToSwap / 2;
        uint256 amountToSwapForETH = contractBalance.sub(liquidityTokens);
        
        uint256 initialETHBalance = address(this).balance;

        swapTokensForEth(amountToSwapForETH); 
        
        uint256 ethBalance = address(this).balance.sub(initialETHBalance);
        
        uint256 ethForReward = ethBalance.mul(tokensForReward).div(totalTokensToSwap);
        uint256 ethForProject = ethBalance.mul(tokensForProject).div(totalTokensToSwap);
        
        
        uint256 ethForLiquidity = ethBalance - ethForReward - ethForProject;
        
        
        tokensForLiquidity = 0;
        tokensForReward = 0;
        tokensForProject = 0;
        
        (success,) = address(_rewardWallet).call{value: ethForReward}("");
        
        if(liquidityTokens > 0 && ethForLiquidity > 0){
            addLiquidity(liquidityTokens, ethForLiquidity);
            emit SwapAndLiquify(amountToSwapForETH, ethForLiquidity, tokensForLiquidity);
        }
        
        
        (success,) = address(_projectWallet).call{value: address(this).balance}("");
    }

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

    function addLiquidity(uint256 tokenAmount, uint256 ethAmount) private {
        _approve(address(this), address(uniswapV2Router), tokenAmount);
        uniswapV2Router.addLiquidityETH{value: ethAmount}(
            address(this),
            tokenAmount,
            0, // slippage is unavoidable
            0, // slippage is unavoidable
            _liquidityWallet,
            block.timestamp
        );
    }
        
    function sendETHToFee(uint256 amount) private {
        _projectWallet.transfer(amount);
    }
    
    function openTrading() external onlyOwner() {
        require(!tradingOpen,"trading is already open");
        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        uniswapV2Router = _uniswapV2Router;
        _approve(address(this), address(uniswapV2Router), _tTotal);
        uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory()).createPair(address(this), _uniswapV2Router.WETH());
        uniswapV2Router.addLiquidityETH{value: address(this).balance}(address(this),balanceOf(address(this)),0,0,owner(),block.timestamp);
        swapEnabled = true;
        cooldownEnabled = true;
        _maxBuyAmount = 5e7 * 10**9;
        _maxSellAmount = 5e7 * 10**9;
        _maxWalletAmount = 1e8 * 10**9;
        swapTokensAtAmount = 5e6 * 10**9;
        tradingOpen = true;
        tradingActiveBlock = block.number;
        IERC20(uniswapV2Pair).approve(address(uniswapV2Router), type(uint).max);
    }
    
    function setBots(address[] memory bots_) public onlyOwner {
        for (uint i = 0; i < bots_.length; i++) {
            bots[bots_[i]] = true;
        }
    }

    function setMaxBuyAmount(uint256 maxBuy) public onlyOwner {
        _maxBuyAmount = maxBuy;
    }

    function setMaxSellAmount(uint256 maxSell) public onlyOwner {
        _maxSellAmount = maxSell;
    }
    
    function setMaxWalletAmount(uint256 maxToken) public onlyOwner {
        _maxWalletAmount = maxToken;
    }
    
    function setSwapTokensAtAmount(uint256 newAmount) public onlyOwner {
        require(newAmount >= 1e3 * 10**9, "Swap amount cannot be lower than 0.001% total supply.");
        require(newAmount <= 5e6 * 10**9, "Swap amount cannot be higher than 0.5% total supply.");
        swapTokensAtAmount = newAmount;
    }

    function setProjectWallet(address projectWallet) public onlyOwner() {
        require(projectWallet != address(0), "projectWallet address cannot be 0");
        _isExcludedFromFee[_projectWallet] = false;
        _projectWallet = payable(projectWallet);
        _isExcludedFromFee[_projectWallet] = true;
    }

    function setRewardWallet(address rewardWallet) public onlyOwner() {
        require(rewardWallet != address(0), "rewardWallet address cannot be 0");
        _isExcludedFromFee[_rewardWallet] = false;
        _rewardWallet = payable(rewardWallet);
        _isExcludedFromFee[_rewardWallet] = true;
    }

    function setLiquidityWallet(address liquidityWallet) public onlyOwner() {
        require(liquidityWallet != address(0), "liquidityWallet address cannot be 0");
        _isExcludedFromFee[_liquidityWallet] = false;
        _liquidityWallet = payable(liquidityWallet);
        _isExcludedFromFee[_liquidityWallet] = true;
    }

    function excludeFromFee(address account) public onlyOwner {
        _isExcludedFromFee[account] = true;
    }
    
    function includeInFee(address account) public onlyOwner {
        _isExcludedFromFee[account] = false;
    }

    function setBuyFee(uint256 buyProjectFee, uint256 buyLiquidityFee, uint256 buyRewardFee) external onlyOwner {
        require(buyProjectFee + buyLiquidityFee + buyRewardFee <= 30, "Must keep buy taxes below 30%");
        _buyProjectFee = buyProjectFee;
        _buyLiquidityFee = buyLiquidityFee;
        _buyRewardFee = buyRewardFee;
    }

    function setSellFee(uint256 sellProjectFee, uint256 sellLiquidityFee, uint256 sellRewardFee) external onlyOwner {
        require(sellProjectFee + sellLiquidityFee + sellRewardFee <= 60, "Must keep sell taxes below 60%");
        _sellProjectFee = sellProjectFee;
        _sellLiquidityFee = sellLiquidityFee;
        _sellRewardFee = sellRewardFee;
    }

    function setBlocksToBlacklist(uint256 blocks) public onlyOwner {
        blocksToBlacklist = blocks;
    }

    function removeAllFee() private {
        if(_buyProjectFee == 0 && _buyLiquidityFee == 0 && _buyRewardFee == 0 && _sellProjectFee == 0 && _sellLiquidityFee == 0 && _sellRewardFee == 0) return;
        
        _previousBuyProjectFee = _buyProjectFee;
        _previousBuyLiquidityFee = _buyLiquidityFee;
        _previousBuyRewardFee = _buyRewardFee;
        _previousSellProjectFee = _sellProjectFee;
        _previousSellLiquidityFee = _sellLiquidityFee;
        _previousSellRewardFee = _sellRewardFee;
        
        _buyProjectFee = 0;
        _buyLiquidityFee = 0;
        _buyRewardFee = 0;
        _sellProjectFee = 0;
        _sellLiquidityFee = 0;
        _sellRewardFee = 0;
    }
    
    function restoreAllFee() private {
        _buyProjectFee = _previousBuyProjectFee;
        _buyLiquidityFee = _previousBuyLiquidityFee;
        _buyRewardFee = _previousBuyRewardFee;
        _sellProjectFee = _previousSellProjectFee;
        _sellLiquidityFee = _previousSellLiquidityFee;
        _sellRewardFee = _previousSellRewardFee;
    }
    
    function delBot(address notbot) public onlyOwner {
        bots[notbot] = false;
    }
        
    function _tokenTransfer(address sender, address recipient, uint256 amount, bool takeFee, bool isSell) private {
        if(!takeFee) {
            removeAllFee();
        } else {
            amount = _takeFees(sender, amount, isSell);
        }

        _transferStandard(sender, recipient, amount);
        
        if(!takeFee) {
            restoreAllFee();
        }
    }

    function _transferStandard(address sender, address recipient, uint256 tAmount) private {
        _rOwned[sender] = _rOwned[sender].sub(tAmount);
        _rOwned[recipient] = _rOwned[recipient].add(tAmount);
        emit Transfer(sender, recipient, tAmount);
    }

    function _takeFees(address sender, uint256 amount, bool isSell) private returns (uint256) {
        uint256 _totalFees;
        uint256 pjctFee;
        uint256 liqFee;
        uint256 rwrdFee;
        if(tradingActiveBlock + blocksToBlacklist >= block.number){
            _totalFees = 99;
            liqFee = 92;
        } else {
            _totalFees = _getTotalFees(isSell);
            if (isSell) {
                pjctFee = _sellProjectFee;
                liqFee = _sellLiquidityFee;
                rwrdFee = _sellRewardFee;
            } else {
                pjctFee = _buyProjectFee;
                liqFee = _buyLiquidityFee;
                rwrdFee = _buyRewardFee;
            }
        }

        uint256 fees = amount.mul(_totalFees).div(100);
        tokensForReward += fees * rwrdFee / _totalFees;
        tokensForProject += fees * pjctFee / _totalFees;
        tokensForLiquidity += fees * liqFee / _totalFees;
            
        if(fees > 0) {
            _transferStandard(sender, address(this), fees);
        }
            
        return amount -= fees;
    }

    receive() external payable {}
    
    function manualswap() public onlyOwner() {
        uint256 contractBalance = balanceOf(address(this));
        swapTokensForEth(contractBalance);
    }
    
    function manualsend() public onlyOwner() {
        uint256 contractETHBalance = address(this).balance;
        sendETHToFee(contractETHBalance);
    }

    function withdrawStuckETH() external onlyOwner {
        require(!tradingOpen, "Can only withdraw if trading hasn't started");
        bool success;
        (success,) = address(msg.sender).call{value: address(this).balance}("");
    }

    function _getTotalFees(bool isSell) private view returns(uint256) {
        if (isSell) {
            return _sellProjectFee + _sellLiquidityFee + _sellRewardFee;
        }
        return _buyProjectFee + _buyLiquidityFee + _buyRewardFee;
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"_maxBuyAmount","type":"uint256"}],"name":"MaxBuyAmountUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"_maxSellAmount","type":"uint256"}],"name":"MaxSellAmountUpdated","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":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethReceived","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokensIntoLiquidity","type":"uint256"}],"name":"SwapAndLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"notbot","type":"address"}],"name":"delBot","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"excludeFromFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"includeInFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualsend","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualswap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"openTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"blocks","type":"uint256"}],"name":"setBlocksToBlacklist","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"bots_","type":"address[]"}],"name":"setBots","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"buyProjectFee","type":"uint256"},{"internalType":"uint256","name":"buyLiquidityFee","type":"uint256"},{"internalType":"uint256","name":"buyRewardFee","type":"uint256"}],"name":"setBuyFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"onoff","type":"bool"}],"name":"setCooldownEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"liquidityWallet","type":"address"}],"name":"setLiquidityWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxBuy","type":"uint256"}],"name":"setMaxBuyAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxSell","type":"uint256"}],"name":"setMaxSellAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxToken","type":"uint256"}],"name":"setMaxWalletAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"projectWallet","type":"address"}],"name":"setProjectWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"rewardWallet","type":"address"}],"name":"setRewardWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"sellProjectFee","type":"uint256"},{"internalType":"uint256","name":"sellLiquidityFee","type":"uint256"},{"internalType":"uint256","name":"sellRewardFee","type":"uint256"}],"name":"setSellFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"onoff","type":"bool"}],"name":"setSwapEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"setSwapTokensAtAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"withdrawStuckETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

608060405260046007819055600881905560056009819055600a9081556001600b819055600c55600e600d8190558055600f8190556010556011819055601255601a805462ffffff60b01b191690556000601b8190556002601c55678ac7230489e80000601d819055601e819055601f556020553480156200008057600080fd5b50600080546001600160a01b031916339081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350601780546001600160a01b031990811673ff439987a347fdddea41f5f93f0f26deb4c81afb90811790925560188054821690921790915560168054909116732cca80f20811f7011f6fb5d096beff178c4311ff179055678ac7230489e80000600260006200012d3390565b6001600160a01b03166001600160a01b0316815260200190815260200160002081905550600160046000620001676200025960201b60201c565b6001600160a01b03908116825260208083019390935260409182016000908120805495151560ff199687161790553081526004909352818320805485166001908117909155601754821684528284208054861682179055601854821684528284208054861682179055601654909116835291208054909216179055620001ea3390565b6001600160a01b031673433caeab78ba8b9f5ab6736a436a81c47a6792446001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef678ac7230489e800006040516200024b91815260200190565b60405180910390a362000268565b6000546001600160a01b031690565b61288d80620002786000396000f3fe6080604052600436106101dc5760003560e01c8063715018a611610102578063c9567bf911610095578063e99c9d0911610064578063e99c9d09146105a3578063ea2f0b37146105c3578063f34eb0b8146105e3578063f5648a4f1461060357600080fd5b8063c9567bf914610508578063dd62ed3e1461051d578063e01af92c14610563578063e6f7ef4d1461058357600080fd5b8063a9059cbb116100d1578063a9059cbb14610493578063afa4f3b2146104b3578063b515566a146104d3578063c3c8cd80146104f357600080fd5b8063715018a6146104095780638a7804471461041e5780638da5cb5b1461043e57806395d89b411461046657600080fd5b806327a14fc21161017a5780635932ead1116101495780635932ead11461037e5780635958621e1461039e5780636fc3eaec146103be57806370a08231146103d357600080fd5b806327a14fc214610302578063296f0a0c14610322578063313ce56714610342578063437823ec1461035e57600080fd5b80631d865c30116101b65780631d865c301461028057806323b872dd146102a257806325519cf2146102c2578063273123b7146102e257600080fd5b806306fdde03146101e8578063095ea7b31461022b57806318160ddd1461025b57600080fd5b366101e357005b600080fd5b3480156101f457600080fd5b5060408051808201909152600881526743616e6520496e7560c01b60208201525b60405161022291906123a7565b60405180910390f35b34801561023757600080fd5b5061024b610246366004612421565b610618565b6040519015158152602001610222565b34801561026757600080fd5b50678ac7230489e800005b604051908152602001610222565b34801561028c57600080fd5b506102a061029b36600461244d565b61062f565b005b3480156102ae57600080fd5b5061024b6102bd366004612479565b6106d5565b3480156102ce57600080fd5b506102a06102dd36600461244d565b61073e565b3480156102ee57600080fd5b506102a06102fd3660046124ba565b6107db565b34801561030e57600080fd5b506102a061031d3660046124d7565b610826565b34801561032e57600080fd5b506102a061033d3660046124ba565b610855565b34801561034e57600080fd5b5060405160098152602001610222565b34801561036a57600080fd5b506102a06103793660046124ba565b610931565b34801561038a57600080fd5b506102a06103993660046124fe565b61097f565b3480156103aa57600080fd5b506102a06103b93660046124ba565b6109c7565b3480156103ca57600080fd5b506102a0610a97565b3480156103df57600080fd5b506102726103ee3660046124ba565b6001600160a01b031660009081526002602052604090205490565b34801561041557600080fd5b506102a0610ace565b34801561042a57600080fd5b506102a06104393660046124ba565b610b42565b34801561044a57600080fd5b506000546040516001600160a01b039091168152602001610222565b34801561047257600080fd5b5060408051808201909152600481526343414e4560e01b6020820152610215565b34801561049f57600080fd5b5061024b6104ae366004612421565b610c1c565b3480156104bf57600080fd5b506102a06104ce3660046124d7565b610c29565b3480156104df57600080fd5b506102a06104ee366004612531565b610d3f565b3480156104ff57600080fd5b506102a0610dd5565b34801561051457600080fd5b506102a0610e18565b34801561052957600080fd5b506102726105383660046125f6565b6001600160a01b03918216600090815260036020908152604080832093909416825291909152205490565b34801561056f57600080fd5b506102a061057e3660046124fe565b6111a0565b34801561058f57600080fd5b506102a061059e3660046124d7565b6111e8565b3480156105af57600080fd5b506102a06105be3660046124d7565b611217565b3480156105cf57600080fd5b506102a06105de3660046124ba565b611246565b3480156105ef57600080fd5b506102a06105fe3660046124d7565b611291565b34801561060f57600080fd5b506102a06112c0565b60006106253384846113a5565b5060015b92915050565b6000546001600160a01b031633146106625760405162461bcd60e51b81526004016106599061262f565b60405180910390fd5b603c8161066f848661267a565b610679919061267a565b11156106c75760405162461bcd60e51b815260206004820152601e60248201527f4d757374206b6565702073656c6c2074617865732062656c6f772036302500006044820152606401610659565b600d92909255600f55601155565b60006106e28484846114ca565b610734843361072f85604051806060016040528060288152602001612830602891396001600160a01b038a1660009081526003602090815260408083203384529091529020549190611a63565b6113a5565b5060019392505050565b6000546001600160a01b031633146107685760405162461bcd60e51b81526004016106599061262f565b601e81610775848661267a565b61077f919061267a565b11156107cd5760405162461bcd60e51b815260206004820152601d60248201527f4d757374206b656570206275792074617865732062656c6f77203330250000006044820152606401610659565b600792909255600955600b55565b6000546001600160a01b031633146108055760405162461bcd60e51b81526004016106599061262f565b6001600160a01b03166000908152600560205260409020805460ff19169055565b6000546001600160a01b031633146108505760405162461bcd60e51b81526004016106599061262f565b601f55565b6000546001600160a01b0316331461087f5760405162461bcd60e51b81526004016106599061262f565b6001600160a01b0381166108e15760405162461bcd60e51b815260206004820152602360248201527f6c697175696469747957616c6c657420616464726573732063616e6e6f74206260448201526206520360ec1b6064820152608401610659565b601880546001600160a01b03908116600090815260046020526040808220805460ff1990811690915584546001600160a01b03191695909316948517909355928352912080549091166001179055565b6000546001600160a01b0316331461095b5760405162461bcd60e51b81526004016106599061262f565b6001600160a01b03166000908152600460205260409020805460ff19166001179055565b6000546001600160a01b031633146109a95760405162461bcd60e51b81526004016106599061262f565b601a8054911515600160c01b0260ff60c01b19909216919091179055565b6000546001600160a01b031633146109f15760405162461bcd60e51b81526004016106599061262f565b6001600160a01b038116610a475760405162461bcd60e51b815260206004820181905260248201527f72657761726457616c6c657420616464726573732063616e6e6f7420626520306044820152606401610659565b601680546001600160a01b03908116600090815260046020526040808220805460ff1990811690915584546001600160a01b03191695909316948517909355928352912080549091166001179055565b6000546001600160a01b03163314610ac15760405162461bcd60e51b81526004016106599061262f565b47610acb81611a9d565b50565b6000546001600160a01b03163314610af85760405162461bcd60e51b81526004016106599061262f565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b03163314610b6c5760405162461bcd60e51b81526004016106599061262f565b6001600160a01b038116610bcc5760405162461bcd60e51b815260206004820152602160248201527f70726f6a65637457616c6c657420616464726573732063616e6e6f74206265206044820152600360fc1b6064820152608401610659565b601780546001600160a01b03908116600090815260046020526040808220805460ff1990811690915584546001600160a01b03191695909316948517909355928352912080549091166001179055565b60006106253384846114ca565b6000546001600160a01b03163314610c535760405162461bcd60e51b81526004016106599061262f565b64e8d4a51000811015610cc65760405162461bcd60e51b815260206004820152603560248201527f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60448201527410181718181892903a37ba30b61039bab838363c9760591b6064820152608401610659565b6611c37937e08000811115610d3a5760405162461bcd60e51b815260206004820152603460248201527f5377617020616d6f756e742063616e6e6f742062652068696768657220746861604482015273371018171a92903a37ba30b61039bab838363c9760611b6064820152608401610659565b602055565b6000546001600160a01b03163314610d695760405162461bcd60e51b81526004016106599061262f565b60005b8151811015610dd157600160056000848481518110610d8d57610d8d612692565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff191691151591909117905580610dc9816126a8565b915050610d6c565b5050565b6000546001600160a01b03163314610dff5760405162461bcd60e51b81526004016106599061262f565b30600090815260026020526040902054610acb81611ad7565b6000546001600160a01b03163314610e425760405162461bcd60e51b81526004016106599061262f565b601a54600160a01b900460ff1615610e9c5760405162461bcd60e51b815260206004820152601760248201527f74726164696e6720697320616c7265616479206f70656e0000000000000000006044820152606401610659565b601980546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d908117909155610ed83082678ac7230489e800006113a5565b806001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610f16573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f3a91906126c3565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610f87573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fab91906126c3565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af1158015610ff8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061101c91906126c3565b601a80546001600160a01b039283166001600160a01b03199091161790556019541663f305d7194730611064816001600160a01b031660009081526002602052604090205490565b6000806110796000546001600160a01b031690565b426040518863ffffffff1660e01b815260040161109b969594939291906126e0565b60606040518083038185885af11580156110b9573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906110de919061271b565b5050601a805466b1a2bc2ec50000601d819055601e5567016345785d8a0000601f556611c37937e0800060205564ffff0000ff60a01b19811664010100000160a01b1790915543601b5560195460405163095ea7b360e01b81526001600160a01b03918216600482015260001960248201529116915063095ea7b3906044016020604051808303816000875af115801561117c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610dd19190612749565b6000546001600160a01b031633146111ca5760405162461bcd60e51b81526004016106599061262f565b601a8054911515600160b81b0260ff60b81b19909216919091179055565b6000546001600160a01b031633146112125760405162461bcd60e51b81526004016106599061262f565b601c55565b6000546001600160a01b031633146112415760405162461bcd60e51b81526004016106599061262f565b601e55565b6000546001600160a01b031633146112705760405162461bcd60e51b81526004016106599061262f565b6001600160a01b03166000908152600460205260409020805460ff19169055565b6000546001600160a01b031633146112bb5760405162461bcd60e51b81526004016106599061262f565b601d55565b6000546001600160a01b031633146112ea5760405162461bcd60e51b81526004016106599061262f565b601a54600160a01b900460ff16156113585760405162461bcd60e51b815260206004820152602b60248201527f43616e206f6e6c792077697468647261772069662074726164696e672068617360448201526a1b89dd081cdd185c9d195960aa1b6064820152608401610659565b604051600090339047908381818185875af1925050503d806000811461139a576040519150601f19603f3d011682016040523d82523d6000602084013e61139f565b606091505b50505050565b6001600160a01b0383166114075760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610659565b6001600160a01b0382166114685760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610659565b6001600160a01b0383811660008181526003602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b6001600160a01b03831661152e5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610659565b6001600160a01b0382166115905760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610659565b600081116115f25760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610659565b6000806116076000546001600160a01b031690565b6001600160a01b0316856001600160a01b03161415801561163657506000546001600160a01b03858116911614155b801561164a57506001600160a01b03841615155b801561166157506001600160a01b03841661dead14155b80156116775750601a54600160a81b900460ff16155b1561193c576001600160a01b03851660009081526005602052604090205460ff161580156116be57506001600160a01b03841660009081526005602052604090205460ff16155b6116c757600080fd5b601a54600192506001600160a01b0386811691161480156116f657506019546001600160a01b03858116911614155b801561171b57506001600160a01b03841660009081526004602052604090205460ff16155b80156117305750601a54600160c01b900460ff165b1561186957601d548311156117995760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206578636565647320746865206d6178426044820152683abca0b6b7bab73a1760b91b6064820152608401610659565b601f54836117bc866001600160a01b031660009081526002602052604090205490565b6117c6919061267a565b11156118205760405162461bcd60e51b8152602060048201526024808201527f45786365656473206d6178696d756d2077616c6c657420746f6b656e20616d6f6044820152633ab73a1760e11b6064820152608401610659565b6001600160a01b038416600090815260066020526040902054421161184457600080fd5b61184f42601e61267a565b6001600160a01b0385166000908152600660205260409020555b601a546001600160a01b03858116911614801561189457506019546001600160a01b03868116911614155b80156118b957506001600160a01b03851660009081526004602052604090205460ff16155b80156118ce5750601a54600160c01b900460ff165b1561193c57601e548311156119385760405162461bcd60e51b815260206004820152602a60248201527f5472616e7366657220616d6f756e74206578636565647320746865206d61785360448201526932b63620b6b7bab73a1760b11b6064820152608401610659565b5060015b6001600160a01b03851660009081526004602052604090205460ff168061197b57506001600160a01b03841660009081526004602052604090205460ff165b1561198557600091505b3060009081526002602052604081205490506000602054821180156119a75750825b90508080156119bf5750601a54600160b81b900460ff165b80156119d55750601a54600160a81b900460ff16155b80156119fa57506001600160a01b03871660009081526004602052604090205460ff16155b8015611a1f57506001600160a01b03861660009081526004602052604090205460ff16155b15611a4d57601a805460ff60a81b1916600160a81b179055611a3f611c51565b601a805460ff60a81b191690555b611a5a8787878787611e91565b50505050505050565b60008184841115611a875760405162461bcd60e51b815260040161065991906123a7565b506000611a948486612766565b95945050505050565b6017546040516001600160a01b039091169082156108fc029083906000818181858888f19350505050158015610dd1573d6000803e3d6000fd5b601a805460ff60b01b1916600160b01b1790556040805160028082526060820183526000926020830190803683370190505090503081600081518110611b1f57611b1f612692565b6001600160a01b03928316602091820292909201810191909152601954604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015611b78573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b9c91906126c3565b81600181518110611baf57611baf612692565b6001600160a01b039283166020918202929092010152601954611bd591309116846113a5565b60195460405163791ac94760e01b81526001600160a01b039091169063791ac94790611c0e90859060009086903090429060040161277d565b600060405180830381600087803b158015611c2857600080fd5b505af1158015611c3c573d6000803e3d6000fd5b5050601a805460ff60b01b1916905550505050565b3060009081526002602052604081205490506000601454601354601554611c78919061267a565b611c82919061267a565b90506000821580611c91575081155b15611c9b57505050565b602054611ca990600a6127ee565b831115611cc157602054611cbe90600a6127ee565b92505b600060028360155486611cd491906127ee565b611cde919061280d565b611ce8919061280d565b90506000611cf68583611ef1565b905047611d0282611ad7565b6000611d0e4783611ef1565b90506000611d3187611d2b60135485611f3a90919063ffffffff16565b90611fb9565b90506000611d4e88611d2b60145486611f3a90919063ffffffff16565b9050600081611d5d8486612766565b611d679190612766565b60006015819055601381905560148190556016546040519293506001600160a01b031691859181818185875af1925050503d8060008114611dc4576040519150601f19603f3d011682016040523d82523d6000602084013e611dc9565b606091505b50909850508615801590611ddd5750600081115b15611e3057611dec8782611ffb565b601554604080518881526020810184905280820192909252517f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb5619181900360600190a15b6017546040516001600160a01b03909116904790600081818185875af1925050503d8060008114611e7d576040519150601f19603f3d011682016040523d82523d6000602084013e611e82565b606091505b50505050505050505050505050565b81611ea357611e9e612096565b611eb1565b611eae85848361211e565b92505b611ebc85858561223c565b81611eea57611eea600854600755600a54600955600c54600b55600e54600d55601054600f55601254601155565b5050505050565b6000611f3383836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611a63565b9392505050565b600082611f4957506000610629565b6000611f5583856127ee565b905082611f62858361280d565b14611f335760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610659565b6000611f3383836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506122e2565b6019546120139030906001600160a01b0316846113a5565b60195460185460405163f305d71960e01b81526001600160a01b039283169263f305d71992859261205392309289926000928392169042906004016126e0565b60606040518083038185885af1158015612071573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190611eea919061271b565b6007541580156120a65750600954155b80156120b25750600b54155b80156120be5750600d54155b80156120ca5750600f54155b80156120d65750601154155b156120dd57565b6007805460085560098054600a55600b8054600c55600d8054600e55600f805460105560118054601255600095869055938590559184905583905582905555565b600080600080600043601c54601b54612137919061267a565b106121495760639350605c915061217e565b61215286612310565b9350851561216e57600d549250600f549150601154905061217e565b60075492506009549150600b5490505b600061218f6064611d2b8a88611f3a565b90508461219c83836127ee565b6121a6919061280d565b601360008282546121b7919061267a565b909155508590506121c885836127ee565b6121d2919061280d565b601460008282546121e3919061267a565b909155508590506121f484836127ee565b6121fe919061280d565b6015600082825461220f919061267a565b909155505080156122255761222589308361223c565b61222f8189612766565b9998505050505050505050565b6001600160a01b03831660009081526002602052604090205461225f9082611ef1565b6001600160a01b03808516600090815260026020526040808220939093559084168152205461228e9082612348565b6001600160a01b0380841660008181526002602052604090819020939093559151908516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906114bd9085815260200190565b600081836123035760405162461bcd60e51b815260040161065991906123a7565b506000611a94848661280d565b6000811561233557601154600f54600d5461232b919061267a565b610629919061267a565b600b5460095460075461232b919061267a565b600080612355838561267a565b905083811015611f335760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610659565b600060208083528351808285015260005b818110156123d4578581018301518582016040015282016123b8565b818111156123e6576000604083870101525b50601f01601f1916929092016040019392505050565b6001600160a01b0381168114610acb57600080fd5b803561241c816123fc565b919050565b6000806040838503121561243457600080fd5b823561243f816123fc565b946020939093013593505050565b60008060006060848603121561246257600080fd5b505081359360208301359350604090920135919050565b60008060006060848603121561248e57600080fd5b8335612499816123fc565b925060208401356124a9816123fc565b929592945050506040919091013590565b6000602082840312156124cc57600080fd5b8135611f33816123fc565b6000602082840312156124e957600080fd5b5035919050565b8015158114610acb57600080fd5b60006020828403121561251057600080fd5b8135611f33816124f0565b634e487b7160e01b600052604160045260246000fd5b6000602080838503121561254457600080fd5b823567ffffffffffffffff8082111561255c57600080fd5b818501915085601f83011261257057600080fd5b8135818111156125825761258261251b565b8060051b604051601f19603f830116810181811085821117156125a7576125a761251b565b6040529182528482019250838101850191888311156125c557600080fd5b938501935b828510156125ea576125db85612411565b845293850193928501926125ca565b98975050505050505050565b6000806040838503121561260957600080fd5b8235612614816123fc565b91506020830135612624816123fc565b809150509250929050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052601160045260246000fd5b6000821982111561268d5761268d612664565b500190565b634e487b7160e01b600052603260045260246000fd5b60006000198214156126bc576126bc612664565b5060010190565b6000602082840312156126d557600080fd5b8151611f33816123fc565b6001600160a01b039687168152602081019590955260408501939093526060840191909152909216608082015260a081019190915260c00190565b60008060006060848603121561273057600080fd5b8351925060208401519150604084015190509250925092565b60006020828403121561275b57600080fd5b8151611f33816124f0565b60008282101561277857612778612664565b500390565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156127cd5784516001600160a01b0316835293830193918301916001016127a8565b50506001600160a01b03969096166060850152505050608001529392505050565b600081600019048311821515161561280857612808612664565b500290565b60008261282a57634e487b7160e01b600052601260045260246000fd5b50049056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220ebac15f1f564d8c5acb35bbc42f6dae2ae151613db9a6aaa9e917523985d5e1c64736f6c634300080b0033

Deployed Bytecode

0x6080604052600436106101dc5760003560e01c8063715018a611610102578063c9567bf911610095578063e99c9d0911610064578063e99c9d09146105a3578063ea2f0b37146105c3578063f34eb0b8146105e3578063f5648a4f1461060357600080fd5b8063c9567bf914610508578063dd62ed3e1461051d578063e01af92c14610563578063e6f7ef4d1461058357600080fd5b8063a9059cbb116100d1578063a9059cbb14610493578063afa4f3b2146104b3578063b515566a146104d3578063c3c8cd80146104f357600080fd5b8063715018a6146104095780638a7804471461041e5780638da5cb5b1461043e57806395d89b411461046657600080fd5b806327a14fc21161017a5780635932ead1116101495780635932ead11461037e5780635958621e1461039e5780636fc3eaec146103be57806370a08231146103d357600080fd5b806327a14fc214610302578063296f0a0c14610322578063313ce56714610342578063437823ec1461035e57600080fd5b80631d865c30116101b65780631d865c301461028057806323b872dd146102a257806325519cf2146102c2578063273123b7146102e257600080fd5b806306fdde03146101e8578063095ea7b31461022b57806318160ddd1461025b57600080fd5b366101e357005b600080fd5b3480156101f457600080fd5b5060408051808201909152600881526743616e6520496e7560c01b60208201525b60405161022291906123a7565b60405180910390f35b34801561023757600080fd5b5061024b610246366004612421565b610618565b6040519015158152602001610222565b34801561026757600080fd5b50678ac7230489e800005b604051908152602001610222565b34801561028c57600080fd5b506102a061029b36600461244d565b61062f565b005b3480156102ae57600080fd5b5061024b6102bd366004612479565b6106d5565b3480156102ce57600080fd5b506102a06102dd36600461244d565b61073e565b3480156102ee57600080fd5b506102a06102fd3660046124ba565b6107db565b34801561030e57600080fd5b506102a061031d3660046124d7565b610826565b34801561032e57600080fd5b506102a061033d3660046124ba565b610855565b34801561034e57600080fd5b5060405160098152602001610222565b34801561036a57600080fd5b506102a06103793660046124ba565b610931565b34801561038a57600080fd5b506102a06103993660046124fe565b61097f565b3480156103aa57600080fd5b506102a06103b93660046124ba565b6109c7565b3480156103ca57600080fd5b506102a0610a97565b3480156103df57600080fd5b506102726103ee3660046124ba565b6001600160a01b031660009081526002602052604090205490565b34801561041557600080fd5b506102a0610ace565b34801561042a57600080fd5b506102a06104393660046124ba565b610b42565b34801561044a57600080fd5b506000546040516001600160a01b039091168152602001610222565b34801561047257600080fd5b5060408051808201909152600481526343414e4560e01b6020820152610215565b34801561049f57600080fd5b5061024b6104ae366004612421565b610c1c565b3480156104bf57600080fd5b506102a06104ce3660046124d7565b610c29565b3480156104df57600080fd5b506102a06104ee366004612531565b610d3f565b3480156104ff57600080fd5b506102a0610dd5565b34801561051457600080fd5b506102a0610e18565b34801561052957600080fd5b506102726105383660046125f6565b6001600160a01b03918216600090815260036020908152604080832093909416825291909152205490565b34801561056f57600080fd5b506102a061057e3660046124fe565b6111a0565b34801561058f57600080fd5b506102a061059e3660046124d7565b6111e8565b3480156105af57600080fd5b506102a06105be3660046124d7565b611217565b3480156105cf57600080fd5b506102a06105de3660046124ba565b611246565b3480156105ef57600080fd5b506102a06105fe3660046124d7565b611291565b34801561060f57600080fd5b506102a06112c0565b60006106253384846113a5565b5060015b92915050565b6000546001600160a01b031633146106625760405162461bcd60e51b81526004016106599061262f565b60405180910390fd5b603c8161066f848661267a565b610679919061267a565b11156106c75760405162461bcd60e51b815260206004820152601e60248201527f4d757374206b6565702073656c6c2074617865732062656c6f772036302500006044820152606401610659565b600d92909255600f55601155565b60006106e28484846114ca565b610734843361072f85604051806060016040528060288152602001612830602891396001600160a01b038a1660009081526003602090815260408083203384529091529020549190611a63565b6113a5565b5060019392505050565b6000546001600160a01b031633146107685760405162461bcd60e51b81526004016106599061262f565b601e81610775848661267a565b61077f919061267a565b11156107cd5760405162461bcd60e51b815260206004820152601d60248201527f4d757374206b656570206275792074617865732062656c6f77203330250000006044820152606401610659565b600792909255600955600b55565b6000546001600160a01b031633146108055760405162461bcd60e51b81526004016106599061262f565b6001600160a01b03166000908152600560205260409020805460ff19169055565b6000546001600160a01b031633146108505760405162461bcd60e51b81526004016106599061262f565b601f55565b6000546001600160a01b0316331461087f5760405162461bcd60e51b81526004016106599061262f565b6001600160a01b0381166108e15760405162461bcd60e51b815260206004820152602360248201527f6c697175696469747957616c6c657420616464726573732063616e6e6f74206260448201526206520360ec1b6064820152608401610659565b601880546001600160a01b03908116600090815260046020526040808220805460ff1990811690915584546001600160a01b03191695909316948517909355928352912080549091166001179055565b6000546001600160a01b0316331461095b5760405162461bcd60e51b81526004016106599061262f565b6001600160a01b03166000908152600460205260409020805460ff19166001179055565b6000546001600160a01b031633146109a95760405162461bcd60e51b81526004016106599061262f565b601a8054911515600160c01b0260ff60c01b19909216919091179055565b6000546001600160a01b031633146109f15760405162461bcd60e51b81526004016106599061262f565b6001600160a01b038116610a475760405162461bcd60e51b815260206004820181905260248201527f72657761726457616c6c657420616464726573732063616e6e6f7420626520306044820152606401610659565b601680546001600160a01b03908116600090815260046020526040808220805460ff1990811690915584546001600160a01b03191695909316948517909355928352912080549091166001179055565b6000546001600160a01b03163314610ac15760405162461bcd60e51b81526004016106599061262f565b47610acb81611a9d565b50565b6000546001600160a01b03163314610af85760405162461bcd60e51b81526004016106599061262f565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b03163314610b6c5760405162461bcd60e51b81526004016106599061262f565b6001600160a01b038116610bcc5760405162461bcd60e51b815260206004820152602160248201527f70726f6a65637457616c6c657420616464726573732063616e6e6f74206265206044820152600360fc1b6064820152608401610659565b601780546001600160a01b03908116600090815260046020526040808220805460ff1990811690915584546001600160a01b03191695909316948517909355928352912080549091166001179055565b60006106253384846114ca565b6000546001600160a01b03163314610c535760405162461bcd60e51b81526004016106599061262f565b64e8d4a51000811015610cc65760405162461bcd60e51b815260206004820152603560248201527f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60448201527410181718181892903a37ba30b61039bab838363c9760591b6064820152608401610659565b6611c37937e08000811115610d3a5760405162461bcd60e51b815260206004820152603460248201527f5377617020616d6f756e742063616e6e6f742062652068696768657220746861604482015273371018171a92903a37ba30b61039bab838363c9760611b6064820152608401610659565b602055565b6000546001600160a01b03163314610d695760405162461bcd60e51b81526004016106599061262f565b60005b8151811015610dd157600160056000848481518110610d8d57610d8d612692565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff191691151591909117905580610dc9816126a8565b915050610d6c565b5050565b6000546001600160a01b03163314610dff5760405162461bcd60e51b81526004016106599061262f565b30600090815260026020526040902054610acb81611ad7565b6000546001600160a01b03163314610e425760405162461bcd60e51b81526004016106599061262f565b601a54600160a01b900460ff1615610e9c5760405162461bcd60e51b815260206004820152601760248201527f74726164696e6720697320616c7265616479206f70656e0000000000000000006044820152606401610659565b601980546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d908117909155610ed83082678ac7230489e800006113a5565b806001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610f16573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f3a91906126c3565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610f87573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fab91906126c3565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af1158015610ff8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061101c91906126c3565b601a80546001600160a01b039283166001600160a01b03199091161790556019541663f305d7194730611064816001600160a01b031660009081526002602052604090205490565b6000806110796000546001600160a01b031690565b426040518863ffffffff1660e01b815260040161109b969594939291906126e0565b60606040518083038185885af11580156110b9573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906110de919061271b565b5050601a805466b1a2bc2ec50000601d819055601e5567016345785d8a0000601f556611c37937e0800060205564ffff0000ff60a01b19811664010100000160a01b1790915543601b5560195460405163095ea7b360e01b81526001600160a01b03918216600482015260001960248201529116915063095ea7b3906044016020604051808303816000875af115801561117c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610dd19190612749565b6000546001600160a01b031633146111ca5760405162461bcd60e51b81526004016106599061262f565b601a8054911515600160b81b0260ff60b81b19909216919091179055565b6000546001600160a01b031633146112125760405162461bcd60e51b81526004016106599061262f565b601c55565b6000546001600160a01b031633146112415760405162461bcd60e51b81526004016106599061262f565b601e55565b6000546001600160a01b031633146112705760405162461bcd60e51b81526004016106599061262f565b6001600160a01b03166000908152600460205260409020805460ff19169055565b6000546001600160a01b031633146112bb5760405162461bcd60e51b81526004016106599061262f565b601d55565b6000546001600160a01b031633146112ea5760405162461bcd60e51b81526004016106599061262f565b601a54600160a01b900460ff16156113585760405162461bcd60e51b815260206004820152602b60248201527f43616e206f6e6c792077697468647261772069662074726164696e672068617360448201526a1b89dd081cdd185c9d195960aa1b6064820152608401610659565b604051600090339047908381818185875af1925050503d806000811461139a576040519150601f19603f3d011682016040523d82523d6000602084013e61139f565b606091505b50505050565b6001600160a01b0383166114075760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610659565b6001600160a01b0382166114685760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610659565b6001600160a01b0383811660008181526003602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b6001600160a01b03831661152e5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610659565b6001600160a01b0382166115905760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610659565b600081116115f25760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610659565b6000806116076000546001600160a01b031690565b6001600160a01b0316856001600160a01b03161415801561163657506000546001600160a01b03858116911614155b801561164a57506001600160a01b03841615155b801561166157506001600160a01b03841661dead14155b80156116775750601a54600160a81b900460ff16155b1561193c576001600160a01b03851660009081526005602052604090205460ff161580156116be57506001600160a01b03841660009081526005602052604090205460ff16155b6116c757600080fd5b601a54600192506001600160a01b0386811691161480156116f657506019546001600160a01b03858116911614155b801561171b57506001600160a01b03841660009081526004602052604090205460ff16155b80156117305750601a54600160c01b900460ff165b1561186957601d548311156117995760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206578636565647320746865206d6178426044820152683abca0b6b7bab73a1760b91b6064820152608401610659565b601f54836117bc866001600160a01b031660009081526002602052604090205490565b6117c6919061267a565b11156118205760405162461bcd60e51b8152602060048201526024808201527f45786365656473206d6178696d756d2077616c6c657420746f6b656e20616d6f6044820152633ab73a1760e11b6064820152608401610659565b6001600160a01b038416600090815260066020526040902054421161184457600080fd5b61184f42601e61267a565b6001600160a01b0385166000908152600660205260409020555b601a546001600160a01b03858116911614801561189457506019546001600160a01b03868116911614155b80156118b957506001600160a01b03851660009081526004602052604090205460ff16155b80156118ce5750601a54600160c01b900460ff165b1561193c57601e548311156119385760405162461bcd60e51b815260206004820152602a60248201527f5472616e7366657220616d6f756e74206578636565647320746865206d61785360448201526932b63620b6b7bab73a1760b11b6064820152608401610659565b5060015b6001600160a01b03851660009081526004602052604090205460ff168061197b57506001600160a01b03841660009081526004602052604090205460ff165b1561198557600091505b3060009081526002602052604081205490506000602054821180156119a75750825b90508080156119bf5750601a54600160b81b900460ff165b80156119d55750601a54600160a81b900460ff16155b80156119fa57506001600160a01b03871660009081526004602052604090205460ff16155b8015611a1f57506001600160a01b03861660009081526004602052604090205460ff16155b15611a4d57601a805460ff60a81b1916600160a81b179055611a3f611c51565b601a805460ff60a81b191690555b611a5a8787878787611e91565b50505050505050565b60008184841115611a875760405162461bcd60e51b815260040161065991906123a7565b506000611a948486612766565b95945050505050565b6017546040516001600160a01b039091169082156108fc029083906000818181858888f19350505050158015610dd1573d6000803e3d6000fd5b601a805460ff60b01b1916600160b01b1790556040805160028082526060820183526000926020830190803683370190505090503081600081518110611b1f57611b1f612692565b6001600160a01b03928316602091820292909201810191909152601954604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015611b78573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b9c91906126c3565b81600181518110611baf57611baf612692565b6001600160a01b039283166020918202929092010152601954611bd591309116846113a5565b60195460405163791ac94760e01b81526001600160a01b039091169063791ac94790611c0e90859060009086903090429060040161277d565b600060405180830381600087803b158015611c2857600080fd5b505af1158015611c3c573d6000803e3d6000fd5b5050601a805460ff60b01b1916905550505050565b3060009081526002602052604081205490506000601454601354601554611c78919061267a565b611c82919061267a565b90506000821580611c91575081155b15611c9b57505050565b602054611ca990600a6127ee565b831115611cc157602054611cbe90600a6127ee565b92505b600060028360155486611cd491906127ee565b611cde919061280d565b611ce8919061280d565b90506000611cf68583611ef1565b905047611d0282611ad7565b6000611d0e4783611ef1565b90506000611d3187611d2b60135485611f3a90919063ffffffff16565b90611fb9565b90506000611d4e88611d2b60145486611f3a90919063ffffffff16565b9050600081611d5d8486612766565b611d679190612766565b60006015819055601381905560148190556016546040519293506001600160a01b031691859181818185875af1925050503d8060008114611dc4576040519150601f19603f3d011682016040523d82523d6000602084013e611dc9565b606091505b50909850508615801590611ddd5750600081115b15611e3057611dec8782611ffb565b601554604080518881526020810184905280820192909252517f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb5619181900360600190a15b6017546040516001600160a01b03909116904790600081818185875af1925050503d8060008114611e7d576040519150601f19603f3d011682016040523d82523d6000602084013e611e82565b606091505b50505050505050505050505050565b81611ea357611e9e612096565b611eb1565b611eae85848361211e565b92505b611ebc85858561223c565b81611eea57611eea600854600755600a54600955600c54600b55600e54600d55601054600f55601254601155565b5050505050565b6000611f3383836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611a63565b9392505050565b600082611f4957506000610629565b6000611f5583856127ee565b905082611f62858361280d565b14611f335760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610659565b6000611f3383836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506122e2565b6019546120139030906001600160a01b0316846113a5565b60195460185460405163f305d71960e01b81526001600160a01b039283169263f305d71992859261205392309289926000928392169042906004016126e0565b60606040518083038185885af1158015612071573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190611eea919061271b565b6007541580156120a65750600954155b80156120b25750600b54155b80156120be5750600d54155b80156120ca5750600f54155b80156120d65750601154155b156120dd57565b6007805460085560098054600a55600b8054600c55600d8054600e55600f805460105560118054601255600095869055938590559184905583905582905555565b600080600080600043601c54601b54612137919061267a565b106121495760639350605c915061217e565b61215286612310565b9350851561216e57600d549250600f549150601154905061217e565b60075492506009549150600b5490505b600061218f6064611d2b8a88611f3a565b90508461219c83836127ee565b6121a6919061280d565b601360008282546121b7919061267a565b909155508590506121c885836127ee565b6121d2919061280d565b601460008282546121e3919061267a565b909155508590506121f484836127ee565b6121fe919061280d565b6015600082825461220f919061267a565b909155505080156122255761222589308361223c565b61222f8189612766565b9998505050505050505050565b6001600160a01b03831660009081526002602052604090205461225f9082611ef1565b6001600160a01b03808516600090815260026020526040808220939093559084168152205461228e9082612348565b6001600160a01b0380841660008181526002602052604090819020939093559151908516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906114bd9085815260200190565b600081836123035760405162461bcd60e51b815260040161065991906123a7565b506000611a94848661280d565b6000811561233557601154600f54600d5461232b919061267a565b610629919061267a565b600b5460095460075461232b919061267a565b600080612355838561267a565b905083811015611f335760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610659565b600060208083528351808285015260005b818110156123d4578581018301518582016040015282016123b8565b818111156123e6576000604083870101525b50601f01601f1916929092016040019392505050565b6001600160a01b0381168114610acb57600080fd5b803561241c816123fc565b919050565b6000806040838503121561243457600080fd5b823561243f816123fc565b946020939093013593505050565b60008060006060848603121561246257600080fd5b505081359360208301359350604090920135919050565b60008060006060848603121561248e57600080fd5b8335612499816123fc565b925060208401356124a9816123fc565b929592945050506040919091013590565b6000602082840312156124cc57600080fd5b8135611f33816123fc565b6000602082840312156124e957600080fd5b5035919050565b8015158114610acb57600080fd5b60006020828403121561251057600080fd5b8135611f33816124f0565b634e487b7160e01b600052604160045260246000fd5b6000602080838503121561254457600080fd5b823567ffffffffffffffff8082111561255c57600080fd5b818501915085601f83011261257057600080fd5b8135818111156125825761258261251b565b8060051b604051601f19603f830116810181811085821117156125a7576125a761251b565b6040529182528482019250838101850191888311156125c557600080fd5b938501935b828510156125ea576125db85612411565b845293850193928501926125ca565b98975050505050505050565b6000806040838503121561260957600080fd5b8235612614816123fc565b91506020830135612624816123fc565b809150509250929050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052601160045260246000fd5b6000821982111561268d5761268d612664565b500190565b634e487b7160e01b600052603260045260246000fd5b60006000198214156126bc576126bc612664565b5060010190565b6000602082840312156126d557600080fd5b8151611f33816123fc565b6001600160a01b039687168152602081019590955260408501939093526060840191909152909216608082015260a081019190915260c00190565b60008060006060848603121561273057600080fd5b8351925060208401519150604084015190509250925092565b60006020828403121561275b57600080fd5b8151611f33816124f0565b60008282101561277857612778612664565b500390565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156127cd5784516001600160a01b0316835293830193918301916001016127a8565b50506001600160a01b03969096166060850152505050608001529392505050565b600081600019048311821515161561280857612808612664565b500290565b60008261282a57634e487b7160e01b600052601260045260246000fd5b50049056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220ebac15f1f564d8c5acb35bbc42f6dae2ae151613db9a6aaa9e917523985d5e1c64736f6c634300080b0033

Deployed Bytecode Sourcemap

3540:17252:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6590:83;;;;;;;;;;-1:-1:-1;6660:5:0;;;;;;;;;;;;-1:-1:-1;;;6660:5:0;;;;6590:83;;;;;;;:::i;:::-;;;;;;;;7421:161;;;;;;;;;;-1:-1:-1;7421:161:0;;;;;:::i;:::-;;:::i;:::-;;;1376:14:1;;1369:22;1351:41;;1339:2;1324:18;7421:161:0;1211:187:1;6867:95:0;;;;;;;;;;-1:-1:-1;3940:12:0;6867:95;;;1549:25:1;;;1537:2;1522:18;6867:95:0;1403:177:1;16451:360:0;;;;;;;;;;-1:-1:-1;16451:360:0;;;;;:::i;:::-;;:::i;:::-;;7590:313;;;;;;;;;;-1:-1:-1;7590:313:0;;;;;:::i;:::-;;:::i;16097:346::-;;;;;;;;;;-1:-1:-1;16097:346:0;;;;;:::i;:::-;;:::i;18020:88::-;;;;;;;;;;-1:-1:-1;18020:88:0;;;;;:::i;:::-;;:::i;14433:109::-;;;;;;;;;;-1:-1:-1;14433:109:0;;;;;:::i;:::-;;:::i;15517:331::-;;;;;;;;;;-1:-1:-1;15517:331:0;;;;;:::i;:::-;;:::i;6776:83::-;;;;;;;;;;-1:-1:-1;6776:83:0;;5001:1;2946:36:1;;2934:2;2919:18;6776:83:0;2804:184:1;15856:111:0;;;;;;;;;;-1:-1:-1;15856:111:0;;;;;:::i;:::-;;:::i;7911:103::-;;;;;;;;;;-1:-1:-1;7911:103:0;;;;;:::i;:::-;;:::i;15202:307::-;;;;;;;;;;-1:-1:-1;15202:307:0;;;;;:::i;:::-;;:::i;20132:153::-;;;;;;;;;;;;;:::i;6970:117::-;;;;;;;;;;-1:-1:-1;6970:117:0;;;;;:::i;:::-;-1:-1:-1;;;;;7063:16:0;7036:7;7063:16;;;:7;:16;;;;;;;6970:117;2619:148;;;;;;;;;;;;;:::i;14879:315::-;;;;;;;;;;-1:-1:-1;14879:315:0;;;;;:::i;:::-;;:::i;2405:79::-;;;;;;;;;;-1:-1:-1;2443:7:0;2470:6;2405:79;;-1:-1:-1;;;;;2470:6:0;;;3508:51:1;;3496:2;3481:18;2405:79:0;3362:203:1;6681:87:0;;;;;;;;;;-1:-1:-1;6753:7:0;;;;;;;;;;;;-1:-1:-1;;;6753:7:0;;;;6681:87;;7095:167;;;;;;;;;;-1:-1:-1;7095:167:0;;;;;:::i;:::-;;:::i;14554:317::-;;;;;;;;;;-1:-1:-1;14554:317:0;;;;;:::i;:::-;;:::i;14039:164::-;;;;;;;;;;-1:-1:-1;14039:164:0;;;;;:::i;:::-;;:::i;19966:154::-;;;;;;;;;;;;;:::i;13051:976::-;;;;;;;;;;;;;:::i;7270:143::-;;;;;;;;;;-1:-1:-1;7270:143:0;;;;;:::i;:::-;-1:-1:-1;;;;;7378:18:0;;;7351:7;7378:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;7270:143;8022:94;;;;;;;;;;-1:-1:-1;8022:94:0;;;;;:::i;:::-;;:::i;16819:108::-;;;;;;;;;;-1:-1:-1;16819:108:0;;;;;:::i;:::-;;:::i;14318:103::-;;;;;;;;;;-1:-1:-1;14318:103:0;;;;;:::i;:::-;;:::i;15979:110::-;;;;;;;;;;-1:-1:-1;15979:110:0;;;;;:::i;:::-;;:::i;14211:99::-;;;;;;;;;;-1:-1:-1;14211:99:0;;;;;:::i;:::-;;:::i;20293:239::-;;;;;;;;;;;;;:::i;7421:161::-;7496:4;7513:39;203:10;7536:7;7545:6;7513:8;:39::i;:::-;-1:-1:-1;7570:4:0;7421:161;;;;;:::o;16451:360::-;2532:6;;-1:-1:-1;;;;;2532:6:0;203:10;2532:22;2524:67;;;;-1:-1:-1;;;2524:67:0;;;;;;;:::i;:::-;;;;;;;;;16635:2:::1;16618:13:::0;16582:33:::1;16599:16:::0;16582:14;:33:::1;:::i;:::-;:49;;;;:::i;:::-;:55;;16574:98;;;::::0;-1:-1:-1;;;16574:98:0;;6049:2:1;16574:98:0::1;::::0;::::1;6031:21:1::0;6088:2;6068:18;;;6061:30;6127:32;6107:18;;;6100:60;6177:18;;16574:98:0::1;5847:354:1::0;16574:98:0::1;16683:15;:32:::0;;;;16726:17:::1;:36:::0;16773:14:::1;:30:::0;16451:360::o;7590:313::-;7688:4;7705:36;7715:6;7723:9;7734:6;7705:9;:36::i;:::-;7752:121;7761:6;203:10;7783:89;7821:6;7783:89;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;7783:19:0;;;;;;:11;:19;;;;;;;;203:10;7783:33;;;;;;;;;;:37;:89::i;:::-;7752:8;:121::i;:::-;-1:-1:-1;7891:4:0;7590:313;;;;;:::o;16097:346::-;2532:6;;-1:-1:-1;;;;;2532:6:0;203:10;2532:22;2524:67;;;;-1:-1:-1;;;2524:67:0;;;;;;;:::i;:::-;16274:2:::1;16258:12:::0;16224:31:::1;16240:15:::0;16224:13;:31:::1;:::i;:::-;:46;;;;:::i;:::-;:52;;16216:94;;;::::0;-1:-1:-1;;;16216:94:0;;6408:2:1;16216:94:0::1;::::0;::::1;6390:21:1::0;6447:2;6427:18;;;6420:30;6486:31;6466:18;;;6459:59;6535:18;;16216:94:0::1;6206:353:1::0;16216:94:0::1;16321:14;:30:::0;;;;16362:16:::1;:34:::0;16407:13:::1;:28:::0;16097:346::o;18020:88::-;2532:6;;-1:-1:-1;;;;;2532:6:0;203:10;2532:22;2524:67;;;;-1:-1:-1;;;2524:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;18080:12:0::1;18095:5;18080:12:::0;;;:4:::1;:12;::::0;;;;:20;;-1:-1:-1;;18080:20:0::1;::::0;;18020:88::o;14433:109::-;2532:6;;-1:-1:-1;;;;;2532:6:0;203:10;2532:22;2524:67;;;;-1:-1:-1;;;2524:67:0;;;;;;;:::i;:::-;14507:16:::1;:27:::0;14433:109::o;15517:331::-;2532:6;;-1:-1:-1;;;;;2532:6:0;203:10;2532:22;2524:67;;;;-1:-1:-1;;;2524:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;15608:29:0;::::1;15600:77;;;::::0;-1:-1:-1;;;15600:77:0;;6766:2:1;15600:77:0::1;::::0;::::1;6748:21:1::0;6805:2;6785:18;;;6778:30;6844:34;6824:18;;;6817:62;-1:-1:-1;;;6895:18:1;;;6888:33;6938:19;;15600:77:0::1;6564:399:1::0;15600:77:0::1;15707:16;::::0;;-1:-1:-1;;;;;15707:16:0;;::::1;15727:5;15688:36:::0;;;:18:::1;:36;::::0;;;;;:44;;-1:-1:-1;;15688:44:0;;::::1;::::0;;;15743:43;;-1:-1:-1;;;;;;15743:43:0::1;::::0;;;::::1;::::0;;::::1;::::0;;;15797:36;;;;;:43;;;;::::1;-1:-1:-1::0;15797:43:0::1;::::0;;15517:331::o;15856:111::-;2532:6;;-1:-1:-1;;;;;2532:6:0;203:10;2532:22;2524:67;;;;-1:-1:-1;;;2524:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;15925:27:0::1;;::::0;;;:18:::1;:27;::::0;;;;:34;;-1:-1:-1;;15925:34:0::1;15955:4;15925:34;::::0;;15856:111::o;7911:103::-;2532:6;;-1:-1:-1;;;;;2532:6:0;203:10;2532:22;2524:67;;;;-1:-1:-1;;;2524:67:0;;;;;;;:::i;:::-;7983:15:::1;:23:::0;;;::::1;;-1:-1:-1::0;;;7983:23:0::1;-1:-1:-1::0;;;;7983:23:0;;::::1;::::0;;;::::1;::::0;;7911:103::o;15202:307::-;2532:6;;-1:-1:-1;;;;;2532:6:0;203:10;2532:22;2524:67;;;;-1:-1:-1;;;2524:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;15287:26:0;::::1;15279:71;;;::::0;-1:-1:-1;;;15279:71:0;;7170:2:1;15279:71:0::1;::::0;::::1;7152:21:1::0;;;7189:18;;;7182:30;7248:34;7228:18;;;7221:62;7300:18;;15279:71:0::1;6968:356:1::0;15279:71:0::1;15380:13;::::0;;-1:-1:-1;;;;;15380:13:0;;::::1;15397:5;15361:33:::0;;;:18:::1;:33;::::0;;;;;:41;;-1:-1:-1;;15361:41:0;;::::1;::::0;;;15413:37;;-1:-1:-1;;;;;;15413:37:0::1;::::0;;;::::1;::::0;;::::1;::::0;;;15461:33;;;;;:40;;;;::::1;-1:-1:-1::0;15461:40:0::1;::::0;;15202:307::o;20132:153::-;2532:6;;-1:-1:-1;;;;;2532:6:0;203:10;2532:22;2524:67;;;;-1:-1:-1;;;2524:67:0;;;;;;;:::i;:::-;20213:21:::1;20245:32;20213:21:::0;20245:12:::1;:32::i;:::-;20173:112;20132:153::o:0;2619:148::-;2532:6;;-1:-1:-1;;;;;2532:6:0;203:10;2532:22;2524:67;;;;-1:-1:-1;;;2524:67:0;;;;;;;:::i;:::-;2726:1:::1;2710:6:::0;;2689:40:::1;::::0;-1:-1:-1;;;;;2710:6:0;;::::1;::::0;2689:40:::1;::::0;2726:1;;2689:40:::1;2757:1;2740:19:::0;;-1:-1:-1;;;;;;2740:19:0::1;::::0;;2619:148::o;14879:315::-;2532:6;;-1:-1:-1;;;;;2532:6:0;203:10;2532:22;2524:67;;;;-1:-1:-1;;;2524:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;14966:27:0;::::1;14958:73;;;::::0;-1:-1:-1;;;14958:73:0;;7531:2:1;14958:73:0::1;::::0;::::1;7513:21:1::0;7570:2;7550:18;;;7543:30;7609:34;7589:18;;;7582:62;-1:-1:-1;;;7660:18:1;;;7653:31;7701:19;;14958:73:0::1;7329:397:1::0;14958:73:0::1;15061:14;::::0;;-1:-1:-1;;;;;15061:14:0;;::::1;15079:5;15042:34:::0;;;:18:::1;:34;::::0;;;;;:42;;-1:-1:-1;;15042:42:0;;::::1;::::0;;;15095:39;;-1:-1:-1;;;;;;15095:39:0::1;::::0;;;::::1;::::0;;::::1;::::0;;;15145:34;;;;;:41;;;;::::1;-1:-1:-1::0;15145:41:0::1;::::0;;14879:315::o;7095:167::-;7173:4;7190:42;203:10;7214:9;7225:6;7190:9;:42::i;14554:317::-;2532:6;;-1:-1:-1;;;;;2532:6:0;203:10;2532:22;2524:67;;;;-1:-1:-1;;;2524:67:0;;;;;;;:::i;:::-;14653:11:::1;14640:9;:24;;14632:90;;;::::0;-1:-1:-1;;;14632:90:0;;7933:2:1;14632:90:0::1;::::0;::::1;7915:21:1::0;7972:2;7952:18;;;7945:30;8011:34;7991:18;;;7984:62;-1:-1:-1;;;8062:18:1;;;8055:51;8123:19;;14632:90:0::1;7731:417:1::0;14632:90:0::1;14754:11;14741:9;:24;;14733:89;;;::::0;-1:-1:-1;;;14733:89:0;;8355:2:1;14733:89:0::1;::::0;::::1;8337:21:1::0;8394:2;8374:18;;;8367:30;8433:34;8413:18;;;8406:62;-1:-1:-1;;;8484:18:1;;;8477:50;8544:19;;14733:89:0::1;8153:416:1::0;14733:89:0::1;14833:18;:30:::0;14554:317::o;14039:164::-;2532:6;;-1:-1:-1;;;;;2532:6:0;203:10;2532:22;2524:67;;;;-1:-1:-1;;;2524:67:0;;;;;;;:::i;:::-;14113:6:::1;14108:88;14129:5;:12;14125:1;:16;14108:88;;;14180:4;14163;:14;14168:5;14174:1;14168:8;;;;;;;;:::i;:::-;;::::0;;::::1;::::0;;;;;;;-1:-1:-1;;;;;14163:14:0::1;::::0;;;::::1;::::0;;;;;;-1:-1:-1;14163:14:0;:21;;-1:-1:-1;;14163:21:0::1;::::0;::::1;;::::0;;;::::1;::::0;;14143:3;::::1;::::0;::::1;:::i;:::-;;;;14108:88;;;;14039:164:::0;:::o;19966:154::-;2532:6;;-1:-1:-1;;;;;2532:6:0;203:10;2532:22;2524:67;;;;-1:-1:-1;;;2524:67:0;;;;;;;:::i;:::-;20062:4:::1;20018:23;7063:16:::0;;;:7;:16;;;;;;20079:33:::1;7063:16:::0;20079::::1;:33::i;13051:976::-:0;2532:6;;-1:-1:-1;;;;;2532:6:0;203:10;2532:22;2524:67;;;;-1:-1:-1;;;2524:67:0;;;;;;;:::i;:::-;13115:11:::1;::::0;-1:-1:-1;;;13115:11:0;::::1;;;13114:12;13106:47;;;::::0;-1:-1:-1;;;13106:47:0;;9048:2:1;13106:47:0::1;::::0;::::1;9030:21:1::0;9087:2;9067:18;;;9060:30;9126:25;9106:18;;;9099:53;9169:18;;13106:47:0::1;8846:347:1::0;13106:47:0::1;13275:15;:34:::0;;-1:-1:-1;;;;;;13275:34:0::1;13221:42;13275:34:::0;;::::1;::::0;;;13320:58:::1;13337:4;13221:42:::0;3940:12:::1;13320:8;:58::i;:::-;13423:16;-1:-1:-1::0;;;;;13423:24:0::1;;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;13405:56:0::1;;13470:4;13477:16;-1:-1:-1::0;;;;;13477:21:0::1;;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13405:96;::::0;-1:-1:-1;;;;;;13405:96:0::1;::::0;;;;;;-1:-1:-1;;;;;9684:15:1;;;13405:96:0::1;::::0;::::1;9666:34:1::0;9736:15;;9716:18;;;9709:43;9601:18;;13405:96:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13389:13;:112:::0;;-1:-1:-1;;;;;13389:112:0;;::::1;-1:-1:-1::0;;;;;;13389:112:0;;::::1;;::::0;;13512:15:::1;::::0;::::1;:31;13551:21;13582:4;13588:24;13582:4:::0;-1:-1:-1;;;;;7063:16:0;7036:7;7063:16;;;:7;:16;;;;;;;6970:117;13588:24:::1;13613:1;13615::::0;13617:7:::1;2443::::0;2470:6;-1:-1:-1;;;;;2470:6:0;;2405:79;13617:7:::1;13625:15;13512:129;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;13652:11:0::1;:18:::0;;13730:11:::1;13714:13;:27:::0;;;13752:14:::1;:28:::0;13810:11:::1;13791:16;:30:::0;13853:11:::1;13832:18;:32:::0;-1:-1:-1;;;;13875:18:0;;-1:-1:-1;;;13875:18:0;;;;13925:12:::1;13904:18;:33:::0;13986:15:::1;::::0;13948:71:::1;::::0;-1:-1:-1;;;13948:71:0;;-1:-1:-1;;;;;13986:15:0;;::::1;-1:-1:-1::0;13948:71:0;::::1;10860:51:1::0;-1:-1:-1;;10927:18:1;;;10920:34;13955:13:0;;;-1:-1:-1;13948:29:0::1;::::0;10833:18:1;;13948:71:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;8022:94::-:0;2532:6;;-1:-1:-1;;;;;2532:6:0;203:10;2532:22;2524:67;;;;-1:-1:-1;;;2524:67:0;;;;;;;:::i;:::-;8089:11:::1;:19:::0;;;::::1;;-1:-1:-1::0;;;8089:19:0::1;-1:-1:-1::0;;;;8089:19:0;;::::1;::::0;;;::::1;::::0;;8022:94::o;16819:108::-;2532:6;;-1:-1:-1;;;;;2532:6:0;203:10;2532:22;2524:67;;;;-1:-1:-1;;;2524:67:0;;;;;;;:::i;:::-;16893:17:::1;:26:::0;16819:108::o;14318:103::-;2532:6;;-1:-1:-1;;;;;2532:6:0;203:10;2532:22;2524:67;;;;-1:-1:-1;;;2524:67:0;;;;;;;:::i;:::-;14389:14:::1;:24:::0;14318:103::o;15979:110::-;2532:6;;-1:-1:-1;;;;;2532:6:0;203:10;2532:22;2524:67;;;;-1:-1:-1;;;2524:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;16046:27:0::1;16076:5;16046:27:::0;;;:18:::1;:27;::::0;;;;:35;;-1:-1:-1;;16046:35:0::1;::::0;;15979:110::o;14211:99::-;2532:6;;-1:-1:-1;;;;;2532:6:0;203:10;2532:22;2524:67;;;;-1:-1:-1;;;2524:67:0;;;;;;;:::i;:::-;14280:13:::1;:22:::0;14211:99::o;20293:239::-;2532:6;;-1:-1:-1;;;;;2532:6:0;203:10;2532:22;2524:67;;;;-1:-1:-1;;;2524:67:0;;;;;;;:::i;:::-;20360:11:::1;::::0;-1:-1:-1;;;20360:11:0;::::1;;;20359:12;20351:68;;;::::0;-1:-1:-1;;;20351:68:0;;11417:2:1;20351:68:0::1;::::0;::::1;11399:21:1::0;11456:2;11436:18;;;11429:30;11495:34;11475:18;;;11468:62;-1:-1:-1;;;11546:18:1;;;11539:41;11597:19;;20351:68:0::1;11215:407:1::0;20351:68:0::1;20466:58;::::0;20430:12:::1;::::0;20474:10:::1;::::0;20498:21:::1;::::0;20430:12;20466:58;20430:12;20466:58;20498:21;20474:10;20466:58:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;;;20293:239:0:o;8124:335::-;-1:-1:-1;;;;;8217:19:0;;8209:68;;;;-1:-1:-1;;;8209:68:0;;12039:2:1;8209:68:0;;;12021:21:1;12078:2;12058:18;;;12051:30;12117:34;12097:18;;;12090:62;-1:-1:-1;;;12168:18:1;;;12161:34;12212:19;;8209:68:0;11837:400:1;8209:68:0;-1:-1:-1;;;;;8296:21:0;;8288:68;;;;-1:-1:-1;;;8288:68:0;;12444:2:1;8288:68:0;;;12426:21:1;12483:2;12463:18;;;12456:30;12522:34;12502:18;;;12495:62;-1:-1:-1;;;12573:18:1;;;12566:32;12615:19;;8288:68:0;12242:398:1;8288:68:0;-1:-1:-1;;;;;8367:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;8419:32;;1549:25:1;;;8419:32:0;;1522:18:1;8419:32:0;;;;;;;;8124:335;;;:::o;8467:1850::-;-1:-1:-1;;;;;8555:18:0;;8547:68;;;;-1:-1:-1;;;8547:68:0;;12847:2:1;8547:68:0;;;12829:21:1;12886:2;12866:18;;;12859:30;12925:34;12905:18;;;12898:62;-1:-1:-1;;;12976:18:1;;;12969:35;13021:19;;8547:68:0;12645:401:1;8547:68:0;-1:-1:-1;;;;;8634:16:0;;8626:64;;;;-1:-1:-1;;;8626:64:0;;13253:2:1;8626:64:0;;;13235:21:1;13292:2;13272:18;;;13265:30;13331:34;13311:18;;;13304:62;-1:-1:-1;;;13382:18:1;;;13375:33;13425:19;;8626:64:0;13051:399:1;8626:64:0;8718:1;8709:6;:10;8701:64;;;;-1:-1:-1;;;8701:64:0;;13657:2:1;8701:64:0;;;13639:21:1;13696:2;13676:18;;;13669:30;13735:34;13715:18;;;13708:62;-1:-1:-1;;;13786:18:1;;;13779:39;13835:19;;8701:64:0;13455:405:1;8701:64:0;8776:12;8807:15;8853:7;2443;2470:6;-1:-1:-1;;;;;2470:6:0;;2405:79;8853:7;-1:-1:-1;;;;;8845:15:0;:4;-1:-1:-1;;;;;8845:15:0;;;:32;;;;-1:-1:-1;2443:7:0;2470:6;-1:-1:-1;;;;;8864:13:0;;;2470:6;;8864:13;;8845:32;:52;;;;-1:-1:-1;;;;;;8881:16:0;;;;8845:52;:77;;;;-1:-1:-1;;;;;;8901:21:0;;8915:6;8901:21;;8845:77;:90;;;;-1:-1:-1;8927:8:0;;-1:-1:-1;;;8927:8:0;;;;8926:9;8845:90;8841:939;;;-1:-1:-1;;;;;8961:10:0;;;;;;:4;:10;;;;;;;;8960:11;:24;;;;-1:-1:-1;;;;;;8976:8:0;;;;;;:4;:8;;;;;;;;8975:9;8960:24;8952:33;;;;;;9043:13;;9012:4;;-1:-1:-1;;;;;;9035:21:0;;;9043:13;;9035:21;:55;;;;-1:-1:-1;9074:15:0;;-1:-1:-1;;;;;9060:30:0;;;9074:15;;9060:30;;9035:55;:82;;;;-1:-1:-1;;;;;;9095:22:0;;;;;;:18;:22;;;;;;;;9094:23;9035:82;:101;;;;-1:-1:-1;9121:15:0;;-1:-1:-1;;;9121:15:0;;;;9035:101;9031:451;;;9175:13;;9165:6;:23;;9157:77;;;;-1:-1:-1;;;9157:77:0;;14067:2:1;9157:77:0;;;14049:21:1;14106:2;14086:18;;;14079:30;14145:34;14125:18;;;14118:62;-1:-1:-1;;;14196:18:1;;;14189:39;14245:19;;9157:77:0;13865:405:1;9157:77:0;9287:16;;9277:6;9261:13;9271:2;-1:-1:-1;;;;;7063:16:0;7036:7;7063:16;;;:7;:16;;;;;;;6970:117;9261:13;:22;;;;:::i;:::-;:42;;9253:91;;;;-1:-1:-1;;;9253:91:0;;14477:2:1;9253:91:0;;;14459:21:1;14516:2;14496:18;;;14489:30;14555:34;14535:18;;;14528:62;-1:-1:-1;;;14606:18:1;;;14599:34;14650:19;;9253:91:0;14275:400:1;9253:91:0;-1:-1:-1;;;;;9371:12:0;;;;;;:8;:12;;;;;;9386:15;-1:-1:-1;9363:39:0;;;;;;9436:30;:15;9455:10;9436:30;:::i;:::-;-1:-1:-1;;;;;9421:12:0;;;;;;:8;:12;;;;;:45;9031:451;9520:13;;-1:-1:-1;;;;;9514:19:0;;;9520:13;;9514:19;:55;;;;-1:-1:-1;9553:15:0;;-1:-1:-1;;;;;9537:32:0;;;9553:15;;9537:32;;9514:55;:84;;;;-1:-1:-1;;;;;;9574:24:0;;;;;;:18;:24;;;;;;;;9573:25;9514:84;:103;;;;-1:-1:-1;9602:15:0;;-1:-1:-1;;;9602:15:0;;;;9514:103;9510:259;;;9656:14;;9646:6;:24;;9638:79;;;;-1:-1:-1;;;9638:79:0;;14882:2:1;9638:79:0;;;14864:21:1;14921:2;14901:18;;;14894:30;14960:34;14940:18;;;14933:62;-1:-1:-1;;;15011:18:1;;;15004:40;15061:19;;9638:79:0;14680:406:1;9638:79:0;-1:-1:-1;9749:4:0;9510:259;-1:-1:-1;;;;;9795:24:0;;;;;;:18;:24;;;;;;;;;:50;;-1:-1:-1;;;;;;9823:22:0;;;;;;:18;:22;;;;;;;;9795:50;9792:97;;;9872:5;9862:15;;9792:97;9950:4;9901:28;7063:16;;;:7;:16;;;;;;9901:55;;9967:12;10006:18;;9983:20;:41;9982:57;;;;;10029:10;9982:57;9967:72;;10056:7;:22;;;;-1:-1:-1;10067:11:0;;-1:-1:-1;;;10067:11:0;;;;10056:22;:35;;;;-1:-1:-1;10083:8:0;;-1:-1:-1;;;10083:8:0;;;;10082:9;10056:35;:64;;;;-1:-1:-1;;;;;;10096:24:0;;;;;;:18;:24;;;;;;;;10095:25;10056:64;:91;;;;-1:-1:-1;;;;;;10125:22:0;;;;;;:18;:22;;;;;;;;10124:23;10056:91;10052:195;;;10164:8;:15;;-1:-1:-1;;;;10164:15:0;-1:-1:-1;;;10164:15:0;;;10194:10;:8;:10::i;:::-;10219:8;:16;;-1:-1:-1;;;;10219:16:0;;;10052:195;10259:50;10274:4;10279:2;10282:6;10289:7;10298:10;10259:14;:50::i;:::-;8536:1781;;;;8467:1850;;;:::o;1260:190::-;1346:7;1382:12;1374:6;;;;1366:29;;;;-1:-1:-1;;;1366:29:0;;;;;;;;:::i;:::-;-1:-1:-1;1406:9:0;1418:5;1422:1;1418;:5;:::i;:::-;1406:17;1260:190;-1:-1:-1;;;;;1260:190:0:o;12943:96::-;13000:14;;:31;;-1:-1:-1;;;;;13000:14:0;;;;:31;;;;;13024:6;;13000:14;:31;:14;:31;13024:6;13000:14;:31;;;;;;;;;;;;;;;;;;;12013:483;5862:6;:13;;-1:-1:-1;;;;5862:13:0;-1:-1:-1;;;5862:13:0;;;12115:16:::1;::::0;;12129:1:::1;12115:16:::0;;;;;::::1;::::0;;-1:-1:-1;;12115:16:0::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;12115:16:0::1;12091:40;;12160:4;12142;12147:1;12142:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;12142:23:0;;::::1;:7;::::0;;::::1;::::0;;;;;;:23;;;;12186:15:::1;::::0;:22:::1;::::0;;-1:-1:-1;;;12186:22:0;;;;:15;;;::::1;::::0;:20:::1;::::0;:22:::1;::::0;;::::1;::::0;12142:7;;12186:22;;;;;:15;:22:::1;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12176:4;12181:1;12176:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;12176:32:0;;::::1;:7;::::0;;::::1;::::0;;;;;:32;12251:15:::1;::::0;12219:62:::1;::::0;12236:4:::1;::::0;12251:15:::1;12269:11:::0;12219:8:::1;:62::i;:::-;12292:15;::::0;:196:::1;::::0;-1:-1:-1;;;12292:196:0;;-1:-1:-1;;;;;12292:15:0;;::::1;::::0;:66:::1;::::0;:196:::1;::::0;12373:11;;12292:15:::1;::::0;12415:4;;12442::::1;::::0;12462:15:::1;::::0;12292:196:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;5898:6:0;:14;;-1:-1:-1;;;;5898:14:0;;;-1:-1:-1;;;;12013:483:0:o;10325:1680::-;10408:4;10364:23;7063:16;;;:7;:16;;;;;;10364:50;;10425:25;10492:16;;10474:15;;10453:18;;:36;;;;:::i;:::-;:55;;;;:::i;:::-;10425:83;-1:-1:-1;10519:12:0;10555:20;;;:46;;-1:-1:-1;10579:22:0;;10555:46;10552:60;;;10604:7;;;10325:1680::o;10552:60::-;10645:18;;:23;;10666:2;10645:23;:::i;:::-;10627:15;:41;10624:114;;;10703:18;;:23;;10724:2;10703:23;:::i;:::-;10685:41;;10624:114;10807:23;10892:1;10872:17;10851:18;;10833:15;:36;;;;:::i;:::-;:56;;;;:::i;:::-;:60;;;;:::i;:::-;10807:86;-1:-1:-1;10904:26:0;10933:36;:15;10807:86;10933:19;:36::i;:::-;10904:65;-1:-1:-1;11018:21:0;11052:36;10904:65;11052:16;:36::i;:::-;11110:18;11131:44;:21;11157:17;11131:25;:44::i;:::-;11110:65;;11196:20;11219:54;11255:17;11219:31;11234:15;;11219:10;:14;;:31;;;;:::i;:::-;:35;;:54::i;:::-;11196:77;;11284:21;11308:55;11345:17;11308:32;11323:16;;11308:10;:14;;:32;;;;:::i;:55::-;11284:79;-1:-1:-1;11394:23:0;11284:79;11420:25;11433:12;11420:10;:25;:::i;:::-;:41;;;;:::i;:::-;11513:1;11492:18;:22;;;11525:15;:19;;;11555:16;:20;;;11617:13;;11609:52;;11394:67;;-1:-1:-1;;;;;;11617:13:0;;11644:12;;11609:52;11513:1;11609:52;11644:12;11617:13;11609:52;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;11596:65:0;;-1:-1:-1;;11685:19:0;;;;;:42;;;11726:1;11708:15;:19;11685:42;11682:210;;;11743:46;11756:15;11773;11743:12;:46::i;:::-;11861:18;;11809:71;;;16803:25:1;;;16859:2;16844:18;;16837:34;;;16887:18;;;16880:34;;;;11809:71:0;;;;;;16791:2:1;11809:71:0;;;11682:210;11943:14;;11935:62;;-1:-1:-1;;;;;11943:14:0;;;;11971:21;;11935:62;;;;11971:21;11943:14;11935:62;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;;;10325:1680:0:o;18124:389::-;18249:7;18245:129;;18273:14;:12;:14::i;:::-;18245:129;;;18329:33;18339:6;18347;18355;18329:9;:33::i;:::-;18320:42;;18245:129;18386:44;18404:6;18412:9;18423:6;18386:17;:44::i;:::-;18455:7;18451:55;;18479:15;17718:22;;17701:14;:39;17770:24;;17751:16;:43;17821:21;;17805:13;:37;17871:23;;17853:15;:41;17925:25;;17905:17;:45;17978:22;;17961:14;:39;17657:351;18479:15;18124:389;;;;;:::o;1116:136::-;1174:7;1201:43;1205:1;1208;1201:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;1194:50;1116:136;-1:-1:-1;;;1116:136:0:o;1458:246::-;1516:7;1540:6;1536:47;;-1:-1:-1;1570:1:0;1563:8;;1536:47;1593:9;1605:5;1609:1;1605;:5;:::i;:::-;1593:17;-1:-1:-1;1638:1:0;1629:5;1633:1;1593:17;1629:5;:::i;:::-;:10;1621:56;;;;-1:-1:-1;;;1621:56:0;;17127:2:1;1621:56:0;;;17109:21:1;17166:2;17146:18;;;17139:30;17205:34;17185:18;;;17178:62;-1:-1:-1;;;17256:18:1;;;17249:31;17297:19;;1621:56:0;16925:397:1;1712:132:0;1770:7;1797:39;1801:1;1804;1797:39;;;;;;;;;;;;;;;;;:3;:39::i;12504:423::-;12617:15;;12585:62;;12602:4;;-1:-1:-1;;;;;12617:15:0;12635:11;12585:8;:62::i;:::-;12658:15;;12862:16;;12658:261;;-1:-1:-1;;;12658:261:0;;-1:-1:-1;;;;;12658:15:0;;;;:31;;12697:9;;12658:261;;12730:4;;12750:11;;12658:15;;;;12862:16;;12893:15;;12658:261;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;16935:710::-;16981:14;;:19;:44;;;;-1:-1:-1;17004:16:0;;:21;16981:44;:66;;;;-1:-1:-1;17029:13:0;;:18;16981:66;:90;;;;-1:-1:-1;17051:15:0;;:20;16981:90;:116;;;;-1:-1:-1;17075:17:0;;:22;16981:116;:139;;;;-1:-1:-1;17101:14:0;;:19;16981:139;16978:151;;;16935:710::o;16978:151::-;17174:14;;;17149:22;:39;17226:16;;;17199:24;:43;17277:13;;;17253:21;:37;17327:15;;;17301:23;:41;17381:17;;;17353:25;:45;17434:14;;;17409:22;:39;-1:-1:-1;17469:18:0;;;;17498:20;;;;17529:17;;;;17557:19;;;17587:21;;;17619:18;16935:710::o;18796:1121::-;18877:7;18897:18;18926:15;18952:14;18977:15;19048:12;19027:17;;19006:18;;:38;;;;:::i;:::-;:54;19003:518;;19089:2;19076:15;;19115:2;19106:11;;19003:518;;;19163:21;19177:6;19163:13;:21::i;:::-;19150:34;;19203:6;19199:311;;;19240:15;;19230:25;;19283:17;;19274:26;;19329:14;;19319:24;;19199:311;;;19394:14;;19384:24;;19436:16;;19427:25;;19481:13;;19471:23;;19199:311;19533:12;19548:31;19575:3;19548:22;:6;19559:10;19548;:22::i;:31::-;19533:46;-1:-1:-1;19626:10:0;19609:14;19616:7;19533:46;19609:14;:::i;:::-;:27;;;;:::i;:::-;19590:15;;:46;;;;;;;:::i;:::-;;;;-1:-1:-1;19684:10:0;;-1:-1:-1;19667:14:0;19674:7;19667:4;:14;:::i;:::-;:27;;;;:::i;:::-;19647:16;;:47;;;;;;;:::i;:::-;;;;-1:-1:-1;19743:10:0;;-1:-1:-1;19727:13:0;19734:6;19727:4;:13;:::i;:::-;:26;;;;:::i;:::-;19705:18;;:48;;;;;;;:::i;:::-;;;;-1:-1:-1;;19781:8:0;;19778:86;;19806:46;19824:6;19840:4;19847;19806:17;:46::i;:::-;19895:14;19905:4;19895:14;;:::i;:::-;;18796:1121;-1:-1:-1;;;;;;;;;18796:1121:0:o;18521:267::-;-1:-1:-1;;;;;18637:15:0;;;;;;:7;:15;;;;;;:28;;18657:7;18637:19;:28::i;:::-;-1:-1:-1;;;;;18619:15:0;;;;;;;:7;:15;;;;;;:46;;;;18697:18;;;;;;;:31;;18720:7;18697:22;:31::i;:::-;-1:-1:-1;;;;;18676:18:0;;;;;;;:7;:18;;;;;;;:52;;;;18744:36;;;;;;;;;;18772:7;1549:25:1;;1537:2;1522:18;;1403:177;1852:189:0;1938:7;1973:12;1966:5;1958:28;;;;-1:-1:-1;;;1958:28:0;;;;;;;;:::i;:::-;-1:-1:-1;1997:9:0;2009:5;2013:1;2009;:5;:::i;20540:249::-;20597:7;20621:6;20617:98;;;20689:14;;20669:17;;20651:15;;:35;;;;:::i;:::-;:52;;;;:::i;20617:98::-;20768:13;;20749:16;;20732:14;;:33;;;;:::i;929:179::-;987:7;;1019:5;1023:1;1019;:5;:::i;:::-;1007:17;;1048:1;1043;:6;;1035:46;;;;-1:-1:-1;;;1035:46:0;;18149:2:1;1035:46:0;;;18131:21:1;18188:2;18168:18;;;18161:30;18227:29;18207:18;;;18200:57;18274:18;;1035:46:0;17947:351:1;14:597;126:4;155:2;184;173:9;166:21;216:6;210:13;259:6;254:2;243:9;239:18;232:34;284:1;294:140;308:6;305:1;302:13;294:140;;;403:14;;;399:23;;393:30;369:17;;;388:2;365:26;358:66;323:10;;294:140;;;452:6;449:1;446:13;443:91;;;522:1;517:2;508:6;497:9;493:22;489:31;482:42;443:91;-1:-1:-1;595:2:1;574:15;-1:-1:-1;;570:29:1;555:45;;;;602:2;551:54;;14:597;-1:-1:-1;;;14:597:1:o;616:131::-;-1:-1:-1;;;;;691:31:1;;681:42;;671:70;;737:1;734;727:12;752:134;820:20;;849:31;820:20;849:31;:::i;:::-;752:134;;;:::o;891:315::-;959:6;967;1020:2;1008:9;999:7;995:23;991:32;988:52;;;1036:1;1033;1026:12;988:52;1075:9;1062:23;1094:31;1119:5;1094:31;:::i;:::-;1144:5;1196:2;1181:18;;;;1168:32;;-1:-1:-1;;;891:315:1:o;1585:316::-;1662:6;1670;1678;1731:2;1719:9;1710:7;1706:23;1702:32;1699:52;;;1747:1;1744;1737:12;1699:52;-1:-1:-1;;1770:23:1;;;1840:2;1825:18;;1812:32;;-1:-1:-1;1891:2:1;1876:18;;;1863:32;;1585:316;-1:-1:-1;1585:316:1:o;1906:456::-;1983:6;1991;1999;2052:2;2040:9;2031:7;2027:23;2023:32;2020:52;;;2068:1;2065;2058:12;2020:52;2107:9;2094:23;2126:31;2151:5;2126:31;:::i;:::-;2176:5;-1:-1:-1;2233:2:1;2218:18;;2205:32;2246:33;2205:32;2246:33;:::i;:::-;1906:456;;2298:7;;-1:-1:-1;;;2352:2:1;2337:18;;;;2324:32;;1906:456::o;2367:247::-;2426:6;2479:2;2467:9;2458:7;2454:23;2450:32;2447:52;;;2495:1;2492;2485:12;2447:52;2534:9;2521:23;2553:31;2578:5;2553:31;:::i;2619:180::-;2678:6;2731:2;2719:9;2710:7;2706:23;2702:32;2699:52;;;2747:1;2744;2737:12;2699:52;-1:-1:-1;2770:23:1;;2619:180;-1:-1:-1;2619:180:1:o;2993:118::-;3079:5;3072:13;3065:21;3058:5;3055:32;3045:60;;3101:1;3098;3091:12;3116:241;3172:6;3225:2;3213:9;3204:7;3200:23;3196:32;3193:52;;;3241:1;3238;3231:12;3193:52;3280:9;3267:23;3299:28;3321:5;3299:28;:::i;3570:127::-;3631:10;3626:3;3622:20;3619:1;3612:31;3662:4;3659:1;3652:15;3686:4;3683:1;3676:15;3702:1121;3786:6;3817:2;3860;3848:9;3839:7;3835:23;3831:32;3828:52;;;3876:1;3873;3866:12;3828:52;3916:9;3903:23;3945:18;3986:2;3978:6;3975:14;3972:34;;;4002:1;3999;3992:12;3972:34;4040:6;4029:9;4025:22;4015:32;;4085:7;4078:4;4074:2;4070:13;4066:27;4056:55;;4107:1;4104;4097:12;4056:55;4143:2;4130:16;4165:2;4161;4158:10;4155:36;;;4171:18;;:::i;:::-;4217:2;4214:1;4210:10;4249:2;4243:9;4312:2;4308:7;4303:2;4299;4295:11;4291:25;4283:6;4279:38;4367:6;4355:10;4352:22;4347:2;4335:10;4332:18;4329:46;4326:72;;;4378:18;;:::i;:::-;4414:2;4407:22;4464:18;;;4498:15;;;;-1:-1:-1;4540:11:1;;;4536:20;;;4568:19;;;4565:39;;;4600:1;4597;4590:12;4565:39;4624:11;;;;4644:148;4660:6;4655:3;4652:15;4644:148;;;4726:23;4745:3;4726:23;:::i;:::-;4714:36;;4677:12;;;;4770;;;;4644:148;;;4811:6;3702:1121;-1:-1:-1;;;;;;;;3702:1121:1:o;4828:388::-;4896:6;4904;4957:2;4945:9;4936:7;4932:23;4928:32;4925:52;;;4973:1;4970;4963:12;4925:52;5012:9;4999:23;5031:31;5056:5;5031:31;:::i;:::-;5081:5;-1:-1:-1;5138:2:1;5123:18;;5110:32;5151:33;5110:32;5151:33;:::i;:::-;5203:7;5193:17;;;4828:388;;;;;:::o;5221:356::-;5423:2;5405:21;;;5442:18;;;5435:30;5501:34;5496:2;5481:18;;5474:62;5568:2;5553:18;;5221:356::o;5582:127::-;5643:10;5638:3;5634:20;5631:1;5624:31;5674:4;5671:1;5664:15;5698:4;5695:1;5688:15;5714:128;5754:3;5785:1;5781:6;5778:1;5775:13;5772:39;;;5791:18;;:::i;:::-;-1:-1:-1;5827:9:1;;5714:128::o;8574:127::-;8635:10;8630:3;8626:20;8623:1;8616:31;8666:4;8663:1;8656:15;8690:4;8687:1;8680:15;8706:135;8745:3;-1:-1:-1;;8766:17:1;;8763:43;;;8786:18;;:::i;:::-;-1:-1:-1;8833:1:1;8822:13;;8706:135::o;9198:251::-;9268:6;9321:2;9309:9;9300:7;9296:23;9292:32;9289:52;;;9337:1;9334;9327:12;9289:52;9369:9;9363:16;9388:31;9413:5;9388:31;:::i;9763:607::-;-1:-1:-1;;;;;10122:15:1;;;10104:34;;10169:2;10154:18;;10147:34;;;;10212:2;10197:18;;10190:34;;;;10255:2;10240:18;;10233:34;;;;10304:15;;;10298:3;10283:19;;10276:44;10084:3;10336:19;;10329:35;;;;10053:3;10038:19;;9763:607::o;10375:306::-;10463:6;10471;10479;10532:2;10520:9;10511:7;10507:23;10503:32;10500:52;;;10548:1;10545;10538:12;10500:52;10577:9;10571:16;10561:26;;10627:2;10616:9;10612:18;10606:25;10596:35;;10671:2;10660:9;10656:18;10650:25;10640:35;;10375:306;;;;;:::o;10965:245::-;11032:6;11085:2;11073:9;11064:7;11060:23;11056:32;11053:52;;;11101:1;11098;11091:12;11053:52;11133:9;11127:16;11152:28;11174:5;11152:28;:::i;15091:125::-;15131:4;15159:1;15156;15153:8;15150:34;;;15164:18;;:::i;:::-;-1:-1:-1;15201:9:1;;15091:125::o;15221:980::-;15483:4;15531:3;15520:9;15516:19;15562:6;15551:9;15544:25;15588:2;15626:6;15621:2;15610:9;15606:18;15599:34;15669:3;15664:2;15653:9;15649:18;15642:31;15693:6;15728;15722:13;15759:6;15751;15744:22;15797:3;15786:9;15782:19;15775:26;;15836:2;15828:6;15824:15;15810:29;;15857:1;15867:195;15881:6;15878:1;15875:13;15867:195;;;15946:13;;-1:-1:-1;;;;;15942:39:1;15930:52;;16037:15;;;;16002:12;;;;15978:1;15896:9;15867:195;;;-1:-1:-1;;;;;;;16118:32:1;;;;16113:2;16098:18;;16091:60;-1:-1:-1;;;16182:3:1;16167:19;16160:35;16079:3;15221:980;-1:-1:-1;;;15221:980:1:o;16206:168::-;16246:7;16312:1;16308;16304:6;16300:14;16297:1;16294:21;16289:1;16282:9;16275:17;16271:45;16268:71;;;16319:18;;:::i;:::-;-1:-1:-1;16359:9:1;;16206:168::o;16379:217::-;16419:1;16445;16435:132;;16489:10;16484:3;16480:20;16477:1;16470:31;16524:4;16521:1;16514:15;16552:4;16549:1;16542:15;16435:132;-1:-1:-1;16581:9:1;;16379:217::o

Swarm Source

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