ETH Price: $3,301.26 (-3.46%)
Gas: 14 Gwei

Token

DUMB INTERNET MONEY (SQUEEZ)
 

Overview

Max Total Supply

237,564,390.687605285 SQUEEZ

Holders

184

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Filtered by Token Holder
dragonlife.eth
Balance
424,324.662831324 SQUEEZ

Value
$0.00
0xb2f69cda080ec52f5a4c52ad52978eb33358537d
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:
dumbinternetmoney

Compiler Version
v0.8.21+commit.d9974bed

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-10-02
*/

pragma solidity ^0.8.17;
// SPDX-License-Identifier: Unlicensed

/**

DumbInternetMoney | $SQUEEZ

Web: https://www.dumbinternetmoney.wtf

TG: https://t.me/DumbInternetMoney

X: https://twitter.com/DumbMoney2023

**/


interface IERC20 {

    function totalSupply() external view returns (uint256);
    function balanceOf(address account) external view returns (uint256);
    function transfer(address recipient, uint256 amount) external returns (bool);
    function allowance(address owner, address spender) external view returns (uint256);
    function approve(address spender, uint256 amount) external returns (bool);
    function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);

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

library SafeMath {

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

        return c;
    }

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

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

        return c;
    }

    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        // Gas optimization: this is cheaper than requiring 'a' not being zero, but the
        // benefit is lost if 'b' is also tested.
        // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522
        if (a == 0) {
            return 0;
        }

        uint256 c = a * b;
        require(c / a == b, "SafeMath: multiplication overflow");

        return c;
    }

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

    function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b > 0, errorMessage);
        uint256 c = a / b;
        // assert(a == b * c + a % b); // There is no case in which this doesn't hold

        return c;
    }

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

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

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

    function _msgData() internal view virtual returns (bytes memory) {
        this;
        // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691
        return msg.data;
    }
}

library Address {

    function isContract(address account) internal view returns (bool) {
        // According to EIP-1052, 0x0 is the value returned for not-yet created accounts
        // and 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470 is returned
        // for accounts without code, i.e. `keccak256('')`
        bytes32 codehash;
        bytes32 accountHash = 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470;
        // solhint-disable-next-line no-inline-assembly
        assembly {codehash := extcodehash(account)}
        return (codehash != accountHash && codehash != 0x0);
    }

    function sendValue(address payable recipient, uint256 amount) internal {
        require(address(this).balance >= amount, "Address: insufficient balance");

        // solhint-disable-next-line avoid-low-level-calls, avoid-call-value
        (bool success,) = recipient.call{value : amount}("");
        require(success, "Address: unable to send value, recipient may have reverted");
    }

    function functionCall(address target, bytes memory data) internal returns (bytes memory) {
        return functionCall(target, data, "Address: low-level call failed");
    }

    function functionCall(address target, bytes memory data, string memory errorMessage) internal returns (bytes memory) {
        return _functionCallWithValue(target, data, 0, errorMessage);
    }

    function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) {
        return functionCallWithValue(target, data, value, "Address: low-level call with value failed");
    }

    function functionCallWithValue(address target, bytes memory data, uint256 value, string memory errorMessage) internal returns (bytes memory) {
        require(address(this).balance >= value, "Address: insufficient balance for call");
        return _functionCallWithValue(target, data, value, errorMessage);
    }

    function _functionCallWithValue(address target, bytes memory data, uint256 weiValue, string memory errorMessage) private returns (bytes memory) {
        require(isContract(target), "Address: call to non-contract");

        // solhint-disable-next-line avoid-low-level-calls
        (bool success, bytes memory returndata) = target.call{value : weiValue}(data);
        if (success) {
            return returndata;
        } else {
            // Look for revert reason and bubble it up if present
            if (returndata.length > 0) {
                // The easiest way to bubble the revert reason is using memory via assembly

                // solhint-disable-next-line no-inline-assembly
                assembly {
                    let returndata_size := mload(returndata)
                    revert(add(32, returndata), returndata_size)
                }
            } else {
                revert(errorMessage);
            }
        }
    }
}

contract Ownable is Context {
    address private _owner;

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

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

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

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

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

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

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

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

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

    function decimals() external pure returns (uint8);

    function totalSupply() external view returns (uint256);

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

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

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

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

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

    function DOMAIN_SEPARATOR() external view returns (bytes32);

    function PERMIT_TYPEHASH() external pure returns (bytes32);

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

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

    event Mint(address indexed sender, uint256 amount0, uint256 amount1);
    event 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 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 IUniswapV2Factory {
    function createPair(address tokenA, address tokenB) external returns (address pair);
    function getPair(address token0, address token1) external view returns (address);
}

interface IUniswapV2Router02 {
    function factory() external pure returns (address);
    function getAmountsOut(uint amountIn, address[] calldata path) external view returns (uint[] memory amounts);
    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
    function swapExactTokensForTokensSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
    function swapETHForExactTokens(uint amountOut, address[] calldata path, address to, uint deadline)
    external payable returns (uint[] memory amounts);
    function addLiquidityETH(
        address token,
        uint amountTokenDesired,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external payable returns (uint amountToken, uint amountETH, uint liquidity);
    function removeLiquidity(
        address tokenA,
        address tokenB,
        uint liquidity,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline
    ) external returns (uint amountA, uint amountB);
    function WETH() external pure returns (address);
}

contract dumbinternetmoney is Context, IERC20, Ownable {
    using SafeMath for uint256;
    using Address for address;
    modifier lockTheSwap {
        inSwapAndLiquify = true;
        _;
        inSwapAndLiquify = false;
    }
    event TokensBurned(uint256, uint256);
    IUniswapV2Router02 public uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
    address public marketPair = address(0);
    IUniswapV2Pair private v2Pair;
    address public feeOne = 0xdfbFf1F1bBf9151e70B3e4B18166C1689Aba6047;
    address public feeTwo = 0xE2f851338759aa4F270B13C1E9699DA0bb0E3e70;    
    mapping(address => uint256) private _balances;
    mapping(address => mapping(address => uint256)) private _allowances;
    mapping (address => bool) private botWallets;
    mapping(address => bool) private _isExcludedFromFee;
    string private _name = "DUMB INTERNET MONEY";
    string private _symbol = "SQUEEZ";
    uint8 private _decimals = 9;
    uint256 private _tTotal = 305_240_000 * 10 ** _decimals;
    uint256 public _maxWalletAmount = 8_000_000 * 10 ** _decimals;
    bool inSwapAndLiquify;
    uint256 public buyFee = 4;   
    uint256 public sellFee = 4;  
    uint256 public largeSellFee = 10;
    address public deployer;
    uint256 public ethPriceToSwap = 400000000000000000;  //400000000000000000 = 0.40ETH
    uint public ethSellAmount = 1 ether;
    bool public isBurnEnabled = false;
    uint256 public burnFrequencynMinutes = 60;  
    uint256 public burnPercentage = 1;  //1 = 1%
    uint256 public tokensBurnedSinceLaunch = 0;
    uint public nextLiquidityBurnTimeStamp;
   
    modifier devOnly() {
        require(deployer == _msgSender() || feeOne == _msgSender() || feeTwo == _msgSender(), "caller is not the owner");
        _;
    }
    constructor () {
         _balances[address(this)] = _tTotal;
        _isExcludedFromFee[owner()] = true;
        _isExcludedFromFee[address(uniswapV2Router)] = true;
        _isExcludedFromFee[address(this)] = true;
        deployer = owner();
        emit Transfer(address(0), address(this), _tTotal);
    }

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

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

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

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

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

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

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

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

    function transferFrom(address sender, address recipient, uint256 amount) public override returns (bool) {
        _transfer(sender, recipient, amount);
        _approve(sender, _msgSender(), _allowances[sender][_msgSender()].sub(amount, "ERC20: transfer amount exceeds allowance"));
        return true;
    }

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

    function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) {
        _approve(_msgSender(), spender, _allowances[_msgSender()][spender].sub(subtractedValue, "ERC20: decreased allowance below zero"));
        return true;
    }

    function setTaxFees(uint256 buy, uint256 sell, uint256 largeSell) external onlyOwner {
        buyFee = buy;
        sellFee = sell;
        largeSellFee = largeSell;
    }

     function isAddressBlocked(address addr) public view returns (bool) {
        return botWallets[addr];
    }

    function updateWalletAddresses(address _feeOne, address _feeTwo) external onlyOwner {
        feeOne = _feeOne;
        feeTwo = _feeTwo;
    }

    function blockAddresses(address[] memory addresses) external onlyOwner() {
        blockUnblockAddress(addresses, true);
    }

    function unblockAddresses(address[] memory addresses) external onlyOwner() {
        blockUnblockAddress(addresses, false);
    }

    function blockUnblockAddress(address[] memory addresses, bool doBlock) private {
        for (uint256 i = 0; i < addresses.length; i++) {
            address addr = addresses[i];
            if(doBlock) {
                botWallets[addr] = true;
            } else {
                delete botWallets[addr];
            }
        }
    }
    function excludeIncludeFromFee(address[] calldata addresses, bool isExcludeFromFee) public onlyOwner {
        addRemoveFee(addresses, isExcludeFromFee);
    }

   function setBurnSettings(uint256 frequencyInMinutes, uint256 _burnPercentage) external onlyOwner {
        burnFrequencynMinutes = frequencyInMinutes;
        burnPercentage = _burnPercentage;
    }

    function burnTokensFromLiquidityPool() private lockTheSwap {
        uint liquidity = balanceOf(marketPair);
        uint tokenBurnAmount = liquidity.mul(burnPercentage).div(100);
        if(tokenBurnAmount > 0) {
            //burn tokens from LP and update liquidity pool price
            _burn(marketPair, tokenBurnAmount);
            v2Pair.sync();
            tokensBurnedSinceLaunch = tokensBurnedSinceLaunch.add(tokenBurnAmount);
            nextLiquidityBurnTimeStamp = block.timestamp.add(burnFrequencynMinutes.mul(60));
            emit TokensBurned(tokenBurnAmount, nextLiquidityBurnTimeStamp);
        }
    }

    function airDrops(address[] calldata holders, uint256[] calldata amounts) external onlyOwner {
        require(holders.length == amounts.length, "Holders and amounts must be the same count");
        address from = address(this);
        for(uint256 i=0; i < holders.length; i++) {
            address to = holders[i];
            uint256 amount = amounts[i];
            _transfer(from, to, amount);
        }
    }

    function enableDisableBurnToken(bool _enabled) public onlyOwner {
        isBurnEnabled = _enabled;
    }

    function burnTokens() external {
        require(block.timestamp >= nextLiquidityBurnTimeStamp, "Next burn time is not due yet, be patient");
        require(isBurnEnabled, "Burning tokens is currently disabled");
        burnTokensFromLiquidityPool();
    }

    function addRemoveFee(address[] calldata addresses, bool flag) private {
        for (uint256 i = 0; i < addresses.length; i++) {
            address addr = addresses[i];
            _isExcludedFromFee[addr] = flag;
        }
    }

    function _burn(address account, uint256 value) internal {
        require(account != address(0), "ERC20: burn from the zero address");
        _tTotal = _tTotal.sub(value);
        _balances[account] = _balances[account].sub(value);
        emit Transfer(account, address(0), value);
    }
    
    function openTrading() external onlyOwner() {
        require(marketPair == address(0),"UniswapV2Pair has already been set");
        _approve(address(this), address(uniswapV2Router), _tTotal);
        marketPair = IUniswapV2Factory(uniswapV2Router.factory()).createPair(address(this), uniswapV2Router.WETH());
        uniswapV2Router.addLiquidityETH{value: address(this).balance}(
            address(this),
            balanceOf(address(this)),
            0,
            0,
            owner(),
            block.timestamp);
        IERC20(marketPair).approve(address(uniswapV2Router), type(uint).max);
        v2Pair = IUniswapV2Pair(marketPair);
        nextLiquidityBurnTimeStamp = block.timestamp;
    }

    function isExcludedFromFee(address account) public view returns (bool) {
        return _isExcludedFromFee[account];
    }

    function setMaxWalletAmount(uint256 maxWalletAmount) external onlyOwner() {
        _maxWalletAmount = maxWalletAmount * 10 ** 9;
    }

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

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

    function _transfer(address from, address to, uint256 amount) private {
        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");
        require(amount > 0, "Transfer amount must be greater than zero");
        uint256 taxAmount = 0;
        bool takeFees = !_isExcludedFromFee[from] && !_isExcludedFromFee[to] && from != owner() && to != owner();
        if(from != deployer && to != deployer && from != address(this) && to != address(this)) {
            if(takeFees) {
                if (from == marketPair) {
                    taxAmount = amount.mul(buyFee).div(100);
                    uint256 amountToHolder = amount.sub(taxAmount);
                    uint256 holderBalance = balanceOf(to).add(amountToHolder);
                    require(holderBalance <= _maxWalletAmount, "Wallet cannot exceed max Wallet limit");
                }
                if (from != marketPair && to == marketPair) {
                    require(!botWallets[from] && !botWallets[to], "bots are not allowed to sell tokens");        
                    taxAmount = amount.mul(sellFee).div(100);
                     if(largeSellFee > 0) {
                        uint ethPrice = getEthPrice(amount);
                        if(ethPrice >= ethSellAmount) {
                            taxAmount = amount.mul(largeSellFee).div(100);
                        }
                    }
                
                    if(block.timestamp >= nextLiquidityBurnTimeStamp && isBurnEnabled) {
                            burnTokensFromLiquidityPool();
                    } else {
                        uint256 contractTokenBalance = balanceOf(address(this));
                        if (contractTokenBalance > 0) {
                            
                                uint256 tokenAmount = getTokenPrice();
                                if (contractTokenBalance >= tokenAmount && !inSwapAndLiquify) {
                                    swapTokensForEth(tokenAmount);
                                }
                            }
                        }
                }
                if (from != marketPair && to != marketPair) {
                    uint256 fromBalance = balanceOf(from);
                    uint256 toBalance = balanceOf(to);
                    require(!botWallets[from] && !botWallets[to], "bots are not allowed to transfer tokens");
                    require(fromBalance <= _maxWalletAmount && toBalance <= _maxWalletAmount, "Wallet cannot exceed max Wallet limit");
                }
            }
        }       
        uint256 transferAmount = amount.sub(taxAmount);
        _balances[from] = _balances[from].sub(amount);
        _balances[to] = _balances[to].add(transferAmount);
        _balances[address(this)] = _balances[address(this)].add(taxAmount);
        emit Transfer(from, to, transferAmount);
    }


    function manualSwap() external {
        uint256 contractTokenBalance = balanceOf(address(this));
        if (contractTokenBalance > 0) {
            if (!inSwapAndLiquify) {
                swapTokensForEth(contractTokenBalance);
            }
        }
    }

    function swapTokensForEth(uint256 tokenAmount) private {
        // generate the uniswap pair path of token -> weth
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = uniswapV2Router.WETH();
        _approve(address(this), address(uniswapV2Router), tokenAmount);
        uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0,
            path,
            address(this),
            block.timestamp
        );

        uint256 ethBalance = address(this).balance;
        uint256 halfShare = ethBalance.div(2);  
        payable(feeOne).transfer(halfShare);
        payable(feeTwo).transfer(halfShare); 
    }

    function getTokenPrice() public view returns (uint256)  {
        address[] memory path = new address[](2);
        path[0] = uniswapV2Router.WETH();
        path[1] = address(this);
        return uniswapV2Router.getAmountsOut(ethPriceToSwap, path)[1];
    }

    function getEthPrice(uint tokenAmount) public view returns (uint)  {
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = uniswapV2Router.WETH();
        return uniswapV2Router.getAmountsOut(tokenAmount, path)[1];
    }

    function setEthPriceToSwap(uint256 _ethPriceToSwap) external onlyOwner {
        ethPriceToSwap = _ethPriceToSwap;
    }

    function setEthLargeSellAmount(uint256 _ethSellAmount) external onlyOwner {
         ethSellAmount = _ethSellAmount;
    }

    receive() external payable {}

    function sendEth() external devOnly {
        uint256 ethBalance = address(this).balance;
        payable(deployer).transfer(ethBalance);
    }

    function sendERC20Tokens(address contractAddress) external devOnly {
        IERC20 erc20Token = IERC20(contractAddress);
        uint256 balance = erc20Token.balanceOf(address(this));
        erc20Token.transfer(deployer, balance);
    }
    
}

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":false,"internalType":"uint256","name":"","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"","type":"uint256"}],"name":"TokensBurned","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":"_maxWalletAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"holders","type":"address[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"name":"airDrops","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":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"addresses","type":"address[]"}],"name":"blockAddresses","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"burnFrequencynMinutes","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"burnPercentage","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"burnTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"buyFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"deployer","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"}],"name":"enableDisableBurnToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"ethPriceToSwap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"ethSellAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"addresses","type":"address[]"},{"internalType":"bool","name":"isExcludeFromFee","type":"bool"}],"name":"excludeIncludeFromFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"feeOne","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"feeTwo","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenAmount","type":"uint256"}],"name":"getEthPrice","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getTokenPrice","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"addr","type":"address"}],"name":"isAddressBlocked","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"isBurnEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"largeSellFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"manualSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"marketPair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"nextLiquidityBurnTimeStamp","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"openTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"contractAddress","type":"address"}],"name":"sendERC20Tokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sendEth","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"frequencyInMinutes","type":"uint256"},{"internalType":"uint256","name":"_burnPercentage","type":"uint256"}],"name":"setBurnSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_ethSellAmount","type":"uint256"}],"name":"setEthLargeSellAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_ethPriceToSwap","type":"uint256"}],"name":"setEthPriceToSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxWalletAmount","type":"uint256"}],"name":"setMaxWalletAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"buy","type":"uint256"},{"internalType":"uint256","name":"sell","type":"uint256"},{"internalType":"uint256","name":"largeSell","type":"uint256"}],"name":"setTaxFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensBurnedSinceLaunch","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":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"addresses","type":"address[]"}],"name":"unblockAddresses","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_feeOne","type":"address"},{"internalType":"address","name":"_feeTwo","type":"address"}],"name":"updateWalletAddresses","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

6080604052737a250d5630b4cf539739df2c5dacb4c659f2488d60015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505f60025f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073dfbff1f1bbf9151e70b3e4b18166c1689aba604760045f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073e2f851338759aa4f270b13c1e9699da0bb0e3e7060055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506040518060400160405280601381526020017f44554d4220494e5445524e4554204d4f4e455900000000000000000000000000815250600a908162000186919062000815565b506040518060400160405280600681526020017f53515545455a0000000000000000000000000000000000000000000000000000815250600b9081620001cd919062000815565b506009600c5f6101000a81548160ff021916908360ff160217905550600c5f9054906101000a900460ff16600a62000206919062000a82565b63123197c062000217919062000ad2565b600d55600c5f9054906101000a900460ff16600a62000237919062000a82565b627a120062000247919062000ad2565b600e5560046010556004601155600a60125567058d15e176280000601455670de0b6b3a76400006015555f60165f6101000a81548160ff021916908315150217905550603c60175560016018555f601955348015620002a4575f80fd5b505f620002b66200058360201b60201c565b9050805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a350600d5460065f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550600160095f620003ab6200058a60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160095f60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160095f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550620004d56200058a60201b60201c565b60135f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055503073ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600d5460405162000575919062000b2d565b60405180910390a362000b48565b5f33905090565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b5f81519050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f60028204905060018216806200062d57607f821691505b602082108103620006435762000642620005e8565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f60088302620006a77fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff826200066a565b620006b386836200066a565b95508019841693508086168417925050509392505050565b5f819050919050565b5f819050919050565b5f620006fd620006f7620006f184620006cb565b620006d4565b620006cb565b9050919050565b5f819050919050565b6200071883620006dd565b62000730620007278262000704565b84845462000676565b825550505050565b5f90565b6200074662000738565b620007538184846200070d565b505050565b5b818110156200077a576200076e5f826200073c565b60018101905062000759565b5050565b601f821115620007c957620007938162000649565b6200079e846200065b565b81016020851015620007ae578190505b620007c6620007bd856200065b565b83018262000758565b50505b505050565b5f82821c905092915050565b5f620007eb5f1984600802620007ce565b1980831691505092915050565b5f620008058383620007da565b9150826002028217905092915050565b6200082082620005b1565b67ffffffffffffffff8111156200083c576200083b620005bb565b5b62000848825462000615565b620008558282856200077e565b5f60209050601f8311600181146200088b575f841562000876578287015190505b620008828582620007f8565b865550620008f1565b601f1984166200089b8662000649565b5f5b82811015620008c4578489015182556001820191506020850194506020810190506200089d565b86831015620008e45784890151620008e0601f891682620007da565b8355505b6001600288020188555050505b505050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b600185111562000983578086048111156200095b576200095a620008f9565b5b60018516156200096b5780820291505b80810290506200097b8562000926565b94506200093b565b94509492505050565b5f826200099d576001905062000a6f565b81620009ac575f905062000a6f565b8160018114620009c55760028114620009d05762000a06565b600191505062000a6f565b60ff841115620009e557620009e4620008f9565b5b8360020a915084821115620009ff57620009fe620008f9565b5b5062000a6f565b5060208310610133831016604e8410600b841016171562000a405782820a90508381111562000a3a5762000a39620008f9565b5b62000a6f565b62000a4f848484600162000932565b9250905081840481111562000a695762000a68620008f9565b5b81810290505b9392505050565b5f60ff82169050919050565b5f62000a8e82620006cb565b915062000a9b8362000a76565b925062000aca7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84846200098c565b905092915050565b5f62000ade82620006cb565b915062000aeb83620006cb565b925082820262000afb81620006cb565b9150828204841483151762000b155762000b14620008f9565b5b5092915050565b62000b2781620006cb565b82525050565b5f60208201905062000b425f83018462000b1c565b92915050565b615a798062000b565f395ff3fe6080604052600436106102cc575f3560e01c8063715018a611610174578063b2abbbc4116100db578063dc13b31c11610094578063e7dad4f91161006e578063e7dad4f914610a8b578063f01f20df14610ac7578063f2fde38b14610af1578063f959f81714610b19576102d3565b8063dc13b31c146109fd578063dcda6af314610a27578063dd62ed3e14610a4f576102d3565b8063b2abbbc41461091b578063bd1e470414610943578063c9567bf91461096b578063d5f3948814610981578063d9058bd5146109ab578063db3e33ce146109d3576102d3565b806391142cb31161012d57806391142cb3146107ff57806395d89b41146108295780639758f61d146108535780639b0e2e861461087b578063a457c2d7146108a3578063a9059cbb146108df576102d3565b8063715018a61461070957806378bcf1d31461071f578063794ac1491461074957806385d4787b14610771578063870d365d146107995780638da5cb5b146107d5576102d3565b8063313ce567116102335780634f56f2f5116101ec5780635342acb4116101c65780635342acb41461063d57806354a5df1f146106795780636c0a24eb146106a357806370a08231146106cd576102d3565b80634f56f2f5146105d357806350faa48f146105fd57806351bc3c8514610627576102d3565b8063313ce567146104c757806339509351146104f1578063441d801f1461052d578063470624021461055557806348fad6381461057f5780634b94f50e146105a9576102d3565b80631694505e116102855780631694505e146103bb57806318160ddd146103e55780631f61fd5a1461040f57806323b872dd1461043957806327a14fc2146104755780632b14ca561461049d576102d3565b806306e99fef146102d757806306fdde03146102ed57806307ebec271461031757806308003f7814610341578063095ea7b314610357578063139196f714610393576102d3565b366102d357005b5f80fd5b3480156102e2575f80fd5b506102eb610b41565b005b3480156102f8575f80fd5b50610301610cff565b60405161030e919061430e565b60405180910390f35b348015610322575f80fd5b5061032b610d8f565b6040516103389190614348565b60405180910390f35b34801561034c575f80fd5b50610355610da1565b005b348015610362575f80fd5b5061037d600480360381019061037891906143ff565b610e3e565b60405161038a9190614348565b60405180910390f35b34801561039e575f80fd5b506103b960048036038101906103b4919061443d565b610e5b565b005b3480156103c6575f80fd5b506103cf6110ce565b6040516103dc91906144c3565b60405180910390f35b3480156103f0575f80fd5b506103f96110f3565b60405161040691906144eb565b60405180910390f35b34801561041a575f80fd5b506104236110fc565b60405161043091906144eb565b60405180910390f35b348015610444575f80fd5b5061045f600480360381019061045a9190614504565b611102565b60405161046c9190614348565b60405180910390f35b348015610480575f80fd5b5061049b60048036038101906104969190614554565b6111d6565b005b3480156104a8575f80fd5b506104b1611283565b6040516104be91906144eb565b60405180910390f35b3480156104d2575f80fd5b506104db611289565b6040516104e8919061459a565b60405180910390f35b3480156104fc575f80fd5b50610517600480360381019061051291906143ff565b61129e565b6040516105249190614348565b60405180910390f35b348015610538575f80fd5b50610553600480360381019061054e919061463e565b61134c565b005b348015610560575f80fd5b506105696113f0565b60405161057691906144eb565b60405180910390f35b34801561058a575f80fd5b506105936113f6565b6040516105a091906144eb565b60405180910390f35b3480156105b4575f80fd5b506105bd6113fc565b6040516105ca91906144eb565b60405180910390f35b3480156105de575f80fd5b506105e7611635565b6040516105f491906146aa565b60405180910390f35b348015610608575f80fd5b5061061161165a565b60405161061e91906146aa565b60405180910390f35b348015610632575f80fd5b5061063b61167f565b005b348015610648575f80fd5b50610663600480360381019061065e919061443d565b6116b4565b6040516106709190614348565b60405180910390f35b348015610684575f80fd5b5061068d611706565b60405161069a91906144eb565b60405180910390f35b3480156106ae575f80fd5b506106b761170c565b6040516106c491906144eb565b60405180910390f35b3480156106d8575f80fd5b506106f360048036038101906106ee919061443d565b611712565b60405161070091906144eb565b60405180910390f35b348015610714575f80fd5b5061071d611758565b005b34801561072a575f80fd5b506107336118a6565b60405161074091906144eb565b60405180910390f35b348015610754575f80fd5b5061076f600480360381019061076a91906146c3565b6118ac565b005b34801561077c575f80fd5b5061079760048036038101906107929190614826565b61195c565b005b3480156107a4575f80fd5b506107bf60048036038101906107ba9190614554565b6119fe565b6040516107cc91906144eb565b60405180910390f35b3480156107e0575f80fd5b506107e9611c37565b6040516107f691906146aa565b60405180910390f35b34801561080a575f80fd5b50610813611c5e565b60405161082091906144eb565b60405180910390f35b348015610834575f80fd5b5061083d611c64565b60405161084a919061430e565b60405180910390f35b34801561085e575f80fd5b506108796004803603810190610874919061486d565b611cf4565b005b348015610886575f80fd5b506108a1600480360381019061089c9190614826565b611da2565b005b3480156108ae575f80fd5b506108c960048036038101906108c491906143ff565b611e43565b6040516108d69190614348565b60405180910390f35b3480156108ea575f80fd5b50610905600480360381019061090091906143ff565b611f0b565b6040516109129190614348565b60405180910390f35b348015610926575f80fd5b50610941600480360381019061093c9190614554565b611f28565b005b34801561094e575f80fd5b50610969600480360381019061096491906148bd565b611fc6565b005b348015610976575f80fd5b5061097f6120de565b005b34801561098c575f80fd5b50610995612603565b6040516109a291906146aa565b60405180910390f35b3480156109b6575f80fd5b506109d160048036038101906109cc91906148fb565b612628565b005b3480156109de575f80fd5b506109e76126ce565b6040516109f491906146aa565b60405180910390f35b348015610a08575f80fd5b50610a116126f3565b604051610a1e91906144eb565b60405180910390f35b348015610a32575f80fd5b50610a4d6004803603810190610a48919061498e565b6126f9565b005b348015610a5a575f80fd5b50610a756004803603810190610a7091906148bd565b612856565b604051610a8291906144eb565b60405180910390f35b348015610a96575f80fd5b50610ab16004803603810190610aac919061443d565b6128d8565b604051610abe9190614348565b60405180910390f35b348015610ad2575f80fd5b50610adb61292a565b604051610ae891906144eb565b60405180910390f35b348015610afc575f80fd5b50610b176004803603810190610b12919061443d565b612930565b005b348015610b24575f80fd5b50610b3f6004803603810190610b3a9190614554565b612aed565b005b610b49612b8b565b73ffffffffffffffffffffffffffffffffffffffff1660135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161480610bf65750610ba6612b8b565b73ffffffffffffffffffffffffffffffffffffffff1660045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16145b80610c545750610c04612b8b565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16145b610c93576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c8a90614a56565b60405180910390fd5b5f47905060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f19350505050158015610cfb573d5f803e3d5ffd5b5050565b6060600a8054610d0e90614aa1565b80601f0160208091040260200160405190810160405280929190818152602001828054610d3a90614aa1565b8015610d855780601f10610d5c57610100808354040283529160200191610d85565b820191905f5260205f20905b815481529060010190602001808311610d6857829003601f168201915b5050505050905090565b60165f9054906101000a900460ff1681565b601a54421015610de6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ddd90614b41565b60405180910390fd5b60165f9054906101000a900460ff16610e34576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e2b90614bcf565b60405180910390fd5b610e3c612b92565b565b5f610e51610e4a612b8b565b8484612d55565b6001905092915050565b610e63612b8b565b73ffffffffffffffffffffffffffffffffffffffff1660135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161480610f105750610ec0612b8b565b73ffffffffffffffffffffffffffffffffffffffff1660045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16145b80610f6e5750610f1e612b8b565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16145b610fad576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fa490614a56565b60405180910390fd5b5f8190505f8173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401610feb91906146aa565b602060405180830381865afa158015611006573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061102a9190614c01565b90508173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb60135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836040518363ffffffff1660e01b8152600401611088929190614c2c565b6020604051808303815f875af11580156110a4573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110c89190614c67565b50505050565b60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f600d54905090565b60175481565b5f61110e848484612f18565b6111cb8461111a612b8b565b6111c6856040518060600160405280602881526020016159f76028913960075f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f61117d612b8b565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054613a269092919063ffffffff16565b612d55565b600190509392505050565b6111de612b8b565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461126a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161126190614cdc565b60405180910390fd5b633b9aca008161127a9190614d27565b600e8190555050565b60115481565b5f600c5f9054906101000a900460ff16905090565b5f6113426112aa612b8b565b8461133d8560075f6112ba612b8b565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054613a8890919063ffffffff16565b612d55565b6001905092915050565b611354612b8b565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146113e0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113d790614cdc565b60405180910390fd5b6113eb838383613ae5565b505050565b60105481565b601a5481565b5f80600267ffffffffffffffff811115611419576114186146ee565b5b6040519080825280602002602001820160405280156114475781602001602082028036833780820191505090505b50905060015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156114b4573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906114d89190614d7c565b815f815181106114eb576114ea614da7565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050308160018151811061153a57611539614da7565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d06ca61f601454836040518363ffffffff1660e01b81526004016115d2929190614e8b565b5f60405180830381865afa1580156115ec573d5f803e3d5ffd5b505050506040513d5f823e3d601f19601f820116820180604052508101906116149190614f79565b60018151811061162757611626614da7565b5b602002602001015191505090565b60045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f61168930611712565b90505f8111156116b157600f5f9054906101000a900460ff166116b0576116af81613b8b565b5b5b50565b5f60095f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff169050919050565b60145481565b600e5481565b5f60065f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b611760612b8b565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146117ec576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117e390614cdc565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f805f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60125481565b6118b4612b8b565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611940576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161193790614cdc565b60405180910390fd5b8060165f6101000a81548160ff02191690831515021790555050565b611964612b8b565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146119f0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119e790614cdc565b60405180910390fd5b6119fb816001613ea8565b50565b5f80600267ffffffffffffffff811115611a1b57611a1a6146ee565b5b604051908082528060200260200182016040528015611a495781602001602082028036833780820191505090505b50905030815f81518110611a6057611a5f614da7565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611b04573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611b289190614d7c565b81600181518110611b3c57611b3b614da7565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d06ca61f84836040518363ffffffff1660e01b8152600401611bd2929190614e8b565b5f60405180830381865afa158015611bec573d5f803e3d5ffd5b505050506040513d5f823e3d601f19601f82011682018060405250810190611c149190614f79565b600181518110611c2757611c26614da7565b5b6020026020010151915050919050565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60155481565b6060600b8054611c7390614aa1565b80601f0160208091040260200160405190810160405280929190818152602001828054611c9f90614aa1565b8015611cea5780601f10611cc157610100808354040283529160200191611cea565b820191905f5260205f20905b815481529060010190602001808311611ccd57829003601f168201915b5050505050905090565b611cfc612b8b565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611d88576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d7f90614cdc565b60405180910390fd5b826010819055508160118190555080601281905550505050565b611daa612b8b565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611e36576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e2d90614cdc565b60405180910390fd5b611e40815f613ea8565b50565b5f611f01611e4f612b8b565b84611efc85604051806060016040528060258152602001615a1f6025913960075f611e78612b8b565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054613a269092919063ffffffff16565b612d55565b6001905092915050565b5f611f1e611f17612b8b565b8484612f18565b6001905092915050565b611f30612b8b565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611fbc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fb390614cdc565b60405180910390fd5b8060148190555050565b611fce612b8b565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461205a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161205190614cdc565b60405180910390fd5b8160045f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508060055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b6120e6612b8b565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612172576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161216990614cdc565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff1660025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612201576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121f890615030565b60405180910390fd5b61222f3060015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600d54612d55565b60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015612299573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906122bd9190614d7c565b73ffffffffffffffffffffffffffffffffffffffff1663c9c653963060015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612343573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906123679190614d7c565b6040518363ffffffff1660e01b815260040161238492919061504e565b6020604051808303815f875af11580156123a0573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906123c49190614d7c565b60025f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719473061244b30611712565b5f80612455611c37565b426040518863ffffffff1660e01b8152600401612477969594939291906150ae565b60606040518083038185885af1158015612493573d5f803e3d5ffd5b50505050506040513d601f19601f820116820180604052508101906124b8919061510d565b50505060025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b360015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b8152600401612558929190614c2c565b6020604051808303815f875af1158015612574573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906125989190614c67565b5060025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660035f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555042601a81905550565b60135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b612630612b8b565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146126bc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126b390614cdc565b60405180910390fd5b81601781905550806018819055505050565b60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60195481565b612701612b8b565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461278d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161278490614cdc565b60405180910390fd5b8181905084849050146127d5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127cc906151cd565b60405180910390fd5b5f3090505f5b8585905081101561284e575f8686838181106127fa576127f9614da7565b5b905060200201602081019061280f919061443d565b90505f85858481811061282557612824614da7565b5b905060200201359050612839848383612f18565b50508080612846906151eb565b9150506127db565b505050505050565b5f60075f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b5f60085f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff169050919050565b60185481565b612938612b8b565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146129c4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129bb90614cdc565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603612a32576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a29906152a2565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b612af5612b8b565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612b81576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b7890614cdc565b60405180910390fd5b8060158190555050565b5f33905090565b6001600f5f6101000a81548160ff0219169083151502179055505f612bd760025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16611712565b90505f612c026064612bf460185485613f9790919063ffffffff16565b61400e90919063ffffffff16565b90505f811115612d3857612c3760025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1682614057565b60035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663fff6cae96040518163ffffffff1660e01b81526004015f604051808303815f87803b158015612c9d575f80fd5b505af1158015612caf573d5f803e3d5ffd5b50505050612cc881601954613a8890919063ffffffff16565b601981905550612cf6612ce7603c601754613f9790919063ffffffff16565b42613a8890919063ffffffff16565b601a819055507f8bc81353cf6671d259d22783e39ed930583c86f3f4cf7e981298e6a872dfb15d81601a54604051612d2f9291906152c0565b60405180910390a15b50505f600f5f6101000a81548160ff021916908315150217905550565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612dc3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612dba90615357565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612e31576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e28906153e5565b60405180910390fd5b8060075f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051612f0b91906144eb565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612f86576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f7d90615473565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612ff4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612feb90615501565b60405180910390fd5b5f8111613036576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161302d9061558f565b60405180910390fd5b5f8060095f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff161580156130d6575060095f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b801561311557506130e5611c37565b73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b80156131545750613124611c37565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b905060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614158015613200575060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b801561323857503073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b801561327057503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b156137f05780156137ef5760025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1603613375576132f760646132e960105486613f9790919063ffffffff16565b61400e90919063ffffffff16565b91505f61330d83856141da90919063ffffffff16565b90505f61332b8261331d88611712565b613a8890919063ffffffff16565b9050600e54811115613372576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016133699061561d565b60405180910390fd5b50505b60025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff161415801561341e575060025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16145b156135f45760085f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff161580156134c1575060085f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b613500576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016134f7906156ab565b60405180910390fd5b613528606461351a60115486613f9790919063ffffffff16565b61400e90919063ffffffff16565b91505f6012541115613576575f61353e846119fe565b9050601554811061357457613571606461356360125487613f9790919063ffffffff16565b61400e90919063ffffffff16565b92505b505b601a544210158015613593575060165f9054906101000a900460ff165b156135a5576135a0612b92565b6135f3565b5f6135af30611712565b90505f8111156135f1575f6135c26113fc565b90508082101580156135e05750600f5f9054906101000a900460ff16155b156135ef576135ee81613b8b565b5b505b505b5b60025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff161415801561369e575060025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b156137ee575f6136ad86611712565b90505f6136b986611712565b905060085f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16158015613759575060085f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b613798576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161378f90615739565b60405180910390fd5b600e5482111580156137ac5750600e548111155b6137eb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016137e29061561d565b60405180910390fd5b50505b5b5b5f61380483856141da90919063ffffffff16565b90506138568460065f8973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546141da90919063ffffffff16565b60065f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055506138e78160065f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054613a8890919063ffffffff16565b60065f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055506139788360065f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054613a8890919063ffffffff16565b60065f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051613a1691906144eb565b60405180910390a3505050505050565b5f838311158290613a6d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613a64919061430e565b60405180910390fd5b505f8385613a7b9190615757565b9050809150509392505050565b5f808284613a96919061578a565b905083811015613adb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613ad290615807565b60405180910390fd5b8091505092915050565b5f5b83839050811015613b85575f848483818110613b0657613b05614da7565b5b9050602002016020810190613b1b919061443d565b90508260095f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550508080613b7d906151eb565b915050613ae7565b50505050565b5f600267ffffffffffffffff811115613ba757613ba66146ee565b5b604051908082528060200260200182016040528015613bd55781602001602082028036833780820191505090505b50905030815f81518110613bec57613beb614da7565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015613c90573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613cb49190614d7c565b81600181518110613cc857613cc7614da7565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050613d2e3060015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684612d55565b60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b8152600401613d90959493929190615825565b5f604051808303815f87803b158015613da7575f80fd5b505af1158015613db9573d5f803e3d5ffd5b505050505f4790505f613dd660028361400e90919063ffffffff16565b905060045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f19350505050158015613e3c573d5f803e3d5ffd5b5060055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f19350505050158015613ea1573d5f803e3d5ffd5b5050505050565b5f5b8251811015613f92575f838281518110613ec757613ec6614da7565b5b602002602001015190508215613f3157600160085f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550613f7e565b60085f8273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81549060ff02191690555b508080613f8a906151eb565b915050613eaa565b505050565b5f808303613fa7575f9050614008565b5f8284613fb49190614d27565b9050828482613fc391906158aa565b14614003576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613ffa9061594a565b60405180910390fd5b809150505b92915050565b5f61404f83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250614223565b905092915050565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036140c5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016140bc906159d8565b60405180910390fd5b6140da81600d546141da90919063ffffffff16565b600d819055506141308160065f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546141da90919063ffffffff16565b60065f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516141ce91906144eb565b60405180910390a35050565b5f61421b83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250613a26565b905092915050565b5f8083118290614269576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401614260919061430e565b60405180910390fd5b505f838561427791906158aa565b9050809150509392505050565b5f81519050919050565b5f82825260208201905092915050565b5f5b838110156142bb5780820151818401526020810190506142a0565b5f8484015250505050565b5f601f19601f8301169050919050565b5f6142e082614284565b6142ea818561428e565b93506142fa81856020860161429e565b614303816142c6565b840191505092915050565b5f6020820190508181035f83015261432681846142d6565b905092915050565b5f8115159050919050565b6143428161432e565b82525050565b5f60208201905061435b5f830184614339565b92915050565b5f604051905090565b5f80fd5b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f61439b82614372565b9050919050565b6143ab81614391565b81146143b5575f80fd5b50565b5f813590506143c6816143a2565b92915050565b5f819050919050565b6143de816143cc565b81146143e8575f80fd5b50565b5f813590506143f9816143d5565b92915050565b5f80604083850312156144155761441461436a565b5b5f614422858286016143b8565b9250506020614433858286016143eb565b9150509250929050565b5f602082840312156144525761445161436a565b5b5f61445f848285016143b8565b91505092915050565b5f819050919050565b5f61448b61448661448184614372565b614468565b614372565b9050919050565b5f61449c82614471565b9050919050565b5f6144ad82614492565b9050919050565b6144bd816144a3565b82525050565b5f6020820190506144d65f8301846144b4565b92915050565b6144e5816143cc565b82525050565b5f6020820190506144fe5f8301846144dc565b92915050565b5f805f6060848603121561451b5761451a61436a565b5b5f614528868287016143b8565b9350506020614539868287016143b8565b925050604061454a868287016143eb565b9150509250925092565b5f602082840312156145695761456861436a565b5b5f614576848285016143eb565b91505092915050565b5f60ff82169050919050565b6145948161457f565b82525050565b5f6020820190506145ad5f83018461458b565b92915050565b5f80fd5b5f80fd5b5f80fd5b5f8083601f8401126145d4576145d36145b3565b5b8235905067ffffffffffffffff8111156145f1576145f06145b7565b5b60208301915083602082028301111561460d5761460c6145bb565b5b9250929050565b61461d8161432e565b8114614627575f80fd5b50565b5f8135905061463881614614565b92915050565b5f805f604084860312156146555761465461436a565b5b5f84013567ffffffffffffffff8111156146725761467161436e565b5b61467e868287016145bf565b935093505060206146918682870161462a565b9150509250925092565b6146a481614391565b82525050565b5f6020820190506146bd5f83018461469b565b92915050565b5f602082840312156146d8576146d761436a565b5b5f6146e58482850161462a565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b614724826142c6565b810181811067ffffffffffffffff82111715614743576147426146ee565b5b80604052505050565b5f614755614361565b9050614761828261471b565b919050565b5f67ffffffffffffffff8211156147805761477f6146ee565b5b602082029050602081019050919050565b5f6147a361479e84614766565b61474c565b905080838252602082019050602084028301858111156147c6576147c56145bb565b5b835b818110156147ef57806147db88826143b8565b8452602084019350506020810190506147c8565b5050509392505050565b5f82601f83011261480d5761480c6145b3565b5b813561481d848260208601614791565b91505092915050565b5f6020828403121561483b5761483a61436a565b5b5f82013567ffffffffffffffff8111156148585761485761436e565b5b614864848285016147f9565b91505092915050565b5f805f606084860312156148845761488361436a565b5b5f614891868287016143eb565b93505060206148a2868287016143eb565b92505060406148b3868287016143eb565b9150509250925092565b5f80604083850312156148d3576148d261436a565b5b5f6148e0858286016143b8565b92505060206148f1858286016143b8565b9150509250929050565b5f80604083850312156149115761491061436a565b5b5f61491e858286016143eb565b925050602061492f858286016143eb565b9150509250929050565b5f8083601f84011261494e5761494d6145b3565b5b8235905067ffffffffffffffff81111561496b5761496a6145b7565b5b602083019150836020820283011115614987576149866145bb565b5b9250929050565b5f805f80604085870312156149a6576149a561436a565b5b5f85013567ffffffffffffffff8111156149c3576149c261436e565b5b6149cf878288016145bf565b9450945050602085013567ffffffffffffffff8111156149f2576149f161436e565b5b6149fe87828801614939565b925092505092959194509250565b7f63616c6c6572206973206e6f7420746865206f776e65720000000000000000005f82015250565b5f614a4060178361428e565b9150614a4b82614a0c565b602082019050919050565b5f6020820190508181035f830152614a6d81614a34565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f6002820490506001821680614ab857607f821691505b602082108103614acb57614aca614a74565b5b50919050565b7f4e657874206275726e2074696d65206973206e6f7420647565207965742c20625f8201527f652070617469656e740000000000000000000000000000000000000000000000602082015250565b5f614b2b60298361428e565b9150614b3682614ad1565b604082019050919050565b5f6020820190508181035f830152614b5881614b1f565b9050919050565b7f4275726e696e6720746f6b656e732069732063757272656e746c7920646973615f8201527f626c656400000000000000000000000000000000000000000000000000000000602082015250565b5f614bb960248361428e565b9150614bc482614b5f565b604082019050919050565b5f6020820190508181035f830152614be681614bad565b9050919050565b5f81519050614bfb816143d5565b92915050565b5f60208284031215614c1657614c1561436a565b5b5f614c2384828501614bed565b91505092915050565b5f604082019050614c3f5f83018561469b565b614c4c60208301846144dc565b9392505050565b5f81519050614c6181614614565b92915050565b5f60208284031215614c7c57614c7b61436a565b5b5f614c8984828501614c53565b91505092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f614cc660208361428e565b9150614cd182614c92565b602082019050919050565b5f6020820190508181035f830152614cf381614cba565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f614d31826143cc565b9150614d3c836143cc565b9250828202614d4a816143cc565b91508282048414831517614d6157614d60614cfa565b5b5092915050565b5f81519050614d76816143a2565b92915050565b5f60208284031215614d9157614d9061436a565b5b5f614d9e84828501614d68565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b614e0681614391565b82525050565b5f614e178383614dfd565b60208301905092915050565b5f602082019050919050565b5f614e3982614dd4565b614e438185614dde565b9350614e4e83614dee565b805f5b83811015614e7e578151614e658882614e0c565b9750614e7083614e23565b925050600181019050614e51565b5085935050505092915050565b5f604082019050614e9e5f8301856144dc565b8181036020830152614eb08184614e2f565b90509392505050565b5f67ffffffffffffffff821115614ed357614ed26146ee565b5b602082029050602081019050919050565b5f614ef6614ef184614eb9565b61474c565b90508083825260208201905060208402830185811115614f1957614f186145bb565b5b835b81811015614f425780614f2e8882614bed565b845260208401935050602081019050614f1b565b5050509392505050565b5f82601f830112614f6057614f5f6145b3565b5b8151614f70848260208601614ee4565b91505092915050565b5f60208284031215614f8e57614f8d61436a565b5b5f82015167ffffffffffffffff811115614fab57614faa61436e565b5b614fb784828501614f4c565b91505092915050565b7f556e69737761705632506169722068617320616c7265616479206265656e20735f8201527f6574000000000000000000000000000000000000000000000000000000000000602082015250565b5f61501a60228361428e565b915061502582614fc0565b604082019050919050565b5f6020820190508181035f8301526150478161500e565b9050919050565b5f6040820190506150615f83018561469b565b61506e602083018461469b565b9392505050565b5f819050919050565b5f61509861509361508e84615075565b614468565b6143cc565b9050919050565b6150a88161507e565b82525050565b5f60c0820190506150c15f83018961469b565b6150ce60208301886144dc565b6150db604083018761509f565b6150e8606083018661509f565b6150f5608083018561469b565b61510260a08301846144dc565b979650505050505050565b5f805f606084860312156151245761512361436a565b5b5f61513186828701614bed565b935050602061514286828701614bed565b925050604061515386828701614bed565b9150509250925092565b7f486f6c6465727320616e6420616d6f756e7473206d75737420626520746865205f8201527f73616d6520636f756e7400000000000000000000000000000000000000000000602082015250565b5f6151b7602a8361428e565b91506151c28261515d565b604082019050919050565b5f6020820190508181035f8301526151e4816151ab565b9050919050565b5f6151f5826143cc565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361522757615226614cfa565b5b600182019050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f61528c60268361428e565b915061529782615232565b604082019050919050565b5f6020820190508181035f8301526152b981615280565b9050919050565b5f6040820190506152d35f8301856144dc565b6152e060208301846144dc565b9392505050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f61534160248361428e565b915061534c826152e7565b604082019050919050565b5f6020820190508181035f83015261536e81615335565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f6153cf60228361428e565b91506153da82615375565b604082019050919050565b5f6020820190508181035f8301526153fc816153c3565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f61545d60258361428e565b915061546882615403565b604082019050919050565b5f6020820190508181035f83015261548a81615451565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f6154eb60238361428e565b91506154f682615491565b604082019050919050565b5f6020820190508181035f830152615518816154df565b9050919050565b7f5472616e7366657220616d6f756e74206d7573742062652067726561746572205f8201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b5f61557960298361428e565b91506155848261551f565b604082019050919050565b5f6020820190508181035f8301526155a68161556d565b9050919050565b7f57616c6c65742063616e6e6f7420657863656564206d61782057616c6c6574205f8201527f6c696d6974000000000000000000000000000000000000000000000000000000602082015250565b5f61560760258361428e565b9150615612826155ad565b604082019050919050565b5f6020820190508181035f830152615634816155fb565b9050919050565b7f626f747320617265206e6f7420616c6c6f77656420746f2073656c6c20746f6b5f8201527f656e730000000000000000000000000000000000000000000000000000000000602082015250565b5f61569560238361428e565b91506156a08261563b565b604082019050919050565b5f6020820190508181035f8301526156c281615689565b9050919050565b7f626f747320617265206e6f7420616c6c6f77656420746f207472616e736665725f8201527f20746f6b656e7300000000000000000000000000000000000000000000000000602082015250565b5f61572360278361428e565b915061572e826156c9565b604082019050919050565b5f6020820190508181035f83015261575081615717565b9050919050565b5f615761826143cc565b915061576c836143cc565b925082820390508181111561578457615783614cfa565b5b92915050565b5f615794826143cc565b915061579f836143cc565b92508282019050808211156157b7576157b6614cfa565b5b92915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f7700000000005f82015250565b5f6157f1601b8361428e565b91506157fc826157bd565b602082019050919050565b5f6020820190508181035f83015261581e816157e5565b9050919050565b5f60a0820190506158385f8301886144dc565b615845602083018761509f565b81810360408301526158578186614e2f565b9050615866606083018561469b565b61587360808301846144dc565b9695505050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f6158b4826143cc565b91506158bf836143cc565b9250826158cf576158ce61587d565b5b828204905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f5f8201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b5f61593460218361428e565b915061593f826158da565b604082019050919050565b5f6020820190508181035f83015261596181615928565b9050919050565b7f45524332303a206275726e2066726f6d20746865207a65726f206164647265735f8201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b5f6159c260218361428e565b91506159cd82615968565b604082019050919050565b5f6020820190508181035f8301526159ef816159b6565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220d078b6e120a0bbfc5402ba5a565671e1276e4ed8636cfeb4eb8aa12b48ca6e2764736f6c63430008150033

Deployed Bytecode

0x6080604052600436106102cc575f3560e01c8063715018a611610174578063b2abbbc4116100db578063dc13b31c11610094578063e7dad4f91161006e578063e7dad4f914610a8b578063f01f20df14610ac7578063f2fde38b14610af1578063f959f81714610b19576102d3565b8063dc13b31c146109fd578063dcda6af314610a27578063dd62ed3e14610a4f576102d3565b8063b2abbbc41461091b578063bd1e470414610943578063c9567bf91461096b578063d5f3948814610981578063d9058bd5146109ab578063db3e33ce146109d3576102d3565b806391142cb31161012d57806391142cb3146107ff57806395d89b41146108295780639758f61d146108535780639b0e2e861461087b578063a457c2d7146108a3578063a9059cbb146108df576102d3565b8063715018a61461070957806378bcf1d31461071f578063794ac1491461074957806385d4787b14610771578063870d365d146107995780638da5cb5b146107d5576102d3565b8063313ce567116102335780634f56f2f5116101ec5780635342acb4116101c65780635342acb41461063d57806354a5df1f146106795780636c0a24eb146106a357806370a08231146106cd576102d3565b80634f56f2f5146105d357806350faa48f146105fd57806351bc3c8514610627576102d3565b8063313ce567146104c757806339509351146104f1578063441d801f1461052d578063470624021461055557806348fad6381461057f5780634b94f50e146105a9576102d3565b80631694505e116102855780631694505e146103bb57806318160ddd146103e55780631f61fd5a1461040f57806323b872dd1461043957806327a14fc2146104755780632b14ca561461049d576102d3565b806306e99fef146102d757806306fdde03146102ed57806307ebec271461031757806308003f7814610341578063095ea7b314610357578063139196f714610393576102d3565b366102d357005b5f80fd5b3480156102e2575f80fd5b506102eb610b41565b005b3480156102f8575f80fd5b50610301610cff565b60405161030e919061430e565b60405180910390f35b348015610322575f80fd5b5061032b610d8f565b6040516103389190614348565b60405180910390f35b34801561034c575f80fd5b50610355610da1565b005b348015610362575f80fd5b5061037d600480360381019061037891906143ff565b610e3e565b60405161038a9190614348565b60405180910390f35b34801561039e575f80fd5b506103b960048036038101906103b4919061443d565b610e5b565b005b3480156103c6575f80fd5b506103cf6110ce565b6040516103dc91906144c3565b60405180910390f35b3480156103f0575f80fd5b506103f96110f3565b60405161040691906144eb565b60405180910390f35b34801561041a575f80fd5b506104236110fc565b60405161043091906144eb565b60405180910390f35b348015610444575f80fd5b5061045f600480360381019061045a9190614504565b611102565b60405161046c9190614348565b60405180910390f35b348015610480575f80fd5b5061049b60048036038101906104969190614554565b6111d6565b005b3480156104a8575f80fd5b506104b1611283565b6040516104be91906144eb565b60405180910390f35b3480156104d2575f80fd5b506104db611289565b6040516104e8919061459a565b60405180910390f35b3480156104fc575f80fd5b50610517600480360381019061051291906143ff565b61129e565b6040516105249190614348565b60405180910390f35b348015610538575f80fd5b50610553600480360381019061054e919061463e565b61134c565b005b348015610560575f80fd5b506105696113f0565b60405161057691906144eb565b60405180910390f35b34801561058a575f80fd5b506105936113f6565b6040516105a091906144eb565b60405180910390f35b3480156105b4575f80fd5b506105bd6113fc565b6040516105ca91906144eb565b60405180910390f35b3480156105de575f80fd5b506105e7611635565b6040516105f491906146aa565b60405180910390f35b348015610608575f80fd5b5061061161165a565b60405161061e91906146aa565b60405180910390f35b348015610632575f80fd5b5061063b61167f565b005b348015610648575f80fd5b50610663600480360381019061065e919061443d565b6116b4565b6040516106709190614348565b60405180910390f35b348015610684575f80fd5b5061068d611706565b60405161069a91906144eb565b60405180910390f35b3480156106ae575f80fd5b506106b761170c565b6040516106c491906144eb565b60405180910390f35b3480156106d8575f80fd5b506106f360048036038101906106ee919061443d565b611712565b60405161070091906144eb565b60405180910390f35b348015610714575f80fd5b5061071d611758565b005b34801561072a575f80fd5b506107336118a6565b60405161074091906144eb565b60405180910390f35b348015610754575f80fd5b5061076f600480360381019061076a91906146c3565b6118ac565b005b34801561077c575f80fd5b5061079760048036038101906107929190614826565b61195c565b005b3480156107a4575f80fd5b506107bf60048036038101906107ba9190614554565b6119fe565b6040516107cc91906144eb565b60405180910390f35b3480156107e0575f80fd5b506107e9611c37565b6040516107f691906146aa565b60405180910390f35b34801561080a575f80fd5b50610813611c5e565b60405161082091906144eb565b60405180910390f35b348015610834575f80fd5b5061083d611c64565b60405161084a919061430e565b60405180910390f35b34801561085e575f80fd5b506108796004803603810190610874919061486d565b611cf4565b005b348015610886575f80fd5b506108a1600480360381019061089c9190614826565b611da2565b005b3480156108ae575f80fd5b506108c960048036038101906108c491906143ff565b611e43565b6040516108d69190614348565b60405180910390f35b3480156108ea575f80fd5b50610905600480360381019061090091906143ff565b611f0b565b6040516109129190614348565b60405180910390f35b348015610926575f80fd5b50610941600480360381019061093c9190614554565b611f28565b005b34801561094e575f80fd5b50610969600480360381019061096491906148bd565b611fc6565b005b348015610976575f80fd5b5061097f6120de565b005b34801561098c575f80fd5b50610995612603565b6040516109a291906146aa565b60405180910390f35b3480156109b6575f80fd5b506109d160048036038101906109cc91906148fb565b612628565b005b3480156109de575f80fd5b506109e76126ce565b6040516109f491906146aa565b60405180910390f35b348015610a08575f80fd5b50610a116126f3565b604051610a1e91906144eb565b60405180910390f35b348015610a32575f80fd5b50610a4d6004803603810190610a48919061498e565b6126f9565b005b348015610a5a575f80fd5b50610a756004803603810190610a7091906148bd565b612856565b604051610a8291906144eb565b60405180910390f35b348015610a96575f80fd5b50610ab16004803603810190610aac919061443d565b6128d8565b604051610abe9190614348565b60405180910390f35b348015610ad2575f80fd5b50610adb61292a565b604051610ae891906144eb565b60405180910390f35b348015610afc575f80fd5b50610b176004803603810190610b12919061443d565b612930565b005b348015610b24575f80fd5b50610b3f6004803603810190610b3a9190614554565b612aed565b005b610b49612b8b565b73ffffffffffffffffffffffffffffffffffffffff1660135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161480610bf65750610ba6612b8b565b73ffffffffffffffffffffffffffffffffffffffff1660045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16145b80610c545750610c04612b8b565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16145b610c93576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c8a90614a56565b60405180910390fd5b5f47905060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f19350505050158015610cfb573d5f803e3d5ffd5b5050565b6060600a8054610d0e90614aa1565b80601f0160208091040260200160405190810160405280929190818152602001828054610d3a90614aa1565b8015610d855780601f10610d5c57610100808354040283529160200191610d85565b820191905f5260205f20905b815481529060010190602001808311610d6857829003601f168201915b5050505050905090565b60165f9054906101000a900460ff1681565b601a54421015610de6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ddd90614b41565b60405180910390fd5b60165f9054906101000a900460ff16610e34576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e2b90614bcf565b60405180910390fd5b610e3c612b92565b565b5f610e51610e4a612b8b565b8484612d55565b6001905092915050565b610e63612b8b565b73ffffffffffffffffffffffffffffffffffffffff1660135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161480610f105750610ec0612b8b565b73ffffffffffffffffffffffffffffffffffffffff1660045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16145b80610f6e5750610f1e612b8b565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16145b610fad576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fa490614a56565b60405180910390fd5b5f8190505f8173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401610feb91906146aa565b602060405180830381865afa158015611006573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061102a9190614c01565b90508173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb60135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836040518363ffffffff1660e01b8152600401611088929190614c2c565b6020604051808303815f875af11580156110a4573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110c89190614c67565b50505050565b60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f600d54905090565b60175481565b5f61110e848484612f18565b6111cb8461111a612b8b565b6111c6856040518060600160405280602881526020016159f76028913960075f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f61117d612b8b565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054613a269092919063ffffffff16565b612d55565b600190509392505050565b6111de612b8b565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461126a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161126190614cdc565b60405180910390fd5b633b9aca008161127a9190614d27565b600e8190555050565b60115481565b5f600c5f9054906101000a900460ff16905090565b5f6113426112aa612b8b565b8461133d8560075f6112ba612b8b565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054613a8890919063ffffffff16565b612d55565b6001905092915050565b611354612b8b565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146113e0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113d790614cdc565b60405180910390fd5b6113eb838383613ae5565b505050565b60105481565b601a5481565b5f80600267ffffffffffffffff811115611419576114186146ee565b5b6040519080825280602002602001820160405280156114475781602001602082028036833780820191505090505b50905060015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156114b4573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906114d89190614d7c565b815f815181106114eb576114ea614da7565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050308160018151811061153a57611539614da7565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d06ca61f601454836040518363ffffffff1660e01b81526004016115d2929190614e8b565b5f60405180830381865afa1580156115ec573d5f803e3d5ffd5b505050506040513d5f823e3d601f19601f820116820180604052508101906116149190614f79565b60018151811061162757611626614da7565b5b602002602001015191505090565b60045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f61168930611712565b90505f8111156116b157600f5f9054906101000a900460ff166116b0576116af81613b8b565b5b5b50565b5f60095f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff169050919050565b60145481565b600e5481565b5f60065f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b611760612b8b565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146117ec576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117e390614cdc565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f805f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60125481565b6118b4612b8b565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611940576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161193790614cdc565b60405180910390fd5b8060165f6101000a81548160ff02191690831515021790555050565b611964612b8b565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146119f0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119e790614cdc565b60405180910390fd5b6119fb816001613ea8565b50565b5f80600267ffffffffffffffff811115611a1b57611a1a6146ee565b5b604051908082528060200260200182016040528015611a495781602001602082028036833780820191505090505b50905030815f81518110611a6057611a5f614da7565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611b04573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611b289190614d7c565b81600181518110611b3c57611b3b614da7565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d06ca61f84836040518363ffffffff1660e01b8152600401611bd2929190614e8b565b5f60405180830381865afa158015611bec573d5f803e3d5ffd5b505050506040513d5f823e3d601f19601f82011682018060405250810190611c149190614f79565b600181518110611c2757611c26614da7565b5b6020026020010151915050919050565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60155481565b6060600b8054611c7390614aa1565b80601f0160208091040260200160405190810160405280929190818152602001828054611c9f90614aa1565b8015611cea5780601f10611cc157610100808354040283529160200191611cea565b820191905f5260205f20905b815481529060010190602001808311611ccd57829003601f168201915b5050505050905090565b611cfc612b8b565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611d88576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d7f90614cdc565b60405180910390fd5b826010819055508160118190555080601281905550505050565b611daa612b8b565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611e36576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e2d90614cdc565b60405180910390fd5b611e40815f613ea8565b50565b5f611f01611e4f612b8b565b84611efc85604051806060016040528060258152602001615a1f6025913960075f611e78612b8b565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054613a269092919063ffffffff16565b612d55565b6001905092915050565b5f611f1e611f17612b8b565b8484612f18565b6001905092915050565b611f30612b8b565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611fbc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fb390614cdc565b60405180910390fd5b8060148190555050565b611fce612b8b565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461205a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161205190614cdc565b60405180910390fd5b8160045f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508060055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b6120e6612b8b565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612172576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161216990614cdc565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff1660025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612201576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121f890615030565b60405180910390fd5b61222f3060015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600d54612d55565b60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015612299573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906122bd9190614d7c565b73ffffffffffffffffffffffffffffffffffffffff1663c9c653963060015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612343573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906123679190614d7c565b6040518363ffffffff1660e01b815260040161238492919061504e565b6020604051808303815f875af11580156123a0573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906123c49190614d7c565b60025f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719473061244b30611712565b5f80612455611c37565b426040518863ffffffff1660e01b8152600401612477969594939291906150ae565b60606040518083038185885af1158015612493573d5f803e3d5ffd5b50505050506040513d601f19601f820116820180604052508101906124b8919061510d565b50505060025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b360015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b8152600401612558929190614c2c565b6020604051808303815f875af1158015612574573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906125989190614c67565b5060025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660035f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555042601a81905550565b60135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b612630612b8b565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146126bc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126b390614cdc565b60405180910390fd5b81601781905550806018819055505050565b60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60195481565b612701612b8b565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461278d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161278490614cdc565b60405180910390fd5b8181905084849050146127d5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127cc906151cd565b60405180910390fd5b5f3090505f5b8585905081101561284e575f8686838181106127fa576127f9614da7565b5b905060200201602081019061280f919061443d565b90505f85858481811061282557612824614da7565b5b905060200201359050612839848383612f18565b50508080612846906151eb565b9150506127db565b505050505050565b5f60075f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b5f60085f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff169050919050565b60185481565b612938612b8b565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146129c4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129bb90614cdc565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603612a32576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a29906152a2565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b612af5612b8b565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612b81576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b7890614cdc565b60405180910390fd5b8060158190555050565b5f33905090565b6001600f5f6101000a81548160ff0219169083151502179055505f612bd760025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16611712565b90505f612c026064612bf460185485613f9790919063ffffffff16565b61400e90919063ffffffff16565b90505f811115612d3857612c3760025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1682614057565b60035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663fff6cae96040518163ffffffff1660e01b81526004015f604051808303815f87803b158015612c9d575f80fd5b505af1158015612caf573d5f803e3d5ffd5b50505050612cc881601954613a8890919063ffffffff16565b601981905550612cf6612ce7603c601754613f9790919063ffffffff16565b42613a8890919063ffffffff16565b601a819055507f8bc81353cf6671d259d22783e39ed930583c86f3f4cf7e981298e6a872dfb15d81601a54604051612d2f9291906152c0565b60405180910390a15b50505f600f5f6101000a81548160ff021916908315150217905550565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612dc3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612dba90615357565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612e31576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e28906153e5565b60405180910390fd5b8060075f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051612f0b91906144eb565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612f86576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f7d90615473565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612ff4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612feb90615501565b60405180910390fd5b5f8111613036576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161302d9061558f565b60405180910390fd5b5f8060095f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff161580156130d6575060095f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b801561311557506130e5611c37565b73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b80156131545750613124611c37565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b905060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614158015613200575060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b801561323857503073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b801561327057503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b156137f05780156137ef5760025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1603613375576132f760646132e960105486613f9790919063ffffffff16565b61400e90919063ffffffff16565b91505f61330d83856141da90919063ffffffff16565b90505f61332b8261331d88611712565b613a8890919063ffffffff16565b9050600e54811115613372576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016133699061561d565b60405180910390fd5b50505b60025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff161415801561341e575060025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16145b156135f45760085f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff161580156134c1575060085f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b613500576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016134f7906156ab565b60405180910390fd5b613528606461351a60115486613f9790919063ffffffff16565b61400e90919063ffffffff16565b91505f6012541115613576575f61353e846119fe565b9050601554811061357457613571606461356360125487613f9790919063ffffffff16565b61400e90919063ffffffff16565b92505b505b601a544210158015613593575060165f9054906101000a900460ff165b156135a5576135a0612b92565b6135f3565b5f6135af30611712565b90505f8111156135f1575f6135c26113fc565b90508082101580156135e05750600f5f9054906101000a900460ff16155b156135ef576135ee81613b8b565b5b505b505b5b60025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff161415801561369e575060025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b156137ee575f6136ad86611712565b90505f6136b986611712565b905060085f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16158015613759575060085f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b613798576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161378f90615739565b60405180910390fd5b600e5482111580156137ac5750600e548111155b6137eb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016137e29061561d565b60405180910390fd5b50505b5b5b5f61380483856141da90919063ffffffff16565b90506138568460065f8973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546141da90919063ffffffff16565b60065f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055506138e78160065f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054613a8890919063ffffffff16565b60065f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055506139788360065f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054613a8890919063ffffffff16565b60065f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051613a1691906144eb565b60405180910390a3505050505050565b5f838311158290613a6d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613a64919061430e565b60405180910390fd5b505f8385613a7b9190615757565b9050809150509392505050565b5f808284613a96919061578a565b905083811015613adb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613ad290615807565b60405180910390fd5b8091505092915050565b5f5b83839050811015613b85575f848483818110613b0657613b05614da7565b5b9050602002016020810190613b1b919061443d565b90508260095f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550508080613b7d906151eb565b915050613ae7565b50505050565b5f600267ffffffffffffffff811115613ba757613ba66146ee565b5b604051908082528060200260200182016040528015613bd55781602001602082028036833780820191505090505b50905030815f81518110613bec57613beb614da7565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015613c90573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613cb49190614d7c565b81600181518110613cc857613cc7614da7565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050613d2e3060015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684612d55565b60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b8152600401613d90959493929190615825565b5f604051808303815f87803b158015613da7575f80fd5b505af1158015613db9573d5f803e3d5ffd5b505050505f4790505f613dd660028361400e90919063ffffffff16565b905060045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f19350505050158015613e3c573d5f803e3d5ffd5b5060055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f19350505050158015613ea1573d5f803e3d5ffd5b5050505050565b5f5b8251811015613f92575f838281518110613ec757613ec6614da7565b5b602002602001015190508215613f3157600160085f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550613f7e565b60085f8273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81549060ff02191690555b508080613f8a906151eb565b915050613eaa565b505050565b5f808303613fa7575f9050614008565b5f8284613fb49190614d27565b9050828482613fc391906158aa565b14614003576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613ffa9061594a565b60405180910390fd5b809150505b92915050565b5f61404f83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250614223565b905092915050565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036140c5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016140bc906159d8565b60405180910390fd5b6140da81600d546141da90919063ffffffff16565b600d819055506141308160065f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546141da90919063ffffffff16565b60065f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516141ce91906144eb565b60405180910390a35050565b5f61421b83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250613a26565b905092915050565b5f8083118290614269576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401614260919061430e565b60405180910390fd5b505f838561427791906158aa565b9050809150509392505050565b5f81519050919050565b5f82825260208201905092915050565b5f5b838110156142bb5780820151818401526020810190506142a0565b5f8484015250505050565b5f601f19601f8301169050919050565b5f6142e082614284565b6142ea818561428e565b93506142fa81856020860161429e565b614303816142c6565b840191505092915050565b5f6020820190508181035f83015261432681846142d6565b905092915050565b5f8115159050919050565b6143428161432e565b82525050565b5f60208201905061435b5f830184614339565b92915050565b5f604051905090565b5f80fd5b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f61439b82614372565b9050919050565b6143ab81614391565b81146143b5575f80fd5b50565b5f813590506143c6816143a2565b92915050565b5f819050919050565b6143de816143cc565b81146143e8575f80fd5b50565b5f813590506143f9816143d5565b92915050565b5f80604083850312156144155761441461436a565b5b5f614422858286016143b8565b9250506020614433858286016143eb565b9150509250929050565b5f602082840312156144525761445161436a565b5b5f61445f848285016143b8565b91505092915050565b5f819050919050565b5f61448b61448661448184614372565b614468565b614372565b9050919050565b5f61449c82614471565b9050919050565b5f6144ad82614492565b9050919050565b6144bd816144a3565b82525050565b5f6020820190506144d65f8301846144b4565b92915050565b6144e5816143cc565b82525050565b5f6020820190506144fe5f8301846144dc565b92915050565b5f805f6060848603121561451b5761451a61436a565b5b5f614528868287016143b8565b9350506020614539868287016143b8565b925050604061454a868287016143eb565b9150509250925092565b5f602082840312156145695761456861436a565b5b5f614576848285016143eb565b91505092915050565b5f60ff82169050919050565b6145948161457f565b82525050565b5f6020820190506145ad5f83018461458b565b92915050565b5f80fd5b5f80fd5b5f80fd5b5f8083601f8401126145d4576145d36145b3565b5b8235905067ffffffffffffffff8111156145f1576145f06145b7565b5b60208301915083602082028301111561460d5761460c6145bb565b5b9250929050565b61461d8161432e565b8114614627575f80fd5b50565b5f8135905061463881614614565b92915050565b5f805f604084860312156146555761465461436a565b5b5f84013567ffffffffffffffff8111156146725761467161436e565b5b61467e868287016145bf565b935093505060206146918682870161462a565b9150509250925092565b6146a481614391565b82525050565b5f6020820190506146bd5f83018461469b565b92915050565b5f602082840312156146d8576146d761436a565b5b5f6146e58482850161462a565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b614724826142c6565b810181811067ffffffffffffffff82111715614743576147426146ee565b5b80604052505050565b5f614755614361565b9050614761828261471b565b919050565b5f67ffffffffffffffff8211156147805761477f6146ee565b5b602082029050602081019050919050565b5f6147a361479e84614766565b61474c565b905080838252602082019050602084028301858111156147c6576147c56145bb565b5b835b818110156147ef57806147db88826143b8565b8452602084019350506020810190506147c8565b5050509392505050565b5f82601f83011261480d5761480c6145b3565b5b813561481d848260208601614791565b91505092915050565b5f6020828403121561483b5761483a61436a565b5b5f82013567ffffffffffffffff8111156148585761485761436e565b5b614864848285016147f9565b91505092915050565b5f805f606084860312156148845761488361436a565b5b5f614891868287016143eb565b93505060206148a2868287016143eb565b92505060406148b3868287016143eb565b9150509250925092565b5f80604083850312156148d3576148d261436a565b5b5f6148e0858286016143b8565b92505060206148f1858286016143b8565b9150509250929050565b5f80604083850312156149115761491061436a565b5b5f61491e858286016143eb565b925050602061492f858286016143eb565b9150509250929050565b5f8083601f84011261494e5761494d6145b3565b5b8235905067ffffffffffffffff81111561496b5761496a6145b7565b5b602083019150836020820283011115614987576149866145bb565b5b9250929050565b5f805f80604085870312156149a6576149a561436a565b5b5f85013567ffffffffffffffff8111156149c3576149c261436e565b5b6149cf878288016145bf565b9450945050602085013567ffffffffffffffff8111156149f2576149f161436e565b5b6149fe87828801614939565b925092505092959194509250565b7f63616c6c6572206973206e6f7420746865206f776e65720000000000000000005f82015250565b5f614a4060178361428e565b9150614a4b82614a0c565b602082019050919050565b5f6020820190508181035f830152614a6d81614a34565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f6002820490506001821680614ab857607f821691505b602082108103614acb57614aca614a74565b5b50919050565b7f4e657874206275726e2074696d65206973206e6f7420647565207965742c20625f8201527f652070617469656e740000000000000000000000000000000000000000000000602082015250565b5f614b2b60298361428e565b9150614b3682614ad1565b604082019050919050565b5f6020820190508181035f830152614b5881614b1f565b9050919050565b7f4275726e696e6720746f6b656e732069732063757272656e746c7920646973615f8201527f626c656400000000000000000000000000000000000000000000000000000000602082015250565b5f614bb960248361428e565b9150614bc482614b5f565b604082019050919050565b5f6020820190508181035f830152614be681614bad565b9050919050565b5f81519050614bfb816143d5565b92915050565b5f60208284031215614c1657614c1561436a565b5b5f614c2384828501614bed565b91505092915050565b5f604082019050614c3f5f83018561469b565b614c4c60208301846144dc565b9392505050565b5f81519050614c6181614614565b92915050565b5f60208284031215614c7c57614c7b61436a565b5b5f614c8984828501614c53565b91505092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f614cc660208361428e565b9150614cd182614c92565b602082019050919050565b5f6020820190508181035f830152614cf381614cba565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f614d31826143cc565b9150614d3c836143cc565b9250828202614d4a816143cc565b91508282048414831517614d6157614d60614cfa565b5b5092915050565b5f81519050614d76816143a2565b92915050565b5f60208284031215614d9157614d9061436a565b5b5f614d9e84828501614d68565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b614e0681614391565b82525050565b5f614e178383614dfd565b60208301905092915050565b5f602082019050919050565b5f614e3982614dd4565b614e438185614dde565b9350614e4e83614dee565b805f5b83811015614e7e578151614e658882614e0c565b9750614e7083614e23565b925050600181019050614e51565b5085935050505092915050565b5f604082019050614e9e5f8301856144dc565b8181036020830152614eb08184614e2f565b90509392505050565b5f67ffffffffffffffff821115614ed357614ed26146ee565b5b602082029050602081019050919050565b5f614ef6614ef184614eb9565b61474c565b90508083825260208201905060208402830185811115614f1957614f186145bb565b5b835b81811015614f425780614f2e8882614bed565b845260208401935050602081019050614f1b565b5050509392505050565b5f82601f830112614f6057614f5f6145b3565b5b8151614f70848260208601614ee4565b91505092915050565b5f60208284031215614f8e57614f8d61436a565b5b5f82015167ffffffffffffffff811115614fab57614faa61436e565b5b614fb784828501614f4c565b91505092915050565b7f556e69737761705632506169722068617320616c7265616479206265656e20735f8201527f6574000000000000000000000000000000000000000000000000000000000000602082015250565b5f61501a60228361428e565b915061502582614fc0565b604082019050919050565b5f6020820190508181035f8301526150478161500e565b9050919050565b5f6040820190506150615f83018561469b565b61506e602083018461469b565b9392505050565b5f819050919050565b5f61509861509361508e84615075565b614468565b6143cc565b9050919050565b6150a88161507e565b82525050565b5f60c0820190506150c15f83018961469b565b6150ce60208301886144dc565b6150db604083018761509f565b6150e8606083018661509f565b6150f5608083018561469b565b61510260a08301846144dc565b979650505050505050565b5f805f606084860312156151245761512361436a565b5b5f61513186828701614bed565b935050602061514286828701614bed565b925050604061515386828701614bed565b9150509250925092565b7f486f6c6465727320616e6420616d6f756e7473206d75737420626520746865205f8201527f73616d6520636f756e7400000000000000000000000000000000000000000000602082015250565b5f6151b7602a8361428e565b91506151c28261515d565b604082019050919050565b5f6020820190508181035f8301526151e4816151ab565b9050919050565b5f6151f5826143cc565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361522757615226614cfa565b5b600182019050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f61528c60268361428e565b915061529782615232565b604082019050919050565b5f6020820190508181035f8301526152b981615280565b9050919050565b5f6040820190506152d35f8301856144dc565b6152e060208301846144dc565b9392505050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f61534160248361428e565b915061534c826152e7565b604082019050919050565b5f6020820190508181035f83015261536e81615335565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f6153cf60228361428e565b91506153da82615375565b604082019050919050565b5f6020820190508181035f8301526153fc816153c3565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f61545d60258361428e565b915061546882615403565b604082019050919050565b5f6020820190508181035f83015261548a81615451565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f6154eb60238361428e565b91506154f682615491565b604082019050919050565b5f6020820190508181035f830152615518816154df565b9050919050565b7f5472616e7366657220616d6f756e74206d7573742062652067726561746572205f8201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b5f61557960298361428e565b91506155848261551f565b604082019050919050565b5f6020820190508181035f8301526155a68161556d565b9050919050565b7f57616c6c65742063616e6e6f7420657863656564206d61782057616c6c6574205f8201527f6c696d6974000000000000000000000000000000000000000000000000000000602082015250565b5f61560760258361428e565b9150615612826155ad565b604082019050919050565b5f6020820190508181035f830152615634816155fb565b9050919050565b7f626f747320617265206e6f7420616c6c6f77656420746f2073656c6c20746f6b5f8201527f656e730000000000000000000000000000000000000000000000000000000000602082015250565b5f61569560238361428e565b91506156a08261563b565b604082019050919050565b5f6020820190508181035f8301526156c281615689565b9050919050565b7f626f747320617265206e6f7420616c6c6f77656420746f207472616e736665725f8201527f20746f6b656e7300000000000000000000000000000000000000000000000000602082015250565b5f61572360278361428e565b915061572e826156c9565b604082019050919050565b5f6020820190508181035f83015261575081615717565b9050919050565b5f615761826143cc565b915061576c836143cc565b925082820390508181111561578457615783614cfa565b5b92915050565b5f615794826143cc565b915061579f836143cc565b92508282019050808211156157b7576157b6614cfa565b5b92915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f7700000000005f82015250565b5f6157f1601b8361428e565b91506157fc826157bd565b602082019050919050565b5f6020820190508181035f83015261581e816157e5565b9050919050565b5f60a0820190506158385f8301886144dc565b615845602083018761509f565b81810360408301526158578186614e2f565b9050615866606083018561469b565b61587360808301846144dc565b9695505050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f6158b4826143cc565b91506158bf836143cc565b9250826158cf576158ce61587d565b5b828204905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f5f8201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b5f61593460218361428e565b915061593f826158da565b604082019050919050565b5f6020820190508181035f83015261596181615928565b9050919050565b7f45524332303a206275726e2066726f6d20746865207a65726f206164647265735f8201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b5f6159c260218361428e565b91506159cd82615968565b604082019050919050565b5f6020820190508181035f8301526159ef816159b6565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220d078b6e120a0bbfc5402ba5a565671e1276e4ed8636cfeb4eb8aa12b48ca6e2764736f6c63430008150033

Deployed Bytecode Sourcemap

11597:14060:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25252:146;;;;;;;;;;;;;:::i;:::-;;13746:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13015:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18221:262;;;;;;;;;;;;;:::i;:::-;;14579:161;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25406:242;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11883:106;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14023:95;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13055:41;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14748:313;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19905:137;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12780:26;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13932:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15069:218;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16655:161;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12745:25;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13204:38;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24401:264;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12077:66;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11996:38;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23389:267;;;;;;;;;;;;;:::i;:::-;;19773:124;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12884:50;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12649:61;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14126:119;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6675:148;;;;;;;;;;;;;:::i;:::-;;12815:32;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18106:107;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16028:128;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;24673:272;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6461:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12973:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13837:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15572:176;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16164:131;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15295:269;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14253:167;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24953:122;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15874:146;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;19041:724;;;;;;;;;;;;;:::i;:::-;;12854:23;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16823:201;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12150:66;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13155:42;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17674:424;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14428:143;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15757:109;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13105:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6831:244;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;25083:124;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;25252:146;13304:12;:10;:12::i;:::-;13292:24;;:8;;;;;;;;;;;:24;;;:50;;;;13330:12;:10;:12::i;:::-;13320:22;;:6;;;;;;;;;;;:22;;;13292:50;:76;;;;13356:12;:10;:12::i;:::-;13346:22;;:6;;;;;;;;;;;:22;;;13292:76;13284:112;;;;;;;;;;;;:::i;:::-;;;;;;;;;25299:18:::1;25320:21;25299:42;;25360:8;;;;;;;;;;;25352:26;;:38;25379:10;25352:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;25288:110;25252:146::o:0;13746:83::-;13783:13;13816:5;13809:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13746:83;:::o;13015:33::-;;;;;;;;;;;;;:::o;18221:262::-;18290:26;;18271:15;:45;;18263:99;;;;;;;;;;;;:::i;:::-;;;;;;;;;18381:13;;;;;;;;;;;18373:62;;;;;;;;;;;;:::i;:::-;;;;;;;;;18446:29;:27;:29::i;:::-;18221:262::o;14579:161::-;14654:4;14671:39;14680:12;:10;:12::i;:::-;14694:7;14703:6;14671:8;:39::i;:::-;14728:4;14721:11;;14579:161;;;;:::o;25406:242::-;13304:12;:10;:12::i;:::-;13292:24;;:8;;;;;;;;;;;:24;;;:50;;;;13330:12;:10;:12::i;:::-;13320:22;;:6;;;;;;;;;;;:22;;;13292:50;:76;;;;13356:12;:10;:12::i;:::-;13346:22;;:6;;;;;;;;;;;:22;;;13292:76;13284:112;;;;;;;;;;;;:::i;:::-;;;;;;;;;25484:17:::1;25511:15;25484:43;;25538:15;25556:10;:20;;;25585:4;25556:35;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;25538:53;;25602:10;:19;;;25622:8;;;;;;;;;;;25632:7;25602:38;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;25473:175;;25406:242:::0;:::o;11883:106::-;;;;;;;;;;;;;:::o;14023:95::-;14076:7;14103;;14096:14;;14023:95;:::o;13055:41::-;;;;:::o;14748:313::-;14846:4;14863:36;14873:6;14881:9;14892:6;14863:9;:36::i;:::-;14910:121;14919:6;14927:12;:10;:12::i;:::-;14941:89;14979:6;14941:89;;;;;;;;;;;;;;;;;:11;:19;14953:6;14941:19;;;;;;;;;;;;;;;:33;14961:12;:10;:12::i;:::-;14941:33;;;;;;;;;;;;;;;;:37;;:89;;;;;:::i;:::-;14910:8;:121::i;:::-;15049:4;15042:11;;14748:313;;;;;:::o;19905:137::-;6598:12;:10;:12::i;:::-;6588:22;;:6;;;;;;;;;;:22;;;6580:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;20027:7:::1;20009:15;:25;;;;:::i;:::-;19990:16;:44;;;;19905:137:::0;:::o;12780:26::-;;;;:::o;13932:83::-;13973:5;13998:9;;;;;;;;;;;13991:16;;13932:83;:::o;15069:218::-;15157:4;15174:83;15183:12;:10;:12::i;:::-;15197:7;15206:50;15245:10;15206:11;:25;15218:12;:10;:12::i;:::-;15206:25;;;;;;;;;;;;;;;:34;15232:7;15206:34;;;;;;;;;;;;;;;;:38;;:50;;;;:::i;:::-;15174:8;:83::i;:::-;15275:4;15268:11;;15069:218;;;;:::o;16655:161::-;6598:12;:10;:12::i;:::-;6588:22;;:6;;;;;;;;;;:22;;;6580:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;16767:41:::1;16780:9;;16791:16;16767:12;:41::i;:::-;16655:161:::0;;;:::o;12745:25::-;;;;:::o;13204:38::-;;;;:::o;24401:264::-;24447:7;24468:21;24506:1;24492:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24468:40;;24529:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;24519:4;24524:1;24519:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;;;24580:4;24562;24567:1;24562:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;24603:15;;;;;;;;;;;:29;;;24633:14;;24649:4;24603:51;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;24655:1;24603:54;;;;;;;;:::i;:::-;;;;;;;;24596:61;;;24401:264;:::o;12077:66::-;;;;;;;;;;;;;:::o;11996:38::-;;;;;;;;;;;;;:::o;23389:267::-;23431:28;23462:24;23480:4;23462:9;:24::i;:::-;23431:55;;23524:1;23501:20;:24;23497:152;;;23547:16;;;;;;;;;;;23542:96;;23584:38;23601:20;23584:16;:38::i;:::-;23542:96;23497:152;23420:236;23389:267::o;19773:124::-;19838:4;19862:18;:27;19881:7;19862:27;;;;;;;;;;;;;;;;;;;;;;;;;19855:34;;19773:124;;;:::o;12884:50::-;;;;:::o;12649:61::-;;;;:::o;14126:119::-;14192:7;14219:9;:18;14229:7;14219:18;;;;;;;;;;;;;;;;14212:25;;14126:119;;;:::o;6675:148::-;6598:12;:10;:12::i;:::-;6588:22;;:6;;;;;;;;;;:22;;;6580:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;6782:1:::1;6745:40;;6766:6;::::0;::::1;;;;;;;;6745:40;;;;;;;;;;;;6813:1;6796:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;6675:148::o:0;12815:32::-;;;;:::o;18106:107::-;6598:12;:10;:12::i;:::-;6588:22;;:6;;;;;;;;;;:22;;;6580:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;18197:8:::1;18181:13;;:24;;;;;;;;;;;;;;;;;;18106:107:::0;:::o;16028:128::-;6598:12;:10;:12::i;:::-;6588:22;;:6;;;;;;;;;;:22;;;6580:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;16112:36:::1;16132:9;16143:4;16112:19;:36::i;:::-;16028:128:::0;:::o;24673:272::-;24733:4;24751:21;24789:1;24775:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24751:40;;24820:4;24802;24807:1;24802:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;24846:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;24836:4;24841:1;24836:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;;;24886:15;;;;;;;;;;;:29;;;24916:11;24929:4;24886:48;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;24935:1;24886:51;;;;;;;;:::i;:::-;;;;;;;;24879:58;;;24673:272;;;:::o;6461:79::-;6499:7;6526:6;;;;;;;;;;;6519:13;;6461:79;:::o;12973:35::-;;;;:::o;13837:87::-;13876:13;13909:7;13902:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13837:87;:::o;15572:176::-;6598:12;:10;:12::i;:::-;6588:22;;:6;;;;;;;;;;:22;;;6580:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;15677:3:::1;15668:6;:12;;;;15701:4;15691:7;:14;;;;15731:9;15716:12;:24;;;;15572:176:::0;;;:::o;16164:131::-;6598:12;:10;:12::i;:::-;6588:22;;:6;;;;;;;;;;:22;;;6580:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;16250:37:::1;16270:9;16281:5;16250:19;:37::i;:::-;16164:131:::0;:::o;15295:269::-;15388:4;15405:129;15414:12;:10;:12::i;:::-;15428:7;15437:96;15476:15;15437:96;;;;;;;;;;;;;;;;;:11;:25;15449:12;:10;:12::i;:::-;15437:25;;;;;;;;;;;;;;;:34;15463:7;15437:34;;;;;;;;;;;;;;;;:38;;:96;;;;;:::i;:::-;15405:8;:129::i;:::-;15552:4;15545:11;;15295:269;;;;:::o;14253:167::-;14331:4;14348:42;14358:12;:10;:12::i;:::-;14372:9;14383:6;14348:9;:42::i;:::-;14408:4;14401:11;;14253:167;;;;:::o;24953:122::-;6598:12;:10;:12::i;:::-;6588:22;;:6;;;;;;;;;;:22;;;6580:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;25052:15:::1;25035:14;:32;;;;24953:122:::0;:::o;15874:146::-;6598:12;:10;:12::i;:::-;6588:22;;:6;;;;;;;;;;:22;;;6580:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;15978:7:::1;15969:6;;:16;;;;;;;;;;;;;;;;;;16005:7;15996:6;;:16;;;;;;;;;;;;;;;;;;15874:146:::0;;:::o;19041:724::-;6598:12;:10;:12::i;:::-;6588:22;;:6;;;;;;;;;;:22;;;6580:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;19126:1:::1;19104:24;;:10;;;;;;;;;;;:24;;;19096:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;19177:58;19194:4;19209:15;;;;;;;;;;;19227:7;;19177:8;:58::i;:::-;19277:15;;;;;;;;;;;:23;;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;19259:55;;;19323:4;19330:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;19259:94;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;19246:10;;:107;;;;;;;;;;;;;;;;;;19364:15;;;;;;;;;;;:31;;;19403:21;19448:4;19468:24;19486:4;19468:9;:24::i;:::-;19507:1;19523::::0;19539:7:::1;:5;:7::i;:::-;19561:15;19364:213;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;19595:10;;;;;;;;;;;19588:26;;;19623:15;;;;;;;;;;;19641:14;19588:68;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;19691:10;;;;;;;;;;;19667:6;;:35;;;;;;;;;;;;;;;;;;19742:15;19713:26;:44;;;;19041:724::o:0;12854:23::-;;;;;;;;;;;;;:::o;16823:201::-;6598:12;:10;:12::i;:::-;6588:22;;:6;;;;;;;;;;:22;;;6580:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;16955:18:::1;16931:21;:42;;;;17001:15;16984:14;:32;;;;16823:201:::0;;:::o;12150:66::-;;;;;;;;;;;;;:::o;13155:42::-;;;;:::o;17674:424::-;6598:12;:10;:12::i;:::-;6588:22;;:6;;;;;;;;;;:22;;;6580:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17804:7:::1;;:14;;17786:7;;:14;;:32;17778:87;;;;;;;;;;;;:::i;:::-;;;;;;;;;17876:12;17899:4;17876:28;;17919:9;17915:176;17936:7;;:14;;17932:1;:18;17915:176;;;17972:10;17985:7;;17993:1;17985:10;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;17972:23;;18010:14;18027:7;;18035:1;18027:10;;;;;;;:::i;:::-;;;;;;;;18010:27;;18052;18062:4;18068:2;18072:6;18052:9;:27::i;:::-;17957:134;;17952:3;;;;;:::i;:::-;;;;17915:176;;;;17767:331;17674:424:::0;;;;:::o;14428:143::-;14509:7;14536:11;:18;14548:5;14536:18;;;;;;;;;;;;;;;:27;14555:7;14536:27;;;;;;;;;;;;;;;;14529:34;;14428:143;;;;:::o;15757:109::-;15818:4;15842:10;:16;15853:4;15842:16;;;;;;;;;;;;;;;;;;;;;;;;;15835:23;;15757:109;;;:::o;13105:33::-;;;;:::o;6831:244::-;6598:12;:10;:12::i;:::-;6588:22;;:6;;;;;;;;;;:22;;;6580:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;6940:1:::1;6920:22;;:8;:22;;::::0;6912:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;7030:8;7001:38;;7022:6;::::0;::::1;;;;;;;;7001:38;;;;;;;;;;;;7059:8;7050:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;6831:244:::0;:::o;25083:124::-;6598:12;:10;:12::i;:::-;6588:22;;:6;;;;;;;;;;:22;;;6580:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;25185:14:::1;25169:13;:30;;;;25083:124:::0;:::o;2803:98::-;2856:7;2883:10;2876:17;;2803:98;:::o;17032:634::-;11775:4;11756:16;;:23;;;;;;;;;;;;;;;;;;17102:14:::1;17119:21;17129:10;;;;;;;;;;;17119:9;:21::i;:::-;17102:38;;17151:20;17174:38;17208:3;17174:29;17188:14;;17174:9;:13;;:29;;;;:::i;:::-;:33;;:38;;;;:::i;:::-;17151:61;;17244:1;17226:15;:19;17223:436;;;17329:34;17335:10;;;;;;;;;;;17347:15;17329:5;:34::i;:::-;17378:6;;;;;;;;;;;:11;;;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;17432:44;17460:15;17432:23;;:27;;:44;;;;:::i;:::-;17406:23;:70;;;;17520:50;17540:29;17566:2;17540:21;;:25;;:29;;;;:::i;:::-;17520:15;:19;;:50;;;;:::i;:::-;17491:26;:79;;;;17590:57;17603:15;17620:26;;17590:57;;;;;;;:::i;:::-;;;;;;;;17223:436;17091:575;;11821:5:::0;11802:16;;:24;;;;;;;;;;;;;;;;;;17032:634::o;20050:337::-;20160:1;20143:19;;:5;:19;;;20135:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;20241:1;20222:21;;:7;:21;;;20214:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;20325:6;20295:11;:18;20307:5;20295:18;;;;;;;;;;;;;;;:27;20314:7;20295:27;;;;;;;;;;;;;;;:36;;;;20363:7;20347:32;;20356:5;20347:32;;;20372:6;20347:32;;;;;;:::i;:::-;;;;;;;;20050:337;;;:::o;20395:2984::-;20499:1;20483:18;;:4;:18;;;20475:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;20576:1;20562:16;;:2;:16;;;20554:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;20646:1;20637:6;:10;20629:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;20704:17;20736:13;20753:18;:24;20772:4;20753:24;;;;;;;;;;;;;;;;;;;;;;;;;20752:25;:52;;;;;20782:18;:22;20801:2;20782:22;;;;;;;;;;;;;;;;;;;;;;;;;20781:23;20752:52;:71;;;;;20816:7;:5;:7::i;:::-;20808:15;;:4;:15;;;;20752:71;:88;;;;;20833:7;:5;:7::i;:::-;20827:13;;:2;:13;;;;20752:88;20736:104;;20862:8;;;;;;;;;;;20854:16;;:4;:16;;;;:34;;;;;20880:8;;;;;;;;;;;20874:14;;:2;:14;;;;20854:34;:59;;;;;20908:4;20892:21;;:4;:21;;;;20854:59;:82;;;;;20931:4;20917:19;;:2;:19;;;;20854:82;20851:2214;;;20956:8;20953:2101;;;20997:10;;;;;;;;;;;20989:18;;:4;:18;;;20985:361;;21044:27;21067:3;21044:18;21055:6;;21044;:10;;:18;;;;:::i;:::-;:22;;:27;;;;:::i;:::-;21032:39;;21094:22;21119:21;21130:9;21119:6;:10;;:21;;;;:::i;:::-;21094:46;;21163:21;21187:33;21205:14;21187:13;21197:2;21187:9;:13::i;:::-;:17;;:33;;;;:::i;:::-;21163:57;;21268:16;;21251:13;:33;;21243:83;;;;;;;;;;;;:::i;:::-;;;;;;;;;21009:337;;20985:361;21376:10;;;;;;;;;;;21368:18;;:4;:18;;;;:38;;;;;21396:10;;;;;;;;;;;21390:16;;:2;:16;;;21368:38;21364:1229;;;21440:10;:16;21451:4;21440:16;;;;;;;;;;;;;;;;;;;;;;;;;21439:17;:36;;;;;21461:10;:14;21472:2;21461:14;;;;;;;;;;;;;;;;;;;;;;;;;21460:15;21439:36;21431:84;;;;;;;;;;;;:::i;:::-;;;;;;;;;21558:28;21582:3;21558:19;21569:7;;21558:6;:10;;:19;;;;:::i;:::-;:23;;:28;;;;:::i;:::-;21546:40;;21628:1;21613:12;;:16;21610:267;;;21658:13;21674:19;21686:6;21674:11;:19::i;:::-;21658:35;;21735:13;;21723:8;:25;21720:134;;21793:33;21822:3;21793:24;21804:12;;21793:6;:10;;:24;;;;:::i;:::-;:28;;:33;;;;:::i;:::-;21781:45;;21720:134;21631:246;21610:267;21939:26;;21920:15;:45;;:62;;;;;21969:13;;;;;;;;;;;21920:62;21917:657;;;22015:29;:27;:29::i;:::-;21917:657;;;22101:28;22132:24;22150:4;22132:9;:24::i;:::-;22101:55;;22210:1;22187:20;:24;22183:364;;;22278:19;22300:15;:13;:15::i;:::-;22278:37;;22378:11;22354:20;:35;;:56;;;;;22394:16;;;;;;;;;;;22393:17;22354:56;22350:166;;;22451:29;22468:11;22451:16;:29::i;:::-;22350:166;22213:334;22183:364;22074:500;21917:657;21364:1229;22623:10;;;;;;;;;;;22615:18;;:4;:18;;;;:38;;;;;22643:10;;;;;;;;;;;22637:16;;:2;:16;;;;22615:38;22611:428;;;22678:19;22700:15;22710:4;22700:9;:15::i;:::-;22678:37;;22738:17;22758:13;22768:2;22758:9;:13::i;:::-;22738:33;;22803:10;:16;22814:4;22803:16;;;;;;;;;;;;;;;;;;;;;;;;;22802:17;:36;;;;;22824:10;:14;22835:2;22824:14;;;;;;;;;;;;;;;;;;;;;;;;;22823:15;22802:36;22794:88;;;;;;;;;;;;:::i;:::-;;;;;;;;;22928:16;;22913:11;:31;;:64;;;;;22961:16;;22948:9;:29;;22913:64;22905:114;;;;;;;;;;;;:::i;:::-;;;;;;;;;22655:384;;22611:428;20953:2101;20851:2214;23082:22;23107:21;23118:9;23107:6;:10;;:21;;;;:::i;:::-;23082:46;;23157:27;23177:6;23157:9;:15;23167:4;23157:15;;;;;;;;;;;;;;;;:19;;:27;;;;:::i;:::-;23139:9;:15;23149:4;23139:15;;;;;;;;;;;;;;;:45;;;;23211:33;23229:14;23211:9;:13;23221:2;23211:13;;;;;;;;;;;;;;;;:17;;:33;;;;:::i;:::-;23195:9;:13;23205:2;23195:13;;;;;;;;;;;;;;;:49;;;;23282:39;23311:9;23282;:24;23300:4;23282:24;;;;;;;;;;;;;;;;:28;;:39;;;;:::i;:::-;23255:9;:24;23273:4;23255:24;;;;;;;;;;;;;;;:66;;;;23352:2;23337:34;;23346:4;23337:34;;;23356:14;23337:34;;;;;;:::i;:::-;;;;;;;;20464:2915;;;20395:2984;;;:::o;1275:192::-;1361:7;1394:1;1389;:6;;1397:12;1381:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;1421:9;1437:1;1433;:5;;;;:::i;:::-;1421:17;;1458:1;1451:8;;;1275:192;;;;;:::o;942:181::-;1000:7;1020:9;1036:1;1032;:5;;;;:::i;:::-;1020:17;;1061:1;1056;:6;;1048:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;1114:1;1107:8;;;942:181;;;;:::o;18491:236::-;18578:9;18573:147;18597:9;;:16;;18593:1;:20;18573:147;;;18635:12;18650:9;;18660:1;18650:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;18635:27;;18704:4;18677:18;:24;18696:4;18677:24;;;;;;;;;;;;;;;;:31;;;;;;;;;;;;;;;;;;18620:100;18615:3;;;;;:::i;:::-;;;;18573:147;;;;18491:236;;;:::o;23664:729::-;23790:21;23828:1;23814:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23790:40;;23859:4;23841;23846:1;23841:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;23885:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;23875:4;23880:1;23875:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;;;23918:62;23935:4;23950:15;;;;;;;;;;;23968:11;23918:8;:62::i;:::-;23991:15;;;;;;;;;;;:66;;;24072:11;24098:1;24114:4;24141;24161:15;23991:196;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24200:18;24221:21;24200:42;;24253:17;24273;24288:1;24273:10;:14;;:17;;;;:::i;:::-;24253:37;;24311:6;;;;;;;;;;;24303:24;;:35;24328:9;24303:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24357:6;;;;;;;;;;;24349:24;;:35;24374:9;24349:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23719:674;;;23664:729;:::o;16303:346::-;16398:9;16393:249;16417:9;:16;16413:1;:20;16393:249;;;16455:12;16470:9;16480:1;16470:12;;;;;;;;:::i;:::-;;;;;;;;16455:27;;16500:7;16497:134;;;16547:4;16528:10;:16;16539:4;16528:16;;;;;;;;;;;;;;;;:23;;;;;;;;;;;;;;;;;;16497:134;;;16599:10;:16;16610:4;16599:16;;;;;;;;;;;;;;;;16592:23;;;;;;;;;;;16497:134;16440:202;16435:3;;;;;:::i;:::-;;;;16393:249;;;;16303:346;;:::o;1475:471::-;1533:7;1783:1;1778;:6;1774:47;;1808:1;1801:8;;;;1774:47;1833:9;1849:1;1845;:5;;;;:::i;:::-;1833:17;;1878:1;1873;1869;:5;;;;:::i;:::-;:10;1861:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;1937:1;1930:8;;;1475:471;;;;;:::o;1954:132::-;2012:7;2039:39;2043:1;2046;2039:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;2032:46;;1954:132;;;;:::o;18735:294::-;18829:1;18810:21;;:7;:21;;;18802:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;18890:18;18902:5;18890:7;;:11;;:18;;;;:::i;:::-;18880:7;:28;;;;18940:29;18963:5;18940:9;:18;18950:7;18940:18;;;;;;;;;;;;;;;;:22;;:29;;;;:::i;:::-;18919:9;:18;18929:7;18919:18;;;;;;;;;;;;;;;:50;;;;19011:1;18985:36;;18994:7;18985:36;;;19015:5;18985:36;;;;;;:::i;:::-;;;;;;;;18735:294;;:::o;1131:136::-;1189:7;1216:43;1220:1;1223;1216:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;1209:50;;1131:136;;;;:::o;2094:278::-;2180:7;2212:1;2208;:5;2215:12;2200:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;2239:9;2255:1;2251;:5;;;;:::i;:::-;2239:17;;2363:1;2356:8;;;2094:278;;;;;:::o;7:99:1:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:246::-;368:1;378:113;392:6;389:1;386:13;378:113;;;477:1;472:3;468:11;462:18;458:1;453:3;449:11;442:39;414:2;411:1;407:10;402:15;;378:113;;;525:1;516:6;511:3;507:16;500:27;349:184;287:246;;;:::o;539:102::-;580:6;631:2;627:7;622:2;615:5;611:14;607:28;597:38;;539:102;;;:::o;647:377::-;735:3;763:39;796:5;763:39;:::i;:::-;818:71;882:6;877:3;818:71;:::i;:::-;811:78;;898:65;956:6;951:3;944:4;937:5;933:16;898:65;:::i;:::-;988:29;1010:6;988:29;:::i;:::-;983:3;979:39;972:46;;739:285;647:377;;;;:::o;1030:313::-;1143:4;1181:2;1170:9;1166:18;1158:26;;1230:9;1224:4;1220:20;1216:1;1205:9;1201:17;1194:47;1258:78;1331:4;1322:6;1258:78;:::i;:::-;1250:86;;1030:313;;;;:::o;1349:90::-;1383:7;1426:5;1419:13;1412:21;1401:32;;1349:90;;;:::o;1445:109::-;1526:21;1541:5;1526:21;:::i;:::-;1521:3;1514:34;1445:109;;:::o;1560:210::-;1647:4;1685:2;1674:9;1670:18;1662:26;;1698:65;1760:1;1749:9;1745:17;1736:6;1698:65;:::i;:::-;1560:210;;;;:::o;1776:75::-;1809:6;1842:2;1836:9;1826:19;;1776:75;:::o;1857:117::-;1966:1;1963;1956:12;1980:117;2089:1;2086;2079:12;2103:126;2140:7;2180:42;2173:5;2169:54;2158:65;;2103:126;;;:::o;2235:96::-;2272:7;2301:24;2319:5;2301:24;:::i;:::-;2290:35;;2235:96;;;:::o;2337:122::-;2410:24;2428:5;2410:24;:::i;:::-;2403:5;2400:35;2390:63;;2449:1;2446;2439:12;2390:63;2337:122;:::o;2465:139::-;2511:5;2549:6;2536:20;2527:29;;2565:33;2592:5;2565:33;:::i;:::-;2465:139;;;;:::o;2610:77::-;2647:7;2676:5;2665:16;;2610:77;;;:::o;2693:122::-;2766:24;2784:5;2766:24;:::i;:::-;2759:5;2756:35;2746:63;;2805:1;2802;2795:12;2746:63;2693:122;:::o;2821:139::-;2867:5;2905:6;2892:20;2883:29;;2921:33;2948:5;2921:33;:::i;:::-;2821:139;;;;:::o;2966:474::-;3034:6;3042;3091:2;3079:9;3070:7;3066:23;3062:32;3059:119;;;3097:79;;:::i;:::-;3059:119;3217:1;3242:53;3287:7;3278:6;3267:9;3263:22;3242:53;:::i;:::-;3232:63;;3188:117;3344:2;3370:53;3415:7;3406:6;3395:9;3391:22;3370:53;:::i;:::-;3360:63;;3315:118;2966:474;;;;;:::o;3446:329::-;3505:6;3554:2;3542:9;3533:7;3529:23;3525:32;3522:119;;;3560:79;;:::i;:::-;3522:119;3680:1;3705:53;3750:7;3741:6;3730:9;3726:22;3705:53;:::i;:::-;3695:63;;3651:117;3446:329;;;;:::o;3781:60::-;3809:3;3830:5;3823:12;;3781:60;;;:::o;3847:142::-;3897:9;3930:53;3948:34;3957:24;3975:5;3957:24;:::i;:::-;3948:34;:::i;:::-;3930:53;:::i;:::-;3917:66;;3847:142;;;:::o;3995:126::-;4045:9;4078:37;4109:5;4078:37;:::i;:::-;4065:50;;3995:126;;;:::o;4127:152::-;4203:9;4236:37;4267:5;4236:37;:::i;:::-;4223:50;;4127:152;;;:::o;4285:183::-;4398:63;4455:5;4398:63;:::i;:::-;4393:3;4386:76;4285:183;;:::o;4474:274::-;4593:4;4631:2;4620:9;4616:18;4608:26;;4644:97;4738:1;4727:9;4723:17;4714:6;4644:97;:::i;:::-;4474:274;;;;:::o;4754:118::-;4841:24;4859:5;4841:24;:::i;:::-;4836:3;4829:37;4754:118;;:::o;4878:222::-;4971:4;5009:2;4998:9;4994:18;4986:26;;5022:71;5090:1;5079:9;5075:17;5066:6;5022:71;:::i;:::-;4878:222;;;;:::o;5106:619::-;5183:6;5191;5199;5248:2;5236:9;5227:7;5223:23;5219:32;5216:119;;;5254:79;;:::i;:::-;5216:119;5374:1;5399:53;5444:7;5435:6;5424:9;5420:22;5399:53;:::i;:::-;5389:63;;5345:117;5501:2;5527:53;5572:7;5563:6;5552:9;5548:22;5527:53;:::i;:::-;5517:63;;5472:118;5629:2;5655:53;5700:7;5691:6;5680:9;5676:22;5655:53;:::i;:::-;5645:63;;5600:118;5106:619;;;;;:::o;5731:329::-;5790:6;5839:2;5827:9;5818:7;5814:23;5810:32;5807:119;;;5845:79;;:::i;:::-;5807:119;5965:1;5990:53;6035:7;6026:6;6015:9;6011:22;5990:53;:::i;:::-;5980:63;;5936:117;5731:329;;;;:::o;6066:86::-;6101:7;6141:4;6134:5;6130:16;6119:27;;6066:86;;;:::o;6158:112::-;6241:22;6257:5;6241:22;:::i;:::-;6236:3;6229:35;6158:112;;:::o;6276:214::-;6365:4;6403:2;6392:9;6388:18;6380:26;;6416:67;6480:1;6469:9;6465:17;6456:6;6416:67;:::i;:::-;6276:214;;;;:::o;6496:117::-;6605:1;6602;6595:12;6619:117;6728:1;6725;6718:12;6742:117;6851:1;6848;6841:12;6882:568;6955:8;6965:6;7015:3;7008:4;7000:6;6996:17;6992:27;6982:122;;7023:79;;:::i;:::-;6982:122;7136:6;7123:20;7113:30;;7166:18;7158:6;7155:30;7152:117;;;7188:79;;:::i;:::-;7152:117;7302:4;7294:6;7290:17;7278:29;;7356:3;7348:4;7340:6;7336:17;7326:8;7322:32;7319:41;7316:128;;;7363:79;;:::i;:::-;7316:128;6882:568;;;;;:::o;7456:116::-;7526:21;7541:5;7526:21;:::i;:::-;7519:5;7516:32;7506:60;;7562:1;7559;7552:12;7506:60;7456:116;:::o;7578:133::-;7621:5;7659:6;7646:20;7637:29;;7675:30;7699:5;7675:30;:::i;:::-;7578:133;;;;:::o;7717:698::-;7809:6;7817;7825;7874:2;7862:9;7853:7;7849:23;7845:32;7842:119;;;7880:79;;:::i;:::-;7842:119;8028:1;8017:9;8013:17;8000:31;8058:18;8050:6;8047:30;8044:117;;;8080:79;;:::i;:::-;8044:117;8193:80;8265:7;8256:6;8245:9;8241:22;8193:80;:::i;:::-;8175:98;;;;7971:312;8322:2;8348:50;8390:7;8381:6;8370:9;8366:22;8348:50;:::i;:::-;8338:60;;8293:115;7717:698;;;;;:::o;8421:118::-;8508:24;8526:5;8508:24;:::i;:::-;8503:3;8496:37;8421:118;;:::o;8545:222::-;8638:4;8676:2;8665:9;8661:18;8653:26;;8689:71;8757:1;8746:9;8742:17;8733:6;8689:71;:::i;:::-;8545:222;;;;:::o;8773:323::-;8829:6;8878:2;8866:9;8857:7;8853:23;8849:32;8846:119;;;8884:79;;:::i;:::-;8846:119;9004:1;9029:50;9071:7;9062:6;9051:9;9047:22;9029:50;:::i;:::-;9019:60;;8975:114;8773:323;;;;:::o;9102:180::-;9150:77;9147:1;9140:88;9247:4;9244:1;9237:15;9271:4;9268:1;9261:15;9288:281;9371:27;9393:4;9371:27;:::i;:::-;9363:6;9359:40;9501:6;9489:10;9486:22;9465:18;9453:10;9450:34;9447:62;9444:88;;;9512:18;;:::i;:::-;9444:88;9552:10;9548:2;9541:22;9331:238;9288:281;;:::o;9575:129::-;9609:6;9636:20;;:::i;:::-;9626:30;;9665:33;9693:4;9685:6;9665:33;:::i;:::-;9575:129;;;:::o;9710:311::-;9787:4;9877:18;9869:6;9866:30;9863:56;;;9899:18;;:::i;:::-;9863:56;9949:4;9941:6;9937:17;9929:25;;10009:4;10003;9999:15;9991:23;;9710:311;;;:::o;10044:710::-;10140:5;10165:81;10181:64;10238:6;10181:64;:::i;:::-;10165:81;:::i;:::-;10156:90;;10266:5;10295:6;10288:5;10281:21;10329:4;10322:5;10318:16;10311:23;;10382:4;10374:6;10370:17;10362:6;10358:30;10411:3;10403:6;10400:15;10397:122;;;10430:79;;:::i;:::-;10397:122;10545:6;10528:220;10562:6;10557:3;10554:15;10528:220;;;10637:3;10666:37;10699:3;10687:10;10666:37;:::i;:::-;10661:3;10654:50;10733:4;10728:3;10724:14;10717:21;;10604:144;10588:4;10583:3;10579:14;10572:21;;10528:220;;;10532:21;10146:608;;10044:710;;;;;:::o;10777:370::-;10848:5;10897:3;10890:4;10882:6;10878:17;10874:27;10864:122;;10905:79;;:::i;:::-;10864:122;11022:6;11009:20;11047:94;11137:3;11129:6;11122:4;11114:6;11110:17;11047:94;:::i;:::-;11038:103;;10854:293;10777:370;;;;:::o;11153:539::-;11237:6;11286:2;11274:9;11265:7;11261:23;11257:32;11254:119;;;11292:79;;:::i;:::-;11254:119;11440:1;11429:9;11425:17;11412:31;11470:18;11462:6;11459:30;11456:117;;;11492:79;;:::i;:::-;11456:117;11597:78;11667:7;11658:6;11647:9;11643:22;11597:78;:::i;:::-;11587:88;;11383:302;11153:539;;;;:::o;11698:619::-;11775:6;11783;11791;11840:2;11828:9;11819:7;11815:23;11811:32;11808:119;;;11846:79;;:::i;:::-;11808:119;11966:1;11991:53;12036:7;12027:6;12016:9;12012:22;11991:53;:::i;:::-;11981:63;;11937:117;12093:2;12119:53;12164:7;12155:6;12144:9;12140:22;12119:53;:::i;:::-;12109:63;;12064:118;12221:2;12247:53;12292:7;12283:6;12272:9;12268:22;12247:53;:::i;:::-;12237:63;;12192:118;11698:619;;;;;:::o;12323:474::-;12391:6;12399;12448:2;12436:9;12427:7;12423:23;12419:32;12416:119;;;12454:79;;:::i;:::-;12416:119;12574:1;12599:53;12644:7;12635:6;12624:9;12620:22;12599:53;:::i;:::-;12589:63;;12545:117;12701:2;12727:53;12772:7;12763:6;12752:9;12748:22;12727:53;:::i;:::-;12717:63;;12672:118;12323:474;;;;;:::o;12803:::-;12871:6;12879;12928:2;12916:9;12907:7;12903:23;12899:32;12896:119;;;12934:79;;:::i;:::-;12896:119;13054:1;13079:53;13124:7;13115:6;13104:9;13100:22;13079:53;:::i;:::-;13069:63;;13025:117;13181:2;13207:53;13252:7;13243:6;13232:9;13228:22;13207:53;:::i;:::-;13197:63;;13152:118;12803:474;;;;;:::o;13300:568::-;13373:8;13383:6;13433:3;13426:4;13418:6;13414:17;13410:27;13400:122;;13441:79;;:::i;:::-;13400:122;13554:6;13541:20;13531:30;;13584:18;13576:6;13573:30;13570:117;;;13606:79;;:::i;:::-;13570:117;13720:4;13712:6;13708:17;13696:29;;13774:3;13766:4;13758:6;13754:17;13744:8;13740:32;13737:41;13734:128;;;13781:79;;:::i;:::-;13734:128;13300:568;;;;;:::o;13874:934::-;13996:6;14004;14012;14020;14069:2;14057:9;14048:7;14044:23;14040:32;14037:119;;;14075:79;;:::i;:::-;14037:119;14223:1;14212:9;14208:17;14195:31;14253:18;14245:6;14242:30;14239:117;;;14275:79;;:::i;:::-;14239:117;14388:80;14460:7;14451:6;14440:9;14436:22;14388:80;:::i;:::-;14370:98;;;;14166:312;14545:2;14534:9;14530:18;14517:32;14576:18;14568:6;14565:30;14562:117;;;14598:79;;:::i;:::-;14562:117;14711:80;14783:7;14774:6;14763:9;14759:22;14711:80;:::i;:::-;14693:98;;;;14488:313;13874:934;;;;;;;:::o;14814:173::-;14954:25;14950:1;14942:6;14938:14;14931:49;14814:173;:::o;14993:366::-;15135:3;15156:67;15220:2;15215:3;15156:67;:::i;:::-;15149:74;;15232:93;15321:3;15232:93;:::i;:::-;15350:2;15345:3;15341:12;15334:19;;14993:366;;;:::o;15365:419::-;15531:4;15569:2;15558:9;15554:18;15546:26;;15618:9;15612:4;15608:20;15604:1;15593:9;15589:17;15582:47;15646:131;15772:4;15646:131;:::i;:::-;15638:139;;15365:419;;;:::o;15790:180::-;15838:77;15835:1;15828:88;15935:4;15932:1;15925:15;15959:4;15956:1;15949:15;15976:320;16020:6;16057:1;16051:4;16047:12;16037:22;;16104:1;16098:4;16094:12;16125:18;16115:81;;16181:4;16173:6;16169:17;16159:27;;16115:81;16243:2;16235:6;16232:14;16212:18;16209:38;16206:84;;16262:18;;:::i;:::-;16206:84;16027:269;15976:320;;;:::o;16302:228::-;16442:34;16438:1;16430:6;16426:14;16419:58;16511:11;16506:2;16498:6;16494:15;16487:36;16302:228;:::o;16536:366::-;16678:3;16699:67;16763:2;16758:3;16699:67;:::i;:::-;16692:74;;16775:93;16864:3;16775:93;:::i;:::-;16893:2;16888:3;16884:12;16877:19;;16536:366;;;:::o;16908:419::-;17074:4;17112:2;17101:9;17097:18;17089:26;;17161:9;17155:4;17151:20;17147:1;17136:9;17132:17;17125:47;17189:131;17315:4;17189:131;:::i;:::-;17181:139;;16908:419;;;:::o;17333:223::-;17473:34;17469:1;17461:6;17457:14;17450:58;17542:6;17537:2;17529:6;17525:15;17518:31;17333:223;:::o;17562:366::-;17704:3;17725:67;17789:2;17784:3;17725:67;:::i;:::-;17718:74;;17801:93;17890:3;17801:93;:::i;:::-;17919:2;17914:3;17910:12;17903:19;;17562:366;;;:::o;17934:419::-;18100:4;18138:2;18127:9;18123:18;18115:26;;18187:9;18181:4;18177:20;18173:1;18162:9;18158:17;18151:47;18215:131;18341:4;18215:131;:::i;:::-;18207:139;;17934:419;;;:::o;18359:143::-;18416:5;18447:6;18441:13;18432:22;;18463:33;18490:5;18463:33;:::i;:::-;18359:143;;;;:::o;18508:351::-;18578:6;18627:2;18615:9;18606:7;18602:23;18598:32;18595:119;;;18633:79;;:::i;:::-;18595:119;18753:1;18778:64;18834:7;18825:6;18814:9;18810:22;18778:64;:::i;:::-;18768:74;;18724:128;18508:351;;;;:::o;18865:332::-;18986:4;19024:2;19013:9;19009:18;19001:26;;19037:71;19105:1;19094:9;19090:17;19081:6;19037:71;:::i;:::-;19118:72;19186:2;19175:9;19171:18;19162:6;19118:72;:::i;:::-;18865:332;;;;;:::o;19203:137::-;19257:5;19288:6;19282:13;19273:22;;19304:30;19328:5;19304:30;:::i;:::-;19203:137;;;;:::o;19346:345::-;19413:6;19462:2;19450:9;19441:7;19437:23;19433:32;19430:119;;;19468:79;;:::i;:::-;19430:119;19588:1;19613:61;19666:7;19657:6;19646:9;19642:22;19613:61;:::i;:::-;19603:71;;19559:125;19346:345;;;;:::o;19697:182::-;19837:34;19833:1;19825:6;19821:14;19814:58;19697:182;:::o;19885:366::-;20027:3;20048:67;20112:2;20107:3;20048:67;:::i;:::-;20041:74;;20124:93;20213:3;20124:93;:::i;:::-;20242:2;20237:3;20233:12;20226:19;;19885:366;;;:::o;20257:419::-;20423:4;20461:2;20450:9;20446:18;20438:26;;20510:9;20504:4;20500:20;20496:1;20485:9;20481:17;20474:47;20538:131;20664:4;20538:131;:::i;:::-;20530:139;;20257:419;;;:::o;20682:180::-;20730:77;20727:1;20720:88;20827:4;20824:1;20817:15;20851:4;20848:1;20841:15;20868:410;20908:7;20931:20;20949:1;20931:20;:::i;:::-;20926:25;;20965:20;20983:1;20965:20;:::i;:::-;20960:25;;21020:1;21017;21013:9;21042:30;21060:11;21042:30;:::i;:::-;21031:41;;21221:1;21212:7;21208:15;21205:1;21202:22;21182:1;21175:9;21155:83;21132:139;;21251:18;;:::i;:::-;21132:139;20916:362;20868:410;;;;:::o;21284:143::-;21341:5;21372:6;21366:13;21357:22;;21388:33;21415:5;21388:33;:::i;:::-;21284:143;;;;:::o;21433:351::-;21503:6;21552:2;21540:9;21531:7;21527:23;21523:32;21520:119;;;21558:79;;:::i;:::-;21520:119;21678:1;21703:64;21759:7;21750:6;21739:9;21735:22;21703:64;:::i;:::-;21693:74;;21649:128;21433:351;;;;:::o;21790:180::-;21838:77;21835:1;21828:88;21935:4;21932:1;21925:15;21959:4;21956:1;21949:15;21976:114;22043:6;22077:5;22071:12;22061:22;;21976:114;;;:::o;22096:184::-;22195:11;22229:6;22224:3;22217:19;22269:4;22264:3;22260:14;22245:29;;22096:184;;;;:::o;22286:132::-;22353:4;22376:3;22368:11;;22406:4;22401:3;22397:14;22389:22;;22286:132;;;:::o;22424:108::-;22501:24;22519:5;22501:24;:::i;:::-;22496:3;22489:37;22424:108;;:::o;22538:179::-;22607:10;22628:46;22670:3;22662:6;22628:46;:::i;:::-;22706:4;22701:3;22697:14;22683:28;;22538:179;;;;:::o;22723:113::-;22793:4;22825;22820:3;22816:14;22808:22;;22723:113;;;:::o;22872:732::-;22991:3;23020:54;23068:5;23020:54;:::i;:::-;23090:86;23169:6;23164:3;23090:86;:::i;:::-;23083:93;;23200:56;23250:5;23200:56;:::i;:::-;23279:7;23310:1;23295:284;23320:6;23317:1;23314:13;23295:284;;;23396:6;23390:13;23423:63;23482:3;23467:13;23423:63;:::i;:::-;23416:70;;23509:60;23562:6;23509:60;:::i;:::-;23499:70;;23355:224;23342:1;23339;23335:9;23330:14;;23295:284;;;23299:14;23595:3;23588:10;;22996:608;;;22872:732;;;;:::o;23610:483::-;23781:4;23819:2;23808:9;23804:18;23796:26;;23832:71;23900:1;23889:9;23885:17;23876:6;23832:71;:::i;:::-;23950:9;23944:4;23940:20;23935:2;23924:9;23920:18;23913:48;23978:108;24081:4;24072:6;23978:108;:::i;:::-;23970:116;;23610:483;;;;;:::o;24099:311::-;24176:4;24266:18;24258:6;24255:30;24252:56;;;24288:18;;:::i;:::-;24252:56;24338:4;24330:6;24326:17;24318:25;;24398:4;24392;24388:15;24380:23;;24099:311;;;:::o;24433:732::-;24540:5;24565:81;24581:64;24638:6;24581:64;:::i;:::-;24565:81;:::i;:::-;24556:90;;24666:5;24695:6;24688:5;24681:21;24729:4;24722:5;24718:16;24711:23;;24782:4;24774:6;24770:17;24762:6;24758:30;24811:3;24803:6;24800:15;24797:122;;;24830:79;;:::i;:::-;24797:122;24945:6;24928:231;24962:6;24957:3;24954:15;24928:231;;;25037:3;25066:48;25110:3;25098:10;25066:48;:::i;:::-;25061:3;25054:61;25144:4;25139:3;25135:14;25128:21;;25004:155;24988:4;24983:3;24979:14;24972:21;;24928:231;;;24932:21;24546:619;;24433:732;;;;;:::o;25188:385::-;25270:5;25319:3;25312:4;25304:6;25300:17;25296:27;25286:122;;25327:79;;:::i;:::-;25286:122;25437:6;25431:13;25462:105;25563:3;25555:6;25548:4;25540:6;25536:17;25462:105;:::i;:::-;25453:114;;25276:297;25188:385;;;;:::o;25579:554::-;25674:6;25723:2;25711:9;25702:7;25698:23;25694:32;25691:119;;;25729:79;;:::i;:::-;25691:119;25870:1;25859:9;25855:17;25849:24;25900:18;25892:6;25889:30;25886:117;;;25922:79;;:::i;:::-;25886:117;26027:89;26108:7;26099:6;26088:9;26084:22;26027:89;:::i;:::-;26017:99;;25820:306;25579:554;;;;:::o;26139:221::-;26279:34;26275:1;26267:6;26263:14;26256:58;26348:4;26343:2;26335:6;26331:15;26324:29;26139:221;:::o;26366:366::-;26508:3;26529:67;26593:2;26588:3;26529:67;:::i;:::-;26522:74;;26605:93;26694:3;26605:93;:::i;:::-;26723:2;26718:3;26714:12;26707:19;;26366:366;;;:::o;26738:419::-;26904:4;26942:2;26931:9;26927:18;26919:26;;26991:9;26985:4;26981:20;26977:1;26966:9;26962:17;26955:47;27019:131;27145:4;27019:131;:::i;:::-;27011:139;;26738:419;;;:::o;27163:332::-;27284:4;27322:2;27311:9;27307:18;27299:26;;27335:71;27403:1;27392:9;27388:17;27379:6;27335:71;:::i;:::-;27416:72;27484:2;27473:9;27469:18;27460:6;27416:72;:::i;:::-;27163:332;;;;;:::o;27501:85::-;27546:7;27575:5;27564:16;;27501:85;;;:::o;27592:158::-;27650:9;27683:61;27701:42;27710:32;27736:5;27710:32;:::i;:::-;27701:42;:::i;:::-;27683:61;:::i;:::-;27670:74;;27592:158;;;:::o;27756:147::-;27851:45;27890:5;27851:45;:::i;:::-;27846:3;27839:58;27756:147;;:::o;27909:807::-;28158:4;28196:3;28185:9;28181:19;28173:27;;28210:71;28278:1;28267:9;28263:17;28254:6;28210:71;:::i;:::-;28291:72;28359:2;28348:9;28344:18;28335:6;28291:72;:::i;:::-;28373:80;28449:2;28438:9;28434:18;28425:6;28373:80;:::i;:::-;28463;28539:2;28528:9;28524:18;28515:6;28463:80;:::i;:::-;28553:73;28621:3;28610:9;28606:19;28597:6;28553:73;:::i;:::-;28636;28704:3;28693:9;28689:19;28680:6;28636:73;:::i;:::-;27909:807;;;;;;;;;:::o;28722:663::-;28810:6;28818;28826;28875:2;28863:9;28854:7;28850:23;28846:32;28843:119;;;28881:79;;:::i;:::-;28843:119;29001:1;29026:64;29082:7;29073:6;29062:9;29058:22;29026:64;:::i;:::-;29016:74;;28972:128;29139:2;29165:64;29221:7;29212:6;29201:9;29197:22;29165:64;:::i;:::-;29155:74;;29110:129;29278:2;29304:64;29360:7;29351:6;29340:9;29336:22;29304:64;:::i;:::-;29294:74;;29249:129;28722:663;;;;;:::o;29391:229::-;29531:34;29527:1;29519:6;29515:14;29508:58;29600:12;29595:2;29587:6;29583:15;29576:37;29391:229;:::o;29626:366::-;29768:3;29789:67;29853:2;29848:3;29789:67;:::i;:::-;29782:74;;29865:93;29954:3;29865:93;:::i;:::-;29983:2;29978:3;29974:12;29967:19;;29626:366;;;:::o;29998:419::-;30164:4;30202:2;30191:9;30187:18;30179:26;;30251:9;30245:4;30241:20;30237:1;30226:9;30222:17;30215:47;30279:131;30405:4;30279:131;:::i;:::-;30271:139;;29998:419;;;:::o;30423:233::-;30462:3;30485:24;30503:5;30485:24;:::i;:::-;30476:33;;30531:66;30524:5;30521:77;30518:103;;30601:18;;:::i;:::-;30518:103;30648:1;30641:5;30637:13;30630:20;;30423:233;;;:::o;30662:225::-;30802:34;30798:1;30790:6;30786:14;30779:58;30871:8;30866:2;30858:6;30854:15;30847:33;30662:225;:::o;30893:366::-;31035:3;31056:67;31120:2;31115:3;31056:67;:::i;:::-;31049:74;;31132:93;31221:3;31132:93;:::i;:::-;31250:2;31245:3;31241:12;31234:19;;30893:366;;;:::o;31265:419::-;31431:4;31469:2;31458:9;31454:18;31446:26;;31518:9;31512:4;31508:20;31504:1;31493:9;31489:17;31482:47;31546:131;31672:4;31546:131;:::i;:::-;31538:139;;31265:419;;;:::o;31690:332::-;31811:4;31849:2;31838:9;31834:18;31826:26;;31862:71;31930:1;31919:9;31915:17;31906:6;31862:71;:::i;:::-;31943:72;32011:2;32000:9;31996:18;31987:6;31943:72;:::i;:::-;31690:332;;;;;:::o;32028:223::-;32168:34;32164:1;32156:6;32152:14;32145:58;32237:6;32232:2;32224:6;32220:15;32213:31;32028:223;:::o;32257:366::-;32399:3;32420:67;32484:2;32479:3;32420:67;:::i;:::-;32413:74;;32496:93;32585:3;32496:93;:::i;:::-;32614:2;32609:3;32605:12;32598:19;;32257:366;;;:::o;32629:419::-;32795:4;32833:2;32822:9;32818:18;32810:26;;32882:9;32876:4;32872:20;32868:1;32857:9;32853:17;32846:47;32910:131;33036:4;32910:131;:::i;:::-;32902:139;;32629:419;;;:::o;33054:221::-;33194:34;33190:1;33182:6;33178:14;33171:58;33263:4;33258:2;33250:6;33246:15;33239:29;33054:221;:::o;33281:366::-;33423:3;33444:67;33508:2;33503:3;33444:67;:::i;:::-;33437:74;;33520:93;33609:3;33520:93;:::i;:::-;33638:2;33633:3;33629:12;33622:19;;33281:366;;;:::o;33653:419::-;33819:4;33857:2;33846:9;33842:18;33834:26;;33906:9;33900:4;33896:20;33892:1;33881:9;33877:17;33870:47;33934:131;34060:4;33934:131;:::i;:::-;33926:139;;33653:419;;;:::o;34078:224::-;34218:34;34214:1;34206:6;34202:14;34195:58;34287:7;34282:2;34274:6;34270:15;34263:32;34078:224;:::o;34308:366::-;34450:3;34471:67;34535:2;34530:3;34471:67;:::i;:::-;34464:74;;34547:93;34636:3;34547:93;:::i;:::-;34665:2;34660:3;34656:12;34649:19;;34308:366;;;:::o;34680:419::-;34846:4;34884:2;34873:9;34869:18;34861:26;;34933:9;34927:4;34923:20;34919:1;34908:9;34904:17;34897:47;34961:131;35087:4;34961:131;:::i;:::-;34953:139;;34680:419;;;:::o;35105:222::-;35245:34;35241:1;35233:6;35229:14;35222:58;35314:5;35309:2;35301:6;35297:15;35290:30;35105:222;:::o;35333:366::-;35475:3;35496:67;35560:2;35555:3;35496:67;:::i;:::-;35489:74;;35572:93;35661:3;35572:93;:::i;:::-;35690:2;35685:3;35681:12;35674:19;;35333:366;;;:::o;35705:419::-;35871:4;35909:2;35898:9;35894:18;35886:26;;35958:9;35952:4;35948:20;35944:1;35933:9;35929:17;35922:47;35986:131;36112:4;35986:131;:::i;:::-;35978:139;;35705:419;;;:::o;36130:228::-;36270:34;36266:1;36258:6;36254:14;36247:58;36339:11;36334:2;36326:6;36322:15;36315:36;36130:228;:::o;36364:366::-;36506:3;36527:67;36591:2;36586:3;36527:67;:::i;:::-;36520:74;;36603:93;36692:3;36603:93;:::i;:::-;36721:2;36716:3;36712:12;36705:19;;36364:366;;;:::o;36736:419::-;36902:4;36940:2;36929:9;36925:18;36917:26;;36989:9;36983:4;36979:20;36975:1;36964:9;36960:17;36953:47;37017:131;37143:4;37017:131;:::i;:::-;37009:139;;36736:419;;;:::o;37161:224::-;37301:34;37297:1;37289:6;37285:14;37278:58;37370:7;37365:2;37357:6;37353:15;37346:32;37161:224;:::o;37391:366::-;37533:3;37554:67;37618:2;37613:3;37554:67;:::i;:::-;37547:74;;37630:93;37719:3;37630:93;:::i;:::-;37748:2;37743:3;37739:12;37732:19;;37391:366;;;:::o;37763:419::-;37929:4;37967:2;37956:9;37952:18;37944:26;;38016:9;38010:4;38006:20;38002:1;37991:9;37987:17;37980:47;38044:131;38170:4;38044:131;:::i;:::-;38036:139;;37763:419;;;:::o;38188:222::-;38328:34;38324:1;38316:6;38312:14;38305:58;38397:5;38392:2;38384:6;38380:15;38373:30;38188:222;:::o;38416:366::-;38558:3;38579:67;38643:2;38638:3;38579:67;:::i;:::-;38572:74;;38655:93;38744:3;38655:93;:::i;:::-;38773:2;38768:3;38764:12;38757:19;;38416:366;;;:::o;38788:419::-;38954:4;38992:2;38981:9;38977:18;38969:26;;39041:9;39035:4;39031:20;39027:1;39016:9;39012:17;39005:47;39069:131;39195:4;39069:131;:::i;:::-;39061:139;;38788:419;;;:::o;39213:226::-;39353:34;39349:1;39341:6;39337:14;39330:58;39422:9;39417:2;39409:6;39405:15;39398:34;39213:226;:::o;39445:366::-;39587:3;39608:67;39672:2;39667:3;39608:67;:::i;:::-;39601:74;;39684:93;39773:3;39684:93;:::i;:::-;39802:2;39797:3;39793:12;39786:19;;39445:366;;;:::o;39817:419::-;39983:4;40021:2;40010:9;40006:18;39998:26;;40070:9;40064:4;40060:20;40056:1;40045:9;40041:17;40034:47;40098:131;40224:4;40098:131;:::i;:::-;40090:139;;39817:419;;;:::o;40242:194::-;40282:4;40302:20;40320:1;40302:20;:::i;:::-;40297:25;;40336:20;40354:1;40336:20;:::i;:::-;40331:25;;40380:1;40377;40373:9;40365:17;;40404:1;40398:4;40395:11;40392:37;;;40409:18;;:::i;:::-;40392:37;40242:194;;;;:::o;40442:191::-;40482:3;40501:20;40519:1;40501:20;:::i;:::-;40496:25;;40535:20;40553:1;40535:20;:::i;:::-;40530:25;;40578:1;40575;40571:9;40564:16;;40599:3;40596:1;40593:10;40590:36;;;40606:18;;:::i;:::-;40590:36;40442:191;;;;:::o;40639:177::-;40779:29;40775:1;40767:6;40763:14;40756:53;40639:177;:::o;40822:366::-;40964:3;40985:67;41049:2;41044:3;40985:67;:::i;:::-;40978:74;;41061:93;41150:3;41061:93;:::i;:::-;41179:2;41174:3;41170:12;41163:19;;40822:366;;;:::o;41194:419::-;41360:4;41398:2;41387:9;41383:18;41375:26;;41447:9;41441:4;41437:20;41433:1;41422:9;41418:17;41411:47;41475:131;41601:4;41475:131;:::i;:::-;41467:139;;41194:419;;;:::o;41619:831::-;41882:4;41920:3;41909:9;41905:19;41897:27;;41934:71;42002:1;41991:9;41987:17;41978:6;41934:71;:::i;:::-;42015:80;42091:2;42080:9;42076:18;42067:6;42015:80;:::i;:::-;42142:9;42136:4;42132:20;42127:2;42116:9;42112:18;42105:48;42170:108;42273:4;42264:6;42170:108;:::i;:::-;42162:116;;42288:72;42356:2;42345:9;42341:18;42332:6;42288:72;:::i;:::-;42370:73;42438:3;42427:9;42423:19;42414:6;42370:73;:::i;:::-;41619:831;;;;;;;;:::o;42456:180::-;42504:77;42501:1;42494:88;42601:4;42598:1;42591:15;42625:4;42622:1;42615:15;42642:185;42682:1;42699:20;42717:1;42699:20;:::i;:::-;42694:25;;42733:20;42751:1;42733:20;:::i;:::-;42728:25;;42772:1;42762:35;;42777:18;;:::i;:::-;42762:35;42819:1;42816;42812:9;42807:14;;42642:185;;;;:::o;42833:220::-;42973:34;42969:1;42961:6;42957:14;42950:58;43042:3;43037:2;43029:6;43025:15;43018:28;42833:220;:::o;43059:366::-;43201:3;43222:67;43286:2;43281:3;43222:67;:::i;:::-;43215:74;;43298:93;43387:3;43298:93;:::i;:::-;43416:2;43411:3;43407:12;43400:19;;43059:366;;;:::o;43431:419::-;43597:4;43635:2;43624:9;43620:18;43612:26;;43684:9;43678:4;43674:20;43670:1;43659:9;43655:17;43648:47;43712:131;43838:4;43712:131;:::i;:::-;43704:139;;43431:419;;;:::o;43856:220::-;43996:34;43992:1;43984:6;43980:14;43973:58;44065:3;44060:2;44052:6;44048:15;44041:28;43856:220;:::o;44082:366::-;44224:3;44245:67;44309:2;44304:3;44245:67;:::i;:::-;44238:74;;44321:93;44410:3;44321:93;:::i;:::-;44439:2;44434:3;44430:12;44423:19;;44082:366;;;:::o;44454:419::-;44620:4;44658:2;44647:9;44643:18;44635:26;;44707:9;44701:4;44697:20;44693:1;44682:9;44678:17;44671:47;44735:131;44861:4;44735:131;:::i;:::-;44727:139;;44454:419;;;:::o

Swarm Source

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