ETH Price: $3,102.90 (+1.13%)
Gas: 10 Gwei

Token

ApePudgyCloneXAzukiMiladyMferInu (NFT)
 

Overview

Max Total Supply

55,000,000 NFT

Holders

717

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
0.852322377841021111 NFT

Value
$0.00
0x2fc529acc616405bb0ac0b241aa5d29effb19c1d
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:
NFT

Compiler Version
v0.8.22+commit.4fc1097e

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2024-01-16
*/

/**

Twitter - x.com/NFTAPCAMInu
Web - apcaminu.xyz
TG - t.me/APCAMInu

*/

pragma solidity ^0.8.20;
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;
    }
}

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

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

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

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

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 per(uint256 a, uint256 b) internal pure returns (uint256) {
        require(b <= 100, "Percentage must be between 0 and 100");
        return a * b / 100;
    }

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

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 NFT is ERC20, Ownable {
    using SafeMath for uint256;

    IUniswapV2Router02 public immutable _uniswapV2Router;
    address public uniswapV2Pair;
    address private deployerWallet;
    address private marketingWallet;
    address private constant deadAddress = address(0xdead);

    bool private swapping;

    string private constant _name = "ApePudgyCloneXAzukiMiladyMferInu";
    string private constant _symbol = "NFT";

    uint256 public initialTotalSupply = 100 * 1e6 * 1e18;
    uint256 public maxWallet = (initialTotalSupply * 2)/100;
    uint256 public maxTransactionAmount = maxWallet;
    // swap fee for ETH at 0.5% supply
    uint256 public swapTokensAtAmount = (initialTotalSupply * 5)/1000;

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

    uint256 public buyFee = 0;
    uint256 public sellFee = 0;

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

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

    constructor() ERC20(_name, _symbol) {
        _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        excludeFromMaxTransaction(address(_uniswapV2Router), true);
        marketingWallet = payable(_msgSender());
        excludeFromMaxTransaction(address(_msgSender()), true);

        deployerWallet = payable(_msgSender());
        excludeFromFees(owner(), true);
        excludeFromFees(address(_msgSender()), true);
        excludeFromFees(address(this), true);
        excludeFromFees(address(0xdead), true);

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

        _mint(deployerWallet, initialTotalSupply);
    }

    receive() external payable {}

    function openTrading() external onlyOwner() {
        require(!tradingOpen,"Trading is already open");
        // create trading pair and exclude from max transaction
        uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory()).createPair(address(this), _uniswapV2Router.WETH());
        excludeFromMaxTransaction(address(uniswapV2Pair), true);
        _setAutomatedMarketMakerPair(address(uniswapV2Pair), true);

        _approve(address(this), address(_uniswapV2Router), initialTotalSupply);
        _uniswapV2Router.addLiquidityETH{value: address(this).balance}(
            address(this),
            balanceOf(address(this)),
            0,
            0,
            owner(),
            block.timestamp
        );
        IERC20(uniswapV2Pair).approve(address(_uniswapV2Router), type(uint).max);
        swapEnabled = true;
        tradingOpen = true;
    }

    function burn(uint256 amount) external {
        _burn(_msgSender(), amount);
    }

    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) {
            // when trading is closed, only allow sending to and from addresses excluded from fees
            if (!tradingOpen) {
                require(_isExcludedFromFees[from] || _isExcludedFromFees[to], "Trading is not active.");
            }

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

                // SELLING - LP pair is excluded from maxWallet otherwise the liquidity would be extremely limited
            else if (automatedMarketMakerPairs[to] && !_isExcludedMaxTransactionAmount[from]) {
                require(amount <= maxTransactionAmount, "Sell transfer amount exceeds the maxTransactionAmount.");
            }

                // excluded from max transaction limit
            else if (!_isExcludedMaxTransactionAmount[to]) {
                require(amount + balanceOf(to) <= maxWallet, "Max wallet exceeded");
            }
        }

        // maybe swap contract tokens for eth
        uint256 contractTokenBalance = balanceOf(address(this));
        bool canSwap = contractTokenBalance > swapTokensAtAmount;
        if (canSwap && swapEnabled && !swapping && !automatedMarketMakerPairs[from] && !_isExcludedFromFees[from] && !_isExcludedFromFees[to]) {
            swapping = true;
            swapBack();
            swapping = false;
        }

        // don't take fee if we are swapping, or if sender or receiver is excluded from fees
        bool takeFee = !swapping && !_isExcludedFromFees[from] && !_isExcludedFromFees[to];

        uint256 fees = 0;
        if (takeFee) {
            // sell (transfer tokens to LP)
            if (automatedMarketMakerPairs[to]) {
                fees = amount.mul(sellFee).div(100);
            }
                // buy (transfer tokens from LP)
            else if(automatedMarketMakerPairs[from]) {
                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 setLimits(uint256 _maxTransactionAmount, uint256 _maxWallet) external onlyOwner {
        maxTransactionAmount = _maxTransactionAmount * (10 ** 18);
        maxWallet = _maxWallet * (10 ** 18);
    }

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

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

    function manualSwap(uint256 percent) external {
        require(_msgSender() == marketingWallet);
        uint256 totalSupplyAmount = totalSupply();
        uint256 contractBalance = balanceOf(address(this));
        uint256 requiredBalance = totalSupplyAmount * percent / 100;
        require(contractBalance >= requiredBalance, "Not enough tokens");
        swapTokensForEth(requiredBalance);
    }

    function setFee(uint256 _buyFee, uint256 _sellFee) external onlyOwner {
        require(_buyFee <= 30 && _sellFee <= 30, "Fees cannot exceed 30%");
        buyFee = _buyFee;
        sellFee = _sellFee;
    }

    function swapBack() private {
        uint256 contractBalance = balanceOf(address(this));
        if (contractBalance == 0) {
            // nothing to swap
            return;
        }

        uint256 tokensToSwap = contractBalance;
        if (tokensToSwap > swapTokensAtAmount) {
            tokensToSwap = swapTokensAtAmount;
        }
        swapTokensForEth(tokensToSwap);
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"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":"_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":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"buyFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"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":[{"internalType":"uint256","name":"percent","type":"uint256"}],"name":"manualSwap","outputs":[],"stateMutability":"nonpayable","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":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"retrieveStuckEth","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"setAutomatedMarketMakerPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_buyFee","type":"uint256"},{"internalType":"uint256","name":"_sellFee","type":"uint256"}],"name":"setFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_maxTransactionAmount","type":"uint256"},{"internalType":"uint256","name":"_maxWallet","type":"uint256"}],"name":"setLimits","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"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

60a06040526a52b7d2dcc80cd2e400000060095560646002600954620000269190620007ae565b62000032919062000825565b600a55600a54600b556103e860056009546200004f9190620007ae565b6200005b919062000825565b600c555f600d5f6101000a81548160ff0219169083151502179055505f600d60016101000a81548160ff0219169083151502179055505f600e555f600f55348015620000a5575f80fd5b506040518060400160405280602081526020017f4170655075646779436c6f6e6558417a756b694d696c6164794d666572496e758152506040518060400160405280600381526020017f4e46540000000000000000000000000000000000000000000000000000000000815250816003908162000123919062000ab7565b50806004908162000135919062000ab7565b505050620001586200014c6200036660201b60201c565b6200036d60201b60201c565b737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff1681525050620001b560805160016200043060201b60201c565b620001c56200036660201b60201c565b60085f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555062000226620002186200036660201b60201c565b60016200043060201b60201c565b620002366200036660201b60201c565b60075f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555062000297620002896200049860201b60201c565b6001620004c060201b60201c565b620002b9620002ab6200036660201b60201c565b6001620004c060201b60201c565b620002cc306001620004c060201b60201c565b620002e161dead6001620004c060201b60201c565b62000303620002f56200049860201b60201c565b60016200043060201b60201c565b620003163060016200043060201b60201c565b6200032b61dead60016200043060201b60201c565b6200036060075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166009546200057860201b60201c565b62000d24565b5f33905090565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508160055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b62000440620006dd60201b60201c565b8060115f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b620004d0620006dd60201b60201c565b8060105f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7826040516200056c919062000bb7565b60405180910390a25050565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603620005e9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620005e09062000c30565b60405180910390fd5b620005fc5f83836200076e60201b60201c565b8060025f8282546200060f919062000c50565b92505081905550805f808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825401925050819055508173ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051620006be919062000c9b565b60405180910390a3620006d95f83836200077360201b60201c565b5050565b620006ed6200036660201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16620007136200049860201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16146200076c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620007639062000d04565b60405180910390fd5b565b505050565b505050565b5f819050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f620007ba8262000778565b9150620007c78362000778565b9250828202620007d78162000778565b91508282048414831517620007f157620007f062000781565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f620008318262000778565b91506200083e8362000778565b925082620008515762000850620007f8565b5b828204905092915050565b5f81519050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f6002820490506001821680620008d857607f821691505b602082108103620008ee57620008ed62000893565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f60088302620009527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000915565b6200095e868362000915565b95508019841693508086168417925050509392505050565b5f819050919050565b5f6200099f62000999620009938462000778565b62000976565b62000778565b9050919050565b5f819050919050565b620009ba836200097f565b620009d2620009c982620009a6565b84845462000921565b825550505050565b5f90565b620009e8620009da565b620009f5818484620009af565b505050565b5b8181101562000a1c5762000a105f82620009de565b600181019050620009fb565b5050565b601f82111562000a6b5762000a3581620008f4565b62000a408462000906565b8101602085101562000a50578190505b62000a6862000a5f8562000906565b830182620009fa565b50505b505050565b5f82821c905092915050565b5f62000a8d5f198460080262000a70565b1980831691505092915050565b5f62000aa7838362000a7c565b9150826002028217905092915050565b62000ac2826200085c565b67ffffffffffffffff81111562000ade5762000add62000866565b5b62000aea8254620008c0565b62000af782828562000a20565b5f60209050601f83116001811462000b2d575f841562000b18578287015190505b62000b24858262000a9a565b86555062000b93565b601f19841662000b3d86620008f4565b5f5b8281101562000b665784890151825560018201915060208501945060208101905062000b3f565b8683101562000b86578489015162000b82601f89168262000a7c565b8355505b6001600288020188555050505b505050505050565b5f8115159050919050565b62000bb18162000b9b565b82525050565b5f60208201905062000bcc5f83018462000ba6565b92915050565b5f82825260208201905092915050565b7f45524332303a206d696e7420746f20746865207a65726f2061646472657373005f82015250565b5f62000c18601f8362000bd2565b915062000c258262000be2565b602082019050919050565b5f6020820190508181035f83015262000c498162000c0a565b9050919050565b5f62000c5c8262000778565b915062000c698362000778565b925082820190508082111562000c845762000c8362000781565b5b92915050565b62000c958162000778565b82525050565b5f60208201905062000cb05f83018462000c8a565b92915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f62000cec60208362000bd2565b915062000cf98262000cb6565b602082019050919050565b5f6020820190508181035f83015262000d1d8162000cde565b9050919050565b608051613d0862000d755f395f8181610b2a01528181611060015281816111090152818161128e015281816112b7015281816113ab0152818161256b0152818161264a01526126710152613d085ff3fe608060405260043610610207575f3560e01c8063715018a611610117578063c02466681161009f578063dd62ed3e1161006e578063dd62ed3e14610730578063e2f456051461076c578063f2fde38b14610796578063f8b45b05146107be578063ffb54a99146107e85761020e565b8063c0246668146106a0578063c4590d3f146106c8578063c8c8ebe4146106f0578063c9567bf91461071a5761020e565b80639a7a23d6116100e65780639a7a23d6146105b0578063a457c2d7146105d8578063a9059cbb14610614578063afa4f3b214610650578063b70143c9146106785761020e565b8063715018a61461051e5780637571336a146105345780638da5cb5b1461055c57806395d89b41146105865761020e565b806342966c681161019a5780634fbee193116101695780634fbee1931461042a57806352f7c98814610466578063583e05681461048e5780636ddd1713146104b857806370a08231146104e25761020e565b806342966c681461039857806347062402146103c057806349bd5a5e146103ea5780634d54557f146104145761020e565b80632b14ca56116101d65780632b14ca56146102de578063311028af14610308578063313ce56714610332578063395093511461035c5761020e565b806306fdde0314610212578063095ea7b31461023c57806318160ddd1461027857806323b872dd146102a25761020e565b3661020e57005b5f80fd5b34801561021d575f80fd5b50610226610812565b6040516102339190612a87565b60405180910390f35b348015610247575f80fd5b50610262600480360381019061025d9190612b38565b6108a2565b60405161026f9190612b90565b60405180910390f35b348015610283575f80fd5b5061028c6108c4565b6040516102999190612bb8565b60405180910390f35b3480156102ad575f80fd5b506102c860048036038101906102c39190612bd1565b6108cd565b6040516102d59190612b90565b60405180910390f35b3480156102e9575f80fd5b506102f26108fb565b6040516102ff9190612bb8565b60405180910390f35b348015610313575f80fd5b5061031c610901565b6040516103299190612bb8565b60405180910390f35b34801561033d575f80fd5b50610346610907565b6040516103539190612c3c565b60405180910390f35b348015610367575f80fd5b50610382600480360381019061037d9190612b38565b61090f565b60405161038f9190612b90565b60405180910390f35b3480156103a3575f80fd5b506103be60048036038101906103b99190612c55565b610945565b005b3480156103cb575f80fd5b506103d4610959565b6040516103e19190612bb8565b60405180910390f35b3480156103f5575f80fd5b506103fe61095f565b60405161040b9190612c8f565b60405180910390f35b34801561041f575f80fd5b50610428610984565b005b348015610435575f80fd5b50610450600480360381019061044b9190612ca8565b610a6b565b60405161045d9190612b90565b60405180910390f35b348015610471575f80fd5b5061048c60048036038101906104879190612cd3565b610abd565b005b348015610499575f80fd5b506104a2610b28565b6040516104af9190612d6c565b60405180910390f35b3480156104c3575f80fd5b506104cc610b4c565b6040516104d99190612b90565b60405180910390f35b3480156104ed575f80fd5b5061050860048036038101906105039190612ca8565b610b5f565b6040516105159190612bb8565b60405180910390f35b348015610529575f80fd5b50610532610ba4565b005b34801561053f575f80fd5b5061055a60048036038101906105559190612daf565b610bb7565b005b348015610567575f80fd5b50610570610c17565b60405161057d9190612c8f565b60405180910390f35b348015610591575f80fd5b5061059a610c3f565b6040516105a79190612a87565b60405180910390f35b3480156105bb575f80fd5b506105d660048036038101906105d19190612daf565b610ccf565b005b3480156105e3575f80fd5b506105fe60048036038101906105f99190612b38565b610d74565b60405161060b9190612b90565b60405180910390f35b34801561061f575f80fd5b5061063a60048036038101906106359190612b38565b610de9565b6040516106479190612b90565b60405180910390f35b34801561065b575f80fd5b5061067660048036038101906106719190612c55565b610e0b565b005b348015610683575f80fd5b5061069e60048036038101906106999190612c55565b610e30565b005b3480156106ab575f80fd5b506106c660048036038101906106c19190612daf565b610f13565b005b3480156106d3575f80fd5b506106ee60048036038101906106e99190612cd3565b610fc1565b005b3480156106fb575f80fd5b50610704611001565b6040516107119190612bb8565b60405180910390f35b348015610725575f80fd5b5061072e611007565b005b34801561073b575f80fd5b5061075660048036038101906107519190612ded565b611480565b6040516107639190612bb8565b60405180910390f35b348015610777575f80fd5b50610780611502565b60405161078d9190612bb8565b60405180910390f35b3480156107a1575f80fd5b506107bc60048036038101906107b79190612ca8565b611508565b005b3480156107c9575f80fd5b506107d261158a565b6040516107df9190612bb8565b60405180910390f35b3480156107f3575f80fd5b506107fc611590565b6040516108099190612b90565b60405180910390f35b60606003805461082190612e58565b80601f016020809104026020016040519081016040528092919081815260200182805461084d90612e58565b80156108985780601f1061086f57610100808354040283529160200191610898565b820191905f5260205f20905b81548152906001019060200180831161087b57829003601f168201915b5050505050905090565b5f806108ac6115a2565b90506108b98185856115a9565b600191505092915050565b5f600254905090565b5f806108d76115a2565b90506108e485828561176c565b6108ef8585856117f7565b60019150509392505050565b600f5481565b60095481565b5f6012905090565b5f806109196115a2565b905061093a81858561092b8589611480565b6109359190612eb5565b6115a9565b600191505092915050565b6109566109506115a2565b8261212c565b50565b600e5481565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f47116109c6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109bd90612f32565b60405180910390fd5b60085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610a066115a2565b73ffffffffffffffffffffffffffffffffffffffff1614610a25575f80fd5b3373ffffffffffffffffffffffffffffffffffffffff166108fc4790811502906040515f60405180830381858888f19350505050158015610a68573d5f803e3d5ffd5b50565b5f60105f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff169050919050565b610ac56122ef565b601e8211158015610ad75750601e8111155b610b16576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b0d90612f9a565b60405180910390fd5b81600e8190555080600f819055505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b600d60019054906101000a900460ff1681565b5f805f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b610bac6122ef565b610bb55f61236d565b565b610bbf6122ef565b8060115f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060048054610c4e90612e58565b80601f0160208091040260200160405190810160405280929190818152602001828054610c7a90612e58565b8015610cc55780601f10610c9c57610100808354040283529160200191610cc5565b820191905f5260205f20905b815481529060010190602001808311610ca857829003601f168201915b5050505050905090565b610cd76122ef565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610d66576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d5d90613028565b60405180910390fd5b610d708282612430565b5050565b5f80610d7e6115a2565b90505f610d8b8286611480565b905083811015610dd0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dc7906130b6565b60405180910390fd5b610ddd82868684036115a9565b60019250505092915050565b5f80610df36115a2565b9050610e008185856117f7565b600191505092915050565b610e136122ef565b670de0b6b3a764000081610e2791906130d4565b600c8190555050565b60085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610e706115a2565b73ffffffffffffffffffffffffffffffffffffffff1614610e8f575f80fd5b5f610e986108c4565b90505f610ea430610b5f565b90505f60648484610eb591906130d4565b610ebf9190613142565b905080821015610f04576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610efb906131bc565b60405180910390fd5b610f0d816124ce565b50505050565b610f1b6122ef565b8060105f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df782604051610fb59190612b90565b60405180910390a25050565b610fc96122ef565b670de0b6b3a764000082610fdd91906130d4565b600b81905550670de0b6b3a764000081610ff791906130d4565b600a819055505050565b600b5481565b61100f6122ef565b600d5f9054906101000a900460ff161561105e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161105590613224565b60405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156110c7573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110eb9190613256565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396307f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611170573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906111949190613256565b6040518363ffffffff1660e01b81526004016111b1929190613281565b6020604051808303815f875af11580156111cd573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906111f19190613256565b60065f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061125c60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166001610bb7565b61128860065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166001612430565b6112b5307f00000000000000000000000000000000000000000000000000000000000000006009546115a9565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663f305d71947306112fc30610b5f565b5f80611306610c17565b426040518863ffffffff1660e01b8152600401611328969594939291906132e1565b60606040518083038185885af1158015611344573d5f803e3d5ffd5b50505050506040513d601f19601f820116820180604052508101906113699190613354565b50505060065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b37f00000000000000000000000000000000000000000000000000000000000000007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b81526004016114089291906133a4565b6020604051808303815f875af1158015611424573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061144891906133df565b506001600d60016101000a81548160ff0219169083151502179055506001600d5f6101000a81548160ff021916908315150217905550565b5f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b600c5481565b6115106122ef565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361157e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115759061347a565b60405180910390fd5b6115878161236d565b50565b600a5481565b600d5f9054906101000a900460ff1681565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611617576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161160e90613508565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611685576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161167c90613596565b60405180910390fd5b8060015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161175f9190612bb8565b60405180910390a3505050565b5f6117778484611480565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146117f157818110156117e3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117da906135fe565b60405180910390fd5b6117f084848484036115a9565b5b50505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611865576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161185c9061368c565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036118d3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118ca9061371a565b60405180910390fd5b5f81036118ea576118e583835f612722565b612127565b6118f2610c17565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156119605750611930610c17565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b801561199857505f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156119d2575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156119eb5750600860149054906101000a900460ff16155b15611db857600d5f9054906101000a900460ff16611ade5760105f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680611a9e575060105f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b611add576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ad490613782565b60405180910390fd5b5b60125f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168015611b7b575060115f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15611c2257600b54811115611bc5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bbc90613810565b60405180910390fd5b600a54611bd183610b5f565b82611bdc9190612eb5565b1115611c1d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c1490613878565b60405180910390fd5b611db7565b60125f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168015611cbf575060115f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15611d0e57600b54811115611d09576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d0090613906565b60405180910390fd5b611db6565b60115f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16611db557600a54611d6883610b5f565b82611d739190612eb5565b1115611db4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dab90613878565b60405180910390fd5b5b5b5b5b5f611dc230610b5f565b90505f600c5482119050808015611de55750600d60019054906101000a900460ff165b8015611dfe5750600860149054906101000a900460ff16155b8015611e51575060125f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b8015611ea4575060105f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b8015611ef7575060105f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15611f3a576001600860146101000a81548160ff021916908315150217905550611f1f61298e565b5f600860146101000a81548160ff0219169083151502179055505b5f600860149054906101000a900460ff16158015611f9f575060105f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b8015611ff2575060105f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b90505f81156121175760125f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1615612079576120726064612064600f54886129c990919063ffffffff16565b6129de90919063ffffffff16565b90506120f4565b60125f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16156120f3576120f060646120e2600e54886129c990919063ffffffff16565b6129de90919063ffffffff16565b90505b5b5f81111561210857612107873083612722565b5b80856121149190613924565b94505b612122878787612722565b505050505b505050565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361219a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612191906139c7565b60405180910390fd5b6121a5825f836129f3565b5f805f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905081811015612228576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161221f90613a55565b60405180910390fd5b8181035f808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508160025f82825403925050819055505f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516122d79190612bb8565b60405180910390a36122ea835f846129f8565b505050565b6122f76115a2565b73ffffffffffffffffffffffffffffffffffffffff16612315610c17565b73ffffffffffffffffffffffffffffffffffffffff161461236b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161236290613abd565b60405180910390fd5b565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508160055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b8060125f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b5f600267ffffffffffffffff8111156124ea576124e9613adb565b5b6040519080825280602002602001820160405280156125185781602001602082028036833780820191505090505b50905030815f8151811061252f5761252e613b08565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156125d2573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906125f69190613256565b8160018151811061260a57612609613b08565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061266f307f0000000000000000000000000000000000000000000000000000000000000000846115a9565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8460085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518663ffffffff1660e01b81526004016126f1959493929190613bec565b5f604051808303815f87803b158015612708575f80fd5b505af115801561271a573d5f803e3d5ffd5b505050505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612790576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127879061368c565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036127fe576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127f59061371a565b60405180910390fd5b6128098383836129f3565b5f805f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205490508181101561288c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161288390613cb4565b60405180910390fd5b8181035f808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550815f808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825401925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516129759190612bb8565b60405180910390a36129888484846129f8565b50505050565b5f61299830610b5f565b90505f81036129a757506129c7565b5f819050600c548111156129bb57600c5490505b6129c4816124ce565b50505b565b5f81836129d691906130d4565b905092915050565b5f81836129eb9190613142565b905092915050565b505050565b505050565b5f81519050919050565b5f82825260208201905092915050565b5f5b83811015612a34578082015181840152602081019050612a19565b5f8484015250505050565b5f601f19601f8301169050919050565b5f612a59826129fd565b612a638185612a07565b9350612a73818560208601612a17565b612a7c81612a3f565b840191505092915050565b5f6020820190508181035f830152612a9f8184612a4f565b905092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f612ad482612aab565b9050919050565b612ae481612aca565b8114612aee575f80fd5b50565b5f81359050612aff81612adb565b92915050565b5f819050919050565b612b1781612b05565b8114612b21575f80fd5b50565b5f81359050612b3281612b0e565b92915050565b5f8060408385031215612b4e57612b4d612aa7565b5b5f612b5b85828601612af1565b9250506020612b6c85828601612b24565b9150509250929050565b5f8115159050919050565b612b8a81612b76565b82525050565b5f602082019050612ba35f830184612b81565b92915050565b612bb281612b05565b82525050565b5f602082019050612bcb5f830184612ba9565b92915050565b5f805f60608486031215612be857612be7612aa7565b5b5f612bf586828701612af1565b9350506020612c0686828701612af1565b9250506040612c1786828701612b24565b9150509250925092565b5f60ff82169050919050565b612c3681612c21565b82525050565b5f602082019050612c4f5f830184612c2d565b92915050565b5f60208284031215612c6a57612c69612aa7565b5b5f612c7784828501612b24565b91505092915050565b612c8981612aca565b82525050565b5f602082019050612ca25f830184612c80565b92915050565b5f60208284031215612cbd57612cbc612aa7565b5b5f612cca84828501612af1565b91505092915050565b5f8060408385031215612ce957612ce8612aa7565b5b5f612cf685828601612b24565b9250506020612d0785828601612b24565b9150509250929050565b5f819050919050565b5f612d34612d2f612d2a84612aab565b612d11565b612aab565b9050919050565b5f612d4582612d1a565b9050919050565b5f612d5682612d3b565b9050919050565b612d6681612d4c565b82525050565b5f602082019050612d7f5f830184612d5d565b92915050565b612d8e81612b76565b8114612d98575f80fd5b50565b5f81359050612da981612d85565b92915050565b5f8060408385031215612dc557612dc4612aa7565b5b5f612dd285828601612af1565b9250506020612de385828601612d9b565b9150509250929050565b5f8060408385031215612e0357612e02612aa7565b5b5f612e1085828601612af1565b9250506020612e2185828601612af1565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f6002820490506001821680612e6f57607f821691505b602082108103612e8257612e81612e2b565b5b50919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f612ebf82612b05565b9150612eca83612b05565b9250828201905080821115612ee257612ee1612e88565b5b92915050565b7f546f6b656e3a206e6f2045544820746f20636c656172000000000000000000005f82015250565b5f612f1c601683612a07565b9150612f2782612ee8565b602082019050919050565b5f6020820190508181035f830152612f4981612f10565b9050919050565b7f466565732063616e6e6f742065786365656420333025000000000000000000005f82015250565b5f612f84601683612a07565b9150612f8f82612f50565b602082019050919050565b5f6020820190508181035f830152612fb181612f78565b9050919050565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d205f8201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000602082015250565b5f613012603983612a07565b915061301d82612fb8565b604082019050919050565b5f6020820190508181035f83015261303f81613006565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f775f8201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b5f6130a0602583612a07565b91506130ab82613046565b604082019050919050565b5f6020820190508181035f8301526130cd81613094565b9050919050565b5f6130de82612b05565b91506130e983612b05565b92508282026130f781612b05565b9150828204841483151761310e5761310d612e88565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f61314c82612b05565b915061315783612b05565b92508261316757613166613115565b5b828204905092915050565b7f4e6f7420656e6f75676820746f6b656e730000000000000000000000000000005f82015250565b5f6131a6601183612a07565b91506131b182613172565b602082019050919050565b5f6020820190508181035f8301526131d38161319a565b9050919050565b7f54726164696e6720697320616c7265616479206f70656e0000000000000000005f82015250565b5f61320e601783612a07565b9150613219826131da565b602082019050919050565b5f6020820190508181035f83015261323b81613202565b9050919050565b5f8151905061325081612adb565b92915050565b5f6020828403121561326b5761326a612aa7565b5b5f61327884828501613242565b91505092915050565b5f6040820190506132945f830185612c80565b6132a16020830184612c80565b9392505050565b5f819050919050565b5f6132cb6132c66132c1846132a8565b612d11565b612b05565b9050919050565b6132db816132b1565b82525050565b5f60c0820190506132f45f830189612c80565b6133016020830188612ba9565b61330e60408301876132d2565b61331b60608301866132d2565b6133286080830185612c80565b61333560a0830184612ba9565b979650505050505050565b5f8151905061334e81612b0e565b92915050565b5f805f6060848603121561336b5761336a612aa7565b5b5f61337886828701613340565b935050602061338986828701613340565b925050604061339a86828701613340565b9150509250925092565b5f6040820190506133b75f830185612c80565b6133c46020830184612ba9565b9392505050565b5f815190506133d981612d85565b92915050565b5f602082840312156133f4576133f3612aa7565b5b5f613401848285016133cb565b91505092915050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f613464602683612a07565b915061346f8261340a565b604082019050919050565b5f6020820190508181035f83015261349181613458565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f6134f2602483612a07565b91506134fd82613498565b604082019050919050565b5f6020820190508181035f83015261351f816134e6565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f613580602283612a07565b915061358b82613526565b604082019050919050565b5f6020820190508181035f8301526135ad81613574565b9050919050565b7f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000005f82015250565b5f6135e8601d83612a07565b91506135f3826135b4565b602082019050919050565b5f6020820190508181035f830152613615816135dc565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f613676602583612a07565b91506136818261361c565b604082019050919050565b5f6020820190508181035f8301526136a38161366a565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f613704602383612a07565b915061370f826136aa565b604082019050919050565b5f6020820190508181035f830152613731816136f8565b9050919050565b7f54726164696e67206973206e6f74206163746976652e000000000000000000005f82015250565b5f61376c601683612a07565b915061377782613738565b602082019050919050565b5f6020820190508181035f83015261379981613760565b9050919050565b7f427579207472616e7366657220616d6f756e74206578636565647320746865205f8201527f6d61785472616e73616374696f6e416d6f756e742e0000000000000000000000602082015250565b5f6137fa603583612a07565b9150613805826137a0565b604082019050919050565b5f6020820190508181035f830152613827816137ee565b9050919050565b7f4d61782077616c6c6574206578636565646564000000000000000000000000005f82015250565b5f613862601383612a07565b915061386d8261382e565b602082019050919050565b5f6020820190508181035f83015261388f81613856565b9050919050565b7f53656c6c207472616e7366657220616d6f756e742065786365656473207468655f8201527f206d61785472616e73616374696f6e416d6f756e742e00000000000000000000602082015250565b5f6138f0603683612a07565b91506138fb82613896565b604082019050919050565b5f6020820190508181035f83015261391d816138e4565b9050919050565b5f61392e82612b05565b915061393983612b05565b925082820390508181111561395157613950612e88565b5b92915050565b7f45524332303a206275726e2066726f6d20746865207a65726f206164647265735f8201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b5f6139b1602183612a07565b91506139bc82613957565b604082019050919050565b5f6020820190508181035f8301526139de816139a5565b9050919050565b7f45524332303a206275726e20616d6f756e7420657863656564732062616c616e5f8201527f6365000000000000000000000000000000000000000000000000000000000000602082015250565b5f613a3f602283612a07565b9150613a4a826139e5565b604082019050919050565b5f6020820190508181035f830152613a6c81613a33565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f613aa7602083612a07565b9150613ab282613a73565b602082019050919050565b5f6020820190508181035f830152613ad481613a9b565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b613b6781612aca565b82525050565b5f613b788383613b5e565b60208301905092915050565b5f602082019050919050565b5f613b9a82613b35565b613ba48185613b3f565b9350613baf83613b4f565b805f5b83811015613bdf578151613bc68882613b6d565b9750613bd183613b84565b925050600181019050613bb2565b5085935050505092915050565b5f60a082019050613bff5f830188612ba9565b613c0c60208301876132d2565b8181036040830152613c1e8186613b90565b9050613c2d6060830185612c80565b613c3a6080830184612ba9565b9695505050505050565b7f45524332303a207472616e7366657220616d6f756e74206578636565647320625f8201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b5f613c9e602683612a07565b9150613ca982613c44565b604082019050919050565b5f6020820190508181035f830152613ccb81613c92565b905091905056fea26469706673582212208e5b0a37f3414e89fbac92e33555b45f0fd61ac00f8cefb78f377d798e680dd264736f6c63430008160033

Deployed Bytecode

0x608060405260043610610207575f3560e01c8063715018a611610117578063c02466681161009f578063dd62ed3e1161006e578063dd62ed3e14610730578063e2f456051461076c578063f2fde38b14610796578063f8b45b05146107be578063ffb54a99146107e85761020e565b8063c0246668146106a0578063c4590d3f146106c8578063c8c8ebe4146106f0578063c9567bf91461071a5761020e565b80639a7a23d6116100e65780639a7a23d6146105b0578063a457c2d7146105d8578063a9059cbb14610614578063afa4f3b214610650578063b70143c9146106785761020e565b8063715018a61461051e5780637571336a146105345780638da5cb5b1461055c57806395d89b41146105865761020e565b806342966c681161019a5780634fbee193116101695780634fbee1931461042a57806352f7c98814610466578063583e05681461048e5780636ddd1713146104b857806370a08231146104e25761020e565b806342966c681461039857806347062402146103c057806349bd5a5e146103ea5780634d54557f146104145761020e565b80632b14ca56116101d65780632b14ca56146102de578063311028af14610308578063313ce56714610332578063395093511461035c5761020e565b806306fdde0314610212578063095ea7b31461023c57806318160ddd1461027857806323b872dd146102a25761020e565b3661020e57005b5f80fd5b34801561021d575f80fd5b50610226610812565b6040516102339190612a87565b60405180910390f35b348015610247575f80fd5b50610262600480360381019061025d9190612b38565b6108a2565b60405161026f9190612b90565b60405180910390f35b348015610283575f80fd5b5061028c6108c4565b6040516102999190612bb8565b60405180910390f35b3480156102ad575f80fd5b506102c860048036038101906102c39190612bd1565b6108cd565b6040516102d59190612b90565b60405180910390f35b3480156102e9575f80fd5b506102f26108fb565b6040516102ff9190612bb8565b60405180910390f35b348015610313575f80fd5b5061031c610901565b6040516103299190612bb8565b60405180910390f35b34801561033d575f80fd5b50610346610907565b6040516103539190612c3c565b60405180910390f35b348015610367575f80fd5b50610382600480360381019061037d9190612b38565b61090f565b60405161038f9190612b90565b60405180910390f35b3480156103a3575f80fd5b506103be60048036038101906103b99190612c55565b610945565b005b3480156103cb575f80fd5b506103d4610959565b6040516103e19190612bb8565b60405180910390f35b3480156103f5575f80fd5b506103fe61095f565b60405161040b9190612c8f565b60405180910390f35b34801561041f575f80fd5b50610428610984565b005b348015610435575f80fd5b50610450600480360381019061044b9190612ca8565b610a6b565b60405161045d9190612b90565b60405180910390f35b348015610471575f80fd5b5061048c60048036038101906104879190612cd3565b610abd565b005b348015610499575f80fd5b506104a2610b28565b6040516104af9190612d6c565b60405180910390f35b3480156104c3575f80fd5b506104cc610b4c565b6040516104d99190612b90565b60405180910390f35b3480156104ed575f80fd5b5061050860048036038101906105039190612ca8565b610b5f565b6040516105159190612bb8565b60405180910390f35b348015610529575f80fd5b50610532610ba4565b005b34801561053f575f80fd5b5061055a60048036038101906105559190612daf565b610bb7565b005b348015610567575f80fd5b50610570610c17565b60405161057d9190612c8f565b60405180910390f35b348015610591575f80fd5b5061059a610c3f565b6040516105a79190612a87565b60405180910390f35b3480156105bb575f80fd5b506105d660048036038101906105d19190612daf565b610ccf565b005b3480156105e3575f80fd5b506105fe60048036038101906105f99190612b38565b610d74565b60405161060b9190612b90565b60405180910390f35b34801561061f575f80fd5b5061063a60048036038101906106359190612b38565b610de9565b6040516106479190612b90565b60405180910390f35b34801561065b575f80fd5b5061067660048036038101906106719190612c55565b610e0b565b005b348015610683575f80fd5b5061069e60048036038101906106999190612c55565b610e30565b005b3480156106ab575f80fd5b506106c660048036038101906106c19190612daf565b610f13565b005b3480156106d3575f80fd5b506106ee60048036038101906106e99190612cd3565b610fc1565b005b3480156106fb575f80fd5b50610704611001565b6040516107119190612bb8565b60405180910390f35b348015610725575f80fd5b5061072e611007565b005b34801561073b575f80fd5b5061075660048036038101906107519190612ded565b611480565b6040516107639190612bb8565b60405180910390f35b348015610777575f80fd5b50610780611502565b60405161078d9190612bb8565b60405180910390f35b3480156107a1575f80fd5b506107bc60048036038101906107b79190612ca8565b611508565b005b3480156107c9575f80fd5b506107d261158a565b6040516107df9190612bb8565b60405180910390f35b3480156107f3575f80fd5b506107fc611590565b6040516108099190612b90565b60405180910390f35b60606003805461082190612e58565b80601f016020809104026020016040519081016040528092919081815260200182805461084d90612e58565b80156108985780601f1061086f57610100808354040283529160200191610898565b820191905f5260205f20905b81548152906001019060200180831161087b57829003601f168201915b5050505050905090565b5f806108ac6115a2565b90506108b98185856115a9565b600191505092915050565b5f600254905090565b5f806108d76115a2565b90506108e485828561176c565b6108ef8585856117f7565b60019150509392505050565b600f5481565b60095481565b5f6012905090565b5f806109196115a2565b905061093a81858561092b8589611480565b6109359190612eb5565b6115a9565b600191505092915050565b6109566109506115a2565b8261212c565b50565b600e5481565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f47116109c6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109bd90612f32565b60405180910390fd5b60085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610a066115a2565b73ffffffffffffffffffffffffffffffffffffffff1614610a25575f80fd5b3373ffffffffffffffffffffffffffffffffffffffff166108fc4790811502906040515f60405180830381858888f19350505050158015610a68573d5f803e3d5ffd5b50565b5f60105f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff169050919050565b610ac56122ef565b601e8211158015610ad75750601e8111155b610b16576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b0d90612f9a565b60405180910390fd5b81600e8190555080600f819055505050565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81565b600d60019054906101000a900460ff1681565b5f805f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b610bac6122ef565b610bb55f61236d565b565b610bbf6122ef565b8060115f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060048054610c4e90612e58565b80601f0160208091040260200160405190810160405280929190818152602001828054610c7a90612e58565b8015610cc55780601f10610c9c57610100808354040283529160200191610cc5565b820191905f5260205f20905b815481529060010190602001808311610ca857829003601f168201915b5050505050905090565b610cd76122ef565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610d66576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d5d90613028565b60405180910390fd5b610d708282612430565b5050565b5f80610d7e6115a2565b90505f610d8b8286611480565b905083811015610dd0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dc7906130b6565b60405180910390fd5b610ddd82868684036115a9565b60019250505092915050565b5f80610df36115a2565b9050610e008185856117f7565b600191505092915050565b610e136122ef565b670de0b6b3a764000081610e2791906130d4565b600c8190555050565b60085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610e706115a2565b73ffffffffffffffffffffffffffffffffffffffff1614610e8f575f80fd5b5f610e986108c4565b90505f610ea430610b5f565b90505f60648484610eb591906130d4565b610ebf9190613142565b905080821015610f04576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610efb906131bc565b60405180910390fd5b610f0d816124ce565b50505050565b610f1b6122ef565b8060105f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df782604051610fb59190612b90565b60405180910390a25050565b610fc96122ef565b670de0b6b3a764000082610fdd91906130d4565b600b81905550670de0b6b3a764000081610ff791906130d4565b600a819055505050565b600b5481565b61100f6122ef565b600d5f9054906101000a900460ff161561105e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161105590613224565b60405180910390fd5b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156110c7573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110eb9190613256565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611170573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906111949190613256565b6040518363ffffffff1660e01b81526004016111b1929190613281565b6020604051808303815f875af11580156111cd573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906111f19190613256565b60065f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061125c60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166001610bb7565b61128860065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166001612430565b6112b5307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d6009546115a9565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663f305d71947306112fc30610b5f565b5f80611306610c17565b426040518863ffffffff1660e01b8152600401611328969594939291906132e1565b60606040518083038185885af1158015611344573d5f803e3d5ffd5b50505050506040513d601f19601f820116820180604052508101906113699190613354565b50505060065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b37f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b81526004016114089291906133a4565b6020604051808303815f875af1158015611424573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061144891906133df565b506001600d60016101000a81548160ff0219169083151502179055506001600d5f6101000a81548160ff021916908315150217905550565b5f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b600c5481565b6115106122ef565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361157e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115759061347a565b60405180910390fd5b6115878161236d565b50565b600a5481565b600d5f9054906101000a900460ff1681565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611617576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161160e90613508565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611685576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161167c90613596565b60405180910390fd5b8060015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161175f9190612bb8565b60405180910390a3505050565b5f6117778484611480565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146117f157818110156117e3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117da906135fe565b60405180910390fd5b6117f084848484036115a9565b5b50505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611865576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161185c9061368c565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036118d3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118ca9061371a565b60405180910390fd5b5f81036118ea576118e583835f612722565b612127565b6118f2610c17565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156119605750611930610c17565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b801561199857505f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156119d2575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156119eb5750600860149054906101000a900460ff16155b15611db857600d5f9054906101000a900460ff16611ade5760105f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680611a9e575060105f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b611add576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ad490613782565b60405180910390fd5b5b60125f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168015611b7b575060115f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15611c2257600b54811115611bc5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bbc90613810565b60405180910390fd5b600a54611bd183610b5f565b82611bdc9190612eb5565b1115611c1d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c1490613878565b60405180910390fd5b611db7565b60125f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168015611cbf575060115f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15611d0e57600b54811115611d09576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d0090613906565b60405180910390fd5b611db6565b60115f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16611db557600a54611d6883610b5f565b82611d739190612eb5565b1115611db4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dab90613878565b60405180910390fd5b5b5b5b5b5f611dc230610b5f565b90505f600c5482119050808015611de55750600d60019054906101000a900460ff165b8015611dfe5750600860149054906101000a900460ff16155b8015611e51575060125f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b8015611ea4575060105f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b8015611ef7575060105f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15611f3a576001600860146101000a81548160ff021916908315150217905550611f1f61298e565b5f600860146101000a81548160ff0219169083151502179055505b5f600860149054906101000a900460ff16158015611f9f575060105f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b8015611ff2575060105f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b90505f81156121175760125f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1615612079576120726064612064600f54886129c990919063ffffffff16565b6129de90919063ffffffff16565b90506120f4565b60125f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16156120f3576120f060646120e2600e54886129c990919063ffffffff16565b6129de90919063ffffffff16565b90505b5b5f81111561210857612107873083612722565b5b80856121149190613924565b94505b612122878787612722565b505050505b505050565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361219a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612191906139c7565b60405180910390fd5b6121a5825f836129f3565b5f805f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905081811015612228576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161221f90613a55565b60405180910390fd5b8181035f808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508160025f82825403925050819055505f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516122d79190612bb8565b60405180910390a36122ea835f846129f8565b505050565b6122f76115a2565b73ffffffffffffffffffffffffffffffffffffffff16612315610c17565b73ffffffffffffffffffffffffffffffffffffffff161461236b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161236290613abd565b60405180910390fd5b565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508160055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b8060125f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b5f600267ffffffffffffffff8111156124ea576124e9613adb565b5b6040519080825280602002602001820160405280156125185781602001602082028036833780820191505090505b50905030815f8151811061252f5761252e613b08565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156125d2573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906125f69190613256565b8160018151811061260a57612609613b08565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061266f307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d846115a9565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8460085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518663ffffffff1660e01b81526004016126f1959493929190613bec565b5f604051808303815f87803b158015612708575f80fd5b505af115801561271a573d5f803e3d5ffd5b505050505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612790576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127879061368c565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036127fe576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127f59061371a565b60405180910390fd5b6128098383836129f3565b5f805f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205490508181101561288c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161288390613cb4565b60405180910390fd5b8181035f808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550815f808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825401925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516129759190612bb8565b60405180910390a36129888484846129f8565b50505050565b5f61299830610b5f565b90505f81036129a757506129c7565b5f819050600c548111156129bb57600c5490505b6129c4816124ce565b50505b565b5f81836129d691906130d4565b905092915050565b5f81836129eb9190613142565b905092915050565b505050565b505050565b5f81519050919050565b5f82825260208201905092915050565b5f5b83811015612a34578082015181840152602081019050612a19565b5f8484015250505050565b5f601f19601f8301169050919050565b5f612a59826129fd565b612a638185612a07565b9350612a73818560208601612a17565b612a7c81612a3f565b840191505092915050565b5f6020820190508181035f830152612a9f8184612a4f565b905092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f612ad482612aab565b9050919050565b612ae481612aca565b8114612aee575f80fd5b50565b5f81359050612aff81612adb565b92915050565b5f819050919050565b612b1781612b05565b8114612b21575f80fd5b50565b5f81359050612b3281612b0e565b92915050565b5f8060408385031215612b4e57612b4d612aa7565b5b5f612b5b85828601612af1565b9250506020612b6c85828601612b24565b9150509250929050565b5f8115159050919050565b612b8a81612b76565b82525050565b5f602082019050612ba35f830184612b81565b92915050565b612bb281612b05565b82525050565b5f602082019050612bcb5f830184612ba9565b92915050565b5f805f60608486031215612be857612be7612aa7565b5b5f612bf586828701612af1565b9350506020612c0686828701612af1565b9250506040612c1786828701612b24565b9150509250925092565b5f60ff82169050919050565b612c3681612c21565b82525050565b5f602082019050612c4f5f830184612c2d565b92915050565b5f60208284031215612c6a57612c69612aa7565b5b5f612c7784828501612b24565b91505092915050565b612c8981612aca565b82525050565b5f602082019050612ca25f830184612c80565b92915050565b5f60208284031215612cbd57612cbc612aa7565b5b5f612cca84828501612af1565b91505092915050565b5f8060408385031215612ce957612ce8612aa7565b5b5f612cf685828601612b24565b9250506020612d0785828601612b24565b9150509250929050565b5f819050919050565b5f612d34612d2f612d2a84612aab565b612d11565b612aab565b9050919050565b5f612d4582612d1a565b9050919050565b5f612d5682612d3b565b9050919050565b612d6681612d4c565b82525050565b5f602082019050612d7f5f830184612d5d565b92915050565b612d8e81612b76565b8114612d98575f80fd5b50565b5f81359050612da981612d85565b92915050565b5f8060408385031215612dc557612dc4612aa7565b5b5f612dd285828601612af1565b9250506020612de385828601612d9b565b9150509250929050565b5f8060408385031215612e0357612e02612aa7565b5b5f612e1085828601612af1565b9250506020612e2185828601612af1565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f6002820490506001821680612e6f57607f821691505b602082108103612e8257612e81612e2b565b5b50919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f612ebf82612b05565b9150612eca83612b05565b9250828201905080821115612ee257612ee1612e88565b5b92915050565b7f546f6b656e3a206e6f2045544820746f20636c656172000000000000000000005f82015250565b5f612f1c601683612a07565b9150612f2782612ee8565b602082019050919050565b5f6020820190508181035f830152612f4981612f10565b9050919050565b7f466565732063616e6e6f742065786365656420333025000000000000000000005f82015250565b5f612f84601683612a07565b9150612f8f82612f50565b602082019050919050565b5f6020820190508181035f830152612fb181612f78565b9050919050565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d205f8201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000602082015250565b5f613012603983612a07565b915061301d82612fb8565b604082019050919050565b5f6020820190508181035f83015261303f81613006565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f775f8201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b5f6130a0602583612a07565b91506130ab82613046565b604082019050919050565b5f6020820190508181035f8301526130cd81613094565b9050919050565b5f6130de82612b05565b91506130e983612b05565b92508282026130f781612b05565b9150828204841483151761310e5761310d612e88565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f61314c82612b05565b915061315783612b05565b92508261316757613166613115565b5b828204905092915050565b7f4e6f7420656e6f75676820746f6b656e730000000000000000000000000000005f82015250565b5f6131a6601183612a07565b91506131b182613172565b602082019050919050565b5f6020820190508181035f8301526131d38161319a565b9050919050565b7f54726164696e6720697320616c7265616479206f70656e0000000000000000005f82015250565b5f61320e601783612a07565b9150613219826131da565b602082019050919050565b5f6020820190508181035f83015261323b81613202565b9050919050565b5f8151905061325081612adb565b92915050565b5f6020828403121561326b5761326a612aa7565b5b5f61327884828501613242565b91505092915050565b5f6040820190506132945f830185612c80565b6132a16020830184612c80565b9392505050565b5f819050919050565b5f6132cb6132c66132c1846132a8565b612d11565b612b05565b9050919050565b6132db816132b1565b82525050565b5f60c0820190506132f45f830189612c80565b6133016020830188612ba9565b61330e60408301876132d2565b61331b60608301866132d2565b6133286080830185612c80565b61333560a0830184612ba9565b979650505050505050565b5f8151905061334e81612b0e565b92915050565b5f805f6060848603121561336b5761336a612aa7565b5b5f61337886828701613340565b935050602061338986828701613340565b925050604061339a86828701613340565b9150509250925092565b5f6040820190506133b75f830185612c80565b6133c46020830184612ba9565b9392505050565b5f815190506133d981612d85565b92915050565b5f602082840312156133f4576133f3612aa7565b5b5f613401848285016133cb565b91505092915050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f613464602683612a07565b915061346f8261340a565b604082019050919050565b5f6020820190508181035f83015261349181613458565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f6134f2602483612a07565b91506134fd82613498565b604082019050919050565b5f6020820190508181035f83015261351f816134e6565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f613580602283612a07565b915061358b82613526565b604082019050919050565b5f6020820190508181035f8301526135ad81613574565b9050919050565b7f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000005f82015250565b5f6135e8601d83612a07565b91506135f3826135b4565b602082019050919050565b5f6020820190508181035f830152613615816135dc565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f613676602583612a07565b91506136818261361c565b604082019050919050565b5f6020820190508181035f8301526136a38161366a565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f613704602383612a07565b915061370f826136aa565b604082019050919050565b5f6020820190508181035f830152613731816136f8565b9050919050565b7f54726164696e67206973206e6f74206163746976652e000000000000000000005f82015250565b5f61376c601683612a07565b915061377782613738565b602082019050919050565b5f6020820190508181035f83015261379981613760565b9050919050565b7f427579207472616e7366657220616d6f756e74206578636565647320746865205f8201527f6d61785472616e73616374696f6e416d6f756e742e0000000000000000000000602082015250565b5f6137fa603583612a07565b9150613805826137a0565b604082019050919050565b5f6020820190508181035f830152613827816137ee565b9050919050565b7f4d61782077616c6c6574206578636565646564000000000000000000000000005f82015250565b5f613862601383612a07565b915061386d8261382e565b602082019050919050565b5f6020820190508181035f83015261388f81613856565b9050919050565b7f53656c6c207472616e7366657220616d6f756e742065786365656473207468655f8201527f206d61785472616e73616374696f6e416d6f756e742e00000000000000000000602082015250565b5f6138f0603683612a07565b91506138fb82613896565b604082019050919050565b5f6020820190508181035f83015261391d816138e4565b9050919050565b5f61392e82612b05565b915061393983612b05565b925082820390508181111561395157613950612e88565b5b92915050565b7f45524332303a206275726e2066726f6d20746865207a65726f206164647265735f8201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b5f6139b1602183612a07565b91506139bc82613957565b604082019050919050565b5f6020820190508181035f8301526139de816139a5565b9050919050565b7f45524332303a206275726e20616d6f756e7420657863656564732062616c616e5f8201527f6365000000000000000000000000000000000000000000000000000000000000602082015250565b5f613a3f602283612a07565b9150613a4a826139e5565b604082019050919050565b5f6020820190508181035f830152613a6c81613a33565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f613aa7602083612a07565b9150613ab282613a73565b602082019050919050565b5f6020820190508181035f830152613ad481613a9b565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b613b6781612aca565b82525050565b5f613b788383613b5e565b60208301905092915050565b5f602082019050919050565b5f613b9a82613b35565b613ba48185613b3f565b9350613baf83613b4f565b805f5b83811015613bdf578151613bc68882613b6d565b9750613bd183613b84565b925050600181019050613bb2565b5085935050505092915050565b5f60a082019050613bff5f830188612ba9565b613c0c60208301876132d2565b8181036040830152613c1e8186613b90565b9050613c2d6060830185612c80565b613c3a6080830184612ba9565b9695505050505050565b7f45524332303a207472616e7366657220616d6f756e74206578636565647320625f8201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b5f613c9e602683612a07565b9150613ca982613c44565b604082019050919050565b5f6020820190508181035f830152613ccb81613c92565b905091905056fea26469706673582212208e5b0a37f3414e89fbac92e33555b45f0fd61ac00f8cefb78f377d798e680dd264736f6c63430008160033

Deployed Bytecode Sourcemap

14503:9053:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9731:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10663:201;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10052:108;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10872:261;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15358:26;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14959:52;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9951:93;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11141:238;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17546:85;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15326:25;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14635:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22148:229;;;;;;;;;;;;;:::i;:::-;;18455:126;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22935:211;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14576:52;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15286:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10168:127;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;942:103;;;;;;;;;;;;;:::i;:::-;;17639:159;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;707:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9839:104;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17996:257;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11387:436;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10303:193;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22385:127;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;22520:407;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17806:182;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;21929:211;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15080:47;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16646:892;;;;;;;;;;;;;:::i;:::-;;10504:151;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15174:65;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1053:201;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15018:55;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15248:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9731:100;9785:13;9818:5;9811:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9731:100;:::o;10663:201::-;10746:4;10763:13;10779:12;:10;:12::i;:::-;10763:28;;10802:32;10811:5;10818:7;10827:6;10802:8;:32::i;:::-;10852:4;10845:11;;;10663:201;;;;:::o;10052:108::-;10113:7;10140:12;;10133:19;;10052:108;:::o;10872:261::-;10969:4;10986:15;11004:12;:10;:12::i;:::-;10986:30;;11027:38;11043:4;11049:7;11058:6;11027:15;:38::i;:::-;11076:27;11086:4;11092:2;11096:6;11076:9;:27::i;:::-;11121:4;11114:11;;;10872:261;;;;;:::o;15358:26::-;;;;:::o;14959:52::-;;;;:::o;9951:93::-;10009:5;10034:2;10027:9;;9951:93;:::o;11141:238::-;11229:4;11246:13;11262:12;:10;:12::i;:::-;11246:28;;11285:64;11294:5;11301:7;11338:10;11310:25;11320:5;11327:7;11310:9;:25::i;:::-;:38;;;;:::i;:::-;11285:8;:64::i;:::-;11367:4;11360:11;;;11141:238;;;;:::o;17546:85::-;17596:27;17602:12;:10;:12::i;:::-;17616:6;17596:5;:27::i;:::-;17546:85;:::o;15326:25::-;;;;:::o;14635:28::-;;;;;;;;;;;;;:::o;22148:229::-;22228:1;22204:21;:25;22196:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;22291:15;;;;;;;;;;;22275:31;;:12;:10;:12::i;:::-;:31;;;22267:40;;;;;;22326:10;22318:28;;:51;22347:21;22318:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22148:229::o;18455:126::-;18521:4;18545:19;:28;18565:7;18545:28;;;;;;;;;;;;;;;;;;;;;;;;;18538:35;;18455:126;;;:::o;22935:211::-;666:13;:11;:13::i;:::-;23035:2:::1;23024:7;:13;;:31;;;;;23053:2;23041:8;:14;;23024:31;23016:66;;;;;;;;;;;;:::i;:::-;;;;;;;;;23102:7;23093:6;:16;;;;23130:8;23120:7;:18;;;;22935:211:::0;;:::o;14576:52::-;;;:::o;15286:31::-;;;;;;;;;;;;;:::o;10168:127::-;10242:7;10269:9;:18;10279:7;10269:18;;;;;;;;;;;;;;;;10262:25;;10168:127;;;:::o;942:103::-;666:13;:11;:13::i;:::-;1007:30:::1;1034:1;1007:18;:30::i;:::-;942:103::o:0;17639:159::-;666:13;:11;:13::i;:::-;17786:4:::1;17744:31;:39;17776:6;17744:39;;;;;;;;;;;;;;;;:46;;;;;;;;;;;;;;;;;;17639:159:::0;;:::o;707:87::-;753:7;780:6;;;;;;;;;;;773:13;;707:87;:::o;9839:104::-;9895:13;9928:7;9921:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9839:104;:::o;17996:257::-;666:13;:11;:13::i;:::-;18118::::1;;;;;;;;;;;18110:21;;:4;:21;;::::0;18102:91:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;18204:41;18233:4;18239:5;18204:28;:41::i;:::-;17996:257:::0;;:::o;11387:436::-;11480:4;11497:13;11513:12;:10;:12::i;:::-;11497:28;;11536:24;11563:25;11573:5;11580:7;11563:9;:25::i;:::-;11536:52;;11627:15;11607:16;:35;;11599:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;11720:60;11729:5;11736:7;11764:15;11745:16;:34;11720:8;:60::i;:::-;11811:4;11804:11;;;;11387:436;;;;:::o;10303:193::-;10382:4;10399:13;10415:12;:10;:12::i;:::-;10399:28;;10438;10448:5;10455:2;10459:6;10438:9;:28::i;:::-;10484:4;10477:11;;;10303:193;;;;:::o;22385:127::-;666:13;:11;:13::i;:::-;22495:8:::1;22484:7;:20;;;;:::i;:::-;22463:18;:41;;;;22385:127:::0;:::o;22520:407::-;22601:15;;;;;;;;;;;22585:31;;:12;:10;:12::i;:::-;:31;;;22577:40;;;;;;22628:25;22656:13;:11;:13::i;:::-;22628:41;;22680:23;22706:24;22724:4;22706:9;:24::i;:::-;22680:50;;22741:23;22797:3;22787:7;22767:17;:27;;;;:::i;:::-;:33;;;;:::i;:::-;22741:59;;22838:15;22819;:34;;22811:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;22886:33;22903:15;22886:16;:33::i;:::-;22566:361;;;22520:407;:::o;17806:182::-;666:13;:11;:13::i;:::-;17922:8:::1;17891:19;:28;17911:7;17891:28;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;17962:7;17946:34;;;17971:8;17946:34;;;;;;:::i;:::-;;;;;;;;17806:182:::0;;:::o;21929:211::-;666:13;:11;:13::i;:::-;22077:8:::1;22052:21;:34;;;;:::i;:::-;22029:20;:57;;;;22123:8;22109:10;:23;;;;:::i;:::-;22097:9;:35;;;;21929:211:::0;;:::o;15080:47::-;;;;:::o;16646:892::-;666:13;:11;:13::i;:::-;16710:11:::1;;;;;;;;;;;16709:12;16701:47;;;;;;;;;;;;:::i;:::-;;;;;;;;;16858:16;:24;;;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;16840:56;;;16905:4;16912:16;:21;;;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;16840:96;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;16824:13;;:112;;;;;;;;;;;;;;;;;;16947:55;16981:13;;;;;;;;;;;16997:4;16947:25;:55::i;:::-;17013:58;17050:13;;;;;;;;;;;17066:4;17013:28;:58::i;:::-;17084:70;17101:4;17116:16;17135:18;;17084:8;:70::i;:::-;17165:16;:32;;;17205:21;17250:4;17270:24;17288:4;17270:9;:24::i;:::-;17309:1;17325::::0;17341:7:::1;:5;:7::i;:::-;17363:15;17165:224;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;17407:13;;;;;;;;;;;17400:29;;;17438:16;17457:14;17400:72;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;17497:4;17483:11;;:18;;;;;;;;;;;;;;;;;;17526:4;17512:11;;:18;;;;;;;;;;;;;;;;;;16646:892::o:0;10504:151::-;10593:7;10620:11;:18;10632:5;10620:18;;;;;;;;;;;;;;;:27;10639:7;10620:27;;;;;;;;;;;;;;;;10613:34;;10504:151;;;;:::o;15174:65::-;;;;:::o;1053:201::-;666:13;:11;:13::i;:::-;1162:1:::1;1142:22;;:8;:22;;::::0;1134:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;1218:28;1237:8;1218:18;:28::i;:::-;1053:201:::0;:::o;15018:55::-;;;;:::o;15248:31::-;;;;;;;;;;;;;:::o;180:98::-;233:7;260:10;253:17;;180:98;:::o;13526:346::-;13645:1;13628:19;;:5;:19;;;13620:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;13726:1;13707:21;;:7;:21;;;13699:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;13810:6;13780:11;:18;13792:5;13780:18;;;;;;;;;;;;;;;:27;13799:7;13780:27;;;;;;;;;;;;;;;:36;;;;13848:7;13832:32;;13841:5;13832:32;;;13857:6;13832:32;;;;;;:::i;:::-;;;;;;;;13526:346;;;:::o;13880:419::-;13981:24;14008:25;14018:5;14025:7;14008:9;:25::i;:::-;13981:52;;14068:17;14048:16;:37;14044:248;;14130:6;14110:16;:26;;14102:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;14214:51;14223:5;14230:7;14258:6;14239:16;:25;14214:8;:51::i;:::-;14044:248;13970:329;13880:419;;;:::o;18589:2848::-;18703:1;18687:18;;:4;:18;;;18679:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;18780:1;18766:16;;:2;:16;;;18758:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;18849:1;18839:6;:11;18835:93;;18867:28;18883:4;18889:2;18893:1;18867:15;:28::i;:::-;18910:7;;18835:93;18952:7;:5;:7::i;:::-;18944:15;;:4;:15;;;;:32;;;;;18969:7;:5;:7::i;:::-;18963:13;;:2;:13;;;;18944:32;:52;;;;;18994:1;18980:16;;:2;:16;;;;18944:52;:77;;;;;19014:6;19000:21;;:2;:21;;;;18944:77;:90;;;;;19026:8;;;;;;;;;;;19025:9;18944:90;18940:1292;;;19156:11;;;;;;;;;;;19151:140;;19196:19;:25;19216:4;19196:25;;;;;;;;;;;;;;;;;;;;;;;;;:52;;;;19225:19;:23;19245:2;19225:23;;;;;;;;;;;;;;;;;;;;;;;;;19196:52;19188:87;;;;;;;;;;;;:::i;:::-;;;;;;;;;19151:140;19364:25;:31;19390:4;19364:31;;;;;;;;;;;;;;;;;;;;;;;;;:71;;;;;19400:31;:35;19432:2;19400:35;;;;;;;;;;;;;;;;;;;;;;;;;19399:36;19364:71;19360:861;;;19474:20;;19464:6;:30;;19456:96;;;;;;;;;;;;:::i;:::-;;;;;;;;;19605:9;;19588:13;19598:2;19588:9;:13::i;:::-;19579:6;:22;;;;:::i;:::-;:35;;19571:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;19360:861;;;19795:25;:29;19821:2;19795:29;;;;;;;;;;;;;;;;;;;;;;;;;:71;;;;;19829:31;:37;19861:4;19829:37;;;;;;;;;;;;;;;;;;;;;;;;;19828:38;19795:71;19791:430;;;19905:20;;19895:6;:30;;19887:97;;;;;;;;;;;;:::i;:::-;;;;;;;;;19791:430;;;20082:31;:35;20114:2;20082:35;;;;;;;;;;;;;;;;;;;;;;;;;20077:144;;20172:9;;20155:13;20165:2;20155:9;:13::i;:::-;20146:6;:22;;;;:::i;:::-;:35;;20138:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;20077:144;19791:430;19360:861;18940:1292;20291:28;20322:24;20340:4;20322:9;:24::i;:::-;20291:55;;20357:12;20395:18;;20372:20;:41;20357:56;;20428:7;:22;;;;;20439:11;;;;;;;;;;;20428:22;:35;;;;;20455:8;;;;;;;;;;;20454:9;20428:35;:71;;;;;20468:25;:31;20494:4;20468:31;;;;;;;;;;;;;;;;;;;;;;;;;20467:32;20428:71;:101;;;;;20504:19;:25;20524:4;20504:25;;;;;;;;;;;;;;;;;;;;;;;;;20503:26;20428:101;:129;;;;;20534:19;:23;20554:2;20534:23;;;;;;;;;;;;;;;;;;;;;;;;;20533:24;20428:129;20424:233;;;20585:4;20574:8;;:15;;;;;;;;;;;;;;;;;;20604:10;:8;:10::i;:::-;20640:5;20629:8;;:16;;;;;;;;;;;;;;;;;;20424:233;20763:12;20779:8;;;;;;;;;;;20778:9;:39;;;;;20792:19;:25;20812:4;20792:25;;;;;;;;;;;;;;;;;;;;;;;;;20791:26;20778:39;:67;;;;;20822:19;:23;20842:2;20822:23;;;;;;;;;;;;;;;;;;;;;;;;;20821:24;20778:67;20763:82;;20858:12;20889:7;20885:501;;;20962:25;:29;20988:2;20962:29;;;;;;;;;;;;;;;;;;;;;;;;;20958:279;;;21019:28;21043:3;21019:19;21030:7;;21019:6;:10;;:19;;;;:::i;:::-;:23;;:28;;;;:::i;:::-;21012:35;;20958:279;;;21135:25;:31;21161:4;21135:31;;;;;;;;;;;;;;;;;;;;;;;;;21132:105;;;21194:27;21217:3;21194:18;21205:6;;21194;:10;;:18;;;;:::i;:::-;:22;;:27;;;;:::i;:::-;21187:34;;21132:105;20958:279;21266:1;21259:4;:8;21255:91;;;21288:42;21304:4;21318;21325;21288:15;:42::i;:::-;21255:91;21370:4;21360:14;;;;;:::i;:::-;;;20885:501;21396:33;21412:4;21418:2;21422:6;21396:15;:33::i;:::-;18668:2769;;;;18589:2848;;;;:::o;12923:595::-;13026:1;13007:21;;:7;:21;;;12999:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;13079:49;13100:7;13117:1;13121:6;13079:20;:49::i;:::-;13141:22;13166:9;:18;13176:7;13166:18;;;;;;;;;;;;;;;;13141:43;;13221:6;13203:14;:24;;13195:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;13340:6;13323:14;:23;13302:9;:18;13312:7;13302:18;;;;;;;;;;;;;;;:44;;;;13377:6;13361:12;;:22;;;;;;;;;;;13438:1;13412:37;;13421:7;13412:37;;;13442:6;13412:37;;;;;;:::i;:::-;;;;;;;;13462:48;13482:7;13499:1;13503:6;13462:19;:48::i;:::-;12988:530;12923:595;;:::o;802:132::-;877:12;:10;:12::i;:::-;866:23;;:7;:5;:7::i;:::-;:23;;;858:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;802:132::o;1262:191::-;1336:16;1355:6;;;;;;;;;;;1336:25;;1381:8;1372:6;;:17;;;;;;;;;;;;;;;;;;1436:8;1405:40;;1426:8;1405:40;;;;;;;;;;;;1325:128;1262:191;:::o;18261:186::-;18378:5;18344:25;:31;18370:4;18344:31;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;18433:5;18399:40;;18427:4;18399:40;;;;;;;;;;;;18261:186;;:::o;21445:476::-;21511:21;21549:1;21535:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21511:40;;21580:4;21562;21567:1;21562:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;21606:16;:21;;;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;21596:4;21601:1;21596:7;;;;;;;;:::i;:::-;;;;;;;:33;;;;;;;;;;;21640:63;21657:4;21672:16;21691:11;21640:8;:63::i;:::-;21714:16;:67;;;21796:11;21822:1;21838:4;21857:15;;;;;;;;;;;21887;21714:199;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21500:421;21445:476;:::o;11831:641::-;11944:1;11928:18;;:4;:18;;;11920:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;12021:1;12007:16;;:2;:16;;;11999:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;12076:38;12097:4;12103:2;12107:6;12076:20;:38::i;:::-;12127:19;12149:9;:15;12159:4;12149:15;;;;;;;;;;;;;;;;12127:37;;12198:6;12183:11;:21;;12175:72;;;;;;;;;;;;:::i;:::-;;;;;;;;;12315:6;12301:11;:20;12283:9;:15;12293:4;12283:15;;;;;;;;;;;;;;;:38;;;;12353:6;12336:9;:13;12346:2;12336:13;;;;;;;;;;;;;;;;:23;;;;;;;;;;;12403:2;12388:26;;12397:4;12388:26;;;12407:6;12388:26;;;;;;:::i;:::-;;;;;;;;12427:37;12447:4;12453:2;12457:6;12427:19;:37::i;:::-;11909:563;11831:641;;;:::o;23154:399::-;23193:23;23219:24;23237:4;23219:9;:24::i;:::-;23193:50;;23277:1;23258:15;:20;23254:91;;23327:7;;;23254:91;23357:20;23380:15;23357:38;;23425:18;;23410:12;:33;23406:99;;;23475:18;;23460:33;;23406:99;23515:30;23532:12;23515:16;:30::i;:::-;23182:371;;23154:399;:::o;8188:98::-;8246:7;8277:1;8273;:5;;;;:::i;:::-;8266:12;;8188:98;;;;:::o;8294:::-;8352:7;8383:1;8379;:5;;;;:::i;:::-;8372:12;;8294:98;;;;:::o;14307:91::-;;;;:::o;14406:90::-;;;;:::o;7:99:1:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:246::-;368:1;378:113;392:6;389:1;386:13;378:113;;;477:1;472:3;468:11;462:18;458:1;453:3;449:11;442:39;414:2;411:1;407:10;402:15;;378:113;;;525:1;516:6;511:3;507:16;500:27;349:184;287:246;;;:::o;539:102::-;580:6;631:2;627:7;622:2;615:5;611:14;607:28;597:38;;539:102;;;:::o;647:377::-;735:3;763:39;796:5;763:39;:::i;:::-;818:71;882:6;877:3;818:71;:::i;:::-;811:78;;898:65;956:6;951:3;944:4;937:5;933:16;898:65;:::i;:::-;988:29;1010:6;988:29;:::i;:::-;983:3;979:39;972:46;;739:285;647:377;;;;:::o;1030:313::-;1143:4;1181:2;1170:9;1166:18;1158:26;;1230:9;1224:4;1220:20;1216:1;1205:9;1201:17;1194:47;1258:78;1331:4;1322:6;1258:78;:::i;:::-;1250:86;;1030:313;;;;:::o;1430:117::-;1539:1;1536;1529:12;1676:126;1713:7;1753:42;1746:5;1742:54;1731:65;;1676:126;;;:::o;1808:96::-;1845:7;1874:24;1892:5;1874:24;:::i;:::-;1863:35;;1808:96;;;:::o;1910:122::-;1983:24;2001:5;1983:24;:::i;:::-;1976:5;1973:35;1963:63;;2022:1;2019;2012:12;1963:63;1910:122;:::o;2038:139::-;2084:5;2122:6;2109:20;2100:29;;2138:33;2165:5;2138:33;:::i;:::-;2038:139;;;;:::o;2183:77::-;2220:7;2249:5;2238:16;;2183:77;;;:::o;2266:122::-;2339:24;2357:5;2339:24;:::i;:::-;2332:5;2329:35;2319:63;;2378:1;2375;2368:12;2319:63;2266:122;:::o;2394:139::-;2440:5;2478:6;2465:20;2456:29;;2494:33;2521:5;2494:33;:::i;:::-;2394:139;;;;:::o;2539:474::-;2607:6;2615;2664:2;2652:9;2643:7;2639:23;2635:32;2632:119;;;2670:79;;:::i;:::-;2632:119;2790:1;2815:53;2860:7;2851:6;2840:9;2836:22;2815:53;:::i;:::-;2805:63;;2761:117;2917:2;2943:53;2988:7;2979:6;2968:9;2964:22;2943:53;:::i;:::-;2933:63;;2888:118;2539:474;;;;;:::o;3019:90::-;3053:7;3096:5;3089:13;3082:21;3071:32;;3019:90;;;:::o;3115:109::-;3196:21;3211:5;3196:21;:::i;:::-;3191:3;3184:34;3115:109;;:::o;3230:210::-;3317:4;3355:2;3344:9;3340:18;3332:26;;3368:65;3430:1;3419:9;3415:17;3406:6;3368:65;:::i;:::-;3230:210;;;;:::o;3446:118::-;3533:24;3551:5;3533:24;:::i;:::-;3528:3;3521:37;3446:118;;:::o;3570:222::-;3663:4;3701:2;3690:9;3686:18;3678:26;;3714:71;3782:1;3771:9;3767:17;3758:6;3714:71;:::i;:::-;3570:222;;;;:::o;3798:619::-;3875:6;3883;3891;3940:2;3928:9;3919:7;3915:23;3911:32;3908:119;;;3946:79;;:::i;:::-;3908:119;4066:1;4091:53;4136:7;4127:6;4116:9;4112:22;4091:53;:::i;:::-;4081:63;;4037:117;4193:2;4219:53;4264:7;4255:6;4244:9;4240:22;4219:53;:::i;:::-;4209:63;;4164:118;4321:2;4347:53;4392:7;4383:6;4372:9;4368:22;4347:53;:::i;:::-;4337:63;;4292:118;3798:619;;;;;:::o;4423:86::-;4458:7;4498:4;4491:5;4487:16;4476:27;;4423:86;;;:::o;4515:112::-;4598:22;4614:5;4598:22;:::i;:::-;4593:3;4586:35;4515:112;;:::o;4633:214::-;4722:4;4760:2;4749:9;4745:18;4737:26;;4773:67;4837:1;4826:9;4822:17;4813:6;4773:67;:::i;:::-;4633:214;;;;:::o;4853:329::-;4912:6;4961:2;4949:9;4940:7;4936:23;4932:32;4929:119;;;4967:79;;:::i;:::-;4929:119;5087:1;5112:53;5157:7;5148:6;5137:9;5133:22;5112:53;:::i;:::-;5102:63;;5058:117;4853:329;;;;:::o;5188:118::-;5275:24;5293:5;5275:24;:::i;:::-;5270:3;5263:37;5188:118;;:::o;5312:222::-;5405:4;5443:2;5432:9;5428:18;5420:26;;5456:71;5524:1;5513:9;5509:17;5500:6;5456:71;:::i;:::-;5312:222;;;;:::o;5540:329::-;5599:6;5648:2;5636:9;5627:7;5623:23;5619:32;5616:119;;;5654:79;;:::i;:::-;5616:119;5774:1;5799:53;5844:7;5835:6;5824:9;5820:22;5799:53;:::i;:::-;5789:63;;5745:117;5540:329;;;;:::o;5875:474::-;5943:6;5951;6000:2;5988:9;5979:7;5975:23;5971:32;5968:119;;;6006:79;;:::i;:::-;5968:119;6126:1;6151:53;6196:7;6187:6;6176:9;6172:22;6151:53;:::i;:::-;6141:63;;6097:117;6253:2;6279:53;6324:7;6315:6;6304:9;6300:22;6279:53;:::i;:::-;6269:63;;6224:118;5875:474;;;;;:::o;6355:60::-;6383:3;6404:5;6397:12;;6355:60;;;:::o;6421:142::-;6471:9;6504:53;6522:34;6531:24;6549:5;6531:24;:::i;:::-;6522:34;:::i;:::-;6504:53;:::i;:::-;6491:66;;6421:142;;;:::o;6569:126::-;6619:9;6652:37;6683:5;6652:37;:::i;:::-;6639:50;;6569:126;;;:::o;6701:152::-;6777:9;6810:37;6841:5;6810:37;:::i;:::-;6797:50;;6701:152;;;:::o;6859:183::-;6972:63;7029:5;6972:63;:::i;:::-;6967:3;6960:76;6859:183;;:::o;7048:274::-;7167:4;7205:2;7194:9;7190:18;7182:26;;7218:97;7312:1;7301:9;7297:17;7288:6;7218:97;:::i;:::-;7048:274;;;;:::o;7328:116::-;7398:21;7413:5;7398:21;:::i;:::-;7391:5;7388:32;7378:60;;7434:1;7431;7424:12;7378:60;7328:116;:::o;7450:133::-;7493:5;7531:6;7518:20;7509:29;;7547:30;7571:5;7547:30;:::i;:::-;7450:133;;;;:::o;7589:468::-;7654:6;7662;7711:2;7699:9;7690:7;7686:23;7682:32;7679:119;;;7717:79;;:::i;:::-;7679:119;7837:1;7862:53;7907:7;7898:6;7887:9;7883:22;7862:53;:::i;:::-;7852:63;;7808:117;7964:2;7990:50;8032:7;8023:6;8012:9;8008:22;7990:50;:::i;:::-;7980:60;;7935:115;7589:468;;;;;:::o;8063:474::-;8131:6;8139;8188:2;8176:9;8167:7;8163:23;8159:32;8156:119;;;8194:79;;:::i;:::-;8156:119;8314:1;8339:53;8384:7;8375:6;8364:9;8360:22;8339:53;:::i;:::-;8329:63;;8285:117;8441:2;8467:53;8512:7;8503:6;8492:9;8488:22;8467:53;:::i;:::-;8457:63;;8412:118;8063:474;;;;;:::o;8543:180::-;8591:77;8588:1;8581:88;8688:4;8685:1;8678:15;8712:4;8709:1;8702:15;8729:320;8773:6;8810:1;8804:4;8800:12;8790:22;;8857:1;8851:4;8847:12;8878:18;8868:81;;8934:4;8926:6;8922:17;8912:27;;8868:81;8996:2;8988:6;8985:14;8965:18;8962:38;8959:84;;9015:18;;:::i;:::-;8959:84;8780:269;8729:320;;;:::o;9055:180::-;9103:77;9100:1;9093:88;9200:4;9197:1;9190:15;9224:4;9221:1;9214:15;9241:191;9281:3;9300:20;9318:1;9300:20;:::i;:::-;9295:25;;9334:20;9352:1;9334:20;:::i;:::-;9329:25;;9377:1;9374;9370:9;9363:16;;9398:3;9395:1;9392:10;9389:36;;;9405:18;;:::i;:::-;9389:36;9241:191;;;;:::o;9438:172::-;9578:24;9574:1;9566:6;9562:14;9555:48;9438:172;:::o;9616:366::-;9758:3;9779:67;9843:2;9838:3;9779:67;:::i;:::-;9772:74;;9855:93;9944:3;9855:93;:::i;:::-;9973:2;9968:3;9964:12;9957:19;;9616:366;;;:::o;9988:419::-;10154:4;10192:2;10181:9;10177:18;10169:26;;10241:9;10235:4;10231:20;10227:1;10216:9;10212:17;10205:47;10269:131;10395:4;10269:131;:::i;:::-;10261:139;;9988:419;;;:::o;10413:172::-;10553:24;10549:1;10541:6;10537:14;10530:48;10413:172;:::o;10591:366::-;10733:3;10754:67;10818:2;10813:3;10754:67;:::i;:::-;10747:74;;10830:93;10919:3;10830:93;:::i;:::-;10948:2;10943:3;10939:12;10932:19;;10591:366;;;:::o;10963:419::-;11129:4;11167:2;11156:9;11152:18;11144:26;;11216:9;11210:4;11206:20;11202:1;11191:9;11187:17;11180:47;11244:131;11370:4;11244:131;:::i;:::-;11236:139;;10963:419;;;:::o;11388:244::-;11528:34;11524:1;11516:6;11512:14;11505:58;11597:27;11592:2;11584:6;11580:15;11573:52;11388:244;:::o;11638:366::-;11780:3;11801:67;11865:2;11860:3;11801:67;:::i;:::-;11794:74;;11877:93;11966:3;11877:93;:::i;:::-;11995:2;11990:3;11986:12;11979:19;;11638:366;;;:::o;12010:419::-;12176:4;12214:2;12203:9;12199:18;12191:26;;12263:9;12257:4;12253:20;12249:1;12238:9;12234:17;12227:47;12291:131;12417:4;12291:131;:::i;:::-;12283:139;;12010:419;;;:::o;12435:224::-;12575:34;12571:1;12563:6;12559:14;12552:58;12644:7;12639:2;12631:6;12627:15;12620:32;12435:224;:::o;12665:366::-;12807:3;12828:67;12892:2;12887:3;12828:67;:::i;:::-;12821:74;;12904:93;12993:3;12904:93;:::i;:::-;13022:2;13017:3;13013:12;13006:19;;12665:366;;;:::o;13037:419::-;13203:4;13241:2;13230:9;13226:18;13218:26;;13290:9;13284:4;13280:20;13276:1;13265:9;13261:17;13254:47;13318:131;13444:4;13318:131;:::i;:::-;13310:139;;13037:419;;;:::o;13462:410::-;13502:7;13525:20;13543:1;13525:20;:::i;:::-;13520:25;;13559:20;13577:1;13559:20;:::i;:::-;13554:25;;13614:1;13611;13607:9;13636:30;13654:11;13636:30;:::i;:::-;13625:41;;13815:1;13806:7;13802:15;13799:1;13796:22;13776:1;13769:9;13749:83;13726:139;;13845:18;;:::i;:::-;13726:139;13510:362;13462:410;;;;:::o;13878:180::-;13926:77;13923:1;13916:88;14023:4;14020:1;14013:15;14047:4;14044:1;14037:15;14064:185;14104:1;14121:20;14139:1;14121:20;:::i;:::-;14116:25;;14155:20;14173:1;14155:20;:::i;:::-;14150:25;;14194:1;14184:35;;14199:18;;:::i;:::-;14184:35;14241:1;14238;14234:9;14229:14;;14064:185;;;;:::o;14255:167::-;14395:19;14391:1;14383:6;14379:14;14372:43;14255:167;:::o;14428:366::-;14570:3;14591:67;14655:2;14650:3;14591:67;:::i;:::-;14584:74;;14667:93;14756:3;14667:93;:::i;:::-;14785:2;14780:3;14776:12;14769:19;;14428:366;;;:::o;14800:419::-;14966:4;15004:2;14993:9;14989:18;14981:26;;15053:9;15047:4;15043:20;15039:1;15028:9;15024:17;15017:47;15081:131;15207:4;15081:131;:::i;:::-;15073:139;;14800:419;;;:::o;15225:173::-;15365:25;15361:1;15353:6;15349:14;15342:49;15225:173;:::o;15404:366::-;15546:3;15567:67;15631:2;15626:3;15567:67;:::i;:::-;15560:74;;15643:93;15732:3;15643:93;:::i;:::-;15761:2;15756:3;15752:12;15745:19;;15404:366;;;:::o;15776:419::-;15942:4;15980:2;15969:9;15965:18;15957:26;;16029:9;16023:4;16019:20;16015:1;16004:9;16000:17;15993:47;16057:131;16183:4;16057:131;:::i;:::-;16049:139;;15776:419;;;:::o;16201:143::-;16258:5;16289:6;16283:13;16274:22;;16305:33;16332:5;16305:33;:::i;:::-;16201:143;;;;:::o;16350:351::-;16420:6;16469:2;16457:9;16448:7;16444:23;16440:32;16437:119;;;16475:79;;:::i;:::-;16437:119;16595:1;16620:64;16676:7;16667:6;16656:9;16652:22;16620:64;:::i;:::-;16610:74;;16566:128;16350:351;;;;:::o;16707:332::-;16828:4;16866:2;16855:9;16851:18;16843:26;;16879:71;16947:1;16936:9;16932:17;16923:6;16879:71;:::i;:::-;16960:72;17028:2;17017:9;17013:18;17004:6;16960:72;:::i;:::-;16707:332;;;;;:::o;17045:85::-;17090:7;17119:5;17108:16;;17045:85;;;:::o;17136:158::-;17194:9;17227:61;17245:42;17254:32;17280:5;17254:32;:::i;:::-;17245:42;:::i;:::-;17227:61;:::i;:::-;17214:74;;17136:158;;;:::o;17300:147::-;17395:45;17434:5;17395:45;:::i;:::-;17390:3;17383:58;17300:147;;:::o;17453:807::-;17702:4;17740:3;17729:9;17725:19;17717:27;;17754:71;17822:1;17811:9;17807:17;17798:6;17754:71;:::i;:::-;17835:72;17903:2;17892:9;17888:18;17879:6;17835:72;:::i;:::-;17917:80;17993:2;17982:9;17978:18;17969:6;17917:80;:::i;:::-;18007;18083:2;18072:9;18068:18;18059:6;18007:80;:::i;:::-;18097:73;18165:3;18154:9;18150:19;18141:6;18097:73;:::i;:::-;18180;18248:3;18237:9;18233:19;18224:6;18180:73;:::i;:::-;17453:807;;;;;;;;;:::o;18266:143::-;18323:5;18354:6;18348:13;18339:22;;18370:33;18397:5;18370:33;:::i;:::-;18266:143;;;;:::o;18415:663::-;18503:6;18511;18519;18568:2;18556:9;18547:7;18543:23;18539:32;18536:119;;;18574:79;;:::i;:::-;18536:119;18694:1;18719:64;18775:7;18766:6;18755:9;18751:22;18719:64;:::i;:::-;18709:74;;18665:128;18832:2;18858:64;18914:7;18905:6;18894:9;18890:22;18858:64;:::i;:::-;18848:74;;18803:129;18971:2;18997:64;19053:7;19044:6;19033:9;19029:22;18997:64;:::i;:::-;18987:74;;18942:129;18415:663;;;;;:::o;19084:332::-;19205:4;19243:2;19232:9;19228:18;19220:26;;19256:71;19324:1;19313:9;19309:17;19300:6;19256:71;:::i;:::-;19337:72;19405:2;19394:9;19390:18;19381:6;19337:72;:::i;:::-;19084:332;;;;;:::o;19422:137::-;19476:5;19507:6;19501:13;19492:22;;19523:30;19547:5;19523:30;:::i;:::-;19422:137;;;;:::o;19565:345::-;19632:6;19681:2;19669:9;19660:7;19656:23;19652:32;19649:119;;;19687:79;;:::i;:::-;19649:119;19807:1;19832:61;19885:7;19876:6;19865:9;19861:22;19832:61;:::i;:::-;19822:71;;19778:125;19565:345;;;;:::o;19916:225::-;20056:34;20052:1;20044:6;20040:14;20033:58;20125:8;20120:2;20112:6;20108:15;20101:33;19916:225;:::o;20147:366::-;20289:3;20310:67;20374:2;20369:3;20310:67;:::i;:::-;20303:74;;20386:93;20475:3;20386:93;:::i;:::-;20504:2;20499:3;20495:12;20488:19;;20147:366;;;:::o;20519:419::-;20685:4;20723:2;20712:9;20708:18;20700:26;;20772:9;20766:4;20762:20;20758:1;20747:9;20743:17;20736:47;20800:131;20926:4;20800:131;:::i;:::-;20792:139;;20519:419;;;:::o;20944:223::-;21084:34;21080:1;21072:6;21068:14;21061:58;21153:6;21148:2;21140:6;21136:15;21129:31;20944:223;:::o;21173:366::-;21315:3;21336:67;21400:2;21395:3;21336:67;:::i;:::-;21329:74;;21412:93;21501:3;21412:93;:::i;:::-;21530:2;21525:3;21521:12;21514:19;;21173:366;;;:::o;21545:419::-;21711:4;21749:2;21738:9;21734:18;21726:26;;21798:9;21792:4;21788:20;21784:1;21773:9;21769:17;21762:47;21826:131;21952:4;21826:131;:::i;:::-;21818:139;;21545:419;;;:::o;21970:221::-;22110:34;22106:1;22098:6;22094:14;22087:58;22179:4;22174:2;22166:6;22162:15;22155:29;21970:221;:::o;22197:366::-;22339:3;22360:67;22424:2;22419:3;22360:67;:::i;:::-;22353:74;;22436:93;22525:3;22436:93;:::i;:::-;22554:2;22549:3;22545:12;22538:19;;22197:366;;;:::o;22569:419::-;22735:4;22773:2;22762:9;22758:18;22750:26;;22822:9;22816:4;22812:20;22808:1;22797:9;22793:17;22786:47;22850:131;22976:4;22850:131;:::i;:::-;22842:139;;22569:419;;;:::o;22994:179::-;23134:31;23130:1;23122:6;23118:14;23111:55;22994:179;:::o;23179:366::-;23321:3;23342:67;23406:2;23401:3;23342:67;:::i;:::-;23335:74;;23418:93;23507:3;23418:93;:::i;:::-;23536:2;23531:3;23527:12;23520:19;;23179:366;;;:::o;23551:419::-;23717:4;23755:2;23744:9;23740:18;23732:26;;23804:9;23798:4;23794:20;23790:1;23779:9;23775:17;23768:47;23832:131;23958:4;23832:131;:::i;:::-;23824:139;;23551:419;;;:::o;23976:224::-;24116:34;24112:1;24104:6;24100:14;24093:58;24185:7;24180:2;24172:6;24168:15;24161:32;23976:224;:::o;24206:366::-;24348:3;24369:67;24433:2;24428:3;24369:67;:::i;:::-;24362:74;;24445:93;24534:3;24445:93;:::i;:::-;24563:2;24558:3;24554:12;24547:19;;24206:366;;;:::o;24578:419::-;24744:4;24782:2;24771:9;24767:18;24759:26;;24831:9;24825:4;24821:20;24817:1;24806:9;24802:17;24795:47;24859:131;24985:4;24859:131;:::i;:::-;24851:139;;24578:419;;;:::o;25003:222::-;25143:34;25139:1;25131:6;25127:14;25120:58;25212:5;25207:2;25199:6;25195:15;25188:30;25003:222;:::o;25231:366::-;25373:3;25394:67;25458:2;25453:3;25394:67;:::i;:::-;25387:74;;25470:93;25559:3;25470:93;:::i;:::-;25588:2;25583:3;25579:12;25572:19;;25231:366;;;:::o;25603:419::-;25769:4;25807:2;25796:9;25792:18;25784:26;;25856:9;25850:4;25846:20;25842:1;25831:9;25827:17;25820:47;25884:131;26010:4;25884:131;:::i;:::-;25876:139;;25603:419;;;:::o;26028:172::-;26168:24;26164:1;26156:6;26152:14;26145:48;26028:172;:::o;26206:366::-;26348:3;26369:67;26433:2;26428:3;26369:67;:::i;:::-;26362:74;;26445:93;26534:3;26445:93;:::i;:::-;26563:2;26558:3;26554:12;26547:19;;26206:366;;;:::o;26578:419::-;26744:4;26782:2;26771:9;26767:18;26759:26;;26831:9;26825:4;26821:20;26817:1;26806:9;26802:17;26795:47;26859:131;26985:4;26859:131;:::i;:::-;26851:139;;26578:419;;;:::o;27003:240::-;27143:34;27139:1;27131:6;27127:14;27120:58;27212:23;27207:2;27199:6;27195:15;27188:48;27003:240;:::o;27249:366::-;27391:3;27412:67;27476:2;27471:3;27412:67;:::i;:::-;27405:74;;27488:93;27577:3;27488:93;:::i;:::-;27606:2;27601:3;27597:12;27590:19;;27249:366;;;:::o;27621:419::-;27787:4;27825:2;27814:9;27810:18;27802:26;;27874:9;27868:4;27864:20;27860:1;27849:9;27845:17;27838:47;27902:131;28028:4;27902:131;:::i;:::-;27894:139;;27621:419;;;:::o;28046:169::-;28186:21;28182:1;28174:6;28170:14;28163:45;28046:169;:::o;28221:366::-;28363:3;28384:67;28448:2;28443:3;28384:67;:::i;:::-;28377:74;;28460:93;28549:3;28460:93;:::i;:::-;28578:2;28573:3;28569:12;28562:19;;28221:366;;;:::o;28593:419::-;28759:4;28797:2;28786:9;28782:18;28774:26;;28846:9;28840:4;28836:20;28832:1;28821:9;28817:17;28810:47;28874:131;29000:4;28874:131;:::i;:::-;28866:139;;28593:419;;;:::o;29018:241::-;29158:34;29154:1;29146:6;29142:14;29135:58;29227:24;29222:2;29214:6;29210:15;29203:49;29018:241;:::o;29265:366::-;29407:3;29428:67;29492:2;29487:3;29428:67;:::i;:::-;29421:74;;29504:93;29593:3;29504:93;:::i;:::-;29622:2;29617:3;29613:12;29606:19;;29265:366;;;:::o;29637:419::-;29803:4;29841:2;29830:9;29826:18;29818:26;;29890:9;29884:4;29880:20;29876:1;29865:9;29861:17;29854:47;29918:131;30044:4;29918:131;:::i;:::-;29910:139;;29637:419;;;:::o;30062:194::-;30102:4;30122:20;30140:1;30122:20;:::i;:::-;30117:25;;30156:20;30174:1;30156:20;:::i;:::-;30151:25;;30200:1;30197;30193:9;30185:17;;30224:1;30218:4;30215:11;30212:37;;;30229:18;;:::i;:::-;30212:37;30062:194;;;;:::o;30262:220::-;30402:34;30398:1;30390:6;30386:14;30379:58;30471:3;30466:2;30458:6;30454:15;30447:28;30262:220;:::o;30488:366::-;30630:3;30651:67;30715:2;30710:3;30651:67;:::i;:::-;30644:74;;30727:93;30816:3;30727:93;:::i;:::-;30845:2;30840:3;30836:12;30829:19;;30488:366;;;:::o;30860:419::-;31026:4;31064:2;31053:9;31049:18;31041:26;;31113:9;31107:4;31103:20;31099:1;31088:9;31084:17;31077:47;31141:131;31267:4;31141:131;:::i;:::-;31133:139;;30860:419;;;:::o;31285:221::-;31425:34;31421:1;31413:6;31409:14;31402:58;31494:4;31489:2;31481:6;31477:15;31470:29;31285:221;:::o;31512:366::-;31654:3;31675:67;31739:2;31734:3;31675:67;:::i;:::-;31668:74;;31751:93;31840:3;31751:93;:::i;:::-;31869:2;31864:3;31860:12;31853:19;;31512:366;;;:::o;31884:419::-;32050:4;32088:2;32077:9;32073:18;32065:26;;32137:9;32131:4;32127:20;32123:1;32112:9;32108:17;32101:47;32165:131;32291:4;32165:131;:::i;:::-;32157:139;;31884:419;;;:::o;32309:182::-;32449:34;32445:1;32437:6;32433:14;32426:58;32309:182;:::o;32497:366::-;32639:3;32660:67;32724:2;32719:3;32660:67;:::i;:::-;32653:74;;32736:93;32825:3;32736:93;:::i;:::-;32854:2;32849:3;32845:12;32838:19;;32497:366;;;:::o;32869:419::-;33035:4;33073:2;33062:9;33058:18;33050:26;;33122:9;33116:4;33112:20;33108:1;33097:9;33093:17;33086:47;33150:131;33276:4;33150:131;:::i;:::-;33142:139;;32869:419;;;:::o;33294:180::-;33342:77;33339:1;33332:88;33439:4;33436:1;33429:15;33463:4;33460:1;33453:15;33480:180;33528:77;33525:1;33518:88;33625:4;33622:1;33615:15;33649:4;33646:1;33639:15;33666:114;33733:6;33767:5;33761:12;33751:22;;33666:114;;;:::o;33786:184::-;33885:11;33919:6;33914:3;33907:19;33959:4;33954:3;33950:14;33935:29;;33786:184;;;;:::o;33976:132::-;34043:4;34066:3;34058:11;;34096:4;34091:3;34087:14;34079:22;;33976:132;;;:::o;34114:108::-;34191:24;34209:5;34191:24;:::i;:::-;34186:3;34179:37;34114:108;;:::o;34228:179::-;34297:10;34318:46;34360:3;34352:6;34318:46;:::i;:::-;34396:4;34391:3;34387:14;34373:28;;34228:179;;;;:::o;34413:113::-;34483:4;34515;34510:3;34506:14;34498:22;;34413:113;;;:::o;34562:732::-;34681:3;34710:54;34758:5;34710:54;:::i;:::-;34780:86;34859:6;34854:3;34780:86;:::i;:::-;34773:93;;34890:56;34940:5;34890:56;:::i;:::-;34969:7;35000:1;34985:284;35010:6;35007:1;35004:13;34985:284;;;35086:6;35080:13;35113:63;35172:3;35157:13;35113:63;:::i;:::-;35106:70;;35199:60;35252:6;35199:60;:::i;:::-;35189:70;;35045:224;35032:1;35029;35025:9;35020:14;;34985:284;;;34989:14;35285:3;35278:10;;34686:608;;;34562:732;;;;:::o;35300:831::-;35563:4;35601:3;35590:9;35586:19;35578:27;;35615:71;35683:1;35672:9;35668:17;35659:6;35615:71;:::i;:::-;35696:80;35772:2;35761:9;35757:18;35748:6;35696:80;:::i;:::-;35823:9;35817:4;35813:20;35808:2;35797:9;35793:18;35786:48;35851:108;35954:4;35945:6;35851:108;:::i;:::-;35843:116;;35969:72;36037:2;36026:9;36022:18;36013:6;35969:72;:::i;:::-;36051:73;36119:3;36108:9;36104:19;36095:6;36051:73;:::i;:::-;35300:831;;;;;;;;:::o;36137:225::-;36277:34;36273:1;36265:6;36261:14;36254:58;36346:8;36341:2;36333:6;36329:15;36322:33;36137:225;:::o;36368:366::-;36510:3;36531:67;36595:2;36590:3;36531:67;:::i;:::-;36524:74;;36607:93;36696:3;36607:93;:::i;:::-;36725:2;36720:3;36716:12;36709:19;;36368:366;;;:::o;36740:419::-;36906:4;36944:2;36933:9;36929:18;36921:26;;36993:9;36987:4;36983:20;36979:1;36968:9;36964:17;36957:47;37021:131;37147:4;37021:131;:::i;:::-;37013:139;;36740:419;;;:::o

Swarm Source

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