BNB Price: $615.91 (+3.45%)
 

Overview

BNB Balance

BNB Smart Chain LogoBNB Smart Chain LogoBNB Smart Chain Logo0.2361 BNB

BNB Value

$145.42 (@ $615.91/BNB)

Token Holdings

More Info

Private Name Tags

TokenTracker

Multichain Info

No addresses found
Transaction Hash
Block
From
To
Transfer924200802026-04-14 4:09:282 mins ago1776139768IN
0x1d327E28...BB5e6D2dB
0 BNB0.000007070.06565
Transfer924200282026-04-14 4:09:042 mins ago1776139744IN
0x1d327E28...BB5e6D2dB
0 BNB0.000007070.06565
Transfer924198922026-04-14 4:08:033 mins ago1776139683IN
0x1d327E28...BB5e6D2dB
0 BNB0.000007070.06565
Transfer924196252026-04-14 4:06:035 mins ago1776139563IN
0x1d327E28...BB5e6D2dB
0 BNB0.000007070.06565
Transfer924195562026-04-14 4:05:326 mins ago1776139532IN
0x1d327E28...BB5e6D2dB
0 BNB0.000007650.06565
Transfer924194862026-04-14 4:05:006 mins ago1776139500IN
0x1d327E28...BB5e6D2dB
0 BNB0.000007070.06565
Transfer924194722026-04-14 4:04:546 mins ago1776139494IN
0x1d327E28...BB5e6D2dB
0 BNB0.0000070.065
Transfer924192642026-04-14 4:03:208 mins ago1776139400IN
0x1d327E28...BB5e6D2dB
0 BNB0.000007070.06565
Transfer924191662026-04-14 4:02:368 mins ago1776139356IN
0x1d327E28...BB5e6D2dB
0 BNB0.000007070.06565
Transfer924190302026-04-14 4:01:359 mins ago1776139295IN
0x1d327E28...BB5e6D2dB
0 BNB0.000007070.06565
Transfer924187222026-04-14 3:59:1612 mins ago1776139156IN
0x1d327E28...BB5e6D2dB
0 BNB0.000007650.06565
Transfer924186242026-04-14 3:58:3213 mins ago1776139112IN
0x1d327E28...BB5e6D2dB
0 BNB0.000007650.06565
Transfer924182592026-04-14 3:55:4715 mins ago1776138947IN
0x1d327E28...BB5e6D2dB
0 BNB0.000007070.06565
Transfer924182232026-04-14 3:55:3116 mins ago1776138931IN
0x1d327E28...BB5e6D2dB
0 BNB0.000007070.06565
Transfer924181962026-04-14 3:55:1916 mins ago1776138919IN
0x1d327E28...BB5e6D2dB
0 BNB0.000007070.06565
Transfer924181672026-04-14 3:55:0616 mins ago1776138906IN
0x1d327E28...BB5e6D2dB
0 BNB0.000007070.06565
Transfer924181422026-04-14 3:54:5516 mins ago1776138895IN
0x1d327E28...BB5e6D2dB
0 BNB0.000007070.06565
Transfer924181362026-04-14 3:54:5216 mins ago1776138892IN
0x1d327E28...BB5e6D2dB
0 BNB0.000007070.06565
Transfer924181172026-04-14 3:54:4316 mins ago1776138883IN
0x1d327E28...BB5e6D2dB
0 BNB0.000007140.0663065
Transfer924180912026-04-14 3:54:3217 mins ago1776138872IN
0x1d327E28...BB5e6D2dB
0 BNB0.000007070.06565
Transfer924180672026-04-14 3:54:2117 mins ago1776138861IN
0x1d327E28...BB5e6D2dB
0 BNB0.000007070.06565
Transfer924180412026-04-14 3:54:0917 mins ago1776138849IN
0x1d327E28...BB5e6D2dB
0 BNB0.000007070.06565
Transfer924180172026-04-14 3:53:5817 mins ago1776138838IN
0x1d327E28...BB5e6D2dB
0 BNB0.000007070.06565
Transfer924179922026-04-14 3:53:4717 mins ago1776138827IN
0x1d327E28...BB5e6D2dB
0 BNB0.000007070.06565
Transfer924179642026-04-14 3:53:3417 mins ago1776138814IN
0x1d327E28...BB5e6D2dB
0 BNB0.000007070.06565
View all transactions

Parent Transaction Hash Block From To
View All Internal Transactions
Cross-Chain Transactions
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
AtlasToken

Compiler Version
v0.8.0+commit.c7dfd78e

Optimization Enabled:
No with 200 runs

Other Settings:
istanbul EvmVersion, MIT license
/**
 *Submitted for verification at BscScan.com on 2025-11-18
*/

// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;

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

    function _msgData() internal view virtual returns (bytes calldata) {
        return msg.data;
    }
}

abstract contract Ownable is Context {
    address private _owner;

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

    constructor() {
        _transferOwnership(_msgSender());
    }

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

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

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

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

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

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

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

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

    function decimals() external view returns (uint256);

    function totalSupply() external view returns (uint256);

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

    function transfer(
        address recipient,
        uint256 amount
    ) external returns (bool);

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

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

    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) external returns (bool);

    event Transfer(address indexed from, address indexed to, uint256 value);

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

library Math {
    function min(uint x, uint y) internal pure returns (uint z) {
        z = x < y ? x : y;
    }

    function sqrt(uint y) internal pure returns (uint z) {
        if (y > 3) {
            z = y;
            uint x = y / 2 + 1;
            while (x < z) {
                z = x;
                x = (y / x + x) / 2;
            }
        } else if (y != 0) {
            z = 1;
        }
    }
}

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

        return c;
    }

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

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

        return c;
    }

    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        if (a == 0) {
            return 0;
        }

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

        return c;
    }

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

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

        return c;
    }

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

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

contract ERC20 is Context, IERC20 {
    using SafeMath for uint256;

    mapping(address => uint256) private _balances;

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

    uint256 private _totalSupply;

    string private _name;
    string private _symbol;
    uint256 private _decimals;

    constructor(string memory name_, string memory symbol_, uint256 decimals_) {
        _name = name_;
        _symbol = symbol_;
        _decimals = decimals_;
    }

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

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

    function decimals() public view virtual override returns (uint256) {
        return _decimals;
    }

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

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

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

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

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

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

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

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

    function _transfer(
        address sender,
        address recipient,
        uint256 amount
    ) internal virtual {
        require(sender != address(0), "ERC20: transfer from the zero address");
        require(recipient != address(0), "ERC20: transfer to the zero address");

        _beforeTokenTransfer(sender, recipient, amount);

        _balances[sender] = _balances[sender].sub(
            amount,
            "ERC20: transfer amount exceeds balance"
        );
        _balances[recipient] = _balances[recipient].add(amount);
        emit Transfer(sender, recipient, amount);
    }

    function _mint(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: mint to the zero address");

        _beforeTokenTransfer(address(0), account, amount);

        _totalSupply = _totalSupply.add(amount);
        _balances[account] = _balances[account].add(amount);
        emit Transfer(address(0), account, amount);
    }

    function _burn(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: burn from the zero address");

        _beforeTokenTransfer(account, address(0), amount);

        _balances[account] = _balances[account].sub(
            amount,
            "ERC20: burn amount exceeds balance"
        );
        _totalSupply = _totalSupply.sub(amount);
        emit Transfer(account, address(0), amount);
    }

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

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

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

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

    function WETH() external pure returns (address);

    function getAmountsOut(
        uint256 amountIn,
        address[] calldata path
    ) external view returns (uint256[] memory amounts);

    function addLiquidity(
        address tokenA,
        address tokenB,
        uint amountADesired,
        uint amountBDesired,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline
    ) external returns (uint amountA, uint amountB, uint liquidity);

    function removeLiquidity(
        address tokenA,
        address tokenB,
        uint liquidity,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline
    ) external returns (uint amountA, uint amountB);

    function swapExactTokensForTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external returns (uint[] memory amounts);

    function swapTokensForExactTokens(
        uint amountOut,
        uint amountInMax,
        address[] calldata path,
        address to,
        uint deadline
    ) external returns (uint[] memory amounts);
}

interface IUniswapV2Router02 is IUniswapV2Router01 {
    function swapExactTokensForTokensSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;

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

interface IUniswapV2Factory {
    function getPair(
        address tokenA,
        address tokenB
    ) external view returns (address pair);

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

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

interface IUniswapV2Pair {
    function decimals() external pure returns (uint8);

    function totalSupply() external view returns (uint);

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

    function token0() external view returns (address);

    function token1() external view returns (address);

    function kLast() external view returns (uint);

    function getReserves()
        external
        view
        returns (uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast);

    function sync() external;

    event Sync(uint112 reserve0, uint112 reserve1);
}

interface SystemContract {
    struct UserInfo{
        address userId; 
        address agent; 
        uint256 isValid;
        uint256 isExist; 
        uint256 isHave; 
        uint256 validNum; 
    }

    function bind(address _user, address _agent) external returns (bool);
    function claimToken(address _user) external returns (uint256);
    function setUserInfo(address _user, uint256 _isValid, uint256 _isHave) external;
    function goSwap() external;
}


contract AtlasToken is ERC20, Ownable{

    using SafeMath for uint256;

    uint256 public debugStep = 0; 

    uint256 public buyFee = 200; 
    uint256 public sellFee = 50;
    uint256 public sellFeeFund = 20; 
    uint256 public sellFeeDead = 30; 

    uint256 public bindAmt = 1 * 10 **18;
    uint256 public stopBurnAtAmt = 0; 
    uint256 public swapTokensAtAmount = 1000 * 10 **18; 

    bool public antiWhaleEnabled = true; 
    uint256 public maxTransactionPercent = 10; 

    uint256 private constant MAX_TOTAL_SUPPLY = 10000000000 * 10 ** 18;  
    
    bool public isMaxSupplyReached = false;
    
    uint256 public lpBurnFrequency = 3600 seconds; 
    uint256 public lastLpBurnTime =block.timestamp;
    uint256 public percentForLPBurn = 12; 

    address public managerAddress;
    address public fundAddress;
    address public lpReceiveAddress = 0x000000000000000000000000000000000000dEaD;

    address public uniswapPair; 
    address public systemContractAddress;
    address public usdtAddress = address(0x55d398326f99059fF775485246999027B3197955);
    address public deadAddress = address(0x000000000000000000000000000000000000dEaD);

    address public uniswapV2RouterContractAddress = 0x10ED43C718714eb63d5aA57B78B54704E256024E;
    IUniswapV2Router02 public uniswapV2Router = IUniswapV2Router02(uniswapV2RouterContractAddress);

    bool public tradingEnabled = false;   
    bool public isSwitch = false;         
    bool swapping;

    mapping(address => bool) public swapRouters;
    mapping(address => bool) public pairs; 
    mapping(address => bool) public removeFeeList; 
    
    // ATLAS
    constructor(address _managerAddress, address _fundAddress) ERC20("ATLAS", "ATLAS", 18) Ownable() {
        managerAddress = _managerAddress;
        fundAddress = _fundAddress;

        uniswapPair = IUniswapV2Factory(
            IUniswapV2Router02(uniswapV2Router).factory()
        ).createPair(address(this), usdtAddress);

        pairs[uniswapPair] = true;
        swapRouters[address(uniswapV2Router)] = true;

        removeFeeList[address(this)] = true;
        removeFeeList[deadAddress] = true;
        removeFeeList[managerAddress] = true;

        _approve(_msgSender(), address(uniswapV2Router), ~uint256(0)); // = type(uint256).max
        _approve(address(this), address(uniswapV2Router), ~uint256(0));

        _mint(managerAddress, 100000000 * 10 ** 18);
    }

    receive() external payable {}
    
    function _transfer(
        address from,
        address to,
        uint256 amount
    ) internal override {
        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");
        
        if (!tradingEnabled && (pairs[from] || pairs[to])) {
            require(removeFeeList[from] || removeFeeList[to], "Trading is not enabled");
        }
        
        if (antiWhaleEnabled && !isMaxSupplyReached && !removeFeeList[from] && !removeFeeList[to]) {
            if (pairs[from] || pairs[to]) { 
                uint256 poolBalance = this.balanceOf(uniswapPair);
                uint256 maxAmount = poolBalance.mul(maxTransactionPercent).div(1000); // 10 = 1%
                require(amount <= maxAmount, "Amount exceeds max allowed 1%");
            }
        }

        bool isAdd;
        bool isRemove;
        if (!removeFeeList[from] && !removeFeeList[to]) {
            if (pairs[to]) {
                uint256 addLPLiquidity = _isAddLiquidity(amount);
                if (addLPLiquidity > 0 && !isContract(from)) {
                    isAdd = true;
                }
            }
        }

        if (pairs[from]) {
            uint256 removeLPLiquidity = _isRemoveLiquidity(amount);
            if (removeLPLiquidity > 0) {
                isRemove = true;
            }
        }
        
        if (
            isSwitch &&
            !isMaxSupplyReached &&
            !swapping &&
            from != address(this) &&
            !pairs[from] &&
            !isAdd &&
            from != address(uniswapV2Router) &&
            block.timestamp >= lastLpBurnTime + lpBurnFrequency
        ) {
            swapping = true;
            autoBurnLiquidityPairTokens();
            swapping = false;
        }

        uint256 feeAmount;
        if (
            !isMaxSupplyReached &&
            !removeFeeList[from] &&
            !removeFeeList[to] &&
            from != address(uniswapV2Router)
        ) {
            if (isAdd) {
                feeAmount = 0;
            } else if (isRemove) {
                feeAmount = 0;
            } else if (pairs[from]) {
                feeAmount = amount.mul(buyFee).div(1000); 
                super._transfer(from, systemContractAddress, feeAmount);
            } else if (pairs[to]) {
                uint256 fundAmount = amount.mul(sellFeeFund).div(1000); //2% 20/1000
                uint256 deadAmount = amount.mul(sellFeeDead).div(1000); //3% 30/1000
                uint256 floatAmount = 0;
                super._transfer(from, fundAddress, fundAmount);
                super._transfer(from, deadAddress, deadAmount);
                if(sellFee > 50) {
                    floatAmount = amount.mul(sellFee.sub(50)).div(1000);
                    super._transfer(from, systemContractAddress, floatAmount);
                }

                feeAmount = fundAmount.add(deadAmount).add(floatAmount);
            }
            if (feeAmount > 0) {
                amount = amount.sub(feeAmount);
            }
        }
        if(amount > 0) {
            super._transfer(from, to, amount);
        }
        
        if (amount == bindAmt) {
            require(SystemContract(systemContractAddress).bind(from, to), "bind error");
        }
        
        if(amount > bindAmt &&  
            !removeFeeList[from] && 
            !pairs[from] && 
            from != address(uniswapV2Router) && 
            from != address(this) 
        ) {
            SystemContract(systemContractAddress).claimToken(from);
        }


        if (!swapping &&
            !pairs[from] && !pairs[to] &&
            from != address(this) &&
            from != address(uniswapV2Router)
        ) {
            if(debugStep == 0) {
                SystemContract(systemContractAddress).goSwap();
            }
        }
    }
    
    function _isAddLiquidity(
        uint256 amount
    ) internal view returns (uint256 liquidity) {
        (uint256 rOther, uint256 rThis, uint256 balanceOther) = _getReserves();
        uint256 amountOther;
        if (rOther > 0 && rThis > 0) {
            amountOther = (amount * rOther) / rThis;
        }
        //isAddLP
        if (balanceOther >= rOther + amountOther) {
            (liquidity, ) = calLiquidity(balanceOther, amount, rOther, rThis);
        }
    }

    function getPrice() public view returns (uint256) {

        IUniswapV2Pair mainPair = IUniswapV2Pair(uniswapPair);
        (uint256 reserve0, uint256 reserve1, ) = mainPair.getReserves();

        uint256 usdtBalance = usdtAddress == mainPair.token0() ? reserve0 : reserve1;
        uint256 tokenBalance = usdtAddress == mainPair.token0() ? reserve1 : reserve0;

        if(tokenBalance > 0) {
            return usdtBalance.mul(1e18).div(tokenBalance);
        }else {
            return 0;
        }
    }

    function _getReserves()
        public
        view
        returns (uint256 rOther, uint256 rThis, uint256 balanceOther)
    {
        IUniswapV2Pair mainPair = IUniswapV2Pair(uniswapPair);
        (uint256 r0, uint256 r1, ) = mainPair.getReserves();

        address tokenOther = usdtAddress;
        if (tokenOther < address(this)) {
            rOther = r0;
            rThis = r1;
        } else {
            rOther = r1;
            rThis = r0;
        }

        balanceOther = IERC20(tokenOther).balanceOf(uniswapPair);
    }

    function _isRemoveLiquidity(
        uint256 amount
    ) internal view returns (uint256 liquidity) {
        (uint256 rOther, , uint256 balanceOther) = _getReserves();
        //isRemoveLP
        if (balanceOther <= rOther) {
            liquidity =
                (amount * IUniswapV2Pair(uniswapPair).totalSupply()) /
                (balanceOf(uniswapPair) - amount);
        }
    }

    function calLiquidity(
        uint256 balanceA,
        uint256 amount,
        uint256 r0,
        uint256 r1
    ) private view returns (uint256 liquidity, uint256 feeToLiquidity) {
        uint256 pairTotalSupply = IUniswapV2Pair(uniswapPair).totalSupply();
        address feeTo = IUniswapV2Factory(uniswapV2Router.factory()).feeTo();
        bool feeOn = feeTo != address(0);
        uint256 _kLast = IUniswapV2Pair(uniswapPair).kLast();
        if (feeOn) {
            if (_kLast != 0) {
                uint256 rootK = Math.sqrt(r0 * r1);
                uint256 rootKLast = Math.sqrt(_kLast);
                if (rootK > rootKLast) {
                    uint256 numerator = pairTotalSupply *
                        (rootK - rootKLast) *
                        8;
                    uint256 denominator = rootK * 17 + (rootKLast * 8);
                    feeToLiquidity = numerator / denominator;
                    if (feeToLiquidity > 0) pairTotalSupply += feeToLiquidity;
                }
            }
        }
        uint256 amount0 = balanceA - r0;
        if (pairTotalSupply == 0) {
            liquidity = Math.sqrt(amount0 * amount) - 1000;
        } else {
            liquidity = Math.min(
                (amount0 * pairTotalSupply) / r0,
                (amount * pairTotalSupply) / r1
            );
        }
    }
    
    modifier onlySystemContractAddress() {
        require(msg.sender == systemContractAddress, "not system address");
        _;
    }

    function systemMint(address user, uint256 amount) external onlySystemContractAddress {
        require(user != address(0), "ERC20: mint to zero address");
        require(totalSupply() + amount <= MAX_TOTAL_SUPPLY, "ERC20: mint amount exceeds max supply");
        _mint(user, amount);
        
        if (totalSupply() >= MAX_TOTAL_SUPPLY && !isMaxSupplyReached) {
            isMaxSupplyReached = true;
        }
    }

    function isContract(address _addr) private view returns (bool) {
        uint32 size;
        assembly {
            size := extcodesize(_addr)
        }
        return (size > 0);
    }
    
    function autoBurnLiquidityPairTokens() internal returns (bool) {
        uint256 liquidityPairBalance = this.balanceOf(uniswapPair);
        if (liquidityPairBalance > stopBurnAtAmt) {
            uint256 time = block.timestamp.sub(lastLpBurnTime);
            uint256 amountToBurn = liquidityPairBalance
                .mul(percentForLPBurn)      //12
                .div(1000)                  //12/1000 = 1.2%
                .div(86400)                 
                .mul(time);                 
            if (amountToBurn > 0) {
                super._transfer(uniswapPair, deadAddress, amountToBurn);
            }
            //sync price since this is not in a swap transaction!
            IUniswapV2Pair pair = IUniswapV2Pair(uniswapPair);
            pair.sync();
        }
        lastLpBurnTime = block.timestamp;
        return true;
    }

    function open() external onlyOwner{
        isSwitch = true;
        lastLpBurnTime = block.timestamp;
    }

    function close() external onlyOwner{
        isSwitch = false;
    }
    
    function setTradingEnabled(bool status) external onlyOwner {
        tradingEnabled = status;
    }

    function claimEth(uint256 amount) external onlySystemContractAddress {
        payable(msg.sender).transfer(amount);
    }

    function claimTokens(address _token, uint256 _amt) external onlySystemContractAddress {
        require(
            (IERC20(_token).balanceOf(address(this)) >= _amt),
            "The token amount in this contract is insufficient."
        );
        IERC20(_token).transfer(msg.sender, _amt);
    }

    function setBurnPercent(uint256 _percent) external onlySystemContractAddress {
        require(_percent <= 50, "Percentage cannot exceed 5%");
        percentForLPBurn = _percent;
    }
    
    function setFloatSellFee(uint256 _sellFee) external onlySystemContractAddress {
        require(_sellFee >= 50 && _sellFee <= 500, "Percent must between 50 and 500");
        sellFee = _sellFee; 
    }

    function setSystemContractAddress(address _systemContractAddress) external onlyOwner{
        systemContractAddress = _systemContractAddress;
        removeFeeList[systemContractAddress] = true;
    }
    
    function setManagerAddress(address _managerAddress, address _fundAddress) external onlyOwner {
        managerAddress = _managerAddress;
        fundAddress = _fundAddress;
    }
    
    function setLpReceiveAddress(address _lpReceiveAddress) external onlyOwner {
        lpReceiveAddress = _lpReceiveAddress;
    }
    
    function setRemoveFee(address _address, bool _isRemoved) external onlyOwner {
        removeFeeList[_address] = _isRemoved;
    }
    
    function setRemoveFeeList(address[] calldata accounts, bool _isRemoved) external onlyOwner {
        for(uint256 i = 0; i < accounts.length; i++) {
            removeFeeList[accounts[i]] = _isRemoved;
        }
    }
    
    function setSwapTokensAtAmount(uint256 _swapTokensAtAmount) external onlyOwner {
        swapTokensAtAmount = _swapTokensAtAmount;
    }
    
    function setDebugStep(uint256 _debugStep) external onlyOwner {
        debugStep = _debugStep;
    }

    function setAntiWhaleParams(bool _enabled, uint256 _percent) external onlyOwner {
        antiWhaleEnabled = _enabled;
        //100 = 10%
        require(_percent <= 100, "Percentage cannot exceed 10%");
        maxTransactionPercent = _percent;
    }
    
}

Contract Security Audit

Contract ABI

API
[{"inputs":[{"internalType":"address","name":"_managerAddress","type":"address"},{"internalType":"address","name":"_fundAddress","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"_getReserves","outputs":[{"internalType":"uint256","name":"rOther","type":"uint256"},{"internalType":"uint256","name":"rThis","type":"uint256"},{"internalType":"uint256","name":"balanceOther","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":[],"name":"antiWhaleEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"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":[],"name":"bindAmt","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"claimEth","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_token","type":"address"},{"internalType":"uint256","name":"_amt","type":"uint256"}],"name":"claimTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"close","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"deadAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"debugStep","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"fundAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getPrice","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"isMaxSupplyReached","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"isSwitch","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lastLpBurnTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lpBurnFrequency","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lpReceiveAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"managerAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTransactionPercent","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"open","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"pairs","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"percentForLPBurn","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"removeFeeList","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellFeeDead","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellFeeFund","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"},{"internalType":"uint256","name":"_percent","type":"uint256"}],"name":"setAntiWhaleParams","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_percent","type":"uint256"}],"name":"setBurnPercent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_debugStep","type":"uint256"}],"name":"setDebugStep","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_sellFee","type":"uint256"}],"name":"setFloatSellFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_lpReceiveAddress","type":"address"}],"name":"setLpReceiveAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_managerAddress","type":"address"},{"internalType":"address","name":"_fundAddress","type":"address"}],"name":"setManagerAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"},{"internalType":"bool","name":"_isRemoved","type":"bool"}],"name":"setRemoveFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"bool","name":"_isRemoved","type":"bool"}],"name":"setRemoveFeeList","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_swapTokensAtAmount","type":"uint256"}],"name":"setSwapTokensAtAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_systemContractAddress","type":"address"}],"name":"setSystemContractAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"status","type":"bool"}],"name":"setTradingEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"stopBurnAtAmt","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"swapRouters","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapTokensAtAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"systemContractAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"systemMint","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingEnabled","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"},{"inputs":[],"name":"uniswapPair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2RouterContractAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"usdtAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

6080604052600060075560c860085560326009556014600a55601e600b55670de0b6b3a7640000600c556000600d55683635c9adc5dea00000600e556001600f60006101000a81548160ff021916908315150217905550600a6010556000601160006101000a81548160ff021916908315150217905550610e1060125542601355600c60145561dead601760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507355d398326f99059ff775485246999027b3197955601a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061dead601b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507310ed43c718714eb63d5aa57b78b54704e256024e601c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550601c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16601d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000601d60146101000a81548160ff0219169083151502179055506000601d60156101000a81548160ff0219169083151502179055503480156200025b57600080fd5b50604051620070da380380620070da833981810160405281019062000281919062000e14565b6040518060400160405280600581526020017f41544c41530000000000000000000000000000000000000000000000000000008152506040518060400160405280600581526020017f41544c4153000000000000000000000000000000000000000000000000000000815250601282600390805190602001906200030792919062000d21565b5081600490805190602001906200032092919062000d21565b50806005819055505050506200034b6200033f6200086960201b60201c565b6200087160201b60201c565b81601560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080601660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550601d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b1580156200043657600080fd5b505afa1580156200044b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000471919062000de8565b73ffffffffffffffffffffffffffffffffffffffff1663c9c6539630601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518363ffffffff1660e01b8152600401620004cf92919062000fcb565b602060405180830381600087803b158015620004ea57600080fd5b505af1158015620004ff573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000525919062000de8565b601860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001601f6000601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601e6000601d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001602060003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160206000601b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160206000601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550620007eb620007b96200086960201b60201c565b601d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166000196200093760201b60201c565b6200082230601d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166000196200093760201b60201c565b62000861601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166a52b7d2dcc80cd2e400000062000b0a60201b60201c565b5050620011f7565b600033905090565b6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415620009aa576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620009a1906200103c565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141562000a1d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000a149062000ff8565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405162000afd919062001080565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141562000b7d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000b74906200105e565b60405180910390fd5b62000b916000838362000cb960201b60201c565b62000bad8160025462000cbe60201b62002adf1790919060201c565b60028190555062000c0b816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205462000cbe60201b62002adf1790919060201c565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405162000cad919062001080565b60405180910390a35050565b505050565b600080828462000ccf9190620010ae565b90508381101562000d17576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000d0e906200101a565b60405180910390fd5b8091505092915050565b82805462000d2f9062001149565b90600052602060002090601f01602090048101928262000d53576000855562000d9f565b82601f1062000d6e57805160ff191683800117855562000d9f565b8280016001018555821562000d9f579182015b8281111562000d9e57825182559160200191906001019062000d81565b5b50905062000dae919062000db2565b5090565b5b8082111562000dcd57600081600090555060010162000db3565b5090565b60008151905062000de281620011dd565b92915050565b60006020828403121562000dfb57600080fd5b600062000e0b8482850162000dd1565b91505092915050565b6000806040838503121562000e2857600080fd5b600062000e388582860162000dd1565b925050602062000e4b8582860162000dd1565b9150509250929050565b62000e60816200110b565b82525050565b600062000e756022836200109d565b91507f45524332303a20617070726f766520746f20746865207a65726f20616464726560008301527f73730000000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b600062000edd601b836200109d565b91507f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006000830152602082019050919050565b600062000f1f6024836200109d565b91507f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008301527f72657373000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b600062000f87601f836200109d565b91507f45524332303a206d696e7420746f20746865207a65726f2061646472657373006000830152602082019050919050565b62000fc5816200113f565b82525050565b600060408201905062000fe2600083018562000e55565b62000ff1602083018462000e55565b9392505050565b60006020820190508181036000830152620010138162000e66565b9050919050565b60006020820190508181036000830152620010358162000ece565b9050919050565b60006020820190508181036000830152620010578162000f10565b9050919050565b60006020820190508181036000830152620010798162000f78565b9050919050565b600060208201905062001097600083018462000fba565b92915050565b600082825260208201905092915050565b6000620010bb826200113f565b9150620010c8836200113f565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156200110057620010ff6200117f565b5b828201905092915050565b600062001118826200111f565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060028204905060018216806200116257607f821691505b60208210811415620011795762001178620011ae565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b620011e8816200110b565b8114620011f457600080fd5b50565b615ed380620012076000396000f3fe6080604052600436106103a65760003560e01c806391e1f3e2116101e7578063c2e5ec041161010d578063e2f45605116100a0578063f931377b1161006f578063f931377b14610da5578063fcfff16f14610dd0578063fe33b30214610de7578063fe417fa514610e24576103ad565b8063e2f4560514610cfb578063e82bef2914610d26578063f2fde38b14610d51578063f34b433314610d7a576103ad565b8063cf73a1bc116100dc578063cf73a1bc14610c3d578063dce2055114610c68578063dd62ed3e14610c93578063e0783b4014610cd0576103ad565b8063c2e5ec0414610b93578063c816841b14610bbc578063cbd9986814610be7578063ce4d9f1514610c10576103ad565b8063a4c82a0011610185578063afa4f3b211610154578063afa4f3b214610aed578063bb1570da14610b16578063bd26da7d14610b3f578063bd361b7e14610b6a576103ad565b8063a4c82a0014610a2f578063a9059cbb14610a5a578063ac71fce514610a97578063ad60964614610ac2576103ad565b806398d5fdca116101c157806398d5fdca146109735780639943edd11461099e5780639ab4a445146109c7578063a457c2d7146109f2576103ad565b806391e1f3e2146108e05780639358bd4f1461090b57806395d89b4114610948576103ad565b8063313ce567116102cc5780634c1aa5ff1161026a57806370a082311161023957806370a0823114610824578063715018a614610861578063778b688a146108785780638da5cb5b146108b5576103ad565b80634c1aa5ff1461077a5780634f15b41e146107a3578063557ed1ba146107ce57806357d87f0d146107f9576103ad565b806343d726d6116102a657806343d726d6146106e257806346b136ce146106f957806347062402146107245780634ada218b1461074f576103ad565b8063313ce5671461065157806332f5eac91461067c57806339509351146106a5576103ad565b8063199ffc7211610344578063298f0ec111610313578063298f0ec1146105a95780632b14ca56146105d25780632c3e486c146105fd5780633021d8b214610628576103ad565b8063199ffc72146104eb57806323b872dd14610516578063249f46971461055357806327c8f8351461057e576103ad565b80631356f1eb116103805780631356f1eb146104435780631694505e1461046c57806316f5a67a1461049757806318160ddd146104c0576103ad565b806306fdde03146103b2578063095ea7b3146103dd578063134dc5ad1461041a576103ad565b366103ad57005b600080fd5b3480156103be57600080fd5b506103c7610e4d565b6040516103d491906157d0565b60405180910390f35b3480156103e957600080fd5b5061040460048036038101906103ff9190614f05565b610edf565b604051610411919061579a565b60405180910390f35b34801561042657600080fd5b50610441600480360381019061043c9190614e3e565b610efd565b005b34801561044f57600080fd5b5061046a60048036038101906104659190614dec565b610fff565b005b34801561047857600080fd5b506104816110bf565b60405161048e91906157b5565b60405180910390f35b3480156104a357600080fd5b506104be60048036038101906104b99190615076565b6110e5565b005b3480156104cc57600080fd5b506104d56111d1565b6040516104e29190615a52565b60405180910390f35b3480156104f757600080fd5b506105006111db565b60405161050d9190615a52565b60405180910390f35b34801561052257600080fd5b5061053d60048036038101906105389190614e7a565b6111e1565b60405161054a919061579a565b60405180910390f35b34801561055f57600080fd5b506105686112ba565b604051610575919061572d565b60405180910390f35b34801561058a57600080fd5b506105936112e0565b6040516105a0919061572d565b60405180910390f35b3480156105b557600080fd5b506105d060048036038101906105cb9190614f41565b611306565b005b3480156105de57600080fd5b506105e761144d565b6040516105f49190615a52565b60405180910390f35b34801561060957600080fd5b50610612611453565b60405161061f9190615a52565b60405180910390f35b34801561063457600080fd5b5061064f600480360381019061064a9190615076565b611459565b005b34801561065d57600080fd5b506106666114df565b6040516106739190615a52565b60405180910390f35b34801561068857600080fd5b506106a3600480360381019061069e9190614dec565b6114e9565b005b3480156106b157600080fd5b506106cc60048036038101906106c79190614f05565b611623565b6040516106d9919061579a565b60405180910390f35b3480156106ee57600080fd5b506106f76116d6565b005b34801561070557600080fd5b5061070e61176f565b60405161071b9190615a52565b60405180910390f35b34801561073057600080fd5b50610739611775565b6040516107469190615a52565b60405180910390f35b34801561075b57600080fd5b5061076461177b565b604051610771919061579a565b60405180910390f35b34801561078657600080fd5b506107a1600480360381019061079c9190614feb565b61178e565b005b3480156107af57600080fd5b506107b8611873565b6040516107c59190615a52565b60405180910390f35b3480156107da57600080fd5b506107e3611879565b6040516107f09190615a52565b60405180910390f35b34801561080557600080fd5b5061080e611881565b60405161081b919061579a565b60405180910390f35b34801561083057600080fd5b5061084b60048036038101906108469190614dec565b611894565b6040516108589190615a52565b60405180910390f35b34801561086d57600080fd5b506108766118dc565b005b34801561088457600080fd5b5061089f600480360381019061089a9190614dec565b611964565b6040516108ac919061579a565b60405180910390f35b3480156108c157600080fd5b506108ca611983565b6040516108d7919061572d565b60405180910390f35b3480156108ec57600080fd5b506108f56119ad565b604051610902919061579a565b60405180910390f35b34801561091757600080fd5b50610932600480360381019061092d9190614dec565b6119c0565b60405161093f919061579a565b60405180910390f35b34801561095457600080fd5b5061095d6119e0565b60405161096a91906157d0565b60405180910390f35b34801561097f57600080fd5b50610988611a72565b6040516109959190615a52565b60405180910390f35b3480156109aa57600080fd5b506109c560048036038101906109c09190614f05565b611d4b565b005b3480156109d357600080fd5b506109dc611f0b565b6040516109e9919061572d565b60405180910390f35b3480156109fe57600080fd5b50610a196004803603810190610a149190614f05565b611f31565b604051610a26919061579a565b60405180910390f35b348015610a3b57600080fd5b50610a44611ffe565b604051610a519190615a52565b60405180910390f35b348015610a6657600080fd5b50610a816004803603810190610a7c9190614f05565b612004565b604051610a8e919061579a565b60405180910390f35b348015610aa357600080fd5b50610aac612022565b604051610ab9919061572d565b60405180910390f35b348015610ace57600080fd5b50610ad7612048565b604051610ae49190615a52565b60405180910390f35b348015610af957600080fd5b50610b146004803603810190610b0f9190615076565b61204e565b005b348015610b2257600080fd5b50610b3d6004803603810190610b389190615076565b6120d4565b005b348015610b4b57600080fd5b50610b546121b2565b604051610b61919061572d565b60405180910390f35b348015610b7657600080fd5b50610b916004803603810190610b8c9190614ec9565b6121d8565b005b348015610b9f57600080fd5b50610bba6004803603810190610bb59190614f99565b6122af565b005b348015610bc857600080fd5b50610bd1612348565b604051610bde919061572d565b60405180910390f35b348015610bf357600080fd5b50610c0e6004803603810190610c099190615076565b61236e565b005b348015610c1c57600080fd5b50610c25612448565b604051610c3493929190615a6d565b60405180910390f35b348015610c4957600080fd5b50610c5261263c565b604051610c5f919061572d565b60405180910390f35b348015610c7457600080fd5b50610c7d612662565b604051610c8a9190615a52565b60405180910390f35b348015610c9f57600080fd5b50610cba6004803603810190610cb59190614e3e565b612668565b604051610cc79190615a52565b60405180910390f35b348015610cdc57600080fd5b50610ce56126ef565b604051610cf29190615a52565b60405180910390f35b348015610d0757600080fd5b50610d106126f5565b604051610d1d9190615a52565b60405180910390f35b348015610d3257600080fd5b50610d3b6126fb565b604051610d48919061572d565b60405180910390f35b348015610d5d57600080fd5b50610d786004803603810190610d739190614dec565b612721565b005b348015610d8657600080fd5b50610d8f612819565b604051610d9c9190615a52565b60405180910390f35b348015610db157600080fd5b50610dba61281f565b604051610dc7919061579a565b60405180910390f35b348015610ddc57600080fd5b50610de5612832565b005b348015610df357600080fd5b50610e0e6004803603810190610e099190614dec565b6128d2565b604051610e1b919061579a565b60405180910390f35b348015610e3057600080fd5b50610e4b6004803603810190610e469190614f05565b6128f2565b005b606060038054610e5c90615c9e565b80601f0160208091040260200160405190810160405280929190818152602001828054610e8890615c9e565b8015610ed55780601f10610eaa57610100808354040283529160200191610ed5565b820191906000526020600020905b815481529060010190602001808311610eb857829003601f168201915b5050505050905090565b6000610ef3610eec612b3d565b8484612b45565b6001905092915050565b610f05612b3d565b73ffffffffffffffffffffffffffffffffffffffff16610f23611983565b73ffffffffffffffffffffffffffffffffffffffff1614610f79576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f7090615972565b60405180910390fd5b81601560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080601660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b611007612b3d565b73ffffffffffffffffffffffffffffffffffffffff16611025611983565b73ffffffffffffffffffffffffffffffffffffffff161461107b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161107290615972565b60405180910390fd5b80601760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b601d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611175576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161116c906159b2565b60405180910390fd5b6032811015801561118857506101f48111155b6111c7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111be906159f2565b60405180910390fd5b8060098190555050565b6000600254905090565b60145481565b60006111ee848484612d10565b6112af846111fa612b3d565b6112aa85604051806060016040528060288152602001615e5160289139600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000611260612b3d565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613e0c9092919063ffffffff16565b612b45565b600190509392505050565b601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b601b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61130e612b3d565b73ffffffffffffffffffffffffffffffffffffffff1661132c611983565b73ffffffffffffffffffffffffffffffffffffffff1614611382576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161137990615972565b60405180910390fd5b60005b838390508110156114475781602060008686858181106113ce577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b90506020020160208101906113e39190614dec565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550808061143f90615cd0565b915050611385565b50505050565b60095481565b60125481565b611461612b3d565b73ffffffffffffffffffffffffffffffffffffffff1661147f611983565b73ffffffffffffffffffffffffffffffffffffffff16146114d5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114cc90615972565b60405180910390fd5b8060078190555050565b6000600554905090565b6114f1612b3d565b73ffffffffffffffffffffffffffffffffffffffff1661150f611983565b73ffffffffffffffffffffffffffffffffffffffff1614611565576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161155c90615972565b60405180910390fd5b80601960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160206000601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b60006116cc611630612b3d565b846116c78560016000611641612b3d565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612adf90919063ffffffff16565b612b45565b6001905092915050565b6116de612b3d565b73ffffffffffffffffffffffffffffffffffffffff166116fc611983565b73ffffffffffffffffffffffffffffffffffffffff1614611752576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161174990615972565b60405180910390fd5b6000601d60156101000a81548160ff021916908315150217905550565b60075481565b60085481565b601d60149054906101000a900460ff1681565b611796612b3d565b73ffffffffffffffffffffffffffffffffffffffff166117b4611983565b73ffffffffffffffffffffffffffffffffffffffff161461180a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161180190615972565b60405180910390fd5b81600f60006101000a81548160ff0219169083151502179055506064811115611868576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161185f90615932565b60405180910390fd5b806010819055505050565b600d5481565b600042905090565b600f60009054906101000a900460ff1681565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6118e4612b3d565b73ffffffffffffffffffffffffffffffffffffffff16611902611983565b73ffffffffffffffffffffffffffffffffffffffff1614611958576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161194f90615972565b60405180910390fd5b6119626000613e70565b565b602080528060005260406000206000915054906101000a900460ff1681565b6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b601d60159054906101000a900460ff1681565b601e6020528060005260406000206000915054906101000a900460ff1681565b6060600480546119ef90615c9e565b80601f0160208091040260200160405190810160405280929190818152602001828054611a1b90615c9e565b8015611a685780601f10611a3d57610100808354040283529160200191611a68565b820191906000526020600020905b815481529060010190602001808311611a4b57829003601f168201915b5050505050905090565b600080601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690506000808273ffffffffffffffffffffffffffffffffffffffff16630902f1ac6040518163ffffffff1660e01b815260040160606040518083038186803b158015611ae357600080fd5b505afa158015611af7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b1b9190615027565b506dffffffffffffffffffffffffffff1691506dffffffffffffffffffffffffffff16915060008373ffffffffffffffffffffffffffffffffffffffff16630dfe16816040518163ffffffff1660e01b815260040160206040518083038186803b158015611b8857600080fd5b505afa158015611b9c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bc09190614e15565b73ffffffffffffffffffffffffffffffffffffffff16601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611c1a5781611c1c565b825b905060008473ffffffffffffffffffffffffffffffffffffffff16630dfe16816040518163ffffffff1660e01b815260040160206040518083038186803b158015611c6657600080fd5b505afa158015611c7a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c9e9190614e15565b73ffffffffffffffffffffffffffffffffffffffff16601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611cf85783611cfa565b825b90506000811115611d3e57611d3281611d24670de0b6b3a764000085613f3690919063ffffffff16565b613fb190919063ffffffff16565b95505050505050611d48565b6000955050505050505b90565b601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611ddb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dd2906159b2565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611e4b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e4290615a12565b60405180910390fd5b6b204fce5e3e2502611000000081611e616111d1565b611e6b9190615ac0565b1115611eac576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ea390615912565b60405180910390fd5b611eb68282613ffb565b6b204fce5e3e25026110000000611ecb6111d1565b10158015611ee65750601160009054906101000a900460ff16155b15611f07576001601160006101000a81548160ff0219169083151502179055505b5050565b601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000611ff4611f3e612b3d565b84611fef85604051806060016040528060258152602001615e796025913960016000611f68612b3d565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613e0c9092919063ffffffff16565b612b45565b6001905092915050565b60135481565b6000612018612011612b3d565b8484612d10565b6001905092915050565b601c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60105481565b612056612b3d565b73ffffffffffffffffffffffffffffffffffffffff16612074611983565b73ffffffffffffffffffffffffffffffffffffffff16146120ca576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120c190615972565b60405180910390fd5b80600e8190555050565b601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614612164576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161215b906159b2565b60405180910390fd5b60328111156121a8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161219f90615892565b60405180910390fd5b8060148190555050565b601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6121e0612b3d565b73ffffffffffffffffffffffffffffffffffffffff166121fe611983565b73ffffffffffffffffffffffffffffffffffffffff1614612254576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161224b90615972565b60405180910390fd5b80602060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6122b7612b3d565b73ffffffffffffffffffffffffffffffffffffffff166122d5611983565b73ffffffffffffffffffffffffffffffffffffffff161461232b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161232290615972565b60405180910390fd5b80601d60146101000a81548160ff02191690831515021790555050565b601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146123fe576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123f5906159b2565b60405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015612444573d6000803e3d6000fd5b5050565b600080600080601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690506000808273ffffffffffffffffffffffffffffffffffffffff16630902f1ac6040518163ffffffff1660e01b815260040160606040518083038186803b1580156124bc57600080fd5b505afa1580156124d0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124f49190615027565b506dffffffffffffffffffffffffffff1691506dffffffffffffffffffffffffffff1691506000601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690503073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16101561257f57829650819550612586565b8196508295505b8073ffffffffffffffffffffffffffffffffffffffff166370a08231601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518263ffffffff1660e01b81526004016125e1919061572d565b60206040518083038186803b1580156125f957600080fd5b505afa15801561260d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612631919061509f565b945050505050909192565b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600a5481565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600c5481565b600e5481565b601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b612729612b3d565b73ffffffffffffffffffffffffffffffffffffffff16612747611983565b73ffffffffffffffffffffffffffffffffffffffff161461279d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161279490615972565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561280d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161280490615812565b60405180910390fd5b61281681613e70565b50565b600b5481565b601160009054906101000a900460ff1681565b61283a612b3d565b73ffffffffffffffffffffffffffffffffffffffff16612858611983565b73ffffffffffffffffffffffffffffffffffffffff16146128ae576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128a590615972565b60405180910390fd5b6001601d60156101000a81548160ff02191690831515021790555042601381905550565b601f6020528060005260406000206000915054906101000a900460ff1681565b601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614612982576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612979906159b2565b60405180910390fd5b808273ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016129bc919061572d565b60206040518083038186803b1580156129d457600080fd5b505afa1580156129e8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a0c919061509f565b1015612a4d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a44906158d2565b60405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33836040518363ffffffff1660e01b8152600401612a88929190615771565b602060405180830381600087803b158015612aa257600080fd5b505af1158015612ab6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ada9190614fc2565b505050565b6000808284612aee9190615ac0565b905083811015612b33576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b2a90615872565b60405180910390fd5b8091505092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612bb5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612bac906159d2565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612c25576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c1c90615832565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051612d039190615a52565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612d80576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d7790615992565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612df0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612de7906157f2565b60405180910390fd5b601d60149054906101000a900460ff16158015612eaa5750601f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680612ea95750601f60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b5b15612f9057602060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680612f505750602060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b612f8f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f86906158b2565b60405180910390fd5b5b600f60009054906101000a900460ff168015612fb95750601160009054906101000a900460ff16155b801561300f5750602060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156130655750602060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561323357601f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168061310b5750601f60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156132325760003073ffffffffffffffffffffffffffffffffffffffff166370a08231601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518263ffffffff1660e01b815260040161316d919061572d565b60206040518083038186803b15801561318557600080fd5b505afa158015613199573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906131bd919061509f565b905060006131ea6103e86131dc60105485613f3690919063ffffffff16565b613fb190919063ffffffff16565b90508083111561322f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613226906158f2565b60405180910390fd5b50505b5b600080602060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156132da5750602060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561336157601f60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561336057600061333c8461418f565b9050600081118015613354575061335286614200565b155b1561335e57600192505b505b5b601f60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156133d05760006133be84614219565b905060008111156133ce57600191505b505b601d60159054906101000a900460ff1680156133f95750601160009054906101000a900460ff16155b80156134125750601d60169054906101000a900460ff16155b801561344a57503073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b80156134a05750601f60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156134aa575081155b80156135045750601d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b801561351f575060125460135461351b9190615ac0565b4210155b15613564576001601d60166101000a81548160ff021916908315150217905550613547614327565b506000601d60166101000a81548160ff0219169083151502179055505b6000601160009054906101000a900460ff161580156135cd5750602060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156136235750602060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b801561367d5750601d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff1614155b1561391c57821561369157600090506138fc565b81156136a057600090506138fb565b601f60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561374f5761371b6103e861370d60085487613f3690919063ffffffff16565b613fb190919063ffffffff16565b905061374a86601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1683614541565b6138fa565b601f60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156138f95760006137cc6103e86137be600a5488613f3690919063ffffffff16565b613fb190919063ffffffff16565b905060006137f96103e86137eb600b5489613f3690919063ffffffff16565b613fb190919063ffffffff16565b9050600061382a89601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1685614541565b61385789601b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684614541565b603260095411156138ce5761389e6103e861389061388160326009546147d690919063ffffffff16565b8a613f3690919063ffffffff16565b613fb190919063ffffffff16565b90506138cd89601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1683614541565b5b6138f3816138e58486612adf90919063ffffffff16565b612adf90919063ffffffff16565b93505050505b5b5b5b600081111561391b5761391881856147d690919063ffffffff16565b93505b5b600084111561393157613930868686614541565b5b600c54841415613a2a57601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d1ec9f1487876040518363ffffffff1660e01b8152600401613998929190615748565b602060405180830381600087803b1580156139b257600080fd5b505af11580156139c6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906139ea9190614fc2565b613a29576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613a2090615852565b60405180910390fd5b5b600c5484118015613a855750602060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015613adb5750601f60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015613b355750601d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff1614155b8015613b6d57503073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff1614155b15613c2157601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166332f289cf876040518263ffffffff1660e01b8152600401613bcd919061572d565b602060405180830381600087803b158015613be757600080fd5b505af1158015613bfb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613c1f919061509f565b505b601d60169054906101000a900460ff16158015613c885750601f60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015613cde5750601f60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015613d1657503073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff1614155b8015613d705750601d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff1614155b15613e045760006007541415613e0357601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663bba5ada16040518163ffffffff1660e01b8152600401600060405180830381600087803b158015613dea57600080fd5b505af1158015613dfe573d6000803e3d6000fd5b505050505b5b505050505050565b6000838311158290613e54576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613e4b91906157d0565b60405180910390fd5b5060008385613e639190615ba1565b9050809150509392505050565b6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600080831415613f495760009050613fab565b60008284613f579190615b47565b9050828482613f669190615b16565b14613fa6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613f9d90615952565b60405180910390fd5b809150505b92915050565b6000613ff383836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250614820565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561406b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161406290615a32565b60405180910390fd5b61407760008383614883565b61408c81600254612adf90919063ffffffff16565b6002819055506140e3816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612adf90919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516141839190615a52565b60405180910390a35050565b60008060008061419d612448565b925092509250600080841180156141b45750600083115b156141d3578284876141c69190615b47565b6141d09190615b16565b90505b80846141df9190615ac0565b82106141f7576141f182878686614888565b50809550505b50505050919050565b600080823b905060008163ffffffff1611915050919050565b6000806000614226612448565b9250509150818111614320578361425e601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16611894565b6142689190615ba1565b601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b815260040160206040518083038186803b1580156142d057600080fd5b505afa1580156142e4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614308919061509f565b856143139190615b47565b61431d9190615b16565b92505b5050919050565b6000803073ffffffffffffffffffffffffffffffffffffffff166370a08231601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518263ffffffff1660e01b8152600401614385919061572d565b60206040518083038186803b15801561439d57600080fd5b505afa1580156143b1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906143d5919061509f565b9050600d548111156145325760006143f8601354426147d690919063ffffffff16565b9050600061444c8261443e620151806144306103e86144226014548a613f3690919063ffffffff16565b613fb190919063ffffffff16565b613fb190919063ffffffff16565b613f3690919063ffffffff16565b905060008111156144a7576144a6601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16601b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1683614541565b5b6000601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508073ffffffffffffffffffffffffffffffffffffffff1663fff6cae96040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561451657600080fd5b505af115801561452a573d6000803e3d6000fd5b505050505050505b42601381905550600191505090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156145b1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016145a890615992565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415614621576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401614618906157f2565b60405180910390fd5b61462c838383614883565b61469781604051806060016040528060268152602001615e2b602691396000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613e0c9092919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061472a816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612adf90919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516147c99190615a52565b60405180910390a3505050565b600061481883836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250613e0c565b905092915050565b60008083118290614867576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161485e91906157d0565b60405180910390fd5b50600083856148769190615b16565b9050809150509392505050565b505050565b6000806000601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b815260040160206040518083038186803b1580156148f557600080fd5b505afa158015614909573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061492d919061509f565b90506000601d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b15801561499957600080fd5b505afa1580156149ad573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906149d19190614e15565b73ffffffffffffffffffffffffffffffffffffffff1663017e7e586040518163ffffffff1660e01b815260040160206040518083038186803b158015614a1657600080fd5b505afa158015614a2a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614a4e9190614e15565b905060008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141590506000601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16637464fc3d6040518163ffffffff1660e01b815260040160206040518083038186803b158015614aee57600080fd5b505afa158015614b02573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614b26919061509f565b90508115614bdf5760008114614bde576000614b4c888a614b479190615b47565b614c67565b90506000614b5983614c67565b905080821115614bdb57600060088284614b739190615ba1565b88614b7e9190615b47565b614b889190615b47565b90506000600883614b999190615b47565b601185614ba69190615b47565b614bb09190615ac0565b90508082614bbe9190615b16565b98506000891115614bd8578888614bd59190615ac0565b97505b50505b50505b5b6000888b614bed9190615ba1565b90506000851415614c20576103e8614c0f8b83614c0a9190615b47565b614c67565b614c199190615ba1565b9650614c59565b614c56898683614c309190615b47565b614c3a9190615b16565b89878d614c479190615b47565b614c519190615b16565b614ce1565b96505b505050505094509492505050565b60006003821115614cce5781905060006001600284614c869190615b16565b614c909190615ac0565b90505b81811015614cc8578091506002818285614cad9190615b16565b614cb79190615ac0565b614cc19190615b16565b9050614c93565b50614cdc565b60008214614cdb57600190505b5b919050565b6000818310614cf05781614cf2565b825b905092915050565b600081359050614d0981615db7565b92915050565b600081519050614d1e81615db7565b92915050565b60008083601f840112614d3657600080fd5b8235905067ffffffffffffffff811115614d4f57600080fd5b602083019150836020820283011115614d6757600080fd5b9250929050565b600081359050614d7d81615dce565b92915050565b600081519050614d9281615dce565b92915050565b600081519050614da781615de5565b92915050565b600081359050614dbc81615dfc565b92915050565b600081519050614dd181615dfc565b92915050565b600081519050614de681615e13565b92915050565b600060208284031215614dfe57600080fd5b6000614e0c84828501614cfa565b91505092915050565b600060208284031215614e2757600080fd5b6000614e3584828501614d0f565b91505092915050565b60008060408385031215614e5157600080fd5b6000614e5f85828601614cfa565b9250506020614e7085828601614cfa565b9150509250929050565b600080600060608486031215614e8f57600080fd5b6000614e9d86828701614cfa565b9350506020614eae86828701614cfa565b9250506040614ebf86828701614dad565b9150509250925092565b60008060408385031215614edc57600080fd5b6000614eea85828601614cfa565b9250506020614efb85828601614d6e565b9150509250929050565b60008060408385031215614f1857600080fd5b6000614f2685828601614cfa565b9250506020614f3785828601614dad565b9150509250929050565b600080600060408486031215614f5657600080fd5b600084013567ffffffffffffffff811115614f7057600080fd5b614f7c86828701614d24565b93509350506020614f8f86828701614d6e565b9150509250925092565b600060208284031215614fab57600080fd5b6000614fb984828501614d6e565b91505092915050565b600060208284031215614fd457600080fd5b6000614fe284828501614d83565b91505092915050565b60008060408385031215614ffe57600080fd5b600061500c85828601614d6e565b925050602061501d85828601614dad565b9150509250929050565b60008060006060848603121561503c57600080fd5b600061504a86828701614d98565b935050602061505b86828701614d98565b925050604061506c86828701614dd7565b9150509250925092565b60006020828403121561508857600080fd5b600061509684828501614dad565b91505092915050565b6000602082840312156150b157600080fd5b60006150bf84828501614dc2565b91505092915050565b6150d181615bd5565b82525050565b6150e081615be7565b82525050565b6150ef81615c47565b82525050565b600061510082615aa4565b61510a8185615aaf565b935061511a818560208601615c6b565b61512381615da6565b840191505092915050565b600061513b602383615aaf565b91507f45524332303a207472616e7366657220746f20746865207a65726f206164647260008301527f65737300000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b60006151a1602683615aaf565b91507f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008301527f64647265737300000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000615207602283615aaf565b91507f45524332303a20617070726f766520746f20746865207a65726f20616464726560008301527f73730000000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b600061526d600a83615aaf565b91507f62696e64206572726f72000000000000000000000000000000000000000000006000830152602082019050919050565b60006152ad601b83615aaf565b91507f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006000830152602082019050919050565b60006152ed601b83615aaf565b91507f50657263656e746167652063616e6e6f742065786365656420352500000000006000830152602082019050919050565b600061532d601683615aaf565b91507f54726164696e67206973206e6f7420656e61626c6564000000000000000000006000830152602082019050919050565b600061536d603283615aaf565b91507f54686520746f6b656e20616d6f756e7420696e207468697320636f6e7472616360008301527f7420697320696e73756666696369656e742e00000000000000000000000000006020830152604082019050919050565b60006153d3601d83615aaf565b91507f416d6f756e742065786365656473206d617820616c6c6f7765642031250000006000830152602082019050919050565b6000615413602583615aaf565b91507f45524332303a206d696e7420616d6f756e742065786365656473206d6178207360008301527f7570706c790000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000615479601c83615aaf565b91507f50657263656e746167652063616e6e6f742065786365656420313025000000006000830152602082019050919050565b60006154b9602183615aaf565b91507f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008301527f77000000000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b600061551f602083615aaf565b91507f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726000830152602082019050919050565b600061555f602583615aaf565b91507f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008301527f64726573730000000000000000000000000000000000000000000000000000006020830152604082019050919050565b60006155c5601283615aaf565b91507f6e6f742073797374656d206164647265737300000000000000000000000000006000830152602082019050919050565b6000615605602483615aaf565b91507f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008301527f72657373000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b600061566b601f83615aaf565b91507f50657263656e74206d757374206265747765656e20353020616e6420353030006000830152602082019050919050565b60006156ab601b83615aaf565b91507f45524332303a206d696e7420746f207a65726f206164647265737300000000006000830152602082019050919050565b60006156eb601f83615aaf565b91507f45524332303a206d696e7420746f20746865207a65726f2061646472657373006000830152602082019050919050565b61572781615c2d565b82525050565b600060208201905061574260008301846150c8565b92915050565b600060408201905061575d60008301856150c8565b61576a60208301846150c8565b9392505050565b600060408201905061578660008301856150c8565b615793602083018461571e565b9392505050565b60006020820190506157af60008301846150d7565b92915050565b60006020820190506157ca60008301846150e6565b92915050565b600060208201905081810360008301526157ea81846150f5565b905092915050565b6000602082019050818103600083015261580b8161512e565b9050919050565b6000602082019050818103600083015261582b81615194565b9050919050565b6000602082019050818103600083015261584b816151fa565b9050919050565b6000602082019050818103600083015261586b81615260565b9050919050565b6000602082019050818103600083015261588b816152a0565b9050919050565b600060208201905081810360008301526158ab816152e0565b9050919050565b600060208201905081810360008301526158cb81615320565b9050919050565b600060208201905081810360008301526158eb81615360565b9050919050565b6000602082019050818103600083015261590b816153c6565b9050919050565b6000602082019050818103600083015261592b81615406565b9050919050565b6000602082019050818103600083015261594b8161546c565b9050919050565b6000602082019050818103600083015261596b816154ac565b9050919050565b6000602082019050818103600083015261598b81615512565b9050919050565b600060208201905081810360008301526159ab81615552565b9050919050565b600060208201905081810360008301526159cb816155b8565b9050919050565b600060208201905081810360008301526159eb816155f8565b9050919050565b60006020820190508181036000830152615a0b8161565e565b9050919050565b60006020820190508181036000830152615a2b8161569e565b9050919050565b60006020820190508181036000830152615a4b816156de565b9050919050565b6000602082019050615a67600083018461571e565b92915050565b6000606082019050615a82600083018661571e565b615a8f602083018561571e565b615a9c604083018461571e565b949350505050565b600081519050919050565b600082825260208201905092915050565b6000615acb82615c2d565b9150615ad683615c2d565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115615b0b57615b0a615d19565b5b828201905092915050565b6000615b2182615c2d565b9150615b2c83615c2d565b925082615b3c57615b3b615d48565b5b828204905092915050565b6000615b5282615c2d565b9150615b5d83615c2d565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615615b9657615b95615d19565b5b828202905092915050565b6000615bac82615c2d565b9150615bb783615c2d565b925082821015615bca57615bc9615d19565b5b828203905092915050565b6000615be082615c0d565b9050919050565b60008115159050919050565b60006dffffffffffffffffffffffffffff82169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600063ffffffff82169050919050565b6000615c5282615c59565b9050919050565b6000615c6482615c0d565b9050919050565b60005b83811015615c89578082015181840152602081019050615c6e565b83811115615c98576000848401525b50505050565b60006002820490506001821680615cb657607f821691505b60208210811415615cca57615cc9615d77565b5b50919050565b6000615cdb82615c2d565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415615d0e57615d0d615d19565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000601f19601f8301169050919050565b615dc081615bd5565b8114615dcb57600080fd5b50565b615dd781615be7565b8114615de257600080fd5b50565b615dee81615bf3565b8114615df957600080fd5b50565b615e0581615c2d565b8114615e1057600080fd5b50565b615e1c81615c37565b8114615e2757600080fd5b5056fe45524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa26469706673582212208f7b3e3279db76de45ed139407557301fc6fb8152050337f78931e224ad2fb4164736f6c6343000800003300000000000000000000000054cbd13d215a435b430f6728e3e3d854297f3eba000000000000000000000000ae0b6594262c98e0b102078f2810f83ef5dd3032

Deployed Bytecode

0x6080604052600436106103a65760003560e01c806391e1f3e2116101e7578063c2e5ec041161010d578063e2f45605116100a0578063f931377b1161006f578063f931377b14610da5578063fcfff16f14610dd0578063fe33b30214610de7578063fe417fa514610e24576103ad565b8063e2f4560514610cfb578063e82bef2914610d26578063f2fde38b14610d51578063f34b433314610d7a576103ad565b8063cf73a1bc116100dc578063cf73a1bc14610c3d578063dce2055114610c68578063dd62ed3e14610c93578063e0783b4014610cd0576103ad565b8063c2e5ec0414610b93578063c816841b14610bbc578063cbd9986814610be7578063ce4d9f1514610c10576103ad565b8063a4c82a0011610185578063afa4f3b211610154578063afa4f3b214610aed578063bb1570da14610b16578063bd26da7d14610b3f578063bd361b7e14610b6a576103ad565b8063a4c82a0014610a2f578063a9059cbb14610a5a578063ac71fce514610a97578063ad60964614610ac2576103ad565b806398d5fdca116101c157806398d5fdca146109735780639943edd11461099e5780639ab4a445146109c7578063a457c2d7146109f2576103ad565b806391e1f3e2146108e05780639358bd4f1461090b57806395d89b4114610948576103ad565b8063313ce567116102cc5780634c1aa5ff1161026a57806370a082311161023957806370a0823114610824578063715018a614610861578063778b688a146108785780638da5cb5b146108b5576103ad565b80634c1aa5ff1461077a5780634f15b41e146107a3578063557ed1ba146107ce57806357d87f0d146107f9576103ad565b806343d726d6116102a657806343d726d6146106e257806346b136ce146106f957806347062402146107245780634ada218b1461074f576103ad565b8063313ce5671461065157806332f5eac91461067c57806339509351146106a5576103ad565b8063199ffc7211610344578063298f0ec111610313578063298f0ec1146105a95780632b14ca56146105d25780632c3e486c146105fd5780633021d8b214610628576103ad565b8063199ffc72146104eb57806323b872dd14610516578063249f46971461055357806327c8f8351461057e576103ad565b80631356f1eb116103805780631356f1eb146104435780631694505e1461046c57806316f5a67a1461049757806318160ddd146104c0576103ad565b806306fdde03146103b2578063095ea7b3146103dd578063134dc5ad1461041a576103ad565b366103ad57005b600080fd5b3480156103be57600080fd5b506103c7610e4d565b6040516103d491906157d0565b60405180910390f35b3480156103e957600080fd5b5061040460048036038101906103ff9190614f05565b610edf565b604051610411919061579a565b60405180910390f35b34801561042657600080fd5b50610441600480360381019061043c9190614e3e565b610efd565b005b34801561044f57600080fd5b5061046a60048036038101906104659190614dec565b610fff565b005b34801561047857600080fd5b506104816110bf565b60405161048e91906157b5565b60405180910390f35b3480156104a357600080fd5b506104be60048036038101906104b99190615076565b6110e5565b005b3480156104cc57600080fd5b506104d56111d1565b6040516104e29190615a52565b60405180910390f35b3480156104f757600080fd5b506105006111db565b60405161050d9190615a52565b60405180910390f35b34801561052257600080fd5b5061053d60048036038101906105389190614e7a565b6111e1565b60405161054a919061579a565b60405180910390f35b34801561055f57600080fd5b506105686112ba565b604051610575919061572d565b60405180910390f35b34801561058a57600080fd5b506105936112e0565b6040516105a0919061572d565b60405180910390f35b3480156105b557600080fd5b506105d060048036038101906105cb9190614f41565b611306565b005b3480156105de57600080fd5b506105e761144d565b6040516105f49190615a52565b60405180910390f35b34801561060957600080fd5b50610612611453565b60405161061f9190615a52565b60405180910390f35b34801561063457600080fd5b5061064f600480360381019061064a9190615076565b611459565b005b34801561065d57600080fd5b506106666114df565b6040516106739190615a52565b60405180910390f35b34801561068857600080fd5b506106a3600480360381019061069e9190614dec565b6114e9565b005b3480156106b157600080fd5b506106cc60048036038101906106c79190614f05565b611623565b6040516106d9919061579a565b60405180910390f35b3480156106ee57600080fd5b506106f76116d6565b005b34801561070557600080fd5b5061070e61176f565b60405161071b9190615a52565b60405180910390f35b34801561073057600080fd5b50610739611775565b6040516107469190615a52565b60405180910390f35b34801561075b57600080fd5b5061076461177b565b604051610771919061579a565b60405180910390f35b34801561078657600080fd5b506107a1600480360381019061079c9190614feb565b61178e565b005b3480156107af57600080fd5b506107b8611873565b6040516107c59190615a52565b60405180910390f35b3480156107da57600080fd5b506107e3611879565b6040516107f09190615a52565b60405180910390f35b34801561080557600080fd5b5061080e611881565b60405161081b919061579a565b60405180910390f35b34801561083057600080fd5b5061084b60048036038101906108469190614dec565b611894565b6040516108589190615a52565b60405180910390f35b34801561086d57600080fd5b506108766118dc565b005b34801561088457600080fd5b5061089f600480360381019061089a9190614dec565b611964565b6040516108ac919061579a565b60405180910390f35b3480156108c157600080fd5b506108ca611983565b6040516108d7919061572d565b60405180910390f35b3480156108ec57600080fd5b506108f56119ad565b604051610902919061579a565b60405180910390f35b34801561091757600080fd5b50610932600480360381019061092d9190614dec565b6119c0565b60405161093f919061579a565b60405180910390f35b34801561095457600080fd5b5061095d6119e0565b60405161096a91906157d0565b60405180910390f35b34801561097f57600080fd5b50610988611a72565b6040516109959190615a52565b60405180910390f35b3480156109aa57600080fd5b506109c560048036038101906109c09190614f05565b611d4b565b005b3480156109d357600080fd5b506109dc611f0b565b6040516109e9919061572d565b60405180910390f35b3480156109fe57600080fd5b50610a196004803603810190610a149190614f05565b611f31565b604051610a26919061579a565b60405180910390f35b348015610a3b57600080fd5b50610a44611ffe565b604051610a519190615a52565b60405180910390f35b348015610a6657600080fd5b50610a816004803603810190610a7c9190614f05565b612004565b604051610a8e919061579a565b60405180910390f35b348015610aa357600080fd5b50610aac612022565b604051610ab9919061572d565b60405180910390f35b348015610ace57600080fd5b50610ad7612048565b604051610ae49190615a52565b60405180910390f35b348015610af957600080fd5b50610b146004803603810190610b0f9190615076565b61204e565b005b348015610b2257600080fd5b50610b3d6004803603810190610b389190615076565b6120d4565b005b348015610b4b57600080fd5b50610b546121b2565b604051610b61919061572d565b60405180910390f35b348015610b7657600080fd5b50610b916004803603810190610b8c9190614ec9565b6121d8565b005b348015610b9f57600080fd5b50610bba6004803603810190610bb59190614f99565b6122af565b005b348015610bc857600080fd5b50610bd1612348565b604051610bde919061572d565b60405180910390f35b348015610bf357600080fd5b50610c0e6004803603810190610c099190615076565b61236e565b005b348015610c1c57600080fd5b50610c25612448565b604051610c3493929190615a6d565b60405180910390f35b348015610c4957600080fd5b50610c5261263c565b604051610c5f919061572d565b60405180910390f35b348015610c7457600080fd5b50610c7d612662565b604051610c8a9190615a52565b60405180910390f35b348015610c9f57600080fd5b50610cba6004803603810190610cb59190614e3e565b612668565b604051610cc79190615a52565b60405180910390f35b348015610cdc57600080fd5b50610ce56126ef565b604051610cf29190615a52565b60405180910390f35b348015610d0757600080fd5b50610d106126f5565b604051610d1d9190615a52565b60405180910390f35b348015610d3257600080fd5b50610d3b6126fb565b604051610d48919061572d565b60405180910390f35b348015610d5d57600080fd5b50610d786004803603810190610d739190614dec565b612721565b005b348015610d8657600080fd5b50610d8f612819565b604051610d9c9190615a52565b60405180910390f35b348015610db157600080fd5b50610dba61281f565b604051610dc7919061579a565b60405180910390f35b348015610ddc57600080fd5b50610de5612832565b005b348015610df357600080fd5b50610e0e6004803603810190610e099190614dec565b6128d2565b604051610e1b919061579a565b60405180910390f35b348015610e3057600080fd5b50610e4b6004803603810190610e469190614f05565b6128f2565b005b606060038054610e5c90615c9e565b80601f0160208091040260200160405190810160405280929190818152602001828054610e8890615c9e565b8015610ed55780601f10610eaa57610100808354040283529160200191610ed5565b820191906000526020600020905b815481529060010190602001808311610eb857829003601f168201915b5050505050905090565b6000610ef3610eec612b3d565b8484612b45565b6001905092915050565b610f05612b3d565b73ffffffffffffffffffffffffffffffffffffffff16610f23611983565b73ffffffffffffffffffffffffffffffffffffffff1614610f79576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f7090615972565b60405180910390fd5b81601560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080601660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b611007612b3d565b73ffffffffffffffffffffffffffffffffffffffff16611025611983565b73ffffffffffffffffffffffffffffffffffffffff161461107b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161107290615972565b60405180910390fd5b80601760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b601d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611175576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161116c906159b2565b60405180910390fd5b6032811015801561118857506101f48111155b6111c7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111be906159f2565b60405180910390fd5b8060098190555050565b6000600254905090565b60145481565b60006111ee848484612d10565b6112af846111fa612b3d565b6112aa85604051806060016040528060288152602001615e5160289139600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000611260612b3d565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613e0c9092919063ffffffff16565b612b45565b600190509392505050565b601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b601b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61130e612b3d565b73ffffffffffffffffffffffffffffffffffffffff1661132c611983565b73ffffffffffffffffffffffffffffffffffffffff1614611382576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161137990615972565b60405180910390fd5b60005b838390508110156114475781602060008686858181106113ce577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b90506020020160208101906113e39190614dec565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550808061143f90615cd0565b915050611385565b50505050565b60095481565b60125481565b611461612b3d565b73ffffffffffffffffffffffffffffffffffffffff1661147f611983565b73ffffffffffffffffffffffffffffffffffffffff16146114d5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114cc90615972565b60405180910390fd5b8060078190555050565b6000600554905090565b6114f1612b3d565b73ffffffffffffffffffffffffffffffffffffffff1661150f611983565b73ffffffffffffffffffffffffffffffffffffffff1614611565576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161155c90615972565b60405180910390fd5b80601960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160206000601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b60006116cc611630612b3d565b846116c78560016000611641612b3d565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612adf90919063ffffffff16565b612b45565b6001905092915050565b6116de612b3d565b73ffffffffffffffffffffffffffffffffffffffff166116fc611983565b73ffffffffffffffffffffffffffffffffffffffff1614611752576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161174990615972565b60405180910390fd5b6000601d60156101000a81548160ff021916908315150217905550565b60075481565b60085481565b601d60149054906101000a900460ff1681565b611796612b3d565b73ffffffffffffffffffffffffffffffffffffffff166117b4611983565b73ffffffffffffffffffffffffffffffffffffffff161461180a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161180190615972565b60405180910390fd5b81600f60006101000a81548160ff0219169083151502179055506064811115611868576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161185f90615932565b60405180910390fd5b806010819055505050565b600d5481565b600042905090565b600f60009054906101000a900460ff1681565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6118e4612b3d565b73ffffffffffffffffffffffffffffffffffffffff16611902611983565b73ffffffffffffffffffffffffffffffffffffffff1614611958576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161194f90615972565b60405180910390fd5b6119626000613e70565b565b602080528060005260406000206000915054906101000a900460ff1681565b6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b601d60159054906101000a900460ff1681565b601e6020528060005260406000206000915054906101000a900460ff1681565b6060600480546119ef90615c9e565b80601f0160208091040260200160405190810160405280929190818152602001828054611a1b90615c9e565b8015611a685780601f10611a3d57610100808354040283529160200191611a68565b820191906000526020600020905b815481529060010190602001808311611a4b57829003601f168201915b5050505050905090565b600080601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690506000808273ffffffffffffffffffffffffffffffffffffffff16630902f1ac6040518163ffffffff1660e01b815260040160606040518083038186803b158015611ae357600080fd5b505afa158015611af7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b1b9190615027565b506dffffffffffffffffffffffffffff1691506dffffffffffffffffffffffffffff16915060008373ffffffffffffffffffffffffffffffffffffffff16630dfe16816040518163ffffffff1660e01b815260040160206040518083038186803b158015611b8857600080fd5b505afa158015611b9c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bc09190614e15565b73ffffffffffffffffffffffffffffffffffffffff16601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611c1a5781611c1c565b825b905060008473ffffffffffffffffffffffffffffffffffffffff16630dfe16816040518163ffffffff1660e01b815260040160206040518083038186803b158015611c6657600080fd5b505afa158015611c7a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c9e9190614e15565b73ffffffffffffffffffffffffffffffffffffffff16601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611cf85783611cfa565b825b90506000811115611d3e57611d3281611d24670de0b6b3a764000085613f3690919063ffffffff16565b613fb190919063ffffffff16565b95505050505050611d48565b6000955050505050505b90565b601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611ddb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dd2906159b2565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611e4b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e4290615a12565b60405180910390fd5b6b204fce5e3e2502611000000081611e616111d1565b611e6b9190615ac0565b1115611eac576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ea390615912565b60405180910390fd5b611eb68282613ffb565b6b204fce5e3e25026110000000611ecb6111d1565b10158015611ee65750601160009054906101000a900460ff16155b15611f07576001601160006101000a81548160ff0219169083151502179055505b5050565b601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000611ff4611f3e612b3d565b84611fef85604051806060016040528060258152602001615e796025913960016000611f68612b3d565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613e0c9092919063ffffffff16565b612b45565b6001905092915050565b60135481565b6000612018612011612b3d565b8484612d10565b6001905092915050565b601c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60105481565b612056612b3d565b73ffffffffffffffffffffffffffffffffffffffff16612074611983565b73ffffffffffffffffffffffffffffffffffffffff16146120ca576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120c190615972565b60405180910390fd5b80600e8190555050565b601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614612164576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161215b906159b2565b60405180910390fd5b60328111156121a8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161219f90615892565b60405180910390fd5b8060148190555050565b601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6121e0612b3d565b73ffffffffffffffffffffffffffffffffffffffff166121fe611983565b73ffffffffffffffffffffffffffffffffffffffff1614612254576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161224b90615972565b60405180910390fd5b80602060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6122b7612b3d565b73ffffffffffffffffffffffffffffffffffffffff166122d5611983565b73ffffffffffffffffffffffffffffffffffffffff161461232b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161232290615972565b60405180910390fd5b80601d60146101000a81548160ff02191690831515021790555050565b601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146123fe576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123f5906159b2565b60405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015612444573d6000803e3d6000fd5b5050565b600080600080601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690506000808273ffffffffffffffffffffffffffffffffffffffff16630902f1ac6040518163ffffffff1660e01b815260040160606040518083038186803b1580156124bc57600080fd5b505afa1580156124d0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124f49190615027565b506dffffffffffffffffffffffffffff1691506dffffffffffffffffffffffffffff1691506000601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690503073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16101561257f57829650819550612586565b8196508295505b8073ffffffffffffffffffffffffffffffffffffffff166370a08231601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518263ffffffff1660e01b81526004016125e1919061572d565b60206040518083038186803b1580156125f957600080fd5b505afa15801561260d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612631919061509f565b945050505050909192565b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600a5481565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600c5481565b600e5481565b601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b612729612b3d565b73ffffffffffffffffffffffffffffffffffffffff16612747611983565b73ffffffffffffffffffffffffffffffffffffffff161461279d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161279490615972565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561280d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161280490615812565b60405180910390fd5b61281681613e70565b50565b600b5481565b601160009054906101000a900460ff1681565b61283a612b3d565b73ffffffffffffffffffffffffffffffffffffffff16612858611983565b73ffffffffffffffffffffffffffffffffffffffff16146128ae576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128a590615972565b60405180910390fd5b6001601d60156101000a81548160ff02191690831515021790555042601381905550565b601f6020528060005260406000206000915054906101000a900460ff1681565b601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614612982576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612979906159b2565b60405180910390fd5b808273ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016129bc919061572d565b60206040518083038186803b1580156129d457600080fd5b505afa1580156129e8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a0c919061509f565b1015612a4d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a44906158d2565b60405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33836040518363ffffffff1660e01b8152600401612a88929190615771565b602060405180830381600087803b158015612aa257600080fd5b505af1158015612ab6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ada9190614fc2565b505050565b6000808284612aee9190615ac0565b905083811015612b33576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b2a90615872565b60405180910390fd5b8091505092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612bb5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612bac906159d2565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612c25576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c1c90615832565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051612d039190615a52565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612d80576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d7790615992565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612df0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612de7906157f2565b60405180910390fd5b601d60149054906101000a900460ff16158015612eaa5750601f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680612ea95750601f60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b5b15612f9057602060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680612f505750602060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b612f8f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f86906158b2565b60405180910390fd5b5b600f60009054906101000a900460ff168015612fb95750601160009054906101000a900460ff16155b801561300f5750602060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156130655750602060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561323357601f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168061310b5750601f60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156132325760003073ffffffffffffffffffffffffffffffffffffffff166370a08231601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518263ffffffff1660e01b815260040161316d919061572d565b60206040518083038186803b15801561318557600080fd5b505afa158015613199573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906131bd919061509f565b905060006131ea6103e86131dc60105485613f3690919063ffffffff16565b613fb190919063ffffffff16565b90508083111561322f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613226906158f2565b60405180910390fd5b50505b5b600080602060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156132da5750602060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561336157601f60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561336057600061333c8461418f565b9050600081118015613354575061335286614200565b155b1561335e57600192505b505b5b601f60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156133d05760006133be84614219565b905060008111156133ce57600191505b505b601d60159054906101000a900460ff1680156133f95750601160009054906101000a900460ff16155b80156134125750601d60169054906101000a900460ff16155b801561344a57503073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b80156134a05750601f60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156134aa575081155b80156135045750601d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b801561351f575060125460135461351b9190615ac0565b4210155b15613564576001601d60166101000a81548160ff021916908315150217905550613547614327565b506000601d60166101000a81548160ff0219169083151502179055505b6000601160009054906101000a900460ff161580156135cd5750602060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156136235750602060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b801561367d5750601d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff1614155b1561391c57821561369157600090506138fc565b81156136a057600090506138fb565b601f60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561374f5761371b6103e861370d60085487613f3690919063ffffffff16565b613fb190919063ffffffff16565b905061374a86601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1683614541565b6138fa565b601f60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156138f95760006137cc6103e86137be600a5488613f3690919063ffffffff16565b613fb190919063ffffffff16565b905060006137f96103e86137eb600b5489613f3690919063ffffffff16565b613fb190919063ffffffff16565b9050600061382a89601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1685614541565b61385789601b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684614541565b603260095411156138ce5761389e6103e861389061388160326009546147d690919063ffffffff16565b8a613f3690919063ffffffff16565b613fb190919063ffffffff16565b90506138cd89601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1683614541565b5b6138f3816138e58486612adf90919063ffffffff16565b612adf90919063ffffffff16565b93505050505b5b5b5b600081111561391b5761391881856147d690919063ffffffff16565b93505b5b600084111561393157613930868686614541565b5b600c54841415613a2a57601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d1ec9f1487876040518363ffffffff1660e01b8152600401613998929190615748565b602060405180830381600087803b1580156139b257600080fd5b505af11580156139c6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906139ea9190614fc2565b613a29576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613a2090615852565b60405180910390fd5b5b600c5484118015613a855750602060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015613adb5750601f60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015613b355750601d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff1614155b8015613b6d57503073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff1614155b15613c2157601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166332f289cf876040518263ffffffff1660e01b8152600401613bcd919061572d565b602060405180830381600087803b158015613be757600080fd5b505af1158015613bfb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613c1f919061509f565b505b601d60169054906101000a900460ff16158015613c885750601f60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015613cde5750601f60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015613d1657503073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff1614155b8015613d705750601d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff1614155b15613e045760006007541415613e0357601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663bba5ada16040518163ffffffff1660e01b8152600401600060405180830381600087803b158015613dea57600080fd5b505af1158015613dfe573d6000803e3d6000fd5b505050505b5b505050505050565b6000838311158290613e54576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613e4b91906157d0565b60405180910390fd5b5060008385613e639190615ba1565b9050809150509392505050565b6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600080831415613f495760009050613fab565b60008284613f579190615b47565b9050828482613f669190615b16565b14613fa6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613f9d90615952565b60405180910390fd5b809150505b92915050565b6000613ff383836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250614820565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561406b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161406290615a32565b60405180910390fd5b61407760008383614883565b61408c81600254612adf90919063ffffffff16565b6002819055506140e3816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612adf90919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516141839190615a52565b60405180910390a35050565b60008060008061419d612448565b925092509250600080841180156141b45750600083115b156141d3578284876141c69190615b47565b6141d09190615b16565b90505b80846141df9190615ac0565b82106141f7576141f182878686614888565b50809550505b50505050919050565b600080823b905060008163ffffffff1611915050919050565b6000806000614226612448565b9250509150818111614320578361425e601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16611894565b6142689190615ba1565b601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b815260040160206040518083038186803b1580156142d057600080fd5b505afa1580156142e4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614308919061509f565b856143139190615b47565b61431d9190615b16565b92505b5050919050565b6000803073ffffffffffffffffffffffffffffffffffffffff166370a08231601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518263ffffffff1660e01b8152600401614385919061572d565b60206040518083038186803b15801561439d57600080fd5b505afa1580156143b1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906143d5919061509f565b9050600d548111156145325760006143f8601354426147d690919063ffffffff16565b9050600061444c8261443e620151806144306103e86144226014548a613f3690919063ffffffff16565b613fb190919063ffffffff16565b613fb190919063ffffffff16565b613f3690919063ffffffff16565b905060008111156144a7576144a6601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16601b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1683614541565b5b6000601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508073ffffffffffffffffffffffffffffffffffffffff1663fff6cae96040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561451657600080fd5b505af115801561452a573d6000803e3d6000fd5b505050505050505b42601381905550600191505090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156145b1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016145a890615992565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415614621576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401614618906157f2565b60405180910390fd5b61462c838383614883565b61469781604051806060016040528060268152602001615e2b602691396000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613e0c9092919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061472a816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612adf90919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516147c99190615a52565b60405180910390a3505050565b600061481883836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250613e0c565b905092915050565b60008083118290614867576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161485e91906157d0565b60405180910390fd5b50600083856148769190615b16565b9050809150509392505050565b505050565b6000806000601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b815260040160206040518083038186803b1580156148f557600080fd5b505afa158015614909573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061492d919061509f565b90506000601d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b15801561499957600080fd5b505afa1580156149ad573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906149d19190614e15565b73ffffffffffffffffffffffffffffffffffffffff1663017e7e586040518163ffffffff1660e01b815260040160206040518083038186803b158015614a1657600080fd5b505afa158015614a2a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614a4e9190614e15565b905060008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141590506000601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16637464fc3d6040518163ffffffff1660e01b815260040160206040518083038186803b158015614aee57600080fd5b505afa158015614b02573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614b26919061509f565b90508115614bdf5760008114614bde576000614b4c888a614b479190615b47565b614c67565b90506000614b5983614c67565b905080821115614bdb57600060088284614b739190615ba1565b88614b7e9190615b47565b614b889190615b47565b90506000600883614b999190615b47565b601185614ba69190615b47565b614bb09190615ac0565b90508082614bbe9190615b16565b98506000891115614bd8578888614bd59190615ac0565b97505b50505b50505b5b6000888b614bed9190615ba1565b90506000851415614c20576103e8614c0f8b83614c0a9190615b47565b614c67565b614c199190615ba1565b9650614c59565b614c56898683614c309190615b47565b614c3a9190615b16565b89878d614c479190615b47565b614c519190615b16565b614ce1565b96505b505050505094509492505050565b60006003821115614cce5781905060006001600284614c869190615b16565b614c909190615ac0565b90505b81811015614cc8578091506002818285614cad9190615b16565b614cb79190615ac0565b614cc19190615b16565b9050614c93565b50614cdc565b60008214614cdb57600190505b5b919050565b6000818310614cf05781614cf2565b825b905092915050565b600081359050614d0981615db7565b92915050565b600081519050614d1e81615db7565b92915050565b60008083601f840112614d3657600080fd5b8235905067ffffffffffffffff811115614d4f57600080fd5b602083019150836020820283011115614d6757600080fd5b9250929050565b600081359050614d7d81615dce565b92915050565b600081519050614d9281615dce565b92915050565b600081519050614da781615de5565b92915050565b600081359050614dbc81615dfc565b92915050565b600081519050614dd181615dfc565b92915050565b600081519050614de681615e13565b92915050565b600060208284031215614dfe57600080fd5b6000614e0c84828501614cfa565b91505092915050565b600060208284031215614e2757600080fd5b6000614e3584828501614d0f565b91505092915050565b60008060408385031215614e5157600080fd5b6000614e5f85828601614cfa565b9250506020614e7085828601614cfa565b9150509250929050565b600080600060608486031215614e8f57600080fd5b6000614e9d86828701614cfa565b9350506020614eae86828701614cfa565b9250506040614ebf86828701614dad565b9150509250925092565b60008060408385031215614edc57600080fd5b6000614eea85828601614cfa565b9250506020614efb85828601614d6e565b9150509250929050565b60008060408385031215614f1857600080fd5b6000614f2685828601614cfa565b9250506020614f3785828601614dad565b9150509250929050565b600080600060408486031215614f5657600080fd5b600084013567ffffffffffffffff811115614f7057600080fd5b614f7c86828701614d24565b93509350506020614f8f86828701614d6e565b9150509250925092565b600060208284031215614fab57600080fd5b6000614fb984828501614d6e565b91505092915050565b600060208284031215614fd457600080fd5b6000614fe284828501614d83565b91505092915050565b60008060408385031215614ffe57600080fd5b600061500c85828601614d6e565b925050602061501d85828601614dad565b9150509250929050565b60008060006060848603121561503c57600080fd5b600061504a86828701614d98565b935050602061505b86828701614d98565b925050604061506c86828701614dd7565b9150509250925092565b60006020828403121561508857600080fd5b600061509684828501614dad565b91505092915050565b6000602082840312156150b157600080fd5b60006150bf84828501614dc2565b91505092915050565b6150d181615bd5565b82525050565b6150e081615be7565b82525050565b6150ef81615c47565b82525050565b600061510082615aa4565b61510a8185615aaf565b935061511a818560208601615c6b565b61512381615da6565b840191505092915050565b600061513b602383615aaf565b91507f45524332303a207472616e7366657220746f20746865207a65726f206164647260008301527f65737300000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b60006151a1602683615aaf565b91507f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008301527f64647265737300000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000615207602283615aaf565b91507f45524332303a20617070726f766520746f20746865207a65726f20616464726560008301527f73730000000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b600061526d600a83615aaf565b91507f62696e64206572726f72000000000000000000000000000000000000000000006000830152602082019050919050565b60006152ad601b83615aaf565b91507f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006000830152602082019050919050565b60006152ed601b83615aaf565b91507f50657263656e746167652063616e6e6f742065786365656420352500000000006000830152602082019050919050565b600061532d601683615aaf565b91507f54726164696e67206973206e6f7420656e61626c6564000000000000000000006000830152602082019050919050565b600061536d603283615aaf565b91507f54686520746f6b656e20616d6f756e7420696e207468697320636f6e7472616360008301527f7420697320696e73756666696369656e742e00000000000000000000000000006020830152604082019050919050565b60006153d3601d83615aaf565b91507f416d6f756e742065786365656473206d617820616c6c6f7765642031250000006000830152602082019050919050565b6000615413602583615aaf565b91507f45524332303a206d696e7420616d6f756e742065786365656473206d6178207360008301527f7570706c790000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000615479601c83615aaf565b91507f50657263656e746167652063616e6e6f742065786365656420313025000000006000830152602082019050919050565b60006154b9602183615aaf565b91507f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008301527f77000000000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b600061551f602083615aaf565b91507f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726000830152602082019050919050565b600061555f602583615aaf565b91507f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008301527f64726573730000000000000000000000000000000000000000000000000000006020830152604082019050919050565b60006155c5601283615aaf565b91507f6e6f742073797374656d206164647265737300000000000000000000000000006000830152602082019050919050565b6000615605602483615aaf565b91507f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008301527f72657373000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b600061566b601f83615aaf565b91507f50657263656e74206d757374206265747765656e20353020616e6420353030006000830152602082019050919050565b60006156ab601b83615aaf565b91507f45524332303a206d696e7420746f207a65726f206164647265737300000000006000830152602082019050919050565b60006156eb601f83615aaf565b91507f45524332303a206d696e7420746f20746865207a65726f2061646472657373006000830152602082019050919050565b61572781615c2d565b82525050565b600060208201905061574260008301846150c8565b92915050565b600060408201905061575d60008301856150c8565b61576a60208301846150c8565b9392505050565b600060408201905061578660008301856150c8565b615793602083018461571e565b9392505050565b60006020820190506157af60008301846150d7565b92915050565b60006020820190506157ca60008301846150e6565b92915050565b600060208201905081810360008301526157ea81846150f5565b905092915050565b6000602082019050818103600083015261580b8161512e565b9050919050565b6000602082019050818103600083015261582b81615194565b9050919050565b6000602082019050818103600083015261584b816151fa565b9050919050565b6000602082019050818103600083015261586b81615260565b9050919050565b6000602082019050818103600083015261588b816152a0565b9050919050565b600060208201905081810360008301526158ab816152e0565b9050919050565b600060208201905081810360008301526158cb81615320565b9050919050565b600060208201905081810360008301526158eb81615360565b9050919050565b6000602082019050818103600083015261590b816153c6565b9050919050565b6000602082019050818103600083015261592b81615406565b9050919050565b6000602082019050818103600083015261594b8161546c565b9050919050565b6000602082019050818103600083015261596b816154ac565b9050919050565b6000602082019050818103600083015261598b81615512565b9050919050565b600060208201905081810360008301526159ab81615552565b9050919050565b600060208201905081810360008301526159cb816155b8565b9050919050565b600060208201905081810360008301526159eb816155f8565b9050919050565b60006020820190508181036000830152615a0b8161565e565b9050919050565b60006020820190508181036000830152615a2b8161569e565b9050919050565b60006020820190508181036000830152615a4b816156de565b9050919050565b6000602082019050615a67600083018461571e565b92915050565b6000606082019050615a82600083018661571e565b615a8f602083018561571e565b615a9c604083018461571e565b949350505050565b600081519050919050565b600082825260208201905092915050565b6000615acb82615c2d565b9150615ad683615c2d565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115615b0b57615b0a615d19565b5b828201905092915050565b6000615b2182615c2d565b9150615b2c83615c2d565b925082615b3c57615b3b615d48565b5b828204905092915050565b6000615b5282615c2d565b9150615b5d83615c2d565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615615b9657615b95615d19565b5b828202905092915050565b6000615bac82615c2d565b9150615bb783615c2d565b925082821015615bca57615bc9615d19565b5b828203905092915050565b6000615be082615c0d565b9050919050565b60008115159050919050565b60006dffffffffffffffffffffffffffff82169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600063ffffffff82169050919050565b6000615c5282615c59565b9050919050565b6000615c6482615c0d565b9050919050565b60005b83811015615c89578082015181840152602081019050615c6e565b83811115615c98576000848401525b50505050565b60006002820490506001821680615cb657607f821691505b60208210811415615cca57615cc9615d77565b5b50919050565b6000615cdb82615c2d565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415615d0e57615d0d615d19565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000601f19601f8301169050919050565b615dc081615bd5565b8114615dcb57600080fd5b50565b615dd781615be7565b8114615de257600080fd5b50565b615dee81615bf3565b8114615df957600080fd5b50565b615e0581615c2d565b8114615e1057600080fd5b50565b615e1c81615c37565b8114615e2757600080fd5b5056fe45524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa26469706673582212208f7b3e3279db76de45ed139407557301fc6fb8152050337f78931e224ad2fb4164736f6c63430008000033

Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)

00000000000000000000000054cbd13d215a435b430f6728e3e3d854297f3eba000000000000000000000000ae0b6594262c98e0b102078f2810f83ef5dd3032

-----Decoded View---------------
Arg [0] : _managerAddress (address): 0x54CBd13d215A435B430f6728E3E3d854297f3Eba
Arg [1] : _fundAddress (address): 0xAE0B6594262c98E0B102078f2810f83ef5dD3032

-----Encoded View---------------
2 Constructor Arguments found :
Arg [0] : 00000000000000000000000054cbd13d215a435b430f6728e3e3d854297f3eba
Arg [1] : 000000000000000000000000ae0b6594262c98e0b102078f2810f83ef5dd3032


Deployed Bytecode Sourcemap

12523:14187:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4952:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5941:194;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25474:181;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;25667:130;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13816:94;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25047:204;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5282:108;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13266:36;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6143:454;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13500:36;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13630:80;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25952:220;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12677:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13160:45;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;26334:102;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5172;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25259:203;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6605:293;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24210:70;;;;;;;;;;;;;:::i;:::-;;12604:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12642:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13919:34;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;26444:257;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12834:32;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1152:90;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12934:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5398:143;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;795:103;;;;;;;;;;;;;:::i;:::-;;14124:45;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;572:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13963:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14029:43;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5060:104;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19535:521;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22564:429;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13543:80;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6906:393;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13213:46;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5549:200;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13719:90;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12977:41;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;26184:138;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;24847:188;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13381:76;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25809:131;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;24292:101;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13466:26;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24401:124;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20064:552;;;;;;;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;13312:29;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12711:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5757:176;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12791:36;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12874:50;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13348:26;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;906:238;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12750:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13109:38;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24091:111;;;;;;;;;;;;;:::i;:::-;;14079:37;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24533:306;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4952:100;5006:13;5039:5;5032:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4952:100;:::o;5941:194::-;6049:4;6066:39;6075:12;:10;:12::i;:::-;6089:7;6098:6;6066:8;:39::i;:::-;6123:4;6116:11;;5941:194;;;;:::o;25474:181::-;718:12;:10;:12::i;:::-;707:23;;:7;:5;:7::i;:::-;:23;;;699:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;25595:15:::1;25578:14;;:32;;;;;;;;;;;;;;;;;;25635:12;25621:11;;:26;;;;;;;;;;;;;;;;;;25474:181:::0;;:::o;25667:130::-;718:12;:10;:12::i;:::-;707:23;;:7;:5;:7::i;:::-;:23;;;699:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;25772:17:::1;25753:16;;:36;;;;;;;;;;;;;;;;;;25667:130:::0;:::o;13816:94::-;;;;;;;;;;;;;:::o;25047:204::-;22492:21;;;;;;;;;;;22478:35;;:10;:35;;;22470:66;;;;;;;;;;;;:::i;:::-;;;;;;;;;25156:2:::1;25144:8;:14;;:33;;;;;25174:3;25162:8;:15;;25144:33;25136:77;;;;;;;;;;;;:::i;:::-;;;;;;;;;25234:8;25224:7;:18;;;;25047:204:::0;:::o;5282:108::-;5343:7;5370:12;;5363:19;;5282:108;:::o;13266:36::-;;;;:::o;6143:454::-;6283:4;6300:36;6310:6;6318:9;6329:6;6300:9;:36::i;:::-;6347:220;6370:6;6391:12;:10;:12::i;:::-;6418:138;6474:6;6418:138;;;;;;;;;;;;;;;;;:11;:19;6430:6;6418:19;;;;;;;;;;;;;;;:33;6438:12;:10;:12::i;:::-;6418:33;;;;;;;;;;;;;;;;:37;;:138;;;;;:::i;:::-;6347:8;:220::i;:::-;6585:4;6578:11;;6143:454;;;;;:::o;13500:36::-;;;;;;;;;;;;;:::o;13630:80::-;;;;;;;;;;;;;:::o;25952:220::-;718:12;:10;:12::i;:::-;707:23;;:7;:5;:7::i;:::-;:23;;;699:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;26058:9:::1;26054:111;26077:8;;:15;;26073:1;:19;26054:111;;;26143:10;26114:13;:26;26128:8;;26137:1;26128:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;26114:26;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;26094:3;;;;;:::i;:::-;;;;26054:111;;;;25952:220:::0;;;:::o;12677:27::-;;;;:::o;13160:45::-;;;;:::o;26334:102::-;718:12;:10;:12::i;:::-;707:23;;:7;:5;:7::i;:::-;:23;;;699:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;26418:10:::1;26406:9;:22;;;;26334:102:::0;:::o;5172:::-;5230:7;5257:9;;5250:16;;5172:102;:::o;25259:203::-;718:12;:10;:12::i;:::-;707:23;;:7;:5;:7::i;:::-;:23;;;699:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;25378:22:::1;25354:21;;:46;;;;;;;;;;;;;;;;;;25450:4;25411:13;:36;25425:21;;;;;;;;;;;25411:36;;;;;;;;;;;;;;;;:43;;;;;;;;;;;;;;;;;;25259:203:::0;:::o;6605:293::-;6718:4;6735:133;6758:12;:10;:12::i;:::-;6785:7;6807:50;6846:10;6807:11;:25;6819:12;:10;:12::i;:::-;6807:25;;;;;;;;;;;;;;;:34;6833:7;6807:34;;;;;;;;;;;;;;;;:38;;:50;;;;:::i;:::-;6735:8;:133::i;:::-;6886:4;6879:11;;6605:293;;;;:::o;24210:70::-;718:12;:10;:12::i;:::-;707:23;;:7;:5;:7::i;:::-;:23;;;699:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;24267:5:::1;24256:8;;:16;;;;;;;;;;;;;;;;;;24210:70::o:0;12604:28::-;;;;:::o;12642:27::-;;;;:::o;13919:34::-;;;;;;;;;;;;;:::o;26444:257::-;718:12;:10;:12::i;:::-;707:23;;:7;:5;:7::i;:::-;:23;;;699:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;26554:8:::1;26535:16;;:27;;;;;;;;;;;;;;;;;;26614:3;26602:8;:15;;26594:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;26685:8;26661:21;:32;;;;26444:257:::0;;:::o;12834:32::-;;;;:::o;1152:90::-;1192:7;1219:15;1212:22;;1152:90;:::o;12934:35::-;;;;;;;;;;;;;:::o;5398:143::-;5488:7;5515:9;:18;5525:7;5515:18;;;;;;;;;;;;;;;;5508:25;;5398:143;;;:::o;795:103::-;718:12;:10;:12::i;:::-;707:23;;:7;:5;:7::i;:::-;:23;;;699:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;860:30:::1;887:1;860:18;:30::i;:::-;795:103::o:0;14124:45::-;;;;;;;;;;;;;;;;;;;;;;:::o;572:87::-;618:7;645:6;;;;;;;;;;;638:13;;572:87;:::o;13963:28::-;;;;;;;;;;;;;:::o;14029:43::-;;;;;;;;;;;;;;;;;;;;;;:::o;5060:104::-;5116:13;5149:7;5142:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5060:104;:::o;19535:521::-;19576:7;19598:23;19639:11;;;;;;;;;;;19598:53;;19663:16;19681;19703:8;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;19662:63;;;;;;;;;19738:19;19775:8;:15;;;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;19760:32;;:11;;;;;;;;;;;:32;;;:54;;19806:8;19760:54;;;19795:8;19760:54;19738:76;;19825:20;19863:8;:15;;;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;19848:32;;:11;;;;;;;;;;;:32;;;:54;;19894:8;19848:54;;;19883:8;19848:54;19825:77;;19933:1;19918:12;:16;19915:134;;;19958:39;19984:12;19958:21;19974:4;19958:11;:15;;:21;;;;:::i;:::-;:25;;:39;;;;:::i;:::-;19951:46;;;;;;;;;19915:134;20036:1;20029:8;;;;;;;19535:521;;:::o;22564:429::-;22492:21;;;;;;;;;;;22478:35;;:10;:35;;;22470:66;;;;;;;;;;;;:::i;:::-;;;;;;;;;22684:1:::1;22668:18;;:4;:18;;;;22660:58;;;;;;;;;;;;:::i;:::-;;;;;;;;;13072:22;22753:6;22737:13;:11;:13::i;:::-;:22;;;;:::i;:::-;:42;;22729:92;;;;;;;;;;;;:::i;:::-;;;;;;;;;22832:19;22838:4;22844:6;22832:5;:19::i;:::-;13072:22;22876:13;:11;:13::i;:::-;:33;;:56;;;;;22914:18;;;;;;;;;;;22913:19;22876:56;22872:114;;;22970:4;22949:18;;:25;;;;;;;;;;;;;;;;;;22872:114;22564:429:::0;;:::o;13543:80::-;;;;;;;;;;;;;:::o;6906:393::-;7024:4;7041:228;7064:12;:10;:12::i;:::-;7091:7;7113:145;7170:15;7113:145;;;;;;;;;;;;;;;;;:11;:25;7125:12;:10;:12::i;:::-;7113:25;;;;;;;;;;;;;;;:34;7139:7;7113:34;;;;;;;;;;;;;;;;:38;;:145;;;;;:::i;:::-;7041:8;:228::i;:::-;7287:4;7280:11;;6906:393;;;;:::o;13213:46::-;;;;:::o;5549:200::-;5660:4;5677:42;5687:12;:10;:12::i;:::-;5701:9;5712:6;5677:9;:42::i;:::-;5737:4;5730:11;;5549:200;;;;:::o;13719:90::-;;;;;;;;;;;;;:::o;12977:41::-;;;;:::o;26184:138::-;718:12;:10;:12::i;:::-;707:23;;:7;:5;:7::i;:::-;:23;;;699:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;26295:19:::1;26274:18;:40;;;;26184:138:::0;:::o;24847:188::-;22492:21;;;;;;;;;;;22478:35;;:10;:35;;;22470:66;;;;;;;;;;;;:::i;:::-;;;;;;;;;24955:2:::1;24943:8;:14;;24935:54;;;;;;;;;;;;:::i;:::-;;;;;;;;;25019:8;25000:16;:27;;;;24847:188:::0;:::o;13381:76::-;;;;;;;;;;;;;:::o;25809:131::-;718:12;:10;:12::i;:::-;707:23;;:7;:5;:7::i;:::-;:23;;;699:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;25922:10:::1;25896:13;:23;25910:8;25896:23;;;;;;;;;;;;;;;;:36;;;;;;;;;;;;;;;;;;25809:131:::0;;:::o;24292:101::-;718:12;:10;:12::i;:::-;707:23;;:7;:5;:7::i;:::-;:23;;;699:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;24379:6:::1;24362:14;;:23;;;;;;;;;;;;;;;;;;24292:101:::0;:::o;13466:26::-;;;;;;;;;;;;;:::o;24401:124::-;22492:21;;;;;;;;;;;22478:35;;:10;:35;;;22470:66;;;;;;;;;;;;:::i;:::-;;;;;;;;;24489:10:::1;24481:28;;:36;24510:6;24481:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;24401:124:::0;:::o;20064:552::-;20136:14;20152:13;20167:20;20205:23;20246:11;;;;;;;;;;;20205:53;;20270:10;20282;20298:8;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;20269:51;;;;;;;;;20333:18;20354:11;;;;;;;;;;;20333:32;;20401:4;20380:26;;:10;:26;;;20376:164;;;20432:2;20423:11;;20457:2;20449:10;;20376:164;;;20501:2;20492:11;;20526:2;20518:10;;20376:164;20574:10;20567:28;;;20596:11;;;;;;;;;;;20567:41;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;20552:56;;20064:552;;;;;;;:::o;13312:29::-;;;;;;;;;;;;;:::o;12711:31::-;;;;:::o;5757:176::-;5871:7;5898:11;:18;5910:5;5898:18;;;;;;;;;;;;;;;:27;5917:7;5898:27;;;;;;;;;;;;;;;;5891:34;;5757:176;;;;:::o;12791:36::-;;;;:::o;12874:50::-;;;;:::o;13348:26::-;;;;;;;;;;;;;:::o;906:238::-;718:12;:10;:12::i;:::-;707:23;;:7;:5;:7::i;:::-;:23;;;699:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;1029:1:::1;1009:22;;:8;:22;;;;987:110;;;;;;;;;;;;:::i;:::-;;;;;;;;;1108:28;1127:8;1108:18;:28::i;:::-;906:238:::0;:::o;12750:31::-;;;;:::o;13109:38::-;;;;;;;;;;;;;:::o;24091:111::-;718:12;:10;:12::i;:::-;707:23;;:7;:5;:7::i;:::-;:23;;;699:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;24147:4:::1;24136:8;;:15;;;;;;;;;;;;;;;;;;24179;24162:14;:32;;;;24091:111::o:0;14079:37::-;;;;;;;;;;;;;;;;;;;;;;:::o;24533:306::-;22492:21;;;;;;;;;;;22478:35;;:10;:35;;;22470:66;;;;;;;;;;;;:::i;:::-;;;;;;;;;24696:4:::1;24660:6;24653:24;;;24686:4;24653:39;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:47;;24630:149;;;;;;;;;;;;:::i;:::-;;;;;;;;;24797:6;24790:23;;;24814:10;24826:4;24790:41;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;24533:306:::0;;:::o;2901:181::-;2959:7;2979:9;2995:1;2991;:5;;;;:::i;:::-;2979:17;;3020:1;3015;:6;;3007:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;3073:1;3066:8;;;2901:181;;;;:::o;93:98::-;146:7;173:10;166:17;;93:98;:::o;8774:380::-;8927:1;8910:19;;:5;:19;;;;8902:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9008:1;8989:21;;:7;:21;;;;8981:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9092:6;9062:11;:18;9074:5;9062:18;;;;;;;;;;;;;;;:27;9081:7;9062:27;;;;;;;;;;;;;;;:36;;;;9130:7;9114:32;;9123:5;9114:32;;;9139:6;9114:32;;;;;;:::i;:::-;;;;;;;;8774:380;;;:::o;15043:3986::-;15191:1;15175:18;;:4;:18;;;;15167:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;15268:1;15254:16;;:2;:16;;;;15246:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;15336:14;;;;;;;;;;;15335:15;:45;;;;;15355:5;:11;15361:4;15355:11;;;;;;;;;;;;;;;;;;;;;;;;;:24;;;;15370:5;:9;15376:2;15370:9;;;;;;;;;;;;;;;;;;;;;;;;;15355:24;15335:45;15331:153;;;15405:13;:19;15419:4;15405:19;;;;;;;;;;;;;;;;;;;;;;;;;:40;;;;15428:13;:17;15442:2;15428:17;;;;;;;;;;;;;;;;;;;;;;;;;15405:40;15397:75;;;;;;;;;;;;:::i;:::-;;;;;;;;;15331:153;15508:16;;;;;;;;;;;:39;;;;;15529:18;;;;;;;;;;;15528:19;15508:39;:63;;;;;15552:13;:19;15566:4;15552:19;;;;;;;;;;;;;;;;;;;;;;;;;15551:20;15508:63;:85;;;;;15576:13;:17;15590:2;15576:17;;;;;;;;;;;;;;;;;;;;;;;;;15575:18;15508:85;15504:410;;;15614:5;:11;15620:4;15614:11;;;;;;;;;;;;;;;;;;;;;;;;;:24;;;;15629:5;:9;15635:2;15629:9;;;;;;;;;;;;;;;;;;;;;;;;;15614:24;15610:293;;;15660:19;15682:4;:14;;;15697:11;;;;;;;;;;;15682:27;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;15660:49;;15728:17;15748:48;15791:4;15748:38;15764:21;;15748:11;:15;;:38;;;;:::i;:::-;:42;;:48;;;;:::i;:::-;15728:68;;15844:9;15834:6;:19;;15826:61;;;;;;;;;;;;:::i;:::-;;;;;;;;;15610:293;;;15504:410;15926:10;15947:13;15976;:19;15990:4;15976:19;;;;;;;;;;;;;;;;;;;;;;;;;15975:20;:42;;;;;16000:13;:17;16014:2;16000:17;;;;;;;;;;;;;;;;;;;;;;;;;15999:18;15975:42;15971:290;;;16038:5;:9;16044:2;16038:9;;;;;;;;;;;;;;;;;;;;;;;;;16034:216;;;16068:22;16093:23;16109:6;16093:15;:23::i;:::-;16068:48;;16156:1;16139:14;:18;:39;;;;;16162:16;16173:4;16162:10;:16::i;:::-;16161:17;16139:39;16135:100;;;16211:4;16203:12;;16135:100;16034:216;;15971:290;16277:5;:11;16283:4;16277:11;;;;;;;;;;;;;;;;;;;;;;;;;16273:189;;;16305:25;16333:26;16352:6;16333:18;:26::i;:::-;16305:54;;16398:1;16378:17;:21;16374:77;;;16431:4;16420:15;;16374:77;16273:189;;16500:8;;;;;;;;;;;:44;;;;;16526:18;;;;;;;;;;;16525:19;16500:44;:70;;;;;16562:8;;;;;;;;;;;16561:9;16500:70;:108;;;;;16603:4;16587:21;;:4;:21;;;;16500:108;:137;;;;;16626:5;:11;16632:4;16626:11;;;;;;;;;;;;;;;;;;;;;;;;;16625:12;16500:137;:160;;;;;16655:5;16654:6;16500:160;:209;;;;;16693:15;;;;;;;;;;;16677:32;;:4;:32;;;;16500:209;:277;;;;;16762:15;;16745:14;;:32;;;;:::i;:::-;16726:15;:51;;16500:277;16482:424;;;16815:4;16804:8;;:15;;;;;;;;;;;;;;;;;;16834:29;:27;:29::i;:::-;;16889:5;16878:8;;:16;;;;;;;;;;;;;;;;;;16482:424;16918:17;16965:18;;;;;;;;;;;16964:19;:56;;;;;17001:13;:19;17015:4;17001:19;;;;;;;;;;;;;;;;;;;;;;;;;17000:20;16964:56;:91;;;;;17038:13;:17;17052:2;17038:17;;;;;;;;;;;;;;;;;;;;;;;;;17037:18;16964:91;:140;;;;;17088:15;;;;;;;;;;;17072:32;;:4;:32;;;;16964:140;16946:1260;;;17135:5;17131:966;;;17173:1;17161:13;;17131:966;;;17200:8;17196:901;;;17241:1;17229:13;;17196:901;;;17268:5;:11;17274:4;17268:11;;;;;;;;;;;;;;;;;;;;;;;;;17264:833;;;17312:28;17335:4;17312:18;17323:6;;17312;:10;;:18;;;;:::i;:::-;:22;;:28;;;;:::i;:::-;17300:40;;17360:55;17376:4;17382:21;;;;;;;;;;;17405:9;17360:15;:55::i;:::-;17264:833;;;17441:5;:9;17447:2;17441:9;;;;;;;;;;;;;;;;;;;;;;;;;17437:660;;;17471:18;17492:33;17520:4;17492:23;17503:11;;17492:6;:10;;:23;;;;:::i;:::-;:27;;:33;;;;:::i;:::-;17471:54;;17557:18;17578:33;17606:4;17578:23;17589:11;;17578:6;:10;;:23;;;;:::i;:::-;:27;;:33;;;;:::i;:::-;17557:54;;17643:19;17685:46;17701:4;17707:11;;;;;;;;;;;17720:10;17685:15;:46::i;:::-;17750;17766:4;17772:11;;;;;;;;;;;17785:10;17750:15;:46::i;:::-;17828:2;17818:7;;:12;17815:191;;;17869:37;17901:4;17869:27;17880:15;17892:2;17880:7;;:11;;:15;;;;:::i;:::-;17869:6;:10;;:27;;;;:::i;:::-;:31;;:37;;;;:::i;:::-;17855:51;;17929:57;17945:4;17951:21;;;;;;;;;;;17974:11;17929:15;:57::i;:::-;17815:191;18038:43;18069:11;18038:26;18053:10;18038;:14;;:26;;;;:::i;:::-;:30;;:43;;;;:::i;:::-;18026:55;;17437:660;;;;17264:833;17196:901;17131:966;18127:1;18115:9;:13;18111:84;;;18158:21;18169:9;18158:6;:10;;:21;;;;:::i;:::-;18149:30;;18111:84;16946:1260;18228:1;18219:6;:10;18216:75;;;18246:33;18262:4;18268:2;18272:6;18246:15;:33::i;:::-;18216:75;18325:7;;18315:6;:17;18311:125;;;18372:21;;;;;;;;;;;18357:42;;;18400:4;18406:2;18357:52;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;18349:75;;;;;;;;;;;;:::i;:::-;;;;;;;;;18311:125;18468:7;;18459:6;:16;:55;;;;;18495:13;:19;18509:4;18495:19;;;;;;;;;;;;;;;;;;;;;;;;;18494:20;18459:55;:85;;;;;18533:5;:11;18539:4;18533:11;;;;;;;;;;;;;;;;;;;;;;;;;18532:12;18459:85;:135;;;;;18578:15;;;;;;;;;;;18562:32;;:4;:32;;;;18459:135;:174;;;;;18628:4;18612:21;;:4;:21;;;;18459:174;18456:271;;;18676:21;;;;;;;;;;;18661:48;;;18710:4;18661:54;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;18456:271;18746:8;;;;;;;;;;;18745:9;:38;;;;;18772:5;:11;18778:4;18772:11;;;;;;;;;;;;;;;;;;;;;;;;;18771:12;18745:38;:52;;;;;18788:5;:9;18794:2;18788:9;;;;;;;;;;;;;;;;;;;;;;;;;18787:10;18745:52;:90;;;;;18830:4;18814:21;;:4;:21;;;;18745:90;:139;;;;;18868:15;;;;;;;;;;;18852:32;;:4;:32;;;;18745:139;18741:281;;;18927:1;18914:9;;:14;18911:100;;;18964:21;;;;;;;;;;;18949:44;;;:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18911:100;18741:281;15043:3986;;;;;;:::o;3234:226::-;3354:7;3387:1;3382;:6;;3390:12;3374:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;3414:9;3430:1;3426;:5;;;;:::i;:::-;3414:17;;3451:1;3444:8;;;3234:226;;;;;:::o;1250:191::-;1324:16;1343:6;;;;;;;;;;;1324:25;;1369:8;1360:6;;:17;;;;;;;;;;;;;;;;;;1424:8;1393:40;;1414:8;1393:40;;;;;;;;;;;;1250:191;;:::o;3468:250::-;3526:7;3555:1;3550;:6;3546:47;;;3580:1;3573:8;;;;3546:47;3605:9;3621:1;3617;:5;;;;:::i;:::-;3605:17;;3650:1;3645;3641;:5;;;;:::i;:::-;:10;3633:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;3709:1;3702:8;;;3468:250;;;;;:::o;3726:132::-;3784:7;3811:39;3815:1;3818;3811:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;3804:46;;3726:132;;;;:::o;7925:378::-;8028:1;8009:21;;:7;:21;;;;8001:65;;;;;;;;;;;;:::i;:::-;;;;;;;;;8079:49;8108:1;8112:7;8121:6;8079:20;:49::i;:::-;8156:24;8173:6;8156:12;;:16;;:24;;;;:::i;:::-;8141:12;:39;;;;8212:30;8235:6;8212:9;:18;8222:7;8212:18;;;;;;;;;;;;;;;;:22;;:30;;;;:::i;:::-;8191:9;:18;8201:7;8191:18;;;;;;;;;;;;;;;:51;;;;8279:7;8258:37;;8275:1;8258:37;;;8288:6;8258:37;;;;;;:::i;:::-;;;;;;;;7925:378;;:::o;19041:486::-;19121:17;19152:14;19168:13;19183:20;19207:14;:12;:14::i;:::-;19151:70;;;;;;19232:19;19275:1;19266:6;:10;:23;;;;;19288:1;19280:5;:9;19266:23;19262:95;;;19340:5;19330:6;19321;:15;;;;:::i;:::-;19320:25;;;;:::i;:::-;19306:39;;19262:95;19415:11;19406:6;:20;;;;:::i;:::-;19390:12;:36;19386:134;;19459:49;19472:12;19486:6;19494;19502:5;19459:12;:49::i;:::-;19443:65;;;;;19386:134;19041:486;;;;;;;:::o;23001:192::-;23058:4;23075:11;23141:5;23129:18;23121:26;;23183:1;23176:4;:8;;;23168:17;;;23001:192;;;:::o;20624:399::-;20707:17;20738:14;20756:20;20780:14;:12;:14::i;:::-;20737:57;;;;;20847:6;20831:12;:22;20827:189;;20997:6;20972:22;20982:11;;;;;;;;;;;20972:9;:22::i;:::-;:31;;;;:::i;:::-;20924:11;;;;;;;;;;;20909:39;;;:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;20900:6;:50;;;;:::i;:::-;20899:105;;;;:::i;:::-;20870:134;;20827:189;20624:399;;;;;:::o;23205:878::-;23262:4;23279:28;23310:4;:14;;;23325:11;;;;;;;;;;;23310:27;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;23279:58;;23375:13;;23352:20;:36;23348:663;;;23405:12;23420:35;23440:14;;23420:15;:19;;:35;;;;:::i;:::-;23405:50;;23470:20;23493:206;23694:4;23493:161;23648:5;23493:98;23586:4;23493:60;23536:16;;23493:20;:42;;:60;;;;:::i;:::-;:92;;:98;;;;:::i;:::-;:154;;:161;;;;:::i;:::-;:200;;:206;;;;:::i;:::-;23470:229;;23750:1;23735:12;:16;23731:112;;;23772:55;23788:11;;;;;;;;;;;23801;;;;;;;;;;;23814:12;23772:15;:55::i;:::-;23731:112;23924:19;23961:11;;;;;;;;;;;23924:49;;23988:4;:9;;;:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23348:663;;;;24038:15;24021:14;:32;;;;24071:4;24064:11;;;23205:878;:::o;7307:610::-;7465:1;7447:20;;:6;:20;;;;7439:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;7549:1;7528:23;;:9;:23;;;;7520:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;7604:47;7625:6;7633:9;7644:6;7604:20;:47::i;:::-;7684:108;7720:6;7684:108;;;;;;;;;;;;;;;;;:9;:17;7694:6;7684:17;;;;;;;;;;;;;;;;:21;;:108;;;;;:::i;:::-;7664:9;:17;7674:6;7664:17;;;;;;;;;;;;;;;:128;;;;7826:32;7851:6;7826:9;:20;7836:9;7826:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;7803:9;:20;7813:9;7803:20;;;;;;;;;;;;;;;:55;;;;7891:9;7874:35;;7883:6;7874:35;;;7902:6;7874:35;;;;;;:::i;:::-;;;;;;;;7307:610;;;:::o;3090:136::-;3148:7;3175:43;3179:1;3182;3175:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;3168:50;;3090:136;;;;:::o;3866:225::-;3986:7;4018:1;4014;:5;4021:12;4006:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;4045:9;4061:1;4057;:5;;;;:::i;:::-;4045:17;;4082:1;4075:8;;;3866:225;;;;;:::o;9162:125::-;;;;:::o;21031:1379::-;21176:17;21195:22;21230:23;21271:11;;;;;;;;;;;21256:39;;;:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;21230:67;;21308:13;21342:15;;;;;;;;;;;:23;;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;21324:50;;;:52;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;21308:68;;21387:10;21417:1;21400:19;;:5;:19;;;;21387:32;;21430:14;21462:11;;;;;;;;;;;21447:33;;;:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;21430:52;;21497:5;21493:590;;;21533:1;21523:6;:11;21519:553;;21555:13;21571:18;21586:2;21581;:7;;;;:::i;:::-;21571:9;:18::i;:::-;21555:34;;21608:17;21628;21638:6;21628:9;:17::i;:::-;21608:37;;21676:9;21668:5;:17;21664:393;;;21710:17;21820:1;21782:9;21774:5;:17;;;;:::i;:::-;21730:15;:62;;;;:::i;:::-;:91;;;;:::i;:::-;21710:111;;21844:19;21892:1;21880:9;:13;;;;:::i;:::-;21874:2;21866:5;:10;;;;:::i;:::-;:28;;;;:::i;:::-;21844:50;;21946:11;21934:9;:23;;;;:::i;:::-;21917:40;;22001:1;21984:14;:18;21980:57;;;22023:14;22004:33;;;;;:::i;:::-;;;21980:57;21664:393;;;21519:553;;;21493:590;22093:15;22122:2;22111:8;:13;;;;:::i;:::-;22093:31;;22158:1;22139:15;:20;22135:268;;;22218:4;22188:27;22208:6;22198:7;:16;;;;:::i;:::-;22188:9;:27::i;:::-;:34;;;;:::i;:::-;22176:46;;22135:268;;;22267:124;22324:2;22305:15;22295:7;:25;;;;:::i;:::-;22294:32;;;;:::i;:::-;22374:2;22355:15;22346:6;:24;;;;:::i;:::-;22345:31;;;;:::i;:::-;22267:8;:124::i;:::-;22255:136;;22135:268;21031:1379;;;;;;;;;;;;:::o;2567:303::-;2612:6;2639:1;2635;:5;2631:232;;;2661:1;2657:5;;2677:6;2694:1;2690;2686;:5;;;;:::i;:::-;:9;;;;:::i;:::-;2677:18;;2710:92;2721:1;2717;:5;2710:92;;;2747:1;2743:5;;2785:1;2780;2776;2772;:5;;;;:::i;:::-;:9;;;;:::i;:::-;2771:15;;;;:::i;:::-;2767:19;;2710:92;;;2631:232;;;;2828:1;2823;:6;2819:44;;2850:1;2846:5;;2819:44;2631:232;2567:303;;;:::o;2463:96::-;2515:6;2542:1;2538;:5;:13;;2550:1;2538:13;;;2546:1;2538:13;2534:17;;2463:96;;;;:::o;7:139:1:-;;91:6;78:20;69:29;;107:33;134:5;107:33;:::i;:::-;59:87;;;;:::o;152:143::-;;240:6;234:13;225:22;;256:33;283:5;256:33;:::i;:::-;215:80;;;;:::o;318:367::-;;;451:3;444:4;436:6;432:17;428:27;418:2;;469:1;466;459:12;418:2;505:6;492:20;482:30;;535:18;527:6;524:30;521:2;;;567:1;564;557:12;521:2;604:4;596:6;592:17;580:29;;658:3;650:4;642:6;638:17;628:8;624:32;621:41;618:2;;;675:1;672;665:12;618:2;408:277;;;;;:::o;691:133::-;;772:6;759:20;750:29;;788:30;812:5;788:30;:::i;:::-;740:84;;;;:::o;830:137::-;;915:6;909:13;900:22;;931:30;955:5;931:30;:::i;:::-;890:77;;;;:::o;973:143::-;;1061:6;1055:13;1046:22;;1077:33;1104:5;1077:33;:::i;:::-;1036:80;;;;:::o;1122:139::-;;1206:6;1193:20;1184:29;;1222:33;1249:5;1222:33;:::i;:::-;1174:87;;;;:::o;1267:143::-;;1355:6;1349:13;1340:22;;1371:33;1398:5;1371:33;:::i;:::-;1330:80;;;;:::o;1416:141::-;;1503:6;1497:13;1488:22;;1519:32;1545:5;1519:32;:::i;:::-;1478:79;;;;:::o;1563:262::-;;1671:2;1659:9;1650:7;1646:23;1642:32;1639:2;;;1687:1;1684;1677:12;1639:2;1730:1;1755:53;1800:7;1791:6;1780:9;1776:22;1755:53;:::i;:::-;1745:63;;1701:117;1629:196;;;;:::o;1831:284::-;;1950:2;1938:9;1929:7;1925:23;1921:32;1918:2;;;1966:1;1963;1956:12;1918:2;2009:1;2034:64;2090:7;2081:6;2070:9;2066:22;2034:64;:::i;:::-;2024:74;;1980:128;1908:207;;;;:::o;2121:407::-;;;2246:2;2234:9;2225:7;2221:23;2217:32;2214:2;;;2262:1;2259;2252:12;2214:2;2305:1;2330:53;2375:7;2366:6;2355:9;2351:22;2330:53;:::i;:::-;2320:63;;2276:117;2432:2;2458:53;2503:7;2494:6;2483:9;2479:22;2458:53;:::i;:::-;2448:63;;2403:118;2204:324;;;;;:::o;2534:552::-;;;;2676:2;2664:9;2655:7;2651:23;2647:32;2644:2;;;2692:1;2689;2682:12;2644:2;2735:1;2760:53;2805:7;2796:6;2785:9;2781:22;2760:53;:::i;:::-;2750:63;;2706:117;2862:2;2888:53;2933:7;2924:6;2913:9;2909:22;2888:53;:::i;:::-;2878:63;;2833:118;2990:2;3016:53;3061:7;3052:6;3041:9;3037:22;3016:53;:::i;:::-;3006:63;;2961:118;2634:452;;;;;:::o;3092:401::-;;;3214:2;3202:9;3193:7;3189:23;3185:32;3182:2;;;3230:1;3227;3220:12;3182:2;3273:1;3298:53;3343:7;3334:6;3323:9;3319:22;3298:53;:::i;:::-;3288:63;;3244:117;3400:2;3426:50;3468:7;3459:6;3448:9;3444:22;3426:50;:::i;:::-;3416:60;;3371:115;3172:321;;;;;:::o;3499:407::-;;;3624:2;3612:9;3603:7;3599:23;3595:32;3592:2;;;3640:1;3637;3630:12;3592:2;3683:1;3708:53;3753:7;3744:6;3733:9;3729:22;3708:53;:::i;:::-;3698:63;;3654:117;3810:2;3836:53;3881:7;3872:6;3861:9;3857:22;3836:53;:::i;:::-;3826:63;;3781:118;3582:324;;;;;:::o;3912:564::-;;;;4069:2;4057:9;4048:7;4044:23;4040:32;4037:2;;;4085:1;4082;4075:12;4037:2;4156:1;4145:9;4141:17;4128:31;4186:18;4178:6;4175:30;4172:2;;;4218:1;4215;4208:12;4172:2;4254:80;4326:7;4317:6;4306:9;4302:22;4254:80;:::i;:::-;4236:98;;;;4099:245;4383:2;4409:50;4451:7;4442:6;4431:9;4427:22;4409:50;:::i;:::-;4399:60;;4354:115;4027:449;;;;;:::o;4482:256::-;;4587:2;4575:9;4566:7;4562:23;4558:32;4555:2;;;4603:1;4600;4593:12;4555:2;4646:1;4671:50;4713:7;4704:6;4693:9;4689:22;4671:50;:::i;:::-;4661:60;;4617:114;4545:193;;;;:::o;4744:278::-;;4860:2;4848:9;4839:7;4835:23;4831:32;4828:2;;;4876:1;4873;4866:12;4828:2;4919:1;4944:61;4997:7;4988:6;4977:9;4973:22;4944:61;:::i;:::-;4934:71;;4890:125;4818:204;;;;:::o;5028:401::-;;;5150:2;5138:9;5129:7;5125:23;5121:32;5118:2;;;5166:1;5163;5156:12;5118:2;5209:1;5234:50;5276:7;5267:6;5256:9;5252:22;5234:50;:::i;:::-;5224:60;;5180:114;5333:2;5359:53;5404:7;5395:6;5384:9;5380:22;5359:53;:::i;:::-;5349:63;;5304:118;5108:321;;;;;:::o;5435:594::-;;;;5587:2;5575:9;5566:7;5562:23;5558:32;5555:2;;;5603:1;5600;5593:12;5555:2;5646:1;5671:64;5727:7;5718:6;5707:9;5703:22;5671:64;:::i;:::-;5661:74;;5617:128;5784:2;5810:64;5866:7;5857:6;5846:9;5842:22;5810:64;:::i;:::-;5800:74;;5755:129;5923:2;5949:63;6004:7;5995:6;5984:9;5980:22;5949:63;:::i;:::-;5939:73;;5894:128;5545:484;;;;;:::o;6035:262::-;;6143:2;6131:9;6122:7;6118:23;6114:32;6111:2;;;6159:1;6156;6149:12;6111:2;6202:1;6227:53;6272:7;6263:6;6252:9;6248:22;6227:53;:::i;:::-;6217:63;;6173:117;6101:196;;;;:::o;6303:284::-;;6422:2;6410:9;6401:7;6397:23;6393:32;6390:2;;;6438:1;6435;6428:12;6390:2;6481:1;6506:64;6562:7;6553:6;6542:9;6538:22;6506:64;:::i;:::-;6496:74;;6452:128;6380:207;;;;:::o;6593:118::-;6680:24;6698:5;6680:24;:::i;:::-;6675:3;6668:37;6658:53;;:::o;6717:109::-;6798:21;6813:5;6798:21;:::i;:::-;6793:3;6786:34;6776:50;;:::o;6832:185::-;6946:64;7004:5;6946:64;:::i;:::-;6941:3;6934:77;6924:93;;:::o;7023:364::-;;7139:39;7172:5;7139:39;:::i;:::-;7194:71;7258:6;7253:3;7194:71;:::i;:::-;7187:78;;7274:52;7319:6;7314:3;7307:4;7300:5;7296:16;7274:52;:::i;:::-;7351:29;7373:6;7351:29;:::i;:::-;7346:3;7342:39;7335:46;;7115:272;;;;;:::o;7393:367::-;;7556:67;7620:2;7615:3;7556:67;:::i;:::-;7549:74;;7653:34;7649:1;7644:3;7640:11;7633:55;7719:5;7714:2;7709:3;7705:12;7698:27;7751:2;7746:3;7742:12;7735:19;;7539:221;;;:::o;7766:370::-;;7929:67;7993:2;7988:3;7929:67;:::i;:::-;7922:74;;8026:34;8022:1;8017:3;8013:11;8006:55;8092:8;8087:2;8082:3;8078:12;8071:30;8127:2;8122:3;8118:12;8111:19;;7912:224;;;:::o;8142:366::-;;8305:67;8369:2;8364:3;8305:67;:::i;:::-;8298:74;;8402:34;8398:1;8393:3;8389:11;8382:55;8468:4;8463:2;8458:3;8454:12;8447:26;8499:2;8494:3;8490:12;8483:19;;8288:220;;;:::o;8514:308::-;;8677:67;8741:2;8736:3;8677:67;:::i;:::-;8670:74;;8774:12;8770:1;8765:3;8761:11;8754:33;8813:2;8808:3;8804:12;8797:19;;8660:162;;;:::o;8828:325::-;;8991:67;9055:2;9050:3;8991:67;:::i;:::-;8984:74;;9088:29;9084:1;9079:3;9075:11;9068:50;9144:2;9139:3;9135:12;9128:19;;8974:179;;;:::o;9159:325::-;;9322:67;9386:2;9381:3;9322:67;:::i;:::-;9315:74;;9419:29;9415:1;9410:3;9406:11;9399:50;9475:2;9470:3;9466:12;9459:19;;9305:179;;;:::o;9490:320::-;;9653:67;9717:2;9712:3;9653:67;:::i;:::-;9646:74;;9750:24;9746:1;9741:3;9737:11;9730:45;9801:2;9796:3;9792:12;9785:19;;9636:174;;;:::o;9816:382::-;;9979:67;10043:2;10038:3;9979:67;:::i;:::-;9972:74;;10076:34;10072:1;10067:3;10063:11;10056:55;10142:20;10137:2;10132:3;10128:12;10121:42;10189:2;10184:3;10180:12;10173:19;;9962:236;;;:::o;10204:327::-;;10367:67;10431:2;10426:3;10367:67;:::i;:::-;10360:74;;10464:31;10460:1;10455:3;10451:11;10444:52;10522:2;10517:3;10513:12;10506:19;;10350:181;;;:::o;10537:369::-;;10700:67;10764:2;10759:3;10700:67;:::i;:::-;10693:74;;10797:34;10793:1;10788:3;10784:11;10777:55;10863:7;10858:2;10853:3;10849:12;10842:29;10897:2;10892:3;10888:12;10881:19;;10683:223;;;:::o;10912:326::-;;11075:67;11139:2;11134:3;11075:67;:::i;:::-;11068:74;;11172:30;11168:1;11163:3;11159:11;11152:51;11229:2;11224:3;11220:12;11213:19;;11058:180;;;:::o;11244:365::-;;11407:67;11471:2;11466:3;11407:67;:::i;:::-;11400:74;;11504:34;11500:1;11495:3;11491:11;11484:55;11570:3;11565:2;11560:3;11556:12;11549:25;11600:2;11595:3;11591:12;11584:19;;11390:219;;;:::o;11615:330::-;;11778:67;11842:2;11837:3;11778:67;:::i;:::-;11771:74;;11875:34;11871:1;11866:3;11862:11;11855:55;11936:2;11931:3;11927:12;11920:19;;11761:184;;;:::o;11951:369::-;;12114:67;12178:2;12173:3;12114:67;:::i;:::-;12107:74;;12211:34;12207:1;12202:3;12198:11;12191:55;12277:7;12272:2;12267:3;12263:12;12256:29;12311:2;12306:3;12302:12;12295:19;;12097:223;;;:::o;12326:316::-;;12489:67;12553:2;12548:3;12489:67;:::i;:::-;12482:74;;12586:20;12582:1;12577:3;12573:11;12566:41;12633:2;12628:3;12624:12;12617:19;;12472:170;;;:::o;12648:368::-;;12811:67;12875:2;12870:3;12811:67;:::i;:::-;12804:74;;12908:34;12904:1;12899:3;12895:11;12888:55;12974:6;12969:2;12964:3;12960:12;12953:28;13007:2;13002:3;12998:12;12991:19;;12794:222;;;:::o;13022:329::-;;13185:67;13249:2;13244:3;13185:67;:::i;:::-;13178:74;;13282:33;13278:1;13273:3;13269:11;13262:54;13342:2;13337:3;13333:12;13326:19;;13168:183;;;:::o;13357:325::-;;13520:67;13584:2;13579:3;13520:67;:::i;:::-;13513:74;;13617:29;13613:1;13608:3;13604:11;13597:50;13673:2;13668:3;13664:12;13657:19;;13503:179;;;:::o;13688:329::-;;13851:67;13915:2;13910:3;13851:67;:::i;:::-;13844:74;;13948:33;13944:1;13939:3;13935:11;13928:54;14008:2;14003:3;13999:12;13992:19;;13834:183;;;:::o;14023:118::-;14110:24;14128:5;14110:24;:::i;:::-;14105:3;14098:37;14088:53;;:::o;14147:222::-;;14278:2;14267:9;14263:18;14255:26;;14291:71;14359:1;14348:9;14344:17;14335:6;14291:71;:::i;:::-;14245:124;;;;:::o;14375:332::-;;14534:2;14523:9;14519:18;14511:26;;14547:71;14615:1;14604:9;14600:17;14591:6;14547:71;:::i;:::-;14628:72;14696:2;14685:9;14681:18;14672:6;14628:72;:::i;:::-;14501:206;;;;;:::o;14713:332::-;;14872:2;14861:9;14857:18;14849:26;;14885:71;14953:1;14942:9;14938:17;14929:6;14885:71;:::i;:::-;14966:72;15034:2;15023:9;15019:18;15010:6;14966:72;:::i;:::-;14839:206;;;;;:::o;15051:210::-;;15176:2;15165:9;15161:18;15153:26;;15189:65;15251:1;15240:9;15236:17;15227:6;15189:65;:::i;:::-;15143:118;;;;:::o;15267:276::-;;15425:2;15414:9;15410:18;15402:26;;15438:98;15533:1;15522:9;15518:17;15509:6;15438:98;:::i;:::-;15392:151;;;;:::o;15549:313::-;;15700:2;15689:9;15685:18;15677:26;;15749:9;15743:4;15739:20;15735:1;15724:9;15720:17;15713:47;15777:78;15850:4;15841:6;15777:78;:::i;:::-;15769:86;;15667:195;;;;:::o;15868:419::-;;16072:2;16061:9;16057:18;16049:26;;16121:9;16115:4;16111:20;16107:1;16096:9;16092:17;16085:47;16149:131;16275:4;16149:131;:::i;:::-;16141:139;;16039:248;;;:::o;16293:419::-;;16497:2;16486:9;16482:18;16474:26;;16546:9;16540:4;16536:20;16532:1;16521:9;16517:17;16510:47;16574:131;16700:4;16574:131;:::i;:::-;16566:139;;16464:248;;;:::o;16718:419::-;;16922:2;16911:9;16907:18;16899:26;;16971:9;16965:4;16961:20;16957:1;16946:9;16942:17;16935:47;16999:131;17125:4;16999:131;:::i;:::-;16991:139;;16889:248;;;:::o;17143:419::-;;17347:2;17336:9;17332:18;17324:26;;17396:9;17390:4;17386:20;17382:1;17371:9;17367:17;17360:47;17424:131;17550:4;17424:131;:::i;:::-;17416:139;;17314:248;;;:::o;17568:419::-;;17772:2;17761:9;17757:18;17749:26;;17821:9;17815:4;17811:20;17807:1;17796:9;17792:17;17785:47;17849:131;17975:4;17849:131;:::i;:::-;17841:139;;17739:248;;;:::o;17993:419::-;;18197:2;18186:9;18182:18;18174:26;;18246:9;18240:4;18236:20;18232:1;18221:9;18217:17;18210:47;18274:131;18400:4;18274:131;:::i;:::-;18266:139;;18164:248;;;:::o;18418:419::-;;18622:2;18611:9;18607:18;18599:26;;18671:9;18665:4;18661:20;18657:1;18646:9;18642:17;18635:47;18699:131;18825:4;18699:131;:::i;:::-;18691:139;;18589:248;;;:::o;18843:419::-;;19047:2;19036:9;19032:18;19024:26;;19096:9;19090:4;19086:20;19082:1;19071:9;19067:17;19060:47;19124:131;19250:4;19124:131;:::i;:::-;19116:139;;19014:248;;;:::o;19268:419::-;;19472:2;19461:9;19457:18;19449:26;;19521:9;19515:4;19511:20;19507:1;19496:9;19492:17;19485:47;19549:131;19675:4;19549:131;:::i;:::-;19541:139;;19439:248;;;:::o;19693:419::-;;19897:2;19886:9;19882:18;19874:26;;19946:9;19940:4;19936:20;19932:1;19921:9;19917:17;19910:47;19974:131;20100:4;19974:131;:::i;:::-;19966:139;;19864:248;;;:::o;20118:419::-;;20322:2;20311:9;20307:18;20299:26;;20371:9;20365:4;20361:20;20357:1;20346:9;20342:17;20335:47;20399:131;20525:4;20399:131;:::i;:::-;20391:139;;20289:248;;;:::o;20543:419::-;;20747:2;20736:9;20732:18;20724:26;;20796:9;20790:4;20786:20;20782:1;20771:9;20767:17;20760:47;20824:131;20950:4;20824:131;:::i;:::-;20816:139;;20714:248;;;:::o;20968:419::-;;21172:2;21161:9;21157:18;21149:26;;21221:9;21215:4;21211:20;21207:1;21196:9;21192:17;21185:47;21249:131;21375:4;21249:131;:::i;:::-;21241:139;;21139:248;;;:::o;21393:419::-;;21597:2;21586:9;21582:18;21574:26;;21646:9;21640:4;21636:20;21632:1;21621:9;21617:17;21610:47;21674:131;21800:4;21674:131;:::i;:::-;21666:139;;21564:248;;;:::o;21818:419::-;;22022:2;22011:9;22007:18;21999:26;;22071:9;22065:4;22061:20;22057:1;22046:9;22042:17;22035:47;22099:131;22225:4;22099:131;:::i;:::-;22091:139;;21989:248;;;:::o;22243:419::-;;22447:2;22436:9;22432:18;22424:26;;22496:9;22490:4;22486:20;22482:1;22471:9;22467:17;22460:47;22524:131;22650:4;22524:131;:::i;:::-;22516:139;;22414:248;;;:::o;22668:419::-;;22872:2;22861:9;22857:18;22849:26;;22921:9;22915:4;22911:20;22907:1;22896:9;22892:17;22885:47;22949:131;23075:4;22949:131;:::i;:::-;22941:139;;22839:248;;;:::o;23093:419::-;;23297:2;23286:9;23282:18;23274:26;;23346:9;23340:4;23336:20;23332:1;23321:9;23317:17;23310:47;23374:131;23500:4;23374:131;:::i;:::-;23366:139;;23264:248;;;:::o;23518:419::-;;23722:2;23711:9;23707:18;23699:26;;23771:9;23765:4;23761:20;23757:1;23746:9;23742:17;23735:47;23799:131;23925:4;23799:131;:::i;:::-;23791:139;;23689:248;;;:::o;23943:222::-;;24074:2;24063:9;24059:18;24051:26;;24087:71;24155:1;24144:9;24140:17;24131:6;24087:71;:::i;:::-;24041:124;;;;:::o;24171:442::-;;24358:2;24347:9;24343:18;24335:26;;24371:71;24439:1;24428:9;24424:17;24415:6;24371:71;:::i;:::-;24452:72;24520:2;24509:9;24505:18;24496:6;24452:72;:::i;:::-;24534;24602:2;24591:9;24587:18;24578:6;24534:72;:::i;:::-;24325:288;;;;;;:::o;24619:99::-;;24705:5;24699:12;24689:22;;24678:40;;;:::o;24724:169::-;;24842:6;24837:3;24830:19;24882:4;24877:3;24873:14;24858:29;;24820:73;;;;:::o;24899:305::-;;24958:20;24976:1;24958:20;:::i;:::-;24953:25;;24992:20;25010:1;24992:20;:::i;:::-;24987:25;;25146:1;25078:66;25074:74;25071:1;25068:81;25065:2;;;25152:18;;:::i;:::-;25065:2;25196:1;25193;25189:9;25182:16;;24943:261;;;;:::o;25210:185::-;;25267:20;25285:1;25267:20;:::i;:::-;25262:25;;25301:20;25319:1;25301:20;:::i;:::-;25296:25;;25340:1;25330:2;;25345:18;;:::i;:::-;25330:2;25387:1;25384;25380:9;25375:14;;25252:143;;;;:::o;25401:348::-;;25464:20;25482:1;25464:20;:::i;:::-;25459:25;;25498:20;25516:1;25498:20;:::i;:::-;25493:25;;25686:1;25618:66;25614:74;25611:1;25608:81;25603:1;25596:9;25589:17;25585:105;25582:2;;;25693:18;;:::i;:::-;25582:2;25741:1;25738;25734:9;25723:20;;25449:300;;;;:::o;25755:191::-;;25815:20;25833:1;25815:20;:::i;:::-;25810:25;;25849:20;25867:1;25849:20;:::i;:::-;25844:25;;25888:1;25885;25882:8;25879:2;;;25893:18;;:::i;:::-;25879:2;25938:1;25935;25931:9;25923:17;;25800:146;;;;:::o;25952:96::-;;26018:24;26036:5;26018:24;:::i;:::-;26007:35;;25997:51;;;:::o;26054:90::-;;26131:5;26124:13;26117:21;26106:32;;26096:48;;;:::o;26150:114::-;;26227:30;26220:5;26216:42;26205:53;;26195:69;;;:::o;26270:126::-;;26347:42;26340:5;26336:54;26325:65;;26315:81;;;:::o;26402:77::-;;26468:5;26457:16;;26447:32;;;:::o;26485:93::-;;26561:10;26554:5;26550:22;26539:33;;26529:49;;;:::o;26584:180::-;;26694:64;26752:5;26694:64;:::i;:::-;26681:77;;26671:93;;;:::o;26770:140::-;;26880:24;26898:5;26880:24;:::i;:::-;26867:37;;26857:53;;;:::o;26916:307::-;26984:1;26994:113;27008:6;27005:1;27002:13;26994:113;;;27093:1;27088:3;27084:11;27078:18;27074:1;27069:3;27065:11;27058:39;27030:2;27027:1;27023:10;27018:15;;26994:113;;;27125:6;27122:1;27119:13;27116:2;;;27205:1;27196:6;27191:3;27187:16;27180:27;27116:2;26965:258;;;;:::o;27229:320::-;;27310:1;27304:4;27300:12;27290:22;;27357:1;27351:4;27347:12;27378:18;27368:2;;27434:4;27426:6;27422:17;27412:27;;27368:2;27496;27488:6;27485:14;27465:18;27462:38;27459:2;;;27515:18;;:::i;:::-;27459:2;27280:269;;;;:::o;27555:233::-;;27617:24;27635:5;27617:24;:::i;:::-;27608:33;;27663:66;27656:5;27653:77;27650:2;;;27733:18;;:::i;:::-;27650:2;27780:1;27773:5;27769:13;27762:20;;27598:190;;;:::o;27794:180::-;27842:77;27839:1;27832:88;27939:4;27936:1;27929:15;27963:4;27960:1;27953:15;27980:180;28028:77;28025:1;28018:88;28125:4;28122:1;28115:15;28149:4;28146:1;28139:15;28166:180;28214:77;28211:1;28204:88;28311:4;28308:1;28301:15;28335:4;28332:1;28325:15;28352:102;;28444:2;28440:7;28435:2;28428:5;28424:14;28420:28;28410:38;;28400:54;;;:::o;28460:122::-;28533:24;28551:5;28533:24;:::i;:::-;28526:5;28523:35;28513:2;;28572:1;28569;28562:12;28513:2;28503:79;:::o;28588:116::-;28658:21;28673:5;28658:21;:::i;:::-;28651:5;28648:32;28638:2;;28694:1;28691;28684:12;28638:2;28628:76;:::o;28710:122::-;28783:24;28801:5;28783:24;:::i;:::-;28776:5;28773:35;28763:2;;28822:1;28819;28812:12;28763:2;28753:79;:::o;28838:122::-;28911:24;28929:5;28911:24;:::i;:::-;28904:5;28901:35;28891:2;;28950:1;28947;28940:12;28891:2;28881:79;:::o;28966:120::-;29038:23;29055:5;29038:23;:::i;:::-;29031:5;29028:34;29018:2;;29076:1;29073;29066:12;29018:2;29008:78;:::o

Swarm Source

ipfs://8f7b3e3279db76de45ed139407557301fc6fb8152050337f78931e224ad2fb41

Block Transaction Gas Used Reward
view all blocks produced
Age Block Fee Address BC Fee Address Voting Power Jailed Incoming
View All Validatorset

Block Uncle Number Difficulty Gas Used Reward
View All Uncles
Loading...
Loading
Loading...
Loading

Validator Index Block Amount
View All Withdrawals

Transaction Hash Block Value Eth2 PubKey Valid
View All Deposits
Loading...
Loading
[ Download: CSV Export  ]

A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.