ETH Price: $2,524.81 (-0.13%)

Token

Peaky Pepe (PEAKY)
 

Overview

Max Total Supply

420,696,969,696,969 PEAKY

Holders

126

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
130,439,791,223.331821158751635652 PEAKY

Value
$0.00
0x9ab5657982689c38edc358004e8cab744aa710b0
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:
PeakyPepe

Compiler Version
v0.8.12+commit.f00d7308

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion
File 1 of 1 : peakypepe.sol
// SPDX-License-Identifier: MIT
pragma solidity 0.8.12;

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

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

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

interface IERC20Metadata is IERC20 {
    function name() external view returns (string memory);
    function symbol() external view returns (string memory);
    function decimals() external view returns (uint8);
}

contract ERC20 is Context, IERC20, IERC20Metadata {
    mapping(address => uint256) private _balances;
    mapping(address => mapping(address => uint256)) private _allowances;
    uint256 private _totalSupply;
    string private _name;
    string private _symbol;

    constructor(string memory name_, string memory symbol_) {
        _name = name_;
        _symbol = symbol_;
    }

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

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

    function decimals() public view virtual override returns (uint8) {
        return 18;
    }

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

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

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

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

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

    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) public virtual override returns (bool) {
        _transfer(sender, recipient, amount);

        uint256 currentAllowance = _allowances[sender][_msgSender()];
        require(currentAllowance >= amount, "ERC20: transfer amount exceeds allowance");
    unchecked {
        _approve(sender, _msgSender(), currentAllowance - amount);
    }

        return true;
    }

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

    function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) {
        uint256 currentAllowance = _allowances[_msgSender()][spender];
        require(currentAllowance >= subtractedValue, "ERC20: decreased allowance below zero");
    unchecked {
        _approve(_msgSender(), spender, currentAllowance - subtractedValue);
    }

        return true;
    }

    function _transfer(
        address sender,
        address recipient,
        uint256 amount
    ) internal virtual {
        require(sender != address(0), "ERC20: transfer from the zero address");
        require(recipient != address(0), "ERC20: transfer to the zero address");

        uint256 senderBalance = _balances[sender];
        require(senderBalance >= amount, "ERC20: transfer amount exceeds balance");
    unchecked {
        _balances[sender] = senderBalance - amount;
    }
        _balances[recipient] += amount;

        emit Transfer(sender, recipient, amount);
    }

    function _createInitialSupply(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: mint to the zero address");

        _totalSupply += amount;
        _balances[account] += amount;
        emit Transfer(address(0), account, amount);
    }

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

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

contract Ownable is Context {
    address private _owner;

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

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

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

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

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

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

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

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

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

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

contract PeakyPepe is ERC20, Ownable {

    uint256 public minBuyAmount;
    uint256 public maxWalletAmount;

    IDexRouter public immutable uniswapV2Router;
    address public immutable uniswapV2Pair;

    bool private swapping;
    uint256 public swapTokensAtAmount;

    address private TreasuryAddress;
    address private RewardsAddress;

    uint256 public deadBlocks = 2;

    bool public limitsInEffect = true;
    bool public tradingActive = false;
    bool public swapEnabled = false;

    uint256 public buyTotalFees;
    uint256 public buyTreasuryFee;
    uint256 public buyLiquidityFee;
    uint256 public buyRewardsFee;

    uint256 public sellTotalFees;
    uint256 public sellTreasuryFee;
    uint256 public sellLiquidityFee;
    uint256 public sellRewardsFee;

    uint256 public tokensForTreasury;
    uint256 public tokensForLiquidity;
    uint256 public tokensForRewards;


    // exlcude from fees and max transaction amount
    mapping (address => bool) private _isExcludedFromFees;
    mapping (address => bool) public _isExcludedMaxTransactionAmount;

    // store addresses that a automatic market maker pairs. Any transfer *to* these addresses
    // could be subject to a maximum transfer amount
    mapping (address => bool) public automatedMarketMakerPairs;
    mapping (address => bool) private _isSniper;

    event SetAutomatedMarketMakerPair(address indexed pair, bool indexed value);

    event EnabledTrading(bool tradingActive, uint256 deadBlocks);
    event RemovedLimits();

    event ExcludeFromFees(address indexed account, bool isExcluded);

    event UpdatedMinBuyAmount(uint256 newAmount);

    event UpdatedMaxWalletAmount(uint256 newAmount);

    event UpdatedTreasuryAddress(address indexed newWallet);

    event UpdatedRewardsAddress(address indexed newWallet);

    event MaxTransactionExclusion(address _address, bool excluded);

    event SwapAndLiquify(
        uint256 tokensSwapped,
        uint256 ethReceived,
        uint256 tokensIntoLiquidity
    );

    event TransferForeignToken(address token, uint256 amount);


    constructor() ERC20("Peaky Pepe", "PEAKY") {

        address newOwner = msg.sender; 

        IDexRouter _uniswapV2Router = IDexRouter(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);

        _excludeFromMaxTransaction(address(_uniswapV2Router), true);
        uniswapV2Router = _uniswapV2Router;

        uniswapV2Pair = IDexFactory(_uniswapV2Router.factory()).createPair(address(this), _uniswapV2Router.WETH());
        _setAutomatedMarketMakerPair(address(uniswapV2Pair), true);

        uint256 totalSupply = 420696969696969 * 1e18;

        minBuyAmount = totalSupply *  50 / 10000;
        maxWalletAmount = totalSupply * 90 / 10000;
        swapTokensAtAmount = totalSupply * 50 / 100000; 

        buyTreasuryFee = 10;
        buyLiquidityFee = 0;
        buyRewardsFee = 0;
        buyTotalFees = buyTreasuryFee + buyLiquidityFee + buyRewardsFee;

        sellTreasuryFee = 30;
        sellLiquidityFee = 10;
        sellRewardsFee = 0;
        sellTotalFees = sellTreasuryFee + sellLiquidityFee + sellRewardsFee;

        _excludeFromMaxTransaction(newOwner, true);
        _excludeFromMaxTransaction(address(this), true);
        _excludeFromMaxTransaction(address(0xdead), true);

        TreasuryAddress = address(0x592a32B40cb23b69f24a3caa079F1F44eCA09435);
        RewardsAddress = address(0x592a32B40cb23b69f24a3caa079F1F44eCA09435);

        excludeFromFees(newOwner, true);
        excludeFromFees(address(this), true);
        excludeFromFees(address(0xdead), true);

        _createInitialSupply(newOwner, totalSupply);
        transferOwnership(newOwner);
    }

    receive() external payable {}

    function updateMinBuyAmount(uint256 newNum) external onlyOwner {
        require(newNum >= (totalSupply() * 1 / 1000)/1e18, "Cannot set max buy amount lower than 0.1%");
        minBuyAmount = newNum * (10**18);
        emit UpdatedMinBuyAmount(minBuyAmount);
    }
    
    // remove limits after token is stable
    function removeLimits() external onlyOwner {
        limitsInEffect = false;
        emit RemovedLimits();
    }


    function _excludeFromMaxTransaction(address updAds, bool isExcluded) private {
        _isExcludedMaxTransactionAmount[updAds] = isExcluded;
        emit MaxTransactionExclusion(updAds, isExcluded);
    }

    function excludeFromMaxTransaction(address updAds, bool isEx) external onlyOwner {
        if(!isEx){
            require(updAds != uniswapV2Pair, "Cannot remove uniswap pair from max txn");
        }
        _isExcludedMaxTransactionAmount[updAds] = isEx;
    }

    function updateMaxWalletAmount(uint256 newNum) external onlyOwner {
        require(newNum >= (totalSupply() * 3 / 1000)/1e18, "Cannot set max wallet amount lower than 0.3%");
        maxWalletAmount = newNum * (10**18);
        emit UpdatedMaxWalletAmount(maxWalletAmount);
    }

    // change the minimum amount of tokens to sell from fees
    function updateSwapTokensAtAmount(uint256 newAmount) external onlyOwner {
        swapTokensAtAmount = newAmount;
    }

    

    function updateBuyFees(uint256 _treasuryFee, uint256 _liquidityFee, uint256 _rewardsFee) external onlyOwner {
        buyTreasuryFee = _treasuryFee;
        buyLiquidityFee = _liquidityFee;
        buyRewardsFee = _rewardsFee;
        buyTotalFees = buyTreasuryFee + buyLiquidityFee + buyRewardsFee;
        require(buyTotalFees <= 15, "Must keep fees at 15% or less");
    }

    function updateSellFees(uint256 _treasuryFee, uint256 _liquidityFee, uint256 _rewardsFee) external onlyOwner {
        sellTreasuryFee = _treasuryFee;
        sellLiquidityFee = _liquidityFee;
        sellRewardsFee = _rewardsFee;
        sellTotalFees = sellTreasuryFee + sellLiquidityFee + sellRewardsFee;
        require(sellTotalFees <= 30, "Must keep fees at 30% or less");
    }

    function excludeFromFees(address account, bool excluded) public onlyOwner {
        _isExcludedFromFees[account] = excluded;
        emit ExcludeFromFees(account, excluded);
    }


    function _transfer(address from, address to, uint256 amount) internal override {

        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");
        require(amount > 0, "amount must be greater than 0");
        require(!_isSniper[from], "You are a sniper, get life!");
        require(!_isSniper[to], "You are a sniper, get life!");


        if(limitsInEffect){
            if (from != owner() && to != owner() && to != address(0) && to != address(0xdead)){
                if(!tradingActive){
                    require(_isExcludedMaxTransactionAmount[from] || _isExcludedMaxTransactionAmount[to], "Trading is not active.");
                    require(from == owner(), "Trading is enabled");
                }

                //when buy
                if (automatedMarketMakerPairs[from] && !_isExcludedMaxTransactionAmount[to]) {
                    require(amount >= minBuyAmount, "Buy transfer amount doesnt exceed the min buy.");
                    require(amount + balanceOf(to) <= maxWalletAmount, "Cannot Exceed max wallet");
                }
                else if (!_isExcludedMaxTransactionAmount[to] && !_isExcludedMaxTransactionAmount[from]){
                    require(amount + balanceOf(to) <= maxWalletAmount, "Cannot Exceed max wallet");
                }
            }
        }

        uint256 contractTokenBalance = balanceOf(address(this));

        bool canSwap = contractTokenBalance >= swapTokensAtAmount;

        if(canSwap && swapEnabled && !swapping && !automatedMarketMakerPairs[from] && !_isExcludedFromFees[from] && !_isExcludedFromFees[to]) {
            swapping = true;

            swapBack();

            swapping = false;
        }

        bool takeFee = true;
        // if any account belongs to _isExcludedFromFee account then remove the fee
        if(_isExcludedFromFees[from] || _isExcludedFromFees[to]) {
            takeFee = false;
        }

        uint256 fees = 0;
        uint256 penaltyAmount = 0;
        // only take fees on Trades, not on wallet transfers

        if(takeFee){
            // on sell
            if (automatedMarketMakerPairs[to] && sellTotalFees > 0){
                fees = amount * sellTotalFees /100;
                tokensForLiquidity += fees * sellLiquidityFee / sellTotalFees;
                tokensForTreasury += fees * sellTreasuryFee / sellTotalFees;
                tokensForRewards += fees * sellRewardsFee / sellTotalFees;
            }
            // on buy
            else if(automatedMarketMakerPairs[from] && buyTotalFees > 0) {
                fees = amount * buyTotalFees / 100;
                tokensForLiquidity += fees * buyLiquidityFee / buyTotalFees;
                tokensForTreasury += fees * buyTreasuryFee / buyTotalFees;
                tokensForRewards += fees * buyRewardsFee / buyTotalFees;
            }

            if(fees > 0){
                super._transfer(from, address(this), fees);
            }

            amount -= fees + penaltyAmount;
        }

        super._transfer(from, to, amount);
    }

    function swapTokensForEth(uint256 tokenAmount) private {

        // generate the uniswap pair path of token -> weth
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = uniswapV2Router.WETH();

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

        // make the swap
        uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0, // accept any amount of ETH
            path,
            address(this),
            block.timestamp
        );
    }

    function setAutomatedMarketMakerPair(address pair, bool value) external onlyOwner {
        require(pair != uniswapV2Pair, "The pair cannot be removed from automatedMarketMakerPairs");

        _setAutomatedMarketMakerPair(pair, value);
    }

    function _setAutomatedMarketMakerPair(address pair, bool value) private {
        automatedMarketMakerPairs[pair] = value;

        _excludeFromMaxTransaction(pair, value);

        emit SetAutomatedMarketMakerPair(pair, value);
    }


    // once enabled, can never be turned off
    function enableTrading(uint256 _deadBlocks) external onlyOwner {
        require(!tradingActive, "Cannot re enable trading");
        tradingActive = true;
        swapEnabled = true;
        deadBlocks = _deadBlocks;
        emit EnabledTrading(tradingActive, _deadBlocks);
    }

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

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

    function transferForeignToken(address _token, address _to) external onlyOwner returns (bool _sent) {
        require(_token != address(0), "_token address cannot be 0");
        uint256 _contractBalance = IERC20(_token).balanceOf(address(this));
        _sent = IERC20(_token).transfer(_to, _contractBalance);
        emit TransferForeignToken(_token, _contractBalance);
    }

    // withdraw ETH if stuck or someone sends to the address
    function withdrawStuckETH() external onlyOwner {
        bool success;
        (success,) = address(msg.sender).call{value: address(this).balance}("");
    }

    function setTreasuryAddress(address _TreasuryAddress) external onlyOwner {
        require(_TreasuryAddress != address(0), "_TreasuryAddress address cannot be 0");
        TreasuryAddress = payable(_TreasuryAddress);
        emit UpdatedTreasuryAddress(_TreasuryAddress);
    }

    function setRewardsAddress(address _RewardsAddress) external onlyOwner {
        require(_RewardsAddress != address(0), "_RewardsAddress address cannot be 0");
        RewardsAddress = payable(_RewardsAddress);
        emit UpdatedRewardsAddress(_RewardsAddress);
    }

    function manage_Snipers(address[] calldata addresses, bool status) public onlyOwner {
        for (uint256 i; i < addresses.length; ++i) {
                _isSniper[addresses[i]] = status;
        }
    }

    function isSniper(address account) public view returns (bool) {
        return _isSniper[account];
    }

   
    function swapBack() private {
        uint256 contractBalance = balanceOf(address(this));
        uint256 totalTokensToSwap = tokensForLiquidity + tokensForTreasury + tokensForRewards;

        if(contractBalance == 0 || totalTokensToSwap == 0) {return;}

        if(contractBalance > swapTokensAtAmount * 10){
            contractBalance = swapTokensAtAmount * 10;
        }

        bool success;

        // Halve the amount of liquidity tokens
        uint256 liquidityTokens = contractBalance * tokensForLiquidity / totalTokensToSwap / 2;

        swapTokensForEth(contractBalance - liquidityTokens);

        uint256 ethBalance = address(this).balance;
        uint256 ethForLiquidity = ethBalance;

        uint256 ethForTreasury = ethBalance * tokensForTreasury / (totalTokensToSwap - (tokensForLiquidity/2));
        uint256 ethForRewards = ethBalance * tokensForRewards / (totalTokensToSwap - (tokensForLiquidity/2));

        ethForLiquidity -= ethForTreasury + ethForRewards;

        tokensForLiquidity = 0;
        tokensForTreasury = 0;
        tokensForRewards = 0;

        if(liquidityTokens > 0 && ethForLiquidity > 0){
            addLiquidity(liquidityTokens, ethForLiquidity);
        }

        (success,) = address(RewardsAddress).call{value: ethForRewards}("");

        (success,) = address(TreasuryAddress).call{value: address(this).balance}("");
    }

   

}

Settings
{
  "optimizer": {
    "enabled": false,
    "runs": 200
  },
  "outputSelection": {
    "*": {
      "*": [
        "evm.bytecode",
        "evm.deployedBytecode",
        "devdoc",
        "userdoc",
        "metadata",
        "abi"
      ]
    }
  }
}

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":"bool","name":"tradingActive","type":"bool"},{"indexed":false,"internalType":"uint256","name":"deadBlocks","type":"uint256"}],"name":"EnabledTrading","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"isExcluded","type":"bool"}],"name":"ExcludeFromFees","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"_address","type":"address"},{"indexed":false,"internalType":"bool","name":"excluded","type":"bool"}],"name":"MaxTransactionExclusion","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":[],"name":"RemovedLimits","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"pair","type":"address"},{"indexed":true,"internalType":"bool","name":"value","type":"bool"}],"name":"SetAutomatedMarketMakerPair","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"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"token","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"TransferForeignToken","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"UpdatedMaxWalletAmount","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"UpdatedMinBuyAmount","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newWallet","type":"address"}],"name":"UpdatedRewardsAddress","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newWallet","type":"address"}],"name":"UpdatedTreasuryAddress","type":"event"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_isExcludedMaxTransactionAmount","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"automatedMarketMakerPairs","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyLiquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyRewardsFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyTotalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyTreasuryFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"deadBlocks","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_deadBlocks","type":"uint256"}],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"updAds","type":"address"},{"internalType":"bool","name":"isEx","type":"bool"}],"name":"excludeFromMaxTransaction","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isSniper","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"limitsInEffect","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"addresses","type":"address[]"},{"internalType":"bool","name":"status","type":"bool"}],"name":"manage_Snipers","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"maxWalletAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"minBuyAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellLiquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellRewardsFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellTotalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellTreasuryFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"setAutomatedMarketMakerPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_RewardsAddress","type":"address"}],"name":"setRewardsAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_TreasuryAddress","type":"address"}],"name":"setTreasuryAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapTokensAtAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForLiquidity","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForRewards","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForTreasury","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingActive","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_token","type":"address"},{"internalType":"address","name":"_to","type":"address"}],"name":"transferForeignToken","outputs":[{"internalType":"bool","name":"_sent","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IDexRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_treasuryFee","type":"uint256"},{"internalType":"uint256","name":"_liquidityFee","type":"uint256"},{"internalType":"uint256","name":"_rewardsFee","type":"uint256"}],"name":"updateBuyFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updateMaxWalletAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updateMinBuyAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_treasuryFee","type":"uint256"},{"internalType":"uint256","name":"_liquidityFee","type":"uint256"},{"internalType":"uint256","name":"_rewardsFee","type":"uint256"}],"name":"updateSellFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"updateSwapTokensAtAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"withdrawStuckETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60c06040526002600c556001600d60006101000a81548160ff0219169083151502179055506000600d60016101000a81548160ff0219169083151502179055506000600d60026101000a81548160ff0219169083151502179055503480156200006757600080fd5b506040518060400160405280600a81526020017f5065616b792050657065000000000000000000000000000000000000000000008152506040518060400160405280600581526020017f5045414b590000000000000000000000000000000000000000000000000000008152508160039080519060200190620000ec92919062000bd9565b5080600490805190602001906200010592919062000bd9565b50505060006200011a6200061560201b60201c565b905080600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35060003390506000737a250d5630b4cf539739df2c5dacb4c659f2488d9050620001ea8160016200061d60201b60201c565b8073ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff16815250508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200026a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000290919062000cf3565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620002f8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200031e919062000cf3565b6040518363ffffffff1660e01b81526004016200033d92919062000d36565b6020604051808303816000875af11580156200035d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000383919062000cf3565b73ffffffffffffffffffffffffffffffffffffffff1660a08173ffffffffffffffffffffffffffffffffffffffff1681525050620003cb60a0516001620006b360201b60201c565b60006d14bdf13917d81c5ca958058400009050612710603282620003f0919062000d9c565b620003fc919062000e2c565b600681905550612710605a8262000414919062000d9c565b62000420919062000e2c565b600781905550620186a060328262000439919062000d9c565b62000445919062000e2c565b600981905550600a600f8190555060006010819055506000601181905550601154601054600f5462000478919062000e64565b62000484919062000e64565b600e81905550601e601381905550600a6014819055506000601581905550601554601454601354620004b7919062000e64565b620004c3919062000e64565b601281905550620004dc8360016200061d60201b60201c565b620004ef3060016200061d60201b60201c565b6200050461dead60016200061d60201b60201c565b73592a32b40cb23b69f24a3caa079f1f44eca09435600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073592a32b40cb23b69f24a3caa079f1f44eca09435600b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550620005c18360016200076660201b60201c565b620005d43060016200076660201b60201c565b620005e961dead60016200076660201b60201c565b620005fb8382620008b360201b60201c565b6200060c8362000a0460201b60201c565b50505062001148565b600033905090565b80601a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507f6b4f1be9103e6cbcd38ca4a922334f2c3109b260130a6676a987f94088fd67468282604051620006a792919062000ede565b60405180910390a15050565b80601b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506200071c82826200061d60201b60201c565b8015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b620007766200061560201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161462000808576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620007ff9062000f6c565b60405180910390fd5b80601960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df782604051620008a7919062000f8e565b60405180910390a25050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141562000926576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200091d9062000ffb565b60405180910390fd5b80600260008282546200093a919062000e64565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825462000991919062000e64565b925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051620009f891906200102e565b60405180910390a35050565b62000a146200061560201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161462000aa6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000a9d9062000f6c565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141562000b19576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000b1090620010c1565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b82805462000be79062001112565b90600052602060002090601f01602090048101928262000c0b576000855562000c57565b82601f1062000c2657805160ff191683800117855562000c57565b8280016001018555821562000c57579182015b8281111562000c5657825182559160200191906001019062000c39565b5b50905062000c66919062000c6a565b5090565b5b8082111562000c8557600081600090555060010162000c6b565b5090565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062000cbb8262000c8e565b9050919050565b62000ccd8162000cae565b811462000cd957600080fd5b50565b60008151905062000ced8162000cc2565b92915050565b60006020828403121562000d0c5762000d0b62000c89565b5b600062000d1c8482850162000cdc565b91505092915050565b62000d308162000cae565b82525050565b600060408201905062000d4d600083018562000d25565b62000d5c602083018462000d25565b9392505050565b6000819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600062000da98262000d63565b915062000db68362000d63565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161562000df25762000df162000d6d565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600062000e398262000d63565b915062000e468362000d63565b92508262000e595762000e5862000dfd565b5b828204905092915050565b600062000e718262000d63565b915062000e7e8362000d63565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111562000eb65762000eb562000d6d565b5b828201905092915050565b60008115159050919050565b62000ed88162000ec1565b82525050565b600060408201905062000ef5600083018562000d25565b62000f04602083018462000ecd565b9392505050565b600082825260208201905092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600062000f5460208362000f0b565b915062000f618262000f1c565b602082019050919050565b6000602082019050818103600083015262000f878162000f45565b9050919050565b600060208201905062000fa5600083018462000ecd565b92915050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b600062000fe3601f8362000f0b565b915062000ff08262000fab565b602082019050919050565b60006020820190508181036000830152620010168162000fd4565b9050919050565b620010288162000d63565b82525050565b60006020820190506200104560008301846200101d565b92915050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000620010a960268362000f0b565b9150620010b6826200104b565b604082019050919050565b60006020820190508181036000830152620010dc816200109a565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806200112b57607f821691505b60208210811415620011425762001141620010e3565b5b50919050565b60805160a0516158896200119f600039600081816110a7015281816116e70152611f89015260008181610d6301528181613dc001528181613ea101528181613ec801528181613f640152613f8b01526158896000f3fe6080604052600436106103035760003560e01c80638366e79a11610190578063c18bc195116100dc578063f11a24d311610095578063f5648a4f1161006f578063f5648a4f14610ba3578063f637434214610bba578063f66bf22914610be5578063fabb0b4f14610c105761030a565b8063f11a24d314610b24578063f2fde38b14610b4f578063f54afa7814610b785761030a565b8063c18bc19514610a14578063cc2ffe7c14610a3d578063d257b34f14610a68578063d85ba06314610a91578063dd62ed3e14610abc578063e2f4560514610af95761030a565b8063a9059cbb11610149578063bb8d513111610123578063bb8d51311461096c578063bbc0c74214610997578063c0246668146109c2578063c17b5b8c146109eb5761030a565b8063a9059cbb146108c7578063aa4bde2814610904578063b62496f51461092f5761030a565b80638366e79a146107a55780638906758d146107e25780638da5cb5b1461080b57806395d89b41146108365780639a7a23d614610861578063a457c2d71461088a5761030a565b80635c068a8c1161024f57806370a08231116102085780637571336a116101e25780637571336a146106ff57806377a3b609146107285780638095d5641461075357806382aa7c681461077c5761030a565b806370a0823114610694578063715018a6146106d1578063751039fc146106e85761030a565b80635c068a8c146105965780635d54c0af146105c15780636605bfda146105ea5780636a486a8e146106135780636b2fb1241461063e5780636ddd1713146106695761030a565b80631a8145bb116102bc578063313ce56711610296578063313ce567146104d8578063395093511461050357806349bd5a5e146105405780634a62bb651461056b5761030a565b80631a8145bb1461044757806323b872dd146104725780632f6c1070146104af5761030a565b806306fdde031461030f578063095ea7b31461033a5780630f3a325f1461037757806310d5de53146103b45780631694505e146103f157806318160ddd1461041c5761030a565b3661030a57005b600080fd5b34801561031b57600080fd5b50610324610c3b565b60405161033191906140d8565b60405180910390f35b34801561034657600080fd5b50610361600480360381019061035c9190614198565b610ccd565b60405161036e91906141f3565b60405180910390f35b34801561038357600080fd5b5061039e6004803603810190610399919061420e565b610ceb565b6040516103ab91906141f3565b60405180910390f35b3480156103c057600080fd5b506103db60048036038101906103d6919061420e565b610d41565b6040516103e891906141f3565b60405180910390f35b3480156103fd57600080fd5b50610406610d61565b604051610413919061429a565b60405180910390f35b34801561042857600080fd5b50610431610d85565b60405161043e91906142c4565b60405180910390f35b34801561045357600080fd5b5061045c610d8f565b60405161046991906142c4565b60405180910390f35b34801561047e57600080fd5b50610499600480360381019061049491906142df565b610d95565b6040516104a691906141f3565b60405180910390f35b3480156104bb57600080fd5b506104d660048036038101906104d19190614332565b610e8d565b005b3480156104e457600080fd5b506104ed610ff0565b6040516104fa919061437b565b60405180910390f35b34801561050f57600080fd5b5061052a60048036038101906105259190614198565b610ff9565b60405161053791906141f3565b60405180910390f35b34801561054c57600080fd5b506105556110a5565b60405161056291906143a5565b60405180910390f35b34801561057757600080fd5b506105806110c9565b60405161058d91906141f3565b60405180910390f35b3480156105a257600080fd5b506105ab6110dc565b6040516105b891906142c4565b60405180910390f35b3480156105cd57600080fd5b506105e860048036038101906105e39190614451565b6110e2565b005b3480156105f657600080fd5b50610611600480360381019061060c919061420e565b61121c565b005b34801561061f57600080fd5b506106286113aa565b60405161063591906142c4565b60405180910390f35b34801561064a57600080fd5b506106536113b0565b60405161066091906142c4565b60405180910390f35b34801561067557600080fd5b5061067e6113b6565b60405161068b91906141f3565b60405180910390f35b3480156106a057600080fd5b506106bb60048036038101906106b6919061420e565b6113c9565b6040516106c891906142c4565b60405180910390f35b3480156106dd57600080fd5b506106e6611411565b005b3480156106f457600080fd5b506106fd611569565b005b34801561070b57600080fd5b50610726600480360381019061072191906144b1565b611649565b005b34801561073457600080fd5b5061073d6117d0565b60405161074a91906142c4565b60405180910390f35b34801561075f57600080fd5b5061077a600480360381019061077591906144f1565b6117d6565b005b34801561078857600080fd5b506107a3600480360381019061079e9190614332565b6118f0565b005b3480156107b157600080fd5b506107cc60048036038101906107c79190614544565b611a5f565b6040516107d991906141f3565b60405180910390f35b3480156107ee57600080fd5b506108096004803603810190610804919061420e565b611ca6565b005b34801561081757600080fd5b50610820611e34565b60405161082d91906143a5565b60405180910390f35b34801561084257600080fd5b5061084b611e5e565b60405161085891906140d8565b60405180910390f35b34801561086d57600080fd5b50610888600480360381019061088391906144b1565b611ef0565b005b34801561089657600080fd5b506108b160048036038101906108ac9190614198565b612024565b6040516108be91906141f3565b60405180910390f35b3480156108d357600080fd5b506108ee60048036038101906108e99190614198565b61210f565b6040516108fb91906141f3565b60405180910390f35b34801561091057600080fd5b5061091961212d565b60405161092691906142c4565b60405180910390f35b34801561093b57600080fd5b506109566004803603810190610951919061420e565b612133565b60405161096391906141f3565b60405180910390f35b34801561097857600080fd5b50610981612153565b60405161098e91906142c4565b60405180910390f35b3480156109a357600080fd5b506109ac612159565b6040516109b991906141f3565b60405180910390f35b3480156109ce57600080fd5b506109e960048036038101906109e491906144b1565b61216c565b005b3480156109f757600080fd5b50610a126004803603810190610a0d91906144f1565b6122ac565b005b348015610a2057600080fd5b50610a3b6004803603810190610a369190614332565b6123c6565b005b348015610a4957600080fd5b50610a52612529565b604051610a5f91906142c4565b60405180910390f35b348015610a7457600080fd5b50610a8f6004803603810190610a8a9190614332565b61252f565b005b348015610a9d57600080fd5b50610aa66125d0565b604051610ab391906142c4565b60405180910390f35b348015610ac857600080fd5b50610ae36004803603810190610ade9190614544565b6125d6565b604051610af091906142c4565b60405180910390f35b348015610b0557600080fd5b50610b0e61265d565b604051610b1b91906142c4565b60405180910390f35b348015610b3057600080fd5b50610b39612663565b604051610b4691906142c4565b60405180910390f35b348015610b5b57600080fd5b50610b766004803603810190610b71919061420e565b612669565b005b348015610b8457600080fd5b50610b8d612830565b604051610b9a91906142c4565b60405180910390f35b348015610baf57600080fd5b50610bb8612836565b005b348015610bc657600080fd5b50610bcf61293e565b604051610bdc91906142c4565b60405180910390f35b348015610bf157600080fd5b50610bfa612944565b604051610c0791906142c4565b60405180910390f35b348015610c1c57600080fd5b50610c2561294a565b604051610c3291906142c4565b60405180910390f35b606060038054610c4a906145b3565b80601f0160208091040260200160405190810160405280929190818152602001828054610c76906145b3565b8015610cc35780601f10610c9857610100808354040283529160200191610cc3565b820191906000526020600020905b815481529060010190602001808311610ca657829003601f168201915b5050505050905090565b6000610ce1610cda612950565b8484612958565b6001905092915050565b6000601c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b601a6020528060005260406000206000915054906101000a900460ff1681565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000600254905090565b60175481565b6000610da2848484612b23565b6000600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610ded612950565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015610e6d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e6490614657565b60405180910390fd5b610e8185610e79612950565b858403612958565b60019150509392505050565b610e95612950565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f24576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f1b906146c3565b60405180910390fd5b670de0b6b3a76400006103e86001610f3a610d85565b610f449190614712565b610f4e919061479b565b610f58919061479b565b811015610f9a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f919061483e565b60405180910390fd5b670de0b6b3a764000081610fae9190614712565b6006819055507f4c2db041b93c918e0d61d1d05ce006df369fecb733ac0783a4301e1ef93ce18b600654604051610fe591906142c4565b60405180910390a150565b60006012905090565b600061109b611006612950565b848460016000611014612950565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611096919061485e565b612958565b6001905092915050565b7f000000000000000000000000000000000000000000000000000000000000000081565b600d60009054906101000a900460ff1681565b600f5481565b6110ea612950565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611179576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611170906146c3565b60405180910390fd5b60005b838390508110156112165781601c600086868581811061119f5761119e6148b4565b5b90506020020160208101906111b4919061420e565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508061120f906148e3565b905061117c565b50505050565b611224612950565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146112b3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112aa906146c3565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611323576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161131a9061499e565b60405180910390fd5b80600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff167f2e1e696cfb265fa16e1170d24ef04cb2262772bde00ecf34d80bae6722487b7f60405160405180910390a250565b60125481565b60135481565b600d60029054906101000a900460ff1681565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b611419612950565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146114a8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161149f906146c3565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b611571612950565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611600576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115f7906146c3565b60405180910390fd5b6000600d60006101000a81548160ff0219169083151502179055507fa4ffae85e880608d5d4365c2b682786545d136145537788e7e0940dff9f0b98c60405160405180910390a1565b611651612950565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146116e0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116d7906146c3565b60405180910390fd5b80611775577f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611774576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161176b90614a30565b60405180910390fd5b5b80601a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60115481565b6117de612950565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461186d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611864906146c3565b60405180910390fd5b82600f819055508160108190555080601181905550601154601054600f54611895919061485e565b61189f919061485e565b600e81905550600f600e5411156118eb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118e290614a9c565b60405180910390fd5b505050565b6118f8612950565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611987576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161197e906146c3565b60405180910390fd5b600d60019054906101000a900460ff16156119d7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119ce90614b08565b60405180910390fd5b6001600d60016101000a81548160ff0219169083151502179055506001600d60026101000a81548160ff02191690831515021790555080600c819055507fe185248899f361d51a48833938ab33493ebd7272d195abf7f51a833ea8138812600d60019054906101000a900460ff1682604051611a54929190614b28565b60405180910390a150565b6000611a69612950565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611af8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611aef906146c3565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611b68576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b5f90614b9d565b60405180910390fd5b60008373ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401611ba391906143a5565b602060405180830381865afa158015611bc0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611be49190614bd2565b90508373ffffffffffffffffffffffffffffffffffffffff1663a9059cbb84836040518363ffffffff1660e01b8152600401611c21929190614bff565b6020604051808303816000875af1158015611c40573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c649190614c3d565b91507fdeda980967fcead7b61e78ac46a4da14274af29e894d4d61e8b81ec38ab3e4388482604051611c97929190614bff565b60405180910390a15092915050565b611cae612950565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611d3d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d34906146c3565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611dad576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611da490614cdc565b60405180910390fd5b80600b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff167f647cd1cbe5341aa880069f5c966ac6cf0ed473b7c0bf494fb7fc7ca46dc4cc7860405160405180910390a250565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060048054611e6d906145b3565b80601f0160208091040260200160405190810160405280929190818152602001828054611e99906145b3565b8015611ee65780601f10611ebb57610100808354040283529160200191611ee6565b820191906000526020600020905b815481529060010190602001808311611ec957829003601f168201915b5050505050905090565b611ef8612950565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611f87576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f7e906146c3565b60405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612016576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161200d90614d6e565b60405180910390fd5b61202082826136da565b5050565b60008060016000612033612950565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050828110156120f0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120e790614e00565b60405180910390fd5b6121046120fb612950565b85858403612958565b600191505092915050565b600061212361211c612950565b8484612b23565b6001905092915050565b60075481565b601b6020528060005260406000206000915054906101000a900460ff1681565b60155481565b600d60019054906101000a900460ff1681565b612174612950565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612203576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121fa906146c3565b60405180910390fd5b80601960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7826040516122a091906141f3565b60405180910390a25050565b6122b4612950565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612343576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161233a906146c3565b60405180910390fd5b82601381905550816014819055508060158190555060155460145460135461236b919061485e565b612375919061485e565b601281905550601e60125411156123c1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123b890614e6c565b60405180910390fd5b505050565b6123ce612950565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461245d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612454906146c3565b60405180910390fd5b670de0b6b3a76400006103e86003612473610d85565b61247d9190614712565b612487919061479b565b612491919061479b565b8110156124d3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124ca90614efe565b60405180910390fd5b670de0b6b3a7640000816124e79190614712565b6007819055507fefc9add9a9b7382de284ef5ad69d8ea863e2680492b21a81948c2d5f04a442bc60075460405161251e91906142c4565b60405180910390a150565b60165481565b612537612950565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146125c6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125bd906146c3565b60405180910390fd5b8060098190555050565b600e5481565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60095481565b60105481565b612671612950565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612700576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126f7906146c3565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415612770576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161276790614f90565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60185481565b61283e612950565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146128cd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128c4906146c3565b60405180910390fd5b60003373ffffffffffffffffffffffffffffffffffffffff16476040516128f390614fe1565b60006040518083038185875af1925050503d8060008114612930576040519150601f19603f3d011682016040523d82523d6000602084013e612935565b606091505b50508091505050565b60145481565b60065481565b600c5481565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156129c8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129bf90615068565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612a38576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a2f906150fa565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051612b1691906142c4565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612b93576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b8a9061518c565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612c03576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612bfa9061521e565b60405180910390fd5b60008111612c46576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c3d9061528a565b60405180910390fd5b601c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615612cd3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612cca906152f6565b60405180910390fd5b601c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615612d60576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d57906152f6565b60405180910390fd5b600d60009054906101000a900460ff161561321c57612d7d611e34565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015612deb5750612dbb611e34565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612e245750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612e5e575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b1561321b57600d60019054906101000a900460ff16612fcd57601a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680612f185750601a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b612f57576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f4e90615362565b60405180910390fd5b612f5f611e34565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614612fcc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612fc3906153ce565b60405180910390fd5b5b601b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156130705750601a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15613117576006548110156130ba576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016130b190615460565b60405180910390fd5b6007546130c6836113c9565b826130d1919061485e565b1115613112576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613109906154cc565b60405180910390fd5b61321a565b601a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156131bb5750601a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15613219576007546131cc836113c9565b826131d7919061485e565b1115613218576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161320f906154cc565b60405180910390fd5b5b5b5b5b6000613227306113c9565b90506000600954821015905080801561324c5750600d60029054906101000a900460ff165b80156132655750600860009054906101000a900460ff16155b80156132bb5750601b60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156133115750601960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156133675750601960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156133ab576001600860006101000a81548160ff02191690831515021790555061338f613785565b6000600860006101000a81548160ff0219169083151502179055505b600060019050601960008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806134525750601960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561345c57600090505b60008082156136c557601b60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156134c057506000601254115b1561357f576064601254876134d59190614712565b6134df919061479b565b9150601254601454836134f29190614712565b6134fc919061479b565b6017600082825461350d919061485e565b92505081905550601254601354836135259190614712565b61352f919061479b565b60166000828254613540919061485e565b92505081905550601254601554836135589190614712565b613562919061479b565b60186000828254613573919061485e565b92505081905550613696565b601b60008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156135da57506000600e54115b15613695576064600e54876135ef9190614712565b6135f9919061479b565b9150600e546010548361360c9190614712565b613616919061479b565b60176000828254613627919061485e565b92505081905550600e54600f548361363f9190614712565b613649919061479b565b6016600082825461365a919061485e565b92505081905550600e54601154836136729190614712565b61367c919061479b565b6018600082825461368d919061485e565b925050819055505b5b60008211156136ab576136aa883084613a22565b5b80826136b7919061485e565b866136c291906154ec565b95505b6136d0888888613a22565b5050505050505050565b80601b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555061373b8282613c8d565b8015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b6000613790306113c9565b905060006018546016546017546137a7919061485e565b6137b1919061485e565b905060008214806137c25750600081145b156137ce575050613a20565b600a6009546137dd9190614712565b8211156137f657600a6009546137f39190614712565b91505b6000806002836017548661380a9190614712565b613814919061479b565b61381e919061479b565b9050613834818561382f91906154ec565b613d21565b600047905060008190506000600260175461384f919061479b565b8661385a91906154ec565b601654846138689190614712565b613872919061479b565b905060006002601754613885919061479b565b8761389091906154ec565b6018548561389e9190614712565b6138a8919061479b565b905080826138b6919061485e565b836138c191906154ec565b92506000601781905550600060168190555060006018819055506000851180156138eb5750600083115b156138fb576138fa8584613f5e565b5b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168160405161394190614fe1565b60006040518083038185875af1925050503d806000811461397e576040519150601f19603f3d011682016040523d82523d6000602084013e613983565b606091505b505080965050600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16476040516139cf90614fe1565b60006040518083038185875af1925050503d8060008114613a0c576040519150601f19603f3d011682016040523d82523d6000602084013e613a11565b606091505b50508096505050505050505050505b565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415613a92576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613a899061518c565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415613b02576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613af99061521e565b60405180910390fd5b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015613b88576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613b7f90615592565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254613c1b919061485e565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051613c7f91906142c4565b60405180910390a350505050565b80601a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507f6b4f1be9103e6cbcd38ca4a922334f2c3109b260130a6676a987f94088fd67468282604051613d159291906155b2565b60405180910390a15050565b6000600267ffffffffffffffff811115613d3e57613d3d6155db565b5b604051908082528060200260200182016040528015613d6c5781602001602082028036833780820191505090505b5090503081600081518110613d8457613d836148b4565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015613e29573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613e4d919061561f565b81600181518110613e6157613e606148b4565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050613ec6307f000000000000000000000000000000000000000000000000000000000000000084612958565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401613f28959493929190615745565b600060405180830381600087803b158015613f4257600080fd5b505af1158015613f56573d6000803e3d6000fd5b505050505050565b613f89307f000000000000000000000000000000000000000000000000000000000000000084612958565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663f305d719823085600080613fd3611e34565b426040518863ffffffff1660e01b8152600401613ff59695949392919061579f565b60606040518083038185885af1158015614013573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906140389190615800565b5050505050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561407957808201518184015260208101905061405e565b83811115614088576000848401525b50505050565b6000601f19601f8301169050919050565b60006140aa8261403f565b6140b4818561404a565b93506140c481856020860161405b565b6140cd8161408e565b840191505092915050565b600060208201905081810360008301526140f2818461409f565b905092915050565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061412f82614104565b9050919050565b61413f81614124565b811461414a57600080fd5b50565b60008135905061415c81614136565b92915050565b6000819050919050565b61417581614162565b811461418057600080fd5b50565b6000813590506141928161416c565b92915050565b600080604083850312156141af576141ae6140fa565b5b60006141bd8582860161414d565b92505060206141ce85828601614183565b9150509250929050565b60008115159050919050565b6141ed816141d8565b82525050565b600060208201905061420860008301846141e4565b92915050565b600060208284031215614224576142236140fa565b5b60006142328482850161414d565b91505092915050565b6000819050919050565b600061426061425b61425684614104565b61423b565b614104565b9050919050565b600061427282614245565b9050919050565b600061428482614267565b9050919050565b61429481614279565b82525050565b60006020820190506142af600083018461428b565b92915050565b6142be81614162565b82525050565b60006020820190506142d960008301846142b5565b92915050565b6000806000606084860312156142f8576142f76140fa565b5b60006143068682870161414d565b93505060206143178682870161414d565b925050604061432886828701614183565b9150509250925092565b600060208284031215614348576143476140fa565b5b600061435684828501614183565b91505092915050565b600060ff82169050919050565b6143758161435f565b82525050565b6000602082019050614390600083018461436c565b92915050565b61439f81614124565b82525050565b60006020820190506143ba6000830184614396565b92915050565b600080fd5b600080fd5b600080fd5b60008083601f8401126143e5576143e46143c0565b5b8235905067ffffffffffffffff811115614402576144016143c5565b5b60208301915083602082028301111561441e5761441d6143ca565b5b9250929050565b61442e816141d8565b811461443957600080fd5b50565b60008135905061444b81614425565b92915050565b60008060006040848603121561446a576144696140fa565b5b600084013567ffffffffffffffff811115614488576144876140ff565b5b614494868287016143cf565b935093505060206144a78682870161443c565b9150509250925092565b600080604083850312156144c8576144c76140fa565b5b60006144d68582860161414d565b92505060206144e78582860161443c565b9150509250929050565b60008060006060848603121561450a576145096140fa565b5b600061451886828701614183565b935050602061452986828701614183565b925050604061453a86828701614183565b9150509250925092565b6000806040838503121561455b5761455a6140fa565b5b60006145698582860161414d565b925050602061457a8582860161414d565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806145cb57607f821691505b602082108114156145df576145de614584565b5b50919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b600061464160288361404a565b915061464c826145e5565b604082019050919050565b6000602082019050818103600083015261467081614634565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006146ad60208361404a565b91506146b882614677565b602082019050919050565b600060208201905081810360008301526146dc816146a0565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061471d82614162565b915061472883614162565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615614761576147606146e3565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006147a682614162565b91506147b183614162565b9250826147c1576147c061476c565b5b828204905092915050565b7f43616e6e6f7420736574206d61782062757920616d6f756e74206c6f7765722060008201527f7468616e20302e31250000000000000000000000000000000000000000000000602082015250565b600061482860298361404a565b9150614833826147cc565b604082019050919050565b600060208201905081810360008301526148578161481b565b9050919050565b600061486982614162565b915061487483614162565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156148a9576148a86146e3565b5b828201905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60006148ee82614162565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415614921576149206146e3565b5b600182019050919050565b7f5f54726561737572794164647265737320616464726573732063616e6e6f742060008201527f6265203000000000000000000000000000000000000000000000000000000000602082015250565b600061498860248361404a565b91506149938261492c565b604082019050919050565b600060208201905081810360008301526149b78161497b565b9050919050565b7f43616e6e6f742072656d6f766520756e697377617020706169722066726f6d2060008201527f6d61782074786e00000000000000000000000000000000000000000000000000602082015250565b6000614a1a60278361404a565b9150614a25826149be565b604082019050919050565b60006020820190508181036000830152614a4981614a0d565b9050919050565b7f4d757374206b656570206665657320617420313525206f72206c657373000000600082015250565b6000614a86601d8361404a565b9150614a9182614a50565b602082019050919050565b60006020820190508181036000830152614ab581614a79565b9050919050565b7f43616e6e6f7420726520656e61626c652074726164696e670000000000000000600082015250565b6000614af260188361404a565b9150614afd82614abc565b602082019050919050565b60006020820190508181036000830152614b2181614ae5565b9050919050565b6000604082019050614b3d60008301856141e4565b614b4a60208301846142b5565b9392505050565b7f5f746f6b656e20616464726573732063616e6e6f742062652030000000000000600082015250565b6000614b87601a8361404a565b9150614b9282614b51565b602082019050919050565b60006020820190508181036000830152614bb681614b7a565b9050919050565b600081519050614bcc8161416c565b92915050565b600060208284031215614be857614be76140fa565b5b6000614bf684828501614bbd565b91505092915050565b6000604082019050614c146000830185614396565b614c2160208301846142b5565b9392505050565b600081519050614c3781614425565b92915050565b600060208284031215614c5357614c526140fa565b5b6000614c6184828501614c28565b91505092915050565b7f5f526577617264734164647265737320616464726573732063616e6e6f74206260008201527f6520300000000000000000000000000000000000000000000000000000000000602082015250565b6000614cc660238361404a565b9150614cd182614c6a565b604082019050919050565b60006020820190508181036000830152614cf581614cb9565b9050919050565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060008201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000602082015250565b6000614d5860398361404a565b9150614d6382614cfc565b604082019050919050565b60006020820190508181036000830152614d8781614d4b565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b6000614dea60258361404a565b9150614df582614d8e565b604082019050919050565b60006020820190508181036000830152614e1981614ddd565b9050919050565b7f4d757374206b656570206665657320617420333025206f72206c657373000000600082015250565b6000614e56601d8361404a565b9150614e6182614e20565b602082019050919050565b60006020820190508181036000830152614e8581614e49565b9050919050565b7f43616e6e6f7420736574206d61782077616c6c657420616d6f756e74206c6f7760008201527f6572207468616e20302e33250000000000000000000000000000000000000000602082015250565b6000614ee8602c8361404a565b9150614ef382614e8c565b604082019050919050565b60006020820190508181036000830152614f1781614edb565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000614f7a60268361404a565b9150614f8582614f1e565b604082019050919050565b60006020820190508181036000830152614fa981614f6d565b9050919050565b600081905092915050565b50565b6000614fcb600083614fb0565b9150614fd682614fbb565b600082019050919050565b6000614fec82614fbe565b9150819050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b600061505260248361404a565b915061505d82614ff6565b604082019050919050565b6000602082019050818103600083015261508181615045565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b60006150e460228361404a565b91506150ef82615088565b604082019050919050565b60006020820190508181036000830152615113816150d7565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b600061517660258361404a565b91506151818261511a565b604082019050919050565b600060208201905081810360008301526151a581615169565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b600061520860238361404a565b9150615213826151ac565b604082019050919050565b60006020820190508181036000830152615237816151fb565b9050919050565b7f616d6f756e74206d7573742062652067726561746572207468616e2030000000600082015250565b6000615274601d8361404a565b915061527f8261523e565b602082019050919050565b600060208201905081810360008301526152a381615267565b9050919050565b7f596f7520617265206120736e697065722c20676574206c696665210000000000600082015250565b60006152e0601b8361404a565b91506152eb826152aa565b602082019050919050565b6000602082019050818103600083015261530f816152d3565b9050919050565b7f54726164696e67206973206e6f74206163746976652e00000000000000000000600082015250565b600061534c60168361404a565b915061535782615316565b602082019050919050565b6000602082019050818103600083015261537b8161533f565b9050919050565b7f54726164696e6720697320656e61626c65640000000000000000000000000000600082015250565b60006153b860128361404a565b91506153c382615382565b602082019050919050565b600060208201905081810360008301526153e7816153ab565b9050919050565b7f427579207472616e7366657220616d6f756e7420646f65736e7420657863656560008201527f6420746865206d696e206275792e000000000000000000000000000000000000602082015250565b600061544a602e8361404a565b9150615455826153ee565b604082019050919050565b600060208201905081810360008301526154798161543d565b9050919050565b7f43616e6e6f7420457863656564206d61782077616c6c65740000000000000000600082015250565b60006154b660188361404a565b91506154c182615480565b602082019050919050565b600060208201905081810360008301526154e5816154a9565b9050919050565b60006154f782614162565b915061550283614162565b925082821015615515576155146146e3565b5b828203905092915050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b600061557c60268361404a565b915061558782615520565b604082019050919050565b600060208201905081810360008301526155ab8161556f565b9050919050565b60006040820190506155c76000830185614396565b6155d460208301846141e4565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60008151905061561981614136565b92915050565b600060208284031215615635576156346140fa565b5b60006156438482850161560a565b91505092915050565b6000819050919050565b600061567161566c6156678461564c565b61423b565b614162565b9050919050565b61568181615656565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6156bc81614124565b82525050565b60006156ce83836156b3565b60208301905092915050565b6000602082019050919050565b60006156f282615687565b6156fc8185615692565b9350615707836156a3565b8060005b8381101561573857815161571f88826156c2565b975061572a836156da565b92505060018101905061570b565b5085935050505092915050565b600060a08201905061575a60008301886142b5565b6157676020830187615678565b818103604083015261577981866156e7565b90506157886060830185614396565b61579560808301846142b5565b9695505050505050565b600060c0820190506157b46000830189614396565b6157c160208301886142b5565b6157ce6040830187615678565b6157db6060830186615678565b6157e86080830185614396565b6157f560a08301846142b5565b979650505050505050565b600080600060608486031215615819576158186140fa565b5b600061582786828701614bbd565b935050602061583886828701614bbd565b925050604061584986828701614bbd565b915050925092509256fea2646970667358221220e12341f206264c63055cbb5355bec30bfe457e6ca85ee5c36f11de333bac9c6864736f6c634300080c0033

Deployed Bytecode

0x6080604052600436106103035760003560e01c80638366e79a11610190578063c18bc195116100dc578063f11a24d311610095578063f5648a4f1161006f578063f5648a4f14610ba3578063f637434214610bba578063f66bf22914610be5578063fabb0b4f14610c105761030a565b8063f11a24d314610b24578063f2fde38b14610b4f578063f54afa7814610b785761030a565b8063c18bc19514610a14578063cc2ffe7c14610a3d578063d257b34f14610a68578063d85ba06314610a91578063dd62ed3e14610abc578063e2f4560514610af95761030a565b8063a9059cbb11610149578063bb8d513111610123578063bb8d51311461096c578063bbc0c74214610997578063c0246668146109c2578063c17b5b8c146109eb5761030a565b8063a9059cbb146108c7578063aa4bde2814610904578063b62496f51461092f5761030a565b80638366e79a146107a55780638906758d146107e25780638da5cb5b1461080b57806395d89b41146108365780639a7a23d614610861578063a457c2d71461088a5761030a565b80635c068a8c1161024f57806370a08231116102085780637571336a116101e25780637571336a146106ff57806377a3b609146107285780638095d5641461075357806382aa7c681461077c5761030a565b806370a0823114610694578063715018a6146106d1578063751039fc146106e85761030a565b80635c068a8c146105965780635d54c0af146105c15780636605bfda146105ea5780636a486a8e146106135780636b2fb1241461063e5780636ddd1713146106695761030a565b80631a8145bb116102bc578063313ce56711610296578063313ce567146104d8578063395093511461050357806349bd5a5e146105405780634a62bb651461056b5761030a565b80631a8145bb1461044757806323b872dd146104725780632f6c1070146104af5761030a565b806306fdde031461030f578063095ea7b31461033a5780630f3a325f1461037757806310d5de53146103b45780631694505e146103f157806318160ddd1461041c5761030a565b3661030a57005b600080fd5b34801561031b57600080fd5b50610324610c3b565b60405161033191906140d8565b60405180910390f35b34801561034657600080fd5b50610361600480360381019061035c9190614198565b610ccd565b60405161036e91906141f3565b60405180910390f35b34801561038357600080fd5b5061039e6004803603810190610399919061420e565b610ceb565b6040516103ab91906141f3565b60405180910390f35b3480156103c057600080fd5b506103db60048036038101906103d6919061420e565b610d41565b6040516103e891906141f3565b60405180910390f35b3480156103fd57600080fd5b50610406610d61565b604051610413919061429a565b60405180910390f35b34801561042857600080fd5b50610431610d85565b60405161043e91906142c4565b60405180910390f35b34801561045357600080fd5b5061045c610d8f565b60405161046991906142c4565b60405180910390f35b34801561047e57600080fd5b50610499600480360381019061049491906142df565b610d95565b6040516104a691906141f3565b60405180910390f35b3480156104bb57600080fd5b506104d660048036038101906104d19190614332565b610e8d565b005b3480156104e457600080fd5b506104ed610ff0565b6040516104fa919061437b565b60405180910390f35b34801561050f57600080fd5b5061052a60048036038101906105259190614198565b610ff9565b60405161053791906141f3565b60405180910390f35b34801561054c57600080fd5b506105556110a5565b60405161056291906143a5565b60405180910390f35b34801561057757600080fd5b506105806110c9565b60405161058d91906141f3565b60405180910390f35b3480156105a257600080fd5b506105ab6110dc565b6040516105b891906142c4565b60405180910390f35b3480156105cd57600080fd5b506105e860048036038101906105e39190614451565b6110e2565b005b3480156105f657600080fd5b50610611600480360381019061060c919061420e565b61121c565b005b34801561061f57600080fd5b506106286113aa565b60405161063591906142c4565b60405180910390f35b34801561064a57600080fd5b506106536113b0565b60405161066091906142c4565b60405180910390f35b34801561067557600080fd5b5061067e6113b6565b60405161068b91906141f3565b60405180910390f35b3480156106a057600080fd5b506106bb60048036038101906106b6919061420e565b6113c9565b6040516106c891906142c4565b60405180910390f35b3480156106dd57600080fd5b506106e6611411565b005b3480156106f457600080fd5b506106fd611569565b005b34801561070b57600080fd5b50610726600480360381019061072191906144b1565b611649565b005b34801561073457600080fd5b5061073d6117d0565b60405161074a91906142c4565b60405180910390f35b34801561075f57600080fd5b5061077a600480360381019061077591906144f1565b6117d6565b005b34801561078857600080fd5b506107a3600480360381019061079e9190614332565b6118f0565b005b3480156107b157600080fd5b506107cc60048036038101906107c79190614544565b611a5f565b6040516107d991906141f3565b60405180910390f35b3480156107ee57600080fd5b506108096004803603810190610804919061420e565b611ca6565b005b34801561081757600080fd5b50610820611e34565b60405161082d91906143a5565b60405180910390f35b34801561084257600080fd5b5061084b611e5e565b60405161085891906140d8565b60405180910390f35b34801561086d57600080fd5b50610888600480360381019061088391906144b1565b611ef0565b005b34801561089657600080fd5b506108b160048036038101906108ac9190614198565b612024565b6040516108be91906141f3565b60405180910390f35b3480156108d357600080fd5b506108ee60048036038101906108e99190614198565b61210f565b6040516108fb91906141f3565b60405180910390f35b34801561091057600080fd5b5061091961212d565b60405161092691906142c4565b60405180910390f35b34801561093b57600080fd5b506109566004803603810190610951919061420e565b612133565b60405161096391906141f3565b60405180910390f35b34801561097857600080fd5b50610981612153565b60405161098e91906142c4565b60405180910390f35b3480156109a357600080fd5b506109ac612159565b6040516109b991906141f3565b60405180910390f35b3480156109ce57600080fd5b506109e960048036038101906109e491906144b1565b61216c565b005b3480156109f757600080fd5b50610a126004803603810190610a0d91906144f1565b6122ac565b005b348015610a2057600080fd5b50610a3b6004803603810190610a369190614332565b6123c6565b005b348015610a4957600080fd5b50610a52612529565b604051610a5f91906142c4565b60405180910390f35b348015610a7457600080fd5b50610a8f6004803603810190610a8a9190614332565b61252f565b005b348015610a9d57600080fd5b50610aa66125d0565b604051610ab391906142c4565b60405180910390f35b348015610ac857600080fd5b50610ae36004803603810190610ade9190614544565b6125d6565b604051610af091906142c4565b60405180910390f35b348015610b0557600080fd5b50610b0e61265d565b604051610b1b91906142c4565b60405180910390f35b348015610b3057600080fd5b50610b39612663565b604051610b4691906142c4565b60405180910390f35b348015610b5b57600080fd5b50610b766004803603810190610b71919061420e565b612669565b005b348015610b8457600080fd5b50610b8d612830565b604051610b9a91906142c4565b60405180910390f35b348015610baf57600080fd5b50610bb8612836565b005b348015610bc657600080fd5b50610bcf61293e565b604051610bdc91906142c4565b60405180910390f35b348015610bf157600080fd5b50610bfa612944565b604051610c0791906142c4565b60405180910390f35b348015610c1c57600080fd5b50610c2561294a565b604051610c3291906142c4565b60405180910390f35b606060038054610c4a906145b3565b80601f0160208091040260200160405190810160405280929190818152602001828054610c76906145b3565b8015610cc35780601f10610c9857610100808354040283529160200191610cc3565b820191906000526020600020905b815481529060010190602001808311610ca657829003601f168201915b5050505050905090565b6000610ce1610cda612950565b8484612958565b6001905092915050565b6000601c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b601a6020528060005260406000206000915054906101000a900460ff1681565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81565b6000600254905090565b60175481565b6000610da2848484612b23565b6000600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610ded612950565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015610e6d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e6490614657565b60405180910390fd5b610e8185610e79612950565b858403612958565b60019150509392505050565b610e95612950565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f24576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f1b906146c3565b60405180910390fd5b670de0b6b3a76400006103e86001610f3a610d85565b610f449190614712565b610f4e919061479b565b610f58919061479b565b811015610f9a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f919061483e565b60405180910390fd5b670de0b6b3a764000081610fae9190614712565b6006819055507f4c2db041b93c918e0d61d1d05ce006df369fecb733ac0783a4301e1ef93ce18b600654604051610fe591906142c4565b60405180910390a150565b60006012905090565b600061109b611006612950565b848460016000611014612950565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611096919061485e565b612958565b6001905092915050565b7f000000000000000000000000847cc600e5b274e88211cdc36885b0571068b8dd81565b600d60009054906101000a900460ff1681565b600f5481565b6110ea612950565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611179576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611170906146c3565b60405180910390fd5b60005b838390508110156112165781601c600086868581811061119f5761119e6148b4565b5b90506020020160208101906111b4919061420e565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508061120f906148e3565b905061117c565b50505050565b611224612950565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146112b3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112aa906146c3565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611323576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161131a9061499e565b60405180910390fd5b80600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff167f2e1e696cfb265fa16e1170d24ef04cb2262772bde00ecf34d80bae6722487b7f60405160405180910390a250565b60125481565b60135481565b600d60029054906101000a900460ff1681565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b611419612950565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146114a8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161149f906146c3565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b611571612950565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611600576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115f7906146c3565b60405180910390fd5b6000600d60006101000a81548160ff0219169083151502179055507fa4ffae85e880608d5d4365c2b682786545d136145537788e7e0940dff9f0b98c60405160405180910390a1565b611651612950565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146116e0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116d7906146c3565b60405180910390fd5b80611775577f000000000000000000000000847cc600e5b274e88211cdc36885b0571068b8dd73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611774576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161176b90614a30565b60405180910390fd5b5b80601a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60115481565b6117de612950565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461186d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611864906146c3565b60405180910390fd5b82600f819055508160108190555080601181905550601154601054600f54611895919061485e565b61189f919061485e565b600e81905550600f600e5411156118eb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118e290614a9c565b60405180910390fd5b505050565b6118f8612950565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611987576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161197e906146c3565b60405180910390fd5b600d60019054906101000a900460ff16156119d7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119ce90614b08565b60405180910390fd5b6001600d60016101000a81548160ff0219169083151502179055506001600d60026101000a81548160ff02191690831515021790555080600c819055507fe185248899f361d51a48833938ab33493ebd7272d195abf7f51a833ea8138812600d60019054906101000a900460ff1682604051611a54929190614b28565b60405180910390a150565b6000611a69612950565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611af8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611aef906146c3565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611b68576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b5f90614b9d565b60405180910390fd5b60008373ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401611ba391906143a5565b602060405180830381865afa158015611bc0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611be49190614bd2565b90508373ffffffffffffffffffffffffffffffffffffffff1663a9059cbb84836040518363ffffffff1660e01b8152600401611c21929190614bff565b6020604051808303816000875af1158015611c40573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c649190614c3d565b91507fdeda980967fcead7b61e78ac46a4da14274af29e894d4d61e8b81ec38ab3e4388482604051611c97929190614bff565b60405180910390a15092915050565b611cae612950565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611d3d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d34906146c3565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611dad576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611da490614cdc565b60405180910390fd5b80600b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff167f647cd1cbe5341aa880069f5c966ac6cf0ed473b7c0bf494fb7fc7ca46dc4cc7860405160405180910390a250565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060048054611e6d906145b3565b80601f0160208091040260200160405190810160405280929190818152602001828054611e99906145b3565b8015611ee65780601f10611ebb57610100808354040283529160200191611ee6565b820191906000526020600020905b815481529060010190602001808311611ec957829003601f168201915b5050505050905090565b611ef8612950565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611f87576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f7e906146c3565b60405180910390fd5b7f000000000000000000000000847cc600e5b274e88211cdc36885b0571068b8dd73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612016576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161200d90614d6e565b60405180910390fd5b61202082826136da565b5050565b60008060016000612033612950565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050828110156120f0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120e790614e00565b60405180910390fd5b6121046120fb612950565b85858403612958565b600191505092915050565b600061212361211c612950565b8484612b23565b6001905092915050565b60075481565b601b6020528060005260406000206000915054906101000a900460ff1681565b60155481565b600d60019054906101000a900460ff1681565b612174612950565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612203576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121fa906146c3565b60405180910390fd5b80601960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7826040516122a091906141f3565b60405180910390a25050565b6122b4612950565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612343576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161233a906146c3565b60405180910390fd5b82601381905550816014819055508060158190555060155460145460135461236b919061485e565b612375919061485e565b601281905550601e60125411156123c1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123b890614e6c565b60405180910390fd5b505050565b6123ce612950565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461245d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612454906146c3565b60405180910390fd5b670de0b6b3a76400006103e86003612473610d85565b61247d9190614712565b612487919061479b565b612491919061479b565b8110156124d3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124ca90614efe565b60405180910390fd5b670de0b6b3a7640000816124e79190614712565b6007819055507fefc9add9a9b7382de284ef5ad69d8ea863e2680492b21a81948c2d5f04a442bc60075460405161251e91906142c4565b60405180910390a150565b60165481565b612537612950565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146125c6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125bd906146c3565b60405180910390fd5b8060098190555050565b600e5481565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60095481565b60105481565b612671612950565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612700576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126f7906146c3565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415612770576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161276790614f90565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60185481565b61283e612950565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146128cd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128c4906146c3565b60405180910390fd5b60003373ffffffffffffffffffffffffffffffffffffffff16476040516128f390614fe1565b60006040518083038185875af1925050503d8060008114612930576040519150601f19603f3d011682016040523d82523d6000602084013e612935565b606091505b50508091505050565b60145481565b60065481565b600c5481565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156129c8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129bf90615068565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612a38576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a2f906150fa565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051612b1691906142c4565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612b93576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b8a9061518c565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612c03576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612bfa9061521e565b60405180910390fd5b60008111612c46576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c3d9061528a565b60405180910390fd5b601c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615612cd3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612cca906152f6565b60405180910390fd5b601c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615612d60576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d57906152f6565b60405180910390fd5b600d60009054906101000a900460ff161561321c57612d7d611e34565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015612deb5750612dbb611e34565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612e245750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612e5e575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b1561321b57600d60019054906101000a900460ff16612fcd57601a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680612f185750601a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b612f57576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f4e90615362565b60405180910390fd5b612f5f611e34565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614612fcc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612fc3906153ce565b60405180910390fd5b5b601b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156130705750601a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15613117576006548110156130ba576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016130b190615460565b60405180910390fd5b6007546130c6836113c9565b826130d1919061485e565b1115613112576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613109906154cc565b60405180910390fd5b61321a565b601a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156131bb5750601a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15613219576007546131cc836113c9565b826131d7919061485e565b1115613218576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161320f906154cc565b60405180910390fd5b5b5b5b5b6000613227306113c9565b90506000600954821015905080801561324c5750600d60029054906101000a900460ff165b80156132655750600860009054906101000a900460ff16155b80156132bb5750601b60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156133115750601960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156133675750601960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156133ab576001600860006101000a81548160ff02191690831515021790555061338f613785565b6000600860006101000a81548160ff0219169083151502179055505b600060019050601960008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806134525750601960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561345c57600090505b60008082156136c557601b60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156134c057506000601254115b1561357f576064601254876134d59190614712565b6134df919061479b565b9150601254601454836134f29190614712565b6134fc919061479b565b6017600082825461350d919061485e565b92505081905550601254601354836135259190614712565b61352f919061479b565b60166000828254613540919061485e565b92505081905550601254601554836135589190614712565b613562919061479b565b60186000828254613573919061485e565b92505081905550613696565b601b60008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156135da57506000600e54115b15613695576064600e54876135ef9190614712565b6135f9919061479b565b9150600e546010548361360c9190614712565b613616919061479b565b60176000828254613627919061485e565b92505081905550600e54600f548361363f9190614712565b613649919061479b565b6016600082825461365a919061485e565b92505081905550600e54601154836136729190614712565b61367c919061479b565b6018600082825461368d919061485e565b925050819055505b5b60008211156136ab576136aa883084613a22565b5b80826136b7919061485e565b866136c291906154ec565b95505b6136d0888888613a22565b5050505050505050565b80601b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555061373b8282613c8d565b8015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b6000613790306113c9565b905060006018546016546017546137a7919061485e565b6137b1919061485e565b905060008214806137c25750600081145b156137ce575050613a20565b600a6009546137dd9190614712565b8211156137f657600a6009546137f39190614712565b91505b6000806002836017548661380a9190614712565b613814919061479b565b61381e919061479b565b9050613834818561382f91906154ec565b613d21565b600047905060008190506000600260175461384f919061479b565b8661385a91906154ec565b601654846138689190614712565b613872919061479b565b905060006002601754613885919061479b565b8761389091906154ec565b6018548561389e9190614712565b6138a8919061479b565b905080826138b6919061485e565b836138c191906154ec565b92506000601781905550600060168190555060006018819055506000851180156138eb5750600083115b156138fb576138fa8584613f5e565b5b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168160405161394190614fe1565b60006040518083038185875af1925050503d806000811461397e576040519150601f19603f3d011682016040523d82523d6000602084013e613983565b606091505b505080965050600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16476040516139cf90614fe1565b60006040518083038185875af1925050503d8060008114613a0c576040519150601f19603f3d011682016040523d82523d6000602084013e613a11565b606091505b50508096505050505050505050505b565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415613a92576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613a899061518c565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415613b02576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613af99061521e565b60405180910390fd5b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015613b88576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613b7f90615592565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254613c1b919061485e565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051613c7f91906142c4565b60405180910390a350505050565b80601a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507f6b4f1be9103e6cbcd38ca4a922334f2c3109b260130a6676a987f94088fd67468282604051613d159291906155b2565b60405180910390a15050565b6000600267ffffffffffffffff811115613d3e57613d3d6155db565b5b604051908082528060200260200182016040528015613d6c5781602001602082028036833780820191505090505b5090503081600081518110613d8457613d836148b4565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015613e29573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613e4d919061561f565b81600181518110613e6157613e606148b4565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050613ec6307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d84612958565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401613f28959493929190615745565b600060405180830381600087803b158015613f4257600080fd5b505af1158015613f56573d6000803e3d6000fd5b505050505050565b613f89307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d84612958565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663f305d719823085600080613fd3611e34565b426040518863ffffffff1660e01b8152600401613ff59695949392919061579f565b60606040518083038185885af1158015614013573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906140389190615800565b5050505050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561407957808201518184015260208101905061405e565b83811115614088576000848401525b50505050565b6000601f19601f8301169050919050565b60006140aa8261403f565b6140b4818561404a565b93506140c481856020860161405b565b6140cd8161408e565b840191505092915050565b600060208201905081810360008301526140f2818461409f565b905092915050565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061412f82614104565b9050919050565b61413f81614124565b811461414a57600080fd5b50565b60008135905061415c81614136565b92915050565b6000819050919050565b61417581614162565b811461418057600080fd5b50565b6000813590506141928161416c565b92915050565b600080604083850312156141af576141ae6140fa565b5b60006141bd8582860161414d565b92505060206141ce85828601614183565b9150509250929050565b60008115159050919050565b6141ed816141d8565b82525050565b600060208201905061420860008301846141e4565b92915050565b600060208284031215614224576142236140fa565b5b60006142328482850161414d565b91505092915050565b6000819050919050565b600061426061425b61425684614104565b61423b565b614104565b9050919050565b600061427282614245565b9050919050565b600061428482614267565b9050919050565b61429481614279565b82525050565b60006020820190506142af600083018461428b565b92915050565b6142be81614162565b82525050565b60006020820190506142d960008301846142b5565b92915050565b6000806000606084860312156142f8576142f76140fa565b5b60006143068682870161414d565b93505060206143178682870161414d565b925050604061432886828701614183565b9150509250925092565b600060208284031215614348576143476140fa565b5b600061435684828501614183565b91505092915050565b600060ff82169050919050565b6143758161435f565b82525050565b6000602082019050614390600083018461436c565b92915050565b61439f81614124565b82525050565b60006020820190506143ba6000830184614396565b92915050565b600080fd5b600080fd5b600080fd5b60008083601f8401126143e5576143e46143c0565b5b8235905067ffffffffffffffff811115614402576144016143c5565b5b60208301915083602082028301111561441e5761441d6143ca565b5b9250929050565b61442e816141d8565b811461443957600080fd5b50565b60008135905061444b81614425565b92915050565b60008060006040848603121561446a576144696140fa565b5b600084013567ffffffffffffffff811115614488576144876140ff565b5b614494868287016143cf565b935093505060206144a78682870161443c565b9150509250925092565b600080604083850312156144c8576144c76140fa565b5b60006144d68582860161414d565b92505060206144e78582860161443c565b9150509250929050565b60008060006060848603121561450a576145096140fa565b5b600061451886828701614183565b935050602061452986828701614183565b925050604061453a86828701614183565b9150509250925092565b6000806040838503121561455b5761455a6140fa565b5b60006145698582860161414d565b925050602061457a8582860161414d565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806145cb57607f821691505b602082108114156145df576145de614584565b5b50919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b600061464160288361404a565b915061464c826145e5565b604082019050919050565b6000602082019050818103600083015261467081614634565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006146ad60208361404a565b91506146b882614677565b602082019050919050565b600060208201905081810360008301526146dc816146a0565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061471d82614162565b915061472883614162565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615614761576147606146e3565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006147a682614162565b91506147b183614162565b9250826147c1576147c061476c565b5b828204905092915050565b7f43616e6e6f7420736574206d61782062757920616d6f756e74206c6f7765722060008201527f7468616e20302e31250000000000000000000000000000000000000000000000602082015250565b600061482860298361404a565b9150614833826147cc565b604082019050919050565b600060208201905081810360008301526148578161481b565b9050919050565b600061486982614162565b915061487483614162565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156148a9576148a86146e3565b5b828201905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60006148ee82614162565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415614921576149206146e3565b5b600182019050919050565b7f5f54726561737572794164647265737320616464726573732063616e6e6f742060008201527f6265203000000000000000000000000000000000000000000000000000000000602082015250565b600061498860248361404a565b91506149938261492c565b604082019050919050565b600060208201905081810360008301526149b78161497b565b9050919050565b7f43616e6e6f742072656d6f766520756e697377617020706169722066726f6d2060008201527f6d61782074786e00000000000000000000000000000000000000000000000000602082015250565b6000614a1a60278361404a565b9150614a25826149be565b604082019050919050565b60006020820190508181036000830152614a4981614a0d565b9050919050565b7f4d757374206b656570206665657320617420313525206f72206c657373000000600082015250565b6000614a86601d8361404a565b9150614a9182614a50565b602082019050919050565b60006020820190508181036000830152614ab581614a79565b9050919050565b7f43616e6e6f7420726520656e61626c652074726164696e670000000000000000600082015250565b6000614af260188361404a565b9150614afd82614abc565b602082019050919050565b60006020820190508181036000830152614b2181614ae5565b9050919050565b6000604082019050614b3d60008301856141e4565b614b4a60208301846142b5565b9392505050565b7f5f746f6b656e20616464726573732063616e6e6f742062652030000000000000600082015250565b6000614b87601a8361404a565b9150614b9282614b51565b602082019050919050565b60006020820190508181036000830152614bb681614b7a565b9050919050565b600081519050614bcc8161416c565b92915050565b600060208284031215614be857614be76140fa565b5b6000614bf684828501614bbd565b91505092915050565b6000604082019050614c146000830185614396565b614c2160208301846142b5565b9392505050565b600081519050614c3781614425565b92915050565b600060208284031215614c5357614c526140fa565b5b6000614c6184828501614c28565b91505092915050565b7f5f526577617264734164647265737320616464726573732063616e6e6f74206260008201527f6520300000000000000000000000000000000000000000000000000000000000602082015250565b6000614cc660238361404a565b9150614cd182614c6a565b604082019050919050565b60006020820190508181036000830152614cf581614cb9565b9050919050565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060008201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000602082015250565b6000614d5860398361404a565b9150614d6382614cfc565b604082019050919050565b60006020820190508181036000830152614d8781614d4b565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b6000614dea60258361404a565b9150614df582614d8e565b604082019050919050565b60006020820190508181036000830152614e1981614ddd565b9050919050565b7f4d757374206b656570206665657320617420333025206f72206c657373000000600082015250565b6000614e56601d8361404a565b9150614e6182614e20565b602082019050919050565b60006020820190508181036000830152614e8581614e49565b9050919050565b7f43616e6e6f7420736574206d61782077616c6c657420616d6f756e74206c6f7760008201527f6572207468616e20302e33250000000000000000000000000000000000000000602082015250565b6000614ee8602c8361404a565b9150614ef382614e8c565b604082019050919050565b60006020820190508181036000830152614f1781614edb565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000614f7a60268361404a565b9150614f8582614f1e565b604082019050919050565b60006020820190508181036000830152614fa981614f6d565b9050919050565b600081905092915050565b50565b6000614fcb600083614fb0565b9150614fd682614fbb565b600082019050919050565b6000614fec82614fbe565b9150819050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b600061505260248361404a565b915061505d82614ff6565b604082019050919050565b6000602082019050818103600083015261508181615045565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b60006150e460228361404a565b91506150ef82615088565b604082019050919050565b60006020820190508181036000830152615113816150d7565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b600061517660258361404a565b91506151818261511a565b604082019050919050565b600060208201905081810360008301526151a581615169565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b600061520860238361404a565b9150615213826151ac565b604082019050919050565b60006020820190508181036000830152615237816151fb565b9050919050565b7f616d6f756e74206d7573742062652067726561746572207468616e2030000000600082015250565b6000615274601d8361404a565b915061527f8261523e565b602082019050919050565b600060208201905081810360008301526152a381615267565b9050919050565b7f596f7520617265206120736e697065722c20676574206c696665210000000000600082015250565b60006152e0601b8361404a565b91506152eb826152aa565b602082019050919050565b6000602082019050818103600083015261530f816152d3565b9050919050565b7f54726164696e67206973206e6f74206163746976652e00000000000000000000600082015250565b600061534c60168361404a565b915061535782615316565b602082019050919050565b6000602082019050818103600083015261537b8161533f565b9050919050565b7f54726164696e6720697320656e61626c65640000000000000000000000000000600082015250565b60006153b860128361404a565b91506153c382615382565b602082019050919050565b600060208201905081810360008301526153e7816153ab565b9050919050565b7f427579207472616e7366657220616d6f756e7420646f65736e7420657863656560008201527f6420746865206d696e206275792e000000000000000000000000000000000000602082015250565b600061544a602e8361404a565b9150615455826153ee565b604082019050919050565b600060208201905081810360008301526154798161543d565b9050919050565b7f43616e6e6f7420457863656564206d61782077616c6c65740000000000000000600082015250565b60006154b660188361404a565b91506154c182615480565b602082019050919050565b600060208201905081810360008301526154e5816154a9565b9050919050565b60006154f782614162565b915061550283614162565b925082821015615515576155146146e3565b5b828203905092915050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b600061557c60268361404a565b915061558782615520565b604082019050919050565b600060208201905081810360008301526155ab8161556f565b9050919050565b60006040820190506155c76000830185614396565b6155d460208301846141e4565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60008151905061561981614136565b92915050565b600060208284031215615635576156346140fa565b5b60006156438482850161560a565b91505092915050565b6000819050919050565b600061567161566c6156678461564c565b61423b565b614162565b9050919050565b61568181615656565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6156bc81614124565b82525050565b60006156ce83836156b3565b60208301905092915050565b6000602082019050919050565b60006156f282615687565b6156fc8185615692565b9350615707836156a3565b8060005b8381101561573857815161571f88826156c2565b975061572a836156da565b92505060018101905061570b565b5085935050505092915050565b600060a08201905061575a60008301886142b5565b6157676020830187615678565b818103604083015261577981866156e7565b90506157886060830185614396565b61579560808301846142b5565b9695505050505050565b600060c0820190506157b46000830189614396565b6157c160208301886142b5565b6157ce6040830187615678565b6157db6060830186615678565b6157e86080830185614396565b6157f560a08301846142b5565b979650505050505050565b600080600060608486031215615819576158186140fa565b5b600061582786828701614bbd565b935050602061583886828701614bbd565b925050604061584986828701614bbd565b915050925092509256fea2646970667358221220e12341f206264c63055cbb5355bec30bfe457e6ca85ee5c36f11de333bac9c6864736f6c634300080c0033

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.