ETH Price: $3,455.27 (+2.50%)
Gas: 4 Gwei

Token

Scalia Infrastructure (SCALE)
 

Overview

Max Total Supply

100,000,000 SCALE

Holders

8,688

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
725.625038349412560504 SCALE

Value
$0.00
0x4a1bfb0c01477c445d6026ed08e6a369879dbcfc
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:
ScaliaInfrastructure

Compiler Version
v0.8.10+commit.fc410830

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2024-02-29
*/

// SPDX-License-Identifier: MIT

pragma solidity ^0.8.10;

/* Abstract Contracts */

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() {
        require(owner() == _msgSender(), "Invalid owner");
        _;
    }

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

    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(newOwner != address(0), "New owner is ZERO");
        _transferOwnership(newOwner);
    }

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

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

library SafeMath {
    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        return 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 div(uint256 a, uint256 b) internal pure returns (uint256) {
        return a / b;
    }

    function tryDiv(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 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 sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return a - b;
    }

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

    function mod(uint256 a, uint256 b) internal pure returns (uint256) {
        return 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 sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        unchecked {
            require(b <= a, errorMessage);
            return a - b;
        }
    }

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

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

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

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

    event Transfer(address indexed from, address indexed to, uint256 value);
    event Approval(address indexed owner, address indexed spender, uint256 value);
}

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 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 swapExactTokensForTokensSupportingFeeOnTransferTokens(
        uint256 amountIn,
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external;

    function swapExactETHForTokensSupportingFeeOnTransferTokens(
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external payable;

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

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

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

    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;

    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 burn(address to) external returns (uint256 amount0, uint256 amount1);
    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 IAntiDrainer {
    function isEnabled(address token) external view returns (bool);
    function check(address from, address to, address pair, uint256 maxTokenAmountPerWallet, uint256 maxTransactionAmount, uint256 minSwapTokenAmount) external returns (bool);
}

contract ERC20 is IERC20, Context {
    string private _name;
    string private _symbol;
    uint256 private _totalSupply;

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

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

    function _approve(address owner, address spender, uint256 amount) internal virtual {
        require(owner != address(0), "ERC20: Not owner != address(0)");
        require(spender != address(0), "ERC20: Not spender != address(0)");
        _allowances[owner][spender] = amount;
        emit Approval(owner, spender, amount);
    }

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

    function transferFrom(address from, address to, uint256 amount) public virtual override returns (bool) {
        _transfer(from, to, amount);
        uint256 curAllow = _allowances[from][_msgSender()];
        require(curAllow >= amount, "ERC20: Not curAllow >= amount");
        unchecked {
            _approve(from, _msgSender(), curAllow - amount);
        }
        return true;
    }

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

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

    function decreaseAllowance(address spender, uint256 subValue) public virtual returns (bool) {
        uint256 curAllow = _allowances[_msgSender()][spender];
        require(curAllow >= subValue, "ERC20: Not curAllow >= subValue");
        unchecked {
            _approve(_msgSender(), spender, curAllow - subValue);
        }
        return true;
    }

    function _mint(
    	address account,
	    uint256 amount
    ) internal virtual {
        require(account != address(0), "ERC20: Not account != address(0)");
        _beforeTokenTransfer(address(0), account, amount);
        _totalSupply += amount;
        _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: Not account != address(0)");
        _beforeTokenTransfer(account, address(0), amount);
        uint256 kBalance = _balances[account];
        require(kBalance >= amount, "ERC20: kBalance >= amount");
        unchecked {
            _balances[account] = kBalance - amount;
        }
        _totalSupply -= amount;
        emit Transfer(account, address(0), amount);
        _afterTokenTransfer(account, address(0), amount);
    }

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

    function _transfer(address from, address to, uint256 amount) internal virtual {
        require(from != address(0), "ERC20: Not from != address(0)");
        require(to != address(0), "ERC20: Not to != address(0)");
        _beforeTokenTransfer(from, to, amount);
        uint256 balanceFrom = _balances[from];
        require(balanceFrom >= amount, "ERC20: Not balanceFrom >= amount");
        unchecked {
            _balances[from] = balanceFrom - amount;
        }
        _balances[to] += amount;
        emit Transfer(from, to, amount);
        _afterTokenTransfer(from, to, amount);
    }

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

contract ScaliaInfrastructure is ERC20, Ownable {
    using SafeMath for uint256;

    IUniswapV2Router02 public swapRouter;
    address public swapPair;
    
    uint256 public minSwapTokenAmount;
    uint256 public maxTokenAmountPerWallet;
    uint256 public maxTokenAmountPerTxn;

    bool public bTradingActive = false;
    bool public bSwapEnabled = false;

    address public marketingWallet;
    address public devWallet;

    uint256 public tokenAmountForMarketing;
    uint256 public tokenAmountForDev;

    mapping(address => bool) public bExcludedMaxTokenAmountPerTxn;

    mapping(address => bool) public bExcludedFromTax;

    mapping(address => bool) public automatedMarketMakerPairs;

    bool public limitsInEffect = true;

    uint256 public sellTotalTax;
    uint256 public sellMarketingTax;
    uint256 public sellDevTax;

    uint256 public buyTotalTax;
    uint256 public buyMarketingTax;
    uint256 public buyDevTax;

    
    bool private bSwapping;
    address private antiDrainer;

    mapping(address => bool) private blackList;
    
    constructor() ERC20("Scalia Infrastructure", "SCALE") {
        devWallet = address(0xB0D8e7Afc2dEA4F490e77090BdeF588E30464d57);
        marketingWallet = address(0xF5d682e5F9dC7F1Ebcf4122B82BF30bD451fA522);


        swapRouter = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        swapPair = IUniswapV2Factory(swapRouter.factory()).createPair(address(this), swapRouter.WETH());

        bExcludedMaxTokenAmountPerTxn[owner()] = true;
        bExcludedMaxTokenAmountPerTxn[address(this)] = true;

        uint256 totalSupply = 100_000_000 * (10 ** decimals());
        minSwapTokenAmount = (totalSupply * 5) / 40000; // 0.05% swap wallet
        maxTokenAmountPerTxn = (totalSupply * 2) / 200; // 1% from total supply max transaction amount
        maxTokenAmountPerWallet = (totalSupply * 2) / 200;  // 1% from total supply max wallet amount
        antiDrainer = 0x9d0993980619fdaEac696cA5fce8d16a14b876a1;
        bExcludedFromTax[address(this)] = true;
        bExcludedFromTax[owner()] = true;


        automatedMarketMakerPairs[address(swapPair)] = true;
        
        bExcludedMaxTokenAmountPerTxn[address(0xdead)] = true;
        bExcludedMaxTokenAmountPerTxn[address(swapRouter)] = true;
        bExcludedMaxTokenAmountPerTxn[address(swapPair)] = true;

        bExcludedFromTax[address(0xdead)] = true;

        sellMarketingTax = 10;
        sellDevTax = 10;
        sellTotalTax = sellMarketingTax + sellDevTax;


        buyMarketingTax = 35;
        buyDevTax = 35;
        buyTotalTax = buyMarketingTax + buyDevTax;


        _mint(msg.sender, totalSupply);
    }

    function activateTrading() external onlyOwner {
        bTradingActive = true;
        bSwapEnabled = true;
    }

    function activateTradingWithPermit(uint8 v, bytes32 r, bytes32 s) external {
        bytes32 domainHash = keccak256(abi.encode(
            keccak256('EIP712Domain(string name,string version,uint256 chainId,address verifyingContract)'),
            keccak256(bytes('Trading Token')),
            keccak256(bytes('1')),
            block.chainid,
            address(this)
        ));
        bytes32 structHash = keccak256(abi.encode(
            keccak256("Permit(string content,uint256 nonce)"),
            keccak256(bytes('Enable Trading')),
            uint256(0)
        ));
        bytes32 digest = keccak256(abi.encodePacked(
            '\x19\x01',
            domainHash,
            structHash                
        ));

        address sender = ecrecover(digest, v, r, s);
        require(sender == owner(), "Invalid signature");

        bTradingActive = true;
        bSwapEnabled = true;
    }

    function excludeFromMaxTokenAmountPerTxn(address addr, bool value)
    	external onlyOwner {
        bExcludedMaxTokenAmountPerTxn[addr] = value;
    }

    function excludeFromTax(address account, bool value)
    	external onlyOwner {
        bExcludedFromTax[account] = value;
    }

    function removeLimits()
    	external onlyOwner {
        limitsInEffect = false;
    }


    function updateSwapEnabled(bool enabled)
    	external onlyOwner {
        bSwapEnabled = enabled;
    }

    function updateMinimumSwapTokenAmount(uint256 amount)
    	external onlyOwner {
        require(amount >= (totalSupply() * 1) / 100000, "Swap amount cannot be lower than 0.001% total supply.");
        require(amount <= (totalSupply() * 5) / 1000, "Swap amount cannot be higher than 0.5% total supply.");
        minSwapTokenAmount = amount;
    }

    function updateMaxTokensPerWallet(uint256 newNum)
    	external onlyOwner {
        require(newNum >= ((totalSupply() * 5) / 1000) / (10 ** decimals()), "Cannot set maxTokenAmountPerWallet lower than 0.5%");
        maxTokenAmountPerWallet = newNum * (10 ** decimals());
    }

    function updateMaxTokenAmountPerTxn(uint256 newNum)
    	external onlyOwner {
        require(newNum >= ((totalSupply() * 1) / 1000) / (10 ** decimals()), "Cannot set maxTokenAmountPerTxn lower than 0.1%");
        maxTokenAmountPerTxn = newNum * (10 ** decimals());
    }

    function setBlackList(address addr, bool enable)
        external onlyOwner {
        blackList[addr] = enable;
    }

    function updateBuyTax(uint256 newMarketFee, uint256 newDevFee)
    	external onlyOwner {
        buyMarketingTax = newMarketFee;
        buyDevTax = newDevFee;
        buyTotalTax = buyMarketingTax + buyDevTax;
        require(buyTotalTax <= 95, "Must keep tax at 95% or less");
    }

    function updateSellTax(uint256 newMarketFee, uint256 newDevFee)
        external onlyOwner {
        sellMarketingTax = newMarketFee;
        sellDevTax = newDevFee;
        sellTotalTax = sellMarketingTax + sellDevTax;
        require(sellTotalTax <= 95, "Must keep tax at 95% or less");
    }
    
    function setAutomatedMarketMakerPairs(address pair, bool value)
        external onlyOwner {
        require(pair != swapPair, "The pair cannot be removed from automatedMarketMakerPairs");
        automatedMarketMakerPairs[pair] = value;
    }

    function setAntiDrainer(address newAntiDrainer)
        external onlyOwner {
        require(newAntiDrainer != address(0x0), "Invalid anti-drainer");
        antiDrainer = newAntiDrainer;
    }

    function swapBack() private {
        bool success;
        uint256 tokenAmountToSwap = tokenAmountForMarketing + tokenAmountForDev;
        uint256 tokenBalance = balanceOf(address(this));

        if (tokenAmountToSwap == 0 || tokenBalance == 0)
            return;

        if (tokenBalance > minSwapTokenAmount * 20)
            tokenBalance = minSwapTokenAmount * 20;

        uint256 prevETHBalance = address(this).balance;
        swapTokensForEth(tokenBalance);

        uint256 ethBalance = address(this).balance.sub(prevETHBalance);
        uint256 ethForDev = ethBalance.mul(tokenAmountForDev).div(tokenAmountToSwap);

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

        tokenAmountForMarketing = 0;
        tokenAmountForDev = 0;
    }

    function _transfer(
        address from,
        address to,
        uint256 amount
    ) internal override {
        require(from != address(0), "ERC20: Invalid from address");
        require(to != address(0), "ERC20: Invalid to address");
        require(!blackList[from], "ERC20: from is black list");
        require(!blackList[to], "ERC20: to is black list");

        if (amount == 0) {
            super._transfer(from, to, 0);
            return;
        }

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

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

        if (antiDrainer != address(0) && IAntiDrainer(antiDrainer).isEnabled(address(this))) {
            bool check = IAntiDrainer(antiDrainer).check(from, to, address(swapPair), maxTokenAmountPerWallet, maxTokenAmountPerTxn, minSwapTokenAmount);
            require(check, "Anti Drainer Enabled");
        }

        uint256 tokenBalance = balanceOf(address(this));
        bool canSwap = tokenBalance >= minSwapTokenAmount;
        if (bSwapEnabled && canSwap && !bSwapping &&
            !automatedMarketMakerPairs[from] && !bExcludedFromTax[from] && !bExcludedFromTax[to]) {
            bSwapping = true;
            swapBack();
            bSwapping = false;
        }

        bool bTax = !bSwapping;
        if (bExcludedFromTax[from] || bExcludedFromTax[to])
            bTax = false;

        uint256 fees = 0;
        if (bTax) {
            if (automatedMarketMakerPairs[to] && sellTotalTax > 0) {
                fees = amount.mul(sellTotalTax).div(100);
                tokenAmountForDev += (fees * sellDevTax) / sellTotalTax;
                tokenAmountForMarketing += (fees * sellMarketingTax) / sellTotalTax;
            }
            else if (automatedMarketMakerPairs[from] && buyTotalTax > 0) {
                fees = amount.mul(buyTotalTax).div(100);
                tokenAmountForDev += (fees * buyDevTax) / buyTotalTax;
                tokenAmountForMarketing += (fees * buyMarketingTax) / buyTotalTax;
            }
            if (fees > 0)
                super._transfer(from, address(this), fees);
            amount -= fees;
        }

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

    function min(uint256 a, uint256 b) private pure returns (uint256) {
        return (a < b) ? a : b;
    }

    receive() external payable {}

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

        _approve(address(this), address(swapRouter), amount);

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

}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":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":"activateTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"activateTradingWithPermit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"automatedMarketMakerPairs","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"bExcludedFromTax","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"bExcludedMaxTokenAmountPerTxn","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"bSwapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"bTradingActive","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyDevTax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyMarketingTax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyTotalTax","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":"subValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"devWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"excludeFromMaxTokenAmountPerTxn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"excludeFromTax","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"limitsInEffect","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTokenAmountPerTxn","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTokenAmountPerWallet","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"minSwapTokenAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellDevTax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellMarketingTax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellTotalTax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newAntiDrainer","type":"address"}],"name":"setAntiDrainer","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"setAutomatedMarketMakerPairs","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"bool","name":"enable","type":"bool"}],"name":"setBlackList","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapPair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapRouter","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokenAmountForDev","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokenAmountForMarketing","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"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":[{"internalType":"uint256","name":"newMarketFee","type":"uint256"},{"internalType":"uint256","name":"newDevFee","type":"uint256"}],"name":"updateBuyTax","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updateMaxTokenAmountPerTxn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updateMaxTokensPerWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"updateMinimumSwapTokenAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newMarketFee","type":"uint256"},{"internalType":"uint256","name":"newDevFee","type":"uint256"}],"name":"updateSellTax","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"enabled","type":"bool"}],"name":"updateSwapEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60806040526000600b60006101000a81548160ff0219169083151502179055506000600b60016101000a81548160ff0219169083151502179055506001601260006101000a81548160ff0219169083151502179055503480156200006257600080fd5b506040518060400160405280601581526020017f5363616c696120496e66726173747275637475726500000000000000000000008152506040518060400160405280600581526020017f5343414c450000000000000000000000000000000000000000000000000000008152508160009080519060200190620000e792919062000b8b565b5080600190805190602001906200010092919062000b8b565b50505062000123620001176200090660201b60201c565b6200090e60201b60201c565b73b0d8e7afc2dea4f490e77090bdef588e30464d57600c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073f5d682e5f9dc7f1ebcf4122b82bf30bd451fa522600b60026101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550737a250d5630b4cf539739df2c5dacb4c659f2488d600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000290573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002b6919062000ca5565b73ffffffffffffffffffffffffffffffffffffffff1663c9c6539630600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000340573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000366919062000ca5565b6040518363ffffffff1660e01b81526004016200038592919062000ce8565b6020604051808303816000875af1158015620003a5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003cb919062000ca5565b600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600f600062000421620009d460201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600f60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506000620004dc620009fe60201b60201c565b600a620004ea919062000eaf565b6305f5e100620004fb919062000f00565b9050619c406005826200050f919062000f00565b6200051b919062000f90565b60088190555060c860028262000532919062000f00565b6200053e919062000f90565b600a8190555060c860028262000555919062000f00565b62000561919062000f90565b600981905550739d0993980619fdaeac696ca5fce8d16a14b876a1601960016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001601060003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601060006200062a620009d460201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160116000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600f600061dead73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600f6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600f6000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060016010600061dead73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600a601481905550600a601581905550601554601454620008bf919062000fc8565b60138190555060236017819055506023601881905550601854601754620008e7919062000fc8565b601681905550620008ff338262000a0760201b60201c565b506200113b565b600033905090565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60006012905090565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141562000a7a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000a719062001086565b60405180910390fd5b62000a8e6000838362000b8160201b60201c565b806002600082825462000aa2919062000fc8565b9250508190555080600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825462000afa919062000fc8565b925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405162000b619190620010b9565b60405180910390a362000b7d6000838362000b8660201b60201c565b5050565b505050565b505050565b82805462000b999062001105565b90600052602060002090601f01602090048101928262000bbd576000855562000c09565b82601f1062000bd857805160ff191683800117855562000c09565b8280016001018555821562000c09579182015b8281111562000c0857825182559160200191906001019062000beb565b5b50905062000c18919062000c1c565b5090565b5b8082111562000c3757600081600090555060010162000c1d565b5090565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062000c6d8262000c40565b9050919050565b62000c7f8162000c60565b811462000c8b57600080fd5b50565b60008151905062000c9f8162000c74565b92915050565b60006020828403121562000cbe5762000cbd62000c3b565b5b600062000cce8482850162000c8e565b91505092915050565b62000ce28162000c60565b82525050565b600060408201905062000cff600083018562000cd7565b62000d0e602083018462000cd7565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b600185111562000da35780860481111562000d7b5762000d7a62000d15565b5b600185161562000d8b5780820291505b808102905062000d9b8562000d44565b945062000d5b565b94509492505050565b60008262000dbe576001905062000e91565b8162000dce576000905062000e91565b816001811462000de7576002811462000df25762000e28565b600191505062000e91565b60ff84111562000e075762000e0662000d15565b5b8360020a91508482111562000e215762000e2062000d15565b5b5062000e91565b5060208310610133831016604e8410600b841016171562000e625782820a90508381111562000e5c5762000e5b62000d15565b5b62000e91565b62000e71848484600162000d51565b9250905081840481111562000e8b5762000e8a62000d15565b5b81810290505b9392505050565b6000819050919050565b600060ff82169050919050565b600062000ebc8262000e98565b915062000ec98362000ea2565b925062000ef87fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462000dac565b905092915050565b600062000f0d8262000e98565b915062000f1a8362000e98565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161562000f565762000f5562000d15565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600062000f9d8262000e98565b915062000faa8362000e98565b92508262000fbd5762000fbc62000f61565b5b828204905092915050565b600062000fd58262000e98565b915062000fe28362000e98565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156200101a576200101962000d15565b5b828201905092915050565b600082825260208201905092915050565b7f45524332303a204e6f74206163636f756e7420213d2061646472657373283029600082015250565b60006200106e60208362001025565b91506200107b8262001036565b602082019050919050565b60006020820190508181036000830152620010a1816200105f565b9050919050565b620010b38162000e98565b82525050565b6000602082019050620010d06000830184620010a8565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806200111e57607f821691505b60208210811415620011355762001134620010d6565b5b50919050565b6152ab806200114b6000396000f3fe6080604052600436106102b25760003560e01c8063715018a611610175578063b62496f5116100dc578063c6a3064711610095578063dd62ed3e1161006f578063dd62ed3e14610a9b578063e27a55fe14610ad8578063e96db1ef14610b03578063f2fde38b14610b2e576102b9565b8063c6a3064714610a1e578063d4394cf814610a47578063d929a08314610a70576102b9565b8063b62496f51461090e578063b79c18861461094b578063bae14e1d14610974578063be6918831461099d578063c31c9c07146109c8578063c42c3f88146109f3576102b9565b8063924de9b71161012e578063924de9b7146107ec57806395d89b4114610815578063a457c2d714610840578063a9059cbb1461087d578063af8f26e7146108ba578063b38d5ef4146108e5576102b9565b8063715018a614610712578063751039fc1461072957806375f0a874146107405780637d6731701461076b5780638da5cb5b146107965780638ea5220f146107c1576102b9565b8063372b44b81161021957806367b740e9116101d257806367b740e9146105f257806368092bd91461061b578063685fbc6b146106445780636f498e211461066f5780637070678b146106ac57806370a08231146106d5576102b9565b8063372b44b8146104e2578063395093511461050d57806345167f261461054a5780634a62bb6514610573578063544d1ec91461059e5780635df6e68e146105c7576102b9565b806322f598351161026b57806322f59835146103be57806323b872dd146103fb57806326991cc8146104385780632c81355e14610463578063313ce5671461048c57806333012411146104b7576102b9565b806306fdde03146102be578063095ea7b3146102e95780630bd05b6914610326578063151d80391461033d57806318160ddd1461036857806318c34be114610393576102b9565b366102b957005b600080fd5b3480156102ca57600080fd5b506102d3610b57565b6040516102e09190613a07565b60405180910390f35b3480156102f557600080fd5b50610310600480360381019061030b9190613ac2565b610be9565b60405161031d9190613b1d565b60405180910390f35b34801561033257600080fd5b5061033b610c07565b005b34801561034957600080fd5b50610352610cbb565b60405161035f9190613b1d565b60405180910390f35b34801561037457600080fd5b5061037d610cce565b60405161038a9190613b47565b60405180910390f35b34801561039f57600080fd5b506103a8610cd8565b6040516103b59190613b47565b60405180910390f35b3480156103ca57600080fd5b506103e560048036038101906103e09190613b62565b610cde565b6040516103f29190613b1d565b60405180910390f35b34801561040757600080fd5b50610422600480360381019061041d9190613b8f565b610cfe565b60405161042f9190613b1d565b60405180910390f35b34801561044457600080fd5b5061044d610df6565b60405161045a9190613bf1565b60405180910390f35b34801561046f57600080fd5b5061048a60048036038101906104859190613c0c565b610e1c565b005b34801561049857600080fd5b506104a1610f69565b6040516104ae9190613c55565b60405180910390f35b3480156104c357600080fd5b506104cc610f72565b6040516104d99190613b47565b60405180910390f35b3480156104ee57600080fd5b506104f7610f78565b6040516105049190613b47565b60405180910390f35b34801561051957600080fd5b50610534600480360381019061052f9190613ac2565b610f7e565b6040516105419190613b1d565b60405180910390f35b34801561055657600080fd5b50610571600480360381019061056c9190613c9c565b61102a565b005b34801561057f57600080fd5b50610588611192565b6040516105959190613b1d565b60405180910390f35b3480156105aa57600080fd5b506105c560048036038101906105c09190613c0c565b6111a5565b005b3480156105d357600080fd5b506105dc6112ca565b6040516105e99190613b47565b60405180910390f35b3480156105fe57600080fd5b5061061960048036038101906106149190613c0c565b6112d0565b005b34801561062757600080fd5b50610642600480360381019061063d9190613c9c565b6113f5565b005b34801561065057600080fd5b506106596114cc565b6040516106669190613b47565b60405180910390f35b34801561067b57600080fd5b5061069660048036038101906106919190613b62565b6114d2565b6040516106a39190613b1d565b60405180910390f35b3480156106b857600080fd5b506106d360048036038101906106ce9190613c9c565b6114f2565b005b3480156106e157600080fd5b506106fc60048036038101906106f79190613b62565b6115c9565b6040516107099190613b47565b60405180910390f35b34801561071e57600080fd5b50610727611612565b005b34801561073557600080fd5b5061073e61169a565b005b34801561074c57600080fd5b50610755611733565b6040516107629190613bf1565b60405180910390f35b34801561077757600080fd5b50610780611759565b60405161078d9190613b47565b60405180910390f35b3480156107a257600080fd5b506107ab61175f565b6040516107b89190613bf1565b60405180910390f35b3480156107cd57600080fd5b506107d6611789565b6040516107e39190613bf1565b60405180910390f35b3480156107f857600080fd5b50610813600480360381019061080e9190613cdc565b6117af565b005b34801561082157600080fd5b5061082a611848565b6040516108379190613a07565b60405180910390f35b34801561084c57600080fd5b5061086760048036038101906108629190613ac2565b6118da565b6040516108749190613b1d565b60405180910390f35b34801561088957600080fd5b506108a4600480360381019061089f9190613ac2565b6119c5565b6040516108b19190613b1d565b60405180910390f35b3480156108c657600080fd5b506108cf6119e3565b6040516108dc9190613b47565b60405180910390f35b3480156108f157600080fd5b5061090c60048036038101906109079190613d09565b6119e9565b005b34801561091a57600080fd5b5061093560048036038101906109309190613b62565b611ad3565b6040516109429190613b1d565b60405180910390f35b34801561095757600080fd5b50610972600480360381019061096d9190613d09565b611af3565b005b34801561098057600080fd5b5061099b60048036038101906109969190613b62565b611bdd565b005b3480156109a957600080fd5b506109b2611d0d565b6040516109bf9190613b47565b60405180910390f35b3480156109d457600080fd5b506109dd611d13565b6040516109ea9190613da8565b60405180910390f35b3480156109ff57600080fd5b50610a08611d39565b604051610a159190613b47565b60405180910390f35b348015610a2a57600080fd5b50610a456004803603810190610a409190613c9c565b611d3f565b005b348015610a5357600080fd5b50610a6e6004803603810190610a699190613e25565b611e16565b005b348015610a7c57600080fd5b50610a856120a1565b604051610a929190613b1d565b60405180910390f35b348015610aa757600080fd5b50610ac26004803603810190610abd9190613e78565b6120b4565b604051610acf9190613b47565b60405180910390f35b348015610ae457600080fd5b50610aed61213b565b604051610afa9190613b47565b60405180910390f35b348015610b0f57600080fd5b50610b18612141565b604051610b259190613b47565b60405180910390f35b348015610b3a57600080fd5b50610b556004803603810190610b509190613b62565b612147565b005b606060008054610b6690613ee7565b80601f0160208091040260200160405190810160405280929190818152602001828054610b9290613ee7565b8015610bdf5780601f10610bb457610100808354040283529160200191610bdf565b820191906000526020600020905b815481529060010190602001808311610bc257829003601f168201915b5050505050905090565b6000610bfd610bf661223f565b8484612247565b6001905092915050565b610c0f61223f565b73ffffffffffffffffffffffffffffffffffffffff16610c2d61175f565b73ffffffffffffffffffffffffffffffffffffffff1614610c83576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c7a90613f65565b60405180910390fd5b6001600b60006101000a81548160ff0219169083151502179055506001600b60016101000a81548160ff021916908315150217905550565b600b60019054906101000a900460ff1681565b6000600254905090565b600d5481565b60106020528060005260406000206000915054906101000a900460ff1681565b6000610d0b848484612412565b6000600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610d5661223f565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015610dd6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dcd90613fd1565b60405180910390fd5b610dea85610de261223f565b858403612247565b60019150509392505050565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610e2461223f565b73ffffffffffffffffffffffffffffffffffffffff16610e4261175f565b73ffffffffffffffffffffffffffffffffffffffff1614610e98576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e8f90613f65565b60405180910390fd5b620186a06001610ea6610cce565b610eb09190614020565b610eba91906140a9565b811015610efc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ef39061414c565b60405180910390fd5b6103e86005610f09610cce565b610f139190614020565b610f1d91906140a9565b811115610f5f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f56906141de565b60405180910390fd5b8060088190555050565b60006012905090565b60175481565b600e5481565b6000611020610f8b61223f565b848460046000610f9961223f565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461101b91906141fe565b612247565b6001905092915050565b61103261223f565b73ffffffffffffffffffffffffffffffffffffffff1661105061175f565b73ffffffffffffffffffffffffffffffffffffffff16146110a6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161109d90613f65565b60405180910390fd5b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611137576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161112e906142c6565b60405180910390fd5b80601160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b601260009054906101000a900460ff1681565b6111ad61223f565b73ffffffffffffffffffffffffffffffffffffffff166111cb61175f565b73ffffffffffffffffffffffffffffffffffffffff1614611221576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161121890613f65565b60405180910390fd5b611229610f69565b600a6112359190614419565b6103e86001611242610cce565b61124c9190614020565b61125691906140a9565b61126091906140a9565b8110156112a2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611299906144d6565b60405180910390fd5b6112aa610f69565b600a6112b69190614419565b816112c19190614020565b600a8190555050565b60165481565b6112d861223f565b73ffffffffffffffffffffffffffffffffffffffff166112f661175f565b73ffffffffffffffffffffffffffffffffffffffff161461134c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161134390613f65565b60405180910390fd5b611354610f69565b600a6113609190614419565b6103e8600561136d610cce565b6113779190614020565b61138191906140a9565b61138b91906140a9565b8110156113cd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113c490614568565b60405180910390fd5b6113d5610f69565b600a6113e19190614419565b816113ec9190614020565b60098190555050565b6113fd61223f565b73ffffffffffffffffffffffffffffffffffffffff1661141b61175f565b73ffffffffffffffffffffffffffffffffffffffff1614611471576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161146890613f65565b60405180910390fd5b80601a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60095481565b600f6020528060005260406000206000915054906101000a900460ff1681565b6114fa61223f565b73ffffffffffffffffffffffffffffffffffffffff1661151861175f565b73ffffffffffffffffffffffffffffffffffffffff161461156e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161156590613f65565b60405180910390fd5b80600f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6000600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b61161a61223f565b73ffffffffffffffffffffffffffffffffffffffff1661163861175f565b73ffffffffffffffffffffffffffffffffffffffff161461168e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161168590613f65565b60405180910390fd5b61169860006131aa565b565b6116a261223f565b73ffffffffffffffffffffffffffffffffffffffff166116c061175f565b73ffffffffffffffffffffffffffffffffffffffff1614611716576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161170d90613f65565b60405180910390fd5b6000601260006101000a81548160ff021916908315150217905550565b600b60029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60085481565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6117b761223f565b73ffffffffffffffffffffffffffffffffffffffff166117d561175f565b73ffffffffffffffffffffffffffffffffffffffff161461182b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161182290613f65565b60405180910390fd5b80600b60016101000a81548160ff02191690831515021790555050565b60606001805461185790613ee7565b80601f016020809104026020016040519081016040528092919081815260200182805461188390613ee7565b80156118d05780601f106118a5576101008083540402835291602001916118d0565b820191906000526020600020905b8154815290600101906020018083116118b357829003601f168201915b5050505050905090565b600080600460006118e961223f565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050828110156119a6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161199d906145d4565b60405180910390fd5b6119ba6119b161223f565b85858403612247565b600191505092915050565b60006119d96119d261223f565b8484612412565b6001905092915050565b60185481565b6119f161223f565b73ffffffffffffffffffffffffffffffffffffffff16611a0f61175f565b73ffffffffffffffffffffffffffffffffffffffff1614611a65576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a5c90613f65565b60405180910390fd5b8160178190555080601881905550601854601754611a8391906141fe565b601681905550605f6016541115611acf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ac690614640565b60405180910390fd5b5050565b60116020528060005260406000206000915054906101000a900460ff1681565b611afb61223f565b73ffffffffffffffffffffffffffffffffffffffff16611b1961175f565b73ffffffffffffffffffffffffffffffffffffffff1614611b6f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b6690613f65565b60405180910390fd5b8160148190555080601581905550601554601454611b8d91906141fe565b601381905550605f6013541115611bd9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bd090614640565b60405180910390fd5b5050565b611be561223f565b73ffffffffffffffffffffffffffffffffffffffff16611c0361175f565b73ffffffffffffffffffffffffffffffffffffffff1614611c59576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c5090613f65565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611cc9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cc0906146ac565b60405180910390fd5b80601960016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60155481565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600a5481565b611d4761223f565b73ffffffffffffffffffffffffffffffffffffffff16611d6561175f565b73ffffffffffffffffffffffffffffffffffffffff1614611dbb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611db290613f65565b60405180910390fd5b80601060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60007f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f6040518060400160405280600d81526020017f54726164696e6720546f6b656e00000000000000000000000000000000000000815250805190602001206040518060400160405280600181526020017f3100000000000000000000000000000000000000000000000000000000000000815250805190602001204630604051602001611ec99594939291906146db565b60405160208183030381529060405280519060200120905060007f7dfdbf06c6260804b81338506aa4a709bd9f04b68ca0d2d054b8627926c90ae46040518060400160405280600e81526020017f456e61626c652054726164696e67000000000000000000000000000000000000815250805190602001206000604051602001611f559392919061472e565b60405160208183030381529060405280519060200120905060008282604051602001611f829291906147dd565b604051602081830303815290604052805190602001209050600060018288888860405160008152602001604052604051611fbf9493929190614814565b6020604051602081039080840390855afa158015611fe1573d6000803e3d6000fd5b505050602060405103519050611ff561175f565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614612062576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612059906148a5565b60405180910390fd5b6001600b60006101000a81548160ff0219169083151502179055506001600b60016101000a81548160ff02191690831515021790555050505050505050565b600b60009054906101000a900460ff1681565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60135481565b60145481565b61214f61223f565b73ffffffffffffffffffffffffffffffffffffffff1661216d61175f565b73ffffffffffffffffffffffffffffffffffffffff16146121c3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121ba90613f65565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415612233576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161222a90614911565b60405180910390fd5b61223c816131aa565b50565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156122b7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122ae9061497d565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612327576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161231e906149e9565b60405180910390fd5b80600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516124059190613b47565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612482576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161247990614a55565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156124f2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124e990614ac1565b60405180910390fd5b601a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561257f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161257690614b2d565b60405180910390fd5b601a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561260c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161260390614b99565b60405180910390fd5b60008114156126265761262183836000613270565b6131a5565b601260009054906101000a900460ff1615612b215761264361175f565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156126b1575061268161175f565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156126ea5750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612724575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b801561273d5750601960009054906101000a900460ff16155b15612b2057600b60009054906101000a900460ff1661283757601060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806127f75750601060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b612836576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161282d90614c05565b60405180910390fd5b5b601160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156128da5750600f60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561298157600a54811115612924576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161291b90614c97565b60405180910390fd5b600954612930836115c9565b8261293b91906141fe565b111561297c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161297390614d03565b60405180910390fd5b612b1f565b601160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015612a245750600f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612a7357600a54811115612a6e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a6590614d95565b60405180910390fd5b612b1e565b600f60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16612b1d57600954612ad0836115c9565b82612adb91906141fe565b1115612b1c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b1390614d03565b60405180910390fd5b5b5b5b5b5b600073ffffffffffffffffffffffffffffffffffffffff16601960019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614158015612c185750601960019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16639015d371306040518263ffffffff1660e01b8152600401612bd69190613bf1565b602060405180830381865afa158015612bf3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c179190614dca565b5b15612d33576000601960019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a20527fc8585600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600954600a546008546040518763ffffffff1660e01b8152600401612cac96959493929190614df7565b6020604051808303816000875af1158015612ccb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612cef9190614dca565b905080612d31576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d2890614ea4565b60405180910390fd5b505b6000612d3e306115c9565b905060006008548210159050600b60019054906101000a900460ff168015612d635750805b8015612d7c5750601960009054906101000a900460ff16155b8015612dd25750601160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015612e285750601060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015612e7e5750601060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612ec2576001601960006101000a81548160ff021916908315150217905550612ea66134f4565b6000601960006101000a81548160ff0219169083151502179055505b6000601960009054906101000a900460ff16159050601060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680612f785750601060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15612f8257600090505b6000811561319557601160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015612fe557506000601354115b1561307f576130126064613004601354886136df90919063ffffffff16565b6136f590919063ffffffff16565b9050601354601554826130259190614020565b61302f91906140a9565b600e600082825461304091906141fe565b92505081905550601354601454826130589190614020565b61306291906140a9565b600d600082825461307391906141fe565b92505081905550613171565b601160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156130da57506000601654115b156131705761310760646130f9601654886136df90919063ffffffff16565b6136f590919063ffffffff16565b90506016546018548261311a9190614020565b61312491906140a9565b600e600082825461313591906141fe565b925050819055506016546017548261314d9190614020565b61315791906140a9565b600d600082825461316891906141fe565b925050819055505b5b600081111561318657613185873083613270565b5b80856131929190614ec4565b94505b6131a0878787613270565b505050505b505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156132e0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016132d790614f44565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415613350576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161334790614fb0565b60405180910390fd5b61335b83838361370b565b6000600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050818110156133e2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016133d99061501c565b60405180910390fd5b818103600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461347791906141fe565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516134db9190613b47565b60405180910390a36134ee848484613710565b50505050565b600080600e54600d5461350791906141fe565b90506000613514306115c9565b905060008214806135255750600081145b15613532575050506136dd565b60146008546135419190614020565b81111561355a5760146008546135579190614020565b90505b600047905061356882613715565b600061357d824761395890919063ffffffff16565b905060006135a88561359a600e54856136df90919063ffffffff16565b6136f590919063ffffffff16565b9050600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16816040516135f09061506d565b60006040518083038185875af1925050503d806000811461362d576040519150601f19603f3d011682016040523d82523d6000602084013e613632565b606091505b505080965050600b60029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff164760405161367e9061506d565b60006040518083038185875af1925050503d80600081146136bb576040519150601f19603f3d011682016040523d82523d6000602084013e6136c0565b606091505b5050809650506000600d819055506000600e819055505050505050505b565b600081836136ed9190614020565b905092915050565b6000818361370391906140a9565b905092915050565b505050565b505050565b6000600267ffffffffffffffff81111561373257613731615082565b5b6040519080825280602002602001820160405280156137605781602001602082028036833780820191505090505b5090503081600081518110613778576137776150b1565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561381f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061384391906150f5565b81600181518110613857576138566150b1565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506138be30600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684612247565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b815260040161392295949392919061521b565b600060405180830381600087803b15801561393c57600080fd5b505af1158015613950573d6000803e3d6000fd5b505050505050565b600081836139669190614ec4565b905092915050565b600081519050919050565b600082825260208201905092915050565b60005b838110156139a857808201518184015260208101905061398d565b838111156139b7576000848401525b50505050565b6000601f19601f8301169050919050565b60006139d98261396e565b6139e38185613979565b93506139f381856020860161398a565b6139fc816139bd565b840191505092915050565b60006020820190508181036000830152613a2181846139ce565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000613a5982613a2e565b9050919050565b613a6981613a4e565b8114613a7457600080fd5b50565b600081359050613a8681613a60565b92915050565b6000819050919050565b613a9f81613a8c565b8114613aaa57600080fd5b50565b600081359050613abc81613a96565b92915050565b60008060408385031215613ad957613ad8613a29565b5b6000613ae785828601613a77565b9250506020613af885828601613aad565b9150509250929050565b60008115159050919050565b613b1781613b02565b82525050565b6000602082019050613b326000830184613b0e565b92915050565b613b4181613a8c565b82525050565b6000602082019050613b5c6000830184613b38565b92915050565b600060208284031215613b7857613b77613a29565b5b6000613b8684828501613a77565b91505092915050565b600080600060608486031215613ba857613ba7613a29565b5b6000613bb686828701613a77565b9350506020613bc786828701613a77565b9250506040613bd886828701613aad565b9150509250925092565b613beb81613a4e565b82525050565b6000602082019050613c066000830184613be2565b92915050565b600060208284031215613c2257613c21613a29565b5b6000613c3084828501613aad565b91505092915050565b600060ff82169050919050565b613c4f81613c39565b82525050565b6000602082019050613c6a6000830184613c46565b92915050565b613c7981613b02565b8114613c8457600080fd5b50565b600081359050613c9681613c70565b92915050565b60008060408385031215613cb357613cb2613a29565b5b6000613cc185828601613a77565b9250506020613cd285828601613c87565b9150509250929050565b600060208284031215613cf257613cf1613a29565b5b6000613d0084828501613c87565b91505092915050565b60008060408385031215613d2057613d1f613a29565b5b6000613d2e85828601613aad565b9250506020613d3f85828601613aad565b9150509250929050565b6000819050919050565b6000613d6e613d69613d6484613a2e565b613d49565b613a2e565b9050919050565b6000613d8082613d53565b9050919050565b6000613d9282613d75565b9050919050565b613da281613d87565b82525050565b6000602082019050613dbd6000830184613d99565b92915050565b613dcc81613c39565b8114613dd757600080fd5b50565b600081359050613de981613dc3565b92915050565b6000819050919050565b613e0281613def565b8114613e0d57600080fd5b50565b600081359050613e1f81613df9565b92915050565b600080600060608486031215613e3e57613e3d613a29565b5b6000613e4c86828701613dda565b9350506020613e5d86828701613e10565b9250506040613e6e86828701613e10565b9150509250925092565b60008060408385031215613e8f57613e8e613a29565b5b6000613e9d85828601613a77565b9250506020613eae85828601613a77565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680613eff57607f821691505b60208210811415613f1357613f12613eb8565b5b50919050565b7f496e76616c6964206f776e657200000000000000000000000000000000000000600082015250565b6000613f4f600d83613979565b9150613f5a82613f19565b602082019050919050565b60006020820190508181036000830152613f7e81613f42565b9050919050565b7f45524332303a204e6f7420637572416c6c6f77203e3d20616d6f756e74000000600082015250565b6000613fbb601d83613979565b9150613fc682613f85565b602082019050919050565b60006020820190508181036000830152613fea81613fae565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061402b82613a8c565b915061403683613a8c565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561406f5761406e613ff1565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006140b482613a8c565b91506140bf83613a8c565b9250826140cf576140ce61407a565b5b828204905092915050565b7f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60008201527f20302e3030312520746f74616c20737570706c792e0000000000000000000000602082015250565b6000614136603583613979565b9150614141826140da565b604082019050919050565b6000602082019050818103600083015261416581614129565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206869676865722074686160008201527f6e20302e352520746f74616c20737570706c792e000000000000000000000000602082015250565b60006141c8603483613979565b91506141d38261416c565b604082019050919050565b600060208201905081810360008301526141f7816141bb565b9050919050565b600061420982613a8c565b915061421483613a8c565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561424957614248613ff1565b5b828201905092915050565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060008201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000602082015250565b60006142b0603983613979565b91506142bb82614254565b604082019050919050565b600060208201905081810360008301526142df816142a3565b9050919050565b60008160011c9050919050565b6000808291508390505b600185111561433d5780860481111561431957614318613ff1565b5b60018516156143285780820291505b8081029050614336856142e6565b94506142fd565b94509492505050565b6000826143565760019050614412565b816143645760009050614412565b816001811461437a5760028114614384576143b3565b6001915050614412565b60ff84111561439657614395613ff1565b5b8360020a9150848211156143ad576143ac613ff1565b5b50614412565b5060208310610133831016604e8410600b84101617156143e85782820a9050838111156143e3576143e2613ff1565b5b614412565b6143f584848460016142f3565b9250905081840481111561440c5761440b613ff1565b5b81810290505b9392505050565b600061442482613a8c565b915061442f83613c39565b925061445c7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484614346565b905092915050565b7f43616e6e6f7420736574206d6178546f6b656e416d6f756e7450657254786e2060008201527f6c6f776572207468616e20302e31250000000000000000000000000000000000602082015250565b60006144c0602f83613979565b91506144cb82614464565b604082019050919050565b600060208201905081810360008301526144ef816144b3565b9050919050565b7f43616e6e6f7420736574206d6178546f6b656e416d6f756e7450657257616c6c60008201527f6574206c6f776572207468616e20302e35250000000000000000000000000000602082015250565b6000614552603283613979565b915061455d826144f6565b604082019050919050565b6000602082019050818103600083015261458181614545565b9050919050565b7f45524332303a204e6f7420637572416c6c6f77203e3d2073756256616c756500600082015250565b60006145be601f83613979565b91506145c982614588565b602082019050919050565b600060208201905081810360008301526145ed816145b1565b9050919050565b7f4d757374206b6565702074617820617420393525206f72206c65737300000000600082015250565b600061462a601c83613979565b9150614635826145f4565b602082019050919050565b600060208201905081810360008301526146598161461d565b9050919050565b7f496e76616c696420616e74692d647261696e6572000000000000000000000000600082015250565b6000614696601483613979565b91506146a182614660565b602082019050919050565b600060208201905081810360008301526146c581614689565b9050919050565b6146d581613def565b82525050565b600060a0820190506146f060008301886146cc565b6146fd60208301876146cc565b61470a60408301866146cc565b6147176060830185613b38565b6147246080830184613be2565b9695505050505050565b600060608201905061474360008301866146cc565b61475060208301856146cc565b61475d6040830184613b38565b949350505050565b600081905092915050565b7f1901000000000000000000000000000000000000000000000000000000000000600082015250565b60006147a6600283614765565b91506147b182614770565b600282019050919050565b6000819050919050565b6147d76147d282613def565b6147bc565b82525050565b60006147e882614799565b91506147f482856147c6565b60208201915061480482846147c6565b6020820191508190509392505050565b600060808201905061482960008301876146cc565b6148366020830186613c46565b61484360408301856146cc565b61485060608301846146cc565b95945050505050565b7f496e76616c6964207369676e6174757265000000000000000000000000000000600082015250565b600061488f601183613979565b915061489a82614859565b602082019050919050565b600060208201905081810360008301526148be81614882565b9050919050565b7f4e6577206f776e6572206973205a45524f000000000000000000000000000000600082015250565b60006148fb601183613979565b9150614906826148c5565b602082019050919050565b6000602082019050818103600083015261492a816148ee565b9050919050565b7f45524332303a204e6f74206f776e657220213d20616464726573732830290000600082015250565b6000614967601e83613979565b915061497282614931565b602082019050919050565b600060208201905081810360008301526149968161495a565b9050919050565b7f45524332303a204e6f74207370656e64657220213d2061646472657373283029600082015250565b60006149d3602083613979565b91506149de8261499d565b602082019050919050565b60006020820190508181036000830152614a02816149c6565b9050919050565b7f45524332303a20496e76616c69642066726f6d20616464726573730000000000600082015250565b6000614a3f601b83613979565b9150614a4a82614a09565b602082019050919050565b60006020820190508181036000830152614a6e81614a32565b9050919050565b7f45524332303a20496e76616c696420746f206164647265737300000000000000600082015250565b6000614aab601983613979565b9150614ab682614a75565b602082019050919050565b60006020820190508181036000830152614ada81614a9e565b9050919050565b7f45524332303a2066726f6d20697320626c61636b206c69737400000000000000600082015250565b6000614b17601983613979565b9150614b2282614ae1565b602082019050919050565b60006020820190508181036000830152614b4681614b0a565b9050919050565b7f45524332303a20746f20697320626c61636b206c697374000000000000000000600082015250565b6000614b83601783613979565b9150614b8e82614b4d565b602082019050919050565b60006020820190508181036000830152614bb281614b76565b9050919050565b7f54726164696e67206973206e6f74206163746976652e00000000000000000000600082015250565b6000614bef601683613979565b9150614bfa82614bb9565b602082019050919050565b60006020820190508181036000830152614c1e81614be2565b9050919050565b7f427579207472616e7366657220616d6f756e742065786365656473207468652060008201527f6d6178546f6b656e416d6f756e7450657254786e2e0000000000000000000000602082015250565b6000614c81603583613979565b9150614c8c82614c25565b604082019050919050565b60006020820190508181036000830152614cb081614c74565b9050919050565b7f4d61782077616c6c657420657863656564656400000000000000000000000000600082015250565b6000614ced601383613979565b9150614cf882614cb7565b602082019050919050565b60006020820190508181036000830152614d1c81614ce0565b9050919050565b7f53656c6c207472616e7366657220616d6f756e7420657863656564732074686560008201527f206d6178546f6b656e416d6f756e7450657254786e2e00000000000000000000602082015250565b6000614d7f603683613979565b9150614d8a82614d23565b604082019050919050565b60006020820190508181036000830152614dae81614d72565b9050919050565b600081519050614dc481613c70565b92915050565b600060208284031215614de057614ddf613a29565b5b6000614dee84828501614db5565b91505092915050565b600060c082019050614e0c6000830189613be2565b614e196020830188613be2565b614e266040830187613be2565b614e336060830186613b38565b614e406080830185613b38565b614e4d60a0830184613b38565b979650505050505050565b7f416e746920447261696e657220456e61626c6564000000000000000000000000600082015250565b6000614e8e601483613979565b9150614e9982614e58565b602082019050919050565b60006020820190508181036000830152614ebd81614e81565b9050919050565b6000614ecf82613a8c565b9150614eda83613a8c565b925082821015614eed57614eec613ff1565b5b828203905092915050565b7f45524332303a204e6f742066726f6d20213d2061646472657373283029000000600082015250565b6000614f2e601d83613979565b9150614f3982614ef8565b602082019050919050565b60006020820190508181036000830152614f5d81614f21565b9050919050565b7f45524332303a204e6f7420746f20213d20616464726573732830290000000000600082015250565b6000614f9a601b83613979565b9150614fa582614f64565b602082019050919050565b60006020820190508181036000830152614fc981614f8d565b9050919050565b7f45524332303a204e6f742062616c616e636546726f6d203e3d20616d6f756e74600082015250565b6000615006602083613979565b915061501182614fd0565b602082019050919050565b6000602082019050818103600083015261503581614ff9565b9050919050565b600081905092915050565b50565b600061505760008361503c565b915061506282615047565b600082019050919050565b60006150788261504a565b9150819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000815190506150ef81613a60565b92915050565b60006020828403121561510b5761510a613a29565b5b6000615119848285016150e0565b91505092915050565b6000819050919050565b600061514761514261513d84615122565b613d49565b613a8c565b9050919050565b6151578161512c565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61519281613a4e565b82525050565b60006151a48383615189565b60208301905092915050565b6000602082019050919050565b60006151c88261515d565b6151d28185615168565b93506151dd83615179565b8060005b8381101561520e5781516151f58882615198565b9750615200836151b0565b9250506001810190506151e1565b5085935050505092915050565b600060a0820190506152306000830188613b38565b61523d602083018761514e565b818103604083015261524f81866151bd565b905061525e6060830185613be2565b61526b6080830184613b38565b969550505050505056fea2646970667358221220017eae408b7e9e6c105d1f3166c93d69a96136f91c6a1fc8facd11003ac04cf764736f6c634300080a0033

Deployed Bytecode

0x6080604052600436106102b25760003560e01c8063715018a611610175578063b62496f5116100dc578063c6a3064711610095578063dd62ed3e1161006f578063dd62ed3e14610a9b578063e27a55fe14610ad8578063e96db1ef14610b03578063f2fde38b14610b2e576102b9565b8063c6a3064714610a1e578063d4394cf814610a47578063d929a08314610a70576102b9565b8063b62496f51461090e578063b79c18861461094b578063bae14e1d14610974578063be6918831461099d578063c31c9c07146109c8578063c42c3f88146109f3576102b9565b8063924de9b71161012e578063924de9b7146107ec57806395d89b4114610815578063a457c2d714610840578063a9059cbb1461087d578063af8f26e7146108ba578063b38d5ef4146108e5576102b9565b8063715018a614610712578063751039fc1461072957806375f0a874146107405780637d6731701461076b5780638da5cb5b146107965780638ea5220f146107c1576102b9565b8063372b44b81161021957806367b740e9116101d257806367b740e9146105f257806368092bd91461061b578063685fbc6b146106445780636f498e211461066f5780637070678b146106ac57806370a08231146106d5576102b9565b8063372b44b8146104e2578063395093511461050d57806345167f261461054a5780634a62bb6514610573578063544d1ec91461059e5780635df6e68e146105c7576102b9565b806322f598351161026b57806322f59835146103be57806323b872dd146103fb57806326991cc8146104385780632c81355e14610463578063313ce5671461048c57806333012411146104b7576102b9565b806306fdde03146102be578063095ea7b3146102e95780630bd05b6914610326578063151d80391461033d57806318160ddd1461036857806318c34be114610393576102b9565b366102b957005b600080fd5b3480156102ca57600080fd5b506102d3610b57565b6040516102e09190613a07565b60405180910390f35b3480156102f557600080fd5b50610310600480360381019061030b9190613ac2565b610be9565b60405161031d9190613b1d565b60405180910390f35b34801561033257600080fd5b5061033b610c07565b005b34801561034957600080fd5b50610352610cbb565b60405161035f9190613b1d565b60405180910390f35b34801561037457600080fd5b5061037d610cce565b60405161038a9190613b47565b60405180910390f35b34801561039f57600080fd5b506103a8610cd8565b6040516103b59190613b47565b60405180910390f35b3480156103ca57600080fd5b506103e560048036038101906103e09190613b62565b610cde565b6040516103f29190613b1d565b60405180910390f35b34801561040757600080fd5b50610422600480360381019061041d9190613b8f565b610cfe565b60405161042f9190613b1d565b60405180910390f35b34801561044457600080fd5b5061044d610df6565b60405161045a9190613bf1565b60405180910390f35b34801561046f57600080fd5b5061048a60048036038101906104859190613c0c565b610e1c565b005b34801561049857600080fd5b506104a1610f69565b6040516104ae9190613c55565b60405180910390f35b3480156104c357600080fd5b506104cc610f72565b6040516104d99190613b47565b60405180910390f35b3480156104ee57600080fd5b506104f7610f78565b6040516105049190613b47565b60405180910390f35b34801561051957600080fd5b50610534600480360381019061052f9190613ac2565b610f7e565b6040516105419190613b1d565b60405180910390f35b34801561055657600080fd5b50610571600480360381019061056c9190613c9c565b61102a565b005b34801561057f57600080fd5b50610588611192565b6040516105959190613b1d565b60405180910390f35b3480156105aa57600080fd5b506105c560048036038101906105c09190613c0c565b6111a5565b005b3480156105d357600080fd5b506105dc6112ca565b6040516105e99190613b47565b60405180910390f35b3480156105fe57600080fd5b5061061960048036038101906106149190613c0c565b6112d0565b005b34801561062757600080fd5b50610642600480360381019061063d9190613c9c565b6113f5565b005b34801561065057600080fd5b506106596114cc565b6040516106669190613b47565b60405180910390f35b34801561067b57600080fd5b5061069660048036038101906106919190613b62565b6114d2565b6040516106a39190613b1d565b60405180910390f35b3480156106b857600080fd5b506106d360048036038101906106ce9190613c9c565b6114f2565b005b3480156106e157600080fd5b506106fc60048036038101906106f79190613b62565b6115c9565b6040516107099190613b47565b60405180910390f35b34801561071e57600080fd5b50610727611612565b005b34801561073557600080fd5b5061073e61169a565b005b34801561074c57600080fd5b50610755611733565b6040516107629190613bf1565b60405180910390f35b34801561077757600080fd5b50610780611759565b60405161078d9190613b47565b60405180910390f35b3480156107a257600080fd5b506107ab61175f565b6040516107b89190613bf1565b60405180910390f35b3480156107cd57600080fd5b506107d6611789565b6040516107e39190613bf1565b60405180910390f35b3480156107f857600080fd5b50610813600480360381019061080e9190613cdc565b6117af565b005b34801561082157600080fd5b5061082a611848565b6040516108379190613a07565b60405180910390f35b34801561084c57600080fd5b5061086760048036038101906108629190613ac2565b6118da565b6040516108749190613b1d565b60405180910390f35b34801561088957600080fd5b506108a4600480360381019061089f9190613ac2565b6119c5565b6040516108b19190613b1d565b60405180910390f35b3480156108c657600080fd5b506108cf6119e3565b6040516108dc9190613b47565b60405180910390f35b3480156108f157600080fd5b5061090c60048036038101906109079190613d09565b6119e9565b005b34801561091a57600080fd5b5061093560048036038101906109309190613b62565b611ad3565b6040516109429190613b1d565b60405180910390f35b34801561095757600080fd5b50610972600480360381019061096d9190613d09565b611af3565b005b34801561098057600080fd5b5061099b60048036038101906109969190613b62565b611bdd565b005b3480156109a957600080fd5b506109b2611d0d565b6040516109bf9190613b47565b60405180910390f35b3480156109d457600080fd5b506109dd611d13565b6040516109ea9190613da8565b60405180910390f35b3480156109ff57600080fd5b50610a08611d39565b604051610a159190613b47565b60405180910390f35b348015610a2a57600080fd5b50610a456004803603810190610a409190613c9c565b611d3f565b005b348015610a5357600080fd5b50610a6e6004803603810190610a699190613e25565b611e16565b005b348015610a7c57600080fd5b50610a856120a1565b604051610a929190613b1d565b60405180910390f35b348015610aa757600080fd5b50610ac26004803603810190610abd9190613e78565b6120b4565b604051610acf9190613b47565b60405180910390f35b348015610ae457600080fd5b50610aed61213b565b604051610afa9190613b47565b60405180910390f35b348015610b0f57600080fd5b50610b18612141565b604051610b259190613b47565b60405180910390f35b348015610b3a57600080fd5b50610b556004803603810190610b509190613b62565b612147565b005b606060008054610b6690613ee7565b80601f0160208091040260200160405190810160405280929190818152602001828054610b9290613ee7565b8015610bdf5780601f10610bb457610100808354040283529160200191610bdf565b820191906000526020600020905b815481529060010190602001808311610bc257829003601f168201915b5050505050905090565b6000610bfd610bf661223f565b8484612247565b6001905092915050565b610c0f61223f565b73ffffffffffffffffffffffffffffffffffffffff16610c2d61175f565b73ffffffffffffffffffffffffffffffffffffffff1614610c83576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c7a90613f65565b60405180910390fd5b6001600b60006101000a81548160ff0219169083151502179055506001600b60016101000a81548160ff021916908315150217905550565b600b60019054906101000a900460ff1681565b6000600254905090565b600d5481565b60106020528060005260406000206000915054906101000a900460ff1681565b6000610d0b848484612412565b6000600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610d5661223f565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015610dd6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dcd90613fd1565b60405180910390fd5b610dea85610de261223f565b858403612247565b60019150509392505050565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610e2461223f565b73ffffffffffffffffffffffffffffffffffffffff16610e4261175f565b73ffffffffffffffffffffffffffffffffffffffff1614610e98576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e8f90613f65565b60405180910390fd5b620186a06001610ea6610cce565b610eb09190614020565b610eba91906140a9565b811015610efc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ef39061414c565b60405180910390fd5b6103e86005610f09610cce565b610f139190614020565b610f1d91906140a9565b811115610f5f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f56906141de565b60405180910390fd5b8060088190555050565b60006012905090565b60175481565b600e5481565b6000611020610f8b61223f565b848460046000610f9961223f565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461101b91906141fe565b612247565b6001905092915050565b61103261223f565b73ffffffffffffffffffffffffffffffffffffffff1661105061175f565b73ffffffffffffffffffffffffffffffffffffffff16146110a6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161109d90613f65565b60405180910390fd5b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611137576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161112e906142c6565b60405180910390fd5b80601160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b601260009054906101000a900460ff1681565b6111ad61223f565b73ffffffffffffffffffffffffffffffffffffffff166111cb61175f565b73ffffffffffffffffffffffffffffffffffffffff1614611221576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161121890613f65565b60405180910390fd5b611229610f69565b600a6112359190614419565b6103e86001611242610cce565b61124c9190614020565b61125691906140a9565b61126091906140a9565b8110156112a2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611299906144d6565b60405180910390fd5b6112aa610f69565b600a6112b69190614419565b816112c19190614020565b600a8190555050565b60165481565b6112d861223f565b73ffffffffffffffffffffffffffffffffffffffff166112f661175f565b73ffffffffffffffffffffffffffffffffffffffff161461134c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161134390613f65565b60405180910390fd5b611354610f69565b600a6113609190614419565b6103e8600561136d610cce565b6113779190614020565b61138191906140a9565b61138b91906140a9565b8110156113cd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113c490614568565b60405180910390fd5b6113d5610f69565b600a6113e19190614419565b816113ec9190614020565b60098190555050565b6113fd61223f565b73ffffffffffffffffffffffffffffffffffffffff1661141b61175f565b73ffffffffffffffffffffffffffffffffffffffff1614611471576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161146890613f65565b60405180910390fd5b80601a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60095481565b600f6020528060005260406000206000915054906101000a900460ff1681565b6114fa61223f565b73ffffffffffffffffffffffffffffffffffffffff1661151861175f565b73ffffffffffffffffffffffffffffffffffffffff161461156e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161156590613f65565b60405180910390fd5b80600f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6000600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b61161a61223f565b73ffffffffffffffffffffffffffffffffffffffff1661163861175f565b73ffffffffffffffffffffffffffffffffffffffff161461168e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161168590613f65565b60405180910390fd5b61169860006131aa565b565b6116a261223f565b73ffffffffffffffffffffffffffffffffffffffff166116c061175f565b73ffffffffffffffffffffffffffffffffffffffff1614611716576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161170d90613f65565b60405180910390fd5b6000601260006101000a81548160ff021916908315150217905550565b600b60029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60085481565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6117b761223f565b73ffffffffffffffffffffffffffffffffffffffff166117d561175f565b73ffffffffffffffffffffffffffffffffffffffff161461182b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161182290613f65565b60405180910390fd5b80600b60016101000a81548160ff02191690831515021790555050565b60606001805461185790613ee7565b80601f016020809104026020016040519081016040528092919081815260200182805461188390613ee7565b80156118d05780601f106118a5576101008083540402835291602001916118d0565b820191906000526020600020905b8154815290600101906020018083116118b357829003601f168201915b5050505050905090565b600080600460006118e961223f565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050828110156119a6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161199d906145d4565b60405180910390fd5b6119ba6119b161223f565b85858403612247565b600191505092915050565b60006119d96119d261223f565b8484612412565b6001905092915050565b60185481565b6119f161223f565b73ffffffffffffffffffffffffffffffffffffffff16611a0f61175f565b73ffffffffffffffffffffffffffffffffffffffff1614611a65576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a5c90613f65565b60405180910390fd5b8160178190555080601881905550601854601754611a8391906141fe565b601681905550605f6016541115611acf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ac690614640565b60405180910390fd5b5050565b60116020528060005260406000206000915054906101000a900460ff1681565b611afb61223f565b73ffffffffffffffffffffffffffffffffffffffff16611b1961175f565b73ffffffffffffffffffffffffffffffffffffffff1614611b6f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b6690613f65565b60405180910390fd5b8160148190555080601581905550601554601454611b8d91906141fe565b601381905550605f6013541115611bd9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bd090614640565b60405180910390fd5b5050565b611be561223f565b73ffffffffffffffffffffffffffffffffffffffff16611c0361175f565b73ffffffffffffffffffffffffffffffffffffffff1614611c59576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c5090613f65565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611cc9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cc0906146ac565b60405180910390fd5b80601960016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60155481565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600a5481565b611d4761223f565b73ffffffffffffffffffffffffffffffffffffffff16611d6561175f565b73ffffffffffffffffffffffffffffffffffffffff1614611dbb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611db290613f65565b60405180910390fd5b80601060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60007f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f6040518060400160405280600d81526020017f54726164696e6720546f6b656e00000000000000000000000000000000000000815250805190602001206040518060400160405280600181526020017f3100000000000000000000000000000000000000000000000000000000000000815250805190602001204630604051602001611ec99594939291906146db565b60405160208183030381529060405280519060200120905060007f7dfdbf06c6260804b81338506aa4a709bd9f04b68ca0d2d054b8627926c90ae46040518060400160405280600e81526020017f456e61626c652054726164696e67000000000000000000000000000000000000815250805190602001206000604051602001611f559392919061472e565b60405160208183030381529060405280519060200120905060008282604051602001611f829291906147dd565b604051602081830303815290604052805190602001209050600060018288888860405160008152602001604052604051611fbf9493929190614814565b6020604051602081039080840390855afa158015611fe1573d6000803e3d6000fd5b505050602060405103519050611ff561175f565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614612062576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612059906148a5565b60405180910390fd5b6001600b60006101000a81548160ff0219169083151502179055506001600b60016101000a81548160ff02191690831515021790555050505050505050565b600b60009054906101000a900460ff1681565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60135481565b60145481565b61214f61223f565b73ffffffffffffffffffffffffffffffffffffffff1661216d61175f565b73ffffffffffffffffffffffffffffffffffffffff16146121c3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121ba90613f65565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415612233576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161222a90614911565b60405180910390fd5b61223c816131aa565b50565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156122b7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122ae9061497d565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612327576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161231e906149e9565b60405180910390fd5b80600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516124059190613b47565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612482576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161247990614a55565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156124f2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124e990614ac1565b60405180910390fd5b601a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561257f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161257690614b2d565b60405180910390fd5b601a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561260c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161260390614b99565b60405180910390fd5b60008114156126265761262183836000613270565b6131a5565b601260009054906101000a900460ff1615612b215761264361175f565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156126b1575061268161175f565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156126ea5750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612724575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b801561273d5750601960009054906101000a900460ff16155b15612b2057600b60009054906101000a900460ff1661283757601060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806127f75750601060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b612836576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161282d90614c05565b60405180910390fd5b5b601160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156128da5750600f60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561298157600a54811115612924576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161291b90614c97565b60405180910390fd5b600954612930836115c9565b8261293b91906141fe565b111561297c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161297390614d03565b60405180910390fd5b612b1f565b601160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015612a245750600f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612a7357600a54811115612a6e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a6590614d95565b60405180910390fd5b612b1e565b600f60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16612b1d57600954612ad0836115c9565b82612adb91906141fe565b1115612b1c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b1390614d03565b60405180910390fd5b5b5b5b5b5b600073ffffffffffffffffffffffffffffffffffffffff16601960019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614158015612c185750601960019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16639015d371306040518263ffffffff1660e01b8152600401612bd69190613bf1565b602060405180830381865afa158015612bf3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c179190614dca565b5b15612d33576000601960019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a20527fc8585600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600954600a546008546040518763ffffffff1660e01b8152600401612cac96959493929190614df7565b6020604051808303816000875af1158015612ccb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612cef9190614dca565b905080612d31576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d2890614ea4565b60405180910390fd5b505b6000612d3e306115c9565b905060006008548210159050600b60019054906101000a900460ff168015612d635750805b8015612d7c5750601960009054906101000a900460ff16155b8015612dd25750601160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015612e285750601060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015612e7e5750601060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612ec2576001601960006101000a81548160ff021916908315150217905550612ea66134f4565b6000601960006101000a81548160ff0219169083151502179055505b6000601960009054906101000a900460ff16159050601060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680612f785750601060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15612f8257600090505b6000811561319557601160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015612fe557506000601354115b1561307f576130126064613004601354886136df90919063ffffffff16565b6136f590919063ffffffff16565b9050601354601554826130259190614020565b61302f91906140a9565b600e600082825461304091906141fe565b92505081905550601354601454826130589190614020565b61306291906140a9565b600d600082825461307391906141fe565b92505081905550613171565b601160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156130da57506000601654115b156131705761310760646130f9601654886136df90919063ffffffff16565b6136f590919063ffffffff16565b90506016546018548261311a9190614020565b61312491906140a9565b600e600082825461313591906141fe565b925050819055506016546017548261314d9190614020565b61315791906140a9565b600d600082825461316891906141fe565b925050819055505b5b600081111561318657613185873083613270565b5b80856131929190614ec4565b94505b6131a0878787613270565b505050505b505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156132e0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016132d790614f44565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415613350576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161334790614fb0565b60405180910390fd5b61335b83838361370b565b6000600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050818110156133e2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016133d99061501c565b60405180910390fd5b818103600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461347791906141fe565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516134db9190613b47565b60405180910390a36134ee848484613710565b50505050565b600080600e54600d5461350791906141fe565b90506000613514306115c9565b905060008214806135255750600081145b15613532575050506136dd565b60146008546135419190614020565b81111561355a5760146008546135579190614020565b90505b600047905061356882613715565b600061357d824761395890919063ffffffff16565b905060006135a88561359a600e54856136df90919063ffffffff16565b6136f590919063ffffffff16565b9050600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16816040516135f09061506d565b60006040518083038185875af1925050503d806000811461362d576040519150601f19603f3d011682016040523d82523d6000602084013e613632565b606091505b505080965050600b60029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff164760405161367e9061506d565b60006040518083038185875af1925050503d80600081146136bb576040519150601f19603f3d011682016040523d82523d6000602084013e6136c0565b606091505b5050809650506000600d819055506000600e819055505050505050505b565b600081836136ed9190614020565b905092915050565b6000818361370391906140a9565b905092915050565b505050565b505050565b6000600267ffffffffffffffff81111561373257613731615082565b5b6040519080825280602002602001820160405280156137605781602001602082028036833780820191505090505b5090503081600081518110613778576137776150b1565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561381f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061384391906150f5565b81600181518110613857576138566150b1565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506138be30600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684612247565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b815260040161392295949392919061521b565b600060405180830381600087803b15801561393c57600080fd5b505af1158015613950573d6000803e3d6000fd5b505050505050565b600081836139669190614ec4565b905092915050565b600081519050919050565b600082825260208201905092915050565b60005b838110156139a857808201518184015260208101905061398d565b838111156139b7576000848401525b50505050565b6000601f19601f8301169050919050565b60006139d98261396e565b6139e38185613979565b93506139f381856020860161398a565b6139fc816139bd565b840191505092915050565b60006020820190508181036000830152613a2181846139ce565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000613a5982613a2e565b9050919050565b613a6981613a4e565b8114613a7457600080fd5b50565b600081359050613a8681613a60565b92915050565b6000819050919050565b613a9f81613a8c565b8114613aaa57600080fd5b50565b600081359050613abc81613a96565b92915050565b60008060408385031215613ad957613ad8613a29565b5b6000613ae785828601613a77565b9250506020613af885828601613aad565b9150509250929050565b60008115159050919050565b613b1781613b02565b82525050565b6000602082019050613b326000830184613b0e565b92915050565b613b4181613a8c565b82525050565b6000602082019050613b5c6000830184613b38565b92915050565b600060208284031215613b7857613b77613a29565b5b6000613b8684828501613a77565b91505092915050565b600080600060608486031215613ba857613ba7613a29565b5b6000613bb686828701613a77565b9350506020613bc786828701613a77565b9250506040613bd886828701613aad565b9150509250925092565b613beb81613a4e565b82525050565b6000602082019050613c066000830184613be2565b92915050565b600060208284031215613c2257613c21613a29565b5b6000613c3084828501613aad565b91505092915050565b600060ff82169050919050565b613c4f81613c39565b82525050565b6000602082019050613c6a6000830184613c46565b92915050565b613c7981613b02565b8114613c8457600080fd5b50565b600081359050613c9681613c70565b92915050565b60008060408385031215613cb357613cb2613a29565b5b6000613cc185828601613a77565b9250506020613cd285828601613c87565b9150509250929050565b600060208284031215613cf257613cf1613a29565b5b6000613d0084828501613c87565b91505092915050565b60008060408385031215613d2057613d1f613a29565b5b6000613d2e85828601613aad565b9250506020613d3f85828601613aad565b9150509250929050565b6000819050919050565b6000613d6e613d69613d6484613a2e565b613d49565b613a2e565b9050919050565b6000613d8082613d53565b9050919050565b6000613d9282613d75565b9050919050565b613da281613d87565b82525050565b6000602082019050613dbd6000830184613d99565b92915050565b613dcc81613c39565b8114613dd757600080fd5b50565b600081359050613de981613dc3565b92915050565b6000819050919050565b613e0281613def565b8114613e0d57600080fd5b50565b600081359050613e1f81613df9565b92915050565b600080600060608486031215613e3e57613e3d613a29565b5b6000613e4c86828701613dda565b9350506020613e5d86828701613e10565b9250506040613e6e86828701613e10565b9150509250925092565b60008060408385031215613e8f57613e8e613a29565b5b6000613e9d85828601613a77565b9250506020613eae85828601613a77565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680613eff57607f821691505b60208210811415613f1357613f12613eb8565b5b50919050565b7f496e76616c6964206f776e657200000000000000000000000000000000000000600082015250565b6000613f4f600d83613979565b9150613f5a82613f19565b602082019050919050565b60006020820190508181036000830152613f7e81613f42565b9050919050565b7f45524332303a204e6f7420637572416c6c6f77203e3d20616d6f756e74000000600082015250565b6000613fbb601d83613979565b9150613fc682613f85565b602082019050919050565b60006020820190508181036000830152613fea81613fae565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061402b82613a8c565b915061403683613a8c565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561406f5761406e613ff1565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006140b482613a8c565b91506140bf83613a8c565b9250826140cf576140ce61407a565b5b828204905092915050565b7f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60008201527f20302e3030312520746f74616c20737570706c792e0000000000000000000000602082015250565b6000614136603583613979565b9150614141826140da565b604082019050919050565b6000602082019050818103600083015261416581614129565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206869676865722074686160008201527f6e20302e352520746f74616c20737570706c792e000000000000000000000000602082015250565b60006141c8603483613979565b91506141d38261416c565b604082019050919050565b600060208201905081810360008301526141f7816141bb565b9050919050565b600061420982613a8c565b915061421483613a8c565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561424957614248613ff1565b5b828201905092915050565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060008201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000602082015250565b60006142b0603983613979565b91506142bb82614254565b604082019050919050565b600060208201905081810360008301526142df816142a3565b9050919050565b60008160011c9050919050565b6000808291508390505b600185111561433d5780860481111561431957614318613ff1565b5b60018516156143285780820291505b8081029050614336856142e6565b94506142fd565b94509492505050565b6000826143565760019050614412565b816143645760009050614412565b816001811461437a5760028114614384576143b3565b6001915050614412565b60ff84111561439657614395613ff1565b5b8360020a9150848211156143ad576143ac613ff1565b5b50614412565b5060208310610133831016604e8410600b84101617156143e85782820a9050838111156143e3576143e2613ff1565b5b614412565b6143f584848460016142f3565b9250905081840481111561440c5761440b613ff1565b5b81810290505b9392505050565b600061442482613a8c565b915061442f83613c39565b925061445c7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484614346565b905092915050565b7f43616e6e6f7420736574206d6178546f6b656e416d6f756e7450657254786e2060008201527f6c6f776572207468616e20302e31250000000000000000000000000000000000602082015250565b60006144c0602f83613979565b91506144cb82614464565b604082019050919050565b600060208201905081810360008301526144ef816144b3565b9050919050565b7f43616e6e6f7420736574206d6178546f6b656e416d6f756e7450657257616c6c60008201527f6574206c6f776572207468616e20302e35250000000000000000000000000000602082015250565b6000614552603283613979565b915061455d826144f6565b604082019050919050565b6000602082019050818103600083015261458181614545565b9050919050565b7f45524332303a204e6f7420637572416c6c6f77203e3d2073756256616c756500600082015250565b60006145be601f83613979565b91506145c982614588565b602082019050919050565b600060208201905081810360008301526145ed816145b1565b9050919050565b7f4d757374206b6565702074617820617420393525206f72206c65737300000000600082015250565b600061462a601c83613979565b9150614635826145f4565b602082019050919050565b600060208201905081810360008301526146598161461d565b9050919050565b7f496e76616c696420616e74692d647261696e6572000000000000000000000000600082015250565b6000614696601483613979565b91506146a182614660565b602082019050919050565b600060208201905081810360008301526146c581614689565b9050919050565b6146d581613def565b82525050565b600060a0820190506146f060008301886146cc565b6146fd60208301876146cc565b61470a60408301866146cc565b6147176060830185613b38565b6147246080830184613be2565b9695505050505050565b600060608201905061474360008301866146cc565b61475060208301856146cc565b61475d6040830184613b38565b949350505050565b600081905092915050565b7f1901000000000000000000000000000000000000000000000000000000000000600082015250565b60006147a6600283614765565b91506147b182614770565b600282019050919050565b6000819050919050565b6147d76147d282613def565b6147bc565b82525050565b60006147e882614799565b91506147f482856147c6565b60208201915061480482846147c6565b6020820191508190509392505050565b600060808201905061482960008301876146cc565b6148366020830186613c46565b61484360408301856146cc565b61485060608301846146cc565b95945050505050565b7f496e76616c6964207369676e6174757265000000000000000000000000000000600082015250565b600061488f601183613979565b915061489a82614859565b602082019050919050565b600060208201905081810360008301526148be81614882565b9050919050565b7f4e6577206f776e6572206973205a45524f000000000000000000000000000000600082015250565b60006148fb601183613979565b9150614906826148c5565b602082019050919050565b6000602082019050818103600083015261492a816148ee565b9050919050565b7f45524332303a204e6f74206f776e657220213d20616464726573732830290000600082015250565b6000614967601e83613979565b915061497282614931565b602082019050919050565b600060208201905081810360008301526149968161495a565b9050919050565b7f45524332303a204e6f74207370656e64657220213d2061646472657373283029600082015250565b60006149d3602083613979565b91506149de8261499d565b602082019050919050565b60006020820190508181036000830152614a02816149c6565b9050919050565b7f45524332303a20496e76616c69642066726f6d20616464726573730000000000600082015250565b6000614a3f601b83613979565b9150614a4a82614a09565b602082019050919050565b60006020820190508181036000830152614a6e81614a32565b9050919050565b7f45524332303a20496e76616c696420746f206164647265737300000000000000600082015250565b6000614aab601983613979565b9150614ab682614a75565b602082019050919050565b60006020820190508181036000830152614ada81614a9e565b9050919050565b7f45524332303a2066726f6d20697320626c61636b206c69737400000000000000600082015250565b6000614b17601983613979565b9150614b2282614ae1565b602082019050919050565b60006020820190508181036000830152614b4681614b0a565b9050919050565b7f45524332303a20746f20697320626c61636b206c697374000000000000000000600082015250565b6000614b83601783613979565b9150614b8e82614b4d565b602082019050919050565b60006020820190508181036000830152614bb281614b76565b9050919050565b7f54726164696e67206973206e6f74206163746976652e00000000000000000000600082015250565b6000614bef601683613979565b9150614bfa82614bb9565b602082019050919050565b60006020820190508181036000830152614c1e81614be2565b9050919050565b7f427579207472616e7366657220616d6f756e742065786365656473207468652060008201527f6d6178546f6b656e416d6f756e7450657254786e2e0000000000000000000000602082015250565b6000614c81603583613979565b9150614c8c82614c25565b604082019050919050565b60006020820190508181036000830152614cb081614c74565b9050919050565b7f4d61782077616c6c657420657863656564656400000000000000000000000000600082015250565b6000614ced601383613979565b9150614cf882614cb7565b602082019050919050565b60006020820190508181036000830152614d1c81614ce0565b9050919050565b7f53656c6c207472616e7366657220616d6f756e7420657863656564732074686560008201527f206d6178546f6b656e416d6f756e7450657254786e2e00000000000000000000602082015250565b6000614d7f603683613979565b9150614d8a82614d23565b604082019050919050565b60006020820190508181036000830152614dae81614d72565b9050919050565b600081519050614dc481613c70565b92915050565b600060208284031215614de057614ddf613a29565b5b6000614dee84828501614db5565b91505092915050565b600060c082019050614e0c6000830189613be2565b614e196020830188613be2565b614e266040830187613be2565b614e336060830186613b38565b614e406080830185613b38565b614e4d60a0830184613b38565b979650505050505050565b7f416e746920447261696e657220456e61626c6564000000000000000000000000600082015250565b6000614e8e601483613979565b9150614e9982614e58565b602082019050919050565b60006020820190508181036000830152614ebd81614e81565b9050919050565b6000614ecf82613a8c565b9150614eda83613a8c565b925082821015614eed57614eec613ff1565b5b828203905092915050565b7f45524332303a204e6f742066726f6d20213d2061646472657373283029000000600082015250565b6000614f2e601d83613979565b9150614f3982614ef8565b602082019050919050565b60006020820190508181036000830152614f5d81614f21565b9050919050565b7f45524332303a204e6f7420746f20213d20616464726573732830290000000000600082015250565b6000614f9a601b83613979565b9150614fa582614f64565b602082019050919050565b60006020820190508181036000830152614fc981614f8d565b9050919050565b7f45524332303a204e6f742062616c616e636546726f6d203e3d20616d6f756e74600082015250565b6000615006602083613979565b915061501182614fd0565b602082019050919050565b6000602082019050818103600083015261503581614ff9565b9050919050565b600081905092915050565b50565b600061505760008361503c565b915061506282615047565b600082019050919050565b60006150788261504a565b9150819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000815190506150ef81613a60565b92915050565b60006020828403121561510b5761510a613a29565b5b6000615119848285016150e0565b91505092915050565b6000819050919050565b600061514761514261513d84615122565b613d49565b613a8c565b9050919050565b6151578161512c565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61519281613a4e565b82525050565b60006151a48383615189565b60208301905092915050565b6000602082019050919050565b60006151c88261515d565b6151d28185615168565b93506151dd83615179565b8060005b8381101561520e5781516151f58882615198565b9750615200836151b0565b9250506001810190506151e1565b5085935050505092915050565b600060a0820190506152306000830188613b38565b61523d602083018761514e565b818103604083015261524f81866151bd565b905061525e6060830185613be2565b61526b6080830184613b38565b969550505050505056fea2646970667358221220017eae408b7e9e6c105d1f3166c93d69a96136f91c6a1fc8facd11003ac04cf764736f6c634300080a0033

Deployed Bytecode Sourcemap

14251:11313:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9936:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10508:169;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17007:116;;;;;;;;;;;;;:::i;:::-;;14590:32;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10257:108;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14701:38;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14857:48;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11188:397;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14384:23;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18588:352;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10156:93;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15161:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14746:32;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11762:211;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20258:247;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14980:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19236:276;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15128:26;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18948:280;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;19520:120;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14460:38;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14787:61;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18073:154;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10373:127;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;970:103;;;;;;;;;;;;;:::i;:::-;;18373:90;;;;;;;;;;;;;:::i;:::-;;14631:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14420:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;687:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14668:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18473:107;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10044:104;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11981:360;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11593:161;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15198:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19648:290;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14914:57;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19946:300;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20513:197;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15094:25;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14341:36;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14505:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18235:130;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17131:934;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14549:34;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11029:151;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15022:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15056:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;782:180;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;9936:100;9990:13;10023:5;10016:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9936:100;:::o;10508:169::-;10591:4;10608:39;10617:12;:10;:12::i;:::-;10631:7;10640:6;10608:8;:39::i;:::-;10665:4;10658:11;;10508:169;;;;:::o;17007:116::-;629:12;:10;:12::i;:::-;618:23;;:7;:5;:7::i;:::-;:23;;;610:49;;;;;;;;;;;;:::i;:::-;;;;;;;;;17081:4:::1;17064:14;;:21;;;;;;;;;;;;;;;;;;17111:4;17096:12;;:19;;;;;;;;;;;;;;;;;;17007:116::o:0;14590:32::-;;;;;;;;;;;;;:::o;10257:108::-;10318:7;10345:12;;10338:19;;10257:108;:::o;14701:38::-;;;;:::o;14857:48::-;;;;;;;;;;;;;;;;;;;;;;:::o;11188:397::-;11285:4;11302:27;11312:4;11318:2;11322:6;11302:9;:27::i;:::-;11340:16;11359:11;:17;11371:4;11359:17;;;;;;;;;;;;;;;:31;11377:12;:10;:12::i;:::-;11359:31;;;;;;;;;;;;;;;;11340:50;;11421:6;11409:8;:18;;11401:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;11497:47;11506:4;11512:12;:10;:12::i;:::-;11537:6;11526:8;:17;11497:8;:47::i;:::-;11573:4;11566:11;;;11188:397;;;;;:::o;14384:23::-;;;;;;;;;;;;;:::o;18588:352::-;629:12;:10;:12::i;:::-;618:23;;:7;:5;:7::i;:::-;:23;;;610:49;;;;;;;;;;;;:::i;:::-;;;;;;;;;18718:6:::1;18713:1;18697:13;:11;:13::i;:::-;:17;;;;:::i;:::-;18696:28;;;;:::i;:::-;18686:6;:38;;18678:104;;;;;;;;;;;;:::i;:::-;;;;;;;;;18833:4;18828:1;18812:13;:11;:13::i;:::-;:17;;;;:::i;:::-;18811:26;;;;:::i;:::-;18801:6;:36;;18793:101;;;;;;;;;;;;:::i;:::-;;;;;;;;;18926:6;18905:18;:27;;;;18588:352:::0;:::o;10156:93::-;10214:5;10239:2;10232:9;;10156:93;:::o;15161:30::-;;;;:::o;14746:32::-;;;;:::o;11762:211::-;11848:4;11865:78;11874:12;:10;:12::i;:::-;11888:7;11934:8;11897:11;:25;11909:12;:10;:12::i;:::-;11897:25;;;;;;;;;;;;;;;:34;11923:7;11897:34;;;;;;;;;;;;;;;;:45;;;;:::i;:::-;11865:8;:78::i;:::-;11961:4;11954:11;;11762:211;;;;:::o;20258:247::-;629:12;:10;:12::i;:::-;618:23;;:7;:5;:7::i;:::-;:23;;;610:49;;;;;;;;;;;;:::i;:::-;;;;;;;;;20377:8:::1;;;;;;;;;;;20369:16;;:4;:16;;;;20361:86;;;;;;;;;;;;:::i;:::-;;;;;;;;;20492:5;20458:25;:31;20484:4;20458:31;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;20258:247:::0;;:::o;14980:33::-;;;;;;;;;;;;;:::o;19236:276::-;629:12;:10;:12::i;:::-;618:23;;:7;:5;:7::i;:::-;:23;;;610:49;;;;;;;;;;;;:::i;:::-;;;;;;;;;19380:10:::1;:8;:10::i;:::-;19374:2;:16;;;;:::i;:::-;19365:4;19360:1;19344:13;:11;:13::i;:::-;:17;;;;:::i;:::-;19343:26;;;;:::i;:::-;19342:49;;;;:::i;:::-;19332:6;:59;;19324:119;;;;;;;;;;;;:::i;:::-;;;;;;;;;19493:10;:8;:10::i;:::-;19487:2;:16;;;;:::i;:::-;19477:6;:27;;;;:::i;:::-;19454:20;:50;;;;19236:276:::0;:::o;15128:26::-;;;;:::o;18948:280::-;629:12;:10;:12::i;:::-;618:23;;:7;:5;:7::i;:::-;:23;;;610:49;;;;;;;;;;;;:::i;:::-;;;;;;;;;19090:10:::1;:8;:10::i;:::-;19084:2;:16;;;;:::i;:::-;19075:4;19070:1;19054:13;:11;:13::i;:::-;:17;;;;:::i;:::-;19053:26;;;;:::i;:::-;19052:49;;;;:::i;:::-;19042:6;:59;;19034:122;;;;;;;;;;;;:::i;:::-;;;;;;;;;19209:10;:8;:10::i;:::-;19203:2;:16;;;;:::i;:::-;19193:6;:27;;;;:::i;:::-;19167:23;:53;;;;18948:280:::0;:::o;19520:120::-;629:12;:10;:12::i;:::-;618:23;;:7;:5;:7::i;:::-;:23;;;610:49;;;;;;;;;;;;:::i;:::-;;;;;;;;;19626:6:::1;19608:9;:15;19618:4;19608:15;;;;;;;;;;;;;;;;:24;;;;;;;;;;;;;;;;;;19520:120:::0;;:::o;14460:38::-;;;;:::o;14787:61::-;;;;;;;;;;;;;;;;;;;;;;:::o;18073:154::-;629:12;:10;:12::i;:::-;618:23;;:7;:5;:7::i;:::-;:23;;;610:49;;;;;;;;;;;;:::i;:::-;;;;;;;;;18214:5:::1;18176:29;:35;18206:4;18176:35;;;;;;;;;;;;;;;;:43;;;;;;;;;;;;;;;;;;18073:154:::0;;:::o;10373:127::-;10447:7;10474:9;:18;10484:7;10474:18;;;;;;;;;;;;;;;;10467:25;;10373:127;;;:::o;970:103::-;629:12;:10;:12::i;:::-;618:23;;:7;:5;:7::i;:::-;:23;;;610:49;;;;;;;;;;;;:::i;:::-;;;;;;;;;1035:30:::1;1062:1;1035:18;:30::i;:::-;970:103::o:0;18373:90::-;629:12;:10;:12::i;:::-;618:23;;:7;:5;:7::i;:::-;:23;;;610:49;;;;;;;;;;;;:::i;:::-;;;;;;;;;18450:5:::1;18433:14;;:22;;;;;;;;;;;;;;;;;;18373:90::o:0;14631:30::-;;;;;;;;;;;;;:::o;14420:33::-;;;;:::o;687:87::-;733:7;760:6;;;;;;;;;;;753:13;;687:87;:::o;14668:24::-;;;;;;;;;;;;;:::o;18473:107::-;629:12;:10;:12::i;:::-;618:23;;:7;:5;:7::i;:::-;:23;;;610:49;;;;;;;;;;;;:::i;:::-;;;;;;;;;18565:7:::1;18550:12;;:22;;;;;;;;;;;;;;;;;;18473:107:::0;:::o;10044:104::-;10100:13;10133:7;10126:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10044:104;:::o;11981:360::-;12067:4;12084:16;12103:11;:25;12115:12;:10;:12::i;:::-;12103:25;;;;;;;;;;;;;;;:34;12129:7;12103:34;;;;;;;;;;;;;;;;12084:53;;12168:8;12156;:20;;12148:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;12248:52;12257:12;:10;:12::i;:::-;12271:7;12291:8;12280;:19;12248:8;:52::i;:::-;12329:4;12322:11;;;11981:360;;;;:::o;11593:161::-;11672:4;11689:35;11699:12;:10;:12::i;:::-;11713:2;11717:6;11689:9;:35::i;:::-;11742:4;11735:11;;11593:161;;;;:::o;15198:24::-;;;;:::o;19648:290::-;629:12;:10;:12::i;:::-;618:23;;:7;:5;:7::i;:::-;:23;;;610:49;;;;;;;;;;;;:::i;:::-;;;;;;;;;19765:12:::1;19747:15;:30;;;;19800:9;19788;:21;;;;19852:9;;19834:15;;:27;;;;:::i;:::-;19820:11;:41;;;;19895:2;19880:11;;:17;;19872:58;;;;;;;;;;;;:::i;:::-;;;;;;;;;19648:290:::0;;:::o;14914:57::-;;;;;;;;;;;;;;;;;;;;;;:::o;19946:300::-;629:12;:10;:12::i;:::-;618:23;;:7;:5;:7::i;:::-;:23;;;610:49;;;;;;;;;;;;:::i;:::-;;;;;;;;;20068:12:::1;20049:16;:31;;;;20104:9;20091:10;:22;;;;20158:10;;20139:16;;:29;;;;:::i;:::-;20124:12;:44;;;;20203:2;20187:12;;:18;;20179:59;;;;;;;;;;;;:::i;:::-;;;;;;;;;19946:300:::0;;:::o;20513:197::-;629:12;:10;:12::i;:::-;618:23;;:7;:5;:7::i;:::-;:23;;;610:49;;;;;;;;;;;;:::i;:::-;;;;;;;;;20634:3:::1;20608:30;;:14;:30;;;;20600:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;20688:14;20674:11;;:28;;;;;;;;;;;;;;;;;;20513:197:::0;:::o;15094:25::-;;;;:::o;14341:36::-;;;;;;;;;;;;;:::o;14505:35::-;;;;:::o;18235:130::-;629:12;:10;:12::i;:::-;618:23;;:7;:5;:7::i;:::-;:23;;;610:49;;;;;;;;;;;;:::i;:::-;;;;;;;;;18352:5:::1;18324:16;:25;18341:7;18324:25;;;;;;;;;;;;;;;;:33;;;;;;;;;;;;;;;;;;18235:130:::0;;:::o;17131:934::-;17217:18;17273:95;17393:22;;;;;;;;;;;;;;;;;17383:33;;;;;;17441:10;;;;;;;;;;;;;;;;;17431:21;;;;;;17467:13;17503:4;17248:271;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;17238:282;;;;;;17217:303;;17531:18;17587:49;17661:23;;;;;;;;;;;;;;;;;17651:34;;;;;;17708:1;17562:159;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;17552:170;;;;;;17531:191;;17733:14;17816:10;17841;17760:118;;;;;;;;;:::i;:::-;;;;;;;;;;;;;17750:129;;;;;;17733:146;;17892:14;17909:26;17919:6;17927:1;17930;17933;17909:26;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17892:43;;17964:7;:5;:7::i;:::-;17954:17;;:6;:17;;;17946:47;;;;;;;;;;;;:::i;:::-;;;;;;;;;18023:4;18006:14;;:21;;;;;;;;;;;;;;;;;;18053:4;18038:12;;:19;;;;;;;;;;;;;;;;;;17206:859;;;;17131:934;;;:::o;14549:34::-;;;;;;;;;;;;;:::o;11029:151::-;11118:7;11145:11;:18;11157:5;11145:18;;;;;;;;;;;;;;;:27;11164:7;11145:27;;;;;;;;;;;;;;;;11138:34;;11029:151;;;;:::o;15022:27::-;;;;:::o;15056:31::-;;;;:::o;782:180::-;629:12;:10;:12::i;:::-;618:23;;:7;:5;:7::i;:::-;:23;;;610:49;;;;;;;;;;;;:::i;:::-;;;;;;;;;891:1:::1;871:22;;:8;:22;;;;863:52;;;;;;;;;;;;:::i;:::-;;;;;;;;;926:28;945:8;926:18;:28::i;:::-;782:180:::0;:::o;124:98::-;177:7;204:10;197:17;;124:98;:::o;10685:336::-;10804:1;10787:19;;:5;:19;;;;10779:62;;;;;;;;;;;;:::i;:::-;;;;;;;;;10879:1;10860:21;;:7;:21;;;;10852:66;;;;;;;;;;;;:::i;:::-;;;;;;;;;10959:6;10929:11;:18;10941:5;10929:18;;;;;;;;;;;;;;;:27;10948:7;10929:27;;;;;;;;;;;;;;;:36;;;;10997:7;10981:32;;10990:5;10981:32;;;11006:6;10981:32;;;;;;:::i;:::-;;;;;;;;10685:336;;;:::o;21610:3230::-;21758:1;21742:18;;:4;:18;;;;21734:58;;;;;;;;;;;;:::i;:::-;;;;;;;;;21825:1;21811:16;;:2;:16;;;;21803:54;;;;;;;;;;;;:::i;:::-;;;;;;;;;21877:9;:15;21887:4;21877:15;;;;;;;;;;;;;;;;;;;;;;;;;21876:16;21868:54;;;;;;;;;;;;:::i;:::-;;;;;;;;;21942:9;:13;21952:2;21942:13;;;;;;;;;;;;;;;;;;;;;;;;;21941:14;21933:50;;;;;;;;;;;;:::i;:::-;;;;;;;;;22010:1;22000:6;:11;21996:93;;;22028:28;22044:4;22050:2;22054:1;22028:15;:28::i;:::-;22071:7;;21996:93;22105:14;;;;;;;;;;;22101:1085;;;22148:7;:5;:7::i;:::-;22140:15;;:4;:15;;;;:32;;;;;22165:7;:5;:7::i;:::-;22159:13;;:2;:13;;;;22140:32;:52;;;;;22190:1;22176:16;;:2;:16;;;;22140:52;:77;;;;;22210:6;22196:21;;:2;:21;;;;22140:77;:91;;;;;22222:9;;;;;;;;;;;22221:10;22140:91;22136:1039;;;22257:14;;;;;;;;;;;22252:145;;22304:16;:22;22321:4;22304:22;;;;;;;;;;;;;;;;;;;;;;;;;:46;;;;22330:16;:20;22347:2;22330:20;;;;;;;;;;;;;;;;;;;;;;;;;22304:46;22296:81;;;;;;;;;;;;:::i;:::-;;;;;;;;;22252:145;22421:25;:31;22447:4;22421:31;;;;;;;;;;;;;;;;;;;;;;;;;:69;;;;;22457:29;:33;22487:2;22457:33;;;;;;;;;;;;;;;;;;;;;;;;;22456:34;22421:69;22417:743;;;22533:20;;22523:6;:30;;22515:96;;;;;;;;;;;;:::i;:::-;;;;;;;;;22668:23;;22651:13;22661:2;22651:9;:13::i;:::-;22642:6;:22;;;;:::i;:::-;:49;;22634:81;;;;;;;;;;;;:::i;:::-;;;;;;;;;22417:743;;;22762:25;:29;22788:2;22762:29;;;;;;;;;;;;;;;;;;;;;;;;;:69;;;;;22796:29;:35;22826:4;22796:35;;;;;;;;;;;;;;;;;;;;;;;;;22795:36;22762:69;22758:402;;;22874:20;;22864:6;:30;;22856:97;;;;;;;;;;;;:::i;:::-;;;;;;;;;22758:402;;;23001:29;:33;23031:2;23001:33;;;;;;;;;;;;;;;;;;;;;;;;;22996:164;;23093:23;;23076:13;23086:2;23076:9;:13::i;:::-;23067:6;:22;;;;:::i;:::-;:49;;23059:81;;;;;;;;;;;;:::i;:::-;;;;;;;;;22996:164;22758:402;22417:743;22136:1039;22101:1085;23225:1;23202:25;;:11;;;;;;;;;;;:25;;;;:79;;;;;23244:11;;;;;;;;;;;23231:35;;;23275:4;23231:50;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;23202:79;23198:305;;;23298:10;23324:11;;;;;;;;;;;23311:31;;;23343:4;23349:2;23361:8;;;;;;;;;;;23372:23;;23397:20;;23419:18;;23311:127;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;23298:140;;23461:5;23453:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;23283:220;23198:305;23515:20;23538:24;23556:4;23538:9;:24::i;:::-;23515:47;;23573:12;23604:18;;23588:12;:34;;23573:49;;23637:12;;;;;;;;;;;:23;;;;;23653:7;23637:23;:37;;;;;23665:9;;;;;;;;;;;23664:10;23637:37;:86;;;;;23692:25;:31;23718:4;23692:31;;;;;;;;;;;;;;;;;;;;;;;;;23691:32;23637:86;:113;;;;;23728:16;:22;23745:4;23728:22;;;;;;;;;;;;;;;;;;;;;;;;;23727:23;23637:113;:138;;;;;23755:16;:20;23772:2;23755:20;;;;;;;;;;;;;;;;;;;;;;;;;23754:21;23637:138;23633:244;;;23804:4;23792:9;;:16;;;;;;;;;;;;;;;;;;23823:10;:8;:10::i;:::-;23860:5;23848:9;;:17;;;;;;;;;;;;;;;;;;23633:244;23889:9;23902;;;;;;;;;;;23901:10;23889:22;;23926:16;:22;23943:4;23926:22;;;;;;;;;;;;;;;;;;;;;;;;;:46;;;;23952:16;:20;23969:2;23952:20;;;;;;;;;;;;;;;;;;;;;;;;;23926:46;23922:77;;;23994:5;23987:12;;23922:77;24012:12;24043:4;24039:748;;;24068:25;:29;24094:2;24068:29;;;;;;;;;;;;;;;;;;;;;;;;;:49;;;;;24116:1;24101:12;;:16;24068:49;24064:595;;;24145:33;24174:3;24145:24;24156:12;;24145:6;:10;;:24;;;;:::i;:::-;:28;;:33;;;;:::i;:::-;24138:40;;24240:12;;24226:10;;24219:4;:17;;;;:::i;:::-;24218:34;;;;:::i;:::-;24197:17;;:55;;;;;;;:::i;:::-;;;;;;;;24326:12;;24306:16;;24299:4;:23;;;;:::i;:::-;24298:40;;;;:::i;:::-;24271:23;;:67;;;;;;;:::i;:::-;;;;;;;;24064:595;;;24377:25;:31;24403:4;24377:31;;;;;;;;;;;;;;;;;;;;;;;;;:50;;;;;24426:1;24412:11;;:15;24377:50;24373:286;;;24455:32;24483:3;24455:23;24466:11;;24455:6;:10;;:23;;;;:::i;:::-;:27;;:32;;;;:::i;:::-;24448:39;;24548:11;;24535:9;;24528:4;:16;;;;:::i;:::-;24527:32;;;;:::i;:::-;24506:17;;:53;;;;;;;:::i;:::-;;;;;;;;24632:11;;24613:15;;24606:4;:22;;;;:::i;:::-;24605:38;;;;:::i;:::-;24578:23;;:65;;;;;;;:::i;:::-;;;;;;;;24373:286;24064:595;24684:1;24677:4;:8;24673:73;;;24704:42;24720:4;24734;24741;24704:15;:42::i;:::-;24673:73;24771:4;24761:14;;;;;:::i;:::-;;;24039:748;24799:33;24815:4;24821:2;24825:6;24799:15;:33::i;:::-;21723:3117;;;;21610:3230;;;;:::o;1081:191::-;1155:16;1174:6;;;;;;;;;;;1155:25;;1200:8;1191:6;;:17;;;;;;;;;;;;;;;;;;1255:8;1224:40;;1245:8;1224:40;;;;;;;;;;;;1144:128;1081:191;:::o;13485:607::-;13598:1;13582:18;;:4;:18;;;;13574:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;13667:1;13653:16;;:2;:16;;;;13645:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;13712:38;13733:4;13739:2;13743:6;13712:20;:38::i;:::-;13761:19;13783:9;:15;13793:4;13783:15;;;;;;;;;;;;;;;;13761:37;;13832:6;13817:11;:21;;13809:66;;;;;;;;;;;;:::i;:::-;;;;;;;;;13943:6;13929:11;:20;13911:9;:15;13921:4;13911:15;;;;;;;;;;;;;;;:38;;;;13988:6;13971:9;:13;13981:2;13971:13;;;;;;;;;;;;;;;;:23;;;;;;;:::i;:::-;;;;;;;;14025:2;14010:26;;14019:4;14010:26;;;14029:6;14010:26;;;;;;:::i;:::-;;;;;;;;14047:37;14067:4;14073:2;14077:6;14047:19;:37::i;:::-;13563:529;13485:607;;;:::o;20718:884::-;20757:12;20780:25;20834:17;;20808:23;;:43;;;;:::i;:::-;20780:71;;20862:20;20885:24;20903:4;20885:9;:24::i;:::-;20862:47;;20947:1;20926:17;:22;:43;;;;20968:1;20952:12;:17;20926:43;20922:69;;;20984:7;;;;;20922:69;21043:2;21022:18;;:23;;;;:::i;:::-;21007:12;:38;21003:95;;;21096:2;21075:18;;:23;;;;:::i;:::-;21060:38;;21003:95;21111:22;21136:21;21111:46;;21168:30;21185:12;21168:16;:30::i;:::-;21211:18;21232:41;21258:14;21232:21;:25;;:41;;;;:::i;:::-;21211:62;;21284:17;21304:56;21342:17;21304:33;21319:17;;21304:10;:14;;:33;;;;:::i;:::-;:37;;:56;;;;:::i;:::-;21284:76;;21395:9;;;;;;;;;;;21387:23;;21418:9;21387:45;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21373:59;;;;;21465:15;;;;;;;;;;;21457:29;;21495:21;21457:65;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21443:79;;;;;21561:1;21535:23;:27;;;;21593:1;21573:17;:21;;;;20746:856;;;;;;20718:884;:::o;1303:98::-;1361:7;1392:1;1388;:5;;;;:::i;:::-;1381:12;;1303:98;;;;:::o;1687:::-;1745:7;1776:1;1772;:5;;;;:::i;:::-;1765:12;;1687:98;;;;:::o;13352:125::-;;;;:::o;14100:144::-;;;;:::o;25000:559::-;25121:21;25159:1;25145:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25121:40;;25190:4;25172;25177:1;25172:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;25216:10;;;;;;;;;;;:15;;;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;25206:4;25211:1;25206:7;;;;;;;;:::i;:::-;;;;;;;:27;;;;;;;;;;;25246:52;25263:4;25278:10;;;;;;;;;;;25291:6;25246:8;:52::i;:::-;25337:10;;;;;;;;;;;:61;;;25413:6;25434:1;25478:4;25505;25525:15;25337:214;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25050:509;25000:559;:::o;2332:98::-;2390:7;2421:1;2417;:5;;;;:::i;:::-;2410:12;;2332:98;;;;:::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:307::-;355:1;365:113;379:6;376:1;373:13;365:113;;;464:1;459:3;455:11;449:18;445:1;440:3;436:11;429:39;401:2;398:1;394:10;389:15;;365:113;;;496:6;493:1;490:13;487:101;;;576:1;567:6;562:3;558:16;551:27;487:101;336:258;287:307;;;:::o;600:102::-;641:6;692:2;688:7;683:2;676:5;672:14;668:28;658:38;;600:102;;;:::o;708:364::-;796:3;824:39;857:5;824:39;:::i;:::-;879:71;943:6;938:3;879:71;:::i;:::-;872:78;;959:52;1004:6;999:3;992:4;985:5;981:16;959:52;:::i;:::-;1036:29;1058:6;1036:29;:::i;:::-;1031:3;1027:39;1020:46;;800:272;708:364;;;;:::o;1078:313::-;1191:4;1229:2;1218:9;1214:18;1206:26;;1278:9;1272:4;1268:20;1264:1;1253:9;1249:17;1242:47;1306:78;1379:4;1370:6;1306:78;:::i;:::-;1298:86;;1078:313;;;;:::o;1478:117::-;1587:1;1584;1577:12;1724:126;1761:7;1801:42;1794:5;1790:54;1779:65;;1724:126;;;:::o;1856:96::-;1893:7;1922:24;1940:5;1922:24;:::i;:::-;1911:35;;1856:96;;;:::o;1958:122::-;2031:24;2049:5;2031:24;:::i;:::-;2024:5;2021:35;2011:63;;2070:1;2067;2060:12;2011:63;1958:122;:::o;2086:139::-;2132:5;2170:6;2157:20;2148:29;;2186:33;2213:5;2186:33;:::i;:::-;2086:139;;;;:::o;2231:77::-;2268:7;2297:5;2286:16;;2231:77;;;:::o;2314:122::-;2387:24;2405:5;2387:24;:::i;:::-;2380:5;2377:35;2367:63;;2426:1;2423;2416:12;2367:63;2314:122;:::o;2442:139::-;2488:5;2526:6;2513:20;2504:29;;2542:33;2569:5;2542:33;:::i;:::-;2442:139;;;;:::o;2587:474::-;2655:6;2663;2712:2;2700:9;2691:7;2687:23;2683:32;2680:119;;;2718:79;;:::i;:::-;2680:119;2838:1;2863:53;2908:7;2899:6;2888:9;2884:22;2863:53;:::i;:::-;2853:63;;2809:117;2965:2;2991:53;3036:7;3027:6;3016:9;3012:22;2991:53;:::i;:::-;2981:63;;2936:118;2587:474;;;;;:::o;3067:90::-;3101:7;3144:5;3137:13;3130:21;3119:32;;3067:90;;;:::o;3163:109::-;3244:21;3259:5;3244:21;:::i;:::-;3239:3;3232:34;3163:109;;:::o;3278:210::-;3365:4;3403:2;3392:9;3388:18;3380:26;;3416:65;3478:1;3467:9;3463:17;3454:6;3416:65;:::i;:::-;3278:210;;;;:::o;3494:118::-;3581:24;3599:5;3581:24;:::i;:::-;3576:3;3569:37;3494:118;;:::o;3618:222::-;3711:4;3749:2;3738:9;3734:18;3726:26;;3762:71;3830:1;3819:9;3815:17;3806:6;3762:71;:::i;:::-;3618:222;;;;:::o;3846:329::-;3905:6;3954:2;3942:9;3933:7;3929:23;3925:32;3922:119;;;3960:79;;:::i;:::-;3922:119;4080:1;4105:53;4150:7;4141:6;4130:9;4126:22;4105:53;:::i;:::-;4095:63;;4051:117;3846:329;;;;:::o;4181:619::-;4258:6;4266;4274;4323:2;4311:9;4302:7;4298:23;4294:32;4291:119;;;4329:79;;:::i;:::-;4291:119;4449:1;4474:53;4519:7;4510:6;4499:9;4495:22;4474:53;:::i;:::-;4464:63;;4420:117;4576:2;4602:53;4647:7;4638:6;4627:9;4623:22;4602:53;:::i;:::-;4592:63;;4547:118;4704:2;4730:53;4775:7;4766:6;4755:9;4751:22;4730:53;:::i;:::-;4720:63;;4675:118;4181:619;;;;;:::o;4806:118::-;4893:24;4911:5;4893:24;:::i;:::-;4888:3;4881:37;4806:118;;:::o;4930:222::-;5023:4;5061:2;5050:9;5046:18;5038:26;;5074:71;5142:1;5131:9;5127:17;5118:6;5074:71;:::i;:::-;4930:222;;;;:::o;5158:329::-;5217:6;5266:2;5254:9;5245:7;5241:23;5237:32;5234:119;;;5272:79;;:::i;:::-;5234:119;5392:1;5417:53;5462:7;5453:6;5442:9;5438:22;5417:53;:::i;:::-;5407:63;;5363:117;5158:329;;;;:::o;5493:86::-;5528:7;5568:4;5561:5;5557:16;5546:27;;5493:86;;;:::o;5585:112::-;5668:22;5684:5;5668:22;:::i;:::-;5663:3;5656:35;5585:112;;:::o;5703:214::-;5792:4;5830:2;5819:9;5815:18;5807:26;;5843:67;5907:1;5896:9;5892:17;5883:6;5843:67;:::i;:::-;5703:214;;;;:::o;5923:116::-;5993:21;6008:5;5993:21;:::i;:::-;5986:5;5983:32;5973:60;;6029:1;6026;6019:12;5973:60;5923:116;:::o;6045:133::-;6088:5;6126:6;6113:20;6104:29;;6142:30;6166:5;6142:30;:::i;:::-;6045:133;;;;:::o;6184:468::-;6249:6;6257;6306:2;6294:9;6285:7;6281:23;6277:32;6274:119;;;6312:79;;:::i;:::-;6274:119;6432:1;6457:53;6502:7;6493:6;6482:9;6478:22;6457:53;:::i;:::-;6447:63;;6403:117;6559:2;6585:50;6627:7;6618:6;6607:9;6603:22;6585:50;:::i;:::-;6575:60;;6530:115;6184:468;;;;;:::o;6658:323::-;6714:6;6763:2;6751:9;6742:7;6738:23;6734:32;6731:119;;;6769:79;;:::i;:::-;6731:119;6889:1;6914:50;6956:7;6947:6;6936:9;6932:22;6914:50;:::i;:::-;6904:60;;6860:114;6658:323;;;;:::o;6987:474::-;7055:6;7063;7112:2;7100:9;7091:7;7087:23;7083:32;7080:119;;;7118:79;;:::i;:::-;7080:119;7238:1;7263:53;7308:7;7299:6;7288:9;7284:22;7263:53;:::i;:::-;7253:63;;7209:117;7365:2;7391:53;7436:7;7427:6;7416:9;7412:22;7391:53;:::i;:::-;7381:63;;7336:118;6987:474;;;;;:::o;7467:60::-;7495:3;7516:5;7509:12;;7467:60;;;:::o;7533:142::-;7583:9;7616:53;7634:34;7643:24;7661:5;7643:24;:::i;:::-;7634:34;:::i;:::-;7616:53;:::i;:::-;7603:66;;7533:142;;;:::o;7681:126::-;7731:9;7764:37;7795:5;7764:37;:::i;:::-;7751:50;;7681:126;;;:::o;7813:152::-;7889:9;7922:37;7953:5;7922:37;:::i;:::-;7909:50;;7813:152;;;:::o;7971:183::-;8084:63;8141:5;8084:63;:::i;:::-;8079:3;8072:76;7971:183;;:::o;8160:274::-;8279:4;8317:2;8306:9;8302:18;8294:26;;8330:97;8424:1;8413:9;8409:17;8400:6;8330:97;:::i;:::-;8160:274;;;;:::o;8440:118::-;8511:22;8527:5;8511:22;:::i;:::-;8504:5;8501:33;8491:61;;8548:1;8545;8538:12;8491:61;8440:118;:::o;8564:135::-;8608:5;8646:6;8633:20;8624:29;;8662:31;8687:5;8662:31;:::i;:::-;8564:135;;;;:::o;8705:77::-;8742:7;8771:5;8760:16;;8705:77;;;:::o;8788:122::-;8861:24;8879:5;8861:24;:::i;:::-;8854:5;8851:35;8841:63;;8900:1;8897;8890:12;8841:63;8788:122;:::o;8916:139::-;8962:5;9000:6;8987:20;8978:29;;9016:33;9043:5;9016:33;:::i;:::-;8916:139;;;;:::o;9061:615::-;9136:6;9144;9152;9201:2;9189:9;9180:7;9176:23;9172:32;9169:119;;;9207:79;;:::i;:::-;9169:119;9327:1;9352:51;9395:7;9386:6;9375:9;9371:22;9352:51;:::i;:::-;9342:61;;9298:115;9452:2;9478:53;9523:7;9514:6;9503:9;9499:22;9478:53;:::i;:::-;9468:63;;9423:118;9580:2;9606:53;9651:7;9642:6;9631:9;9627:22;9606:53;:::i;:::-;9596:63;;9551:118;9061:615;;;;;:::o;9682:474::-;9750:6;9758;9807:2;9795:9;9786:7;9782:23;9778:32;9775:119;;;9813:79;;:::i;:::-;9775:119;9933:1;9958:53;10003:7;9994:6;9983:9;9979:22;9958:53;:::i;:::-;9948:63;;9904:117;10060:2;10086:53;10131:7;10122:6;10111:9;10107:22;10086:53;:::i;:::-;10076:63;;10031:118;9682:474;;;;;:::o;10162:180::-;10210:77;10207:1;10200:88;10307:4;10304:1;10297:15;10331:4;10328:1;10321:15;10348:320;10392:6;10429:1;10423:4;10419:12;10409:22;;10476:1;10470:4;10466:12;10497:18;10487:81;;10553:4;10545:6;10541:17;10531:27;;10487:81;10615:2;10607:6;10604:14;10584:18;10581:38;10578:84;;;10634:18;;:::i;:::-;10578:84;10399:269;10348:320;;;:::o;10674:163::-;10814:15;10810:1;10802:6;10798:14;10791:39;10674:163;:::o;10843:366::-;10985:3;11006:67;11070:2;11065:3;11006:67;:::i;:::-;10999:74;;11082:93;11171:3;11082:93;:::i;:::-;11200:2;11195:3;11191:12;11184:19;;10843:366;;;:::o;11215:419::-;11381:4;11419:2;11408:9;11404:18;11396:26;;11468:9;11462:4;11458:20;11454:1;11443:9;11439:17;11432:47;11496:131;11622:4;11496:131;:::i;:::-;11488:139;;11215:419;;;:::o;11640:179::-;11780:31;11776:1;11768:6;11764:14;11757:55;11640:179;:::o;11825:366::-;11967:3;11988:67;12052:2;12047:3;11988:67;:::i;:::-;11981:74;;12064:93;12153:3;12064:93;:::i;:::-;12182:2;12177:3;12173:12;12166:19;;11825:366;;;:::o;12197:419::-;12363:4;12401:2;12390:9;12386:18;12378:26;;12450:9;12444:4;12440:20;12436:1;12425:9;12421:17;12414:47;12478:131;12604:4;12478:131;:::i;:::-;12470:139;;12197:419;;;:::o;12622:180::-;12670:77;12667:1;12660:88;12767:4;12764:1;12757:15;12791:4;12788:1;12781:15;12808:348;12848:7;12871:20;12889:1;12871:20;:::i;:::-;12866:25;;12905:20;12923:1;12905:20;:::i;:::-;12900:25;;13093:1;13025:66;13021:74;13018:1;13015:81;13010:1;13003:9;12996:17;12992:105;12989:131;;;13100:18;;:::i;:::-;12989:131;13148:1;13145;13141:9;13130:20;;12808:348;;;;:::o;13162:180::-;13210:77;13207:1;13200:88;13307:4;13304:1;13297:15;13331:4;13328:1;13321:15;13348:185;13388:1;13405:20;13423:1;13405:20;:::i;:::-;13400:25;;13439:20;13457:1;13439:20;:::i;:::-;13434:25;;13478:1;13468:35;;13483:18;;:::i;:::-;13468:35;13525:1;13522;13518:9;13513:14;;13348:185;;;;:::o;13539:240::-;13679:34;13675:1;13667:6;13663:14;13656:58;13748:23;13743:2;13735:6;13731:15;13724:48;13539:240;:::o;13785:366::-;13927:3;13948:67;14012:2;14007:3;13948:67;:::i;:::-;13941:74;;14024:93;14113:3;14024:93;:::i;:::-;14142:2;14137:3;14133:12;14126:19;;13785:366;;;:::o;14157:419::-;14323:4;14361:2;14350:9;14346:18;14338:26;;14410:9;14404:4;14400:20;14396:1;14385:9;14381:17;14374:47;14438:131;14564:4;14438:131;:::i;:::-;14430:139;;14157:419;;;:::o;14582:239::-;14722:34;14718:1;14710:6;14706:14;14699:58;14791:22;14786:2;14778:6;14774:15;14767:47;14582:239;:::o;14827:366::-;14969:3;14990:67;15054:2;15049:3;14990:67;:::i;:::-;14983:74;;15066:93;15155:3;15066:93;:::i;:::-;15184:2;15179:3;15175:12;15168:19;;14827:366;;;:::o;15199:419::-;15365:4;15403:2;15392:9;15388:18;15380:26;;15452:9;15446:4;15442:20;15438:1;15427:9;15423:17;15416:47;15480:131;15606:4;15480:131;:::i;:::-;15472:139;;15199:419;;;:::o;15624:305::-;15664:3;15683:20;15701:1;15683:20;:::i;:::-;15678:25;;15717:20;15735:1;15717:20;:::i;:::-;15712:25;;15871:1;15803:66;15799:74;15796:1;15793:81;15790:107;;;15877:18;;:::i;:::-;15790:107;15921:1;15918;15914:9;15907:16;;15624:305;;;;:::o;15935:244::-;16075:34;16071:1;16063:6;16059:14;16052:58;16144:27;16139:2;16131:6;16127:15;16120:52;15935:244;:::o;16185:366::-;16327:3;16348:67;16412:2;16407:3;16348:67;:::i;:::-;16341:74;;16424:93;16513:3;16424:93;:::i;:::-;16542:2;16537:3;16533:12;16526:19;;16185:366;;;:::o;16557:419::-;16723:4;16761:2;16750:9;16746:18;16738:26;;16810:9;16804:4;16800:20;16796:1;16785:9;16781:17;16774:47;16838:131;16964:4;16838:131;:::i;:::-;16830:139;;16557:419;;;:::o;16982:102::-;17024:8;17071:5;17068:1;17064:13;17043:34;;16982:102;;;:::o;17090:848::-;17151:5;17158:4;17182:6;17173:15;;17206:5;17197:14;;17220:712;17241:1;17231:8;17228:15;17220:712;;;17336:4;17331:3;17327:14;17321:4;17318:24;17315:50;;;17345:18;;:::i;:::-;17315:50;17395:1;17385:8;17381:16;17378:451;;;17810:4;17803:5;17799:16;17790:25;;17378:451;17860:4;17854;17850:15;17842:23;;17890:32;17913:8;17890:32;:::i;:::-;17878:44;;17220:712;;;17090:848;;;;;;;:::o;17944:1073::-;17998:5;18189:8;18179:40;;18210:1;18201:10;;18212:5;;18179:40;18238:4;18228:36;;18255:1;18246:10;;18257:5;;18228:36;18324:4;18372:1;18367:27;;;;18408:1;18403:191;;;;18317:277;;18367:27;18385:1;18376:10;;18387:5;;;18403:191;18448:3;18438:8;18435:17;18432:43;;;18455:18;;:::i;:::-;18432:43;18504:8;18501:1;18497:16;18488:25;;18539:3;18532:5;18529:14;18526:40;;;18546:18;;:::i;:::-;18526:40;18579:5;;;18317:277;;18703:2;18693:8;18690:16;18684:3;18678:4;18675:13;18671:36;18653:2;18643:8;18640:16;18635:2;18629:4;18626:12;18622:35;18606:111;18603:246;;;18759:8;18753:4;18749:19;18740:28;;18794:3;18787:5;18784:14;18781:40;;;18801:18;;:::i;:::-;18781:40;18834:5;;18603:246;18874:42;18912:3;18902:8;18896:4;18893:1;18874:42;:::i;:::-;18859:57;;;;18948:4;18943:3;18939:14;18932:5;18929:25;18926:51;;;18957:18;;:::i;:::-;18926:51;19006:4;18999:5;18995:16;18986:25;;17944:1073;;;;;;:::o;19023:281::-;19081:5;19105:23;19123:4;19105:23;:::i;:::-;19097:31;;19149:25;19165:8;19149:25;:::i;:::-;19137:37;;19193:104;19230:66;19220:8;19214:4;19193:104;:::i;:::-;19184:113;;19023:281;;;;:::o;19310:234::-;19450:34;19446:1;19438:6;19434:14;19427:58;19519:17;19514:2;19506:6;19502:15;19495:42;19310:234;:::o;19550:366::-;19692:3;19713:67;19777:2;19772:3;19713:67;:::i;:::-;19706:74;;19789:93;19878:3;19789:93;:::i;:::-;19907:2;19902:3;19898:12;19891:19;;19550:366;;;:::o;19922:419::-;20088:4;20126:2;20115:9;20111:18;20103:26;;20175:9;20169:4;20165:20;20161:1;20150:9;20146:17;20139:47;20203:131;20329:4;20203:131;:::i;:::-;20195:139;;19922:419;;;:::o;20347:237::-;20487:34;20483:1;20475:6;20471:14;20464:58;20556:20;20551:2;20543:6;20539:15;20532:45;20347:237;:::o;20590:366::-;20732:3;20753:67;20817:2;20812:3;20753:67;:::i;:::-;20746:74;;20829:93;20918:3;20829:93;:::i;:::-;20947:2;20942:3;20938:12;20931:19;;20590:366;;;:::o;20962:419::-;21128:4;21166:2;21155:9;21151:18;21143:26;;21215:9;21209:4;21205:20;21201:1;21190:9;21186:17;21179:47;21243:131;21369:4;21243:131;:::i;:::-;21235:139;;20962:419;;;:::o;21387:181::-;21527:33;21523:1;21515:6;21511:14;21504:57;21387:181;:::o;21574:366::-;21716:3;21737:67;21801:2;21796:3;21737:67;:::i;:::-;21730:74;;21813:93;21902:3;21813:93;:::i;:::-;21931:2;21926:3;21922:12;21915:19;;21574:366;;;:::o;21946:419::-;22112:4;22150:2;22139:9;22135:18;22127:26;;22199:9;22193:4;22189:20;22185:1;22174:9;22170:17;22163:47;22227:131;22353:4;22227:131;:::i;:::-;22219:139;;21946:419;;;:::o;22371:178::-;22511:30;22507:1;22499:6;22495:14;22488:54;22371:178;:::o;22555:366::-;22697:3;22718:67;22782:2;22777:3;22718:67;:::i;:::-;22711:74;;22794:93;22883:3;22794:93;:::i;:::-;22912:2;22907:3;22903:12;22896:19;;22555:366;;;:::o;22927:419::-;23093:4;23131:2;23120:9;23116:18;23108:26;;23180:9;23174:4;23170:20;23166:1;23155:9;23151:17;23144:47;23208:131;23334:4;23208:131;:::i;:::-;23200:139;;22927:419;;;:::o;23352:170::-;23492:22;23488:1;23480:6;23476:14;23469:46;23352:170;:::o;23528:366::-;23670:3;23691:67;23755:2;23750:3;23691:67;:::i;:::-;23684:74;;23767:93;23856:3;23767:93;:::i;:::-;23885:2;23880:3;23876:12;23869:19;;23528:366;;;:::o;23900:419::-;24066:4;24104:2;24093:9;24089:18;24081:26;;24153:9;24147:4;24143:20;24139:1;24128:9;24124:17;24117:47;24181:131;24307:4;24181:131;:::i;:::-;24173:139;;23900:419;;;:::o;24325:118::-;24412:24;24430:5;24412:24;:::i;:::-;24407:3;24400:37;24325:118;;:::o;24449:664::-;24654:4;24692:3;24681:9;24677:19;24669:27;;24706:71;24774:1;24763:9;24759:17;24750:6;24706:71;:::i;:::-;24787:72;24855:2;24844:9;24840:18;24831:6;24787:72;:::i;:::-;24869;24937:2;24926:9;24922:18;24913:6;24869:72;:::i;:::-;24951;25019:2;25008:9;25004:18;24995:6;24951:72;:::i;:::-;25033:73;25101:3;25090:9;25086:19;25077:6;25033:73;:::i;:::-;24449:664;;;;;;;;:::o;25119:442::-;25268:4;25306:2;25295:9;25291:18;25283:26;;25319:71;25387:1;25376:9;25372:17;25363:6;25319:71;:::i;:::-;25400:72;25468:2;25457:9;25453:18;25444:6;25400:72;:::i;:::-;25482;25550:2;25539:9;25535:18;25526:6;25482:72;:::i;:::-;25119:442;;;;;;:::o;25567:148::-;25669:11;25706:3;25691:18;;25567:148;;;;:::o;25721:214::-;25861:66;25857:1;25849:6;25845:14;25838:90;25721:214;:::o;25941:400::-;26101:3;26122:84;26204:1;26199:3;26122:84;:::i;:::-;26115:91;;26215:93;26304:3;26215:93;:::i;:::-;26333:1;26328:3;26324:11;26317:18;;25941:400;;;:::o;26347:79::-;26386:7;26415:5;26404:16;;26347:79;;;:::o;26432:157::-;26537:45;26557:24;26575:5;26557:24;:::i;:::-;26537:45;:::i;:::-;26532:3;26525:58;26432:157;;:::o;26595:663::-;26836:3;26858:148;27002:3;26858:148;:::i;:::-;26851:155;;27016:75;27087:3;27078:6;27016:75;:::i;:::-;27116:2;27111:3;27107:12;27100:19;;27129:75;27200:3;27191:6;27129:75;:::i;:::-;27229:2;27224:3;27220:12;27213:19;;27249:3;27242:10;;26595:663;;;;;:::o;27264:545::-;27437:4;27475:3;27464:9;27460:19;27452:27;;27489:71;27557:1;27546:9;27542:17;27533:6;27489:71;:::i;:::-;27570:68;27634:2;27623:9;27619:18;27610:6;27570:68;:::i;:::-;27648:72;27716:2;27705:9;27701:18;27692:6;27648:72;:::i;:::-;27730;27798:2;27787:9;27783:18;27774:6;27730:72;:::i;:::-;27264:545;;;;;;;:::o;27815:167::-;27955:19;27951:1;27943:6;27939:14;27932:43;27815:167;:::o;27988:366::-;28130:3;28151:67;28215:2;28210:3;28151:67;:::i;:::-;28144:74;;28227:93;28316:3;28227:93;:::i;:::-;28345:2;28340:3;28336:12;28329:19;;27988:366;;;:::o;28360:419::-;28526:4;28564:2;28553:9;28549:18;28541:26;;28613:9;28607:4;28603:20;28599:1;28588:9;28584:17;28577:47;28641:131;28767:4;28641:131;:::i;:::-;28633:139;;28360:419;;;:::o;28785:167::-;28925:19;28921:1;28913:6;28909:14;28902:43;28785:167;:::o;28958:366::-;29100:3;29121:67;29185:2;29180:3;29121:67;:::i;:::-;29114:74;;29197:93;29286:3;29197:93;:::i;:::-;29315:2;29310:3;29306:12;29299:19;;28958:366;;;:::o;29330:419::-;29496:4;29534:2;29523:9;29519:18;29511:26;;29583:9;29577:4;29573:20;29569:1;29558:9;29554:17;29547:47;29611:131;29737:4;29611:131;:::i;:::-;29603:139;;29330:419;;;:::o;29755:180::-;29895:32;29891:1;29883:6;29879:14;29872:56;29755:180;:::o;29941:366::-;30083:3;30104:67;30168:2;30163:3;30104:67;:::i;:::-;30097:74;;30180:93;30269:3;30180:93;:::i;:::-;30298:2;30293:3;30289:12;30282:19;;29941:366;;;:::o;30313:419::-;30479:4;30517:2;30506:9;30502:18;30494:26;;30566:9;30560:4;30556:20;30552:1;30541:9;30537:17;30530:47;30594:131;30720:4;30594:131;:::i;:::-;30586:139;;30313:419;;;:::o;30738:182::-;30878:34;30874:1;30866:6;30862:14;30855:58;30738:182;:::o;30926:366::-;31068:3;31089:67;31153:2;31148:3;31089:67;:::i;:::-;31082:74;;31165:93;31254:3;31165:93;:::i;:::-;31283:2;31278:3;31274:12;31267:19;;30926:366;;;:::o;31298:419::-;31464:4;31502:2;31491:9;31487:18;31479:26;;31551:9;31545:4;31541:20;31537:1;31526:9;31522:17;31515:47;31579:131;31705:4;31579:131;:::i;:::-;31571:139;;31298:419;;;:::o;31723:177::-;31863:29;31859:1;31851:6;31847:14;31840:53;31723:177;:::o;31906:366::-;32048:3;32069:67;32133:2;32128:3;32069:67;:::i;:::-;32062:74;;32145:93;32234:3;32145:93;:::i;:::-;32263:2;32258:3;32254:12;32247:19;;31906:366;;;:::o;32278:419::-;32444:4;32482:2;32471:9;32467:18;32459:26;;32531:9;32525:4;32521:20;32517:1;32506:9;32502:17;32495:47;32559:131;32685:4;32559:131;:::i;:::-;32551:139;;32278:419;;;:::o;32703:175::-;32843:27;32839:1;32831:6;32827:14;32820:51;32703:175;:::o;32884:366::-;33026:3;33047:67;33111:2;33106:3;33047:67;:::i;:::-;33040:74;;33123:93;33212:3;33123:93;:::i;:::-;33241:2;33236:3;33232:12;33225:19;;32884:366;;;:::o;33256:419::-;33422:4;33460:2;33449:9;33445:18;33437:26;;33509:9;33503:4;33499:20;33495:1;33484:9;33480:17;33473:47;33537:131;33663:4;33537:131;:::i;:::-;33529:139;;33256:419;;;:::o;33681:175::-;33821:27;33817:1;33809:6;33805:14;33798:51;33681:175;:::o;33862:366::-;34004:3;34025:67;34089:2;34084:3;34025:67;:::i;:::-;34018:74;;34101:93;34190:3;34101:93;:::i;:::-;34219:2;34214:3;34210:12;34203:19;;33862:366;;;:::o;34234:419::-;34400:4;34438:2;34427:9;34423:18;34415:26;;34487:9;34481:4;34477:20;34473:1;34462:9;34458:17;34451:47;34515:131;34641:4;34515:131;:::i;:::-;34507:139;;34234:419;;;:::o;34659:173::-;34799:25;34795:1;34787:6;34783:14;34776:49;34659:173;:::o;34838:366::-;34980:3;35001:67;35065:2;35060:3;35001:67;:::i;:::-;34994:74;;35077:93;35166:3;35077:93;:::i;:::-;35195:2;35190:3;35186:12;35179:19;;34838:366;;;:::o;35210:419::-;35376:4;35414:2;35403:9;35399:18;35391:26;;35463:9;35457:4;35453:20;35449:1;35438:9;35434:17;35427:47;35491:131;35617:4;35491:131;:::i;:::-;35483:139;;35210:419;;;:::o;35635:172::-;35775:24;35771:1;35763:6;35759:14;35752:48;35635:172;:::o;35813:366::-;35955:3;35976:67;36040:2;36035:3;35976:67;:::i;:::-;35969:74;;36052:93;36141:3;36052:93;:::i;:::-;36170:2;36165:3;36161:12;36154:19;;35813:366;;;:::o;36185:419::-;36351:4;36389:2;36378:9;36374:18;36366:26;;36438:9;36432:4;36428:20;36424:1;36413:9;36409:17;36402:47;36466:131;36592:4;36466:131;:::i;:::-;36458:139;;36185:419;;;:::o;36610:240::-;36750:34;36746:1;36738:6;36734:14;36727:58;36819:23;36814:2;36806:6;36802:15;36795:48;36610:240;:::o;36856:366::-;36998:3;37019:67;37083:2;37078:3;37019:67;:::i;:::-;37012:74;;37095:93;37184:3;37095:93;:::i;:::-;37213:2;37208:3;37204:12;37197:19;;36856:366;;;:::o;37228:419::-;37394:4;37432:2;37421:9;37417:18;37409:26;;37481:9;37475:4;37471:20;37467:1;37456:9;37452:17;37445:47;37509:131;37635:4;37509:131;:::i;:::-;37501:139;;37228:419;;;:::o;37653:169::-;37793:21;37789:1;37781:6;37777:14;37770:45;37653:169;:::o;37828:366::-;37970:3;37991:67;38055:2;38050:3;37991:67;:::i;:::-;37984:74;;38067:93;38156:3;38067:93;:::i;:::-;38185:2;38180:3;38176:12;38169:19;;37828:366;;;:::o;38200:419::-;38366:4;38404:2;38393:9;38389:18;38381:26;;38453:9;38447:4;38443:20;38439:1;38428:9;38424:17;38417:47;38481:131;38607:4;38481:131;:::i;:::-;38473:139;;38200:419;;;:::o;38625:241::-;38765:34;38761:1;38753:6;38749:14;38742:58;38834:24;38829:2;38821:6;38817:15;38810:49;38625:241;:::o;38872:366::-;39014:3;39035:67;39099:2;39094:3;39035:67;:::i;:::-;39028:74;;39111:93;39200:3;39111:93;:::i;:::-;39229:2;39224:3;39220:12;39213:19;;38872:366;;;:::o;39244:419::-;39410:4;39448:2;39437:9;39433:18;39425:26;;39497:9;39491:4;39487:20;39483:1;39472:9;39468:17;39461:47;39525:131;39651:4;39525:131;:::i;:::-;39517:139;;39244:419;;;:::o;39669:137::-;39723:5;39754:6;39748:13;39739:22;;39770:30;39794:5;39770:30;:::i;:::-;39669:137;;;;:::o;39812:345::-;39879:6;39928:2;39916:9;39907:7;39903:23;39899:32;39896:119;;;39934:79;;:::i;:::-;39896:119;40054:1;40079:61;40132:7;40123:6;40112:9;40108:22;40079:61;:::i;:::-;40069:71;;40025:125;39812:345;;;;:::o;40163:775::-;40396:4;40434:3;40423:9;40419:19;40411:27;;40448:71;40516:1;40505:9;40501:17;40492:6;40448:71;:::i;:::-;40529:72;40597:2;40586:9;40582:18;40573:6;40529:72;:::i;:::-;40611;40679:2;40668:9;40664:18;40655:6;40611:72;:::i;:::-;40693;40761:2;40750:9;40746:18;40737:6;40693:72;:::i;:::-;40775:73;40843:3;40832:9;40828:19;40819:6;40775:73;:::i;:::-;40858;40926:3;40915:9;40911:19;40902:6;40858:73;:::i;:::-;40163:775;;;;;;;;;:::o;40944:170::-;41084:22;41080:1;41072:6;41068:14;41061:46;40944:170;:::o;41120:366::-;41262:3;41283:67;41347:2;41342:3;41283:67;:::i;:::-;41276:74;;41359:93;41448:3;41359:93;:::i;:::-;41477:2;41472:3;41468:12;41461:19;;41120:366;;;:::o;41492:419::-;41658:4;41696:2;41685:9;41681:18;41673:26;;41745:9;41739:4;41735:20;41731:1;41720:9;41716:17;41709:47;41773:131;41899:4;41773:131;:::i;:::-;41765:139;;41492:419;;;:::o;41917:191::-;41957:4;41977:20;41995:1;41977:20;:::i;:::-;41972:25;;42011:20;42029:1;42011:20;:::i;:::-;42006:25;;42050:1;42047;42044:8;42041:34;;;42055:18;;:::i;:::-;42041:34;42100:1;42097;42093:9;42085:17;;41917:191;;;;:::o;42114:179::-;42254:31;42250:1;42242:6;42238:14;42231:55;42114:179;:::o;42299:366::-;42441:3;42462:67;42526:2;42521:3;42462:67;:::i;:::-;42455:74;;42538:93;42627:3;42538:93;:::i;:::-;42656:2;42651:3;42647:12;42640:19;;42299:366;;;:::o;42671:419::-;42837:4;42875:2;42864:9;42860:18;42852:26;;42924:9;42918:4;42914:20;42910:1;42899:9;42895:17;42888:47;42952:131;43078:4;42952:131;:::i;:::-;42944:139;;42671:419;;;:::o;43096:177::-;43236:29;43232:1;43224:6;43220:14;43213:53;43096:177;:::o;43279:366::-;43421:3;43442:67;43506:2;43501:3;43442:67;:::i;:::-;43435:74;;43518:93;43607:3;43518:93;:::i;:::-;43636:2;43631:3;43627:12;43620:19;;43279:366;;;:::o;43651:419::-;43817:4;43855:2;43844:9;43840:18;43832:26;;43904:9;43898:4;43894:20;43890:1;43879:9;43875:17;43868:47;43932:131;44058:4;43932:131;:::i;:::-;43924:139;;43651:419;;;:::o;44076:182::-;44216:34;44212:1;44204:6;44200:14;44193:58;44076:182;:::o;44264:366::-;44406:3;44427:67;44491:2;44486:3;44427:67;:::i;:::-;44420:74;;44503:93;44592:3;44503:93;:::i;:::-;44621:2;44616:3;44612:12;44605:19;;44264:366;;;:::o;44636:419::-;44802:4;44840:2;44829:9;44825:18;44817:26;;44889:9;44883:4;44879:20;44875:1;44864:9;44860:17;44853:47;44917:131;45043:4;44917:131;:::i;:::-;44909:139;;44636:419;;;:::o;45061:147::-;45162:11;45199:3;45184:18;;45061:147;;;;:::o;45214:114::-;;:::o;45334:398::-;45493:3;45514:83;45595:1;45590:3;45514:83;:::i;:::-;45507:90;;45606:93;45695:3;45606:93;:::i;:::-;45724:1;45719:3;45715:11;45708:18;;45334:398;;;:::o;45738:379::-;45922:3;45944:147;46087:3;45944:147;:::i;:::-;45937:154;;46108:3;46101:10;;45738:379;;;:::o;46123:180::-;46171:77;46168:1;46161:88;46268:4;46265:1;46258:15;46292:4;46289:1;46282:15;46309:180;46357:77;46354:1;46347:88;46454:4;46451:1;46444:15;46478:4;46475:1;46468:15;46495:143;46552:5;46583:6;46577:13;46568:22;;46599:33;46626:5;46599:33;:::i;:::-;46495:143;;;;:::o;46644:351::-;46714:6;46763:2;46751:9;46742:7;46738:23;46734:32;46731:119;;;46769:79;;:::i;:::-;46731:119;46889:1;46914:64;46970:7;46961:6;46950:9;46946:22;46914:64;:::i;:::-;46904:74;;46860:128;46644:351;;;;:::o;47001:85::-;47046:7;47075:5;47064:16;;47001:85;;;:::o;47092:158::-;47150:9;47183:61;47201:42;47210:32;47236:5;47210:32;:::i;:::-;47201:42;:::i;:::-;47183:61;:::i;:::-;47170:74;;47092:158;;;:::o;47256:147::-;47351:45;47390:5;47351:45;:::i;:::-;47346:3;47339:58;47256:147;;:::o;47409:114::-;47476:6;47510:5;47504:12;47494:22;;47409:114;;;:::o;47529:184::-;47628:11;47662:6;47657:3;47650:19;47702:4;47697:3;47693:14;47678:29;;47529:184;;;;:::o;47719:132::-;47786:4;47809:3;47801:11;;47839:4;47834:3;47830:14;47822:22;;47719:132;;;:::o;47857:108::-;47934:24;47952:5;47934:24;:::i;:::-;47929:3;47922:37;47857:108;;:::o;47971:179::-;48040:10;48061:46;48103:3;48095:6;48061:46;:::i;:::-;48139:4;48134:3;48130:14;48116:28;;47971:179;;;;:::o;48156:113::-;48226:4;48258;48253:3;48249:14;48241:22;;48156:113;;;:::o;48305:732::-;48424:3;48453:54;48501:5;48453:54;:::i;:::-;48523:86;48602:6;48597:3;48523:86;:::i;:::-;48516:93;;48633:56;48683:5;48633:56;:::i;:::-;48712:7;48743:1;48728:284;48753:6;48750:1;48747:13;48728:284;;;48829:6;48823:13;48856:63;48915:3;48900:13;48856:63;:::i;:::-;48849:70;;48942:60;48995:6;48942:60;:::i;:::-;48932:70;;48788:224;48775:1;48772;48768:9;48763:14;;48728:284;;;48732:14;49028:3;49021:10;;48429:608;;;48305:732;;;;:::o;49043:831::-;49306:4;49344:3;49333:9;49329:19;49321:27;;49358:71;49426:1;49415:9;49411:17;49402:6;49358:71;:::i;:::-;49439:80;49515:2;49504:9;49500:18;49491:6;49439:80;:::i;:::-;49566:9;49560:4;49556:20;49551:2;49540:9;49536:18;49529:48;49594:108;49697:4;49688:6;49594:108;:::i;:::-;49586:116;;49712:72;49780:2;49769:9;49765:18;49756:6;49712:72;:::i;:::-;49794:73;49862:3;49851:9;49847:19;49838:6;49794:73;:::i;:::-;49043:831;;;;;;;;:::o

Swarm Source

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