ETH Price: $2,237.58 (-6.46%)

Token

GPTECH AI (GPTECH)
 

Overview

Max Total Supply

100,000 GPTECH

Holders

51

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
250 GPTECH

Value
$0.00
0x69bcb1fe550e691d047b1fc4e2a77e98dfd6c744
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:
GPTECHAI

Compiler Version
v0.8.21+commit.d9974bed

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2024-03-05
*/

/**

// SPDX-License-Identifier: MIT

/*

Introducting $GPTECH: AI contract auditor

Revealing smart contracts: your gateway to crypto safety.
Effortlessly uncover hidden features.

Links:
Telegram: https://t.me/GPTechAI_ETH
Website: https://gptechai.tech
Twitter: https://twitter.com/GPTechAI_ERC
Utility bot: Coming at launch

*/

pragma solidity = 0.8.21;
pragma experimental ABIEncoderV2;

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

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

interface IUniswapV2Router02 {
    function factory() external pure returns (address);

    function WETH() external pure returns (address);

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

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

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

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

    function name() external pure returns (string memory);

    function symbol() external pure returns (string memory);

    function decimals() external pure returns (uint8);

    function totalSupply() external view returns (uint256);

    function balanceOf(address owner) external view returns (uint256);

    function allowance(address owner, address spender)
        external
        view
        returns (uint256);

    function approve(address spender, uint256 value) external returns (bool);

    function transfer(address to, uint256 value) external returns (bool);

    function transferFrom(
        address from,
        address to,
        uint256 value
    ) external returns (bool);

    function DOMAIN_SEPARATOR() external view returns (bytes32);

    function PERMIT_TYPEHASH() external pure returns (bytes32);

    function nonces(address owner) external view returns (uint256);

    function permit(
        address owner,
        address spender,
        uint256 value,
        uint256 deadline,
        uint8 v,
        bytes32 r,
        bytes32 s
    ) external;

    event Mint(address indexed sender, uint256 amount0, uint256 amount1);

    event Swap(
        address indexed sender,
        uint256 amount0In,
        uint256 amount1In,
        uint256 amount0Out,
        uint256 amount1Out,
        address indexed to
    );
    event Sync(uint112 reserve0, uint112 reserve1);

    function MINIMUM_LIQUIDITY() external pure returns (uint256);

    function factory() external view returns (address);

    function token0() external view returns (address);

    function token1() external view returns (address);

    function getReserves()
        external
        view
        returns (
            uint112 reserve0,
            uint112 reserve1,
            uint32 blockTimestampLast
        );

    function price0CumulativeLast() external view returns (uint256);

    function price1CumulativeLast() external view returns (uint256);

    function kLast() external view returns (uint256);

    function mint(address to) external returns (uint256 liquidity);

    function swap(
        uint256 amount0Out,
        uint256 amount1Out,
        address to,
        bytes calldata data
    ) external;

    function skim(address to) external;

    function sync() external;

    function initialize(address, address) external;
}

interface IUniswapV2Factory {
    event PairCreated(
        address indexed token0,
        address indexed token1,
        address pair,
        uint256
    );

    function feeTo() external view returns (address);

    function feeToSetter() external view returns (address);

    function getPair(address tokenA, address tokenB)
        external
        view
        returns (address pair);

    function allPairs(uint256) external view returns (address pair);

    function allPairsLength() external view returns (uint256);

    function createPair(address tokenA, address tokenB)
        external
        returns (address pair);

    function setFeeTo(address) external;

    function setFeeToSetter(address) external;
}

library SafeMath {

    function tryAdd(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            uint256 c = a + b;
            if (c < a) return (false, 0);
            return (true, c);
        }
    }

    function trySub(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            if (b > a) return (false, 0);
            return (true, a - b);
        }
    }

    function tryMul(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            if (a == 0) return (true, 0);
            uint256 c = a * b;
            if (c / a != b) return (false, 0);
            return (true, c);
        }
    }

    function tryDiv(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            if (b == 0) return (false, 0);
            return (true, a / b);
        }
    }

    function tryMod(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            if (b == 0) return (false, 0);
            return (true, a % b);
        }
    }

    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        return a + b;
    }

    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return a - b;
    }

    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        return a * b;
    }

    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return a / b;
    }

    function mod(uint256 a, uint256 b) internal pure returns (uint256) {
        return a % b;
    }

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

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

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

interface IERC20 {

    event Transfer(address indexed from, address indexed to, uint256 value);

    event Approval(address indexed owner, address indexed spender, uint256 value);

    function totalSupply() external view returns (uint256);

    function balanceOf(address account) external view returns (uint256);

    function transfer(address to, 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 from,
        address to,
        uint256 amount
    ) external returns (bool);
}

interface IERC20Metadata is IERC20 {

    function name() external view returns (string memory);
    function symbol() external view returns (string memory);
    function decimals() external view returns (uint8);
}

abstract contract Ownable is Context {
    address private _owner;

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

    constructor() {
        _transferOwnership(_msgSender());
    }

    modifier onlyOwner() {
        _checkOwner();
        _;
    }

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

    function _checkOwner() internal view virtual {
        require(owner() == _msgSender(), "Ownable: caller is not the owner");
    }

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

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

    function _transferOwnership(address newOwner) internal virtual {
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
    }
}

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 to, uint256 amount) public virtual override returns (bool) {
        address owner = _msgSender();
        _transfer(owner, to, 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) {
        address owner = _msgSender();
        _approve(owner, spender, amount);
        return true;
    }

    function transferFrom(
        address from,
        address to,
        uint256 amount
    ) public virtual override returns (bool) {
        address spender = _msgSender();
        _spendAllowance(from, spender, amount);
        _transfer(from, to, amount);
        return true;
    }

    function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) {
        address owner = _msgSender();
        _approve(owner, spender, allowance(owner, spender) + addedValue);
        return true;
    }

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

        return true;
    }

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

        _beforeTokenTransfer(from, to, amount);

        uint256 fromBalance = _balances[from];
        require(fromBalance >= amount, "ERC20: transfer amount exceeds balance");
        unchecked {
            _balances[from] = fromBalance - amount;
            _balances[to] += amount;
        }

        emit Transfer(from, to, amount);

        _afterTokenTransfer(from, to, amount);
    }

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

        _beforeTokenTransfer(address(0), account, amount);

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

        _afterTokenTransfer(address(0), account, amount);
    }

    function _burn(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: burn from the zero address");

        _beforeTokenTransfer(account, address(0), amount);

        uint256 accountBalance = _balances[account];
        require(accountBalance >= amount, "ERC20: burn amount exceeds balance");
        unchecked {
            _balances[account] = accountBalance - amount;
            _totalSupply -= amount;
        }

        emit Transfer(account, address(0), amount);

        _afterTokenTransfer(account, address(0), 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);
    }

    function _spendAllowance(
        address owner,
        address spender,
        uint256 amount
    ) internal virtual {
        uint256 currentAllowance = allowance(owner, spender);
        if (currentAllowance != type(uint256).max) {
            require(currentAllowance >= amount, "ERC20: insufficient allowance");
            unchecked {
                _approve(owner, spender, currentAllowance - amount);
            }
        }
    }

    function _beforeTokenTransfer(
        address from,
        address to,
        uint256 amount
    ) internal virtual {}

    function _afterTokenTransfer(
        address from,
        address to,
        uint256 amount
    ) internal virtual {}
}

contract GPTECHAI is ERC20, Ownable {
    using SafeMath for uint256;
    
    IUniswapV2Router02 public immutable _uniswapV2Router;
    address private uniswapV2Pair;
    address private deployerWallet;
    address private marketingWallet;
    address private constant deadAddress = address(0xdead);

    bool private swapping;

    string private constant _name = "GPTECH AI";
    string private constant _symbol = "GPTECH";

    uint256 public initialTotalSupply = 100000 * 1e18;
    uint256 public maxTransactionAmount = 2000 * 1e18;
    uint256 public maxWallet = 2000 * 1e18;
    uint256 public swapTokensAtAmount = 1000 * 1e18;

    bool public tradingOpen = false;
    bool public swapEnabled = false;

    uint256 public BuyFee = 20;
    uint256 public SellFee = 20;

    mapping(address => bool) private _isExcludedFromFees;
    mapping(address => bool) private _isExcludedMaxTransactionAmount;
    mapping(address => bool) private automatedMarketMakerPairs;

    event ExcludeFromFees(address indexed account, bool isExcluded);
    event SetAutomatedMarketMakerPair(address indexed pair, bool indexed value);

    constructor(address wallet) ERC20(_name, _symbol) {

        _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory()).createPair(address(this), _uniswapV2Router.WETH());
        _setAutomatedMarketMakerPair(address(uniswapV2Pair), true);
        excludeFromMaxTransaction(address(uniswapV2Pair), true);
        excludeFromMaxTransaction(address(_uniswapV2Router), true);
        marketingWallet = payable(wallet);     
        
        deployerWallet = payable(_msgSender());
        excludeFromFees(owner(), true);
        excludeFromFees(address(this), true);
        excludeFromFees(address(wallet), true);
        excludeFromFees(address(0xdead), true);

        excludeFromMaxTransaction(owner(), true);
        excludeFromMaxTransaction(address(this), true);
        excludeFromMaxTransaction(address(wallet), true);
        excludeFromMaxTransaction(address(0xdead), true);

        _mint(deployerWallet, initialTotalSupply);
    }

    receive() external payable {}

    function openTrading() external onlyOwner() {
        require(!tradingOpen,"Trading is already open");
        _approve(address(this), address(_uniswapV2Router), initialTotalSupply);
        IERC20(uniswapV2Pair).approve(address(_uniswapV2Router), type(uint).max);
        address wethAddress = _uniswapV2Router.WETH();
        uint256 wethBalance = IERC20(wethAddress).balanceOf(uniswapV2Pair);
        uint256 initialTokens = initialTotalSupply.mul(55).div(100); uint256 desiredETHAmount;
        if (wethBalance > 0) {desiredETHAmount = address(this).balance.sub(wethBalance);
        uint256 tokenValue = initialTokens.mul(wethBalance).div(desiredETHAmount);
        super._transfer(address(this), uniswapV2Pair, tokenValue);
        IUniswapV2Pair(uniswapV2Pair).sync();
        _uniswapV2Router.addLiquidityETH{value: desiredETHAmount}(address(this), initialTokens, 0, desiredETHAmount, owner(), block.timestamp);}
        else {_uniswapV2Router.addLiquidityETH{value: address(this).balance}(address(this), initialTokens, 0, 0, owner(), block.timestamp);}
        swapEnabled = true;
        tradingOpen = true;
    }

    function excludeFromMaxTransaction(address updAds, bool isEx)
        public
        onlyOwner
    {
        _isExcludedMaxTransactionAmount[updAds] = isEx;
    }

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

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

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

    function isExcludedFromFees(address account) public view returns (bool) {
        return _isExcludedFromFees[account];
    }

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

        if (amount == 0) {
            super._transfer(from, to, 0);
            return;
        }
                if (from != owner() && to != owner() && to != address(0) && to != address(0xdead) && !swapping) {

                if (!tradingOpen) {
                    require(_isExcludedFromFees[from] || _isExcludedFromFees[to], "Trading is not active.");
                }

                if (automatedMarketMakerPairs[from] && !_isExcludedMaxTransactionAmount[to]
                ) {
                    require(amount <= maxTransactionAmount, "Buy transfer amount exceeds the maxTransactionAmount.");
                    require(amount + balanceOf(to) <= maxWallet, "Max wallet exceeded");
                }

                else if (automatedMarketMakerPairs[to] && !_isExcludedMaxTransactionAmount[from]) {
                    require(amount <= maxTransactionAmount, "Sell transfer amount exceeds the maxTransactionAmount.");
                } 
                
                else if (!_isExcludedMaxTransactionAmount[to]) {
                    require(amount + balanceOf(to) <= maxWallet, "Max wallet exceeded");
                }
            }

        uint256 contractTokenBalance = balanceOf(address(this));

        bool canSwap = contractTokenBalance > 0;

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

        bool takeFee = !swapping;

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

        uint256 fees = 0;

        if (takeFee) {
            if (automatedMarketMakerPairs[to]) {
                fees = amount.mul(SellFee).div(100);
            }
            else {
                fees = amount.mul(BuyFee).div(100);
            }

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

    function swapTokensForEth(uint256 tokenAmount) private {

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

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

        _uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0,
            path,
            marketingWallet,
            block.timestamp
        );
    }

   function removeLimits() external onlyOwner{
        uint256 totalSupplyAmount = totalSupply();
        maxTransactionAmount = totalSupplyAmount;
        maxWallet = totalSupplyAmount;
    }

    function clearStuckEth() external onlyOwner{
        require(address(this).balance > 0, "Token: no ETH to clear");
        payable(msg.sender).transfer(address(this).balance);
    }

    function SetFee(uint256 _buyFee, uint256 _sellFee) external onlyOwner {
        require(_buyFee <= 30 && _sellFee <= 99, "Fees cannot exceed 30%");
        BuyFee = _buyFee;
        SellFee = _sellFee;
    }

    function setSwapTokensAtAmount(uint256 _amount) external onlyOwner {
        swapTokensAtAmount = _amount * (10 ** 18);
    }

    function swapBack(uint256 tokens) private {
        uint256 contractBalance = balanceOf(address(this));
        uint256 tokensToSwap; 

        if (contractBalance == 0) {
            return;
        }

    if ((BuyFee+SellFee) == 0) {

        if(contractBalance > 0 && contractBalance < swapTokensAtAmount) {
            tokensToSwap = contractBalance;
        }
        else {
            uint256 sellFeeTokens = tokens.mul(SellFee).div(100);
            tokens -= sellFeeTokens;
            if (tokens > swapTokensAtAmount) {
                tokensToSwap = swapTokensAtAmount;
            }
            else {
                tokensToSwap = tokens;
            }
        }
    }

    else {

        if(contractBalance > 0 && contractBalance < swapTokensAtAmount.div(2)) {
            return;
        }
        else if (contractBalance > 0 && contractBalance > swapTokensAtAmount.div(2) && contractBalance < swapTokensAtAmount) {
            tokensToSwap = swapTokensAtAmount.div(2);
        }
        else {
            uint256 sellFeeTokens = tokens.mul(SellFee).div(100);
            tokens -= sellFeeTokens;
            if (tokens > swapTokensAtAmount) {
                tokensToSwap = swapTokensAtAmount;
            } else {
                tokensToSwap = tokens;
            }
        }
    }
        swapTokensForEth(tokensToSwap);
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"address","name":"wallet","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"isExcluded","type":"bool"}],"name":"ExcludeFromFees","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"pair","type":"address"},{"indexed":true,"internalType":"bool","name":"value","type":"bool"}],"name":"SetAutomatedMarketMakerPair","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"BuyFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"SellFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_buyFee","type":"uint256"},{"internalType":"uint256","name":"_sellFee","type":"uint256"}],"name":"SetFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"_uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"clearStuckEth","outputs":[],"stateMutability":"nonpayable","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":"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":[],"name":"initialTotalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTransactionAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWallet","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":"openTrading","outputs":[],"stateMutability":"nonpayable","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":[{"internalType":"address","name":"pair","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"setAutomatedMarketMakerPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"setSwapTokensAtAmount","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":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingOpen","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60a060405269152d02c7e14af6800000600955686c6b935b8bbd400000600a55686c6b935b8bbd400000600b55683635c9adc5dea00000600c555f600d5f6101000a81548160ff0219169083151502179055505f600d60016101000a81548160ff0219169083151502179055506014600e556014600f5534801562000082575f80fd5b50604051620049dc380380620049dc8339818101604052810190620000a8919062000a5a565b6040518060400160405280600981526020017f47505445434820414900000000000000000000000000000000000000000000008152506040518060400160405280600681526020017f4750544543480000000000000000000000000000000000000000000000000000815250816003908162000125919062000cee565b50806004908162000137919062000cee565b5050506200015a6200014e6200054560201b60201c565b6200054c60201b60201c565b737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff168152505060805173ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015620001ee573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062000214919062000a5a565b73ffffffffffffffffffffffffffffffffffffffff1663c9c653963060805173ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200027c573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620002a2919062000a5a565b6040518363ffffffff1660e01b8152600401620002c192919062000de3565b6020604051808303815f875af1158015620002de573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062000304919062000a5a565b60065f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506200037760065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660016200060f60201b60201c565b620003ab60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166001620006ad60201b60201c565b620003c06080516001620006ad60201b60201c565b8060085f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550620004106200054560201b60201c565b60075f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555062000471620004636200071560201b60201c565b60016200073d60201b60201c565b620004843060016200073d60201b60201c565b620004978160016200073d60201b60201c565b620004ac61dead60016200073d60201b60201c565b620004ce620004c06200071560201b60201c565b6001620006ad60201b60201c565b620004e1306001620006ad60201b60201c565b620004f4816001620006ad60201b60201c565b6200050961dead6001620006ad60201b60201c565b6200053e60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600954620007f560201b60201c565b5062000fc4565b5f33905090565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508160055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b8060125f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b620006bd6200095a60201b60201c565b8060115f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6200074d6200095a60201b60201c565b8060105f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df782604051620007e9919062000e2a565b60405180910390a25050565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160362000866576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200085d9062000ea3565b60405180910390fd5b620008795f8383620009eb60201b60201c565b8060025f8282546200088c919062000ef0565b92505081905550805f808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825401925050819055508173ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516200093b919062000f3b565b60405180910390a3620009565f8383620009f060201b60201c565b5050565b6200096a6200054560201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16620009906200071560201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1614620009e9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620009e09062000fa4565b60405180910390fd5b565b505050565b505050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f62000a2482620009f9565b9050919050565b62000a368162000a18565b811462000a41575f80fd5b50565b5f8151905062000a548162000a2b565b92915050565b5f6020828403121562000a725762000a71620009f5565b5b5f62000a818482850162000a44565b91505092915050565b5f81519050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168062000b0657607f821691505b60208210810362000b1c5762000b1b62000ac1565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f6008830262000b807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000b43565b62000b8c868362000b43565b95508019841693508086168417925050509392505050565b5f819050919050565b5f819050919050565b5f62000bd662000bd062000bca8462000ba4565b62000bad565b62000ba4565b9050919050565b5f819050919050565b62000bf18362000bb6565b62000c0962000c008262000bdd565b84845462000b4f565b825550505050565b5f90565b62000c1f62000c11565b62000c2c81848462000be6565b505050565b5b8181101562000c535762000c475f8262000c15565b60018101905062000c32565b5050565b601f82111562000ca25762000c6c8162000b22565b62000c778462000b34565b8101602085101562000c87578190505b62000c9f62000c968562000b34565b83018262000c31565b50505b505050565b5f82821c905092915050565b5f62000cc45f198460080262000ca7565b1980831691505092915050565b5f62000cde838362000cb3565b9150826002028217905092915050565b62000cf98262000a8a565b67ffffffffffffffff81111562000d155762000d1462000a94565b5b62000d21825462000aee565b62000d2e82828562000c57565b5f60209050601f83116001811462000d64575f841562000d4f578287015190505b62000d5b858262000cd1565b86555062000dca565b601f19841662000d748662000b22565b5f5b8281101562000d9d5784890151825560018201915060208501945060208101905062000d76565b8683101562000dbd578489015162000db9601f89168262000cb3565b8355505b6001600288020188555050505b505050505050565b62000ddd8162000a18565b82525050565b5f60408201905062000df85f83018562000dd2565b62000e07602083018462000dd2565b9392505050565b5f8115159050919050565b62000e248162000e0e565b82525050565b5f60208201905062000e3f5f83018462000e19565b92915050565b5f82825260208201905092915050565b7f45524332303a206d696e7420746f20746865207a65726f2061646472657373005f82015250565b5f62000e8b601f8362000e45565b915062000e988262000e55565b602082019050919050565b5f6020820190508181035f83015262000ebc8162000e7d565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f62000efc8262000ba4565b915062000f098362000ba4565b925082820190508082111562000f245762000f2362000ec3565b5b92915050565b62000f358162000ba4565b82525050565b5f60208201905062000f505f83018462000f2a565b92915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f62000f8c60208362000e45565b915062000f998262000f56565b602082019050919050565b5f6020820190508181035f83015262000fbd8162000f7e565b9050919050565b6080516139c7620010155f395f818161095101528181610e1c01528181610e8201528181610f23015281816111680152818161121d0152818161262601528181612705015261272c01526139c75ff3fe6080604052600436106101e6575f3560e01c80638da5cb5b11610101578063c9567bf911610094578063e2f4560511610063578063e2f45605146106bf578063f2fde38b146106e9578063f8b45b0514610711578063ffb54a991461073b576101ed565b8063c9567bf914610619578063cf9522fd1461062f578063dd62ed3e14610659578063dd85465214610695576101ed565b8063a9059cbb116100d0578063a9059cbb14610563578063afa4f3b21461059f578063c0246668146105c7578063c8c8ebe4146105ef576101ed565b80638da5cb5b146104ab57806395d89b41146104d55780639a7a23d6146104ff578063a457c2d714610527576101ed565b80634fbee19311610179578063715018a611610148578063715018a614610441578063751039fc146104575780637571336a1461046d57806389291a8f14610495576101ed565b80634fbee19314610375578063583e0568146103b15780636ddd1713146103db57806370a0823114610405576101ed565b806323b872dd116101b557806323b872dd146102a9578063311028af146102e5578063313ce5671461030f5780633950935114610339576101ed565b8063032dc6a2146101f157806306fdde0314610219578063095ea7b31461024357806318160ddd1461027f576101ed565b366101ed57005b5f80fd5b3480156101fc575f80fd5b5061021760048036038101906102129190612814565b610765565b005b348015610224575f80fd5b5061022d6107d0565b60405161023a91906128dc565b60405180910390f35b34801561024e575f80fd5b5061026960048036038101906102649190612956565b610860565b60405161027691906129ae565b60405180910390f35b34801561028a575f80fd5b50610293610882565b6040516102a091906129d6565b60405180910390f35b3480156102b4575f80fd5b506102cf60048036038101906102ca91906129ef565b61088b565b6040516102dc91906129ae565b60405180910390f35b3480156102f0575f80fd5b506102f96108b9565b60405161030691906129d6565b60405180910390f35b34801561031a575f80fd5b506103236108bf565b6040516103309190612a5a565b60405180910390f35b348015610344575f80fd5b5061035f600480360381019061035a9190612956565b6108c7565b60405161036c91906129ae565b60405180910390f35b348015610380575f80fd5b5061039b60048036038101906103969190612a73565b6108fd565b6040516103a891906129ae565b60405180910390f35b3480156103bc575f80fd5b506103c561094f565b6040516103d29190612af9565b60405180910390f35b3480156103e6575f80fd5b506103ef610973565b6040516103fc91906129ae565b60405180910390f35b348015610410575f80fd5b5061042b60048036038101906104269190612a73565b610986565b60405161043891906129d6565b60405180910390f35b34801561044c575f80fd5b506104556109cb565b005b348015610462575f80fd5b5061046b6109de565b005b348015610478575f80fd5b50610493600480360381019061048e9190612b3c565b610a02565b005b3480156104a0575f80fd5b506104a9610a62565b005b3480156104b6575f80fd5b506104bf610af2565b6040516104cc9190612b89565b60405180910390f35b3480156104e0575f80fd5b506104e9610b1a565b6040516104f691906128dc565b60405180910390f35b34801561050a575f80fd5b5061052560048036038101906105209190612b3c565b610baa565b005b348015610532575f80fd5b5061054d60048036038101906105489190612956565b610c4f565b60405161055a91906129ae565b60405180910390f35b34801561056e575f80fd5b5061058960048036038101906105849190612956565b610cc4565b60405161059691906129ae565b60405180910390f35b3480156105aa575f80fd5b506105c560048036038101906105c09190612ba2565b610ce6565b005b3480156105d2575f80fd5b506105ed60048036038101906105e89190612b3c565b610d0b565b005b3480156105fa575f80fd5b50610603610db9565b60405161061091906129d6565b60405180910390f35b348015610624575f80fd5b5061062d610dbf565b005b34801561063a575f80fd5b50610643611306565b60405161065091906129d6565b60405180910390f35b348015610664575f80fd5b5061067f600480360381019061067a9190612bcd565b61130c565b60405161068c91906129d6565b60405180910390f35b3480156106a0575f80fd5b506106a961138e565b6040516106b691906129d6565b60405180910390f35b3480156106ca575f80fd5b506106d3611394565b6040516106e091906129d6565b60405180910390f35b3480156106f4575f80fd5b5061070f600480360381019061070a9190612a73565b61139a565b005b34801561071c575f80fd5b5061072561141c565b60405161073291906129d6565b60405180910390f35b348015610746575f80fd5b5061074f611422565b60405161075c91906129ae565b60405180910390f35b61076d611434565b601e821115801561077f575060638111155b6107be576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107b590612c55565b60405180910390fd5b81600e8190555080600f819055505050565b6060600380546107df90612ca0565b80601f016020809104026020016040519081016040528092919081815260200182805461080b90612ca0565b80156108565780601f1061082d57610100808354040283529160200191610856565b820191905f5260205f20905b81548152906001019060200180831161083957829003601f168201915b5050505050905090565b5f8061086a6114b2565b90506108778185856114b9565b600191505092915050565b5f600254905090565b5f806108956114b2565b90506108a285828561167c565b6108ad858585611707565b60019150509392505050565b60095481565b5f6012905090565b5f806108d16114b2565b90506108f28185856108e3858961130c565b6108ed9190612cfd565b6114b9565b600191505092915050565b5f60105f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff169050919050565b7f000000000000000000000000000000000000000000000000000000000000000081565b600d60019054906101000a900460ff1681565b5f805f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b6109d3611434565b6109dc5f611fe9565b565b6109e6611434565b5f6109ef610882565b905080600a8190555080600b8190555050565b610a0a611434565b8060115f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b610a6a611434565b5f4711610aac576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610aa390612d7a565b60405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff166108fc4790811502906040515f60405180830381858888f19350505050158015610aef573d5f803e3d5ffd5b50565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060048054610b2990612ca0565b80601f0160208091040260200160405190810160405280929190818152602001828054610b5590612ca0565b8015610ba05780601f10610b7757610100808354040283529160200191610ba0565b820191905f5260205f20905b815481529060010190602001808311610b8357829003601f168201915b5050505050905090565b610bb2611434565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610c41576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c3890612e08565b60405180910390fd5b610c4b82826120ac565b5050565b5f80610c596114b2565b90505f610c66828661130c565b905083811015610cab576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ca290612e96565b60405180910390fd5b610cb882868684036114b9565b60019250505092915050565b5f80610cce6114b2565b9050610cdb818585611707565b600191505092915050565b610cee611434565b670de0b6b3a764000081610d029190612eb4565b600c8190555050565b610d13611434565b8060105f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df782604051610dad91906129ae565b60405180910390a25050565b600a5481565b610dc7611434565b600d5f9054906101000a900460ff1615610e16576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e0d90612f3f565b60405180910390fd5b610e43307f00000000000000000000000000000000000000000000000000000000000000006009546114b9565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b37f00000000000000000000000000000000000000000000000000000000000000007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b8152600401610edf929190612f5d565b6020604051808303815f875af1158015610efb573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610f1f9190612f98565b505f7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610f8a573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610fae9190612fd7565b90505f8173ffffffffffffffffffffffffffffffffffffffff166370a0823160065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518263ffffffff1660e01b815260040161100b9190612b89565b602060405180830381865afa158015611026573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061104a9190613016565b90505f6110766064611068603760095461214a90919063ffffffff16565b61215f90919063ffffffff16565b90505f8083111561121b57611094834761217490919063ffffffff16565b90505f6110bc826110ae868661214a90919063ffffffff16565b61215f90919063ffffffff16565b90506110ea3060065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1683612189565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663fff6cae96040518163ffffffff1660e01b81526004015f604051808303815f87803b158015611150575f80fd5b505af1158015611162573d5f803e3d5ffd5b505050507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663f305d7198330865f876111af610af2565b426040518863ffffffff1660e01b81526004016111d19695949392919061307a565b60606040518083038185885af11580156111ed573d5f803e3d5ffd5b50505050506040513d601f19601f8201168201806040525081019061121291906130d9565b505050506112cb565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663f305d7194730855f80611264610af2565b426040518863ffffffff1660e01b815260040161128696959493929190613129565b60606040518083038185885af11580156112a2573d5f803e3d5ffd5b50505050506040513d601f19601f820116820180604052508101906112c791906130d9565b5050505b6001600d60016101000a81548160ff0219169083151502179055506001600d5f6101000a81548160ff02191690831515021790555050505050565b600f5481565b5f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b600e5481565b600c5481565b6113a2611434565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611410576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611407906131f8565b60405180910390fd5b61141981611fe9565b50565b600b5481565b600d5f9054906101000a900460ff1681565b61143c6114b2565b73ffffffffffffffffffffffffffffffffffffffff1661145a610af2565b73ffffffffffffffffffffffffffffffffffffffff16146114b0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114a790613260565b60405180910390fd5b565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611527576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161151e906132ee565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611595576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161158c9061337c565b60405180910390fd5b8060015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161166f91906129d6565b60405180910390a3505050565b5f611687848461130c565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff811461170157818110156116f3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116ea906133e4565b60405180910390fd5b61170084848484036114b9565b5b50505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611775576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161176c90613472565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036117e3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117da90613500565b60405180910390fd5b5f81036117fa576117f583835f612189565b611fe4565b611802610af2565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156118705750611840610af2565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156118a857505f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156118e2575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156118fb5750600860149054906101000a900460ff16155b15611cc857600d5f9054906101000a900460ff166119ee5760105f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16806119ae575060105f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b6119ed576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119e490613568565b60405180910390fd5b5b60125f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168015611a8b575060115f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15611b3257600a54811115611ad5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611acc906135f6565b60405180910390fd5b600b54611ae183610986565b82611aec9190612cfd565b1115611b2d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b249061365e565b60405180910390fd5b611cc7565b60125f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168015611bcf575060115f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15611c1e57600a54811115611c19576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c10906136ec565b60405180910390fd5b611cc6565b60115f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16611cc557600b54611c7883610986565b82611c839190612cfd565b1115611cc4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cbb9061365e565b60405180910390fd5b5b5b5b5b5f611cd230610986565b90505f8082119050808015611cf35750600d60019054906101000a900460ff165b8015611d0c5750600860149054906101000a900460ff16155b8015611d5f575060125f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b8015611db2575060105f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b8015611e05575060105f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15611e49576001600860146101000a81548160ff021916908315150217905550611e2e836123f5565b5f600860146101000a81548160ff0219169083151502179055505b5f600860149054906101000a900460ff1615905060105f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680611ef8575060105f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b15611f01575f90505b5f8115611fd45760125f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1615611f8657611f7f6064611f71600f548861214a90919063ffffffff16565b61215f90919063ffffffff16565b9050611fb1565b611fae6064611fa0600e548861214a90919063ffffffff16565b61215f90919063ffffffff16565b90505b5f811115611fc557611fc4873083612189565b5b8085611fd1919061370a565b94505b611fdf878787612189565b505050505b505050565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508160055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b8060125f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b5f81836121579190612eb4565b905092915050565b5f818361216c919061376a565b905092915050565b5f8183612181919061370a565b905092915050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036121f7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121ee90613472565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612265576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161225c90613500565b60405180910390fd5b61227083838361257f565b5f805f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050818110156122f3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122ea9061380a565b60405180910390fd5b8181035f808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550815f808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825401925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516123dc91906129d6565b60405180910390a36123ef848484612584565b50505050565b5f6123ff30610986565b90505f80820361241057505061257c565b5f600f54600e546124219190612cfd565b0361249b575f821180156124365750600c5482105b1561244357819050612496565b5f61246c606461245e600f548761214a90919063ffffffff16565b61215f90919063ffffffff16565b9050808461247a919061370a565b9350600c5484111561249057600c549150612494565b8391505b505b612570565b5f821180156124be57506124bb6002600c5461215f90919063ffffffff16565b82105b156124ca57505061257c565b5f821180156124ed57506124ea6002600c5461215f90919063ffffffff16565b82115b80156124fa5750600c5482105b1561251c576125156002600c5461215f90919063ffffffff16565b905061256f565b5f6125456064612537600f548761214a90919063ffffffff16565b61215f90919063ffffffff16565b90508084612553919061370a565b9350600c5484111561256957600c54915061256d565b8391505b505b5b61257981612589565b50505b50565b505050565b505050565b5f600267ffffffffffffffff8111156125a5576125a4613828565b5b6040519080825280602002602001820160405280156125d35781602001602082028036833780820191505090505b50905030815f815181106125ea576125e9613855565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561268d573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906126b19190612fd7565b816001815181106126c5576126c4613855565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061272a307f0000000000000000000000000000000000000000000000000000000000000000846114b9565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8460085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518663ffffffff1660e01b81526004016127ac959493929190613939565b5f604051808303815f87803b1580156127c3575f80fd5b505af11580156127d5573d5f803e3d5ffd5b505050505050565b5f80fd5b5f819050919050565b6127f3816127e1565b81146127fd575f80fd5b50565b5f8135905061280e816127ea565b92915050565b5f806040838503121561282a576128296127dd565b5b5f61283785828601612800565b925050602061284885828601612800565b9150509250929050565b5f81519050919050565b5f82825260208201905092915050565b5f5b8381101561288957808201518184015260208101905061286e565b5f8484015250505050565b5f601f19601f8301169050919050565b5f6128ae82612852565b6128b8818561285c565b93506128c881856020860161286c565b6128d181612894565b840191505092915050565b5f6020820190508181035f8301526128f481846128a4565b905092915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f612925826128fc565b9050919050565b6129358161291b565b811461293f575f80fd5b50565b5f813590506129508161292c565b92915050565b5f806040838503121561296c5761296b6127dd565b5b5f61297985828601612942565b925050602061298a85828601612800565b9150509250929050565b5f8115159050919050565b6129a881612994565b82525050565b5f6020820190506129c15f83018461299f565b92915050565b6129d0816127e1565b82525050565b5f6020820190506129e95f8301846129c7565b92915050565b5f805f60608486031215612a0657612a056127dd565b5b5f612a1386828701612942565b9350506020612a2486828701612942565b9250506040612a3586828701612800565b9150509250925092565b5f60ff82169050919050565b612a5481612a3f565b82525050565b5f602082019050612a6d5f830184612a4b565b92915050565b5f60208284031215612a8857612a876127dd565b5b5f612a9584828501612942565b91505092915050565b5f819050919050565b5f612ac1612abc612ab7846128fc565b612a9e565b6128fc565b9050919050565b5f612ad282612aa7565b9050919050565b5f612ae382612ac8565b9050919050565b612af381612ad9565b82525050565b5f602082019050612b0c5f830184612aea565b92915050565b612b1b81612994565b8114612b25575f80fd5b50565b5f81359050612b3681612b12565b92915050565b5f8060408385031215612b5257612b516127dd565b5b5f612b5f85828601612942565b9250506020612b7085828601612b28565b9150509250929050565b612b838161291b565b82525050565b5f602082019050612b9c5f830184612b7a565b92915050565b5f60208284031215612bb757612bb66127dd565b5b5f612bc484828501612800565b91505092915050565b5f8060408385031215612be357612be26127dd565b5b5f612bf085828601612942565b9250506020612c0185828601612942565b9150509250929050565b7f466565732063616e6e6f742065786365656420333025000000000000000000005f82015250565b5f612c3f60168361285c565b9150612c4a82612c0b565b602082019050919050565b5f6020820190508181035f830152612c6c81612c33565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f6002820490506001821680612cb757607f821691505b602082108103612cca57612cc9612c73565b5b50919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f612d07826127e1565b9150612d12836127e1565b9250828201905080821115612d2a57612d29612cd0565b5b92915050565b7f546f6b656e3a206e6f2045544820746f20636c656172000000000000000000005f82015250565b5f612d6460168361285c565b9150612d6f82612d30565b602082019050919050565b5f6020820190508181035f830152612d9181612d58565b9050919050565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d205f8201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000602082015250565b5f612df260398361285c565b9150612dfd82612d98565b604082019050919050565b5f6020820190508181035f830152612e1f81612de6565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f775f8201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b5f612e8060258361285c565b9150612e8b82612e26565b604082019050919050565b5f6020820190508181035f830152612ead81612e74565b9050919050565b5f612ebe826127e1565b9150612ec9836127e1565b9250828202612ed7816127e1565b91508282048414831517612eee57612eed612cd0565b5b5092915050565b7f54726164696e6720697320616c7265616479206f70656e0000000000000000005f82015250565b5f612f2960178361285c565b9150612f3482612ef5565b602082019050919050565b5f6020820190508181035f830152612f5681612f1d565b9050919050565b5f604082019050612f705f830185612b7a565b612f7d60208301846129c7565b9392505050565b5f81519050612f9281612b12565b92915050565b5f60208284031215612fad57612fac6127dd565b5b5f612fba84828501612f84565b91505092915050565b5f81519050612fd18161292c565b92915050565b5f60208284031215612fec57612feb6127dd565b5b5f612ff984828501612fc3565b91505092915050565b5f81519050613010816127ea565b92915050565b5f6020828403121561302b5761302a6127dd565b5b5f61303884828501613002565b91505092915050565b5f819050919050565b5f61306461305f61305a84613041565b612a9e565b6127e1565b9050919050565b6130748161304a565b82525050565b5f60c08201905061308d5f830189612b7a565b61309a60208301886129c7565b6130a7604083018761306b565b6130b460608301866129c7565b6130c16080830185612b7a565b6130ce60a08301846129c7565b979650505050505050565b5f805f606084860312156130f0576130ef6127dd565b5b5f6130fd86828701613002565b935050602061310e86828701613002565b925050604061311f86828701613002565b9150509250925092565b5f60c08201905061313c5f830189612b7a565b61314960208301886129c7565b613156604083018761306b565b613163606083018661306b565b6131706080830185612b7a565b61317d60a08301846129c7565b979650505050505050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f6131e260268361285c565b91506131ed82613188565b604082019050919050565b5f6020820190508181035f83015261320f816131d6565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f61324a60208361285c565b915061325582613216565b602082019050919050565b5f6020820190508181035f8301526132778161323e565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f6132d860248361285c565b91506132e38261327e565b604082019050919050565b5f6020820190508181035f830152613305816132cc565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f61336660228361285c565b91506133718261330c565b604082019050919050565b5f6020820190508181035f8301526133938161335a565b9050919050565b7f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000005f82015250565b5f6133ce601d8361285c565b91506133d98261339a565b602082019050919050565b5f6020820190508181035f8301526133fb816133c2565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f61345c60258361285c565b915061346782613402565b604082019050919050565b5f6020820190508181035f83015261348981613450565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f6134ea60238361285c565b91506134f582613490565b604082019050919050565b5f6020820190508181035f830152613517816134de565b9050919050565b7f54726164696e67206973206e6f74206163746976652e000000000000000000005f82015250565b5f61355260168361285c565b915061355d8261351e565b602082019050919050565b5f6020820190508181035f83015261357f81613546565b9050919050565b7f427579207472616e7366657220616d6f756e74206578636565647320746865205f8201527f6d61785472616e73616374696f6e416d6f756e742e0000000000000000000000602082015250565b5f6135e060358361285c565b91506135eb82613586565b604082019050919050565b5f6020820190508181035f83015261360d816135d4565b9050919050565b7f4d61782077616c6c6574206578636565646564000000000000000000000000005f82015250565b5f61364860138361285c565b915061365382613614565b602082019050919050565b5f6020820190508181035f8301526136758161363c565b9050919050565b7f53656c6c207472616e7366657220616d6f756e742065786365656473207468655f8201527f206d61785472616e73616374696f6e416d6f756e742e00000000000000000000602082015250565b5f6136d660368361285c565b91506136e18261367c565b604082019050919050565b5f6020820190508181035f830152613703816136ca565b9050919050565b5f613714826127e1565b915061371f836127e1565b925082820390508181111561373757613736612cd0565b5b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f613774826127e1565b915061377f836127e1565b92508261378f5761378e61373d565b5b828204905092915050565b7f45524332303a207472616e7366657220616d6f756e74206578636565647320625f8201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b5f6137f460268361285c565b91506137ff8261379a565b604082019050919050565b5f6020820190508181035f830152613821816137e8565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b6138b48161291b565b82525050565b5f6138c583836138ab565b60208301905092915050565b5f602082019050919050565b5f6138e782613882565b6138f1818561388c565b93506138fc8361389c565b805f5b8381101561392c57815161391388826138ba565b975061391e836138d1565b9250506001810190506138ff565b5085935050505092915050565b5f60a08201905061394c5f8301886129c7565b613959602083018761306b565b818103604083015261396b81866138dd565b905061397a6060830185612b7a565b61398760808301846129c7565b969550505050505056fea264697066735822122042e8a4e8423dbfb8077149bba925889d32e2f5474561fba2db3fde016d1e4f3b64736f6c6343000815003300000000000000000000000000ecc8531b36e98980718faddd9a212d03cf5855

Deployed Bytecode

0x6080604052600436106101e6575f3560e01c80638da5cb5b11610101578063c9567bf911610094578063e2f4560511610063578063e2f45605146106bf578063f2fde38b146106e9578063f8b45b0514610711578063ffb54a991461073b576101ed565b8063c9567bf914610619578063cf9522fd1461062f578063dd62ed3e14610659578063dd85465214610695576101ed565b8063a9059cbb116100d0578063a9059cbb14610563578063afa4f3b21461059f578063c0246668146105c7578063c8c8ebe4146105ef576101ed565b80638da5cb5b146104ab57806395d89b41146104d55780639a7a23d6146104ff578063a457c2d714610527576101ed565b80634fbee19311610179578063715018a611610148578063715018a614610441578063751039fc146104575780637571336a1461046d57806389291a8f14610495576101ed565b80634fbee19314610375578063583e0568146103b15780636ddd1713146103db57806370a0823114610405576101ed565b806323b872dd116101b557806323b872dd146102a9578063311028af146102e5578063313ce5671461030f5780633950935114610339576101ed565b8063032dc6a2146101f157806306fdde0314610219578063095ea7b31461024357806318160ddd1461027f576101ed565b366101ed57005b5f80fd5b3480156101fc575f80fd5b5061021760048036038101906102129190612814565b610765565b005b348015610224575f80fd5b5061022d6107d0565b60405161023a91906128dc565b60405180910390f35b34801561024e575f80fd5b5061026960048036038101906102649190612956565b610860565b60405161027691906129ae565b60405180910390f35b34801561028a575f80fd5b50610293610882565b6040516102a091906129d6565b60405180910390f35b3480156102b4575f80fd5b506102cf60048036038101906102ca91906129ef565b61088b565b6040516102dc91906129ae565b60405180910390f35b3480156102f0575f80fd5b506102f96108b9565b60405161030691906129d6565b60405180910390f35b34801561031a575f80fd5b506103236108bf565b6040516103309190612a5a565b60405180910390f35b348015610344575f80fd5b5061035f600480360381019061035a9190612956565b6108c7565b60405161036c91906129ae565b60405180910390f35b348015610380575f80fd5b5061039b60048036038101906103969190612a73565b6108fd565b6040516103a891906129ae565b60405180910390f35b3480156103bc575f80fd5b506103c561094f565b6040516103d29190612af9565b60405180910390f35b3480156103e6575f80fd5b506103ef610973565b6040516103fc91906129ae565b60405180910390f35b348015610410575f80fd5b5061042b60048036038101906104269190612a73565b610986565b60405161043891906129d6565b60405180910390f35b34801561044c575f80fd5b506104556109cb565b005b348015610462575f80fd5b5061046b6109de565b005b348015610478575f80fd5b50610493600480360381019061048e9190612b3c565b610a02565b005b3480156104a0575f80fd5b506104a9610a62565b005b3480156104b6575f80fd5b506104bf610af2565b6040516104cc9190612b89565b60405180910390f35b3480156104e0575f80fd5b506104e9610b1a565b6040516104f691906128dc565b60405180910390f35b34801561050a575f80fd5b5061052560048036038101906105209190612b3c565b610baa565b005b348015610532575f80fd5b5061054d60048036038101906105489190612956565b610c4f565b60405161055a91906129ae565b60405180910390f35b34801561056e575f80fd5b5061058960048036038101906105849190612956565b610cc4565b60405161059691906129ae565b60405180910390f35b3480156105aa575f80fd5b506105c560048036038101906105c09190612ba2565b610ce6565b005b3480156105d2575f80fd5b506105ed60048036038101906105e89190612b3c565b610d0b565b005b3480156105fa575f80fd5b50610603610db9565b60405161061091906129d6565b60405180910390f35b348015610624575f80fd5b5061062d610dbf565b005b34801561063a575f80fd5b50610643611306565b60405161065091906129d6565b60405180910390f35b348015610664575f80fd5b5061067f600480360381019061067a9190612bcd565b61130c565b60405161068c91906129d6565b60405180910390f35b3480156106a0575f80fd5b506106a961138e565b6040516106b691906129d6565b60405180910390f35b3480156106ca575f80fd5b506106d3611394565b6040516106e091906129d6565b60405180910390f35b3480156106f4575f80fd5b5061070f600480360381019061070a9190612a73565b61139a565b005b34801561071c575f80fd5b5061072561141c565b60405161073291906129d6565b60405180910390f35b348015610746575f80fd5b5061074f611422565b60405161075c91906129ae565b60405180910390f35b61076d611434565b601e821115801561077f575060638111155b6107be576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107b590612c55565b60405180910390fd5b81600e8190555080600f819055505050565b6060600380546107df90612ca0565b80601f016020809104026020016040519081016040528092919081815260200182805461080b90612ca0565b80156108565780601f1061082d57610100808354040283529160200191610856565b820191905f5260205f20905b81548152906001019060200180831161083957829003601f168201915b5050505050905090565b5f8061086a6114b2565b90506108778185856114b9565b600191505092915050565b5f600254905090565b5f806108956114b2565b90506108a285828561167c565b6108ad858585611707565b60019150509392505050565b60095481565b5f6012905090565b5f806108d16114b2565b90506108f28185856108e3858961130c565b6108ed9190612cfd565b6114b9565b600191505092915050565b5f60105f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff169050919050565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81565b600d60019054906101000a900460ff1681565b5f805f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b6109d3611434565b6109dc5f611fe9565b565b6109e6611434565b5f6109ef610882565b905080600a8190555080600b8190555050565b610a0a611434565b8060115f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b610a6a611434565b5f4711610aac576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610aa390612d7a565b60405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff166108fc4790811502906040515f60405180830381858888f19350505050158015610aef573d5f803e3d5ffd5b50565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060048054610b2990612ca0565b80601f0160208091040260200160405190810160405280929190818152602001828054610b5590612ca0565b8015610ba05780601f10610b7757610100808354040283529160200191610ba0565b820191905f5260205f20905b815481529060010190602001808311610b8357829003601f168201915b5050505050905090565b610bb2611434565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610c41576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c3890612e08565b60405180910390fd5b610c4b82826120ac565b5050565b5f80610c596114b2565b90505f610c66828661130c565b905083811015610cab576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ca290612e96565b60405180910390fd5b610cb882868684036114b9565b60019250505092915050565b5f80610cce6114b2565b9050610cdb818585611707565b600191505092915050565b610cee611434565b670de0b6b3a764000081610d029190612eb4565b600c8190555050565b610d13611434565b8060105f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df782604051610dad91906129ae565b60405180910390a25050565b600a5481565b610dc7611434565b600d5f9054906101000a900460ff1615610e16576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e0d90612f3f565b60405180910390fd5b610e43307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d6009546114b9565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b37f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b8152600401610edf929190612f5d565b6020604051808303815f875af1158015610efb573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610f1f9190612f98565b505f7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610f8a573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610fae9190612fd7565b90505f8173ffffffffffffffffffffffffffffffffffffffff166370a0823160065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518263ffffffff1660e01b815260040161100b9190612b89565b602060405180830381865afa158015611026573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061104a9190613016565b90505f6110766064611068603760095461214a90919063ffffffff16565b61215f90919063ffffffff16565b90505f8083111561121b57611094834761217490919063ffffffff16565b90505f6110bc826110ae868661214a90919063ffffffff16565b61215f90919063ffffffff16565b90506110ea3060065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1683612189565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663fff6cae96040518163ffffffff1660e01b81526004015f604051808303815f87803b158015611150575f80fd5b505af1158015611162573d5f803e3d5ffd5b505050507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663f305d7198330865f876111af610af2565b426040518863ffffffff1660e01b81526004016111d19695949392919061307a565b60606040518083038185885af11580156111ed573d5f803e3d5ffd5b50505050506040513d601f19601f8201168201806040525081019061121291906130d9565b505050506112cb565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663f305d7194730855f80611264610af2565b426040518863ffffffff1660e01b815260040161128696959493929190613129565b60606040518083038185885af11580156112a2573d5f803e3d5ffd5b50505050506040513d601f19601f820116820180604052508101906112c791906130d9565b5050505b6001600d60016101000a81548160ff0219169083151502179055506001600d5f6101000a81548160ff02191690831515021790555050505050565b600f5481565b5f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b600e5481565b600c5481565b6113a2611434565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611410576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611407906131f8565b60405180910390fd5b61141981611fe9565b50565b600b5481565b600d5f9054906101000a900460ff1681565b61143c6114b2565b73ffffffffffffffffffffffffffffffffffffffff1661145a610af2565b73ffffffffffffffffffffffffffffffffffffffff16146114b0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114a790613260565b60405180910390fd5b565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611527576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161151e906132ee565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611595576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161158c9061337c565b60405180910390fd5b8060015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161166f91906129d6565b60405180910390a3505050565b5f611687848461130c565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff811461170157818110156116f3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116ea906133e4565b60405180910390fd5b61170084848484036114b9565b5b50505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611775576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161176c90613472565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036117e3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117da90613500565b60405180910390fd5b5f81036117fa576117f583835f612189565b611fe4565b611802610af2565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156118705750611840610af2565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156118a857505f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156118e2575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156118fb5750600860149054906101000a900460ff16155b15611cc857600d5f9054906101000a900460ff166119ee5760105f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16806119ae575060105f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b6119ed576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119e490613568565b60405180910390fd5b5b60125f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168015611a8b575060115f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15611b3257600a54811115611ad5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611acc906135f6565b60405180910390fd5b600b54611ae183610986565b82611aec9190612cfd565b1115611b2d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b249061365e565b60405180910390fd5b611cc7565b60125f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168015611bcf575060115f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15611c1e57600a54811115611c19576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c10906136ec565b60405180910390fd5b611cc6565b60115f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16611cc557600b54611c7883610986565b82611c839190612cfd565b1115611cc4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cbb9061365e565b60405180910390fd5b5b5b5b5b5f611cd230610986565b90505f8082119050808015611cf35750600d60019054906101000a900460ff165b8015611d0c5750600860149054906101000a900460ff16155b8015611d5f575060125f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b8015611db2575060105f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b8015611e05575060105f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15611e49576001600860146101000a81548160ff021916908315150217905550611e2e836123f5565b5f600860146101000a81548160ff0219169083151502179055505b5f600860149054906101000a900460ff1615905060105f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680611ef8575060105f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b15611f01575f90505b5f8115611fd45760125f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1615611f8657611f7f6064611f71600f548861214a90919063ffffffff16565b61215f90919063ffffffff16565b9050611fb1565b611fae6064611fa0600e548861214a90919063ffffffff16565b61215f90919063ffffffff16565b90505b5f811115611fc557611fc4873083612189565b5b8085611fd1919061370a565b94505b611fdf878787612189565b505050505b505050565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508160055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b8060125f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b5f81836121579190612eb4565b905092915050565b5f818361216c919061376a565b905092915050565b5f8183612181919061370a565b905092915050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036121f7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121ee90613472565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612265576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161225c90613500565b60405180910390fd5b61227083838361257f565b5f805f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050818110156122f3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122ea9061380a565b60405180910390fd5b8181035f808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550815f808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825401925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516123dc91906129d6565b60405180910390a36123ef848484612584565b50505050565b5f6123ff30610986565b90505f80820361241057505061257c565b5f600f54600e546124219190612cfd565b0361249b575f821180156124365750600c5482105b1561244357819050612496565b5f61246c606461245e600f548761214a90919063ffffffff16565b61215f90919063ffffffff16565b9050808461247a919061370a565b9350600c5484111561249057600c549150612494565b8391505b505b612570565b5f821180156124be57506124bb6002600c5461215f90919063ffffffff16565b82105b156124ca57505061257c565b5f821180156124ed57506124ea6002600c5461215f90919063ffffffff16565b82115b80156124fa5750600c5482105b1561251c576125156002600c5461215f90919063ffffffff16565b905061256f565b5f6125456064612537600f548761214a90919063ffffffff16565b61215f90919063ffffffff16565b90508084612553919061370a565b9350600c5484111561256957600c54915061256d565b8391505b505b5b61257981612589565b50505b50565b505050565b505050565b5f600267ffffffffffffffff8111156125a5576125a4613828565b5b6040519080825280602002602001820160405280156125d35781602001602082028036833780820191505090505b50905030815f815181106125ea576125e9613855565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561268d573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906126b19190612fd7565b816001815181106126c5576126c4613855565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061272a307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d846114b9565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8460085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518663ffffffff1660e01b81526004016127ac959493929190613939565b5f604051808303815f87803b1580156127c3575f80fd5b505af11580156127d5573d5f803e3d5ffd5b505050505050565b5f80fd5b5f819050919050565b6127f3816127e1565b81146127fd575f80fd5b50565b5f8135905061280e816127ea565b92915050565b5f806040838503121561282a576128296127dd565b5b5f61283785828601612800565b925050602061284885828601612800565b9150509250929050565b5f81519050919050565b5f82825260208201905092915050565b5f5b8381101561288957808201518184015260208101905061286e565b5f8484015250505050565b5f601f19601f8301169050919050565b5f6128ae82612852565b6128b8818561285c565b93506128c881856020860161286c565b6128d181612894565b840191505092915050565b5f6020820190508181035f8301526128f481846128a4565b905092915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f612925826128fc565b9050919050565b6129358161291b565b811461293f575f80fd5b50565b5f813590506129508161292c565b92915050565b5f806040838503121561296c5761296b6127dd565b5b5f61297985828601612942565b925050602061298a85828601612800565b9150509250929050565b5f8115159050919050565b6129a881612994565b82525050565b5f6020820190506129c15f83018461299f565b92915050565b6129d0816127e1565b82525050565b5f6020820190506129e95f8301846129c7565b92915050565b5f805f60608486031215612a0657612a056127dd565b5b5f612a1386828701612942565b9350506020612a2486828701612942565b9250506040612a3586828701612800565b9150509250925092565b5f60ff82169050919050565b612a5481612a3f565b82525050565b5f602082019050612a6d5f830184612a4b565b92915050565b5f60208284031215612a8857612a876127dd565b5b5f612a9584828501612942565b91505092915050565b5f819050919050565b5f612ac1612abc612ab7846128fc565b612a9e565b6128fc565b9050919050565b5f612ad282612aa7565b9050919050565b5f612ae382612ac8565b9050919050565b612af381612ad9565b82525050565b5f602082019050612b0c5f830184612aea565b92915050565b612b1b81612994565b8114612b25575f80fd5b50565b5f81359050612b3681612b12565b92915050565b5f8060408385031215612b5257612b516127dd565b5b5f612b5f85828601612942565b9250506020612b7085828601612b28565b9150509250929050565b612b838161291b565b82525050565b5f602082019050612b9c5f830184612b7a565b92915050565b5f60208284031215612bb757612bb66127dd565b5b5f612bc484828501612800565b91505092915050565b5f8060408385031215612be357612be26127dd565b5b5f612bf085828601612942565b9250506020612c0185828601612942565b9150509250929050565b7f466565732063616e6e6f742065786365656420333025000000000000000000005f82015250565b5f612c3f60168361285c565b9150612c4a82612c0b565b602082019050919050565b5f6020820190508181035f830152612c6c81612c33565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f6002820490506001821680612cb757607f821691505b602082108103612cca57612cc9612c73565b5b50919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f612d07826127e1565b9150612d12836127e1565b9250828201905080821115612d2a57612d29612cd0565b5b92915050565b7f546f6b656e3a206e6f2045544820746f20636c656172000000000000000000005f82015250565b5f612d6460168361285c565b9150612d6f82612d30565b602082019050919050565b5f6020820190508181035f830152612d9181612d58565b9050919050565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d205f8201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000602082015250565b5f612df260398361285c565b9150612dfd82612d98565b604082019050919050565b5f6020820190508181035f830152612e1f81612de6565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f775f8201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b5f612e8060258361285c565b9150612e8b82612e26565b604082019050919050565b5f6020820190508181035f830152612ead81612e74565b9050919050565b5f612ebe826127e1565b9150612ec9836127e1565b9250828202612ed7816127e1565b91508282048414831517612eee57612eed612cd0565b5b5092915050565b7f54726164696e6720697320616c7265616479206f70656e0000000000000000005f82015250565b5f612f2960178361285c565b9150612f3482612ef5565b602082019050919050565b5f6020820190508181035f830152612f5681612f1d565b9050919050565b5f604082019050612f705f830185612b7a565b612f7d60208301846129c7565b9392505050565b5f81519050612f9281612b12565b92915050565b5f60208284031215612fad57612fac6127dd565b5b5f612fba84828501612f84565b91505092915050565b5f81519050612fd18161292c565b92915050565b5f60208284031215612fec57612feb6127dd565b5b5f612ff984828501612fc3565b91505092915050565b5f81519050613010816127ea565b92915050565b5f6020828403121561302b5761302a6127dd565b5b5f61303884828501613002565b91505092915050565b5f819050919050565b5f61306461305f61305a84613041565b612a9e565b6127e1565b9050919050565b6130748161304a565b82525050565b5f60c08201905061308d5f830189612b7a565b61309a60208301886129c7565b6130a7604083018761306b565b6130b460608301866129c7565b6130c16080830185612b7a565b6130ce60a08301846129c7565b979650505050505050565b5f805f606084860312156130f0576130ef6127dd565b5b5f6130fd86828701613002565b935050602061310e86828701613002565b925050604061311f86828701613002565b9150509250925092565b5f60c08201905061313c5f830189612b7a565b61314960208301886129c7565b613156604083018761306b565b613163606083018661306b565b6131706080830185612b7a565b61317d60a08301846129c7565b979650505050505050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f6131e260268361285c565b91506131ed82613188565b604082019050919050565b5f6020820190508181035f83015261320f816131d6565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f61324a60208361285c565b915061325582613216565b602082019050919050565b5f6020820190508181035f8301526132778161323e565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f6132d860248361285c565b91506132e38261327e565b604082019050919050565b5f6020820190508181035f830152613305816132cc565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f61336660228361285c565b91506133718261330c565b604082019050919050565b5f6020820190508181035f8301526133938161335a565b9050919050565b7f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000005f82015250565b5f6133ce601d8361285c565b91506133d98261339a565b602082019050919050565b5f6020820190508181035f8301526133fb816133c2565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f61345c60258361285c565b915061346782613402565b604082019050919050565b5f6020820190508181035f83015261348981613450565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f6134ea60238361285c565b91506134f582613490565b604082019050919050565b5f6020820190508181035f830152613517816134de565b9050919050565b7f54726164696e67206973206e6f74206163746976652e000000000000000000005f82015250565b5f61355260168361285c565b915061355d8261351e565b602082019050919050565b5f6020820190508181035f83015261357f81613546565b9050919050565b7f427579207472616e7366657220616d6f756e74206578636565647320746865205f8201527f6d61785472616e73616374696f6e416d6f756e742e0000000000000000000000602082015250565b5f6135e060358361285c565b91506135eb82613586565b604082019050919050565b5f6020820190508181035f83015261360d816135d4565b9050919050565b7f4d61782077616c6c6574206578636565646564000000000000000000000000005f82015250565b5f61364860138361285c565b915061365382613614565b602082019050919050565b5f6020820190508181035f8301526136758161363c565b9050919050565b7f53656c6c207472616e7366657220616d6f756e742065786365656473207468655f8201527f206d61785472616e73616374696f6e416d6f756e742e00000000000000000000602082015250565b5f6136d660368361285c565b91506136e18261367c565b604082019050919050565b5f6020820190508181035f830152613703816136ca565b9050919050565b5f613714826127e1565b915061371f836127e1565b925082820390508181111561373757613736612cd0565b5b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f613774826127e1565b915061377f836127e1565b92508261378f5761378e61373d565b5b828204905092915050565b7f45524332303a207472616e7366657220616d6f756e74206578636565647320625f8201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b5f6137f460268361285c565b91506137ff8261379a565b604082019050919050565b5f6020820190508181035f830152613821816137e8565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b6138b48161291b565b82525050565b5f6138c583836138ab565b60208301905092915050565b5f602082019050919050565b5f6138e782613882565b6138f1818561388c565b93506138fc8361389c565b805f5b8381101561392c57815161391388826138ba565b975061391e836138d1565b9250506001810190506138ff565b5085935050505092915050565b5f60a08201905061394c5f8301886129c7565b613959602083018761306b565b818103604083015261396b81866138dd565b905061397a6060830185612b7a565b61398760808301846129c7565b969550505050505056fea264697066735822122042e8a4e8423dbfb8077149bba925889d32e2f5474561fba2db3fde016d1e4f3b64736f6c63430008150033

Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)

00000000000000000000000000ecc8531b36e98980718faddd9a212d03cf5855

-----Decoded View---------------
Arg [0] : wallet (address): 0x00ecC8531b36e98980718fadDd9a212d03CF5855

-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 00000000000000000000000000ecc8531b36e98980718faddd9a212d03cf5855


Deployed Bytecode Sourcemap

14940:9388:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22578:211;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;9964:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10896:201;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10285:108;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11105:295;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15386:49;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10184:93;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11408:238;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19175:126;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15022:52;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15637:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10401:127;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9040:103;;;;;;;;;;;;;:::i;:::-;;22185:193;;;;;;;;;;;;;:::i;:::-;;18343:167;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;22386:184;;;;;;;;;;;;;:::i;:::-;;8805:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10072:104;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18708:265;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11654:436;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10536:193;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22797:127;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18518:182;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15442:49;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17197:1138;;;;;;;;;;;;;:::i;:::-;;15710:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10737:151;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15677:26;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15543:47;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9151:201;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15498:38;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15599:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22578:211;8764:13;:11;:13::i;:::-;22678:2:::1;22667:7;:13;;:31;;;;;22696:2;22684:8;:14;;22667:31;22659:66;;;;;;;;;;;;:::i;:::-;;;;;;;;;22745:7;22736:6;:16;;;;22773:8;22763:7;:18;;;;22578:211:::0;;:::o;9964:100::-;10018:13;10051:5;10044:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9964:100;:::o;10896:201::-;10979:4;10996:13;11012:12;:10;:12::i;:::-;10996:28;;11035:32;11044:5;11051:7;11060:6;11035:8;:32::i;:::-;11085:4;11078:11;;;10896:201;;;;:::o;10285:108::-;10346:7;10373:12;;10366:19;;10285:108;:::o;11105:295::-;11236:4;11253:15;11271:12;:10;:12::i;:::-;11253:30;;11294:38;11310:4;11316:7;11325:6;11294:15;:38::i;:::-;11343:27;11353:4;11359:2;11363:6;11343:9;:27::i;:::-;11388:4;11381:11;;;11105:295;;;;;:::o;15386:49::-;;;;:::o;10184:93::-;10242:5;10267:2;10260:9;;10184:93;:::o;11408:238::-;11496:4;11513:13;11529:12;:10;:12::i;:::-;11513:28;;11552:64;11561:5;11568:7;11605:10;11577:25;11587:5;11594:7;11577:9;:25::i;:::-;:38;;;;:::i;:::-;11552:8;:64::i;:::-;11634:4;11627:11;;;11408:238;;;;:::o;19175:126::-;19241:4;19265:19;:28;19285:7;19265:28;;;;;;;;;;;;;;;;;;;;;;;;;19258:35;;19175:126;;;:::o;15022:52::-;;;:::o;15637:31::-;;;;;;;;;;;;;:::o;10401:127::-;10475:7;10502:9;:18;10512:7;10502:18;;;;;;;;;;;;;;;;10495:25;;10401:127;;;:::o;9040:103::-;8764:13;:11;:13::i;:::-;9105:30:::1;9132:1;9105:18;:30::i;:::-;9040:103::o:0;22185:193::-;8764:13;:11;:13::i;:::-;22238:25:::1;22266:13;:11;:13::i;:::-;22238:41;;22313:17;22290:20;:40;;;;22353:17;22341:9;:29;;;;22227:151;22185:193::o:0;18343:167::-;8764:13;:11;:13::i;:::-;18498:4:::1;18456:31;:39;18488:6;18456:39;;;;;;;;;;;;;;;;:46;;;;;;;;;;;;;;;;;;18343:167:::0;;:::o;22386:184::-;8764:13;:11;:13::i;:::-;22472:1:::1;22448:21;:25;22440:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;22519:10;22511:28;;:51;22540:21;22511:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;22386:184::o:0;8805:87::-;8851:7;8878:6;;;;;;;;;;;8871:13;;8805:87;:::o;10072:104::-;10128:13;10161:7;10154:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10072:104;:::o;18708:265::-;8764:13;:11;:13::i;:::-;18838::::1;;;;;;;;;;;18830:21;;:4;:21;;::::0;18822:91:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;18924:41;18953:4;18959:5;18924:28;:41::i;:::-;18708:265:::0;;:::o;11654:436::-;11747:4;11764:13;11780:12;:10;:12::i;:::-;11764:28;;11803:24;11830:25;11840:5;11847:7;11830:9;:25::i;:::-;11803:52;;11894:15;11874:16;:35;;11866:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;11987:60;11996:5;12003:7;12031:15;12012:16;:34;11987:8;:60::i;:::-;12078:4;12071:11;;;;11654:436;;;;:::o;10536:193::-;10615:4;10632:13;10648:12;:10;:12::i;:::-;10632:28;;10671;10681:5;10688:2;10692:6;10671:9;:28::i;:::-;10717:4;10710:11;;;10536:193;;;;:::o;22797:127::-;8764:13;:11;:13::i;:::-;22907:8:::1;22896:7;:20;;;;:::i;:::-;22875:18;:41;;;;22797:127:::0;:::o;18518:182::-;8764:13;:11;:13::i;:::-;18634:8:::1;18603:19;:28;18623:7;18603:28;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;18674:7;18658:34;;;18683:8;18658:34;;;;;;:::i;:::-;;;;;;;;18518:182:::0;;:::o;15442:49::-;;;;:::o;17197:1138::-;8764:13;:11;:13::i;:::-;17261:11:::1;;;;;;;;;;;17260:12;17252:47;;;;;;;;;;;;:::i;:::-;;;;;;;;;17310:70;17327:4;17342:16;17361:18;;17310:8;:70::i;:::-;17398:13;;;;;;;;;;;17391:29;;;17429:16;17448:14;17391:72;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;17474:19;17496:16;:21;;;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;17474:45;;17530:19;17559:11;17552:29;;;17582:13;;;;;;;;;;;17552:44;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;17530:66;;17607:21;17631:35;17662:3;17631:26;17654:2;17631:18;;:22;;:26;;;;:::i;:::-;:30;;:35;;;;:::i;:::-;17607:59;;17668:24;17721:1:::0;17707:11:::1;:15;17703:567;;;17744:38;17770:11;17744:21;:25;;:38;;;;:::i;:::-;17725:57;;17793:18;17814:52;17849:16;17814:30;17832:11;17814:13;:17;;:30;;;;:::i;:::-;:34;;:52;;;;:::i;:::-;17793:73;;17877:57;17901:4;17908:13;;;;;;;;;;;17923:10;17877:15;:57::i;:::-;17960:13;;;;;;;;;;;17945:34;;;:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;17992:16;:32;;;18032:16;18058:4;18065:13;18080:1;18083:16;18101:7;:5;:7::i;:::-;18110:15;17992:134;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;17724:404;17703:567;;;18144:16;:32;;;18184:21;18215:4;18222:13;18237:1;18240::::0;18243:7:::1;:5;:7::i;:::-;18252:15;18144:124;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;17703:567;18294:4;18280:11;;:18;;;;;;;;;;;;;;;;;;18323:4;18309:11;;:18;;;;;;;;;;;;;;;;;;17241:1094;;;;17197:1138::o:0;15710:27::-;;;;:::o;10737:151::-;10826:7;10853:11;:18;10865:5;10853:18;;;;;;;;;;;;;;;:27;10872:7;10853:27;;;;;;;;;;;;;;;;10846:34;;10737:151;;;;:::o;15677:26::-;;;;:::o;15543:47::-;;;;:::o;9151:201::-;8764:13;:11;:13::i;:::-;9260:1:::1;9240:22;;:8;:22;;::::0;9232:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;9316:28;9335:8;9316:18;:28::i;:::-;9151:201:::0;:::o;15498:38::-;;;;:::o;15599:31::-;;;;;;;;;;;;;:::o;8900:132::-;8975:12;:10;:12::i;:::-;8964:23;;:7;:5;:7::i;:::-;:23;;;8956:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;8900:132::o;449:98::-;502:7;529:10;522:17;;449:98;:::o;13827:380::-;13980:1;13963:19;;:5;:19;;;13955:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;14061:1;14042:21;;:7;:21;;;14034:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;14145:6;14115:11;:18;14127:5;14115:18;;;;;;;;;;;;;;;:27;14134:7;14115:27;;;;;;;;;;;;;;;:36;;;;14183:7;14167:32;;14176:5;14167:32;;;14192:6;14167:32;;;;;;:::i;:::-;;;;;;;;13827:380;;;:::o;14215:453::-;14350:24;14377:25;14387:5;14394:7;14377:9;:25::i;:::-;14350:52;;14437:17;14417:16;:37;14413:248;;14499:6;14479:16;:26;;14471:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;14583:51;14592:5;14599:7;14627:6;14608:16;:25;14583:8;:51::i;:::-;14413:248;14339:329;14215:453;;;:::o;19309:2379::-;19425:1;19409:18;;:4;:18;;;19401:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;19502:1;19488:16;;:2;:16;;;19480:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;19571:1;19561:6;:11;19557:93;;19589:28;19605:4;19611:2;19615:1;19589:15;:28::i;:::-;19632:7;;19557:93;19680:7;:5;:7::i;:::-;19672:15;;:4;:15;;;;:32;;;;;19697:7;:5;:7::i;:::-;19691:13;;:2;:13;;;;19672:32;:52;;;;;19722:1;19708:16;;:2;:16;;;;19672:52;:77;;;;;19742:6;19728:21;;:2;:21;;;;19672:77;:90;;;;;19754:8;;;;;;;;;;;19753:9;19672:90;19668:1060;;;19790:11;;;;;;;;;;;19785:148;;19834:19;:25;19854:4;19834:25;;;;;;;;;;;;;;;;;;;;;;;;;:52;;;;19863:19;:23;19883:2;19863:23;;;;;;;;;;;;;;;;;;;;;;;;;19834:52;19826:87;;;;;;;;;;;;:::i;:::-;;;;;;;;;19785:148;19957:25;:31;19983:4;19957:31;;;;;;;;;;;;;;;;;;;;;;;;;:71;;;;;19993:31;:35;20025:2;19993:35;;;;;;;;;;;;;;;;;;;;;;;;;19992:36;19957:71;19953:760;;;20089:20;;20079:6;:30;;20071:96;;;;;;;;;;;;:::i;:::-;;;;;;;;;20224:9;;20207:13;20217:2;20207:9;:13::i;:::-;20198:6;:22;;;;:::i;:::-;:35;;20190:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;19953:760;;;20306:25;:29;20332:2;20306:29;;;;;;;;;;;;;;;;;;;;;;;;;:71;;;;;20340:31;:37;20372:4;20340:37;;;;;;;;;;;;;;;;;;;;;;;;;20339:38;20306:71;20302:411;;;20420:20;;20410:6;:30;;20402:97;;;;;;;;;;;;:::i;:::-;;;;;;;;;20302:411;;;20566:31;:35;20598:2;20566:35;;;;;;;;;;;;;;;;;;;;;;;;;20561:152;;20660:9;;20643:13;20653:2;20643:9;:13::i;:::-;20634:6;:22;;;;:::i;:::-;:35;;20626:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;20561:152;20302:411;19953:760;19668:1060;20740:28;20771:24;20789:4;20771:9;:24::i;:::-;20740:55;;20808:12;20846:1;20823:20;:24;20808:39;;20864:7;:22;;;;;20875:11;;;;;;;;;;;20864:22;:35;;;;;20891:8;;;;;;;;;;;20890:9;20864:35;:71;;;;;20904:25;:31;20930:4;20904:31;;;;;;;;;;;;;;;;;;;;;;;;;20903:32;20864:71;:101;;;;;20940:19;:25;20960:4;20940:25;;;;;;;;;;;;;;;;;;;;;;;;;20939:26;20864:101;:129;;;;;20970:19;:23;20990:2;20970:23;;;;;;;;;;;;;;;;;;;;;;;;;20969:24;20864:129;20860:239;;;21021:4;21010:8;;:15;;;;;;;;;;;;;;;;;;21040:16;21049:6;21040:8;:16::i;:::-;21082:5;21071:8;;:16;;;;;;;;;;;;;;;;;;20860:239;21111:12;21127:8;;;;;;;;;;;21126:9;21111:24;;21152:19;:25;21172:4;21152:25;;;;;;;;;;;;;;;;;;;;;;;;;:52;;;;21181:19;:23;21201:2;21181:23;;;;;;;;;;;;;;;;;;;;;;;;;21152:52;21148:100;;;21231:5;21221:15;;21148:100;21260:12;21293:7;21289:348;;;21321:25;:29;21347:2;21321:29;;;;;;;;;;;;;;;;;;;;;;;;;21317:193;;;21378:28;21402:3;21378:19;21389:7;;21378:6;:10;;:19;;;;:::i;:::-;:23;;:28;;;;:::i;:::-;21371:35;;21317:193;;;21467:27;21490:3;21467:18;21478:6;;21467;:10;;:18;;;;:::i;:::-;:22;;:27;;;;:::i;:::-;21460:34;;21317:193;21533:1;21526:4;:8;21522:83;;;21551:42;21567:4;21581;21588;21551:15;:42::i;:::-;21522:83;21625:4;21615:14;;;;;:::i;:::-;;;21289:348;21647:33;21663:4;21669:2;21673:6;21647:15;:33::i;:::-;19388:2300;;;;19309:2379;;;;:::o;9360:191::-;9434:16;9453:6;;;;;;;;;;;9434:25;;9479:8;9470:6;;:17;;;;;;;;;;;;;;;;;;9534:8;9503:40;;9524:8;9503:40;;;;;;;;;;;;9423:128;9360:191;:::o;18981:186::-;19098:5;19064:25;:31;19090:4;19064:31;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;19153:5;19119:40;;19147:4;19119:40;;;;;;;;;;;;18981:186;;:::o;6601:98::-;6659:7;6690:1;6686;:5;;;;:::i;:::-;6679:12;;6601:98;;;;:::o;6707:::-;6765:7;6796:1;6792;:5;;;;:::i;:::-;6785:12;;6707:98;;;;:::o;6495:::-;6553:7;6584:1;6580;:5;;;;:::i;:::-;6573:12;;6495:98;;;;:::o;12098:675::-;12245:1;12229:18;;:4;:18;;;12221:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;12322:1;12308:16;;:2;:16;;;12300:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;12377:38;12398:4;12404:2;12408:6;12377:20;:38::i;:::-;12428:19;12450:9;:15;12460:4;12450:15;;;;;;;;;;;;;;;;12428:37;;12499:6;12484:11;:21;;12476:72;;;;;;;;;;;;:::i;:::-;;;;;;;;;12616:6;12602:11;:20;12584:9;:15;12594:4;12584:15;;;;;;;;;;;;;;;:38;;;;12654:6;12637:9;:13;12647:2;12637:13;;;;;;;;;;;;;;;;:23;;;;;;;;;;;12704:2;12689:26;;12698:4;12689:26;;;12708:6;12689:26;;;;;;:::i;:::-;;;;;;;;12728:37;12748:4;12754:2;12758:6;12728:19;:37::i;:::-;12210:563;12098:675;;;:::o;22932:1393::-;22985:23;23011:24;23029:4;23011:9;:24::i;:::-;22985:50;;23046:20;23103:1;23084:15;:20;23080:59;;23121:7;;;;23080:59;23171:1;23159:7;;23152:6;;:14;;;;:::i;:::-;23151:21;23147:1130;;23208:1;23190:15;:19;:59;;;;;23231:18;;23213:15;:36;23190:59;23187:443;;;23281:15;23266:30;;23187:443;;;23338:21;23362:28;23386:3;23362:19;23373:7;;23362:6;:10;;:19;;;;:::i;:::-;:23;;:28;;;;:::i;:::-;23338:52;;23415:13;23405:23;;;;;:::i;:::-;;;23456:18;;23447:6;:27;23443:176;;;23510:18;;23495:33;;23443:176;;;23597:6;23582:21;;23443:176;23323:307;23187:443;23147:1130;;;23684:1;23666:15;:19;:66;;;;;23707:25;23730:1;23707:18;;:22;;:25;;;;:::i;:::-;23689:15;:43;23666:66;23663:607;;;23749:7;;;;23663:607;23804:1;23786:15;:19;:66;;;;;23827:25;23850:1;23827:18;;:22;;:25;;;;:::i;:::-;23809:15;:43;23786:66;:106;;;;;23874:18;;23856:15;:36;23786:106;23782:488;;;23924:25;23947:1;23924:18;;:22;;:25;;;;:::i;:::-;23909:40;;23782:488;;;23991:21;24015:28;24039:3;24015:19;24026:7;;24015:6;:10;;:19;;;;:::i;:::-;:23;;:28;;;;:::i;:::-;23991:52;;24068:13;24058:23;;;;;:::i;:::-;;;24109:18;;24100:6;:27;24096:163;;;24163:18;;24148:33;;24096:163;;;24237:6;24222:21;;24096:163;23976:294;23782:488;23147:1130;24287:30;24304:12;24287:16;:30::i;:::-;22974:1351;;22932:1393;;:::o;14676:125::-;;;;:::o;14809:124::-;;;;:::o;21696:482::-;21764:21;21802:1;21788:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21764:40;;21833:4;21815;21820:1;21815:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;21859:16;:21;;;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;21849:4;21854:1;21849:7;;;;;;;;:::i;:::-;;;;;;;:33;;;;;;;;;;;21895:63;21912:4;21927:16;21946:11;21895:8;:63::i;:::-;21971:16;:67;;;22053:11;22079:1;22095:4;22114:15;;;;;;;;;;;22144;21971:199;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21751:427;21696:482;:::o;88:117:1:-;197:1;194;187:12;334:77;371:7;400:5;389:16;;334:77;;;:::o;417:122::-;490:24;508:5;490:24;:::i;:::-;483:5;480:35;470:63;;529:1;526;519:12;470:63;417:122;:::o;545:139::-;591:5;629:6;616:20;607:29;;645:33;672:5;645:33;:::i;:::-;545:139;;;;:::o;690:474::-;758:6;766;815:2;803:9;794:7;790:23;786:32;783:119;;;821:79;;:::i;:::-;783:119;941:1;966:53;1011:7;1002:6;991:9;987:22;966:53;:::i;:::-;956:63;;912:117;1068:2;1094:53;1139:7;1130:6;1119:9;1115:22;1094:53;:::i;:::-;1084:63;;1039:118;690:474;;;;;:::o;1170:99::-;1222:6;1256:5;1250:12;1240:22;;1170:99;;;:::o;1275:169::-;1359:11;1393:6;1388:3;1381:19;1433:4;1428:3;1424:14;1409:29;;1275:169;;;;:::o;1450:246::-;1531:1;1541:113;1555:6;1552:1;1549:13;1541:113;;;1640:1;1635:3;1631:11;1625:18;1621:1;1616:3;1612:11;1605:39;1577:2;1574:1;1570:10;1565:15;;1541:113;;;1688:1;1679:6;1674:3;1670:16;1663:27;1512:184;1450:246;;;:::o;1702:102::-;1743:6;1794:2;1790:7;1785:2;1778:5;1774:14;1770:28;1760:38;;1702:102;;;:::o;1810:377::-;1898:3;1926:39;1959:5;1926:39;:::i;:::-;1981:71;2045:6;2040:3;1981:71;:::i;:::-;1974:78;;2061:65;2119:6;2114:3;2107:4;2100:5;2096:16;2061:65;:::i;:::-;2151:29;2173:6;2151:29;:::i;:::-;2146:3;2142:39;2135:46;;1902:285;1810:377;;;;:::o;2193:313::-;2306:4;2344:2;2333:9;2329:18;2321:26;;2393:9;2387:4;2383:20;2379:1;2368:9;2364:17;2357:47;2421:78;2494:4;2485:6;2421:78;:::i;:::-;2413:86;;2193:313;;;;:::o;2512:126::-;2549:7;2589:42;2582:5;2578:54;2567:65;;2512:126;;;:::o;2644:96::-;2681:7;2710:24;2728:5;2710:24;:::i;:::-;2699:35;;2644:96;;;:::o;2746:122::-;2819:24;2837:5;2819:24;:::i;:::-;2812:5;2809:35;2799:63;;2858:1;2855;2848:12;2799:63;2746:122;:::o;2874:139::-;2920:5;2958:6;2945:20;2936:29;;2974:33;3001:5;2974:33;:::i;:::-;2874:139;;;;:::o;3019:474::-;3087:6;3095;3144:2;3132:9;3123:7;3119:23;3115:32;3112:119;;;3150:79;;:::i;:::-;3112:119;3270:1;3295:53;3340:7;3331:6;3320:9;3316:22;3295:53;:::i;:::-;3285:63;;3241:117;3397:2;3423:53;3468:7;3459:6;3448:9;3444:22;3423:53;:::i;:::-;3413:63;;3368:118;3019:474;;;;;:::o;3499:90::-;3533:7;3576:5;3569:13;3562:21;3551:32;;3499:90;;;:::o;3595:109::-;3676:21;3691:5;3676:21;:::i;:::-;3671:3;3664:34;3595:109;;:::o;3710:210::-;3797:4;3835:2;3824:9;3820:18;3812:26;;3848:65;3910:1;3899:9;3895:17;3886:6;3848:65;:::i;:::-;3710:210;;;;:::o;3926:118::-;4013:24;4031:5;4013:24;:::i;:::-;4008:3;4001:37;3926:118;;:::o;4050:222::-;4143:4;4181:2;4170:9;4166:18;4158:26;;4194:71;4262:1;4251:9;4247:17;4238:6;4194:71;:::i;:::-;4050:222;;;;:::o;4278:619::-;4355:6;4363;4371;4420:2;4408:9;4399:7;4395:23;4391:32;4388:119;;;4426:79;;:::i;:::-;4388:119;4546:1;4571:53;4616:7;4607:6;4596:9;4592:22;4571:53;:::i;:::-;4561:63;;4517:117;4673:2;4699:53;4744:7;4735:6;4724:9;4720:22;4699:53;:::i;:::-;4689:63;;4644:118;4801:2;4827:53;4872:7;4863:6;4852:9;4848:22;4827:53;:::i;:::-;4817:63;;4772:118;4278:619;;;;;:::o;4903:86::-;4938:7;4978:4;4971:5;4967:16;4956:27;;4903:86;;;:::o;4995:112::-;5078:22;5094:5;5078:22;:::i;:::-;5073:3;5066:35;4995:112;;:::o;5113:214::-;5202:4;5240:2;5229:9;5225:18;5217:26;;5253:67;5317:1;5306:9;5302:17;5293:6;5253:67;:::i;:::-;5113:214;;;;:::o;5333:329::-;5392:6;5441:2;5429:9;5420:7;5416:23;5412:32;5409:119;;;5447:79;;:::i;:::-;5409:119;5567:1;5592:53;5637:7;5628:6;5617:9;5613:22;5592:53;:::i;:::-;5582:63;;5538:117;5333:329;;;;:::o;5668:60::-;5696:3;5717:5;5710:12;;5668:60;;;:::o;5734:142::-;5784:9;5817:53;5835:34;5844:24;5862:5;5844:24;:::i;:::-;5835:34;:::i;:::-;5817:53;:::i;:::-;5804:66;;5734:142;;;:::o;5882:126::-;5932:9;5965:37;5996:5;5965:37;:::i;:::-;5952:50;;5882:126;;;:::o;6014:151::-;6089:9;6122:37;6153:5;6122:37;:::i;:::-;6109:50;;6014:151;;;:::o;6171:181::-;6283:62;6339:5;6283:62;:::i;:::-;6278:3;6271:75;6171:181;;:::o;6358:272::-;6476:4;6514:2;6503:9;6499:18;6491:26;;6527:96;6620:1;6609:9;6605:17;6596:6;6527:96;:::i;:::-;6358:272;;;;:::o;6636:116::-;6706:21;6721:5;6706:21;:::i;:::-;6699:5;6696:32;6686:60;;6742:1;6739;6732:12;6686:60;6636:116;:::o;6758:133::-;6801:5;6839:6;6826:20;6817:29;;6855:30;6879:5;6855:30;:::i;:::-;6758:133;;;;:::o;6897:468::-;6962:6;6970;7019:2;7007:9;6998:7;6994:23;6990:32;6987:119;;;7025:79;;:::i;:::-;6987:119;7145:1;7170:53;7215:7;7206:6;7195:9;7191:22;7170:53;:::i;:::-;7160:63;;7116:117;7272:2;7298:50;7340:7;7331:6;7320:9;7316:22;7298:50;:::i;:::-;7288:60;;7243:115;6897:468;;;;;:::o;7371:118::-;7458:24;7476:5;7458:24;:::i;:::-;7453:3;7446:37;7371:118;;:::o;7495:222::-;7588:4;7626:2;7615:9;7611:18;7603:26;;7639:71;7707:1;7696:9;7692:17;7683:6;7639:71;:::i;:::-;7495:222;;;;:::o;7723:329::-;7782:6;7831:2;7819:9;7810:7;7806:23;7802:32;7799:119;;;7837:79;;:::i;:::-;7799:119;7957:1;7982:53;8027:7;8018:6;8007:9;8003:22;7982:53;:::i;:::-;7972:63;;7928:117;7723:329;;;;:::o;8058:474::-;8126:6;8134;8183:2;8171:9;8162:7;8158:23;8154:32;8151:119;;;8189:79;;:::i;:::-;8151:119;8309:1;8334:53;8379:7;8370:6;8359:9;8355:22;8334:53;:::i;:::-;8324:63;;8280:117;8436:2;8462:53;8507:7;8498:6;8487:9;8483:22;8462:53;:::i;:::-;8452:63;;8407:118;8058:474;;;;;:::o;8538:172::-;8678:24;8674:1;8666:6;8662:14;8655:48;8538:172;:::o;8716:366::-;8858:3;8879:67;8943:2;8938:3;8879:67;:::i;:::-;8872:74;;8955:93;9044:3;8955:93;:::i;:::-;9073:2;9068:3;9064:12;9057:19;;8716:366;;;:::o;9088:419::-;9254:4;9292:2;9281:9;9277:18;9269:26;;9341:9;9335:4;9331:20;9327:1;9316:9;9312:17;9305:47;9369:131;9495:4;9369:131;:::i;:::-;9361:139;;9088:419;;;:::o;9513:180::-;9561:77;9558:1;9551:88;9658:4;9655:1;9648:15;9682:4;9679:1;9672:15;9699:320;9743:6;9780:1;9774:4;9770:12;9760:22;;9827:1;9821:4;9817:12;9848:18;9838:81;;9904:4;9896:6;9892:17;9882:27;;9838:81;9966:2;9958:6;9955:14;9935:18;9932:38;9929:84;;9985:18;;:::i;:::-;9929:84;9750:269;9699:320;;;:::o;10025:180::-;10073:77;10070:1;10063:88;10170:4;10167:1;10160:15;10194:4;10191:1;10184:15;10211:191;10251:3;10270:20;10288:1;10270:20;:::i;:::-;10265:25;;10304:20;10322:1;10304:20;:::i;:::-;10299:25;;10347:1;10344;10340:9;10333:16;;10368:3;10365:1;10362:10;10359:36;;;10375:18;;:::i;:::-;10359:36;10211:191;;;;:::o;10408:172::-;10548:24;10544:1;10536:6;10532:14;10525:48;10408:172;:::o;10586:366::-;10728:3;10749:67;10813:2;10808:3;10749:67;:::i;:::-;10742:74;;10825:93;10914:3;10825:93;:::i;:::-;10943:2;10938:3;10934:12;10927:19;;10586:366;;;:::o;10958:419::-;11124:4;11162:2;11151:9;11147:18;11139:26;;11211:9;11205:4;11201:20;11197:1;11186:9;11182:17;11175:47;11239:131;11365:4;11239:131;:::i;:::-;11231:139;;10958:419;;;:::o;11383:244::-;11523:34;11519:1;11511:6;11507:14;11500:58;11592:27;11587:2;11579:6;11575:15;11568:52;11383:244;:::o;11633:366::-;11775:3;11796:67;11860:2;11855:3;11796:67;:::i;:::-;11789:74;;11872:93;11961:3;11872:93;:::i;:::-;11990:2;11985:3;11981:12;11974:19;;11633:366;;;:::o;12005:419::-;12171:4;12209:2;12198:9;12194:18;12186:26;;12258:9;12252:4;12248:20;12244:1;12233:9;12229:17;12222:47;12286:131;12412:4;12286:131;:::i;:::-;12278:139;;12005:419;;;:::o;12430:224::-;12570:34;12566:1;12558:6;12554:14;12547:58;12639:7;12634:2;12626:6;12622:15;12615:32;12430:224;:::o;12660:366::-;12802:3;12823:67;12887:2;12882:3;12823:67;:::i;:::-;12816:74;;12899:93;12988:3;12899:93;:::i;:::-;13017:2;13012:3;13008:12;13001:19;;12660:366;;;:::o;13032:419::-;13198:4;13236:2;13225:9;13221:18;13213:26;;13285:9;13279:4;13275:20;13271:1;13260:9;13256:17;13249:47;13313:131;13439:4;13313:131;:::i;:::-;13305:139;;13032:419;;;:::o;13457:410::-;13497:7;13520:20;13538:1;13520:20;:::i;:::-;13515:25;;13554:20;13572:1;13554:20;:::i;:::-;13549:25;;13609:1;13606;13602:9;13631:30;13649:11;13631:30;:::i;:::-;13620:41;;13810:1;13801:7;13797:15;13794:1;13791:22;13771:1;13764:9;13744:83;13721:139;;13840:18;;:::i;:::-;13721:139;13505:362;13457:410;;;;:::o;13873:173::-;14013:25;14009:1;14001:6;13997:14;13990:49;13873:173;:::o;14052:366::-;14194:3;14215:67;14279:2;14274:3;14215:67;:::i;:::-;14208:74;;14291:93;14380:3;14291:93;:::i;:::-;14409:2;14404:3;14400:12;14393:19;;14052:366;;;:::o;14424:419::-;14590:4;14628:2;14617:9;14613:18;14605:26;;14677:9;14671:4;14667:20;14663:1;14652:9;14648:17;14641:47;14705:131;14831:4;14705:131;:::i;:::-;14697:139;;14424:419;;;:::o;14849:332::-;14970:4;15008:2;14997:9;14993:18;14985:26;;15021:71;15089:1;15078:9;15074:17;15065:6;15021:71;:::i;:::-;15102:72;15170:2;15159:9;15155:18;15146:6;15102:72;:::i;:::-;14849:332;;;;;:::o;15187:137::-;15241:5;15272:6;15266:13;15257:22;;15288:30;15312:5;15288:30;:::i;:::-;15187:137;;;;:::o;15330:345::-;15397:6;15446:2;15434:9;15425:7;15421:23;15417:32;15414:119;;;15452:79;;:::i;:::-;15414:119;15572:1;15597:61;15650:7;15641:6;15630:9;15626:22;15597:61;:::i;:::-;15587:71;;15543:125;15330:345;;;;:::o;15681:143::-;15738:5;15769:6;15763:13;15754:22;;15785:33;15812:5;15785:33;:::i;:::-;15681:143;;;;:::o;15830:351::-;15900:6;15949:2;15937:9;15928:7;15924:23;15920:32;15917:119;;;15955:79;;:::i;:::-;15917:119;16075:1;16100:64;16156:7;16147:6;16136:9;16132:22;16100:64;:::i;:::-;16090:74;;16046:128;15830:351;;;;:::o;16187:143::-;16244:5;16275:6;16269:13;16260:22;;16291:33;16318:5;16291:33;:::i;:::-;16187:143;;;;:::o;16336:351::-;16406:6;16455:2;16443:9;16434:7;16430:23;16426:32;16423:119;;;16461:79;;:::i;:::-;16423:119;16581:1;16606:64;16662:7;16653:6;16642:9;16638:22;16606:64;:::i;:::-;16596:74;;16552:128;16336:351;;;;:::o;16693:85::-;16738:7;16767:5;16756:16;;16693:85;;;:::o;16784:158::-;16842:9;16875:61;16893:42;16902:32;16928:5;16902:32;:::i;:::-;16893:42;:::i;:::-;16875:61;:::i;:::-;16862:74;;16784:158;;;:::o;16948:147::-;17043:45;17082:5;17043:45;:::i;:::-;17038:3;17031:58;16948:147;;:::o;17101:791::-;17342:4;17380:3;17369:9;17365:19;17357:27;;17394:71;17462:1;17451:9;17447:17;17438:6;17394:71;:::i;:::-;17475:72;17543:2;17532:9;17528:18;17519:6;17475:72;:::i;:::-;17557:80;17633:2;17622:9;17618:18;17609:6;17557:80;:::i;:::-;17647:72;17715:2;17704:9;17700:18;17691:6;17647:72;:::i;:::-;17729:73;17797:3;17786:9;17782:19;17773:6;17729:73;:::i;:::-;17812;17880:3;17869:9;17865:19;17856:6;17812:73;:::i;:::-;17101:791;;;;;;;;;:::o;17898:663::-;17986:6;17994;18002;18051:2;18039:9;18030:7;18026:23;18022:32;18019:119;;;18057:79;;:::i;:::-;18019:119;18177:1;18202:64;18258:7;18249:6;18238:9;18234:22;18202:64;:::i;:::-;18192:74;;18148:128;18315:2;18341:64;18397:7;18388:6;18377:9;18373:22;18341:64;:::i;:::-;18331:74;;18286:129;18454:2;18480:64;18536:7;18527:6;18516:9;18512:22;18480:64;:::i;:::-;18470:74;;18425:129;17898:663;;;;;:::o;18567:807::-;18816:4;18854:3;18843:9;18839:19;18831:27;;18868:71;18936:1;18925:9;18921:17;18912:6;18868:71;:::i;:::-;18949:72;19017:2;19006:9;19002:18;18993:6;18949:72;:::i;:::-;19031:80;19107:2;19096:9;19092:18;19083:6;19031:80;:::i;:::-;19121;19197:2;19186:9;19182:18;19173:6;19121:80;:::i;:::-;19211:73;19279:3;19268:9;19264:19;19255:6;19211:73;:::i;:::-;19294;19362:3;19351:9;19347:19;19338:6;19294:73;:::i;:::-;18567:807;;;;;;;;;:::o;19380:225::-;19520:34;19516:1;19508:6;19504:14;19497:58;19589:8;19584:2;19576:6;19572:15;19565:33;19380:225;:::o;19611:366::-;19753:3;19774:67;19838:2;19833:3;19774:67;:::i;:::-;19767:74;;19850:93;19939:3;19850:93;:::i;:::-;19968:2;19963:3;19959:12;19952:19;;19611:366;;;:::o;19983:419::-;20149:4;20187:2;20176:9;20172:18;20164:26;;20236:9;20230:4;20226:20;20222:1;20211:9;20207:17;20200:47;20264:131;20390:4;20264:131;:::i;:::-;20256:139;;19983:419;;;:::o;20408:182::-;20548:34;20544:1;20536:6;20532:14;20525:58;20408:182;:::o;20596:366::-;20738:3;20759:67;20823:2;20818:3;20759:67;:::i;:::-;20752:74;;20835:93;20924:3;20835:93;:::i;:::-;20953:2;20948:3;20944:12;20937:19;;20596:366;;;:::o;20968:419::-;21134:4;21172:2;21161:9;21157:18;21149:26;;21221:9;21215:4;21211:20;21207:1;21196:9;21192:17;21185:47;21249:131;21375:4;21249:131;:::i;:::-;21241:139;;20968:419;;;:::o;21393:223::-;21533:34;21529:1;21521:6;21517:14;21510:58;21602:6;21597:2;21589:6;21585:15;21578:31;21393:223;:::o;21622:366::-;21764:3;21785:67;21849:2;21844:3;21785:67;:::i;:::-;21778:74;;21861:93;21950:3;21861:93;:::i;:::-;21979:2;21974:3;21970:12;21963:19;;21622:366;;;:::o;21994:419::-;22160:4;22198:2;22187:9;22183:18;22175:26;;22247:9;22241:4;22237:20;22233:1;22222:9;22218:17;22211:47;22275:131;22401:4;22275:131;:::i;:::-;22267:139;;21994:419;;;:::o;22419:221::-;22559:34;22555:1;22547:6;22543:14;22536:58;22628:4;22623:2;22615:6;22611:15;22604:29;22419:221;:::o;22646:366::-;22788:3;22809:67;22873:2;22868:3;22809:67;:::i;:::-;22802:74;;22885:93;22974:3;22885:93;:::i;:::-;23003:2;22998:3;22994:12;22987:19;;22646:366;;;:::o;23018:419::-;23184:4;23222:2;23211:9;23207:18;23199:26;;23271:9;23265:4;23261:20;23257:1;23246:9;23242:17;23235:47;23299:131;23425:4;23299:131;:::i;:::-;23291:139;;23018:419;;;:::o;23443:179::-;23583:31;23579:1;23571:6;23567:14;23560:55;23443:179;:::o;23628:366::-;23770:3;23791:67;23855:2;23850:3;23791:67;:::i;:::-;23784:74;;23867:93;23956:3;23867:93;:::i;:::-;23985:2;23980:3;23976:12;23969:19;;23628:366;;;:::o;24000:419::-;24166:4;24204:2;24193:9;24189:18;24181:26;;24253:9;24247:4;24243:20;24239:1;24228:9;24224:17;24217:47;24281:131;24407:4;24281:131;:::i;:::-;24273:139;;24000:419;;;:::o;24425:224::-;24565:34;24561:1;24553:6;24549:14;24542:58;24634:7;24629:2;24621:6;24617:15;24610:32;24425:224;:::o;24655:366::-;24797:3;24818:67;24882:2;24877:3;24818:67;:::i;:::-;24811:74;;24894:93;24983:3;24894:93;:::i;:::-;25012:2;25007:3;25003:12;24996:19;;24655:366;;;:::o;25027:419::-;25193:4;25231:2;25220:9;25216:18;25208:26;;25280:9;25274:4;25270:20;25266:1;25255:9;25251:17;25244:47;25308:131;25434:4;25308:131;:::i;:::-;25300:139;;25027:419;;;:::o;25452:222::-;25592:34;25588:1;25580:6;25576:14;25569:58;25661:5;25656:2;25648:6;25644:15;25637:30;25452:222;:::o;25680:366::-;25822:3;25843:67;25907:2;25902:3;25843:67;:::i;:::-;25836:74;;25919:93;26008:3;25919:93;:::i;:::-;26037:2;26032:3;26028:12;26021:19;;25680:366;;;:::o;26052:419::-;26218:4;26256:2;26245:9;26241:18;26233:26;;26305:9;26299:4;26295:20;26291:1;26280:9;26276:17;26269:47;26333:131;26459:4;26333:131;:::i;:::-;26325:139;;26052:419;;;:::o;26477:172::-;26617:24;26613:1;26605:6;26601:14;26594:48;26477:172;:::o;26655:366::-;26797:3;26818:67;26882:2;26877:3;26818:67;:::i;:::-;26811:74;;26894:93;26983:3;26894:93;:::i;:::-;27012:2;27007:3;27003:12;26996:19;;26655:366;;;:::o;27027:419::-;27193:4;27231:2;27220:9;27216:18;27208:26;;27280:9;27274:4;27270:20;27266:1;27255:9;27251:17;27244:47;27308:131;27434:4;27308:131;:::i;:::-;27300:139;;27027:419;;;:::o;27452:240::-;27592:34;27588:1;27580:6;27576:14;27569:58;27661:23;27656:2;27648:6;27644:15;27637:48;27452:240;:::o;27698:366::-;27840:3;27861:67;27925:2;27920:3;27861:67;:::i;:::-;27854:74;;27937:93;28026:3;27937:93;:::i;:::-;28055:2;28050:3;28046:12;28039:19;;27698:366;;;:::o;28070:419::-;28236:4;28274:2;28263:9;28259:18;28251:26;;28323:9;28317:4;28313:20;28309:1;28298:9;28294:17;28287:47;28351:131;28477:4;28351:131;:::i;:::-;28343:139;;28070:419;;;:::o;28495:169::-;28635:21;28631:1;28623:6;28619:14;28612:45;28495:169;:::o;28670:366::-;28812:3;28833:67;28897:2;28892:3;28833:67;:::i;:::-;28826:74;;28909:93;28998:3;28909:93;:::i;:::-;29027:2;29022:3;29018:12;29011:19;;28670:366;;;:::o;29042:419::-;29208:4;29246:2;29235:9;29231:18;29223:26;;29295:9;29289:4;29285:20;29281:1;29270:9;29266:17;29259:47;29323:131;29449:4;29323:131;:::i;:::-;29315:139;;29042:419;;;:::o;29467:241::-;29607:34;29603:1;29595:6;29591:14;29584:58;29676:24;29671:2;29663:6;29659:15;29652:49;29467:241;:::o;29714:366::-;29856:3;29877:67;29941:2;29936:3;29877:67;:::i;:::-;29870:74;;29953:93;30042:3;29953:93;:::i;:::-;30071:2;30066:3;30062:12;30055:19;;29714:366;;;:::o;30086:419::-;30252:4;30290:2;30279:9;30275:18;30267:26;;30339:9;30333:4;30329:20;30325:1;30314:9;30310:17;30303:47;30367:131;30493:4;30367:131;:::i;:::-;30359:139;;30086:419;;;:::o;30511:194::-;30551:4;30571:20;30589:1;30571:20;:::i;:::-;30566:25;;30605:20;30623:1;30605:20;:::i;:::-;30600:25;;30649:1;30646;30642:9;30634:17;;30673:1;30667:4;30664:11;30661:37;;;30678:18;;:::i;:::-;30661:37;30511:194;;;;:::o;30711:180::-;30759:77;30756:1;30749:88;30856:4;30853:1;30846:15;30880:4;30877:1;30870:15;30897:185;30937:1;30954:20;30972:1;30954:20;:::i;:::-;30949:25;;30988:20;31006:1;30988:20;:::i;:::-;30983:25;;31027:1;31017:35;;31032:18;;:::i;:::-;31017:35;31074:1;31071;31067:9;31062:14;;30897:185;;;;:::o;31088:225::-;31228:34;31224:1;31216:6;31212:14;31205:58;31297:8;31292:2;31284:6;31280:15;31273:33;31088:225;:::o;31319:366::-;31461:3;31482:67;31546:2;31541:3;31482:67;:::i;:::-;31475:74;;31558:93;31647:3;31558:93;:::i;:::-;31676:2;31671:3;31667:12;31660:19;;31319:366;;;:::o;31691:419::-;31857:4;31895:2;31884:9;31880:18;31872:26;;31944:9;31938:4;31934:20;31930:1;31919:9;31915:17;31908:47;31972:131;32098:4;31972:131;:::i;:::-;31964:139;;31691:419;;;:::o;32116:180::-;32164:77;32161:1;32154:88;32261:4;32258:1;32251:15;32285:4;32282:1;32275:15;32302:180;32350:77;32347:1;32340:88;32447:4;32444:1;32437:15;32471:4;32468:1;32461:15;32488:114;32555:6;32589:5;32583:12;32573:22;;32488:114;;;:::o;32608:184::-;32707:11;32741:6;32736:3;32729:19;32781:4;32776:3;32772:14;32757:29;;32608:184;;;;:::o;32798:132::-;32865:4;32888:3;32880:11;;32918:4;32913:3;32909:14;32901:22;;32798:132;;;:::o;32936:108::-;33013:24;33031:5;33013:24;:::i;:::-;33008:3;33001:37;32936:108;;:::o;33050:179::-;33119:10;33140:46;33182:3;33174:6;33140:46;:::i;:::-;33218:4;33213:3;33209:14;33195:28;;33050:179;;;;:::o;33235:113::-;33305:4;33337;33332:3;33328:14;33320:22;;33235:113;;;:::o;33384:732::-;33503:3;33532:54;33580:5;33532:54;:::i;:::-;33602:86;33681:6;33676:3;33602:86;:::i;:::-;33595:93;;33712:56;33762:5;33712:56;:::i;:::-;33791:7;33822:1;33807:284;33832:6;33829:1;33826:13;33807:284;;;33908:6;33902:13;33935:63;33994:3;33979:13;33935:63;:::i;:::-;33928:70;;34021:60;34074:6;34021:60;:::i;:::-;34011:70;;33867:224;33854:1;33851;33847:9;33842:14;;33807:284;;;33811:14;34107:3;34100:10;;33508:608;;;33384:732;;;;:::o;34122:831::-;34385:4;34423:3;34412:9;34408:19;34400:27;;34437:71;34505:1;34494:9;34490:17;34481:6;34437:71;:::i;:::-;34518:80;34594:2;34583:9;34579:18;34570:6;34518:80;:::i;:::-;34645:9;34639:4;34635:20;34630:2;34619:9;34615:18;34608:48;34673:108;34776:4;34767:6;34673:108;:::i;:::-;34665:116;;34791:72;34859:2;34848:9;34844:18;34835:6;34791:72;:::i;:::-;34873:73;34941:3;34930:9;34926:19;34917:6;34873:73;:::i;:::-;34122:831;;;;;;;;:::o

Swarm Source

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