ETH Price: $3,289.84 (-0.70%)
Gas: 6 Gwei

Token

KAKAROTKONG ($KAKONG)
 

Overview

Max Total Supply

1,000,000,000,000 $KAKONG

Holders

16

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
9,522,644,747.37423357 $KAKONG

Value
$0.00
0x719aE4f6ed9220caDfE869Fa44dF189053DE7b8D
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:
KAKAROTKONG

Compiler Version
v0.8.3+commit.8d00100c

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, Unlicense license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2022-03-25
*/

/*
https://t.me/kakarotkong , slippage 14% or more
*/

// SPDX-License-Identifier: Unlicensed

pragma solidity ^0.8.3;

abstract contract Context {

    function _msgSender() internal view virtual returns (address payable) {
        return payable(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;
    }
}

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

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

        (bool success, bytes memory returndata) = target.call{ value: weiValue }(data);
        if (success) {
            return returndata;
        } else {
            
            if (returndata.length > 0) {
                assembly {
                    let returndata_size := mload(returndata)
                    revert(add(32, returndata), returndata_size)
                }
            } else {
                revert(errorMessage);
            }
        }
    }
}

contract Ownable is Context {
    address private _owner;
    address private _previousOwner;
    uint256 private _lockTime;

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

    function getUnlockTime() public view returns (uint256) {
        return _lockTime;
    }
    
    function getTime() public view returns (uint256) {
        return block.timestamp;
    }

    function lock(uint256 time) public virtual onlyOwner {
        _previousOwner = _owner;
        _owner = address(0);
        _lockTime = block.timestamp + time;
        emit OwnershipTransferred(_owner, address(0));
    }
    
    function unlock() public virtual {
        require(_previousOwner == msg.sender, "You don't have permission to unlock");
        require(block.timestamp > _lockTime , "Contract is locked until 7 days");
        emit OwnershipTransferred(_owner, _previousOwner);
        _owner = _previousOwner;
    }
}

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

    function feeTo() external view returns (address);
    function feeToSetter() external view returns (address);

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

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

    function setFeeTo(address) external;
    function setFeeToSetter(address) external;
}

interface IUniswapV2Pair {
    event Approval(address indexed owner, address indexed spender, uint value);
    event Transfer(address indexed from, address indexed to, uint 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 (uint);
    function balanceOf(address owner) external view returns (uint);
    function allowance(address owner, address spender) external view returns (uint);

    function approve(address spender, uint value) external returns (bool);
    function transfer(address to, uint value) external returns (bool);
    function transferFrom(address from, address to, uint 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 (uint);

    function permit(address owner, address spender, uint value, uint deadline, uint8 v, bytes32 r, bytes32 s) external;
    
    event Burn(address indexed sender, uint amount0, uint amount1, address indexed to);
    event Swap(
        address indexed sender,
        uint amount0In,
        uint amount1In,
        uint amount0Out,
        uint amount1Out,
        address indexed to
    );
    event Sync(uint112 reserve0, uint112 reserve1);

    function MINIMUM_LIQUIDITY() external pure returns (uint);
    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 (uint);
    function price1CumulativeLast() external view returns (uint);
    function kLast() external view returns (uint);

    function burn(address to) external returns (uint amount0, uint amount1);
    function swap(uint amount0Out, uint amount1Out, address to, bytes calldata data) external;
    function skim(address to) external;
    function sync() external;

    function initialize(address, address) external;
}

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

    function addLiquidity(
        address tokenA,
        address tokenB,
        uint amountADesired,
        uint amountBDesired,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline
    ) external returns (uint amountA, uint amountB, uint liquidity);
    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 removeLiquidityETH(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external returns (uint amountToken, uint amountETH);
    function removeLiquidityWithPermit(
        address tokenA,
        address tokenB,
        uint liquidity,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline,
        bool approveMax, uint8 v, bytes32 r, bytes32 s
    ) external returns (uint amountA, uint amountB);
    function removeLiquidityETHWithPermit(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline,
        bool approveMax, uint8 v, bytes32 r, bytes32 s
    ) external returns (uint amountToken, uint amountETH);
    function swapExactTokensForTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external returns (uint[] memory amounts);
    function swapTokensForExactTokens(
        uint amountOut,
        uint amountInMax,
        address[] calldata path,
        address to,
        uint deadline
    ) external returns (uint[] memory amounts);
    function swapExactETHForTokens(uint amountOutMin, address[] calldata path, address to, uint deadline)
        external
        payable
        returns (uint[] memory amounts);
    function swapTokensForExactETH(uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline)
        external
        returns (uint[] memory amounts);
    function swapExactTokensForETH(uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline)
        external
        returns (uint[] memory amounts);
    function swapETHForExactTokens(uint amountOut, address[] calldata path, address to, uint deadline)
        external
        payable
        returns (uint[] memory amounts);

    function quote(uint amountA, uint reserveA, uint reserveB) external pure returns (uint amountB);
    function getAmountOut(uint amountIn, uint reserveIn, uint reserveOut) external pure returns (uint amountOut);
    function getAmountIn(uint amountOut, uint reserveIn, uint reserveOut) external pure returns (uint amountIn);
    function getAmountsOut(uint amountIn, address[] calldata path) external view returns (uint[] memory amounts);
    function getAmountsIn(uint amountOut, address[] calldata path) external view returns (uint[] memory amounts);
}

interface IUniswapV2Router02 is IUniswapV2Router01 {
    function removeLiquidityETHSupportingFeeOnTransferTokens(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external returns (uint amountETH);
    function removeLiquidityETHWithPermitSupportingFeeOnTransferTokens(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline,
        bool approveMax, uint8 v, bytes32 r, bytes32 s
    ) external returns (uint amountETH);

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



contract KAKAROTKONG is Context, IERC20, Ownable {
    
 
    using SafeMath for uint256;
    using Address for address;
    
    uint256 private _totalSupply =  1 * 10**12 * 10**9;
    string private _name = "KAKAROTKONG";
    string private _symbol = "$KAKONG";
    uint8 private _decimals = 9;

    uint256 public burn = 0;  
    uint256 public takefee = 0;
    uint256 public startblock = 0;

    mapping (address => uint256) _balances;
    mapping (address => mapping (address => uint256)) private _allowances;
    address payable public marketingwallet = payable(0xbE42c56EFb52aa648D453c293452DB478473169A); 
    address payable public memewallet = payable(0x8EC650Ba480E427BDCd3b3101B3C366c7A929eB3); 
    address public immutable deadAddress = 0x000000000000000000000000000000000000dEaD;

    uint256 public liquiditytax = 2;
    uint256 public marketingtax = 6;
    uint256 public giveawaytax = 5;   


    mapping (address => bool) public nofeeaddress;
    mapping (address => bool) public unlimitaddress;
    mapping (address => bool) public nobot;

    uint256 public trxlimit = 3 * 10**10 * 10**9;
    uint256 public walletlimit = 4 * 10**10 * 10**9;
    uint256 private minbeforeswap = 1000 * 10**9; 
    
    IUniswapV2Router02 public uniswapV2Router;
    address public uniswapV2Pair;
    
    bool inSwapAndLiquify;
    bool public swapAndLiquifyEnabled = true;
    bool public swapAndLiquifyByLimitOnly = false;
    bool public checkWalletLimit = true;

    event SwapAndLiquifyEnabledUpdated(bool enabled);
    event SwapAndLiquify(
        uint256 tokensSwapped,
        uint256 ethReceived,
        uint256 tokensIntoLiqudity
    );
    
    event SwapETHForTokens(
        uint256 amountIn,
        address[] path
    );
    
    event SwapTokensForETH(
        uint256 amountIn,
        address[] path
    );
    
    modifier lockTheSwap {
        inSwapAndLiquify = true;
        _;
        inSwapAndLiquify = false;
    }
    
    constructor () {
        
        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D); 

        uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory())
            .createPair(address(this), _uniswapV2Router.WETH());

        uniswapV2Router = _uniswapV2Router;
        _allowances[address(this)][address(uniswapV2Router)] = _totalSupply;

        nofeeaddress[owner()] = true;
        nofeeaddress[address(this)] = true;
        
        takefee = liquiditytax.add(marketingtax).add(giveawaytax);
        startblock = takefee.add(burn);

        unlimitaddress[owner()] = true;
        unlimitaddress[address(uniswapV2Pair)] = true;

        _balances[_msgSender()] = _totalSupply;
        emit Transfer(address(0), _msgSender(), _totalSupply);
    }

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

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

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

    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 minamountbeforeswap() public view returns (uint256) {
        return minbeforeswap;
    }

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

    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 botaddress(address account, bool newValue) public onlyOwner {
        nobot[account] = newValue;
    }

    function addresswithoutfee(address account, bool newValue) public onlyOwner {
        nofeeaddress[account] = newValue;
    }

    function settax(uint256 newLiquidityTax, uint256 newMarketingTax, uint256 newRewardsTax, uint256 newdevFee) external onlyOwner() {
        liquiditytax = newLiquidityTax;
        marketingtax = newMarketingTax;
        giveawaytax = newRewardsTax;
        burn = newdevFee;

        takefee = liquiditytax.add(marketingtax).add(giveawaytax);
        startblock = takefee.add(burn);
    }

    function amountbeforeswap(uint256 newLimit) external onlyOwner() {
        minbeforeswap = newLimit;
    }

    function changemarketingwallet(address newAddress) external onlyOwner() {
        marketingwallet = payable(newAddress);
    }

    function newmemewallet(address newAddress) external onlyOwner() {
        memewallet = payable(newAddress);
    }


    function getCirculatingSupply() public view returns (uint256) {
        return _totalSupply.sub(balanceOf(deadAddress));
    }

    function transferToAddressETH(address payable recipient, uint256 amount) private {
        recipient.transfer(amount);
    }
    
    function changeRouterVersion(address newRouterAddress) public onlyOwner returns(address newPairAddress) {

        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(newRouterAddress); 

        newPairAddress = IUniswapV2Factory(_uniswapV2Router.factory()).getPair(address(this), _uniswapV2Router.WETH());

        if(newPairAddress == address(0)) //Create If Doesnt exist
        {
            newPairAddress = IUniswapV2Factory(_uniswapV2Router.factory())
                .createPair(address(this), _uniswapV2Router.WETH());
        }

        uniswapV2Pair = newPairAddress; //Set new pair address
        uniswapV2Router = _uniswapV2Router; //Set new router address
    }

     //to recieve ETH from uniswapV2Router when swaping
    receive() external payable {}

    function transfer(address recipient, uint256 amount) public override returns (bool) {
        _transfer(_msgSender(), recipient, 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 _transfer(address sender, address recipient, uint256 amount) private returns (bool) {

        require(sender != address(0), "ERC20: transfer from the zero address");
        require(recipient != address(0), "ERC20: transfer to the zero address");
        require(!nobot[sender] && !nobot[recipient], "To/from address is blacklisted!");
        require(amount > 0, "Transfer amount must be greater than zero");
        
        if(inSwapAndLiquify)
        { 
            return _basicTransfer(sender, recipient, amount); 
        }
        else
        {
            if(sender != owner() && recipient != owner()) {
                require(amount <= trxlimit, "Transfer amount exceeds the maxTxAmount.");
            }
            
            uint256 contractTokenBalance = balanceOf(address(this));
            bool overMinimumTokenBalance = contractTokenBalance >= minbeforeswap;
            
            if (overMinimumTokenBalance && !inSwapAndLiquify && sender != uniswapV2Pair && swapAndLiquifyEnabled) 
            {
                if(swapAndLiquifyByLimitOnly)
                    contractTokenBalance = minbeforeswap;
                swapAndLiquify(contractTokenBalance);    
            }

            _balances[sender] = _balances[sender].sub(amount, "Insufficient Balance");

            uint256 finalAmount = (nofeeaddress[sender] || nofeeaddress[recipient]) ? 
                                         amount : getfee(sender, recipient, amount);

            if(checkWalletLimit && !unlimitaddress[recipient])
                require(balanceOf(recipient).add(finalAmount) <= walletlimit);

            _balances[recipient] = _balances[recipient].add(finalAmount);

            emit Transfer(sender, recipient, finalAmount);
            return true;
        }
    }

    function _basicTransfer(address sender, address recipient, uint256 amount) internal returns (bool) {
        _balances[sender] = _balances[sender].sub(amount, "Insufficient Balance");
        _balances[recipient] = _balances[recipient].add(amount);
        emit Transfer(sender, recipient, amount);
        return true;
    }

    function swapAndLiquify(uint256 tAmount) private lockTheSwap {
       
        uint256 tokensForLP = tAmount.div(takefee).mul(liquiditytax).div(2);
        uint256 tokensForSwap = tAmount.sub(tokensForLP);

        swapTokensForEth(tokensForSwap);
        uint256 amountReceived = address(this).balance;

        uint256 totalETHFee = takefee.sub(liquiditytax.div(2));
        
        uint256 amountLiquidity = amountReceived.mul(liquiditytax).div(totalETHFee).div(2);
        uint256 amountGiveaway = amountReceived.mul(giveawaytax).div(totalETHFee);
        uint256 amountMarketing = amountReceived.sub(amountLiquidity).sub(amountGiveaway);

        transferToAddressETH(marketingwallet, amountMarketing);
        transferToAddressETH(memewallet, amountGiveaway);
        addLiquidity(tokensForLP, amountLiquidity);
    }
    
    function swapTokensForEth(uint256 tokenAmount) private {
        // generate the uniswap pair path of token -> weth
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = uniswapV2Router.WETH();

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

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

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

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

    function getfee(address sender, address recipient, uint256 amount) internal returns (uint256) {
        
        uint256 feeAmount = recipient == uniswapV2Pair ? amount.mul(startblock).div(100) 
                                : amount.mul(takefee).div(100);

        _balances[address(this)] = _balances[address(this)].add(feeAmount);
        emit Transfer(sender, address(this), feeAmount);

        return amount.sub(feeAmount);
    }
    

    function limitTrx(uint256 maxTxAmount) external onlyOwner() {
        trxlimit = maxTxAmount;
    }


    function enabledisablewalletlimit(bool newValue) external onlyOwner {
       checkWalletLimit = newValue;
    }


    function unlimitwallet(address holder, bool exempt) external onlyOwner {
        unlimitaddress[holder] = exempt;
    }


    function setwalletlimit(uint256 newLimit) external onlyOwner {
        walletlimit  = newLimit;
    }

    function opentrade(bool _enabled) public onlyOwner {
        swapAndLiquifyEnabled = _enabled;
        emit SwapAndLiquifyEnabledUpdated(_enabled);
    }

    function setSwapAndLiquifyByLimitOnly(bool newValue) public onlyOwner {
        swapAndLiquifyByLimitOnly = newValue;
    }
    
}

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":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethReceived","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokensIntoLiqudity","type":"uint256"}],"name":"SwapAndLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"enabled","type":"bool"}],"name":"SwapAndLiquifyEnabledUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amountIn","type":"uint256"},{"indexed":false,"internalType":"address[]","name":"path","type":"address[]"}],"name":"SwapETHForTokens","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amountIn","type":"uint256"},{"indexed":false,"internalType":"address[]","name":"path","type":"address[]"}],"name":"SwapTokensForETH","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":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"newValue","type":"bool"}],"name":"addresswithoutfee","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":"uint256","name":"newLimit","type":"uint256"}],"name":"amountbeforeswap","outputs":[],"stateMutability":"nonpayable","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":"account","type":"address"},{"internalType":"bool","name":"newValue","type":"bool"}],"name":"botaddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"burn","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newRouterAddress","type":"address"}],"name":"changeRouterVersion","outputs":[{"internalType":"address","name":"newPairAddress","type":"address"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newAddress","type":"address"}],"name":"changemarketingwallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"checkWalletLimit","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"deadAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"newValue","type":"bool"}],"name":"enabledisablewalletlimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getCirculatingSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getUnlockTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"giveawaytax","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":"uint256","name":"maxTxAmount","type":"uint256"}],"name":"limitTrx","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"liquiditytax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"time","type":"uint256"}],"name":"lock","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"marketingtax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingwallet","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"memewallet","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"minamountbeforeswap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newAddress","type":"address"}],"name":"newmemewallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"nobot","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"nofeeaddress","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"}],"name":"opentrade","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":[{"internalType":"bool","name":"newValue","type":"bool"}],"name":"setSwapAndLiquifyByLimitOnly","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newLiquidityTax","type":"uint256"},{"internalType":"uint256","name":"newMarketingTax","type":"uint256"},{"internalType":"uint256","name":"newRewardsTax","type":"uint256"},{"internalType":"uint256","name":"newdevFee","type":"uint256"}],"name":"settax","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newLimit","type":"uint256"}],"name":"setwalletlimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"startblock","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapAndLiquifyByLimitOnly","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapAndLiquifyEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"takefee","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":[],"name":"trxlimit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"unlimitaddress","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"unlimitwallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"unlock","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"walletlimit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

60a0604052683635c9adc5dea000006003556040518060400160405280600b81526020017f4b414b41524f544b4f4e47000000000000000000000000000000000000000000815250600490805190602001906200005e9291906200093b565b506040518060400160405280600781526020017f244b414b4f4e470000000000000000000000000000000000000000000000000081525060059080519060200190620000ac9291906200093b565b506009600660006101000a81548160ff021916908360ff16021790555060006007556000600855600060095573be42c56efb52aa648d453c293452db478473169a600c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550738ec650ba480e427bdcd3b3101b3c366c7a929eb3600d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061dead73ffffffffffffffffffffffffffffffffffffffff1660809073ffffffffffffffffffffffffffffffffffffffff1660601b8152506002600e556006600f5560056010556801a055690d9db8000060145568022b1c8c1227a0000060155564e8d4a510006016556001601860156101000a81548160ff0219169083151502179055506000601860166101000a81548160ff0219169083151502179055506001601860176101000a81548160ff0219169083151502179055503480156200024a57600080fd5b5060006200025d620008a760201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3506000737a250d5630b4cf539739df2c5dacb4c659f2488d90508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b1580156200035b57600080fd5b505afa15801562000370573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000396919062000a02565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015620003f957600080fd5b505afa1580156200040e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000434919062000a02565b6040518363ffffffff1660e01b81526004016200045392919062000a77565b602060405180830381600087803b1580156200046e57600080fd5b505af115801562000483573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620004a9919062000a02565b601860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080601760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600354600b60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600160116000620005e5620008af60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550620006c7601054620006b3600f54600e54620008d860201b620027d21790919060201c565b620008d860201b620027d21790919060201c565b600881905550620006eb600754600854620008d860201b620027d21790919060201c565b60098190555060016012600062000707620008af60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160126000601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600354600a6000620007e9620008a760201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555062000837620008a760201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60035460405162000898919062000ac6565b60405180910390a35062000c66565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000808284620008e9919062000af4565b90508381101562000931576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620009289062000aa4565b60405180910390fd5b8091505092915050565b828054620009499062000b8f565b90600052602060002090601f0160209004810192826200096d5760008555620009b9565b82601f106200098857805160ff1916838001178555620009b9565b82800160010185558215620009b9579182015b82811115620009b85782518255916020019190600101906200099b565b5b509050620009c89190620009cc565b5090565b5b80821115620009e7576000816000905550600101620009cd565b5090565b600081519050620009fc8162000c4c565b92915050565b60006020828403121562000a1557600080fd5b600062000a2584828501620009eb565b91505092915050565b62000a398162000b51565b82525050565b600062000a4e601b8362000ae3565b915062000a5b8262000c23565b602082019050919050565b62000a718162000b85565b82525050565b600060408201905062000a8e600083018562000a2e565b62000a9d602083018462000a2e565b9392505050565b6000602082019050818103600083015262000abf8162000a3f565b9050919050565b600060208201905062000add600083018462000a66565b92915050565b600082825260208201905092915050565b600062000b018262000b85565b915062000b0e8362000b85565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111562000b465762000b4562000bc5565b5b828201905092915050565b600062000b5e8262000b65565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b6000600282049050600182168062000ba857607f821691505b6020821081141562000bbf5762000bbe62000bf4565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b62000c578162000b51565b811462000c6357600080fd5b50565b60805160601c614cbc62000c8c60003960008181610f0e0152610f3a0152614cbc6000f3fe6080604052600436106103035760003560e01c80637dfa034911610190578063c758a6c3116100dc578063df44d1af11610095578063e8b7bf921161006f578063e8b7bf9214610ba5578063f2fde38b14610bd0578063f7bf4ff314610bf9578063f872858a14610c225761030a565b8063df44d1af14610b26578063e47b3c1514610b51578063e5d1fa1314610b7a5761030a565b8063c758a6c314610a04578063c7b4ae4514610a2f578063d5a1f70614610a6c578063da00097d14610a95578063dd46706414610ac0578063dd62ed3e14610ae95761030a565b8063a5d69d1f11610149578063af23ec3d11610123578063af23ec3d1461095e578063b2d31df914610987578063b71be7ab146109b2578063c3e3a04e146109db5761030a565b8063a5d69d1f146108e1578063a69df4b51461090a578063a9059cbb146109215761030a565b80637dfa0349146107d15780638da5cb5b146107fa5780638e3b4c4e146108255780639448017e1461085057806395d89b4114610879578063a457c2d7146108a45761030a565b8063395093511161024f578063557ed1ba1161020857806370a08231116101e257806370a0823114610717578063715018a61461075457806378e1e64b1461076b57806379636572146107945761030a565b8063557ed1ba146106845780635881f3ef146106af578063602bc62b146106ec5761030a565b80633950935114610572578063431cb280146105af57806344df8e70146105d8578063499374c91461060357806349bd5a5e1461062e5780634a74bb02146106595761030a565b80631c1d9747116102bc57806327c8f8351161029657806327c8f835146104c65780632b112e49146104f1578063313ce5671461051c578063340fe40d146105475761030a565b80631c1d97471461043557806323b872dd1461045e57806324b32aeb1461049b5761030a565b806306fdde031461030f578063095ea7b31461033a5780630f7875c61461037757806314a1e0cf146103a25780631694505e146103df57806318160ddd1461040a5761030a565b3661030a57005b600080fd5b34801561031b57600080fd5b50610324610c4d565b60405161033191906142fd565b60405180910390f35b34801561034657600080fd5b50610361600480360381019061035c9190613dd9565b610cdf565b60405161036e91906142c7565b60405180910390f35b34801561038357600080fd5b5061038c610cfd565b60405161039991906144bf565b60405180910390f35b3480156103ae57600080fd5b506103c960048036038101906103c49190613cc0565b610d03565b6040516103d691906142c7565b60405180910390f35b3480156103eb57600080fd5b506103f4610d23565b60405161040191906142e2565b60405180910390f35b34801561041657600080fd5b5061041f610d49565b60405161042c91906144bf565b60405180910390f35b34801561044157600080fd5b5061045c60048036038101906104579190613cc0565b610d53565b005b34801561046a57600080fd5b5061048560048036038101906104809190613d4e565b610e2c565b60405161049291906142c7565b60405180910390f35b3480156104a757600080fd5b506104b0610f06565b6040516104bd91906144bf565b60405180910390f35b3480156104d257600080fd5b506104db610f0c565b6040516104e89190614207565b60405180910390f35b3480156104fd57600080fd5b50610506610f30565b60405161051391906144bf565b60405180910390f35b34801561052857600080fd5b50610531610f74565b60405161053e9190614564565b60405180910390f35b34801561055357600080fd5b5061055c610f8b565b6040516105699190614222565b60405180910390f35b34801561057e57600080fd5b5061059960048036038101906105949190613dd9565b610fb1565b6040516105a691906142c7565b60405180910390f35b3480156105bb57600080fd5b506105d660048036038101906105d19190613e3e565b611064565b005b3480156105e457600080fd5b506105ed611103565b6040516105fa91906144bf565b60405180910390f35b34801561060f57600080fd5b50610618611109565b60405161062591906144bf565b60405180910390f35b34801561063a57600080fd5b50610643611113565b6040516106509190614207565b60405180910390f35b34801561066557600080fd5b5061066e611139565b60405161067b91906142c7565b60405180910390f35b34801561069057600080fd5b5061069961114c565b6040516106a691906144bf565b60405180910390f35b3480156106bb57600080fd5b506106d660048036038101906106d19190613cc0565b611154565b6040516106e39190614207565b60405180910390f35b3480156106f857600080fd5b506107016115be565b60405161070e91906144bf565b60405180910390f35b34801561072357600080fd5b5061073e60048036038101906107399190613cc0565b6115c8565b60405161074b91906144bf565b60405180910390f35b34801561076057600080fd5b50610769611611565b005b34801561077757600080fd5b50610792600480360381019061078d9190613e15565b611764565b005b3480156107a057600080fd5b506107bb60048036038101906107b69190613cc0565b611816565b6040516107c891906142c7565b60405180910390f35b3480156107dd57600080fd5b506107f860048036038101906107f39190613eb6565b611836565b005b34801561080657600080fd5b5061080f61193b565b60405161081c9190614207565b60405180910390f35b34801561083157600080fd5b5061083a611964565b60405161084791906144bf565b60405180910390f35b34801561085c57600080fd5b5061087760048036038101906108729190613d9d565b61196a565b005b34801561088557600080fd5b5061088e611a5a565b60405161089b91906142fd565b60405180910390f35b3480156108b057600080fd5b506108cb60048036038101906108c69190613dd9565b611aec565b6040516108d891906142c7565b60405180910390f35b3480156108ed57600080fd5b5061090860048036038101906109039190613e15565b611bb9565b005b34801561091657600080fd5b5061091f611c6b565b005b34801561092d57600080fd5b5061094860048036038101906109439190613dd9565b611e3f565b60405161095591906142c7565b60405180910390f35b34801561096a57600080fd5b5061098560048036038101906109809190613cc0565b611e5e565b005b34801561099357600080fd5b5061099c611f37565b6040516109a991906144bf565b60405180910390f35b3480156109be57600080fd5b506109d960048036038101906109d49190613d9d565b611f3d565b005b3480156109e757600080fd5b50610a0260048036038101906109fd9190613e3e565b61202d565b005b348015610a1057600080fd5b50610a196120cc565b604051610a2691906144bf565b60405180910390f35b348015610a3b57600080fd5b50610a566004803603810190610a519190613cc0565b6120d2565b604051610a6391906142c7565b60405180910390f35b348015610a7857600080fd5b50610a936004803603810190610a8e9190613e3e565b6120f2565b005b348015610aa157600080fd5b50610aaa612191565b604051610ab791906142c7565b60405180910390f35b348015610acc57600080fd5b50610ae76004803603810190610ae29190613e3e565b6121a4565b005b348015610af557600080fd5b50610b106004803603810190610b0b9190613d12565b61236b565b604051610b1d91906144bf565b60405180910390f35b348015610b3257600080fd5b50610b3b6123f2565b604051610b4891906144bf565b60405180910390f35b348015610b5d57600080fd5b50610b786004803603810190610b739190613e15565b6123f8565b005b348015610b8657600080fd5b50610b8f6124e1565b604051610b9c91906144bf565b60405180910390f35b348015610bb157600080fd5b50610bba6124e7565b604051610bc79190614222565b60405180910390f35b348015610bdc57600080fd5b50610bf76004803603810190610bf29190613cc0565b61250d565b005b348015610c0557600080fd5b50610c206004803603810190610c1b9190613d9d565b6126cf565b005b348015610c2e57600080fd5b50610c376127bf565b604051610c4491906142c7565b60405180910390f35b606060048054610c5c906147b9565b80601f0160208091040260200160405190810160405280929190818152602001828054610c88906147b9565b8015610cd55780601f10610caa57610100808354040283529160200191610cd5565b820191906000526020600020905b815481529060010190602001808311610cb857829003601f168201915b5050505050905090565b6000610cf3610cec612830565b8484612838565b6001905092915050565b60095481565b60136020528060005260406000206000915054906101000a900460ff1681565b601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600354905090565b610d5b612830565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610de8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ddf906143ff565b60405180910390fd5b80600c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000610e39848484612a03565b50610efb84610e46612830565b610ef685604051806060016040528060288152602001614c3a60289139600b60008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610eac612830565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546130e49092919063ffffffff16565b612838565b600190509392505050565b600f5481565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000610f6f610f5e7f00000000000000000000000000000000000000000000000000000000000000006115c8565b60035461314890919063ffffffff16565b905090565b6000600660009054906101000a900460ff16905090565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600061105a610fbe612830565b8461105585600b6000610fcf612830565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546127d290919063ffffffff16565b612838565b6001905092915050565b61106c612830565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146110f9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110f0906143ff565b60405180910390fd5b8060168190555050565b60075481565b6000601654905090565b601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b601860159054906101000a900460ff1681565b600042905090565b600061115e612830565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146111eb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111e2906143ff565b60405180910390fd5b60008290508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b15801561123657600080fd5b505afa15801561124a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061126e9190613ce9565b73ffffffffffffffffffffffffffffffffffffffff1663e6a43905308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156112d057600080fd5b505afa1580156112e4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113089190613ce9565b6040518363ffffffff1660e01b815260040161132592919061423d565b60206040518083038186803b15801561133d57600080fd5b505afa158015611351573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113759190613ce9565b9150600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611536578073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b1580156113f257600080fd5b505afa158015611406573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061142a9190613ce9565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561148c57600080fd5b505afa1580156114a0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114c49190613ce9565b6040518363ffffffff1660e01b81526004016114e192919061423d565b602060405180830381600087803b1580156114fb57600080fd5b505af115801561150f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115339190613ce9565b91505b81601860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080601760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050919050565b6000600254905090565b6000600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b611619612830565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146116a6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161169d906143ff565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b61176c612830565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146117f9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117f0906143ff565b60405180910390fd5b80601860176101000a81548160ff02191690831515021790555050565b60126020528060005260406000206000915054906101000a900460ff1681565b61183e612830565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146118cb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118c2906143ff565b60405180910390fd5b83600e8190555082600f819055508160108190555080600781905550611912601054611904600f54600e546127d290919063ffffffff16565b6127d290919063ffffffff16565b60088190555061192f6007546008546127d290919063ffffffff16565b60098190555050505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60155481565b611972612830565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146119ff576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119f6906143ff565b60405180910390fd5b80601360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b606060058054611a69906147b9565b80601f0160208091040260200160405190810160405280929190818152602001828054611a95906147b9565b8015611ae25780601f10611ab757610100808354040283529160200191611ae2565b820191906000526020600020905b815481529060010190602001808311611ac557829003601f168201915b5050505050905090565b6000611baf611af9612830565b84611baa85604051806060016040528060258152602001614c6260259139600b6000611b23612830565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546130e49092919063ffffffff16565b612838565b6001905092915050565b611bc1612830565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611c4e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c45906143ff565b60405180910390fd5b80601860166101000a81548160ff02191690831515021790555050565b3373ffffffffffffffffffffffffffffffffffffffff16600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611cfb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cf29061449f565b60405180910390fd5b6002544211611d3f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d369061447f565b60405180910390fd5b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b6000611e53611e4c612830565b8484612a03565b506001905092915050565b611e66612830565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611ef3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611eea906143ff565b60405180910390fd5b80600d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60145481565b611f45612830565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611fd2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fc9906143ff565b60405180910390fd5b80601260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b612035612830565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146120c2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120b9906143ff565b60405180910390fd5b8060158190555050565b60085481565b60116020528060005260406000206000915054906101000a900460ff1681565b6120fa612830565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612187576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161217e906143ff565b60405180910390fd5b8060148190555050565b601860169054906101000a900460ff1681565b6121ac612830565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612239576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612230906143ff565b60405180910390fd5b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080426122e791906145d4565b600281905550600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a350565b6000600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600e5481565b612400612830565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461248d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612484906143ff565b60405180910390fd5b80601860156101000a81548160ff0219169083151502179055507f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc159816040516124d691906142c7565b60405180910390a150565b60105481565b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b612515612830565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146125a2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612599906143ff565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415612612576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126099061433f565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6126d7612830565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612764576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161275b906143ff565b60405180910390fd5b80601160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b601860179054906101000a900460ff1681565b60008082846127e191906145d4565b905083811015612826576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161281d9061437f565b60405180910390fd5b8091505092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156128a8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161289f9061445f565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612918576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161290f9061435f565b60405180910390fd5b80600b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516129f691906144bf565b60405180910390a3505050565b60008073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415612a74576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a6b9061443f565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612ae4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612adb9061431f565b60405180910390fd5b601360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015612b885750601360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b612bc7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612bbe9061439f565b60405180910390fd5b60008211612c0a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c019061441f565b60405180910390fd5b601860149054906101000a900460ff1615612c3157612c2a848484613192565b90506130dd565b612c3961193b565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614158015612ca75750612c7761193b565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15612cf257601454821115612cf1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ce8906143bf565b60405180910390fd5b5b6000612cfd306115c8565b905060006016548210159050808015612d235750601860149054906101000a900460ff16155b8015612d7d5750601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff1614155b8015612d955750601860159054906101000a900460ff165b15612dbf57601860169054906101000a900460ff1615612db55760165491505b612dbe82613365565b5b612e48846040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600a60008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546130e49092919063ffffffff16565b600a60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000601160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680612f2e5750601160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b612f4257612f3d87878761352c565b612f44565b845b9050601860179054906101000a900460ff168015612fac5750601260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612fdb57601554612fcf82612fc1896115c8565b6127d290919063ffffffff16565b1115612fda57600080fd5b5b61302d81600a60008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546127d290919063ffffffff16565b600a60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516130cd91906144bf565b60405180910390a3600193505050505b9392505050565b600083831115829061312c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161312391906142fd565b60405180910390fd5b506000838561313b91906146b5565b9050809150509392505050565b600061318a83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506130e4565b905092915050565b600061321d826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600a60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546130e49092919063ffffffff16565b600a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506132b282600a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546127d290919063ffffffff16565b600a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161335291906144bf565b60405180910390a3600190509392505050565b6001601860146101000a81548160ff02191690831515021790555060006133be60026133b0600e546133a2600854876136f390919063ffffffff16565b61373d90919063ffffffff16565b6136f390919063ffffffff16565b905060006133d5828461314890919063ffffffff16565b90506133e0816137b8565b600047905060006134116134006002600e546136f390919063ffffffff16565b60085461314890919063ffffffff16565b9050600061344f600261344184613433600e548861373d90919063ffffffff16565b6136f390919063ffffffff16565b6136f390919063ffffffff16565b9050600061347a8361346c6010548761373d90919063ffffffff16565b6136f390919063ffffffff16565b905060006134a382613495858861314890919063ffffffff16565b61314890919063ffffffff16565b90506134d1600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1682613ab5565b6134fd600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1683613ab5565b6135078784613b00565b505050505050506000601860146101000a81548160ff02191690831515021790555050565b600080601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16146135b1576135ac606461359e6008548661373d90919063ffffffff16565b6136f390919063ffffffff16565b6135da565b6135d960646135cb6009548661373d90919063ffffffff16565b6136f390919063ffffffff16565b5b905061362e81600a60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546127d290919063ffffffff16565b600a60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516136ce91906144bf565b60405180910390a36136e9818461314890919063ffffffff16565b9150509392505050565b600061373583836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250613bf4565b905092915050565b60008083141561375057600090506137b2565b6000828461375e919061465b565b905082848261376d919061462a565b146137ad576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016137a4906143df565b60405180910390fd5b809150505b92915050565b6000600267ffffffffffffffff8111156137fb577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040519080825280602002602001820160405280156138295781602001602082028036833780820191505090505b5090503081600081518110613867577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561390957600080fd5b505afa15801561391d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906139419190613ce9565b8160018151811061397b577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506139e230601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684612838565b601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401613a4695949392919061450a565b600060405180830381600087803b158015613a6057600080fd5b505af1158015613a74573d6000803e3d6000fd5b505050507f32cde87eb454f3a0b875ab23547023107cfad454363ec88ba5695e2c24aa52a78282604051613aa99291906144da565b60405180910390a15050565b8173ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015613afb573d6000803e3d6000fd5b505050565b613b2d30601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684612838565b601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719823085600080613b7961193b565b426040518863ffffffff1660e01b8152600401613b9b96959493929190614266565b6060604051808303818588803b158015613bb457600080fd5b505af1158015613bc8573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190613bed9190613e67565b5050505050565b60008083118290613c3b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613c3291906142fd565b60405180910390fd5b5060008385613c4a919061462a565b9050809150509392505050565b600081359050613c6681614bf4565b92915050565b600081519050613c7b81614bf4565b92915050565b600081359050613c9081614c0b565b92915050565b600081359050613ca581614c22565b92915050565b600081519050613cba81614c22565b92915050565b600060208284031215613cd257600080fd5b6000613ce084828501613c57565b91505092915050565b600060208284031215613cfb57600080fd5b6000613d0984828501613c6c565b91505092915050565b60008060408385031215613d2557600080fd5b6000613d3385828601613c57565b9250506020613d4485828601613c57565b9150509250929050565b600080600060608486031215613d6357600080fd5b6000613d7186828701613c57565b9350506020613d8286828701613c57565b9250506040613d9386828701613c96565b9150509250925092565b60008060408385031215613db057600080fd5b6000613dbe85828601613c57565b9250506020613dcf85828601613c81565b9150509250929050565b60008060408385031215613dec57600080fd5b6000613dfa85828601613c57565b9250506020613e0b85828601613c96565b9150509250929050565b600060208284031215613e2757600080fd5b6000613e3584828501613c81565b91505092915050565b600060208284031215613e5057600080fd5b6000613e5e84828501613c96565b91505092915050565b600080600060608486031215613e7c57600080fd5b6000613e8a86828701613cab565b9350506020613e9b86828701613cab565b9250506040613eac86828701613cab565b9150509250925092565b60008060008060808587031215613ecc57600080fd5b6000613eda87828801613c96565b9450506020613eeb87828801613c96565b9350506040613efc87828801613c96565b9250506060613f0d87828801613c96565b91505092959194509250565b6000613f258383613f40565b60208301905092915050565b613f3a816146fb565b82525050565b613f49816146e9565b82525050565b613f58816146e9565b82525050565b6000613f698261458f565b613f7381856145b2565b9350613f7e8361457f565b8060005b83811015613faf578151613f968882613f19565b9750613fa1836145a5565b925050600181019050613f82565b5085935050505092915050565b613fc58161470d565b82525050565b613fd481614750565b82525050565b613fe381614774565b82525050565b6000613ff48261459a565b613ffe81856145c3565b935061400e818560208601614786565b61401781614878565b840191505092915050565b600061402f6023836145c3565b915061403a82614889565b604082019050919050565b60006140526026836145c3565b915061405d826148d8565b604082019050919050565b60006140756022836145c3565b915061408082614927565b604082019050919050565b6000614098601b836145c3565b91506140a382614976565b602082019050919050565b60006140bb601f836145c3565b91506140c68261499f565b602082019050919050565b60006140de6028836145c3565b91506140e9826149c8565b604082019050919050565b60006141016021836145c3565b915061410c82614a17565b604082019050919050565b60006141246020836145c3565b915061412f82614a66565b602082019050919050565b60006141476029836145c3565b915061415282614a8f565b604082019050919050565b600061416a6025836145c3565b915061417582614ade565b604082019050919050565b600061418d6024836145c3565b915061419882614b2d565b604082019050919050565b60006141b0601f836145c3565b91506141bb82614b7c565b602082019050919050565b60006141d36023836145c3565b91506141de82614ba5565b604082019050919050565b6141f281614739565b82525050565b61420181614743565b82525050565b600060208201905061421c6000830184613f4f565b92915050565b60006020820190506142376000830184613f31565b92915050565b60006040820190506142526000830185613f4f565b61425f6020830184613f4f565b9392505050565b600060c08201905061427b6000830189613f4f565b61428860208301886141e9565b6142956040830187613fda565b6142a26060830186613fda565b6142af6080830185613f4f565b6142bc60a08301846141e9565b979650505050505050565b60006020820190506142dc6000830184613fbc565b92915050565b60006020820190506142f76000830184613fcb565b92915050565b600060208201905081810360008301526143178184613fe9565b905092915050565b6000602082019050818103600083015261433881614022565b9050919050565b6000602082019050818103600083015261435881614045565b9050919050565b6000602082019050818103600083015261437881614068565b9050919050565b600060208201905081810360008301526143988161408b565b9050919050565b600060208201905081810360008301526143b8816140ae565b9050919050565b600060208201905081810360008301526143d8816140d1565b9050919050565b600060208201905081810360008301526143f8816140f4565b9050919050565b6000602082019050818103600083015261441881614117565b9050919050565b600060208201905081810360008301526144388161413a565b9050919050565b600060208201905081810360008301526144588161415d565b9050919050565b6000602082019050818103600083015261447881614180565b9050919050565b60006020820190508181036000830152614498816141a3565b9050919050565b600060208201905081810360008301526144b8816141c6565b9050919050565b60006020820190506144d460008301846141e9565b92915050565b60006040820190506144ef60008301856141e9565b81810360208301526145018184613f5e565b90509392505050565b600060a08201905061451f60008301886141e9565b61452c6020830187613fda565b818103604083015261453e8186613f5e565b905061454d6060830185613f4f565b61455a60808301846141e9565b9695505050505050565b600060208201905061457960008301846141f8565b92915050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b60006145df82614739565b91506145ea83614739565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561461f5761461e6147eb565b5b828201905092915050565b600061463582614739565b915061464083614739565b9250826146505761464f61481a565b5b828204905092915050565b600061466682614739565b915061467183614739565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156146aa576146a96147eb565b5b828202905092915050565b60006146c082614739565b91506146cb83614739565b9250828210156146de576146dd6147eb565b5b828203905092915050565b60006146f482614719565b9050919050565b600061470682614719565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b600061475b82614762565b9050919050565b600061476d82614719565b9050919050565b600061477f82614739565b9050919050565b60005b838110156147a4578082015181840152602081019050614789565b838111156147b3576000848401525b50505050565b600060028204905060018216806147d157607f821691505b602082108114156147e5576147e4614849565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000601f19601f8301169050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b7f546f2f66726f6d206164647265737320697320626c61636b6c69737465642100600082015250565b7f5472616e7366657220616d6f756e74206578636565647320746865206d61785460008201527f78416d6f756e742e000000000000000000000000000000000000000000000000602082015250565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f436f6e7472616374206973206c6f636b656420756e74696c2037206461797300600082015250565b7f596f7520646f6e27742068617665207065726d697373696f6e20746f20756e6c60008201527f6f636b0000000000000000000000000000000000000000000000000000000000602082015250565b614bfd816146e9565b8114614c0857600080fd5b50565b614c148161470d565b8114614c1f57600080fd5b50565b614c2b81614739565b8114614c3657600080fd5b5056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa264697066735822122030e4b17bd89d6aac7c2c775888c5cec247a4f665924c6ec0073b7b75dc57634f64736f6c63430008030033

Deployed Bytecode

0x6080604052600436106103035760003560e01c80637dfa034911610190578063c758a6c3116100dc578063df44d1af11610095578063e8b7bf921161006f578063e8b7bf9214610ba5578063f2fde38b14610bd0578063f7bf4ff314610bf9578063f872858a14610c225761030a565b8063df44d1af14610b26578063e47b3c1514610b51578063e5d1fa1314610b7a5761030a565b8063c758a6c314610a04578063c7b4ae4514610a2f578063d5a1f70614610a6c578063da00097d14610a95578063dd46706414610ac0578063dd62ed3e14610ae95761030a565b8063a5d69d1f11610149578063af23ec3d11610123578063af23ec3d1461095e578063b2d31df914610987578063b71be7ab146109b2578063c3e3a04e146109db5761030a565b8063a5d69d1f146108e1578063a69df4b51461090a578063a9059cbb146109215761030a565b80637dfa0349146107d15780638da5cb5b146107fa5780638e3b4c4e146108255780639448017e1461085057806395d89b4114610879578063a457c2d7146108a45761030a565b8063395093511161024f578063557ed1ba1161020857806370a08231116101e257806370a0823114610717578063715018a61461075457806378e1e64b1461076b57806379636572146107945761030a565b8063557ed1ba146106845780635881f3ef146106af578063602bc62b146106ec5761030a565b80633950935114610572578063431cb280146105af57806344df8e70146105d8578063499374c91461060357806349bd5a5e1461062e5780634a74bb02146106595761030a565b80631c1d9747116102bc57806327c8f8351161029657806327c8f835146104c65780632b112e49146104f1578063313ce5671461051c578063340fe40d146105475761030a565b80631c1d97471461043557806323b872dd1461045e57806324b32aeb1461049b5761030a565b806306fdde031461030f578063095ea7b31461033a5780630f7875c61461037757806314a1e0cf146103a25780631694505e146103df57806318160ddd1461040a5761030a565b3661030a57005b600080fd5b34801561031b57600080fd5b50610324610c4d565b60405161033191906142fd565b60405180910390f35b34801561034657600080fd5b50610361600480360381019061035c9190613dd9565b610cdf565b60405161036e91906142c7565b60405180910390f35b34801561038357600080fd5b5061038c610cfd565b60405161039991906144bf565b60405180910390f35b3480156103ae57600080fd5b506103c960048036038101906103c49190613cc0565b610d03565b6040516103d691906142c7565b60405180910390f35b3480156103eb57600080fd5b506103f4610d23565b60405161040191906142e2565b60405180910390f35b34801561041657600080fd5b5061041f610d49565b60405161042c91906144bf565b60405180910390f35b34801561044157600080fd5b5061045c60048036038101906104579190613cc0565b610d53565b005b34801561046a57600080fd5b5061048560048036038101906104809190613d4e565b610e2c565b60405161049291906142c7565b60405180910390f35b3480156104a757600080fd5b506104b0610f06565b6040516104bd91906144bf565b60405180910390f35b3480156104d257600080fd5b506104db610f0c565b6040516104e89190614207565b60405180910390f35b3480156104fd57600080fd5b50610506610f30565b60405161051391906144bf565b60405180910390f35b34801561052857600080fd5b50610531610f74565b60405161053e9190614564565b60405180910390f35b34801561055357600080fd5b5061055c610f8b565b6040516105699190614222565b60405180910390f35b34801561057e57600080fd5b5061059960048036038101906105949190613dd9565b610fb1565b6040516105a691906142c7565b60405180910390f35b3480156105bb57600080fd5b506105d660048036038101906105d19190613e3e565b611064565b005b3480156105e457600080fd5b506105ed611103565b6040516105fa91906144bf565b60405180910390f35b34801561060f57600080fd5b50610618611109565b60405161062591906144bf565b60405180910390f35b34801561063a57600080fd5b50610643611113565b6040516106509190614207565b60405180910390f35b34801561066557600080fd5b5061066e611139565b60405161067b91906142c7565b60405180910390f35b34801561069057600080fd5b5061069961114c565b6040516106a691906144bf565b60405180910390f35b3480156106bb57600080fd5b506106d660048036038101906106d19190613cc0565b611154565b6040516106e39190614207565b60405180910390f35b3480156106f857600080fd5b506107016115be565b60405161070e91906144bf565b60405180910390f35b34801561072357600080fd5b5061073e60048036038101906107399190613cc0565b6115c8565b60405161074b91906144bf565b60405180910390f35b34801561076057600080fd5b50610769611611565b005b34801561077757600080fd5b50610792600480360381019061078d9190613e15565b611764565b005b3480156107a057600080fd5b506107bb60048036038101906107b69190613cc0565b611816565b6040516107c891906142c7565b60405180910390f35b3480156107dd57600080fd5b506107f860048036038101906107f39190613eb6565b611836565b005b34801561080657600080fd5b5061080f61193b565b60405161081c9190614207565b60405180910390f35b34801561083157600080fd5b5061083a611964565b60405161084791906144bf565b60405180910390f35b34801561085c57600080fd5b5061087760048036038101906108729190613d9d565b61196a565b005b34801561088557600080fd5b5061088e611a5a565b60405161089b91906142fd565b60405180910390f35b3480156108b057600080fd5b506108cb60048036038101906108c69190613dd9565b611aec565b6040516108d891906142c7565b60405180910390f35b3480156108ed57600080fd5b5061090860048036038101906109039190613e15565b611bb9565b005b34801561091657600080fd5b5061091f611c6b565b005b34801561092d57600080fd5b5061094860048036038101906109439190613dd9565b611e3f565b60405161095591906142c7565b60405180910390f35b34801561096a57600080fd5b5061098560048036038101906109809190613cc0565b611e5e565b005b34801561099357600080fd5b5061099c611f37565b6040516109a991906144bf565b60405180910390f35b3480156109be57600080fd5b506109d960048036038101906109d49190613d9d565b611f3d565b005b3480156109e757600080fd5b50610a0260048036038101906109fd9190613e3e565b61202d565b005b348015610a1057600080fd5b50610a196120cc565b604051610a2691906144bf565b60405180910390f35b348015610a3b57600080fd5b50610a566004803603810190610a519190613cc0565b6120d2565b604051610a6391906142c7565b60405180910390f35b348015610a7857600080fd5b50610a936004803603810190610a8e9190613e3e565b6120f2565b005b348015610aa157600080fd5b50610aaa612191565b604051610ab791906142c7565b60405180910390f35b348015610acc57600080fd5b50610ae76004803603810190610ae29190613e3e565b6121a4565b005b348015610af557600080fd5b50610b106004803603810190610b0b9190613d12565b61236b565b604051610b1d91906144bf565b60405180910390f35b348015610b3257600080fd5b50610b3b6123f2565b604051610b4891906144bf565b60405180910390f35b348015610b5d57600080fd5b50610b786004803603810190610b739190613e15565b6123f8565b005b348015610b8657600080fd5b50610b8f6124e1565b604051610b9c91906144bf565b60405180910390f35b348015610bb157600080fd5b50610bba6124e7565b604051610bc79190614222565b60405180910390f35b348015610bdc57600080fd5b50610bf76004803603810190610bf29190613cc0565b61250d565b005b348015610c0557600080fd5b50610c206004803603810190610c1b9190613d9d565b6126cf565b005b348015610c2e57600080fd5b50610c376127bf565b604051610c4491906142c7565b60405180910390f35b606060048054610c5c906147b9565b80601f0160208091040260200160405190810160405280929190818152602001828054610c88906147b9565b8015610cd55780601f10610caa57610100808354040283529160200191610cd5565b820191906000526020600020905b815481529060010190602001808311610cb857829003601f168201915b5050505050905090565b6000610cf3610cec612830565b8484612838565b6001905092915050565b60095481565b60136020528060005260406000206000915054906101000a900460ff1681565b601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600354905090565b610d5b612830565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610de8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ddf906143ff565b60405180910390fd5b80600c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000610e39848484612a03565b50610efb84610e46612830565b610ef685604051806060016040528060288152602001614c3a60289139600b60008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610eac612830565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546130e49092919063ffffffff16565b612838565b600190509392505050565b600f5481565b7f000000000000000000000000000000000000000000000000000000000000dead81565b6000610f6f610f5e7f000000000000000000000000000000000000000000000000000000000000dead6115c8565b60035461314890919063ffffffff16565b905090565b6000600660009054906101000a900460ff16905090565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600061105a610fbe612830565b8461105585600b6000610fcf612830565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546127d290919063ffffffff16565b612838565b6001905092915050565b61106c612830565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146110f9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110f0906143ff565b60405180910390fd5b8060168190555050565b60075481565b6000601654905090565b601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b601860159054906101000a900460ff1681565b600042905090565b600061115e612830565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146111eb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111e2906143ff565b60405180910390fd5b60008290508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b15801561123657600080fd5b505afa15801561124a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061126e9190613ce9565b73ffffffffffffffffffffffffffffffffffffffff1663e6a43905308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156112d057600080fd5b505afa1580156112e4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113089190613ce9565b6040518363ffffffff1660e01b815260040161132592919061423d565b60206040518083038186803b15801561133d57600080fd5b505afa158015611351573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113759190613ce9565b9150600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611536578073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b1580156113f257600080fd5b505afa158015611406573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061142a9190613ce9565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561148c57600080fd5b505afa1580156114a0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114c49190613ce9565b6040518363ffffffff1660e01b81526004016114e192919061423d565b602060405180830381600087803b1580156114fb57600080fd5b505af115801561150f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115339190613ce9565b91505b81601860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080601760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050919050565b6000600254905090565b6000600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b611619612830565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146116a6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161169d906143ff565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b61176c612830565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146117f9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117f0906143ff565b60405180910390fd5b80601860176101000a81548160ff02191690831515021790555050565b60126020528060005260406000206000915054906101000a900460ff1681565b61183e612830565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146118cb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118c2906143ff565b60405180910390fd5b83600e8190555082600f819055508160108190555080600781905550611912601054611904600f54600e546127d290919063ffffffff16565b6127d290919063ffffffff16565b60088190555061192f6007546008546127d290919063ffffffff16565b60098190555050505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60155481565b611972612830565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146119ff576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119f6906143ff565b60405180910390fd5b80601360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b606060058054611a69906147b9565b80601f0160208091040260200160405190810160405280929190818152602001828054611a95906147b9565b8015611ae25780601f10611ab757610100808354040283529160200191611ae2565b820191906000526020600020905b815481529060010190602001808311611ac557829003601f168201915b5050505050905090565b6000611baf611af9612830565b84611baa85604051806060016040528060258152602001614c6260259139600b6000611b23612830565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546130e49092919063ffffffff16565b612838565b6001905092915050565b611bc1612830565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611c4e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c45906143ff565b60405180910390fd5b80601860166101000a81548160ff02191690831515021790555050565b3373ffffffffffffffffffffffffffffffffffffffff16600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611cfb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cf29061449f565b60405180910390fd5b6002544211611d3f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d369061447f565b60405180910390fd5b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b6000611e53611e4c612830565b8484612a03565b506001905092915050565b611e66612830565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611ef3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611eea906143ff565b60405180910390fd5b80600d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60145481565b611f45612830565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611fd2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fc9906143ff565b60405180910390fd5b80601260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b612035612830565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146120c2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120b9906143ff565b60405180910390fd5b8060158190555050565b60085481565b60116020528060005260406000206000915054906101000a900460ff1681565b6120fa612830565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612187576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161217e906143ff565b60405180910390fd5b8060148190555050565b601860169054906101000a900460ff1681565b6121ac612830565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612239576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612230906143ff565b60405180910390fd5b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080426122e791906145d4565b600281905550600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a350565b6000600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600e5481565b612400612830565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461248d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612484906143ff565b60405180910390fd5b80601860156101000a81548160ff0219169083151502179055507f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc159816040516124d691906142c7565b60405180910390a150565b60105481565b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b612515612830565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146125a2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612599906143ff565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415612612576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126099061433f565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6126d7612830565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612764576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161275b906143ff565b60405180910390fd5b80601160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b601860179054906101000a900460ff1681565b60008082846127e191906145d4565b905083811015612826576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161281d9061437f565b60405180910390fd5b8091505092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156128a8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161289f9061445f565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612918576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161290f9061435f565b60405180910390fd5b80600b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516129f691906144bf565b60405180910390a3505050565b60008073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415612a74576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a6b9061443f565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612ae4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612adb9061431f565b60405180910390fd5b601360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015612b885750601360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b612bc7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612bbe9061439f565b60405180910390fd5b60008211612c0a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c019061441f565b60405180910390fd5b601860149054906101000a900460ff1615612c3157612c2a848484613192565b90506130dd565b612c3961193b565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614158015612ca75750612c7761193b565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15612cf257601454821115612cf1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ce8906143bf565b60405180910390fd5b5b6000612cfd306115c8565b905060006016548210159050808015612d235750601860149054906101000a900460ff16155b8015612d7d5750601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff1614155b8015612d955750601860159054906101000a900460ff165b15612dbf57601860169054906101000a900460ff1615612db55760165491505b612dbe82613365565b5b612e48846040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600a60008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546130e49092919063ffffffff16565b600a60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000601160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680612f2e5750601160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b612f4257612f3d87878761352c565b612f44565b845b9050601860179054906101000a900460ff168015612fac5750601260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612fdb57601554612fcf82612fc1896115c8565b6127d290919063ffffffff16565b1115612fda57600080fd5b5b61302d81600a60008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546127d290919063ffffffff16565b600a60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516130cd91906144bf565b60405180910390a3600193505050505b9392505050565b600083831115829061312c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161312391906142fd565b60405180910390fd5b506000838561313b91906146b5565b9050809150509392505050565b600061318a83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506130e4565b905092915050565b600061321d826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600a60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546130e49092919063ffffffff16565b600a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506132b282600a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546127d290919063ffffffff16565b600a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161335291906144bf565b60405180910390a3600190509392505050565b6001601860146101000a81548160ff02191690831515021790555060006133be60026133b0600e546133a2600854876136f390919063ffffffff16565b61373d90919063ffffffff16565b6136f390919063ffffffff16565b905060006133d5828461314890919063ffffffff16565b90506133e0816137b8565b600047905060006134116134006002600e546136f390919063ffffffff16565b60085461314890919063ffffffff16565b9050600061344f600261344184613433600e548861373d90919063ffffffff16565b6136f390919063ffffffff16565b6136f390919063ffffffff16565b9050600061347a8361346c6010548761373d90919063ffffffff16565b6136f390919063ffffffff16565b905060006134a382613495858861314890919063ffffffff16565b61314890919063ffffffff16565b90506134d1600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1682613ab5565b6134fd600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1683613ab5565b6135078784613b00565b505050505050506000601860146101000a81548160ff02191690831515021790555050565b600080601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16146135b1576135ac606461359e6008548661373d90919063ffffffff16565b6136f390919063ffffffff16565b6135da565b6135d960646135cb6009548661373d90919063ffffffff16565b6136f390919063ffffffff16565b5b905061362e81600a60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546127d290919063ffffffff16565b600a60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516136ce91906144bf565b60405180910390a36136e9818461314890919063ffffffff16565b9150509392505050565b600061373583836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250613bf4565b905092915050565b60008083141561375057600090506137b2565b6000828461375e919061465b565b905082848261376d919061462a565b146137ad576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016137a4906143df565b60405180910390fd5b809150505b92915050565b6000600267ffffffffffffffff8111156137fb577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040519080825280602002602001820160405280156138295781602001602082028036833780820191505090505b5090503081600081518110613867577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561390957600080fd5b505afa15801561391d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906139419190613ce9565b8160018151811061397b577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506139e230601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684612838565b601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401613a4695949392919061450a565b600060405180830381600087803b158015613a6057600080fd5b505af1158015613a74573d6000803e3d6000fd5b505050507f32cde87eb454f3a0b875ab23547023107cfad454363ec88ba5695e2c24aa52a78282604051613aa99291906144da565b60405180910390a15050565b8173ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015613afb573d6000803e3d6000fd5b505050565b613b2d30601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684612838565b601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719823085600080613b7961193b565b426040518863ffffffff1660e01b8152600401613b9b96959493929190614266565b6060604051808303818588803b158015613bb457600080fd5b505af1158015613bc8573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190613bed9190613e67565b5050505050565b60008083118290613c3b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613c3291906142fd565b60405180910390fd5b5060008385613c4a919061462a565b9050809150509392505050565b600081359050613c6681614bf4565b92915050565b600081519050613c7b81614bf4565b92915050565b600081359050613c9081614c0b565b92915050565b600081359050613ca581614c22565b92915050565b600081519050613cba81614c22565b92915050565b600060208284031215613cd257600080fd5b6000613ce084828501613c57565b91505092915050565b600060208284031215613cfb57600080fd5b6000613d0984828501613c6c565b91505092915050565b60008060408385031215613d2557600080fd5b6000613d3385828601613c57565b9250506020613d4485828601613c57565b9150509250929050565b600080600060608486031215613d6357600080fd5b6000613d7186828701613c57565b9350506020613d8286828701613c57565b9250506040613d9386828701613c96565b9150509250925092565b60008060408385031215613db057600080fd5b6000613dbe85828601613c57565b9250506020613dcf85828601613c81565b9150509250929050565b60008060408385031215613dec57600080fd5b6000613dfa85828601613c57565b9250506020613e0b85828601613c96565b9150509250929050565b600060208284031215613e2757600080fd5b6000613e3584828501613c81565b91505092915050565b600060208284031215613e5057600080fd5b6000613e5e84828501613c96565b91505092915050565b600080600060608486031215613e7c57600080fd5b6000613e8a86828701613cab565b9350506020613e9b86828701613cab565b9250506040613eac86828701613cab565b9150509250925092565b60008060008060808587031215613ecc57600080fd5b6000613eda87828801613c96565b9450506020613eeb87828801613c96565b9350506040613efc87828801613c96565b9250506060613f0d87828801613c96565b91505092959194509250565b6000613f258383613f40565b60208301905092915050565b613f3a816146fb565b82525050565b613f49816146e9565b82525050565b613f58816146e9565b82525050565b6000613f698261458f565b613f7381856145b2565b9350613f7e8361457f565b8060005b83811015613faf578151613f968882613f19565b9750613fa1836145a5565b925050600181019050613f82565b5085935050505092915050565b613fc58161470d565b82525050565b613fd481614750565b82525050565b613fe381614774565b82525050565b6000613ff48261459a565b613ffe81856145c3565b935061400e818560208601614786565b61401781614878565b840191505092915050565b600061402f6023836145c3565b915061403a82614889565b604082019050919050565b60006140526026836145c3565b915061405d826148d8565b604082019050919050565b60006140756022836145c3565b915061408082614927565b604082019050919050565b6000614098601b836145c3565b91506140a382614976565b602082019050919050565b60006140bb601f836145c3565b91506140c68261499f565b602082019050919050565b60006140de6028836145c3565b91506140e9826149c8565b604082019050919050565b60006141016021836145c3565b915061410c82614a17565b604082019050919050565b60006141246020836145c3565b915061412f82614a66565b602082019050919050565b60006141476029836145c3565b915061415282614a8f565b604082019050919050565b600061416a6025836145c3565b915061417582614ade565b604082019050919050565b600061418d6024836145c3565b915061419882614b2d565b604082019050919050565b60006141b0601f836145c3565b91506141bb82614b7c565b602082019050919050565b60006141d36023836145c3565b91506141de82614ba5565b604082019050919050565b6141f281614739565b82525050565b61420181614743565b82525050565b600060208201905061421c6000830184613f4f565b92915050565b60006020820190506142376000830184613f31565b92915050565b60006040820190506142526000830185613f4f565b61425f6020830184613f4f565b9392505050565b600060c08201905061427b6000830189613f4f565b61428860208301886141e9565b6142956040830187613fda565b6142a26060830186613fda565b6142af6080830185613f4f565b6142bc60a08301846141e9565b979650505050505050565b60006020820190506142dc6000830184613fbc565b92915050565b60006020820190506142f76000830184613fcb565b92915050565b600060208201905081810360008301526143178184613fe9565b905092915050565b6000602082019050818103600083015261433881614022565b9050919050565b6000602082019050818103600083015261435881614045565b9050919050565b6000602082019050818103600083015261437881614068565b9050919050565b600060208201905081810360008301526143988161408b565b9050919050565b600060208201905081810360008301526143b8816140ae565b9050919050565b600060208201905081810360008301526143d8816140d1565b9050919050565b600060208201905081810360008301526143f8816140f4565b9050919050565b6000602082019050818103600083015261441881614117565b9050919050565b600060208201905081810360008301526144388161413a565b9050919050565b600060208201905081810360008301526144588161415d565b9050919050565b6000602082019050818103600083015261447881614180565b9050919050565b60006020820190508181036000830152614498816141a3565b9050919050565b600060208201905081810360008301526144b8816141c6565b9050919050565b60006020820190506144d460008301846141e9565b92915050565b60006040820190506144ef60008301856141e9565b81810360208301526145018184613f5e565b90509392505050565b600060a08201905061451f60008301886141e9565b61452c6020830187613fda565b818103604083015261453e8186613f5e565b905061454d6060830185613f4f565b61455a60808301846141e9565b9695505050505050565b600060208201905061457960008301846141f8565b92915050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b60006145df82614739565b91506145ea83614739565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561461f5761461e6147eb565b5b828201905092915050565b600061463582614739565b915061464083614739565b9250826146505761464f61481a565b5b828204905092915050565b600061466682614739565b915061467183614739565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156146aa576146a96147eb565b5b828202905092915050565b60006146c082614739565b91506146cb83614739565b9250828210156146de576146dd6147eb565b5b828203905092915050565b60006146f482614719565b9050919050565b600061470682614719565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b600061475b82614762565b9050919050565b600061476d82614719565b9050919050565b600061477f82614739565b9050919050565b60005b838110156147a4578082015181840152602081019050614789565b838111156147b3576000848401525b50505050565b600060028204905060018216806147d157607f821691505b602082108114156147e5576147e4614849565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000601f19601f8301169050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b7f546f2f66726f6d206164647265737320697320626c61636b6c69737465642100600082015250565b7f5472616e7366657220616d6f756e74206578636565647320746865206d61785460008201527f78416d6f756e742e000000000000000000000000000000000000000000000000602082015250565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f436f6e7472616374206973206c6f636b656420756e74696c2037206461797300600082015250565b7f596f7520646f6e27742068617665207065726d697373696f6e20746f20756e6c60008201527f6f636b0000000000000000000000000000000000000000000000000000000000602082015250565b614bfd816146e9565b8114614c0857600080fd5b50565b614c148161470d565b8114614c1f57600080fd5b50565b614c2b81614739565b8114614c3657600080fd5b5056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa264697066735822122030e4b17bd89d6aac7c2c775888c5cec247a4f665924c6ec0073b7b75dc57634f64736f6c63430008030033

Deployed Bytecode Sourcemap

15092:12713:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17950:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19230:161;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15470:29;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16140:38;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16350:41;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18227:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20519:128;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;22027:313;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15952:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15824:81;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20780:128;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18136:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15629:92;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18619:218;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20403:108;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15405:23;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19122:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16398:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16467:40;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6596:90;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21054:696;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6494:90;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18335:119;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6086:148;;;;;;;;;;;;;:::i;:::-;;27142:113;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16086:47;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20000:395;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5861:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16238:47;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19744:113;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18041:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18845:269;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;27671:125;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6932:305;;;;;;;;;;;;;:::i;:::-;;21852:167;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20655:115;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16187:44;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;27265:121;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;27396:103;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15437:26;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16034:45;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;27031:101;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16514:45;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6694:226;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18468:143;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15914:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;27507:156;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15990:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15729:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6242:244;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;19865:127;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16566:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17950:83;17987:13;18020:5;18013:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17950:83;:::o;19230:161::-;19305:4;19322:39;19331:12;:10;:12::i;:::-;19345:7;19354:6;19322:8;:39::i;:::-;19379:4;19372:11;;19230:161;;;;:::o;15470:29::-;;;;:::o;16140:38::-;;;;;;;;;;;;;;;;;;;;;;:::o;16350:41::-;;;;;;;;;;;;;:::o;18227:100::-;18280:7;18307:12;;18300:19;;18227:100;:::o;20519:128::-;6005:12;:10;:12::i;:::-;5995:22;;:6;;;;;;;;;;:22;;;5987:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;20628:10:::1;20602:15;;:37;;;;;;;;;;;;;;;;;;20519:128:::0;:::o;22027:313::-;22125:4;22142:36;22152:6;22160:9;22171:6;22142:9;:36::i;:::-;;22189:121;22198:6;22206:12;:10;:12::i;:::-;22220:89;22258:6;22220:89;;;;;;;;;;;;;;;;;:11;:19;22232:6;22220:19;;;;;;;;;;;;;;;:33;22240:12;:10;:12::i;:::-;22220:33;;;;;;;;;;;;;;;;:37;;:89;;;;;:::i;:::-;22189:8;:121::i;:::-;22328:4;22321:11;;22027:313;;;;;:::o;15952:31::-;;;;:::o;15824:81::-;;;:::o;20780:128::-;20833:7;20860:40;20877:22;20887:11;20877:9;:22::i;:::-;20860:12;;:16;;:40;;;;:::i;:::-;20853:47;;20780:128;:::o;18136:83::-;18177:5;18202:9;;;;;;;;;;;18195:16;;18136:83;:::o;15629:92::-;;;;;;;;;;;;;:::o;18619:218::-;18707:4;18724:83;18733:12;:10;:12::i;:::-;18747:7;18756:50;18795:10;18756:11;:25;18768:12;:10;:12::i;:::-;18756:25;;;;;;;;;;;;;;;:34;18782:7;18756:34;;;;;;;;;;;;;;;;:38;;:50;;;;:::i;:::-;18724:8;:83::i;:::-;18825:4;18818:11;;18619:218;;;;:::o;20403:108::-;6005:12;:10;:12::i;:::-;5995:22;;:6;;;;;;;;;;:22;;;5987:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;20495:8:::1;20479:13;:24;;;;20403:108:::0;:::o;15405:23::-;;;;:::o;19122:100::-;19174:7;19201:13;;19194:20;;19122:100;:::o;16398:28::-;;;;;;;;;;;;;:::o;16467:40::-;;;;;;;;;;;;;:::o;6596:90::-;6636:7;6663:15;6656:22;;6596:90;:::o;21054:696::-;21134:22;6005:12;:10;:12::i;:::-;5995:22;;:6;;;;;;;;;;:22;;;5987:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;21171:35:::1;21228:16;21171:74;;21294:16;:24;;;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;21276:53;;;21338:4;21345:16;:21;;;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;21276:93;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;21259:110;;21411:1;21385:28;;:14;:28;;;21382:225;;;21499:16;:24;;;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;21481:74;;;21564:4;21571:16;:21;;;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;21481:114;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;21464:131;;21382:225;21635:14;21619:13;;:30;;;;;;;;;;;;;;;;;;21701:16;21683:15;;:34;;;;;;;;;;;;;;;;;;6065:1;21054:696:::0;;;:::o;6494:90::-;6540:7;6567:9;;6560:16;;6494:90;:::o;18335:119::-;18401:7;18428:9;:18;18438:7;18428:18;;;;;;;;;;;;;;;;18421:25;;18335:119;;;:::o;6086:148::-;6005:12;:10;:12::i;:::-;5995:22;;:6;;;;;;;;;;:22;;;5987:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;6193:1:::1;6156:40;;6177:6;::::0;::::1;;;;;;;;6156:40;;;;;;;;;;;;6224:1;6207:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;6086:148::o:0;27142:113::-;6005:12;:10;:12::i;:::-;5995:22;;:6;;;;;;;;;;:22;;;5987:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;27239:8:::1;27220:16;;:27;;;;;;;;;;;;;;;;;;27142:113:::0;:::o;16086:47::-;;;;;;;;;;;;;;;;;;;;;;:::o;20000:395::-;6005:12;:10;:12::i;:::-;5995:22;;:6;;;;;;;;;;:22;;;5987:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;20155:15:::1;20140:12;:30;;;;20196:15;20181:12;:30;;;;20236:13;20222:11;:27;;;;20267:9;20260:4;:16;;;;20299:47;20334:11;;20299:30;20316:12;;20299;;:16;;:30;;;;:::i;:::-;:34;;:47;;;;:::i;:::-;20289:7;:57;;;;20370:17;20382:4;;20370:7;;:11;;:17;;;;:::i;:::-;20357:10;:30;;;;20000:395:::0;;;;:::o;5861:79::-;5899:7;5926:6;;;;;;;;;;;5919:13;;5861:79;:::o;16238:47::-;;;;:::o;19744:113::-;6005:12;:10;:12::i;:::-;5995:22;;:6;;;;;;;;;;:22;;;5987:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;19841:8:::1;19824:5;:14;19830:7;19824:14;;;;;;;;;;;;;;;;:25;;;;;;;;;;;;;;;;;;19744:113:::0;;:::o;18041:87::-;18080:13;18113:7;18106:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18041:87;:::o;18845:269::-;18938:4;18955:129;18964:12;:10;:12::i;:::-;18978:7;18987:96;19026:15;18987:96;;;;;;;;;;;;;;;;;:11;:25;18999:12;:10;:12::i;:::-;18987:25;;;;;;;;;;;;;;;:34;19013:7;18987:34;;;;;;;;;;;;;;;;:38;;:96;;;;;:::i;:::-;18955:8;:129::i;:::-;19102:4;19095:11;;18845:269;;;;:::o;27671:125::-;6005:12;:10;:12::i;:::-;5995:22;;:6;;;;;;;;;;:22;;;5987:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;27780:8:::1;27752:25;;:36;;;;;;;;;;;;;;;;;;27671:125:::0;:::o;6932:305::-;7002:10;6984:28;;:14;;;;;;;;;;;:28;;;6976:76;;;;;;;;;;;;:::i;:::-;;;;;;;;;7089:9;;7071:15;:27;7063:72;;;;;;;;;;;;:::i;:::-;;;;;;;;;7180:14;;;;;;;;;;;7151:44;;7172:6;;;;;;;;;;7151:44;;;;;;;;;;;;7215:14;;;;;;;;;;;7206:6;;:23;;;;;;;;;;;;;;;;;;6932:305::o;21852:167::-;21930:4;21947:42;21957:12;:10;:12::i;:::-;21971:9;21982:6;21947:9;:42::i;:::-;;22007:4;22000:11;;21852:167;;;;:::o;20655:115::-;6005:12;:10;:12::i;:::-;5995:22;;:6;;;;;;;;;;:22;;;5987:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;20751:10:::1;20730;;:32;;;;;;;;;;;;;;;;;;20655:115:::0;:::o;16187:44::-;;;;:::o;27265:121::-;6005:12;:10;:12::i;:::-;5995:22;;:6;;;;;;;;;;:22;;;5987:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;27372:6:::1;27347:14;:22;27362:6;27347:22;;;;;;;;;;;;;;;;:31;;;;;;;;;;;;;;;;;;27265:121:::0;;:::o;27396:103::-;6005:12;:10;:12::i;:::-;5995:22;;:6;;;;;;;;;;:22;;;5987:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;27483:8:::1;27468:11;:23;;;;27396:103:::0;:::o;15437:26::-;;;;:::o;16034:45::-;;;;;;;;;;;;;;;;;;;;;;:::o;27031:101::-;6005:12;:10;:12::i;:::-;5995:22;;:6;;;;;;;;;;:22;;;5987:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;27113:11:::1;27102:8;:22;;;;27031:101:::0;:::o;16514:45::-;;;;;;;;;;;;;:::o;6694:226::-;6005:12;:10;:12::i;:::-;5995:22;;:6;;;;;;;;;;:22;;;5987:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;6775:6:::1;::::0;::::1;;;;;;;;6758:14;;:23;;;;;;;;;;;;;;;;;;6809:1;6792:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;6852:4;6834:15;:22;;;;:::i;:::-;6822:9;:34;;;;6909:1;6872:40;;6893:6;::::0;::::1;;;;;;;;6872:40;;;;;;;;;;;;6694:226:::0;:::o;18468:143::-;18549:7;18576:11;:18;18588:5;18576:18;;;;;;;;;;;;;;;:27;18595:7;18576:27;;;;;;;;;;;;;;;;18569:34;;18468:143;;;;:::o;15914:31::-;;;;:::o;27507:156::-;6005:12;:10;:12::i;:::-;5995:22;;:6;;;;;;;;;;:22;;;5987:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;27593:8:::1;27569:21;;:32;;;;;;;;;;;;;;;;;;27617:38;27646:8;27617:38;;;;;;:::i;:::-;;;;;;;;27507:156:::0;:::o;15990:30::-;;;;:::o;15729:87::-;;;;;;;;;;;;;:::o;6242:244::-;6005:12;:10;:12::i;:::-;5995:22;;:6;;;;;;;;;;:22;;;5987:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;6351:1:::1;6331:22;;:8;:22;;;;6323:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;6441:8;6412:38;;6433:6;::::0;::::1;;;;;;;;6412:38;;;;;;;;;;;;6470:8;6461:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;6242:244:::0;:::o;19865:127::-;6005:12;:10;:12::i;:::-;5995:22;;:6;;;;;;;;;;:22;;;5987:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;19976:8:::1;19952:12;:21;19965:7;19952:21;;;;;;;;;;;;;;;;:32;;;;;;;;;;;;;;;;;;19865:127:::0;;:::o;16566:35::-;;;;;;;;;;;;;:::o;1231:181::-;1289:7;1309:9;1325:1;1321;:5;;;;:::i;:::-;1309:17;;1350:1;1345;:6;;1337:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;1403:1;1396:8;;;1231:181;;;;:::o;163:115::-;216:15;259:10;244:26;;163:115;:::o;19399:337::-;19509:1;19492:19;;:5;:19;;;;19484:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;19590:1;19571:21;;:7;:21;;;;19563:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;19674:6;19644:11;:18;19656:5;19644:18;;;;;;;;;;;;;;;:27;19663:7;19644:27;;;;;;;;;;;;;;;:36;;;;19712:7;19696:32;;19705:5;19696:32;;;19721:6;19696:32;;;;;;:::i;:::-;;;;;;;;19399:337;;;:::o;22348:1829::-;22435:4;22480:1;22462:20;;:6;:20;;;;22454:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;22564:1;22543:23;;:9;:23;;;;22535:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;22626:5;:13;22632:6;22626:13;;;;;;;;;;;;;;;;;;;;;;;;;22625:14;:35;;;;;22644:5;:16;22650:9;22644:16;;;;;;;;;;;;;;;;;;;;;;;;;22643:17;22625:35;22617:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;22724:1;22715:6;:10;22707:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;22795:16;;;;;;;;;;;22792:1378;;;22845:41;22860:6;22868:9;22879:6;22845:14;:41::i;:::-;22838:48;;;;22792:1378;22951:7;:5;:7::i;:::-;22941:17;;:6;:17;;;;:41;;;;;22975:7;:5;:7::i;:::-;22962:20;;:9;:20;;;;22941:41;22938:152;;;23021:8;;23011:6;:18;;23003:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;22938:152;23118:28;23149:24;23167:4;23149:9;:24::i;:::-;23118:55;;23188:28;23243:13;;23219:20;:37;;23188:68;;23289:23;:44;;;;;23317:16;;;;;;;;;;;23316:17;23289:44;:71;;;;;23347:13;;;;;;;;;;;23337:23;;:6;:23;;;;23289:71;:96;;;;;23364:21;;;;;;;;;;;23289:96;23285:297;;;23423:25;;;;;;;;;;;23420:87;;;23494:13;;23471:36;;23420:87;23526:36;23541:20;23526:14;:36::i;:::-;23285:297;23618:53;23640:6;23618:53;;;;;;;;;;;;;;;;;:9;:17;23628:6;23618:17;;;;;;;;;;;;;;;;:21;;:53;;;;;:::i;:::-;23598:9;:17;23608:6;23598:17;;;;;;;;;;;;;;;:73;;;;23688:19;23711:12;:20;23724:6;23711:20;;;;;;;;;;;;;;;;;;;;;;;;;:47;;;;23735:12;:23;23748:9;23735:23;;;;;;;;;;;;;;;;;;;;;;;;;23711:47;23710:137;;23814:33;23821:6;23829:9;23840:6;23814;:33::i;:::-;23710:137;;;23805:6;23710:137;23688:159;;23867:16;;;;;;;;;;;:46;;;;;23888:14;:25;23903:9;23888:25;;;;;;;;;;;;;;;;;;;;;;;;;23887:26;23867:46;23864:129;;;23981:11;;23940:37;23965:11;23940:20;23950:9;23940;:20::i;:::-;:24;;:37;;;;:::i;:::-;:52;;23932:61;;;;;;23864:129;24033:37;24058:11;24033:9;:20;24043:9;24033:20;;;;;;;;;;;;;;;;:24;;:37;;;;:::i;:::-;24010:9;:20;24020:9;24010:20;;;;;;;;;;;;;;;:60;;;;24109:9;24092:40;;24101:6;24092:40;;;24120:11;24092:40;;;;;;:::i;:::-;;;;;;;;24154:4;24147:11;;;;;22348:1829;;;;;;:::o;1564:192::-;1650:7;1683:1;1678;:6;;1686:12;1670:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;1710:9;1726:1;1722;:5;;;;:::i;:::-;1710:17;;1747:1;1740:8;;;1564:192;;;;;:::o;1420:136::-;1478:7;1505:43;1509:1;1512;1505:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;1498:50;;1420:136;;;;:::o;24185:330::-;24278:4;24315:53;24337:6;24315:53;;;;;;;;;;;;;;;;;:9;:17;24325:6;24315:17;;;;;;;;;;;;;;;;:21;;:53;;;;;:::i;:::-;24295:9;:17;24305:6;24295:17;;;;;;;;;;;;;;;:73;;;;24402:32;24427:6;24402:9;:20;24412:9;24402:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;24379:9;:20;24389:9;24379:20;;;;;;;;;;;;;;;:55;;;;24467:9;24450:35;;24459:6;24450:35;;;24478:6;24450:35;;;;;;:::i;:::-;;;;;;;;24503:4;24496:11;;24185:330;;;;;:::o;24523:841::-;17043:4;17024:16;;:23;;;;;;;;;;;;;;;;;;24604:19:::1;24626:45;24669:1;24626:38;24651:12;;24626:20;24638:7;;24626;:11;;:20;;;;:::i;:::-;:24;;:38;;;;:::i;:::-;:42;;:45;;;;:::i;:::-;24604:67;;24682:21;24706:24;24718:11;24706:7;:11;;:24;;;;:::i;:::-;24682:48;;24743:31;24760:13;24743:16;:31::i;:::-;24785:22;24810:21;24785:46;;24844:19;24866:32;24878:19;24895:1;24878:12;;:16;;:19;;;;:::i;:::-;24866:7;;:11;;:32;;;;:::i;:::-;24844:54;;24919:23;24945:56;24999:1;24945:49;24982:11;24945:32;24964:12;;24945:14;:18;;:32;;;;:::i;:::-;:36;;:49;;;;:::i;:::-;:53;;:56;;;;:::i;:::-;24919:82;;25012:22;25037:48;25073:11;25037:31;25056:11;;25037:14;:18;;:31;;;;:::i;:::-;:35;;:48;;;;:::i;:::-;25012:73;;25096:23;25122:55;25162:14;25122:35;25141:15;25122:14;:18;;:35;;;;:::i;:::-;:39;;:55;;;;:::i;:::-;25096:81;;25190:54;25211:15;;;;;;;;;;;25228;25190:20;:54::i;:::-;25255:48;25276:10;;;;;;;;;;;25288:14;25255:20;:48::i;:::-;25314:42;25327:11;25340:15;25314:12;:42::i;:::-;17058:1;;;;;;;17089:5:::0;17070:16;;:24;;;;;;;;;;;;;;;;;;24523:841;:::o;26571:446::-;26656:7;26686:17;26719:13;;;;;;;;;;;26706:26;;:9;:26;;;:125;;26803:28;26827:3;26803:19;26814:7;;26803:6;:10;;:19;;;;:::i;:::-;:23;;:28;;;;:::i;:::-;26706:125;;;26735:31;26762:3;26735:22;26746:10;;26735:6;:10;;:22;;;;:::i;:::-;:26;;:31;;;;:::i;:::-;26706:125;26686:145;;26871:39;26900:9;26871;:24;26889:4;26871:24;;;;;;;;;;;;;;;;:28;;:39;;;;:::i;:::-;26844:9;:24;26862:4;26844:24;;;;;;;;;;;;;;;:66;;;;26951:4;26926:42;;26935:6;26926:42;;;26958:9;26926:42;;;;;;:::i;:::-;;;;;;;;26988:21;26999:9;26988:6;:10;;:21;;;;:::i;:::-;26981:28;;;26571:446;;;;;:::o;2022:132::-;2080:7;2107:39;2111:1;2114;2107:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;2100:46;;2022:132;;;;:::o;1764:250::-;1822:7;1851:1;1846;:6;1842:47;;;1876:1;1869:8;;;;1842:47;1901:9;1917:1;1913;:5;;;;:::i;:::-;1901:17;;1946:1;1941;1937;:5;;;;:::i;:::-;:10;1929:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;2005:1;1998:8;;;1764:250;;;;;:::o;25376:666::-;25502:21;25540:1;25526:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25502:40;;25571:4;25553;25558:1;25553:7;;;;;;;;;;;;;;;;;;;;;:23;;;;;;;;;;;25597:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;25587:4;25592:1;25587:7;;;;;;;;;;;;;;;;;;;;;:32;;;;;;;;;;;25632:62;25649:4;25664:15;;;;;;;;;;;25682:11;25632:8;:62::i;:::-;25733:15;;;;;;;;;;;:66;;;25814:11;25840:1;25884:4;25911;25947:15;25733:240;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25999:35;26016:11;26029:4;25999:35;;;;;;;:::i;:::-;;;;;;;;25376:666;;:::o;20916:126::-;21008:9;:18;;:26;21027:6;21008:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20916:126;;:::o;26050:513::-;26198:62;26215:4;26230:15;;;;;;;;;;;26248:11;26198:8;:62::i;:::-;26303:15;;;;;;;;;;;:31;;;26342:9;26375:4;26395:11;26421:1;26464;26507:7;:5;:7::i;:::-;26529:15;26303:252;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;26050:513;;:::o;2162:278::-;2248:7;2280:1;2276;:5;2283:12;2268:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;2307:9;2323:1;2319;:5;;;;:::i;:::-;2307:17;;2431:1;2424:8;;;2162:278;;;;;:::o;7:139:1:-;;91:6;78:20;69:29;;107:33;134:5;107:33;:::i;:::-;59:87;;;;:::o;152:143::-;;240:6;234:13;225:22;;256:33;283:5;256:33;:::i;:::-;215:80;;;;:::o;301:133::-;;382:6;369:20;360:29;;398:30;422:5;398:30;:::i;:::-;350:84;;;;:::o;440:139::-;;524:6;511:20;502:29;;540:33;567:5;540:33;:::i;:::-;492:87;;;;:::o;585:143::-;;673:6;667:13;658:22;;689:33;716:5;689:33;:::i;:::-;648:80;;;;:::o;734:262::-;;842:2;830:9;821:7;817:23;813:32;810:2;;;858:1;855;848:12;810:2;901:1;926:53;971:7;962:6;951:9;947:22;926:53;:::i;:::-;916:63;;872:117;800:196;;;;:::o;1002:284::-;;1121:2;1109:9;1100:7;1096:23;1092:32;1089:2;;;1137:1;1134;1127:12;1089:2;1180:1;1205:64;1261:7;1252:6;1241:9;1237:22;1205:64;:::i;:::-;1195:74;;1151:128;1079:207;;;;:::o;1292:407::-;;;1417:2;1405:9;1396:7;1392:23;1388:32;1385:2;;;1433:1;1430;1423:12;1385:2;1476:1;1501:53;1546:7;1537:6;1526:9;1522:22;1501:53;:::i;:::-;1491:63;;1447:117;1603:2;1629:53;1674:7;1665:6;1654:9;1650:22;1629:53;:::i;:::-;1619:63;;1574:118;1375:324;;;;;:::o;1705:552::-;;;;1847:2;1835:9;1826:7;1822:23;1818:32;1815:2;;;1863:1;1860;1853:12;1815:2;1906:1;1931:53;1976:7;1967:6;1956:9;1952:22;1931:53;:::i;:::-;1921:63;;1877:117;2033:2;2059:53;2104:7;2095:6;2084:9;2080:22;2059:53;:::i;:::-;2049:63;;2004:118;2161:2;2187:53;2232:7;2223:6;2212:9;2208:22;2187:53;:::i;:::-;2177:63;;2132:118;1805:452;;;;;:::o;2263:401::-;;;2385:2;2373:9;2364:7;2360:23;2356:32;2353:2;;;2401:1;2398;2391:12;2353:2;2444:1;2469:53;2514:7;2505:6;2494:9;2490:22;2469:53;:::i;:::-;2459:63;;2415:117;2571:2;2597:50;2639:7;2630:6;2619:9;2615:22;2597:50;:::i;:::-;2587:60;;2542:115;2343:321;;;;;:::o;2670:407::-;;;2795:2;2783:9;2774:7;2770:23;2766:32;2763:2;;;2811:1;2808;2801:12;2763:2;2854:1;2879:53;2924:7;2915:6;2904:9;2900:22;2879:53;:::i;:::-;2869:63;;2825:117;2981:2;3007:53;3052:7;3043:6;3032:9;3028:22;3007:53;:::i;:::-;2997:63;;2952:118;2753:324;;;;;:::o;3083:256::-;;3188:2;3176:9;3167:7;3163:23;3159:32;3156:2;;;3204:1;3201;3194:12;3156:2;3247:1;3272:50;3314:7;3305:6;3294:9;3290:22;3272:50;:::i;:::-;3262:60;;3218:114;3146:193;;;;:::o;3345:262::-;;3453:2;3441:9;3432:7;3428:23;3424:32;3421:2;;;3469:1;3466;3459:12;3421:2;3512:1;3537:53;3582:7;3573:6;3562:9;3558:22;3537:53;:::i;:::-;3527:63;;3483:117;3411:196;;;;:::o;3613:596::-;;;;3766:2;3754:9;3745:7;3741:23;3737:32;3734:2;;;3782:1;3779;3772:12;3734:2;3825:1;3850:64;3906:7;3897:6;3886:9;3882:22;3850:64;:::i;:::-;3840:74;;3796:128;3963:2;3989:64;4045:7;4036:6;4025:9;4021:22;3989:64;:::i;:::-;3979:74;;3934:129;4102:2;4128:64;4184:7;4175:6;4164:9;4160:22;4128:64;:::i;:::-;4118:74;;4073:129;3724:485;;;;;:::o;4215:698::-;;;;;4374:3;4362:9;4353:7;4349:23;4345:33;4342:2;;;4391:1;4388;4381:12;4342:2;4434:1;4459:53;4504:7;4495:6;4484:9;4480:22;4459:53;:::i;:::-;4449:63;;4405:117;4561:2;4587:53;4632:7;4623:6;4612:9;4608:22;4587:53;:::i;:::-;4577:63;;4532:118;4689:2;4715:53;4760:7;4751:6;4740:9;4736:22;4715:53;:::i;:::-;4705:63;;4660:118;4817:2;4843:53;4888:7;4879:6;4868:9;4864:22;4843:53;:::i;:::-;4833:63;;4788:118;4332:581;;;;;;;:::o;4919:179::-;;5009:46;5051:3;5043:6;5009:46;:::i;:::-;5087:4;5082:3;5078:14;5064:28;;4999:99;;;;:::o;5104:142::-;5207:32;5233:5;5207:32;:::i;:::-;5202:3;5195:45;5185:61;;:::o;5252:108::-;5329:24;5347:5;5329:24;:::i;:::-;5324:3;5317:37;5307:53;;:::o;5366:118::-;5453:24;5471:5;5453:24;:::i;:::-;5448:3;5441:37;5431:53;;:::o;5520:732::-;;5668:54;5716:5;5668:54;:::i;:::-;5738:86;5817:6;5812:3;5738:86;:::i;:::-;5731:93;;5848:56;5898:5;5848:56;:::i;:::-;5927:7;5958:1;5943:284;5968:6;5965:1;5962:13;5943:284;;;6044:6;6038:13;6071:63;6130:3;6115:13;6071:63;:::i;:::-;6064:70;;6157:60;6210:6;6157:60;:::i;:::-;6147:70;;6003:224;5990:1;5987;5983:9;5978:14;;5943:284;;;5947:14;6243:3;6236:10;;5644:608;;;;;;;:::o;6258:109::-;6339:21;6354:5;6339:21;:::i;:::-;6334:3;6327:34;6317:50;;:::o;6373:185::-;6487:64;6545:5;6487:64;:::i;:::-;6482:3;6475:77;6465:93;;:::o;6564:147::-;6659:45;6698:5;6659:45;:::i;:::-;6654:3;6647:58;6637:74;;:::o;6717:364::-;;6833:39;6866:5;6833:39;:::i;:::-;6888:71;6952:6;6947:3;6888:71;:::i;:::-;6881:78;;6968:52;7013:6;7008:3;7001:4;6994:5;6990:16;6968:52;:::i;:::-;7045:29;7067:6;7045:29;:::i;:::-;7040:3;7036:39;7029:46;;6809:272;;;;;:::o;7087:366::-;;7250:67;7314:2;7309:3;7250:67;:::i;:::-;7243:74;;7326:93;7415:3;7326:93;:::i;:::-;7444:2;7439:3;7435:12;7428:19;;7233:220;;;:::o;7459:366::-;;7622:67;7686:2;7681:3;7622:67;:::i;:::-;7615:74;;7698:93;7787:3;7698:93;:::i;:::-;7816:2;7811:3;7807:12;7800:19;;7605:220;;;:::o;7831:366::-;;7994:67;8058:2;8053:3;7994:67;:::i;:::-;7987:74;;8070:93;8159:3;8070:93;:::i;:::-;8188:2;8183:3;8179:12;8172:19;;7977:220;;;:::o;8203:366::-;;8366:67;8430:2;8425:3;8366:67;:::i;:::-;8359:74;;8442:93;8531:3;8442:93;:::i;:::-;8560:2;8555:3;8551:12;8544:19;;8349:220;;;:::o;8575:366::-;;8738:67;8802:2;8797:3;8738:67;:::i;:::-;8731:74;;8814:93;8903:3;8814:93;:::i;:::-;8932:2;8927:3;8923:12;8916:19;;8721:220;;;:::o;8947:366::-;;9110:67;9174:2;9169:3;9110:67;:::i;:::-;9103:74;;9186:93;9275:3;9186:93;:::i;:::-;9304:2;9299:3;9295:12;9288:19;;9093:220;;;:::o;9319:366::-;;9482:67;9546:2;9541:3;9482:67;:::i;:::-;9475:74;;9558:93;9647:3;9558:93;:::i;:::-;9676:2;9671:3;9667:12;9660:19;;9465:220;;;:::o;9691:366::-;;9854:67;9918:2;9913:3;9854:67;:::i;:::-;9847:74;;9930:93;10019:3;9930:93;:::i;:::-;10048:2;10043:3;10039:12;10032:19;;9837:220;;;:::o;10063:366::-;;10226:67;10290:2;10285:3;10226:67;:::i;:::-;10219:74;;10302:93;10391:3;10302:93;:::i;:::-;10420:2;10415:3;10411:12;10404:19;;10209:220;;;:::o;10435:366::-;;10598:67;10662:2;10657:3;10598:67;:::i;:::-;10591:74;;10674:93;10763:3;10674:93;:::i;:::-;10792:2;10787:3;10783:12;10776:19;;10581:220;;;:::o;10807:366::-;;10970:67;11034:2;11029:3;10970:67;:::i;:::-;10963:74;;11046:93;11135:3;11046:93;:::i;:::-;11164:2;11159:3;11155:12;11148:19;;10953:220;;;:::o;11179:366::-;;11342:67;11406:2;11401:3;11342:67;:::i;:::-;11335:74;;11418:93;11507:3;11418:93;:::i;:::-;11536:2;11531:3;11527:12;11520:19;;11325:220;;;:::o;11551:366::-;;11714:67;11778:2;11773:3;11714:67;:::i;:::-;11707:74;;11790:93;11879:3;11790:93;:::i;:::-;11908:2;11903:3;11899:12;11892:19;;11697:220;;;:::o;11923:118::-;12010:24;12028:5;12010:24;:::i;:::-;12005:3;11998:37;11988:53;;:::o;12047:112::-;12130:22;12146:5;12130:22;:::i;:::-;12125:3;12118:35;12108:51;;:::o;12165:222::-;;12296:2;12285:9;12281:18;12273:26;;12309:71;12377:1;12366:9;12362:17;12353:6;12309:71;:::i;:::-;12263:124;;;;:::o;12393:254::-;;12540:2;12529:9;12525:18;12517:26;;12553:87;12637:1;12626:9;12622:17;12613:6;12553:87;:::i;:::-;12507:140;;;;:::o;12653:332::-;;12812:2;12801:9;12797:18;12789:26;;12825:71;12893:1;12882:9;12878:17;12869:6;12825:71;:::i;:::-;12906:72;12974:2;12963:9;12959:18;12950:6;12906:72;:::i;:::-;12779:206;;;;;:::o;12991:807::-;;13278:3;13267:9;13263:19;13255:27;;13292:71;13360:1;13349:9;13345:17;13336:6;13292:71;:::i;:::-;13373:72;13441:2;13430:9;13426:18;13417:6;13373:72;:::i;:::-;13455:80;13531:2;13520:9;13516:18;13507:6;13455:80;:::i;:::-;13545;13621:2;13610:9;13606:18;13597:6;13545:80;:::i;:::-;13635:73;13703:3;13692:9;13688:19;13679:6;13635:73;:::i;:::-;13718;13786:3;13775:9;13771:19;13762:6;13718:73;:::i;:::-;13245:553;;;;;;;;;:::o;13804:210::-;;13929:2;13918:9;13914:18;13906:26;;13942:65;14004:1;13993:9;13989:17;13980:6;13942:65;:::i;:::-;13896:118;;;;:::o;14020:276::-;;14178:2;14167:9;14163:18;14155:26;;14191:98;14286:1;14275:9;14271:17;14262:6;14191:98;:::i;:::-;14145:151;;;;:::o;14302:313::-;;14453:2;14442:9;14438:18;14430:26;;14502:9;14496:4;14492:20;14488:1;14477:9;14473:17;14466:47;14530:78;14603:4;14594:6;14530:78;:::i;:::-;14522:86;;14420:195;;;;:::o;14621:419::-;;14825:2;14814:9;14810:18;14802:26;;14874:9;14868:4;14864:20;14860:1;14849:9;14845:17;14838:47;14902:131;15028:4;14902:131;:::i;:::-;14894:139;;14792:248;;;:::o;15046:419::-;;15250:2;15239:9;15235:18;15227:26;;15299:9;15293:4;15289:20;15285:1;15274:9;15270:17;15263:47;15327:131;15453:4;15327:131;:::i;:::-;15319:139;;15217:248;;;:::o;15471:419::-;;15675:2;15664:9;15660:18;15652:26;;15724:9;15718:4;15714:20;15710:1;15699:9;15695:17;15688:47;15752:131;15878:4;15752:131;:::i;:::-;15744:139;;15642:248;;;:::o;15896:419::-;;16100:2;16089:9;16085:18;16077:26;;16149:9;16143:4;16139:20;16135:1;16124:9;16120:17;16113:47;16177:131;16303:4;16177:131;:::i;:::-;16169:139;;16067:248;;;:::o;16321:419::-;;16525:2;16514:9;16510:18;16502:26;;16574:9;16568:4;16564:20;16560:1;16549:9;16545:17;16538:47;16602:131;16728:4;16602:131;:::i;:::-;16594:139;;16492:248;;;:::o;16746:419::-;;16950:2;16939:9;16935:18;16927:26;;16999:9;16993:4;16989:20;16985:1;16974:9;16970:17;16963:47;17027:131;17153:4;17027:131;:::i;:::-;17019:139;;16917:248;;;:::o;17171:419::-;;17375:2;17364:9;17360:18;17352:26;;17424:9;17418:4;17414:20;17410:1;17399:9;17395:17;17388:47;17452:131;17578:4;17452:131;:::i;:::-;17444:139;;17342:248;;;:::o;17596:419::-;;17800:2;17789:9;17785:18;17777:26;;17849:9;17843:4;17839:20;17835:1;17824:9;17820:17;17813:47;17877:131;18003:4;17877:131;:::i;:::-;17869:139;;17767:248;;;:::o;18021:419::-;;18225:2;18214:9;18210:18;18202:26;;18274:9;18268:4;18264:20;18260:1;18249:9;18245:17;18238:47;18302:131;18428:4;18302:131;:::i;:::-;18294:139;;18192:248;;;:::o;18446:419::-;;18650:2;18639:9;18635:18;18627:26;;18699:9;18693:4;18689:20;18685:1;18674:9;18670:17;18663:47;18727:131;18853:4;18727:131;:::i;:::-;18719:139;;18617:248;;;:::o;18871:419::-;;19075:2;19064:9;19060:18;19052:26;;19124:9;19118:4;19114:20;19110:1;19099:9;19095:17;19088:47;19152:131;19278:4;19152:131;:::i;:::-;19144:139;;19042:248;;;:::o;19296:419::-;;19500:2;19489:9;19485:18;19477:26;;19549:9;19543:4;19539:20;19535:1;19524:9;19520:17;19513:47;19577:131;19703:4;19577:131;:::i;:::-;19569:139;;19467:248;;;:::o;19721:419::-;;19925:2;19914:9;19910:18;19902:26;;19974:9;19968:4;19964:20;19960:1;19949:9;19945:17;19938:47;20002:131;20128:4;20002:131;:::i;:::-;19994:139;;19892:248;;;:::o;20146:222::-;;20277:2;20266:9;20262:18;20254:26;;20290:71;20358:1;20347:9;20343:17;20334:6;20290:71;:::i;:::-;20244:124;;;;:::o;20374:483::-;;20583:2;20572:9;20568:18;20560:26;;20596:71;20664:1;20653:9;20649:17;20640:6;20596:71;:::i;:::-;20714:9;20708:4;20704:20;20699:2;20688:9;20684:18;20677:48;20742:108;20845:4;20836:6;20742:108;:::i;:::-;20734:116;;20550:307;;;;;:::o;20863:831::-;;21164:3;21153:9;21149:19;21141:27;;21178:71;21246:1;21235:9;21231:17;21222:6;21178:71;:::i;:::-;21259:80;21335:2;21324:9;21320:18;21311:6;21259:80;:::i;:::-;21386:9;21380:4;21376:20;21371:2;21360:9;21356:18;21349:48;21414:108;21517:4;21508:6;21414:108;:::i;:::-;21406:116;;21532:72;21600:2;21589:9;21585:18;21576:6;21532:72;:::i;:::-;21614:73;21682:3;21671:9;21667:19;21658:6;21614:73;:::i;:::-;21131:563;;;;;;;;:::o;21700:214::-;;21827:2;21816:9;21812:18;21804:26;;21840:67;21904:1;21893:9;21889:17;21880:6;21840:67;:::i;:::-;21794:120;;;;:::o;21920:132::-;;22010:3;22002:11;;22040:4;22035:3;22031:14;22023:22;;21992:60;;;:::o;22058:114::-;;22159:5;22153:12;22143:22;;22132:40;;;:::o;22178:99::-;;22264:5;22258:12;22248:22;;22237:40;;;:::o;22283:113::-;;22385:4;22380:3;22376:14;22368:22;;22358:38;;;:::o;22402:184::-;;22535:6;22530:3;22523:19;22575:4;22570:3;22566:14;22551:29;;22513:73;;;;:::o;22592:169::-;;22710:6;22705:3;22698:19;22750:4;22745:3;22741:14;22726:29;;22688:73;;;;:::o;22767:305::-;;22826:20;22844:1;22826:20;:::i;:::-;22821:25;;22860:20;22878:1;22860:20;:::i;:::-;22855:25;;23014:1;22946:66;22942:74;22939:1;22936:81;22933:2;;;23020:18;;:::i;:::-;22933:2;23064:1;23061;23057:9;23050:16;;22811:261;;;;:::o;23078:185::-;;23135:20;23153:1;23135:20;:::i;:::-;23130:25;;23169:20;23187:1;23169:20;:::i;:::-;23164:25;;23208:1;23198:2;;23213:18;;:::i;:::-;23198:2;23255:1;23252;23248:9;23243:14;;23120:143;;;;:::o;23269:348::-;;23332:20;23350:1;23332:20;:::i;:::-;23327:25;;23366:20;23384:1;23366:20;:::i;:::-;23361:25;;23554:1;23486:66;23482:74;23479:1;23476:81;23471:1;23464:9;23457:17;23453:105;23450:2;;;23561:18;;:::i;:::-;23450:2;23609:1;23606;23602:9;23591:20;;23317:300;;;;:::o;23623:191::-;;23683:20;23701:1;23683:20;:::i;:::-;23678:25;;23717:20;23735:1;23717:20;:::i;:::-;23712:25;;23756:1;23753;23750:8;23747:2;;;23761:18;;:::i;:::-;23747:2;23806:1;23803;23799:9;23791:17;;23668:146;;;;:::o;23820:96::-;;23886:24;23904:5;23886:24;:::i;:::-;23875:35;;23865:51;;;:::o;23922:104::-;;23996:24;24014:5;23996:24;:::i;:::-;23985:35;;23975:51;;;:::o;24032:90::-;;24109:5;24102:13;24095:21;24084:32;;24074:48;;;:::o;24128:126::-;;24205:42;24198:5;24194:54;24183:65;;24173:81;;;:::o;24260:77::-;;24326:5;24315:16;;24305:32;;;:::o;24343:86::-;;24418:4;24411:5;24407:16;24396:27;;24386:43;;;:::o;24435:180::-;;24545:64;24603:5;24545:64;:::i;:::-;24532:77;;24522:93;;;:::o;24621:140::-;;24731:24;24749:5;24731:24;:::i;:::-;24718:37;;24708:53;;;:::o;24767:121::-;;24858:24;24876:5;24858:24;:::i;:::-;24845:37;;24835:53;;;:::o;24894:307::-;24962:1;24972:113;24986:6;24983:1;24980:13;24972:113;;;25071:1;25066:3;25062:11;25056:18;25052:1;25047:3;25043:11;25036:39;25008:2;25005:1;25001:10;24996:15;;24972:113;;;25103:6;25100:1;25097:13;25094:2;;;25183:1;25174:6;25169:3;25165:16;25158:27;25094:2;24943:258;;;;:::o;25207:320::-;;25288:1;25282:4;25278:12;25268:22;;25335:1;25329:4;25325:12;25356:18;25346:2;;25412:4;25404:6;25400:17;25390:27;;25346:2;25474;25466:6;25463:14;25443:18;25440:38;25437:2;;;25493:18;;:::i;:::-;25437:2;25258:269;;;;:::o;25533:180::-;25581:77;25578:1;25571:88;25678:4;25675:1;25668:15;25702:4;25699:1;25692:15;25719:180;25767:77;25764:1;25757:88;25864:4;25861:1;25854:15;25888:4;25885:1;25878:15;25905:180;25953:77;25950:1;25943:88;26050:4;26047:1;26040:15;26074:4;26071:1;26064:15;26091:102;;26183:2;26179:7;26174:2;26167:5;26163:14;26159:28;26149:38;;26139:54;;;:::o;26199:222::-;26339:34;26335:1;26327:6;26323:14;26316:58;26408:5;26403:2;26395:6;26391:15;26384:30;26305:116;:::o;26427:225::-;26567:34;26563:1;26555:6;26551:14;26544:58;26636:8;26631:2;26623:6;26619:15;26612:33;26533:119;:::o;26658:221::-;26798:34;26794:1;26786:6;26782:14;26775:58;26867:4;26862:2;26854:6;26850:15;26843:29;26764:115;:::o;26885:177::-;27025:29;27021:1;27013:6;27009:14;27002:53;26991:71;:::o;27068:181::-;27208:33;27204:1;27196:6;27192:14;27185:57;27174:75;:::o;27255:227::-;27395:34;27391:1;27383:6;27379:14;27372:58;27464:10;27459:2;27451:6;27447:15;27440:35;27361:121;:::o;27488:220::-;27628:34;27624:1;27616:6;27612:14;27605:58;27697:3;27692:2;27684:6;27680:15;27673:28;27594:114;:::o;27714:182::-;27854:34;27850:1;27842:6;27838:14;27831:58;27820:76;:::o;27902:228::-;28042:34;28038:1;28030:6;28026:14;28019:58;28111:11;28106:2;28098:6;28094:15;28087:36;28008:122;:::o;28136:224::-;28276:34;28272:1;28264:6;28260:14;28253:58;28345:7;28340:2;28332:6;28328:15;28321:32;28242:118;:::o;28366:223::-;28506:34;28502:1;28494:6;28490:14;28483:58;28575:6;28570:2;28562:6;28558:15;28551:31;28472:117;:::o;28595:181::-;28735:33;28731:1;28723:6;28719:14;28712:57;28701:75;:::o;28782:222::-;28922:34;28918:1;28910:6;28906:14;28899:58;28991:5;28986:2;28978:6;28974:15;28967:30;28888:116;:::o;29010:122::-;29083:24;29101:5;29083:24;:::i;:::-;29076:5;29073:35;29063:2;;29122:1;29119;29112:12;29063:2;29053:79;:::o;29138:116::-;29208:21;29223:5;29208:21;:::i;:::-;29201:5;29198:32;29188:2;;29244:1;29241;29234:12;29188:2;29178:76;:::o;29260:122::-;29333:24;29351:5;29333:24;:::i;:::-;29326:5;29323:35;29313:2;;29372:1;29369;29362:12;29313:2;29303:79;:::o

Swarm Source

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