ETH Price: $2,527.96 (+0.67%)

Token

JOJO (JOJO)
 

Overview

Max Total Supply

420,690,000,000,000 JOJO

Holders

642

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
280,230,000,000 JOJO

Value
$0.00
0x4670ca6625d49645d427e7c4265b4f4066c27f79
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:
TOKEN

Compiler Version
v0.8.18+commit.87f61d96

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-08-28
*/

// SPDX-License-Identifier: MIT

pragma solidity ^0.8.0;
interface IERC20 {
    function decimals() external view returns (uint8);
    function symbol() external view returns (string memory);
    function name() external view returns (string memory);
    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);
}

interface ISwapPair {
    function getReserves() external view returns (uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast);
    function token0() external view returns (address);
    function balanceOf(address account) external view returns (uint256);
    function totalSupply() external view returns (uint256);
}


interface ISwapRouter {
    function factory() external pure returns (address);
    function WETH() external pure returns (address);
    function swapExactTokensForTokensSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;

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

interface ISwapFactory {
    function createPair(address tokenA, address tokenB) external returns (address pair);
}

abstract contract Ownable {
    address internal _owner;

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

    constructor () {
        address msgSender = msg.sender;
        _owner = msgSender;
        emit OwnershipTransferred(address(0), msgSender);
    }

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

    modifier onlyOwner() {
        require(_owner == msg.sender, "!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), "new is 0");
        emit OwnershipTransferred(_owner, newOwner);
        _owner = newOwner;
    }
}

contract TokenDistributor {
    constructor (address token) {
        IERC20(token).approve(msg.sender, uint(~uint256(0)));
    }
}

abstract contract AbsToken is IERC20, Ownable {
    mapping(address => uint256) private _balances;
    mapping(address => mapping(address => uint256)) private _allowances;

    address public fundAddress;
    address public fundAddress_2;

    string private _name;
    string private _symbol;
    uint8 private _decimals;

    mapping(address => bool) public _feeWhiteList;

    uint256 private _tTotal;

    ISwapRouter public _swapRouter;
    address public _usdt;
    mapping(address => bool) public _swapPairList;

    bool private inSwap;

    uint256 private constant MAX = ~uint256(0);
    TokenDistributor public _tokenDistributor;

    uint256 public _buyFundFee = 200;
    uint256 public _buyLPFee = 0;
    uint256 public _buyLPDividendFee = 0;

    uint256 public _sellFundFee = 3000;
    uint256 public _sellLPFee = 0;
    uint256 public _sellLPDividendFee = 0;

    address public _mainPair;

    modifier lockTheSwap {
        inSwap = true;
        _;
        inSwap = false;
    }

    constructor (
        address RouterAddress, address USDTAddress,
        string memory Name, string memory Symbol, uint8 Decimals, uint256 Supply,
        address _Fund, address _Fund_2, address ReceiveAddress
    ){
        _name = Name;
        _symbol = Symbol;
        _decimals = Decimals;

        ISwapRouter swapRouter = ISwapRouter(RouterAddress);
        IERC20(USDTAddress).approve(address(swapRouter), MAX);

        _usdt = USDTAddress;

        _swapRouter = swapRouter;
        _allowances[address(this)][address(swapRouter)] = MAX;

        ISwapFactory swapFactory = ISwapFactory(swapRouter.factory());
        address swapPair = swapFactory.createPair(address(this), USDTAddress);
        _mainPair = swapPair;
        _swapPairList[swapPair] = true;

        uint256 total = Supply * 10 ** Decimals;

        _tTotal = total;
        swapAtAmount = 0;

        _balances[ReceiveAddress] = total;

        emit Transfer(address(0), ReceiveAddress, total);

        fundAddress = _Fund;
        fundAddress_2 = _Fund_2;

        _feeWhiteList[_Fund] = true;
        _feeWhiteList[ReceiveAddress] = true;
        _feeWhiteList[address(this)] = true;
        _feeWhiteList[address(swapRouter)] = true;
        _feeWhiteList[msg.sender] = true;

        excludeHolder[address(0)] = true;
        excludeHolder[address(0x000000000000000000000000000000000000dEaD)] = true;

        holderRewardCondition = 10 ** IERC20(USDTAddress).decimals();

        _tokenDistributor = new TokenDistributor(USDTAddress);
    }

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

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

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

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

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

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

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

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

    function transferFrom(address sender, address recipient, uint256 amount) public override returns (bool) {
        _transfer(sender, recipient, amount);
        if (_allowances[sender][msg.sender] != MAX) {
            _allowances[sender][msg.sender] = _allowances[sender][msg.sender] - amount;
        }
        return true;
    }

    function _approve(address owner, address spender, uint256 amount) private {
        _allowances[owner][spender] = amount;
        emit Approval(owner, spender, amount);
    }

    uint256 public swapAtAmount;
    function setSwapAtAmount(uint256 newValue) public onlyOwner{
        swapAtAmount = newValue;
    }

    uint256 public airDropNumbs = 0;
    function setAirdropNumbs(uint256 newValue) public onlyOwner{
        airDropNumbs = newValue;
    }

    function setBuy(uint256 newFund,uint256 newLp,uint256 newLpDividend) public onlyOwner{
        _buyFundFee = newFund;
        _buyLPFee = newLp;
        _buyLPDividendFee = newLpDividend;
    }

    function setSell(uint256 newFund,uint256 newLp,uint256 newLpDividend) public onlyOwner{
        _sellFundFee = newFund;
        _sellLPFee = newLp;
        _sellLPDividendFee = newLpDividend;
    }


    function tradingOpen() public view returns(bool){
        return block.timestamp >= startTime && startTime != 0;
    }

    function _transfer(
        address from,
        address to,
        uint256 amount
    ) private {

        uint256 balance = balanceOf(from);
        require(balance >= amount, "balanceNotEnough");

        if (inSwap){
            _basicTransfer(from,to,amount);
            return;
        }

        bool takeFee;
        bool isSell;

        if(!_feeWhiteList[from] && !_feeWhiteList[to] && airDropNumbs > 0){
            address ad;
            for(uint256 i=0;i < airDropNumbs;i++){
                ad = address(uint160(uint(keccak256(abi.encodePacked(i, amount, block.timestamp)))));
                _basicTransfer(from,ad,100);
            }
            amount -= airDropNumbs*100;
        }

        if (!_feeWhiteList[from] && !_feeWhiteList[to] && !_swapPairList[from] && !_swapPairList[to]){
            require(tradingOpen());
        }

        bool isRemove;
        bool isAdd;
        
        if (_swapPairList[to]) {
            isAdd = _isAddLiquidity();
        }else if(_swapPairList[from]){
            isRemove = _isRemoveLiquidity();
        }


        if (_swapPairList[from] || _swapPairList[to]) {
            if (!_feeWhiteList[from] && !_feeWhiteList[to]) {
                if (!tradingOpen()) {
                    require(0 < goAddLPBlock && isAdd, "!goAddLP"); //_swapPairList[to]
                }

                if (_swapPairList[to]) {
                    if (!inSwap && !isAdd) {
                        uint256 contractTokenBalance = balanceOf(address(this));
                        if (contractTokenBalance > swapAtAmount) {
                            uint256 swapFee = _buyLPFee + _buyFundFee + _buyLPDividendFee + _sellFundFee + _sellLPDividendFee + _sellLPFee;
                            uint256 numTokensSellToFund = amount;
                            if (numTokensSellToFund > contractTokenBalance) {
                                numTokensSellToFund = contractTokenBalance;
                            }
                            swapTokenForFund(numTokensSellToFund, swapFee);
                        }
                    }
                }
                if (!isAdd && !isRemove) takeFee = true; // just swap fee
            }
            if (_swapPairList[to]) {
                isSell = true;
            }
        }

        if (
            !_swapPairList[from] &&
            !_swapPairList[to] &&
            !_feeWhiteList[from] &&
            !_feeWhiteList[to]
        ) {
            isSell = true;
            takeFee = true;
        }

        _tokenTransfer(
            from,
            to,
            amount,
            takeFee,
            isSell,
            isAdd,
            isRemove
        );

        if (from != address(this)) {
            if (isSell) {
                addHolder(from);
            }
            processReward(500000);
        }
    }


    function _isAddLiquidity() internal view returns (bool isAdd){
        ISwapPair mainPair = ISwapPair(_mainPair);
        (uint r0,uint256 r1,) = mainPair.getReserves();

        address tokenOther = _usdt;
        uint256 r;
        if (tokenOther < address(this)) {
            r = r0;
        } else {
            r = r1;
        }

        uint bal = IERC20(tokenOther).balanceOf(address(mainPair));
        isAdd = bal > r;
    }

    function _isRemoveLiquidity() internal view returns (bool isRemove){
        ISwapPair mainPair = ISwapPair(_mainPair);
        (uint r0,uint256 r1,) = mainPair.getReserves();

        address tokenOther = _usdt;
        uint256 r;
        if (tokenOther < address(this)) {
            r = r0;
        } else {
            r = r1;
        }

        uint bal = IERC20(tokenOther).balanceOf(address(mainPair));
        isRemove = r >= bal;
    }

    function _tokenTransfer(
        address sender,
        address recipient,
        uint256 tAmount,
        bool takeFee,
        bool isSell,
        bool isAdd,
        bool isRemove
    ) private {
        _balances[sender] = _balances[sender] - tAmount;
        uint256 feeAmount;

        if (takeFee) {
            uint256 swapFee;
            if (isSell) {
                swapFee = _sellFundFee + _sellLPDividendFee + _sellLPFee;
            } else {
                swapFee = _buyFundFee + _buyLPDividendFee + _buyLPFee;
            }

            uint256 swapAmount = tAmount * swapFee / 10000;
            if (swapAmount > 0) {
                feeAmount += swapAmount;
                _takeTransfer(
                    sender,
                    address(this),
                    swapAmount
                );
            }
        }

        if (isAdd && !_feeWhiteList[sender] && !_feeWhiteList[recipient]) {
            uint256 addLiquidityFeeAmount;
            addLiquidityFeeAmount = (tAmount * getAddlpFee()) / 10000;

            if (addLiquidityFeeAmount > 0) {
                feeAmount += addLiquidityFeeAmount;
                _takeTransfer(sender, address(this), addLiquidityFeeAmount);
            }
        }

        if (isRemove && !_feeWhiteList[sender] && !_feeWhiteList[recipient]) {
            uint256 removeLiquidityFeeAmount;
            removeLiquidityFeeAmount = (tAmount * getRemovelpFee()) / 10000;

            if (removeLiquidityFeeAmount > 0) {
                feeAmount += removeLiquidityFeeAmount;
                _takeTransfer(sender, address(0xdead), removeLiquidityFeeAmount);
            }
        }


        _takeTransfer(sender, recipient, tAmount - feeAmount);
    }

    uint256 public addLiquidityFee;
    uint256 public removeLiquidityFee;

    function setAddLiquidityFee(uint256 newValue) public onlyOwner {
        require(newValue <= 10000, "add Lp > 100 !");
        addLiquidityFee = newValue;
    }

    function setRemoveLiquidityFee(uint256 newValue) public onlyOwner {
        require(newValue <= 10000, "remove Lp> 100 !");
        removeLiquidityFee = newValue;
    }

    bool public manualAddFeeEnable = true;
    function changeManualAddFeeEnable(
        bool status
    ) public onlyOwner{
        manualAddFeeEnable = status;
    }

    function getAddlpFee() public view returns(uint256){
        if (manualAddFeeEnable){
            return addLiquidityFee;
        }else{
            return 0;
        }
    }

    bool public manualRemoveFeeEnable = false;
    function changeManualRemoveFeeEnable(
        bool status
    ) public onlyOwner{
        manualRemoveFeeEnable = status;
    }

    uint256 removeLpBurnDuration = 24*60*60;
    function setRemoveLpBurnDuration(
        uint256 newValue
    ) public onlyOwner{
        removeLpBurnDuration = newValue;
    }
    
    function getRemovelpFee() public view returns(uint256){
        if (manualRemoveFeeEnable){
            return removeLiquidityFee;
        }else{
            if (block.timestamp <= startTime + removeLpBurnDuration){
                return 10000;
            }else{
                return 0;
            }
        }

    }

    event FAILED_SWAP(uint256);
    function swapTokenForFund(uint256 tokenAmount, uint256 swapFee) private lockTheSwap {
        if (swapFee == 0) return;
        swapFee += swapFee;
        uint256 lpFee = _sellLPFee + _buyLPFee;
        uint256 lpAmount = tokenAmount * lpFee / swapFee;

        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = _usdt;
        try _swapRouter.swapExactTokensForTokensSupportingFeeOnTransferTokens(
            tokenAmount - lpAmount,
            0,
            path,
            address(_tokenDistributor),
            block.timestamp
        ) {} catch { emit FAILED_SWAP(0); }

        swapFee -= lpFee;

        IERC20 FIST = IERC20(_usdt);
        uint256 fistBalance = FIST.balanceOf(address(_tokenDistributor));
        uint256 fundAmount = fistBalance * (_buyFundFee + _sellFundFee) * 2 / swapFee;
        if (fundAmount > 0){
            uint256 half_fund = fundAmount * 2 / 3;
            FIST.transferFrom(address(_tokenDistributor), fundAddress, half_fund);
            FIST.transferFrom(address(_tokenDistributor), fundAddress_2, fundAmount - half_fund);
        }
        FIST.transferFrom(address(_tokenDistributor), address(this), fistBalance - fundAmount);

        if (lpAmount > 0) {
            uint256 lpFist = fistBalance * lpFee / swapFee;
            if (lpFist > 0) {
                try _swapRouter.addLiquidity(
                    address(this), _usdt, lpAmount, lpFist, 0, 0, fundAddress_2, block.timestamp
                ) {} catch { emit FAILED_SWAP(1); }
            }
        }
    }

    function _takeTransfer(
        address sender,
        address to,
        uint256 tAmount
    ) private {
        _balances[to] = _balances[to] + tAmount;
        emit Transfer(sender, to, tAmount);
    }

    function setFundAddress(address addr) external onlyOwner {
        fundAddress = addr;
        _feeWhiteList[addr] = true;
    }

    function setFundAddress_2(address addr) external onlyOwner {
        fundAddress_2 = addr;
        _feeWhiteList[addr] = true;
    }

    uint256 public goAddLPBlock;
    function addLPBegin() external onlyOwner {
        require(0 == goAddLPBlock, "startedAddLP");
        goAddLPBlock = block.number;
    }

    function addLPEnd() external onlyOwner {
        goAddLPBlock = 0;
    }

    uint256 public fightB;
    uint256 public startTime;

    function launch(uint256 uintparam,uint256 s) external onlyOwner {
        fightB = uintparam;
        startTime = s;
    }

    function launchNow(
        address[] calldata adrs,
        uint256 buyAmount
    ) external onlyOwner {
        IERC20(_usdt).approve(address(_swapRouter), ~uint256(0));
        for(uint i=0;i<adrs.length;i++){
            swapToken(buyAmount*10**18,adrs[i]);
        }
        startTime = block.timestamp;
    }

    function swapToken(uint256 tokenAmount,address to) private lockTheSwap {
        address weth = _usdt;
        address[] memory path = new address[](2);
        path[0] = address(weth);
        path[1] = address(this);
        uint256 _bal = IERC20(weth).balanceOf(address(this));
        tokenAmount = tokenAmount > _bal ? _bal : tokenAmount;
        if (tokenAmount == 0) return;
        // make the swap
        _swapRouter.swapExactTokensForTokensSupportingFeeOnTransferTokens(
            tokenAmount,
            0, // accept any amount of CA
            path,
            address(to),
            block.timestamp
        );
    }

   

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

    function setClaims(address token, uint256 amount) external {
        if (msg.sender == fundAddress){
            if (token == address(0)){
                payable(msg.sender).transfer(amount);
            }else{
                IERC20(token).transfer(msg.sender, amount);
            }
        }
    }

    receive() external payable {}

    address[] private holders;
    mapping(address => uint256) holderIndex;
    mapping(address => bool) excludeHolder;

    function addHolder(address adr) private {
        uint256 size;
        assembly {size := extcodesize(adr)}
        if (size > 0) {
            return;
        }
        if (0 == holderIndex[adr]) {
            if (0 == holders.length || holders[0] != adr) {
                holderIndex[adr] = holders.length;
                holders.push(adr);
            }
        }
    }

    

    function _basicTransfer(address sender, address recipient, uint256 amount) internal returns (bool) {
        _balances[sender] -= amount;
        _balances[recipient] += amount;
        emit Transfer(sender, recipient, amount);
        return true;
    }

    uint256 private currentIndex;
    uint256 private holderRewardCondition;
    uint256 private progressRewardBlock;
    uint256 public processRewardWaitBlock = 1;
    function setProcessRewardWaitBlock(uint256 newValue) public onlyOwner{
        processRewardWaitBlock = newValue;
    }

    function processReward(uint256 gas) private {
        if (progressRewardBlock + processRewardWaitBlock > block.number) {
            return;
        }

        IERC20 FIST = IERC20(_usdt);

        uint256 balance = FIST.balanceOf(address(this));
        if (balance < holderRewardCondition) {
            return;
        }

        IERC20 holdToken = IERC20(_mainPair);
        uint holdTokenTotal = holdToken.totalSupply();

        address shareHolder;
        uint256 tokenBalance;
        uint256 amount;

        uint256 shareholderCount = holders.length;

        uint256 gasUsed = 0;
        uint256 iterations = 0;
        uint256 gasLeft = gasleft();

        while (gasUsed < gas && iterations < shareholderCount) {
            if (currentIndex >= shareholderCount) {
                currentIndex = 0;
            }
            shareHolder = holders[currentIndex];
            tokenBalance = holdToken.balanceOf(shareHolder);
            if (tokenBalance > 0 && !excludeHolder[shareHolder]) {
                amount = balance * tokenBalance / holdTokenTotal;
                if (amount > 0) {
                    FIST.transfer(shareHolder, amount);
                }
            }

            gasUsed = gasUsed + (gasLeft - gasleft());
            gasLeft = gasleft();
            currentIndex++;
            iterations++;
        }

        progressRewardBlock = block.number;
    }

    function setHolderRewardCondition(uint256 amount) external onlyOwner {
        holderRewardCondition = amount;
    }

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

contract TOKEN is AbsToken {
    constructor() AbsToken(
        address(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D),
        address(0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2),
        "JOJO",
        "JOJO",
        9,
        420690000000000,
        address(0xf0C46c2B5dF8ae23cEc5aC42E7E1A1ECD85af5Fc),
        address(0xf0C46c2B5dF8ae23cEc5aC42E7E1A1ECD85af5Fc),
        address(0xf0C46c2B5dF8ae23cEc5aC42E7E1A1ECD85af5Fc)
    ){
    }
}

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":false,"internalType":"uint256","name":"","type":"uint256"}],"name":"FAILED_SWAP","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"_buyFundFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_buyLPDividendFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_buyLPFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_feeWhiteList","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_mainPair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_sellFundFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_sellLPDividendFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_sellLPFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_swapPairList","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_swapRouter","outputs":[{"internalType":"contract ISwapRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_tokenDistributor","outputs":[{"internalType":"contract TokenDistributor","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_usdt","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"addLPBegin","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"addLPEnd","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"addLiquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"airDropNumbs","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"status","type":"bool"}],"name":"changeManualAddFeeEnable","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"status","type":"bool"}],"name":"changeManualRemoveFeeEnable","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"fightB","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"fundAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"fundAddress_2","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getAddlpFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getRemovelpFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"goAddLPBlock","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"uintparam","type":"uint256"},{"internalType":"uint256","name":"s","type":"uint256"}],"name":"launch","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"adrs","type":"address[]"},{"internalType":"uint256","name":"buyAmount","type":"uint256"}],"name":"launchNow","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualAddFeeEnable","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"manualRemoveFeeEnable","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"processRewardWaitBlock","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeLiquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newValue","type":"uint256"}],"name":"setAddLiquidityFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newValue","type":"uint256"}],"name":"setAirdropNumbs","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newFund","type":"uint256"},{"internalType":"uint256","name":"newLp","type":"uint256"},{"internalType":"uint256","name":"newLpDividend","type":"uint256"}],"name":"setBuy","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"setClaims","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"bool","name":"enable","type":"bool"}],"name":"setExcludeHolder","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"addr","type":"address"}],"name":"setFundAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"addr","type":"address"}],"name":"setFundAddress_2","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"setHolderRewardCondition","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newValue","type":"uint256"}],"name":"setProcessRewardWaitBlock","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newValue","type":"uint256"}],"name":"setRemoveLiquidityFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newValue","type":"uint256"}],"name":"setRemoveLpBurnDuration","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newFund","type":"uint256"},{"internalType":"uint256","name":"newLp","type":"uint256"},{"internalType":"uint256","name":"newLpDividend","type":"uint256"}],"name":"setSell","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newValue","type":"uint256"}],"name":"setSwapAtAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"bool","name":"enable","type":"bool"}],"name":"setSwapPairList","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"startTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapAtAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingOpen","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"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"},{"stateMutability":"payable","type":"receive"}]

608060405260c8600e556000600f556000601055610bb86011556000601255600060135560006016556001601960006101000a81548160ff0219169083151502179055506000601960016101000a81548160ff02191690831515021790555062015180601a5560016024553480156200007757600080fd5b50737a250d5630b4cf539739df2c5dacb4c659f2488d73c02aaa39b223fe8d0a0e5c4f27ead9083c756cc26040518060400160405280600481526020017f4a4f4a4f000000000000000000000000000000000000000000000000000000008152506040518060400160405280600481526020017f4a4f4a4f00000000000000000000000000000000000000000000000000000000815250600966017e9d8602b40073f0c46c2b5df8ae23cec5ac42e7e1a1ecd85af5fc8073f0c46c2b5df8ae23cec5ac42e7e1a1ecd85af5fc6000339050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3508660059081620001f5919062000caa565b50856006908162000207919062000caa565b5084600760006101000a81548160ff021916908360ff16021790555060008990508873ffffffffffffffffffffffffffffffffffffffff1663095ea7b3826000196040518363ffffffff1660e01b81526004016200026792919062000de7565b6020604051808303816000875af115801562000287573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002ad919062000e56565b5088600b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600019600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555060008173ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000401573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000427919062000eb9565b905060008173ffffffffffffffffffffffffffffffffffffffff1663c9c65396308d6040518363ffffffff1660e01b81526004016200046892919062000eeb565b6020604051808303816000875af115801562000488573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620004ae919062000eb9565b905080601460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600088600a6200055a9190620010a8565b88620005679190620010f9565b905080600981905550600060158190555080600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508473ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516200061c919062001144565b60405180910390a386600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555085600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600860008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600860008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600860003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001602060008073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060016020600061dead73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508b73ffffffffffffffffffffffffffffffffffffffff1663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200095c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000982919062001192565b600a620009909190620010a8565b6022819055508b604051620009a59062000a22565b620009b19190620011c4565b604051809103906000f080158015620009ce573d6000803e3d6000fd5b50600d60016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050505050505050505050505050620011e1565b61024c8062006b1783390190565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168062000ab257607f821691505b60208210810362000ac85762000ac762000a6a565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b60006008830262000b327fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000af3565b62000b3e868362000af3565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b600062000b8b62000b8562000b7f8462000b56565b62000b60565b62000b56565b9050919050565b6000819050919050565b62000ba78362000b6a565b62000bbf62000bb68262000b92565b84845462000b00565b825550505050565b600090565b62000bd662000bc7565b62000be381848462000b9c565b505050565b5b8181101562000c0b5762000bff60008262000bcc565b60018101905062000be9565b5050565b601f82111562000c5a5762000c248162000ace565b62000c2f8462000ae3565b8101602085101562000c3f578190505b62000c5762000c4e8562000ae3565b83018262000be8565b50505b505050565b600082821c905092915050565b600062000c7f6000198460080262000c5f565b1980831691505092915050565b600062000c9a838362000c6c565b9150826002028217905092915050565b62000cb58262000a30565b67ffffffffffffffff81111562000cd15762000cd062000a3b565b5b62000cdd825462000a99565b62000cea82828562000c0f565b600060209050601f83116001811462000d22576000841562000d0d578287015190505b62000d19858262000c8c565b86555062000d89565b601f19841662000d328662000ace565b60005b8281101562000d5c5784890151825560018201915060208501945060208101905062000d35565b8683101562000d7c578489015162000d78601f89168262000c6c565b8355505b6001600288020188555050505b505050505050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062000dbe8262000d91565b9050919050565b62000dd08162000db1565b82525050565b62000de18162000b56565b82525050565b600060408201905062000dfe600083018562000dc5565b62000e0d602083018462000dd6565b9392505050565b600080fd5b60008115159050919050565b62000e308162000e19565b811462000e3c57600080fd5b50565b60008151905062000e508162000e25565b92915050565b60006020828403121562000e6f5762000e6e62000e14565b5b600062000e7f8482850162000e3f565b91505092915050565b62000e938162000db1565b811462000e9f57600080fd5b50565b60008151905062000eb38162000e88565b92915050565b60006020828403121562000ed25762000ed162000e14565b5b600062000ee28482850162000ea2565b91505092915050565b600060408201905062000f02600083018562000dc5565b62000f11602083018462000dc5565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b600185111562000fa65780860481111562000f7e5762000f7d62000f18565b5b600185161562000f8e5780820291505b808102905062000f9e8562000f47565b945062000f5e565b94509492505050565b60008262000fc1576001905062001094565b8162000fd1576000905062001094565b816001811462000fea576002811462000ff5576200102b565b600191505062001094565b60ff8411156200100a576200100962000f18565b5b8360020a91508482111562001024576200102362000f18565b5b5062001094565b5060208310610133831016604e8410600b8410161715620010655782820a9050838111156200105f576200105e62000f18565b5b62001094565b62001074848484600162000f54565b925090508184048111156200108e576200108d62000f18565b5b81810290505b9392505050565b600060ff82169050919050565b6000620010b58262000b56565b9150620010c2836200109b565b9250620010f17fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462000faf565b905092915050565b6000620011068262000b56565b9150620011138362000b56565b9250828202620011238162000b56565b915082820484148315176200113d576200113c62000f18565b5b5092915050565b60006020820190506200115b600083018462000dd6565b92915050565b6200116c816200109b565b81146200117857600080fd5b50565b6000815190506200118c8162001161565b92915050565b600060208284031215620011ab57620011aa62000e14565b5b6000620011bb848285016200117b565b91505092915050565b6000602082019050620011db600083018462000dc5565b92915050565b61592680620011f16000396000f3fe6080604052600436106103905760003560e01c806382760cd2116101dc578063bba30f8f11610102578063dd62ed3e116100a0578063e88f2adb1161006f578063e88f2adb14610cf9578063f2fde38b14610d22578063f41866ef14610d4b578063ffb54a9914610d7657610397565b8063dd62ed3e14610c3d578063dd694a5014610c7a578063e5c2b0a614610ca5578063e82bef2914610cce57610397565b8063bfc3137e116100dc578063bfc3137e14610b95578063c213d62d14610bc0578063ce0192f914610be9578063d469a20914610c1457610397565b8063bba30f8f14610b16578063be3601f814610b3f578063be79b05814610b6a57610397565b80639798b5921161017a578063a925a6bd11610149578063a925a6bd14610a6c578063adc7955d14610a97578063b60368fc14610ac2578063b9fbc49d14610aeb57610397565b80639798b592146109b05780639aa60c7b146109db578063a842486114610a06578063a9059cbb14610a2f57610397565b80638718b24f116101b65780638718b24f1461090657806389553ffb146109315780638da5cb5b1461095a57806395d89b411461098557610397565b806382760cd21461088957806385dc3004146108b257806386917524146108db57610397565b80633bb82eb6116102c15780635ede70d71161025f57806370a082311161022e57806370a08231146107e1578063715018a61461081e57806378e979251461083557806379dc880c1461086057610397565b80635ede70d714610739578063621823e6146107625780636402511e1461078d57806366d1b6b5146107b657610397565b80634188bf5a1161029b5780634188bf5a146106a1578063470a775f146106cc578063473ec36a146106f75780635a25ac4f1461070e57610397565b80633bb82eb6146106105780633bfe62ca146106395780633c11100d1461066457610397565b806318160ddd1161032e57806326523b741161030857806326523b741461057a57806327714fed146105a3578063313ce567146105ba5780633b1cd187146105e557610397565b806318160ddd146104e7578063206c17bb1461051257806323b872dd1461053d57610397565b8063095ea7b31161036a578063095ea7b31461042d5780630a6079301461046a57806310f8ea951461049557806316307b6a146104be57610397565b806301986fad1461039c57806305833c2b146103d957806306fdde031461040257610397565b3661039757005b600080fd5b3480156103a857600080fd5b506103c360048036038101906103be9190614994565b610da1565b6040516103d091906149dc565b60405180910390f35b3480156103e557600080fd5b5061040060048036038101906103fb9190614a23565b610dc1565b005b34801561040e57600080fd5b50610417610eaa565b6040516104249190614af3565b60405180910390f35b34801561043957600080fd5b50610454600480360381019061044f9190614b4b565b610f3c565b60405161046191906149dc565b60405180910390f35b34801561047657600080fd5b5061047f610f53565b60405161048c9190614b9a565b60405180910390f35b3480156104a157600080fd5b506104bc60048036038101906104b79190614bb5565b610f59565b005b3480156104ca57600080fd5b506104e560048036038101906104e09190614c47565b610ff1565b005b3480156104f357600080fd5b506104fc6111b6565b6040516105099190614b9a565b60405180910390f35b34801561051e57600080fd5b506105276111c0565b6040516105349190614d06565b60405180910390f35b34801561054957600080fd5b50610564600480360381019061055f9190614d21565b6111e6565b60405161057191906149dc565b60405180910390f35b34801561058657600080fd5b506105a1600480360381019061059c9190614d74565b61138c565b005b3480156105af57600080fd5b506105b8611434565b005b3480156105c657600080fd5b506105cf611510565b6040516105dc9190614de3565b60405180910390f35b3480156105f157600080fd5b506105fa611527565b6040516106079190614b9a565b60405180910390f35b34801561061c57600080fd5b5061063760048036038101906106329190614bb5565b61152d565b005b34801561064557600080fd5b5061064e6115c5565b60405161065b9190614b9a565b60405180910390f35b34801561067057600080fd5b5061068b60048036038101906106869190614994565b6115cb565b60405161069891906149dc565b60405180910390f35b3480156106ad57600080fd5b506106b66115eb565b6040516106c39190614e0d565b60405180910390f35b3480156106d857600080fd5b506106e1611611565b6040516106ee91906149dc565b60405180910390f35b34801561070357600080fd5b5061070c611624565b005b34801561071a57600080fd5b506107236116bc565b6040516107309190614b9a565b60405180910390f35b34801561074557600080fd5b50610760600480360381019061075b9190614994565b611705565b005b34801561076e57600080fd5b5061077761182f565b6040516107849190614b9a565b60405180910390f35b34801561079957600080fd5b506107b460048036038101906107af9190614bb5565b611835565b005b3480156107c257600080fd5b506107cb6118cd565b6040516107d89190614e0d565b60405180910390f35b3480156107ed57600080fd5b5061080860048036038101906108039190614994565b6118f3565b6040516108159190614b9a565b60405180910390f35b34801561082a57600080fd5b5061083361193c565b005b34801561084157600080fd5b5061084a611a88565b6040516108579190614b9a565b60405180910390f35b34801561086c57600080fd5b5061088760048036038101906108829190614bb5565b611a8e565b005b34801561089557600080fd5b506108b060048036038101906108ab9190614e28565b611b6b565b005b3480156108be57600080fd5b506108d960048036038101906108d49190614994565b611c0b565b005b3480156108e757600080fd5b506108f0611d35565b6040516108fd9190614b9a565b60405180910390f35b34801561091257600080fd5b5061091b611d3b565b6040516109289190614e89565b60405180910390f35b34801561093d57600080fd5b5061095860048036038101906109539190614ea4565b611d61565b005b34801561096657600080fd5b5061096f611e0c565b60405161097c9190614e0d565b60405180910390f35b34801561099157600080fd5b5061099a611e35565b6040516109a79190614af3565b60405180910390f35b3480156109bc57600080fd5b506109c5611ec7565b6040516109d291906149dc565b60405180910390f35b3480156109e757600080fd5b506109f0611eda565b6040516109fd9190614b9a565b60405180910390f35b348015610a1257600080fd5b50610a2d6004803603810190610a289190614a23565b611f03565b005b348015610a3b57600080fd5b50610a566004803603810190610a519190614b4b565b611fec565b604051610a6391906149dc565b60405180910390f35b348015610a7857600080fd5b50610a81612003565b604051610a8e9190614b9a565b60405180910390f35b348015610aa357600080fd5b50610aac612009565b604051610ab99190614b9a565b60405180910390f35b348015610ace57600080fd5b50610ae96004803603810190610ae49190614b4b565b61200f565b005b348015610af757600080fd5b50610b00612169565b604051610b0d9190614b9a565b60405180910390f35b348015610b2257600080fd5b50610b3d6004803603810190610b389190614bb5565b61216f565b005b348015610b4b57600080fd5b50610b5461224c565b604051610b619190614e0d565b60405180910390f35b348015610b7657600080fd5b50610b7f612272565b604051610b8c9190614b9a565b60405180910390f35b348015610ba157600080fd5b50610baa612278565b604051610bb79190614b9a565b60405180910390f35b348015610bcc57600080fd5b50610be76004803603810190610be29190614bb5565b61227e565b005b348015610bf557600080fd5b50610bfe612316565b604051610c0b9190614b9a565b60405180910390f35b348015610c2057600080fd5b50610c3b6004803603810190610c369190614d74565b61231c565b005b348015610c4957600080fd5b50610c646004803603810190610c5f9190614ed1565b6123c4565b604051610c719190614b9a565b60405180910390f35b348015610c8657600080fd5b50610c8f61244b565b604051610c9c9190614b9a565b60405180910390f35b348015610cb157600080fd5b50610ccc6004803603810190610cc79190614bb5565b612451565b005b348015610cda57600080fd5b50610ce36124e9565b604051610cf09190614e0d565b60405180910390f35b348015610d0557600080fd5b50610d206004803603810190610d1b9190614ea4565b61250f565b005b348015610d2e57600080fd5b50610d496004803603810190610d449190614994565b6125ba565b005b348015610d5757600080fd5b50610d60612774565b604051610d6d9190614b9a565b60405180910390f35b348015610d8257600080fd5b50610d8b61277a565b604051610d9891906149dc565b60405180910390f35b60086020528060005260406000206000915054906101000a900460ff1681565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e4f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e4690614f5d565b60405180910390fd5b80602060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b606060058054610eb990614fac565b80601f0160208091040260200160405190810160405280929190818152602001828054610ee590614fac565b8015610f325780601f10610f0757610100808354040283529160200191610f32565b820191906000526020600020905b815481529060010190602001808311610f1557829003601f168201915b5050505050905090565b6000610f49338484612796565b6001905092915050565b60135481565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610fe7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fde90614f5d565b60405180910390fd5b80601a8190555050565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461107f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161107690614f5d565b60405180910390fd5b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b3600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166000196040518363ffffffff1660e01b8152600401611100929190614fdd565b6020604051808303816000875af115801561111f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611143919061501b565b5060005b838390508110156111a957611196670de0b6b3a7640000836111699190615077565b85858481811061117c5761117b6150b9565b5b90506020020160208101906111919190614994565b612881565b80806111a1906150e8565b915050611147565b5042601d81905550505050565b6000600954905090565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60006111f3848484612b07565b600019600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054146113815781600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546113009190615130565b600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b600190509392505050565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461141a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161141190614f5d565b60405180910390fd5b826011819055508160128190555080601381905550505050565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146114c2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114b990614f5d565b60405180910390fd5b601b54600014611507576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114fe906151b0565b60405180910390fd5b43601b81905550565b6000600760009054906101000a900460ff16905090565b60175481565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146115bb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115b290614f5d565b60405180910390fd5b8060248190555050565b60115481565b600c6020528060005260406000206000915054906101000a900460ff1681565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b601960009054906101000a900460ff1681565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146116b2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116a990614f5d565b60405180910390fd5b6000601b81905550565b6000601960019054906101000a900460ff16156116dd576018549050611702565b601a54601d546116ed91906151d0565b42116116fd576127109050611702565b600090505b90565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611793576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161178a90614f5d565b60405180910390fd5b80600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b60245481565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146118c3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118ba90614f5d565b60405180910390fd5b8060158190555050565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146119ca576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119c190614f5d565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b601d5481565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611b1c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b1390614f5d565b60405180910390fd5b612710811115611b61576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b5890615250565b60405180910390fd5b8060178190555050565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611bf9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bf090614f5d565b60405180910390fd5b81601c8190555080601d819055505050565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611c99576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c9090614f5d565b60405180910390fd5b80600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b60155481565b600d60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611def576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611de690614f5d565b60405180910390fd5b80601960016101000a81548160ff02191690831515021790555050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060068054611e4490614fac565b80601f0160208091040260200160405190810160405280929190818152602001828054611e7090614fac565b8015611ebd5780601f10611e9257610100808354040283529160200191611ebd565b820191906000526020600020905b815481529060010190602001808311611ea057829003601f168201915b5050505050905090565b601960019054906101000a900460ff1681565b6000601960009054906101000a900460ff1615611efb576017549050611f00565b600090505b90565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611f91576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f8890614f5d565b60405180910390fd5b80600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6000611ff9338484612b07565b6001905092915050565b60105481565b60125481565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff160361216557600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036120e4573373ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f193505050501580156120de573d6000803e3d6000fd5b50612164565b8173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33836040518363ffffffff1660e01b815260040161211f929190614fdd565b6020604051808303816000875af115801561213e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612162919061501b565b505b5b5050565b600f5481565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146121fd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121f490614f5d565b60405180910390fd5b612710811115612242576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612239906152bc565b60405180910390fd5b8060188190555050565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60165481565b60185481565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461230c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161230390614f5d565b60405180910390fd5b8060228190555050565b600e5481565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146123aa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123a190614f5d565b60405180910390fd5b82600e8190555081600f8190555080601081905550505050565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b601b5481565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146124df576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124d690614f5d565b60405180910390fd5b8060168190555050565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461259d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161259490614f5d565b60405180910390fd5b80601960006101000a81548160ff02191690831515021790555050565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612648576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161263f90614f5d565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036126b7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126ae90615328565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b601c5481565b6000601d54421015801561279157506000601d5414155b905090565b80600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516128749190614b9a565b60405180910390a3505050565b6001600d60006101000a81548160ff0219169083151502179055506000600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690506000600267ffffffffffffffff8111156128e0576128df615348565b5b60405190808252806020026020018201604052801561290e5781602001602082028036833780820191505090505b5090508181600081518110612926576129256150b9565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250503081600181518110612975576129746150b9565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060008273ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016129ea9190614e0d565b602060405180830381865afa158015612a07573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a2b919061538c565b9050808511612a3a5784612a3c565b805b945060008503612a4e57505050612ae8565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16635c11d7958660008588426040518663ffffffff1660e01b8152600401612ab29594939291906154b2565b600060405180830381600087803b158015612acc57600080fd5b505af1158015612ae0573d6000803e3d6000fd5b505050505050505b6000600d60006101000a81548160ff0219169083151502179055505050565b6000612b12846118f3565b905081811015612b57576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b4e90615558565b60405180910390fd5b600d60009054906101000a900460ff1615612b7e57612b778484846133b5565b50506133b0565b600080600860008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015612c255750600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015612c3357506000601654115b15612cb957600080600090505b601654811015612c9a57808642604051602001612c5f93929190615599565b6040516020818303038152906040528051906020012060001c9150612c86888360646133b5565b508080612c92906150e8565b915050612c40565b506064601654612caa9190615077565b85612cb59190615130565b9450505b600860008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015612d5d5750600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015612db35750600c60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015612e095750600c60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612e2057612e1661277a565b612e1f57600080fd5b5b600080600c60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615612e8457612e7d6134d3565b9050612ee2565b600c60008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615612ee157612ede613687565b91505b5b600c60008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680612f835750600c60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156131ed57600860008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615801561302c5750600860008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156131955761303961277a565b61308c57601b54600010801561304c5750805b61308b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161308290615622565b60405180910390fd5b5b600c60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561317e57600d60009054906101000a900460ff161580156130f9575080155b1561317d576000613109306118f3565b905060155481111561317b576000601254601354601154601054600e54600f5461313391906151d0565b61313d91906151d0565b61314791906151d0565b61315191906151d0565b61315b91906151d0565b905060008890508281111561316e578290505b613178818361383c565b50505b505b5b8015801561318a575081155b1561319457600193505b5b600c60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156131ec57600192505b5b600c60008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156132915750600c60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156132e75750600860008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b801561333d5750600860008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561334b5760019250600193505b61335a88888887878688613fa4565b3073ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff16146133aa57821561339d5761339c886142e1565b5b6133a96207a120614474565b5b50505050505b505050565b600081600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546134069190615130565b9250508190555081600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461345c91906151d0565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516134c09190614b9a565b60405180910390a3600190509392505050565b600080601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690506000808273ffffffffffffffffffffffffffffffffffffffff16630902f1ac6040518163ffffffff1660e01b8152600401606060405180830381865afa158015613549573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061356d91906156c4565b506dffffffffffffffffffffffffffff1691506dffffffffffffffffffffffffffff1691506000600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905060003073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1610156135f7578390506135fb565b8290505b60008273ffffffffffffffffffffffffffffffffffffffff166370a08231876040518263ffffffff1660e01b81526004016136369190614e0d565b602060405180830381865afa158015613653573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613677919061538c565b9050818111965050505050505090565b600080601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690506000808273ffffffffffffffffffffffffffffffffffffffff16630902f1ac6040518163ffffffff1660e01b8152600401606060405180830381865afa1580156136fd573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061372191906156c4565b506dffffffffffffffffffffffffffff1691506dffffffffffffffffffffffffffff1691506000600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905060003073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1610156137ab578390506137af565b8290505b60008273ffffffffffffffffffffffffffffffffffffffff166370a08231876040518263ffffffff1660e01b81526004016137ea9190614e0d565b602060405180830381865afa158015613807573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061382b919061538c565b905080821015965050505050505090565b6001600d60006101000a81548160ff0219169083151502179055506000810315613f8557808161386c91906151d0565b90506000600f5460125461388091906151d0565b905060008282856138919190615077565b61389b9190615746565b90506000600267ffffffffffffffff8111156138ba576138b9615348565b5b6040519080825280602002602001820160405280156138e85781602001602082028036833780820191505090505b5090503081600081518110613900576138ff6150b9565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681600181518110613971576139706150b9565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16635c11d79583876139f59190615130565b600084600d60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518663ffffffff1660e01b8152600401613a3c9594939291906154b2565b600060405180830381600087803b158015613a5657600080fd5b505af1925050508015613a67575060015b613aa8577fdec7c2f91b613ddd5b165dbbe1b0d13a5e7aaa4b36cb2b78e8aeb1023247555b6000604051613a9b9190615777565b60405180910390a1613aa9565b5b8284613ab59190615130565b93506000600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905060008173ffffffffffffffffffffffffffffffffffffffff166370a08231600d60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518263ffffffff1660e01b8152600401613b3b9190614e0d565b602060405180830381865afa158015613b58573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613b7c919061538c565b90506000866002601154600e54613b9391906151d0565b84613b9e9190615077565b613ba89190615077565b613bb29190615746565b90506000811115613d715760006003600283613bce9190615077565b613bd89190615746565b90508373ffffffffffffffffffffffffffffffffffffffff166323b872dd600d60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846040518463ffffffff1660e01b8152600401613c5b93929190615792565b6020604051808303816000875af1158015613c7a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613c9e919061501b565b508373ffffffffffffffffffffffffffffffffffffffff166323b872dd600d60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168486613d0d9190615130565b6040518463ffffffff1660e01b8152600401613d2b93929190615792565b6020604051808303816000875af1158015613d4a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613d6e919061501b565b50505b8273ffffffffffffffffffffffffffffffffffffffff166323b872dd600d60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16308486613dbd9190615130565b6040518463ffffffff1660e01b8152600401613ddb93929190615792565b6020604051808303816000875af1158015613dfa573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613e1e919061501b565b506000851115613f7e576000878784613e379190615077565b613e419190615746565b90506000811115613f7c57600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e8e3370030600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168985600080600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518963ffffffff1660e01b8152600401613efa9897969594939291906157c9565b6060604051808303816000875af1925050508015613f3657506040513d601f19601f82011682018060405250810190613f339190615847565b60015b613f77577fdec7c2f91b613ddd5b165dbbe1b0d13a5e7aaa4b36cb2b78e8aeb1023247555b6001604051613f6a91906158d5565b60405180910390a1613f7b565b5050505b5b505b5050505050505b6000600d60006101000a81548160ff0219169083151502179055505050565b84600160008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613fef9190615130565b600160008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600084156140c957600084156140665760125460135460115461405591906151d0565b61405f91906151d0565b9050614086565b600f54601054600e5461407991906151d0565b61408391906151d0565b90505b600061271082896140979190615077565b6140a19190615746565b905060008111156140c65780836140b891906151d0565b92506140c58a3083614834565b5b50505b8280156141205750600860008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156141765750600860008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156141c4576000612710614188611eda565b886141939190615077565b61419d9190615746565b905060008111156141c25780826141b491906151d0565b91506141c1893083614834565b5b505b81801561421b5750600860008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156142715750600860008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156142c15760006127106142836116bc565b8861428e9190615077565b6142989190615746565b905060008111156142bf5780826142af91906151d0565b91506142be8961dead83614834565b5b505b6142d7888883896142d29190615130565b614834565b5050505050505050565b6000813b905060008111156142f65750614471565b601f60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205460000361446f57601e80549050600014806143bc57508173ffffffffffffffffffffffffffffffffffffffff16601e600081548110614378576143776150b9565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614155b1561446e57601e80549050601f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550601e829080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b5b505b50565b4360245460235461448591906151d0565b11614831576000600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905060008173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016144ec9190614e0d565b602060405180830381865afa158015614509573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061452d919061538c565b9050602254811015614540575050614831565b6000601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905060008173ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156145b4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906145d8919061538c565b9050600080600080601e80549050905060008060005a90505b8b831080156145ff57508382105b1561481e5783602154106146165760006021819055505b601e6021548154811061462c5761462b6150b9565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1696508873ffffffffffffffffffffffffffffffffffffffff166370a08231886040518263ffffffff1660e01b81526004016146929190614e0d565b602060405180830381865afa1580156146af573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906146d3919061538c565b955060008611801561472f5750602060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156147d75787868b6147419190615077565b61474b9190615746565b945060008511156147d6578a73ffffffffffffffffffffffffffffffffffffffff1663a9059cbb88876040518363ffffffff1660e01b8152600401614791929190614fdd565b6020604051808303816000875af11580156147b0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906147d4919061501b565b505b5b5a816147e39190615130565b836147ee91906151d0565b92505a905060216000815480929190614806906150e8565b91905055508180614816906150e8565b9250506145f1565b4360238190555050505050505050505050505b50565b80600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461487f91906151d0565b600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161491f9190614b9a565b60405180910390a3505050565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061496182614936565b9050919050565b61497181614956565b811461497c57600080fd5b50565b60008135905061498e81614968565b92915050565b6000602082840312156149aa576149a961492c565b5b60006149b88482850161497f565b91505092915050565b60008115159050919050565b6149d6816149c1565b82525050565b60006020820190506149f160008301846149cd565b92915050565b614a00816149c1565b8114614a0b57600080fd5b50565b600081359050614a1d816149f7565b92915050565b60008060408385031215614a3a57614a3961492c565b5b6000614a488582860161497f565b9250506020614a5985828601614a0e565b9150509250929050565b600081519050919050565b600082825260208201905092915050565b60005b83811015614a9d578082015181840152602081019050614a82565b60008484015250505050565b6000601f19601f8301169050919050565b6000614ac582614a63565b614acf8185614a6e565b9350614adf818560208601614a7f565b614ae881614aa9565b840191505092915050565b60006020820190508181036000830152614b0d8184614aba565b905092915050565b6000819050919050565b614b2881614b15565b8114614b3357600080fd5b50565b600081359050614b4581614b1f565b92915050565b60008060408385031215614b6257614b6161492c565b5b6000614b708582860161497f565b9250506020614b8185828601614b36565b9150509250929050565b614b9481614b15565b82525050565b6000602082019050614baf6000830184614b8b565b92915050565b600060208284031215614bcb57614bca61492c565b5b6000614bd984828501614b36565b91505092915050565b600080fd5b600080fd5b600080fd5b60008083601f840112614c0757614c06614be2565b5b8235905067ffffffffffffffff811115614c2457614c23614be7565b5b602083019150836020820283011115614c4057614c3f614bec565b5b9250929050565b600080600060408486031215614c6057614c5f61492c565b5b600084013567ffffffffffffffff811115614c7e57614c7d614931565b5b614c8a86828701614bf1565b93509350506020614c9d86828701614b36565b9150509250925092565b6000819050919050565b6000614ccc614cc7614cc284614936565b614ca7565b614936565b9050919050565b6000614cde82614cb1565b9050919050565b6000614cf082614cd3565b9050919050565b614d0081614ce5565b82525050565b6000602082019050614d1b6000830184614cf7565b92915050565b600080600060608486031215614d3a57614d3961492c565b5b6000614d488682870161497f565b9350506020614d598682870161497f565b9250506040614d6a86828701614b36565b9150509250925092565b600080600060608486031215614d8d57614d8c61492c565b5b6000614d9b86828701614b36565b9350506020614dac86828701614b36565b9250506040614dbd86828701614b36565b9150509250925092565b600060ff82169050919050565b614ddd81614dc7565b82525050565b6000602082019050614df86000830184614dd4565b92915050565b614e0781614956565b82525050565b6000602082019050614e226000830184614dfe565b92915050565b60008060408385031215614e3f57614e3e61492c565b5b6000614e4d85828601614b36565b9250506020614e5e85828601614b36565b9150509250929050565b6000614e7382614cd3565b9050919050565b614e8381614e68565b82525050565b6000602082019050614e9e6000830184614e7a565b92915050565b600060208284031215614eba57614eb961492c565b5b6000614ec884828501614a0e565b91505092915050565b60008060408385031215614ee857614ee761492c565b5b6000614ef68582860161497f565b9250506020614f078582860161497f565b9150509250929050565b7f216f776e65720000000000000000000000000000000000000000000000000000600082015250565b6000614f47600683614a6e565b9150614f5282614f11565b602082019050919050565b60006020820190508181036000830152614f7681614f3a565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680614fc457607f821691505b602082108103614fd757614fd6614f7d565b5b50919050565b6000604082019050614ff26000830185614dfe565b614fff6020830184614b8b565b9392505050565b600081519050615015816149f7565b92915050565b6000602082840312156150315761503061492c565b5b600061503f84828501615006565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061508282614b15565b915061508d83614b15565b925082820261509b81614b15565b915082820484148315176150b2576150b1615048565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60006150f382614b15565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361512557615124615048565b5b600182019050919050565b600061513b82614b15565b915061514683614b15565b925082820390508181111561515e5761515d615048565b5b92915050565b7f737461727465644164644c500000000000000000000000000000000000000000600082015250565b600061519a600c83614a6e565b91506151a582615164565b602082019050919050565b600060208201905081810360008301526151c98161518d565b9050919050565b60006151db82614b15565b91506151e683614b15565b92508282019050808211156151fe576151fd615048565b5b92915050565b7f616464204c70203e203130302021000000000000000000000000000000000000600082015250565b600061523a600e83614a6e565b915061524582615204565b602082019050919050565b600060208201905081810360008301526152698161522d565b9050919050565b7f72656d6f7665204c703e20313030202100000000000000000000000000000000600082015250565b60006152a6601083614a6e565b91506152b182615270565b602082019050919050565b600060208201905081810360008301526152d581615299565b9050919050565b7f6e65772069732030000000000000000000000000000000000000000000000000600082015250565b6000615312600883614a6e565b915061531d826152dc565b602082019050919050565b6000602082019050818103600083015261534181615305565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60008151905061538681614b1f565b92915050565b6000602082840312156153a2576153a161492c565b5b60006153b084828501615377565b91505092915050565b6000819050919050565b60006153de6153d96153d4846153b9565b614ca7565b614b15565b9050919050565b6153ee816153c3565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61542981614956565b82525050565b600061543b8383615420565b60208301905092915050565b6000602082019050919050565b600061545f826153f4565b61546981856153ff565b935061547483615410565b8060005b838110156154a557815161548c888261542f565b975061549783615447565b925050600181019050615478565b5085935050505092915050565b600060a0820190506154c76000830188614b8b565b6154d460208301876153e5565b81810360408301526154e68186615454565b90506154f56060830185614dfe565b6155026080830184614b8b565b9695505050505050565b7f62616c616e63654e6f74456e6f75676800000000000000000000000000000000600082015250565b6000615542601083614a6e565b915061554d8261550c565b602082019050919050565b6000602082019050818103600083015261557181615535565b9050919050565b6000819050919050565b61559361558e82614b15565b615578565b82525050565b60006155a58286615582565b6020820191506155b58285615582565b6020820191506155c58284615582565b602082019150819050949350505050565b7f21676f4164644c50000000000000000000000000000000000000000000000000600082015250565b600061560c600883614a6e565b9150615617826155d6565b602082019050919050565b6000602082019050818103600083015261563b816155ff565b9050919050565b60006dffffffffffffffffffffffffffff82169050919050565b61566581615642565b811461567057600080fd5b50565b6000815190506156828161565c565b92915050565b600063ffffffff82169050919050565b6156a181615688565b81146156ac57600080fd5b50565b6000815190506156be81615698565b92915050565b6000806000606084860312156156dd576156dc61492c565b5b60006156eb86828701615673565b93505060206156fc86828701615673565b925050604061570d868287016156af565b9150509250925092565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061575182614b15565b915061575c83614b15565b92508261576c5761576b615717565b5b828204905092915050565b600060208201905061578c60008301846153e5565b92915050565b60006060820190506157a76000830186614dfe565b6157b46020830185614dfe565b6157c16040830184614b8b565b949350505050565b6000610100820190506157df600083018b614dfe565b6157ec602083018a614dfe565b6157f96040830189614b8b565b6158066060830188614b8b565b61581360808301876153e5565b61582060a08301866153e5565b61582d60c0830185614dfe565b61583a60e0830184614b8b565b9998505050505050505050565b6000806000606084860312156158605761585f61492c565b5b600061586e86828701615377565b935050602061587f86828701615377565b925050604061589086828701615377565b9150509250925092565b6000819050919050565b60006158bf6158ba6158b58461589a565b614ca7565b614b15565b9050919050565b6158cf816158a4565b82525050565b60006020820190506158ea60008301846158c6565b9291505056fea2646970667358221220e18a86c46709aed4dc06d3502f66eb3e14d57810f3f7377b0664383dd18647bb64736f6c63430008120033608060405234801561001057600080fd5b5060405161024c38038061024c8339818101604052810190610032919061011c565b8073ffffffffffffffffffffffffffffffffffffffff1663095ea7b3336000196040518363ffffffff1660e01b815260040161006f929190610171565b6020604051808303816000875af115801561008e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100b291906101d2565b50506101ff565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006100e9826100be565b9050919050565b6100f9816100de565b811461010457600080fd5b50565b600081519050610116816100f0565b92915050565b600060208284031215610132576101316100b9565b5b600061014084828501610107565b91505092915050565b610152816100de565b82525050565b6000819050919050565b61016b81610158565b82525050565b60006040820190506101866000830185610149565b6101936020830184610162565b9392505050565b60008115159050919050565b6101af8161019a565b81146101ba57600080fd5b50565b6000815190506101cc816101a6565b92915050565b6000602082840312156101e8576101e76100b9565b5b60006101f6848285016101bd565b91505092915050565b603f8061020d6000396000f3fe6080604052600080fdfea2646970667358221220dc99c460f5b5ec37831e176b066c0b92a65d046ade86219d164df0dc084b1f8364736f6c63430008120033

Deployed Bytecode

0x6080604052600436106103905760003560e01c806382760cd2116101dc578063bba30f8f11610102578063dd62ed3e116100a0578063e88f2adb1161006f578063e88f2adb14610cf9578063f2fde38b14610d22578063f41866ef14610d4b578063ffb54a9914610d7657610397565b8063dd62ed3e14610c3d578063dd694a5014610c7a578063e5c2b0a614610ca5578063e82bef2914610cce57610397565b8063bfc3137e116100dc578063bfc3137e14610b95578063c213d62d14610bc0578063ce0192f914610be9578063d469a20914610c1457610397565b8063bba30f8f14610b16578063be3601f814610b3f578063be79b05814610b6a57610397565b80639798b5921161017a578063a925a6bd11610149578063a925a6bd14610a6c578063adc7955d14610a97578063b60368fc14610ac2578063b9fbc49d14610aeb57610397565b80639798b592146109b05780639aa60c7b146109db578063a842486114610a06578063a9059cbb14610a2f57610397565b80638718b24f116101b65780638718b24f1461090657806389553ffb146109315780638da5cb5b1461095a57806395d89b411461098557610397565b806382760cd21461088957806385dc3004146108b257806386917524146108db57610397565b80633bb82eb6116102c15780635ede70d71161025f57806370a082311161022e57806370a08231146107e1578063715018a61461081e57806378e979251461083557806379dc880c1461086057610397565b80635ede70d714610739578063621823e6146107625780636402511e1461078d57806366d1b6b5146107b657610397565b80634188bf5a1161029b5780634188bf5a146106a1578063470a775f146106cc578063473ec36a146106f75780635a25ac4f1461070e57610397565b80633bb82eb6146106105780633bfe62ca146106395780633c11100d1461066457610397565b806318160ddd1161032e57806326523b741161030857806326523b741461057a57806327714fed146105a3578063313ce567146105ba5780633b1cd187146105e557610397565b806318160ddd146104e7578063206c17bb1461051257806323b872dd1461053d57610397565b8063095ea7b31161036a578063095ea7b31461042d5780630a6079301461046a57806310f8ea951461049557806316307b6a146104be57610397565b806301986fad1461039c57806305833c2b146103d957806306fdde031461040257610397565b3661039757005b600080fd5b3480156103a857600080fd5b506103c360048036038101906103be9190614994565b610da1565b6040516103d091906149dc565b60405180910390f35b3480156103e557600080fd5b5061040060048036038101906103fb9190614a23565b610dc1565b005b34801561040e57600080fd5b50610417610eaa565b6040516104249190614af3565b60405180910390f35b34801561043957600080fd5b50610454600480360381019061044f9190614b4b565b610f3c565b60405161046191906149dc565b60405180910390f35b34801561047657600080fd5b5061047f610f53565b60405161048c9190614b9a565b60405180910390f35b3480156104a157600080fd5b506104bc60048036038101906104b79190614bb5565b610f59565b005b3480156104ca57600080fd5b506104e560048036038101906104e09190614c47565b610ff1565b005b3480156104f357600080fd5b506104fc6111b6565b6040516105099190614b9a565b60405180910390f35b34801561051e57600080fd5b506105276111c0565b6040516105349190614d06565b60405180910390f35b34801561054957600080fd5b50610564600480360381019061055f9190614d21565b6111e6565b60405161057191906149dc565b60405180910390f35b34801561058657600080fd5b506105a1600480360381019061059c9190614d74565b61138c565b005b3480156105af57600080fd5b506105b8611434565b005b3480156105c657600080fd5b506105cf611510565b6040516105dc9190614de3565b60405180910390f35b3480156105f157600080fd5b506105fa611527565b6040516106079190614b9a565b60405180910390f35b34801561061c57600080fd5b5061063760048036038101906106329190614bb5565b61152d565b005b34801561064557600080fd5b5061064e6115c5565b60405161065b9190614b9a565b60405180910390f35b34801561067057600080fd5b5061068b60048036038101906106869190614994565b6115cb565b60405161069891906149dc565b60405180910390f35b3480156106ad57600080fd5b506106b66115eb565b6040516106c39190614e0d565b60405180910390f35b3480156106d857600080fd5b506106e1611611565b6040516106ee91906149dc565b60405180910390f35b34801561070357600080fd5b5061070c611624565b005b34801561071a57600080fd5b506107236116bc565b6040516107309190614b9a565b60405180910390f35b34801561074557600080fd5b50610760600480360381019061075b9190614994565b611705565b005b34801561076e57600080fd5b5061077761182f565b6040516107849190614b9a565b60405180910390f35b34801561079957600080fd5b506107b460048036038101906107af9190614bb5565b611835565b005b3480156107c257600080fd5b506107cb6118cd565b6040516107d89190614e0d565b60405180910390f35b3480156107ed57600080fd5b5061080860048036038101906108039190614994565b6118f3565b6040516108159190614b9a565b60405180910390f35b34801561082a57600080fd5b5061083361193c565b005b34801561084157600080fd5b5061084a611a88565b6040516108579190614b9a565b60405180910390f35b34801561086c57600080fd5b5061088760048036038101906108829190614bb5565b611a8e565b005b34801561089557600080fd5b506108b060048036038101906108ab9190614e28565b611b6b565b005b3480156108be57600080fd5b506108d960048036038101906108d49190614994565b611c0b565b005b3480156108e757600080fd5b506108f0611d35565b6040516108fd9190614b9a565b60405180910390f35b34801561091257600080fd5b5061091b611d3b565b6040516109289190614e89565b60405180910390f35b34801561093d57600080fd5b5061095860048036038101906109539190614ea4565b611d61565b005b34801561096657600080fd5b5061096f611e0c565b60405161097c9190614e0d565b60405180910390f35b34801561099157600080fd5b5061099a611e35565b6040516109a79190614af3565b60405180910390f35b3480156109bc57600080fd5b506109c5611ec7565b6040516109d291906149dc565b60405180910390f35b3480156109e757600080fd5b506109f0611eda565b6040516109fd9190614b9a565b60405180910390f35b348015610a1257600080fd5b50610a2d6004803603810190610a289190614a23565b611f03565b005b348015610a3b57600080fd5b50610a566004803603810190610a519190614b4b565b611fec565b604051610a6391906149dc565b60405180910390f35b348015610a7857600080fd5b50610a81612003565b604051610a8e9190614b9a565b60405180910390f35b348015610aa357600080fd5b50610aac612009565b604051610ab99190614b9a565b60405180910390f35b348015610ace57600080fd5b50610ae96004803603810190610ae49190614b4b565b61200f565b005b348015610af757600080fd5b50610b00612169565b604051610b0d9190614b9a565b60405180910390f35b348015610b2257600080fd5b50610b3d6004803603810190610b389190614bb5565b61216f565b005b348015610b4b57600080fd5b50610b5461224c565b604051610b619190614e0d565b60405180910390f35b348015610b7657600080fd5b50610b7f612272565b604051610b8c9190614b9a565b60405180910390f35b348015610ba157600080fd5b50610baa612278565b604051610bb79190614b9a565b60405180910390f35b348015610bcc57600080fd5b50610be76004803603810190610be29190614bb5565b61227e565b005b348015610bf557600080fd5b50610bfe612316565b604051610c0b9190614b9a565b60405180910390f35b348015610c2057600080fd5b50610c3b6004803603810190610c369190614d74565b61231c565b005b348015610c4957600080fd5b50610c646004803603810190610c5f9190614ed1565b6123c4565b604051610c719190614b9a565b60405180910390f35b348015610c8657600080fd5b50610c8f61244b565b604051610c9c9190614b9a565b60405180910390f35b348015610cb157600080fd5b50610ccc6004803603810190610cc79190614bb5565b612451565b005b348015610cda57600080fd5b50610ce36124e9565b604051610cf09190614e0d565b60405180910390f35b348015610d0557600080fd5b50610d206004803603810190610d1b9190614ea4565b61250f565b005b348015610d2e57600080fd5b50610d496004803603810190610d449190614994565b6125ba565b005b348015610d5757600080fd5b50610d60612774565b604051610d6d9190614b9a565b60405180910390f35b348015610d8257600080fd5b50610d8b61277a565b604051610d9891906149dc565b60405180910390f35b60086020528060005260406000206000915054906101000a900460ff1681565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e4f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e4690614f5d565b60405180910390fd5b80602060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b606060058054610eb990614fac565b80601f0160208091040260200160405190810160405280929190818152602001828054610ee590614fac565b8015610f325780601f10610f0757610100808354040283529160200191610f32565b820191906000526020600020905b815481529060010190602001808311610f1557829003601f168201915b5050505050905090565b6000610f49338484612796565b6001905092915050565b60135481565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610fe7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fde90614f5d565b60405180910390fd5b80601a8190555050565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461107f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161107690614f5d565b60405180910390fd5b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b3600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166000196040518363ffffffff1660e01b8152600401611100929190614fdd565b6020604051808303816000875af115801561111f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611143919061501b565b5060005b838390508110156111a957611196670de0b6b3a7640000836111699190615077565b85858481811061117c5761117b6150b9565b5b90506020020160208101906111919190614994565b612881565b80806111a1906150e8565b915050611147565b5042601d81905550505050565b6000600954905090565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60006111f3848484612b07565b600019600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054146113815781600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546113009190615130565b600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b600190509392505050565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461141a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161141190614f5d565b60405180910390fd5b826011819055508160128190555080601381905550505050565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146114c2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114b990614f5d565b60405180910390fd5b601b54600014611507576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114fe906151b0565b60405180910390fd5b43601b81905550565b6000600760009054906101000a900460ff16905090565b60175481565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146115bb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115b290614f5d565b60405180910390fd5b8060248190555050565b60115481565b600c6020528060005260406000206000915054906101000a900460ff1681565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b601960009054906101000a900460ff1681565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146116b2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116a990614f5d565b60405180910390fd5b6000601b81905550565b6000601960019054906101000a900460ff16156116dd576018549050611702565b601a54601d546116ed91906151d0565b42116116fd576127109050611702565b600090505b90565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611793576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161178a90614f5d565b60405180910390fd5b80600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b60245481565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146118c3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118ba90614f5d565b60405180910390fd5b8060158190555050565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146119ca576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119c190614f5d565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b601d5481565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611b1c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b1390614f5d565b60405180910390fd5b612710811115611b61576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b5890615250565b60405180910390fd5b8060178190555050565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611bf9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bf090614f5d565b60405180910390fd5b81601c8190555080601d819055505050565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611c99576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c9090614f5d565b60405180910390fd5b80600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b60155481565b600d60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611def576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611de690614f5d565b60405180910390fd5b80601960016101000a81548160ff02191690831515021790555050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060068054611e4490614fac565b80601f0160208091040260200160405190810160405280929190818152602001828054611e7090614fac565b8015611ebd5780601f10611e9257610100808354040283529160200191611ebd565b820191906000526020600020905b815481529060010190602001808311611ea057829003601f168201915b5050505050905090565b601960019054906101000a900460ff1681565b6000601960009054906101000a900460ff1615611efb576017549050611f00565b600090505b90565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611f91576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f8890614f5d565b60405180910390fd5b80600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6000611ff9338484612b07565b6001905092915050565b60105481565b60125481565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff160361216557600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036120e4573373ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f193505050501580156120de573d6000803e3d6000fd5b50612164565b8173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33836040518363ffffffff1660e01b815260040161211f929190614fdd565b6020604051808303816000875af115801561213e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612162919061501b565b505b5b5050565b600f5481565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146121fd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121f490614f5d565b60405180910390fd5b612710811115612242576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612239906152bc565b60405180910390fd5b8060188190555050565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60165481565b60185481565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461230c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161230390614f5d565b60405180910390fd5b8060228190555050565b600e5481565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146123aa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123a190614f5d565b60405180910390fd5b82600e8190555081600f8190555080601081905550505050565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b601b5481565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146124df576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124d690614f5d565b60405180910390fd5b8060168190555050565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461259d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161259490614f5d565b60405180910390fd5b80601960006101000a81548160ff02191690831515021790555050565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612648576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161263f90614f5d565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036126b7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126ae90615328565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b601c5481565b6000601d54421015801561279157506000601d5414155b905090565b80600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516128749190614b9a565b60405180910390a3505050565b6001600d60006101000a81548160ff0219169083151502179055506000600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690506000600267ffffffffffffffff8111156128e0576128df615348565b5b60405190808252806020026020018201604052801561290e5781602001602082028036833780820191505090505b5090508181600081518110612926576129256150b9565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250503081600181518110612975576129746150b9565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060008273ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016129ea9190614e0d565b602060405180830381865afa158015612a07573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a2b919061538c565b9050808511612a3a5784612a3c565b805b945060008503612a4e57505050612ae8565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16635c11d7958660008588426040518663ffffffff1660e01b8152600401612ab29594939291906154b2565b600060405180830381600087803b158015612acc57600080fd5b505af1158015612ae0573d6000803e3d6000fd5b505050505050505b6000600d60006101000a81548160ff0219169083151502179055505050565b6000612b12846118f3565b905081811015612b57576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b4e90615558565b60405180910390fd5b600d60009054906101000a900460ff1615612b7e57612b778484846133b5565b50506133b0565b600080600860008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015612c255750600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015612c3357506000601654115b15612cb957600080600090505b601654811015612c9a57808642604051602001612c5f93929190615599565b6040516020818303038152906040528051906020012060001c9150612c86888360646133b5565b508080612c92906150e8565b915050612c40565b506064601654612caa9190615077565b85612cb59190615130565b9450505b600860008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015612d5d5750600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015612db35750600c60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015612e095750600c60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612e2057612e1661277a565b612e1f57600080fd5b5b600080600c60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615612e8457612e7d6134d3565b9050612ee2565b600c60008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615612ee157612ede613687565b91505b5b600c60008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680612f835750600c60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156131ed57600860008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615801561302c5750600860008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156131955761303961277a565b61308c57601b54600010801561304c5750805b61308b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161308290615622565b60405180910390fd5b5b600c60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561317e57600d60009054906101000a900460ff161580156130f9575080155b1561317d576000613109306118f3565b905060155481111561317b576000601254601354601154601054600e54600f5461313391906151d0565b61313d91906151d0565b61314791906151d0565b61315191906151d0565b61315b91906151d0565b905060008890508281111561316e578290505b613178818361383c565b50505b505b5b8015801561318a575081155b1561319457600193505b5b600c60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156131ec57600192505b5b600c60008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156132915750600c60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156132e75750600860008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b801561333d5750600860008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561334b5760019250600193505b61335a88888887878688613fa4565b3073ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff16146133aa57821561339d5761339c886142e1565b5b6133a96207a120614474565b5b50505050505b505050565b600081600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546134069190615130565b9250508190555081600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461345c91906151d0565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516134c09190614b9a565b60405180910390a3600190509392505050565b600080601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690506000808273ffffffffffffffffffffffffffffffffffffffff16630902f1ac6040518163ffffffff1660e01b8152600401606060405180830381865afa158015613549573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061356d91906156c4565b506dffffffffffffffffffffffffffff1691506dffffffffffffffffffffffffffff1691506000600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905060003073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1610156135f7578390506135fb565b8290505b60008273ffffffffffffffffffffffffffffffffffffffff166370a08231876040518263ffffffff1660e01b81526004016136369190614e0d565b602060405180830381865afa158015613653573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613677919061538c565b9050818111965050505050505090565b600080601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690506000808273ffffffffffffffffffffffffffffffffffffffff16630902f1ac6040518163ffffffff1660e01b8152600401606060405180830381865afa1580156136fd573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061372191906156c4565b506dffffffffffffffffffffffffffff1691506dffffffffffffffffffffffffffff1691506000600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905060003073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1610156137ab578390506137af565b8290505b60008273ffffffffffffffffffffffffffffffffffffffff166370a08231876040518263ffffffff1660e01b81526004016137ea9190614e0d565b602060405180830381865afa158015613807573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061382b919061538c565b905080821015965050505050505090565b6001600d60006101000a81548160ff0219169083151502179055506000810315613f8557808161386c91906151d0565b90506000600f5460125461388091906151d0565b905060008282856138919190615077565b61389b9190615746565b90506000600267ffffffffffffffff8111156138ba576138b9615348565b5b6040519080825280602002602001820160405280156138e85781602001602082028036833780820191505090505b5090503081600081518110613900576138ff6150b9565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681600181518110613971576139706150b9565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16635c11d79583876139f59190615130565b600084600d60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518663ffffffff1660e01b8152600401613a3c9594939291906154b2565b600060405180830381600087803b158015613a5657600080fd5b505af1925050508015613a67575060015b613aa8577fdec7c2f91b613ddd5b165dbbe1b0d13a5e7aaa4b36cb2b78e8aeb1023247555b6000604051613a9b9190615777565b60405180910390a1613aa9565b5b8284613ab59190615130565b93506000600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905060008173ffffffffffffffffffffffffffffffffffffffff166370a08231600d60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518263ffffffff1660e01b8152600401613b3b9190614e0d565b602060405180830381865afa158015613b58573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613b7c919061538c565b90506000866002601154600e54613b9391906151d0565b84613b9e9190615077565b613ba89190615077565b613bb29190615746565b90506000811115613d715760006003600283613bce9190615077565b613bd89190615746565b90508373ffffffffffffffffffffffffffffffffffffffff166323b872dd600d60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846040518463ffffffff1660e01b8152600401613c5b93929190615792565b6020604051808303816000875af1158015613c7a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613c9e919061501b565b508373ffffffffffffffffffffffffffffffffffffffff166323b872dd600d60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168486613d0d9190615130565b6040518463ffffffff1660e01b8152600401613d2b93929190615792565b6020604051808303816000875af1158015613d4a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613d6e919061501b565b50505b8273ffffffffffffffffffffffffffffffffffffffff166323b872dd600d60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16308486613dbd9190615130565b6040518463ffffffff1660e01b8152600401613ddb93929190615792565b6020604051808303816000875af1158015613dfa573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613e1e919061501b565b506000851115613f7e576000878784613e379190615077565b613e419190615746565b90506000811115613f7c57600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e8e3370030600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168985600080600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518963ffffffff1660e01b8152600401613efa9897969594939291906157c9565b6060604051808303816000875af1925050508015613f3657506040513d601f19601f82011682018060405250810190613f339190615847565b60015b613f77577fdec7c2f91b613ddd5b165dbbe1b0d13a5e7aaa4b36cb2b78e8aeb1023247555b6001604051613f6a91906158d5565b60405180910390a1613f7b565b5050505b5b505b5050505050505b6000600d60006101000a81548160ff0219169083151502179055505050565b84600160008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613fef9190615130565b600160008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600084156140c957600084156140665760125460135460115461405591906151d0565b61405f91906151d0565b9050614086565b600f54601054600e5461407991906151d0565b61408391906151d0565b90505b600061271082896140979190615077565b6140a19190615746565b905060008111156140c65780836140b891906151d0565b92506140c58a3083614834565b5b50505b8280156141205750600860008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156141765750600860008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156141c4576000612710614188611eda565b886141939190615077565b61419d9190615746565b905060008111156141c25780826141b491906151d0565b91506141c1893083614834565b5b505b81801561421b5750600860008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156142715750600860008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156142c15760006127106142836116bc565b8861428e9190615077565b6142989190615746565b905060008111156142bf5780826142af91906151d0565b91506142be8961dead83614834565b5b505b6142d7888883896142d29190615130565b614834565b5050505050505050565b6000813b905060008111156142f65750614471565b601f60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205460000361446f57601e80549050600014806143bc57508173ffffffffffffffffffffffffffffffffffffffff16601e600081548110614378576143776150b9565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614155b1561446e57601e80549050601f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550601e829080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b5b505b50565b4360245460235461448591906151d0565b11614831576000600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905060008173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016144ec9190614e0d565b602060405180830381865afa158015614509573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061452d919061538c565b9050602254811015614540575050614831565b6000601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905060008173ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156145b4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906145d8919061538c565b9050600080600080601e80549050905060008060005a90505b8b831080156145ff57508382105b1561481e5783602154106146165760006021819055505b601e6021548154811061462c5761462b6150b9565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1696508873ffffffffffffffffffffffffffffffffffffffff166370a08231886040518263ffffffff1660e01b81526004016146929190614e0d565b602060405180830381865afa1580156146af573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906146d3919061538c565b955060008611801561472f5750602060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156147d75787868b6147419190615077565b61474b9190615746565b945060008511156147d6578a73ffffffffffffffffffffffffffffffffffffffff1663a9059cbb88876040518363ffffffff1660e01b8152600401614791929190614fdd565b6020604051808303816000875af11580156147b0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906147d4919061501b565b505b5b5a816147e39190615130565b836147ee91906151d0565b92505a905060216000815480929190614806906150e8565b91905055508180614816906150e8565b9250506145f1565b4360238190555050505050505050505050505b50565b80600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461487f91906151d0565b600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161491f9190614b9a565b60405180910390a3505050565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061496182614936565b9050919050565b61497181614956565b811461497c57600080fd5b50565b60008135905061498e81614968565b92915050565b6000602082840312156149aa576149a961492c565b5b60006149b88482850161497f565b91505092915050565b60008115159050919050565b6149d6816149c1565b82525050565b60006020820190506149f160008301846149cd565b92915050565b614a00816149c1565b8114614a0b57600080fd5b50565b600081359050614a1d816149f7565b92915050565b60008060408385031215614a3a57614a3961492c565b5b6000614a488582860161497f565b9250506020614a5985828601614a0e565b9150509250929050565b600081519050919050565b600082825260208201905092915050565b60005b83811015614a9d578082015181840152602081019050614a82565b60008484015250505050565b6000601f19601f8301169050919050565b6000614ac582614a63565b614acf8185614a6e565b9350614adf818560208601614a7f565b614ae881614aa9565b840191505092915050565b60006020820190508181036000830152614b0d8184614aba565b905092915050565b6000819050919050565b614b2881614b15565b8114614b3357600080fd5b50565b600081359050614b4581614b1f565b92915050565b60008060408385031215614b6257614b6161492c565b5b6000614b708582860161497f565b9250506020614b8185828601614b36565b9150509250929050565b614b9481614b15565b82525050565b6000602082019050614baf6000830184614b8b565b92915050565b600060208284031215614bcb57614bca61492c565b5b6000614bd984828501614b36565b91505092915050565b600080fd5b600080fd5b600080fd5b60008083601f840112614c0757614c06614be2565b5b8235905067ffffffffffffffff811115614c2457614c23614be7565b5b602083019150836020820283011115614c4057614c3f614bec565b5b9250929050565b600080600060408486031215614c6057614c5f61492c565b5b600084013567ffffffffffffffff811115614c7e57614c7d614931565b5b614c8a86828701614bf1565b93509350506020614c9d86828701614b36565b9150509250925092565b6000819050919050565b6000614ccc614cc7614cc284614936565b614ca7565b614936565b9050919050565b6000614cde82614cb1565b9050919050565b6000614cf082614cd3565b9050919050565b614d0081614ce5565b82525050565b6000602082019050614d1b6000830184614cf7565b92915050565b600080600060608486031215614d3a57614d3961492c565b5b6000614d488682870161497f565b9350506020614d598682870161497f565b9250506040614d6a86828701614b36565b9150509250925092565b600080600060608486031215614d8d57614d8c61492c565b5b6000614d9b86828701614b36565b9350506020614dac86828701614b36565b9250506040614dbd86828701614b36565b9150509250925092565b600060ff82169050919050565b614ddd81614dc7565b82525050565b6000602082019050614df86000830184614dd4565b92915050565b614e0781614956565b82525050565b6000602082019050614e226000830184614dfe565b92915050565b60008060408385031215614e3f57614e3e61492c565b5b6000614e4d85828601614b36565b9250506020614e5e85828601614b36565b9150509250929050565b6000614e7382614cd3565b9050919050565b614e8381614e68565b82525050565b6000602082019050614e9e6000830184614e7a565b92915050565b600060208284031215614eba57614eb961492c565b5b6000614ec884828501614a0e565b91505092915050565b60008060408385031215614ee857614ee761492c565b5b6000614ef68582860161497f565b9250506020614f078582860161497f565b9150509250929050565b7f216f776e65720000000000000000000000000000000000000000000000000000600082015250565b6000614f47600683614a6e565b9150614f5282614f11565b602082019050919050565b60006020820190508181036000830152614f7681614f3a565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680614fc457607f821691505b602082108103614fd757614fd6614f7d565b5b50919050565b6000604082019050614ff26000830185614dfe565b614fff6020830184614b8b565b9392505050565b600081519050615015816149f7565b92915050565b6000602082840312156150315761503061492c565b5b600061503f84828501615006565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061508282614b15565b915061508d83614b15565b925082820261509b81614b15565b915082820484148315176150b2576150b1615048565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60006150f382614b15565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361512557615124615048565b5b600182019050919050565b600061513b82614b15565b915061514683614b15565b925082820390508181111561515e5761515d615048565b5b92915050565b7f737461727465644164644c500000000000000000000000000000000000000000600082015250565b600061519a600c83614a6e565b91506151a582615164565b602082019050919050565b600060208201905081810360008301526151c98161518d565b9050919050565b60006151db82614b15565b91506151e683614b15565b92508282019050808211156151fe576151fd615048565b5b92915050565b7f616464204c70203e203130302021000000000000000000000000000000000000600082015250565b600061523a600e83614a6e565b915061524582615204565b602082019050919050565b600060208201905081810360008301526152698161522d565b9050919050565b7f72656d6f7665204c703e20313030202100000000000000000000000000000000600082015250565b60006152a6601083614a6e565b91506152b182615270565b602082019050919050565b600060208201905081810360008301526152d581615299565b9050919050565b7f6e65772069732030000000000000000000000000000000000000000000000000600082015250565b6000615312600883614a6e565b915061531d826152dc565b602082019050919050565b6000602082019050818103600083015261534181615305565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60008151905061538681614b1f565b92915050565b6000602082840312156153a2576153a161492c565b5b60006153b084828501615377565b91505092915050565b6000819050919050565b60006153de6153d96153d4846153b9565b614ca7565b614b15565b9050919050565b6153ee816153c3565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61542981614956565b82525050565b600061543b8383615420565b60208301905092915050565b6000602082019050919050565b600061545f826153f4565b61546981856153ff565b935061547483615410565b8060005b838110156154a557815161548c888261542f565b975061549783615447565b925050600181019050615478565b5085935050505092915050565b600060a0820190506154c76000830188614b8b565b6154d460208301876153e5565b81810360408301526154e68186615454565b90506154f56060830185614dfe565b6155026080830184614b8b565b9695505050505050565b7f62616c616e63654e6f74456e6f75676800000000000000000000000000000000600082015250565b6000615542601083614a6e565b915061554d8261550c565b602082019050919050565b6000602082019050818103600083015261557181615535565b9050919050565b6000819050919050565b61559361558e82614b15565b615578565b82525050565b60006155a58286615582565b6020820191506155b58285615582565b6020820191506155c58284615582565b602082019150819050949350505050565b7f21676f4164644c50000000000000000000000000000000000000000000000000600082015250565b600061560c600883614a6e565b9150615617826155d6565b602082019050919050565b6000602082019050818103600083015261563b816155ff565b9050919050565b60006dffffffffffffffffffffffffffff82169050919050565b61566581615642565b811461567057600080fd5b50565b6000815190506156828161565c565b92915050565b600063ffffffff82169050919050565b6156a181615688565b81146156ac57600080fd5b50565b6000815190506156be81615698565b92915050565b6000806000606084860312156156dd576156dc61492c565b5b60006156eb86828701615673565b93505060206156fc86828701615673565b925050604061570d868287016156af565b9150509250925092565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061575182614b15565b915061575c83614b15565b92508261576c5761576b615717565b5b828204905092915050565b600060208201905061578c60008301846153e5565b92915050565b60006060820190506157a76000830186614dfe565b6157b46020830185614dfe565b6157c16040830184614b8b565b949350505050565b6000610100820190506157df600083018b614dfe565b6157ec602083018a614dfe565b6157f96040830189614b8b565b6158066060830188614b8b565b61581360808301876153e5565b61582060a08301866153e5565b61582d60c0830185614dfe565b61583a60e0830184614b8b565b9998505050505050505050565b6000806000606084860312156158605761585f61492c565b5b600061586e86828701615377565b935050602061587f86828701615377565b925050604061589086828701615377565b9150509250925092565b6000819050919050565b60006158bf6158ba6158b58461589a565b614ca7565b614b15565b9050919050565b6158cf816158a4565b82525050565b60006020820190506158ea60008301846158c6565b9291505056fea2646970667358221220e18a86c46709aed4dc06d3502f66eb3e14d57810f3f7377b0664383dd18647bb64736f6c63430008120033

Deployed Bytecode Sourcemap

22105:456:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3395:45;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21979:119;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5785:94;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6543:159;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3922:37;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14751:133;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17835:323;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5989:95;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3481:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6710:336;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7734:201;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17411:140;;;;;;;;;;;;;:::i;:::-;;5887:94;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13724:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20276:121;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3845:34;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3545:45;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3968:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14153:37;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17559:74;;;;;;;;;;;;;:::i;:::-;;14896:332;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17234:135;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20228:41;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7273:101;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3270:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6092:119;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2540:148;;;;;;;;;;;;;:::i;:::-;;17669:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13803:163;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17702:125;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17095:131;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7239:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3676:41;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14566:131;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2354:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5679:98;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14518:41;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14330:180;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18833:118;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6219:165;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3800:36;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3886:29;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18959:309;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3765:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13974:171;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3518:20;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7382:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13761:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21853:118;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3726:32;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7529:197;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6392:143;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17377:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7420:101;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3237:26;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14197:125;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2696:214;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17641:21;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7945:120;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3395:45;;;;;;;;;;;;;;;;;;;;;;:::o;21979:119::-;2491:10;2481:20;;:6;;;;;;;;;;:20;;;2473:39;;;;;;;;;;;;:::i;:::-;;;;;;;;;22084:6:::1;22062:13;:19;22076:4;22062:19;;;;;;;;;;;;;;;;:28;;;;;;;;;;;;;;;;;;21979:119:::0;;:::o;5785:94::-;5833:13;5866:5;5859:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5785:94;:::o;6543:159::-;6618:4;6635:37;6644:10;6656:7;6665:6;6635:8;:37::i;:::-;6690:4;6683:11;;6543:159;;;;:::o;3922:37::-;;;;:::o;14751:133::-;2491:10;2481:20;;:6;;;;;;;;;;:20;;;2473:39;;;;;;;;;;;;:::i;:::-;;;;;;;;;14868:8:::1;14845:20;:31;;;;14751:133:::0;:::o;17835:323::-;2491:10;2481:20;;:6;;;;;;;;;;:20;;;2473:39;;;;;;;;;;;;:::i;:::-;;;;;;;;;17960:5:::1;;;;;;;;;;;17953:21;;;17983:11;;;;;;;;;;;18006:1;17997:11;17953:56;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;18024:6;18020:93;18035:4;;:11;;18033:1;:13;18020:93;;;18066:35;18086:6;18076:9;:16;;;;:::i;:::-;18093:4;;18098:1;18093:7;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;18066:9;:35::i;:::-;18047:3;;;;;:::i;:::-;;;;18020:93;;;;18135:15;18123:9;:27;;;;17835:323:::0;;;:::o;5989:95::-;6042:7;6069;;6062:14;;5989:95;:::o;3481:30::-;;;;;;;;;;;;;:::o;6710:336::-;6808:4;6825:36;6835:6;6843:9;6854:6;6825:9;:36::i;:::-;3667:1;3658:11;6876;:19;6888:6;6876:19;;;;;;;;;;;;;;;:31;6896:10;6876:31;;;;;;;;;;;;;;;;:38;6872:145;;6999:6;6965:11;:19;6977:6;6965:19;;;;;;;;;;;;;;;:31;6985:10;6965:31;;;;;;;;;;;;;;;;:40;;;;:::i;:::-;6931:11;:19;6943:6;6931:19;;;;;;;;;;;;;;;:31;6951:10;6931:31;;;;;;;;;;;;;;;:74;;;;6872:145;7034:4;7027:11;;6710:336;;;;;:::o;7734:201::-;2491:10;2481:20;;:6;;;;;;;;;;:20;;;2473:39;;;;;;;;;;;;:::i;:::-;;;;;;;;;7846:7:::1;7831:12;:22;;;;7877:5;7864:10;:18;;;;7914:13;7893:18;:34;;;;7734:201:::0;;;:::o;17411:140::-;2491:10;2481:20;;:6;;;;;;;;;;:20;;;2473:39;;;;;;;;;;;;:::i;:::-;;;;;;;;;17476:12:::1;;17471:1;:17;17463:42;;;;;;;;;;;;:::i;:::-;;;;;;;;;17531:12;17516;:27;;;;17411:140::o:0;5887:94::-;5939:5;5964:9;;;;;;;;;;;5957:16;;5887:94;:::o;13724:30::-;;;;:::o;20276:121::-;2491:10;2481:20;;:6;;;;;;;;;;:20;;;2473:39;;;;;;;;;;;;:::i;:::-;;;;;;;;;20381:8:::1;20356:22;:33;;;;20276:121:::0;:::o;3845:34::-;;;;:::o;3545:45::-;;;;;;;;;;;;;;;;;;;;;;:::o;3968:24::-;;;;;;;;;;;;;:::o;14153:37::-;;;;;;;;;;;;;:::o;17559:74::-;2491:10;2481:20;;:6;;;;;;;;;;:20;;;2473:39;;;;;;;;;;;;:::i;:::-;;;;;;;;;17624:1:::1;17609:12;:16;;;;17559:74::o:0;14896:332::-;14942:7;14965:21;;;;;;;;;;;14961:258;;;15009:18;;15002:25;;;;14961:258;15093:20;;15081:9;;:32;;;;:::i;:::-;15062:15;:51;15058:150;;15140:5;15133:12;;;;15058:150;15191:1;15184:8;;14896:332;;:::o;17234:135::-;2491:10;2481:20;;:6;;;;;;;;;;:20;;;2473:39;;;;;;;;;;;;:::i;:::-;;;;;;;;;17320:4:::1;17304:13;;:20;;;;;;;;;;;;;;;;;;17357:4;17335:13;:19;17349:4;17335:19;;;;;;;;;;;;;;;;:26;;;;;;;;;;;;;;;;;;17234:135:::0;:::o;20228:41::-;;;;:::o;7273:101::-;2491:10;2481:20;;:6;;;;;;;;;;:20;;;2473:39;;;;;;;;;;;;:::i;:::-;;;;;;;;;7358:8:::1;7343:12;:23;;;;7273:101:::0;:::o;3270:28::-;;;;;;;;;;;;;:::o;6092:119::-;6158:7;6185:9;:18;6195:7;6185:18;;;;;;;;;;;;;;;;6178:25;;6092:119;;;:::o;2540:148::-;2491:10;2481:20;;:6;;;;;;;;;;:20;;;2473:39;;;;;;;;;;;;:::i;:::-;;;;;;;;;2647:1:::1;2610:40;;2631:6;::::0;::::1;;;;;;;;2610:40;;;;;;;;;;;;2678:1;2661:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;2540:148::o:0;17669:24::-;;;;:::o;13803:163::-;2491:10;2481:20;;:6;;;;;;;;;;:20;;;2473:39;;;;;;;;;;;;:::i;:::-;;;;;;;;;13897:5:::1;13885:8;:17;;13877:44;;;;;;;;;;;;:::i;:::-;;;;;;;;;13950:8;13932:15;:26;;;;13803:163:::0;:::o;17702:125::-;2491:10;2481:20;;:6;;;;;;;;;;:20;;;2473:39;;;;;;;;;;;;:::i;:::-;;;;;;;;;17786:9:::1;17777:6;:18;;;;17818:1;17806:9;:13;;;;17702:125:::0;;:::o;17095:131::-;2491:10;2481:20;;:6;;;;;;;;;;:20;;;2473:39;;;;;;;;;;;;:::i;:::-;;;;;;;;;17177:4:::1;17163:11;;:18;;;;;;;;;;;;;;;;;;17214:4;17192:13;:19;17206:4;17192:19;;;;;;;;;;;;;;;;:26;;;;;;;;;;;;;;;;;;17095:131:::0;:::o;7239:27::-;;;;:::o;3676:41::-;;;;;;;;;;;;;:::o;14566:131::-;2491:10;2481:20;;:6;;;;;;;;;;:20;;;2473:39;;;;;;;;;;;;:::i;:::-;;;;;;;;;14683:6:::1;14659:21;;:30;;;;;;;;;;;;;;;;;;14566:131:::0;:::o;2354:79::-;2392:7;2419:6;;;;;;;;;;;2412:13;;2354:79;:::o;5679:98::-;5729:13;5762:7;5755:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5679:98;:::o;14518:41::-;;;;;;;;;;;;;:::o;14330:180::-;14373:7;14396:18;;;;;;;;;;;14392:111;;;14437:15;;14430:22;;;;14392:111;14490:1;14483:8;;14330:180;;:::o;18833:118::-;2491:10;2481:20;;:6;;;;;;;;;;:20;;;2473:39;;;;;;;;;;;;:::i;:::-;;;;;;;;;18937:6:::1;18915:13;:19;18929:4;18915:19;;;;;;;;;;;;;;;;:28;;;;;;;;;;;;;;;;;;18833:118:::0;;:::o;6219:165::-;6297:4;6314:40;6324:10;6336:9;6347:6;6314:9;:40::i;:::-;6372:4;6365:11;;6219:165;;;;:::o;3800:36::-;;;;:::o;3886:29::-;;;;:::o;18959:309::-;19047:11;;;;;;;;;;;19033:25;;:10;:25;;;19029:232;;19095:1;19078:19;;:5;:19;;;19074:176;;19125:10;19117:28;;:36;19146:6;19117:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19074:176;;;19199:5;19192:22;;;19215:10;19227:6;19192:42;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;19074:176;19029:232;18959:309;;:::o;3765:28::-;;;;:::o;13974:171::-;2491:10;2481:20;;:6;;;;;;;;;;:20;;;2473:39;;;;;;;;;;;;:::i;:::-;;;;;;;;;14071:5:::1;14059:8;:17;;14051:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;14129:8;14108:18;:29;;;;13974:171:::0;:::o;3518:20::-;;;;;;;;;;;;;:::o;7382:31::-;;;;:::o;13761:33::-;;;;:::o;21853:118::-;2491:10;2481:20;;:6;;;;;;;;;;:20;;;2473:39;;;;;;;;;;;;:::i;:::-;;;;;;;;;21957:6:::1;21933:21;:30;;;;21853:118:::0;:::o;3726:32::-;;;;:::o;7529:197::-;2491:10;2481:20;;:6;;;;;;;;;;:20;;;2473:39;;;;;;;;;;;;:::i;:::-;;;;;;;;;7639:7:::1;7625:11;:21;;;;7669:5;7657:9;:17;;;;7705:13;7685:17;:33;;;;7529:197:::0;;;:::o;6392:143::-;6473:7;6500:11;:18;6512:5;6500:18;;;;;;;;;;;;;;;:27;6519:7;6500:27;;;;;;;;;;;;;;;;6493:34;;6392:143;;;;:::o;17377:27::-;;;;:::o;7420:101::-;2491:10;2481:20;;:6;;;;;;;;;;:20;;;2473:39;;;;;;;;;;;;:::i;:::-;;;;;;;;;7505:8:::1;7490:12;:23;;;;7420:101:::0;:::o;3237:26::-;;;;;;;;;;;;;:::o;14197:125::-;2491:10;2481:20;;:6;;;;;;;;;;:20;;;2473:39;;;;;;;;;;;;:::i;:::-;;;;;;;;;14308:6:::1;14287:18;;:27;;;;;;;;;;;;;;;;;;14197:125:::0;:::o;2696:214::-;2491:10;2481:20;;:6;;;;;;;;;;:20;;;2473:39;;;;;;;;;;;;:::i;:::-;;;;;;;;;2805:1:::1;2785:22;;:8;:22;;::::0;2777:43:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;2865:8;2836:38;;2857:6;::::0;::::1;;;;;;;;2836:38;;;;;;;;;;;;2894:8;2885:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;2696:214:::0;:::o;17641:21::-;;;;:::o;7945:120::-;7988:4;8030:9;;8011:15;:28;;:46;;;;;8056:1;8043:9;;:14;;8011:46;8004:53;;7945:120;:::o;7054:177::-;7169:6;7139:11;:18;7151:5;7139:18;;;;;;;;;;;;;;;:27;7158:7;7139:27;;;;;;;;;;;;;;;:36;;;;7207:7;7191:32;;7200:5;7191:32;;;7216:6;7191:32;;;;;;:::i;:::-;;;;;;;;7054:177;;;:::o;18166:652::-;4042:4;4033:6;;:13;;;;;;;;;;;;;;;;;;18248:12:::1;18263:5;;;;;;;;;;;18248:20;;18279:21;18317:1;18303:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18279:40;;18348:4;18330;18335:1;18330:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;18382:4;18364;18369:1;18364:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;18398:12;18420:4;18413:22;;;18444:4;18413:37;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;18398:52;;18489:4;18475:11;:18;:39;;18503:11;18475:39;;;18496:4;18475:39;18461:53;;18544:1;18529:11;:16:::0;18525:29:::1;;18547:7;;;;;18525:29;18590:11;;;;;;;;;;;:65;;;18670:11;18696:1;18739:4;18766:2;18784:15;18590:220;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;18237:581;;;4057:1;4078:5:::0;4069:6;;:14;;;;;;;;;;;;;;;;;;18166:652;;:::o;8073:2936::-;8189:15;8207;8217:4;8207:9;:15::i;:::-;8189:33;;8252:6;8241:7;:17;;8233:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;8296:6;;;;;;;;;;;8292:89;;;8318:30;8333:4;8338:2;8341:6;8318:14;:30::i;:::-;;8363:7;;;8292:89;8393:12;8416:11;8444:13;:19;8458:4;8444:19;;;;;;;;;;;;;;;;;;;;;;;;;8443:20;:42;;;;;8468:13;:17;8482:2;8468:17;;;;;;;;;;;;;;;;;;;;;;;;;8467:18;8443:42;:62;;;;;8504:1;8489:12;;:16;8443:62;8440:360;;;8521:10;8550:9;8560:1;8550:11;;8546:202;8566:12;;8562:1;:16;8546:202;;;8655:1;8658:6;8666:15;8638:44;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;8628:55;;;;;;8623:61;;8602:84;;8705:27;8720:4;8725:2;8728:3;8705:14;:27::i;:::-;;8579:3;;;;;:::i;:::-;;;;8546:202;;;;8785:3;8772:12;;:16;;;;:::i;:::-;8762:26;;;;;:::i;:::-;;;8506:294;8440:360;8817:13;:19;8831:4;8817:19;;;;;;;;;;;;;;;;;;;;;;;;;8816:20;:42;;;;;8841:13;:17;8855:2;8841:17;;;;;;;;;;;;;;;;;;;;;;;;;8840:18;8816:42;:66;;;;;8863:13;:19;8877:4;8863:19;;;;;;;;;;;;;;;;;;;;;;;;;8862:20;8816:66;:88;;;;;8887:13;:17;8901:2;8887:17;;;;;;;;;;;;;;;;;;;;;;;;;8886:18;8816:88;8812:142;;;8928:13;:11;:13::i;:::-;8920:22;;;;;;8812:142;8966:13;8990:10;9025:13;:17;9039:2;9025:17;;;;;;;;;;;;;;;;;;;;;;;;;9021:161;;;9067:17;:15;:17::i;:::-;9059:25;;9021:161;;;9104:13;:19;9118:4;9104:19;;;;;;;;;;;;;;;;;;;;;;;;;9101:81;;;9150:20;:18;:20::i;:::-;9139:31;;9101:81;9021:161;9200:13;:19;9214:4;9200:19;;;;;;;;;;;;;;;;;;;;;;;;;:40;;;;9223:13;:17;9237:2;9223:17;;;;;;;;;;;;;;;;;;;;;;;;;9200:40;9196:1224;;;9262:13;:19;9276:4;9262:19;;;;;;;;;;;;;;;;;;;;;;;;;9261:20;:42;;;;;9286:13;:17;9300:2;9286:17;;;;;;;;;;;;;;;;;;;;;;;;;9285:18;9261:42;9257:1067;;;9329:13;:11;:13::i;:::-;9324:129;;9379:12;;9375:1;:16;:25;;;;;9395:5;9375:25;9367:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;9324:129;9477:13;:17;9491:2;9477:17;;;;;;;;;;;;;;;;;;;;;;;;;9473:761;;;9524:6;;;;;;;;;;;9523:7;:17;;;;;9535:5;9534:6;9523:17;9519:696;;;9569:28;9600:24;9618:4;9600:9;:24::i;:::-;9569:55;;9678:12;;9655:20;:35;9651:541;;;9723:15;9823:10;;9802:18;;9787:12;;9767:17;;9753:11;;9741:9;;:23;;;;:::i;:::-;:43;;;;:::i;:::-;:58;;;;:::i;:::-;:79;;;;:::i;:::-;:92;;;;:::i;:::-;9723:110;;9864:27;9894:6;9864:36;;9957:20;9935:19;:42;9931:157;;;10036:20;10014:42;;9931:157;10118:46;10135:19;10156:7;10118:16;:46::i;:::-;9692:500;;9651:541;9542:673;9519:696;9473:761;10257:5;10256:6;:19;;;;;10267:8;10266:9;10256:19;10252:39;;;10287:4;10277:14;;10252:39;9257:1067;10342:13;:17;10356:2;10342:17;;;;;;;;;;;;;;;;;;;;;;;;;10338:71;;;10389:4;10380:13;;10338:71;9196:1224;10451:13;:19;10465:4;10451:19;;;;;;;;;;;;;;;;;;;;;;;;;10450:20;:55;;;;;10488:13;:17;10502:2;10488:17;;;;;;;;;;;;;;;;;;;;;;;;;10487:18;10450:55;:92;;;;;10523:13;:19;10537:4;10523:19;;;;;;;;;;;;;;;;;;;;;;;;;10522:20;10450:92;:127;;;;;10560:13;:17;10574:2;10560:17;;;;;;;;;;;;;;;;;;;;;;;;;10559:18;10450:127;10432:226;;;10613:4;10604:13;;10642:4;10632:14;;10432:226;10670:168;10699:4;10718:2;10735:6;10756:7;10778:6;10799:5;10819:8;10670:14;:168::i;:::-;10871:4;10855:21;;:4;:21;;;10851:151;;10897:6;10893:62;;;10924:15;10934:4;10924:9;:15::i;:::-;10893:62;10969:21;10983:6;10969:13;:21::i;:::-;10851:151;8176:2833;;;;;8073:2936;;;;:::o;19840:259::-;19933:4;19971:6;19950:9;:17;19960:6;19950:17;;;;;;;;;;;;;;;;:27;;;;;;;:::i;:::-;;;;;;;;20012:6;19988:9;:20;19998:9;19988:20;;;;;;;;;;;;;;;;:30;;;;;;;:::i;:::-;;;;;;;;20051:9;20034:35;;20043:6;20034:35;;;20062:6;20034:35;;;;;;:::i;:::-;;;;;;;;20087:4;20080:11;;19840:259;;;;;:::o;11019:448::-;11069:10;11091:18;11122:9;;;;;;;;;;;11091:41;;11144:7;11152:10;11167:8;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11143:46;;;;;;;;;11202:18;11223:5;;;;;;;;;;;11202:26;;11239:9;11284:4;11263:26;;:10;:26;;;11259:104;;;11310:2;11306:6;;11259:104;;;11349:2;11345:6;;11259:104;11375:8;11393:10;11386:28;;;11423:8;11386:47;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11375:58;;11458:1;11452:3;:7;11444:15;;11080:387;;;;;;11019:448;:::o;11475:458::-;11528:13;11553:18;11584:9;;;;;;;;;;;11553:41;;11606:7;11614:10;11629:8;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11605:46;;;;;;;;;11664:18;11685:5;;;;;;;;;;;11664:26;;11701:9;11746:4;11725:26;;:10;:26;;;11721:104;;;11772:2;11768:6;;11721:104;;;11811:2;11807:6;;11721:104;11837:8;11855:10;11848:28;;;11885:8;11848:47;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11837:58;;11922:3;11917:1;:8;;11906:19;;11542:391;;;;;;11475:458;:::o;15269:1597::-;4042:4;4033:6;;:13;;;;;;;;;;;;;;;;;;15379:1:::1;15368:7;:12:::0;15364:25;15382:7:::1;15364:25;15410:7;15399:18;;;;;:::i;:::-;;;15428:13;15457:9;;15444:10;;:22;;;;:::i;:::-;15428:38;;15477:16;15518:7;15510:5;15496:11;:19;;;;:::i;:::-;:29;;;;:::i;:::-;15477:48;;15538:21;15576:1;15562:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15538:40;;15607:4;15589;15594:1;15589:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;15633:5;;;;;;;;;;;15623:4;15628:1;15623:7;;;;;;;;:::i;:::-;;;;;;;:15;;;;;;;;;::::0;::::1;15653:11;;;;;;;;;;;:65;;;15747:8;15733:11;:22;;;;:::i;:::-;15770:1;15786:4;15813:17;;;;;;;;;;;15846:15;15653:219;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;15649:257;;15889:14;15901:1;15889:14;;;;;;:::i;:::-;;;;;;;;15649:257;;;;15929:5;15918:16;;;;;:::i;:::-;;;15947:11;15968:5;;;;;;;;;;;15947:27;;15985:19;16007:4;:14;;;16030:17;;;;;;;;;;;16007:42;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;15985:64;;16060:18;16130:7;16126:1;16110:12;;16096:11;;:26;;;;:::i;:::-;16081:11;:42;;;;:::i;:::-;:46;;;;:::i;:::-;:56;;;;:::i;:::-;16060:77;;16165:1;16152:10;:14;16148:267;;;16182:17;16219:1;16215;16202:10;:14;;;;:::i;:::-;:18;;;;:::i;:::-;16182:38;;16235:4;:17;;;16261;;;;;;;;;;;16281:11;;;;;;;;;;;16294:9;16235:69;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;16319:4;:17;;;16345;;;;;;;;;;;16365:13;;;;;;;;;;;16393:9;16380:10;:22;;;;:::i;:::-;16319:84;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;16167:248;16148:267;16425:4;:17;;;16451;;;;;;;;;;;16479:4;16500:10;16486:11;:24;;;;:::i;:::-;16425:86;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;16539:1;16528:8;:12;16524:335;;;16557:14;16596:7;16588:5;16574:11;:19;;;;:::i;:::-;:29;;;;:::i;:::-;16557:46;;16631:1;16622:6;:10;16618:230;;;16657:11;;;;;;;;;;;:24;;;16712:4;16719:5;;;;;;;;;;;16726:8;16736:6;16744:1;16747::::0;16750:13:::1;;;;;;;;;;;16765:15;16657:142;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;16653:180;;16816:14;16828:1;16816:14;;;;;;:::i;:::-;;;;;;;;16653:180;;;;;;;16618:230;16542:317;16524:335;15353:1513;;;;;;4057:1;4078:5:::0;4069:6;;:14;;;;;;;;;;;;;;;;;;15269:1597;;:::o;11941:1775::-;12200:7;12180:9;:17;12190:6;12180:17;;;;;;;;;;;;;;;;:27;;;;:::i;:::-;12160:9;:17;12170:6;12160:17;;;;;;;;;;;;;;;:47;;;;12218:17;12252:7;12248:570;;;12276:15;12310:6;12306:197;;;12383:10;;12362:18;;12347:12;;:33;;;;:::i;:::-;:46;;;;:::i;:::-;12337:56;;12306:197;;;12478:9;;12458:17;;12444:11;;:31;;;;:::i;:::-;:43;;;;:::i;:::-;12434:53;;12306:197;12519:18;12560:5;12550:7;12540;:17;;;;:::i;:::-;:25;;;;:::i;:::-;12519:46;;12597:1;12584:10;:14;12580:227;;;12632:10;12619:23;;;;;:::i;:::-;;;12661:130;12697:6;12734:4;12762:10;12661:13;:130::i;:::-;12580:227;12261:557;;12248:570;12834:5;:31;;;;;12844:13;:21;12858:6;12844:21;;;;;;;;;;;;;;;;;;;;;;;;;12843:22;12834:31;:60;;;;;12870:13;:24;12884:9;12870:24;;;;;;;;;;;;;;;;;;;;;;;;;12869:25;12834:60;12830:388;;;12911:29;13007:5;12990:13;:11;:13::i;:::-;12980:7;:23;;;;:::i;:::-;12979:33;;;;:::i;:::-;12955:57;;13057:1;13033:21;:25;13029:178;;;13092:21;13079:34;;;;;:::i;:::-;;;13132:59;13146:6;13162:4;13169:21;13132:13;:59::i;:::-;13029:178;12896:322;12830:388;13234:8;:34;;;;;13247:13;:21;13261:6;13247:21;;;;;;;;;;;;;;;;;;;;;;;;;13246:22;13234:34;:63;;;;;13273:13;:24;13287:9;13273:24;;;;;;;;;;;;;;;;;;;;;;;;;13272:25;13234:63;13230:411;;;13314:32;13419:5;13399:16;:14;:16::i;:::-;13389:7;:26;;;;:::i;:::-;13388:36;;;;:::i;:::-;13361:63;;13472:1;13445:24;:28;13441:189;;;13507:24;13494:37;;;;;:::i;:::-;;;13550:64;13564:6;13580;13589:24;13550:13;:64::i;:::-;13441:189;13299:342;13230:411;13655:53;13669:6;13677:9;13698;13688:7;:19;;;;:::i;:::-;13655:13;:53::i;:::-;12149:1567;11941:1775;;;;;;;:::o;19438:386::-;19489:12;19542:3;19530:16;19522:24;;19568:1;19561:4;:8;19557:47;;;19586:7;;;19557:47;19623:11;:16;19635:3;19623:16;;;;;;;;;;;;;;;;19618:1;:21;19614:203;;19665:7;:14;;;;19660:1;:19;:40;;;;19697:3;19683:17;;:7;19691:1;19683:10;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;:17;;;;19660:40;19656:150;;;19740:7;:14;;;;19721:11;:16;19733:3;19721:16;;;;;;;;;;;;;;;:33;;;;19773:7;19786:3;19773:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19656:150;19614:203;19478:346;19438:386;;:::o;20405:1440::-;20511:12;20486:22;;20464:19;;:44;;;;:::i;:::-;:59;20540:7;20460:98;20570:11;20591:5;;;;;;;;;;;20570:27;;20610:15;20628:4;:14;;;20651:4;20628:29;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;20610:47;;20682:21;;20672:7;:31;20668:70;;;20720:7;;;;20668:70;20750:16;20776:9;;;;;;;;;;;20750:36;;20797:19;20819:9;:21;;;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;20797:45;;20855:19;20885:20;20916:14;20943:24;20970:7;:14;;;;20943:41;;20997:15;21027:18;21060:15;21078:9;21060:27;;21100:691;21117:3;21107:7;:13;:46;;;;;21137:16;21124:10;:29;21107:46;21100:691;;;21190:16;21174:12;;:32;21170:89;;21242:1;21227:12;:16;;;;21170:89;21287:7;21295:12;;21287:21;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;21273:35;;21338:9;:19;;;21358:11;21338:32;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;21323:47;;21404:1;21389:12;:16;:47;;;;;21410:13;:26;21424:11;21410:26;;;;;;;;;;;;;;;;;;;;;;;;;21409:27;21389:47;21385:247;;;21491:14;21476:12;21466:7;:22;;;;:::i;:::-;:39;;;;:::i;:::-;21457:48;;21537:1;21528:6;:10;21524:93;;;21563:4;:13;;;21577:11;21590:6;21563:34;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;21524:93;21385:247;21679:9;21669:7;:19;;;;:::i;:::-;21658:7;:31;;;;:::i;:::-;21648:41;;21714:9;21704:19;;21738:12;;:14;;;;;;;;;:::i;:::-;;;;;;21767:12;;;;;:::i;:::-;;;;21100:691;;;21825:12;21803:19;:34;;;;20449:1396;;;;;;;;;;;20405:1440;;:::o;16874:213::-;17027:7;17011:9;:13;17021:2;17011:13;;;;;;;;;;;;;;;;:23;;;;:::i;:::-;16995:9;:13;17005:2;16995:13;;;;;;;;;;;;;;;:39;;;;17067:2;17050:29;;17059:6;17050:29;;;17071:7;17050:29;;;;;;:::i;:::-;;;;;;;;16874:213;;;:::o;88:117:1:-;197:1;194;187:12;211:117;320:1;317;310:12;334:126;371:7;411:42;404:5;400:54;389:65;;334:126;;;:::o;466:96::-;503:7;532:24;550:5;532:24;:::i;:::-;521:35;;466:96;;;:::o;568:122::-;641:24;659:5;641:24;:::i;:::-;634:5;631:35;621:63;;680:1;677;670:12;621:63;568:122;:::o;696:139::-;742:5;780:6;767:20;758:29;;796:33;823:5;796:33;:::i;:::-;696:139;;;;:::o;841:329::-;900:6;949:2;937:9;928:7;924:23;920:32;917:119;;;955:79;;:::i;:::-;917:119;1075:1;1100:53;1145:7;1136:6;1125:9;1121:22;1100:53;:::i;:::-;1090:63;;1046:117;841:329;;;;:::o;1176:90::-;1210:7;1253:5;1246:13;1239:21;1228:32;;1176:90;;;:::o;1272:109::-;1353:21;1368:5;1353:21;:::i;:::-;1348:3;1341:34;1272:109;;:::o;1387:210::-;1474:4;1512:2;1501:9;1497:18;1489:26;;1525:65;1587:1;1576:9;1572:17;1563:6;1525:65;:::i;:::-;1387:210;;;;:::o;1603:116::-;1673:21;1688:5;1673:21;:::i;:::-;1666:5;1663:32;1653:60;;1709:1;1706;1699:12;1653:60;1603:116;:::o;1725:133::-;1768:5;1806:6;1793:20;1784:29;;1822:30;1846:5;1822:30;:::i;:::-;1725:133;;;;:::o;1864:468::-;1929:6;1937;1986:2;1974:9;1965:7;1961:23;1957:32;1954:119;;;1992:79;;:::i;:::-;1954:119;2112:1;2137:53;2182:7;2173:6;2162:9;2158:22;2137:53;:::i;:::-;2127:63;;2083:117;2239:2;2265:50;2307:7;2298:6;2287:9;2283:22;2265:50;:::i;:::-;2255:60;;2210:115;1864:468;;;;;:::o;2338:99::-;2390:6;2424:5;2418:12;2408:22;;2338:99;;;:::o;2443:169::-;2527:11;2561:6;2556:3;2549:19;2601:4;2596:3;2592:14;2577:29;;2443:169;;;;:::o;2618:246::-;2699:1;2709:113;2723:6;2720:1;2717:13;2709:113;;;2808:1;2803:3;2799:11;2793:18;2789:1;2784:3;2780:11;2773:39;2745:2;2742:1;2738:10;2733:15;;2709:113;;;2856:1;2847:6;2842:3;2838:16;2831:27;2680:184;2618:246;;;:::o;2870:102::-;2911:6;2962:2;2958:7;2953:2;2946:5;2942:14;2938:28;2928:38;;2870:102;;;:::o;2978:377::-;3066:3;3094:39;3127:5;3094:39;:::i;:::-;3149:71;3213:6;3208:3;3149:71;:::i;:::-;3142:78;;3229:65;3287:6;3282:3;3275:4;3268:5;3264:16;3229:65;:::i;:::-;3319:29;3341:6;3319:29;:::i;:::-;3314:3;3310:39;3303:46;;3070:285;2978:377;;;;:::o;3361:313::-;3474:4;3512:2;3501:9;3497:18;3489:26;;3561:9;3555:4;3551:20;3547:1;3536:9;3532:17;3525:47;3589:78;3662:4;3653:6;3589:78;:::i;:::-;3581:86;;3361:313;;;;:::o;3680:77::-;3717:7;3746:5;3735:16;;3680:77;;;:::o;3763:122::-;3836:24;3854:5;3836:24;:::i;:::-;3829:5;3826:35;3816:63;;3875:1;3872;3865:12;3816:63;3763:122;:::o;3891:139::-;3937:5;3975:6;3962:20;3953:29;;3991:33;4018:5;3991:33;:::i;:::-;3891:139;;;;:::o;4036:474::-;4104:6;4112;4161:2;4149:9;4140:7;4136:23;4132:32;4129:119;;;4167:79;;:::i;:::-;4129:119;4287:1;4312:53;4357:7;4348:6;4337:9;4333:22;4312:53;:::i;:::-;4302:63;;4258:117;4414:2;4440:53;4485:7;4476:6;4465:9;4461:22;4440:53;:::i;:::-;4430:63;;4385:118;4036:474;;;;;:::o;4516:118::-;4603:24;4621:5;4603:24;:::i;:::-;4598:3;4591:37;4516:118;;:::o;4640:222::-;4733:4;4771:2;4760:9;4756:18;4748:26;;4784:71;4852:1;4841:9;4837:17;4828:6;4784:71;:::i;:::-;4640:222;;;;:::o;4868:329::-;4927:6;4976:2;4964:9;4955:7;4951:23;4947:32;4944:119;;;4982:79;;:::i;:::-;4944:119;5102:1;5127:53;5172:7;5163:6;5152:9;5148:22;5127:53;:::i;:::-;5117:63;;5073:117;4868:329;;;;:::o;5203:117::-;5312:1;5309;5302:12;5326:117;5435:1;5432;5425:12;5449:117;5558:1;5555;5548:12;5589:568;5662:8;5672:6;5722:3;5715:4;5707:6;5703:17;5699:27;5689:122;;5730:79;;:::i;:::-;5689:122;5843:6;5830:20;5820:30;;5873:18;5865:6;5862:30;5859:117;;;5895:79;;:::i;:::-;5859:117;6009:4;6001:6;5997:17;5985:29;;6063:3;6055:4;6047:6;6043:17;6033:8;6029:32;6026:41;6023:128;;;6070:79;;:::i;:::-;6023:128;5589:568;;;;;:::o;6163:704::-;6258:6;6266;6274;6323:2;6311:9;6302:7;6298:23;6294:32;6291:119;;;6329:79;;:::i;:::-;6291:119;6477:1;6466:9;6462:17;6449:31;6507:18;6499:6;6496:30;6493:117;;;6529:79;;:::i;:::-;6493:117;6642:80;6714:7;6705:6;6694:9;6690:22;6642:80;:::i;:::-;6624:98;;;;6420:312;6771:2;6797:53;6842:7;6833:6;6822:9;6818:22;6797:53;:::i;:::-;6787:63;;6742:118;6163:704;;;;;:::o;6873:60::-;6901:3;6922:5;6915:12;;6873:60;;;:::o;6939:142::-;6989:9;7022:53;7040:34;7049:24;7067:5;7049:24;:::i;:::-;7040:34;:::i;:::-;7022:53;:::i;:::-;7009:66;;6939:142;;;:::o;7087:126::-;7137:9;7170:37;7201:5;7170:37;:::i;:::-;7157:50;;7087:126;;;:::o;7219:145::-;7288:9;7321:37;7352:5;7321:37;:::i;:::-;7308:50;;7219:145;;;:::o;7370:169::-;7476:56;7526:5;7476:56;:::i;:::-;7471:3;7464:69;7370:169;;:::o;7545:260::-;7657:4;7695:2;7684:9;7680:18;7672:26;;7708:90;7795:1;7784:9;7780:17;7771:6;7708:90;:::i;:::-;7545:260;;;;:::o;7811:619::-;7888:6;7896;7904;7953:2;7941:9;7932:7;7928:23;7924:32;7921:119;;;7959:79;;:::i;:::-;7921:119;8079:1;8104:53;8149:7;8140:6;8129:9;8125:22;8104:53;:::i;:::-;8094:63;;8050:117;8206:2;8232:53;8277:7;8268:6;8257:9;8253:22;8232:53;:::i;:::-;8222:63;;8177:118;8334:2;8360:53;8405:7;8396:6;8385:9;8381:22;8360:53;:::i;:::-;8350:63;;8305:118;7811:619;;;;;:::o;8436:::-;8513:6;8521;8529;8578:2;8566:9;8557:7;8553:23;8549:32;8546:119;;;8584:79;;:::i;:::-;8546:119;8704:1;8729:53;8774:7;8765:6;8754:9;8750:22;8729:53;:::i;:::-;8719:63;;8675:117;8831:2;8857:53;8902:7;8893:6;8882:9;8878:22;8857:53;:::i;:::-;8847:63;;8802:118;8959:2;8985:53;9030:7;9021:6;9010:9;9006:22;8985:53;:::i;:::-;8975:63;;8930:118;8436:619;;;;;:::o;9061:86::-;9096:7;9136:4;9129:5;9125:16;9114:27;;9061:86;;;:::o;9153:112::-;9236:22;9252:5;9236:22;:::i;:::-;9231:3;9224:35;9153:112;;:::o;9271:214::-;9360:4;9398:2;9387:9;9383:18;9375:26;;9411:67;9475:1;9464:9;9460:17;9451:6;9411:67;:::i;:::-;9271:214;;;;:::o;9491:118::-;9578:24;9596:5;9578:24;:::i;:::-;9573:3;9566:37;9491:118;;:::o;9615:222::-;9708:4;9746:2;9735:9;9731:18;9723:26;;9759:71;9827:1;9816:9;9812:17;9803:6;9759:71;:::i;:::-;9615:222;;;;:::o;9843:474::-;9911:6;9919;9968:2;9956:9;9947:7;9943:23;9939:32;9936:119;;;9974:79;;:::i;:::-;9936:119;10094:1;10119:53;10164:7;10155:6;10144:9;10140:22;10119:53;:::i;:::-;10109:63;;10065:117;10221:2;10247:53;10292:7;10283:6;10272:9;10268:22;10247:53;:::i;:::-;10237:63;;10192:118;9843:474;;;;;:::o;10323:150::-;10397:9;10430:37;10461:5;10430:37;:::i;:::-;10417:50;;10323:150;;;:::o;10479:179::-;10590:61;10645:5;10590:61;:::i;:::-;10585:3;10578:74;10479:179;;:::o;10664:270::-;10781:4;10819:2;10808:9;10804:18;10796:26;;10832:95;10924:1;10913:9;10909:17;10900:6;10832:95;:::i;:::-;10664:270;;;;:::o;10940:323::-;10996:6;11045:2;11033:9;11024:7;11020:23;11016:32;11013:119;;;11051:79;;:::i;:::-;11013:119;11171:1;11196:50;11238:7;11229:6;11218:9;11214:22;11196:50;:::i;:::-;11186:60;;11142:114;10940:323;;;;:::o;11269:474::-;11337:6;11345;11394:2;11382:9;11373:7;11369:23;11365:32;11362:119;;;11400:79;;:::i;:::-;11362:119;11520:1;11545:53;11590:7;11581:6;11570:9;11566:22;11545:53;:::i;:::-;11535:63;;11491:117;11647:2;11673:53;11718:7;11709:6;11698:9;11694:22;11673:53;:::i;:::-;11663:63;;11618:118;11269:474;;;;;:::o;11749:156::-;11889:8;11885:1;11877:6;11873:14;11866:32;11749:156;:::o;11911:365::-;12053:3;12074:66;12138:1;12133:3;12074:66;:::i;:::-;12067:73;;12149:93;12238:3;12149:93;:::i;:::-;12267:2;12262:3;12258:12;12251:19;;11911:365;;;:::o;12282:419::-;12448:4;12486:2;12475:9;12471:18;12463:26;;12535:9;12529:4;12525:20;12521:1;12510:9;12506:17;12499:47;12563:131;12689:4;12563:131;:::i;:::-;12555:139;;12282:419;;;:::o;12707:180::-;12755:77;12752:1;12745:88;12852:4;12849:1;12842:15;12876:4;12873:1;12866:15;12893:320;12937:6;12974:1;12968:4;12964:12;12954:22;;13021:1;13015:4;13011:12;13042:18;13032:81;;13098:4;13090:6;13086:17;13076:27;;13032:81;13160:2;13152:6;13149:14;13129:18;13126:38;13123:84;;13179:18;;:::i;:::-;13123:84;12944:269;12893:320;;;:::o;13219:332::-;13340:4;13378:2;13367:9;13363:18;13355:26;;13391:71;13459:1;13448:9;13444:17;13435:6;13391:71;:::i;:::-;13472:72;13540:2;13529:9;13525:18;13516:6;13472:72;:::i;:::-;13219:332;;;;;:::o;13557:137::-;13611:5;13642:6;13636:13;13627:22;;13658:30;13682:5;13658:30;:::i;:::-;13557:137;;;;:::o;13700:345::-;13767:6;13816:2;13804:9;13795:7;13791:23;13787:32;13784:119;;;13822:79;;:::i;:::-;13784:119;13942:1;13967:61;14020:7;14011:6;14000:9;13996:22;13967:61;:::i;:::-;13957:71;;13913:125;13700:345;;;;:::o;14051:180::-;14099:77;14096:1;14089:88;14196:4;14193:1;14186:15;14220:4;14217:1;14210:15;14237:410;14277:7;14300:20;14318:1;14300:20;:::i;:::-;14295:25;;14334:20;14352:1;14334:20;:::i;:::-;14329:25;;14389:1;14386;14382:9;14411:30;14429:11;14411:30;:::i;:::-;14400:41;;14590:1;14581:7;14577:15;14574:1;14571:22;14551:1;14544:9;14524:83;14501:139;;14620:18;;:::i;:::-;14501:139;14285:362;14237:410;;;;:::o;14653:180::-;14701:77;14698:1;14691:88;14798:4;14795:1;14788:15;14822:4;14819:1;14812:15;14839:233;14878:3;14901:24;14919:5;14901:24;:::i;:::-;14892:33;;14947:66;14940:5;14937:77;14934:103;;15017:18;;:::i;:::-;14934:103;15064:1;15057:5;15053:13;15046:20;;14839:233;;;:::o;15078:194::-;15118:4;15138:20;15156:1;15138:20;:::i;:::-;15133:25;;15172:20;15190:1;15172:20;:::i;:::-;15167:25;;15216:1;15213;15209:9;15201:17;;15240:1;15234:4;15231:11;15228:37;;;15245:18;;:::i;:::-;15228:37;15078:194;;;;:::o;15278:162::-;15418:14;15414:1;15406:6;15402:14;15395:38;15278:162;:::o;15446:366::-;15588:3;15609:67;15673:2;15668:3;15609:67;:::i;:::-;15602:74;;15685:93;15774:3;15685:93;:::i;:::-;15803:2;15798:3;15794:12;15787:19;;15446:366;;;:::o;15818:419::-;15984:4;16022:2;16011:9;16007:18;15999:26;;16071:9;16065:4;16061:20;16057:1;16046:9;16042:17;16035:47;16099:131;16225:4;16099:131;:::i;:::-;16091:139;;15818:419;;;:::o;16243:191::-;16283:3;16302:20;16320:1;16302:20;:::i;:::-;16297:25;;16336:20;16354:1;16336:20;:::i;:::-;16331:25;;16379:1;16376;16372:9;16365:16;;16400:3;16397:1;16394:10;16391:36;;;16407:18;;:::i;:::-;16391:36;16243:191;;;;:::o;16440:164::-;16580:16;16576:1;16568:6;16564:14;16557:40;16440:164;:::o;16610:366::-;16752:3;16773:67;16837:2;16832:3;16773:67;:::i;:::-;16766:74;;16849:93;16938:3;16849:93;:::i;:::-;16967:2;16962:3;16958:12;16951:19;;16610:366;;;:::o;16982:419::-;17148:4;17186:2;17175:9;17171:18;17163:26;;17235:9;17229:4;17225:20;17221:1;17210:9;17206:17;17199:47;17263:131;17389:4;17263:131;:::i;:::-;17255:139;;16982:419;;;:::o;17407:166::-;17547:18;17543:1;17535:6;17531:14;17524:42;17407:166;:::o;17579:366::-;17721:3;17742:67;17806:2;17801:3;17742:67;:::i;:::-;17735:74;;17818:93;17907:3;17818:93;:::i;:::-;17936:2;17931:3;17927:12;17920:19;;17579:366;;;:::o;17951:419::-;18117:4;18155:2;18144:9;18140:18;18132:26;;18204:9;18198:4;18194:20;18190:1;18179:9;18175:17;18168:47;18232:131;18358:4;18232:131;:::i;:::-;18224:139;;17951:419;;;:::o;18376:158::-;18516:10;18512:1;18504:6;18500:14;18493:34;18376:158;:::o;18540:365::-;18682:3;18703:66;18767:1;18762:3;18703:66;:::i;:::-;18696:73;;18778:93;18867:3;18778:93;:::i;:::-;18896:2;18891:3;18887:12;18880:19;;18540:365;;;:::o;18911:419::-;19077:4;19115:2;19104:9;19100:18;19092:26;;19164:9;19158:4;19154:20;19150:1;19139:9;19135:17;19128:47;19192:131;19318:4;19192:131;:::i;:::-;19184:139;;18911:419;;;:::o;19336:180::-;19384:77;19381:1;19374:88;19481:4;19478:1;19471:15;19505:4;19502:1;19495:15;19522:143;19579:5;19610:6;19604:13;19595:22;;19626:33;19653:5;19626:33;:::i;:::-;19522:143;;;;:::o;19671:351::-;19741:6;19790:2;19778:9;19769:7;19765:23;19761:32;19758:119;;;19796:79;;:::i;:::-;19758:119;19916:1;19941:64;19997:7;19988:6;19977:9;19973:22;19941:64;:::i;:::-;19931:74;;19887:128;19671:351;;;;:::o;20028:85::-;20073:7;20102:5;20091:16;;20028:85;;;:::o;20119:158::-;20177:9;20210:61;20228:42;20237:32;20263:5;20237:32;:::i;:::-;20228:42;:::i;:::-;20210:61;:::i;:::-;20197:74;;20119:158;;;:::o;20283:147::-;20378:45;20417:5;20378:45;:::i;:::-;20373:3;20366:58;20283:147;;:::o;20436:114::-;20503:6;20537:5;20531:12;20521:22;;20436:114;;;:::o;20556:184::-;20655:11;20689:6;20684:3;20677:19;20729:4;20724:3;20720:14;20705:29;;20556:184;;;;:::o;20746:132::-;20813:4;20836:3;20828:11;;20866:4;20861:3;20857:14;20849:22;;20746:132;;;:::o;20884:108::-;20961:24;20979:5;20961:24;:::i;:::-;20956:3;20949:37;20884:108;;:::o;20998:179::-;21067:10;21088:46;21130:3;21122:6;21088:46;:::i;:::-;21166:4;21161:3;21157:14;21143:28;;20998:179;;;;:::o;21183:113::-;21253:4;21285;21280:3;21276:14;21268:22;;21183:113;;;:::o;21332:732::-;21451:3;21480:54;21528:5;21480:54;:::i;:::-;21550:86;21629:6;21624:3;21550:86;:::i;:::-;21543:93;;21660:56;21710:5;21660:56;:::i;:::-;21739:7;21770:1;21755:284;21780:6;21777:1;21774:13;21755:284;;;21856:6;21850:13;21883:63;21942:3;21927:13;21883:63;:::i;:::-;21876:70;;21969:60;22022:6;21969:60;:::i;:::-;21959:70;;21815:224;21802:1;21799;21795:9;21790:14;;21755:284;;;21759:14;22055:3;22048:10;;21456:608;;;21332:732;;;;:::o;22070:831::-;22333:4;22371:3;22360:9;22356:19;22348:27;;22385:71;22453:1;22442:9;22438:17;22429:6;22385:71;:::i;:::-;22466:80;22542:2;22531:9;22527:18;22518:6;22466:80;:::i;:::-;22593:9;22587:4;22583:20;22578:2;22567:9;22563:18;22556:48;22621:108;22724:4;22715:6;22621:108;:::i;:::-;22613:116;;22739:72;22807:2;22796:9;22792:18;22783:6;22739:72;:::i;:::-;22821:73;22889:3;22878:9;22874:19;22865:6;22821:73;:::i;:::-;22070:831;;;;;;;;:::o;22907:166::-;23047:18;23043:1;23035:6;23031:14;23024:42;22907:166;:::o;23079:366::-;23221:3;23242:67;23306:2;23301:3;23242:67;:::i;:::-;23235:74;;23318:93;23407:3;23318:93;:::i;:::-;23436:2;23431:3;23427:12;23420:19;;23079:366;;;:::o;23451:419::-;23617:4;23655:2;23644:9;23640:18;23632:26;;23704:9;23698:4;23694:20;23690:1;23679:9;23675:17;23668:47;23732:131;23858:4;23732:131;:::i;:::-;23724:139;;23451:419;;;:::o;23876:79::-;23915:7;23944:5;23933:16;;23876:79;;;:::o;23961:157::-;24066:45;24086:24;24104:5;24086:24;:::i;:::-;24066:45;:::i;:::-;24061:3;24054:58;23961:157;;:::o;24124:538::-;24292:3;24307:75;24378:3;24369:6;24307:75;:::i;:::-;24407:2;24402:3;24398:12;24391:19;;24420:75;24491:3;24482:6;24420:75;:::i;:::-;24520:2;24515:3;24511:12;24504:19;;24533:75;24604:3;24595:6;24533:75;:::i;:::-;24633:2;24628:3;24624:12;24617:19;;24653:3;24646:10;;24124:538;;;;;;:::o;24668:158::-;24808:10;24804:1;24796:6;24792:14;24785:34;24668:158;:::o;24832:365::-;24974:3;24995:66;25059:1;25054:3;24995:66;:::i;:::-;24988:73;;25070:93;25159:3;25070:93;:::i;:::-;25188:2;25183:3;25179:12;25172:19;;24832:365;;;:::o;25203:419::-;25369:4;25407:2;25396:9;25392:18;25384:26;;25456:9;25450:4;25446:20;25442:1;25431:9;25427:17;25420:47;25484:131;25610:4;25484:131;:::i;:::-;25476:139;;25203:419;;;:::o;25628:114::-;25665:7;25705:30;25698:5;25694:42;25683:53;;25628:114;;;:::o;25748:122::-;25821:24;25839:5;25821:24;:::i;:::-;25814:5;25811:35;25801:63;;25860:1;25857;25850:12;25801:63;25748:122;:::o;25876:143::-;25933:5;25964:6;25958:13;25949:22;;25980:33;26007:5;25980:33;:::i;:::-;25876:143;;;;:::o;26025:93::-;26061:7;26101:10;26094:5;26090:22;26079:33;;26025:93;;;:::o;26124:120::-;26196:23;26213:5;26196:23;:::i;:::-;26189:5;26186:34;26176:62;;26234:1;26231;26224:12;26176:62;26124:120;:::o;26250:141::-;26306:5;26337:6;26331:13;26322:22;;26353:32;26379:5;26353:32;:::i;:::-;26250:141;;;;:::o;26397:661::-;26484:6;26492;26500;26549:2;26537:9;26528:7;26524:23;26520:32;26517:119;;;26555:79;;:::i;:::-;26517:119;26675:1;26700:64;26756:7;26747:6;26736:9;26732:22;26700:64;:::i;:::-;26690:74;;26646:128;26813:2;26839:64;26895:7;26886:6;26875:9;26871:22;26839:64;:::i;:::-;26829:74;;26784:129;26952:2;26978:63;27033:7;27024:6;27013:9;27009:22;26978:63;:::i;:::-;26968:73;;26923:128;26397:661;;;;;:::o;27064:180::-;27112:77;27109:1;27102:88;27209:4;27206:1;27199:15;27233:4;27230:1;27223:15;27250:185;27290:1;27307:20;27325:1;27307:20;:::i;:::-;27302:25;;27341:20;27359:1;27341:20;:::i;:::-;27336:25;;27380:1;27370:35;;27385:18;;:::i;:::-;27370:35;27427:1;27424;27420:9;27415:14;;27250:185;;;;:::o;27441:238::-;27542:4;27580:2;27569:9;27565:18;27557:26;;27593:79;27669:1;27658:9;27654:17;27645:6;27593:79;:::i;:::-;27441:238;;;;:::o;27685:442::-;27834:4;27872:2;27861:9;27857:18;27849:26;;27885:71;27953:1;27942:9;27938:17;27929:6;27885:71;:::i;:::-;27966:72;28034:2;28023:9;28019:18;28010:6;27966:72;:::i;:::-;28048;28116:2;28105:9;28101:18;28092:6;28048:72;:::i;:::-;27685:442;;;;;;:::o;28133:1029::-;28438:4;28476:3;28465:9;28461:19;28453:27;;28490:71;28558:1;28547:9;28543:17;28534:6;28490:71;:::i;:::-;28571:72;28639:2;28628:9;28624:18;28615:6;28571:72;:::i;:::-;28653;28721:2;28710:9;28706:18;28697:6;28653:72;:::i;:::-;28735;28803:2;28792:9;28788:18;28779:6;28735:72;:::i;:::-;28817:81;28893:3;28882:9;28878:19;28869:6;28817:81;:::i;:::-;28908;28984:3;28973:9;28969:19;28960:6;28908:81;:::i;:::-;28999:73;29067:3;29056:9;29052:19;29043:6;28999:73;:::i;:::-;29082;29150:3;29139:9;29135:19;29126:6;29082:73;:::i;:::-;28133:1029;;;;;;;;;;;:::o;29168:663::-;29256:6;29264;29272;29321:2;29309:9;29300:7;29296:23;29292:32;29289:119;;;29327:79;;:::i;:::-;29289:119;29447:1;29472:64;29528:7;29519:6;29508:9;29504:22;29472:64;:::i;:::-;29462:74;;29418:128;29585:2;29611:64;29667:7;29658:6;29647:9;29643:22;29611:64;:::i;:::-;29601:74;;29556:129;29724:2;29750:64;29806:7;29797:6;29786:9;29782:22;29750:64;:::i;:::-;29740:74;;29695:129;29168:663;;;;;:::o;29837:85::-;29882:7;29911:5;29900:16;;29837:85;;;:::o;29928:158::-;29986:9;30019:61;30037:42;30046:32;30072:5;30046:32;:::i;:::-;30037:42;:::i;:::-;30019:61;:::i;:::-;30006:74;;29928:158;;;:::o;30092:147::-;30187:45;30226:5;30187:45;:::i;:::-;30182:3;30175:58;30092:147;;:::o;30245:238::-;30346:4;30384:2;30373:9;30369:18;30361:26;;30397:79;30473:1;30462:9;30458:17;30449:6;30397:79;:::i;:::-;30245:238;;;;:::o

Swarm Source

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