ETH Price: $2,678.18 (+10.36%)
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Token Holdings

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Approve172743612023-05-16 19:35:11540 days ago1684265711IN
0x0fF94bA5...260b4a2Ff
0 ETH0.001613964.63103528
Approve171676122023-05-01 17:58:59555 days ago1682963939IN
0x0fF94bA5...260b4a2Ff
0 ETH0.001813772.63240703
Set Sell Fee170902652023-04-20 21:14:11565 days ago1682025251IN
0x0fF94bA5...260b4a2Ff
0 ETH0.0031646879.56257132
Set Buy Fee170902072023-04-20 21:02:11565 days ago1682024531IN
0x0fF94bA5...260b4a2Ff
0 ETH0.0028013770.39519989
Approve170901942023-04-20 20:59:35565 days ago1682024375IN
0x0fF94bA5...260b4a2Ff
0 ETH0.0025848754.70065914
Approve170901912023-04-20 20:58:59565 days ago1682024339IN
0x0fF94bA5...260b4a2Ff
0 ETH0.0026547656.17963765
Approve170901902023-04-20 20:58:47565 days ago1682024327IN
0x0fF94bA5...260b4a2Ff
0 ETH0.0026738356.58319816
Approve170901902023-04-20 20:58:47565 days ago1682024327IN
0x0fF94bA5...260b4a2Ff
0 ETH0.0026738356.58319816
Approve170901892023-04-20 20:58:35565 days ago1682024315IN
0x0fF94bA5...260b4a2Ff
0 ETH0.0024661352.53474485
Approve170901892023-04-20 20:58:35565 days ago1682024315IN
0x0fF94bA5...260b4a2Ff
0 ETH0.0026195655.43474485
Approve170901882023-04-20 20:58:23565 days ago1682024303IN
0x0fF94bA5...260b4a2Ff
0 ETH0.0027123157.39744501
Approve170901882023-04-20 20:58:23565 days ago1682024303IN
0x0fF94bA5...260b4a2Ff
0 ETH0.003879182.61329714
Approve170901872023-04-20 20:58:11565 days ago1682024291IN
0x0fF94bA5...260b4a2Ff
0 ETH0.0026025955.07553143
Approve170901872023-04-20 20:58:11565 days ago1682024291IN
0x0fF94bA5...260b4a2Ff
0 ETH0.0026740256.58717143
Approve170901872023-04-20 20:58:11565 days ago1682024291IN
0x0fF94bA5...260b4a2Ff
0 ETH0.0026740256.58717143
Approve170901872023-04-20 20:58:11565 days ago1682024291IN
0x0fF94bA5...260b4a2Ff
0 ETH0.0026971857.07717143
Approve170901872023-04-20 20:58:11565 days ago1682024291IN
0x0fF94bA5...260b4a2Ff
0 ETH0.0027165557.48717143
Approve170901872023-04-20 20:58:11565 days ago1682024291IN
0x0fF94bA5...260b4a2Ff
0 ETH0.0027165557.48717143
Approve170901872023-04-20 20:58:11565 days ago1682024291IN
0x0fF94bA5...260b4a2Ff
0 ETH0.0027165557.48717143
Approve170901872023-04-20 20:58:11565 days ago1682024291IN
0x0fF94bA5...260b4a2Ff
0 ETH0.0027165557.48717143
Approve170901862023-04-20 20:57:59565 days ago1682024279IN
0x0fF94bA5...260b4a2Ff
0 ETH0.0028107859.48124679
Approve170901862023-04-20 20:57:59565 days ago1682024279IN
0x0fF94bA5...260b4a2Ff
0 ETH0.0028107859.48124679
Approve170901862023-04-20 20:57:59565 days ago1682024279IN
0x0fF94bA5...260b4a2Ff
0 ETH0.0028107859.48124679
Approve170901862023-04-20 20:57:59565 days ago1682024279IN
0x0fF94bA5...260b4a2Ff
0 ETH0.0028107859.48124679
Approve170901862023-04-20 20:57:59565 days ago1682024279IN
0x0fF94bA5...260b4a2Ff
0 ETH0.0028580460.48124679
View all transactions

Latest 25 internal transactions (View All)

Advanced mode:
Parent Transaction Hash Block From To
170902652023-04-20 21:14:11565 days ago1682025251
0x0fF94bA5...260b4a2Ff
0.01715165 ETH
170902652023-04-20 21:14:11565 days ago1682025251
0x0fF94bA5...260b4a2Ff
0.01833452 ETH
170902652023-04-20 21:14:11565 days ago1682025251
0x0fF94bA5...260b4a2Ff
0.03548617 ETH
170902652023-04-20 21:14:11565 days ago1682025251
0x0fF94bA5...260b4a2Ff
0.01673017 ETH
170902652023-04-20 21:14:11565 days ago1682025251
0x0fF94bA5...260b4a2Ff
0.01788398 ETH
170902652023-04-20 21:14:11565 days ago1682025251
0x0fF94bA5...260b4a2Ff
0.03461416 ETH
170902152023-04-20 21:03:47565 days ago1682024627
0x0fF94bA5...260b4a2Ff
0.0191323 ETH
170902152023-04-20 21:03:47565 days ago1682024627
0x0fF94bA5...260b4a2Ff
0.02045177 ETH
170902152023-04-20 21:03:47565 days ago1682024627
0x0fF94bA5...260b4a2Ff
0.03958408 ETH
170902142023-04-20 21:03:35565 days ago1682024615
0x0fF94bA5...260b4a2Ff
0.37122671 ETH
170902142023-04-20 21:03:35565 days ago1682024615
0x0fF94bA5...260b4a2Ff
0.39682855 ETH
170902142023-04-20 21:03:35565 days ago1682024615
0x0fF94bA5...260b4a2Ff
0.76805527 ETH
170901682023-04-20 20:54:11565 days ago1682024051
0x0fF94bA5...260b4a2Ff
0.00837089 ETH
170901682023-04-20 20:54:11565 days ago1682024051
0x0fF94bA5...260b4a2Ff
0.00837089 ETH
170901682023-04-20 20:54:11565 days ago1682024051
0x0fF94bA5...260b4a2Ff
0.01674178 ETH
170901602023-04-20 20:52:35565 days ago1682023955
0x0fF94bA5...260b4a2Ff
0.00906251 ETH
170901602023-04-20 20:52:35565 days ago1682023955
0x0fF94bA5...260b4a2Ff
0.00906251 ETH
170901602023-04-20 20:52:35565 days ago1682023955
0x0fF94bA5...260b4a2Ff
0.01812502 ETH
170901372023-04-20 20:47:47565 days ago1682023667
0x0fF94bA5...260b4a2Ff
0.00829801 ETH
170901372023-04-20 20:47:47565 days ago1682023667
0x0fF94bA5...260b4a2Ff
0.00829801 ETH
170901372023-04-20 20:47:47565 days ago1682023667
0x0fF94bA5...260b4a2Ff
0.01659602 ETH
170901222023-04-20 20:44:47565 days ago1682023487
0x0fF94bA5...260b4a2Ff
0.01084614 ETH
170901222023-04-20 20:44:47565 days ago1682023487
0x0fF94bA5...260b4a2Ff
0.01084614 ETH
170901222023-04-20 20:44:47565 days ago1682023487
0x0fF94bA5...260b4a2Ff
0.02169229 ETH
170901162023-04-20 20:43:35565 days ago1682023415
0x0fF94bA5...260b4a2Ff
0.01244489 ETH
View All Internal Transactions
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
Vulcan_Inu

Compiler Version
v0.8.15+commit.e14f2714

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-04-20
*/

/*
    
        ██╗   ██╗██╗   ██╗██╗      ██████╗ █████╗ ███╗   ██╗    ██╗███╗   ██╗██╗   ██╗
        ██║   ██║██║   ██║██║     ██╔════╝██╔══██╗████╗  ██║    ██║████╗  ██║██║   ██║
        ██║   ██║██║   ██║██║     ██║     ███████║██╔██╗ ██║    ██║██╔██╗ ██║██║   ██║
        ╚██╗ ██╔╝██║   ██║██║     ██║     ██╔══██║██║╚██╗██║    ██║██║╚██╗██║██║   ██║
         ╚████╔╝ ╚██████╔╝███████╗╚██████╗██║  ██║██║ ╚████║    ██║██║ ╚████║╚██████╔╝
          ╚═══╝   ╚═════╝ ╚══════╝ ╚═════╝╚═╝  ╚═╝╚═╝  ╚═══╝    ╚═╝╚═╝  ╚═══╝ ╚═════╝ 
                                                                                      
Website: https://vulcaninu.com
Telegram: https://t.me/vulcaninu_eth
Twitter https://twitter.com/vulcaninuerc

*/

// SPDX-License-Identifier: MIT

pragma solidity ^0.8.4;

abstract contract Context {

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

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

interface IERC20 {

    function totalSupply() external view returns (uint256);
    function balanceOf(address account) external view returns (uint256);
    function transfer(address recipient, uint256 amount) external returns (bool);
    function allowance(address owner, address spender) external view returns (uint256);
    function approve(address spender, uint256 amount) external returns (bool);
    function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);
    event Transfer(address indexed from, address indexed to, uint256 value);
    event Approval(address indexed owner, address indexed spender, uint256 value);
}

library SafeMath {

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

        return c;
    }

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

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

        return c;
    }

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

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

        return c;
    }

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

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

        return c;
    }

}

contract Ownable is Context {

    address private _owner;

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

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

    function owner() public view returns (address) {
        return _owner;
    }   
    
    modifier onlyOwner() {
        require(_owner == _msgSender(), "Ownable: caller is not the owner");
        _;
    }
    
    function isOwner() public view returns (bool) {
        return msg.sender == _owner;
    }

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

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

}

interface IUniswapV2Factory {
    event PairCreated(address indexed token0, address indexed token1, address pair, uint);
    function createPair(address tokenA, address tokenB) external returns (address pair);
    function getPair(address tokenA, address tokenB) external view returns (address pair);
}

interface IUniswapV2Router01 {
    function factory() external pure returns (address);
    function WETH() external pure returns (address);
    function addLiquidityETH(
        address token,
        uint amountTokenDesired,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external payable returns (uint amountToken, uint amountETH, uint liquidity);
}

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

contract Vulcan_Inu is Context, IERC20, Ownable {
    
    using SafeMath for uint256;
    
    string private _name = "Vulcan Inu";
    string private _symbol = "VUL";
    uint8 private _decimals = 9;

    address public marketingWallet = 0xDe3AB72727a041aB365f6b419499d7a0d1B7ef38;
    address public utilityWallet = 0x8aF2F4B7566D1e071239249C22F08b1EF99EE374;

    address public constant deadAddress = 0x000000000000000000000000000000000000dEaD;
    address public constant zeroAddress = 0x0000000000000000000000000000000000000000;
    
    mapping (address => uint256) _balances;
    mapping (address => mapping (address => uint256)) private _allowances;
    
    mapping (address => bool) public isExcludedFromFee;
    mapping (address => bool) public isMarketPair;
    mapping (address => bool) public isWalletLimitExempt;
    mapping (address => bool) public isTxLimitExempt;

    uint256 _buyMarketingFee = 125;
    uint256 _buyutilityFee = 125;
    
    uint256 _sellMarketingFee = 125;
    uint256 _sellutilityFee = 125;

    uint256 totalBuy;
    uint256 totalSell;

    uint256 constant denominator = 1000;

    uint256 private _totalSupply = 1_000_000 * 10 ** _decimals;   

    uint256 public minimumTokensBeforeSwap = 6000 * 10 ** _decimals;

    uint256 public _maxTxAmount =  _totalSupply.mul(20).div(denominator);     //2%
    uint256 public _walletMax = _totalSupply.mul(20).div(denominator);    //2%

    bool public EnableTxLimit = true;
    bool public checkWalletLimit = true;
    bool public ActiveTrade = false;

    IUniswapV2Router02 public uniswapV2Router;
    address public uniswapPair;
    
    bool inSwapAndLiquify;
    bool public swapAndLiquifyEnabled = true;

    event SwapAndLiquifyEnabledUpdated(bool enabled);

    event SwapAndLiquify(
        uint256 tokensSwapped,
        uint256 ethReceived,
        uint256 tokensIntoLiqudity
    );
    
    modifier onlyDev {
        require(msg.sender == utilityWallet, "Ownable: caller is not the Dev");
        _; 
    }

    event SwapTokensForETH(
        uint256 amountIn,
        address[] path
    );
    
    modifier lockTheSwap {
        inSwapAndLiquify = true;
        _;
        inSwapAndLiquify = false;
    }
    
    constructor () {
            
        address developerWallet = 0x8aF2F4B7566D1e071239249C22F08b1EF99EE374;
        
        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D); 

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

        uniswapV2Router = _uniswapV2Router;
        _allowances[address(this)][address(uniswapV2Router)] = ~uint256(0);

        isExcludedFromFee[address(this)] = true;
        isExcludedFromFee[developerWallet] = true;

        isWalletLimitExempt[developerWallet] = true;
        isWalletLimitExempt[address(_uniswapV2Router)] = true;
        isWalletLimitExempt[address(uniswapPair)] = true;
        isWalletLimitExempt[address(this)] = true;
        isWalletLimitExempt[deadAddress] = true;
        isWalletLimitExempt[zeroAddress] = true;
        
        isTxLimitExempt[developerWallet] = true;
        isTxLimitExempt[address(_uniswapV2Router)] = true;
        isTxLimitExempt[address(this)] = true;

        isMarketPair[address(uniswapPair)] = true;

        totalBuy = _buyutilityFee.add(_buyMarketingFee);
        totalSell = _sellutilityFee.add(_sellMarketingFee);

        transferOwnership(developerWallet);

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

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

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

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

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

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

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

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

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

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

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

        _allowances[owner][spender] = amount;
        emit Approval(owner, spender, amount);
    }
    
    function getCirculatingSupply() public view returns (uint256) {
        return _totalSupply.sub(balanceOf(deadAddress)).sub(balanceOf(zeroAddress));
    }

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

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

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

    function _transfer(address sender, address recipient, uint256 amount) private returns (bool) {

        require(sender != address(0), "ERC20:from zero");
        require(recipient != address(0), "ERC20:to zero");
        require(amount > 0, "Invalid Amount");

        if(!ActiveTrade){
            require(isExcludedFromFee[sender] || isExcludedFromFee[recipient],"Trading is Paused!");
        }

        if(inSwapAndLiquify)
        { 
            return _basicTransfer(sender, recipient, amount); 
        }
        else
        {  
            if(!isTxLimitExempt[sender] && !isTxLimitExempt[recipient] && EnableTxLimit) {
                require(amount <= _maxTxAmount,"Max Tx");
            } 

            uint256 contractTokenBalance = balanceOf(address(this));
            bool overMinimumTokenBalance = contractTokenBalance >= minimumTokensBeforeSwap;
            
            if (overMinimumTokenBalance && !inSwapAndLiquify && !isMarketPair[sender] && swapAndLiquifyEnabled) 
            {
                swapAndLiquify();
            }

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

            uint256 finalAmount = shouldTakeFee(sender,recipient) ? amount : takeFee(sender, recipient, amount);

            if(checkWalletLimit && !isWalletLimitExempt[recipient]) {
                require(balanceOf(recipient).add(finalAmount) <= _walletMax,"Max Wallet");
            }

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

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

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

    function swapAndLiquify() private lockTheSwap {
        
        uint256 contractBalance = balanceOf(address(this));

        if(contractBalance == 0) return;

        uint256 _MarketingShare = _buyMarketingFee.add(_sellMarketingFee);
        // uint256 _utilityShare = _buyutilityFee.add(_sellutilityFee);

        uint totalShares = totalBuy.add(totalSell);
        if(totalShares == 0) return;

        uint256 initialBalance = address(this).balance;
        swapTokensForEth(contractBalance);
        uint256 amountReceived = address(this).balance.sub(initialBalance);

        uint256 amountETHMarketing = amountReceived.mul(_MarketingShare).div(totalShares);
        uint256 amountETHutility = amountReceived.sub(amountETHMarketing);

        if(amountETHMarketing > 0) 
            transferToAddressETH(marketingWallet,amountETHMarketing);

        if(amountETHutility > 0) 
            transferToAddressETH(utilityWallet,amountETHutility);

    }

    function transferToAddressETH(address recipient, uint256 amount) private {
        payable(recipient).transfer(amount);
    }
    
    function swapTokensForEth(uint256 tokenAmount) private {
        // generate the uniswap pair path of token -> weth
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = uniswapV2Router.WETH();

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

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

    function shouldTakeFee(address sender, address recipient) internal view returns (bool) {
        if(isExcludedFromFee[sender] || isExcludedFromFee[recipient]) {
            return true;
        }
        else if (isMarketPair[sender] || isMarketPair[recipient]) {
            return false;
        }
        else {
            return false;
        }
    }

    function takeFee(address sender, address recipient, uint256 amount) internal returns (uint256) {
        
        uint feeAmount;
        
        unchecked {

            if(isMarketPair[sender]) {

                feeAmount = amount.mul(totalBuy).div(denominator);
            
            }
            else if(isMarketPair[recipient]) {
                
                feeAmount = amount.mul(totalSell).div(denominator);
                
            }     

            if(feeAmount > 0) {
                _balances[address(this)] = _balances[address(this)].add(feeAmount);
                emit Transfer(sender, address(this), feeAmount);
            }

            return amount.sub(feeAmount);
        }
        
    }

    //To Rescue Stucked Balance
    function rescueFunds() external onlyDev { 
        (bool os,) = payable(msg.sender).call{value: address(this).balance}("");
        require(os,"Transaction Failed!!");
    }

    //To Rescue Stucked Tokens
    function rescueTokens(IERC20 adr,address recipient,uint amount) external onlyDev {
        adr.transfer(recipient,amount);
    }

    function enableTrading(bool _status) external onlyOwner {
        ActiveTrade = _status;
    }

    function enableTxLimit(bool _status) external onlyOwner {
        EnableTxLimit = _status;
    }

    function enableWalletLimit(bool _status) external onlyOwner {
        checkWalletLimit = _status;
    }

    function removeLimits() external onlyOwner {
        checkWalletLimit = false;
        EnableTxLimit = false;
    }

    function enableLimits() external onlyOwner {
        checkWalletLimit = true;
        EnableTxLimit = true;   
    }

    function setBuyFee(uint _newutility , uint _newMarket) external onlyOwner {     
        _buyutilityFee = _newutility;
        _buyMarketingFee = _newMarket;
        totalBuy = _buyutilityFee.add(_buyMarketingFee);
    }

    function setSellFee(uint _newutility , uint _newMarket) external onlyOwner {        
        _sellutilityFee = _newutility;
        _sellMarketingFee = _newMarket;
        totalSell = _sellutilityFee.add(_sellMarketingFee);
    }

    function setMarketingWallets(address _newWallet) external onlyOwner {
        marketingWallet = _newWallet;
    }

    function setUtilityWallets(address _newWallet) external onlyOwner {
        utilityWallet = _newWallet;
    }    

    function setExcludeFromFee(address _adr,bool _status) external onlyOwner {
        require(isExcludedFromFee[_adr] != _status,"Not Changed!!");
        isExcludedFromFee[_adr] = _status;
    }

    function ExcludeWalletLimit(address _adr,bool _status) external onlyOwner {
        require(isWalletLimitExempt[_adr] != _status,"Not Changed!!");
        isWalletLimitExempt[_adr] = _status;
    }

    function ExcludeTxLimit(address _adr,bool _status) external onlyOwner {
        require(isTxLimitExempt[_adr] != _status,"Not Changed!!");
        isTxLimitExempt[_adr] = _status;
    }

    function setNumTokensBeforeSwap(uint256 newLimit) external onlyOwner() {
        minimumTokensBeforeSwap = newLimit;
    }

    function setMaxWalletLimit(uint256 newLimit) external onlyOwner() {
        _walletMax = newLimit;
    }

    function setTxLimit(uint256 newLimit) external onlyOwner() {
        _maxTxAmount = newLimit;
    }

    function setSwapAndLiquifyEnabled(bool _enabled) external onlyDev {
        swapAndLiquifyEnabled = _enabled;
        emit SwapAndLiquifyEnabledUpdated(_enabled);
    }

    function setMarketPair(address _pair, bool _status) external onlyOwner {
        isMarketPair[_pair] = _status;
        if(_status) {
            isWalletLimitExempt[address(_pair)] = true;
        }
    }

    function changeRouterVersion(address newRouterAddress) external onlyOwner returns(address newPairAddress) {

        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(newRouterAddress); 

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

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

        uniswapPair = newPairAddress; //Set new pair address
        uniswapV2Router = _uniswapV2Router; //Set new router address

        isMarketPair[address(uniswapPair)] = true;
        isWalletLimitExempt[address(uniswapPair)] = true;
    }

}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethReceived","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokensIntoLiqudity","type":"uint256"}],"name":"SwapAndLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"enabled","type":"bool"}],"name":"SwapAndLiquifyEnabledUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amountIn","type":"uint256"},{"indexed":false,"internalType":"address[]","name":"path","type":"address[]"}],"name":"SwapTokensForETH","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"ActiveTrade","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"EnableTxLimit","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_adr","type":"address"},{"internalType":"bool","name":"_status","type":"bool"}],"name":"ExcludeTxLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_adr","type":"address"},{"internalType":"bool","name":"_status","type":"bool"}],"name":"ExcludeWalletLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_walletMax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newRouterAddress","type":"address"}],"name":"changeRouterVersion","outputs":[{"internalType":"address","name":"newPairAddress","type":"address"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"checkWalletLimit","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"deadAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"enableLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_status","type":"bool"}],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_status","type":"bool"}],"name":"enableTxLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_status","type":"bool"}],"name":"enableWalletLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getCirculatingSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isExcludedFromFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isMarketPair","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"isOwner","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isTxLimitExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isWalletLimitExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"minimumTokensBeforeSwap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renouncedOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"rescueFunds","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IERC20","name":"adr","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"rescueTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_newutility","type":"uint256"},{"internalType":"uint256","name":"_newMarket","type":"uint256"}],"name":"setBuyFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_adr","type":"address"},{"internalType":"bool","name":"_status","type":"bool"}],"name":"setExcludeFromFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_pair","type":"address"},{"internalType":"bool","name":"_status","type":"bool"}],"name":"setMarketPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_newWallet","type":"address"}],"name":"setMarketingWallets","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newLimit","type":"uint256"}],"name":"setMaxWalletLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newLimit","type":"uint256"}],"name":"setNumTokensBeforeSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_newutility","type":"uint256"},{"internalType":"uint256","name":"_newMarket","type":"uint256"}],"name":"setSellFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"}],"name":"setSwapAndLiquifyEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newLimit","type":"uint256"}],"name":"setTxLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_newWallet","type":"address"}],"name":"setUtilityWallets","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapAndLiquifyEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"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":"utilityWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"zeroAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

60806040526040518060400160405280600a81526020017f56756c63616e20496e7500000000000000000000000000000000000000000000815250600190816200004a919062001192565b506040518060400160405280600381526020017f56554c00000000000000000000000000000000000000000000000000000000008152506002908162000091919062001192565b506009600360006101000a81548160ff021916908360ff16021790555073de3ab72727a041ab365f6b419499d7a0d1b7ef38600360016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550738af2f4b7566d1e071239249c22f08b1ef99ee374600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550607d600b55607d600c55607d600d55607d600e55600360009054906101000a900460ff16600a6200018a919062001409565b620f42406200019a91906200145a565b601155600360009054906101000a900460ff16600a620001bb919062001409565b611770620001ca91906200145a565b601255620002056103e8620001f1601460115462000ba160201b62002d511790919060201c565b62000c2460201b62002dcb1790919060201c565b601355620002406103e86200022c601460115462000ba160201b62002d511790919060201c565b62000c2460201b62002dcb1790919060201c565b6014556001601560006101000a81548160ff0219169083151502179055506001601560016101000a81548160ff0219169083151502179055506000601560026101000a81548160ff0219169083151502179055506001601660156101000a81548160ff021916908315150217905550348015620002bc57600080fd5b506000620002cf62000c7660201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3506000738af2f4b7566d1e071239249c22f08b1ef99ee37490506000737a250d5630b4cf539739df2c5dacb4c659f2488d90508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015620003eb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000411919062001525565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000479573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200049f919062001525565b6040518363ffffffff1660e01b8152600401620004be92919062001568565b6020604051808303816000875af1158015620004de573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000504919062001525565b601660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080601560036101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600019600660003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000601560039054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001600760003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160096000601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600960003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060016009600061dead73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600960008073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600a60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160086000601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555062000aae600b54600c5462000c7e60201b62002e151790919060201c565b600f8190555062000ad2600d54600e5462000c7e60201b62002e151790919060201c565b60108190555062000ae98262000ce160201b60201c565b601154600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60115460405162000b919190620015a6565b60405180910390a3505062001958565b600080830362000bb5576000905062000c1e565b6000828462000bc591906200145a565b905082848262000bd69190620015f2565b1462000c19576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000c1090620016b1565b60405180910390fd5b809150505b92915050565b600062000c6e83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525062000eb060201b60201c565b905092915050565b600033905090565b600080828462000c8f9190620016d3565b90508381101562000cd7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000cce9062001780565b60405180910390fd5b8091505092915050565b62000cf162000c7660201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161462000d81576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000d7890620017f2565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160362000df3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000dea906200188a565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000808311829062000efa576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000ef1919062001934565b60405180910390fd5b506000838562000f0b9190620015f2565b9050809150509392505050565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168062000f9a57607f821691505b60208210810362000fb05762000faf62000f52565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b6000600883026200101a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000fdb565b62001026868362000fdb565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b6000620010736200106d62001067846200103e565b62001048565b6200103e565b9050919050565b6000819050919050565b6200108f8362001052565b620010a76200109e826200107a565b84845462000fe8565b825550505050565b600090565b620010be620010af565b620010cb81848462001084565b505050565b5b81811015620010f357620010e7600082620010b4565b600181019050620010d1565b5050565b601f82111562001142576200110c8162000fb6565b620011178462000fcb565b8101602085101562001127578190505b6200113f620011368562000fcb565b830182620010d0565b50505b505050565b600082821c905092915050565b6000620011676000198460080262001147565b1980831691505092915050565b600062001182838362001154565b9150826002028217905092915050565b6200119d8262000f18565b67ffffffffffffffff811115620011b957620011b862000f23565b5b620011c5825462000f81565b620011d2828285620010f7565b600060209050601f8311600181146200120a5760008415620011f5578287015190505b62001201858262001174565b86555062001271565b601f1984166200121a8662000fb6565b60005b8281101562001244578489015182556001820191506020850194506020810190506200121d565b8683101562001264578489015162001260601f89168262001154565b8355505b6001600288020188555050505b505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b60018511156200130757808604811115620012df57620012de62001279565b5b6001851615620012ef5780820291505b8081029050620012ff85620012a8565b9450620012bf565b94509492505050565b600082620013225760019050620013f5565b81620013325760009050620013f5565b81600181146200134b576002811462001356576200138c565b6001915050620013f5565b60ff8411156200136b576200136a62001279565b5b8360020a91508482111562001385576200138462001279565b5b50620013f5565b5060208310610133831016604e8410600b8410161715620013c65782820a905083811115620013c057620013bf62001279565b5b620013f5565b620013d58484846001620012b5565b92509050818404811115620013ef57620013ee62001279565b5b81810290505b9392505050565b600060ff82169050919050565b600062001416826200103e565b91506200142383620013fc565b9250620014527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462001310565b905092915050565b600062001467826200103e565b915062001474836200103e565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615620014b057620014af62001279565b5b828202905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000620014ed82620014c0565b9050919050565b620014ff81620014e0565b81146200150b57600080fd5b50565b6000815190506200151f81620014f4565b92915050565b6000602082840312156200153e576200153d620014bb565b5b60006200154e848285016200150e565b91505092915050565b6200156281620014e0565b82525050565b60006040820190506200157f600083018562001557565b6200158e602083018462001557565b9392505050565b620015a0816200103e565b82525050565b6000602082019050620015bd600083018462001595565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000620015ff826200103e565b91506200160c836200103e565b9250826200161f576200161e620015c3565b5b828204905092915050565b600082825260208201905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b6000620016996021836200162a565b9150620016a6826200163b565b604082019050919050565b60006020820190508181036000830152620016cc816200168a565b9050919050565b6000620016e0826200103e565b9150620016ed836200103e565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111562001725576200172462001279565b5b828201905092915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b600062001768601b836200162a565b9150620017758262001730565b602082019050919050565b600060208201905081810360008301526200179b8162001759565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000620017da6020836200162a565b9150620017e782620017a2565b602082019050919050565b600060208201905081810360008301526200180d81620017cb565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000620018726026836200162a565b91506200187f8262001814565b604082019050919050565b60006020820190508181036000830152620018a58162001863565b9050919050565b60005b83811015620018cc578082015181840152602081019050620018af565b83811115620018dc576000848401525b50505050565b6000601f19601f8301169050919050565b6000620019008262000f18565b6200190c81856200162a565b93506200191e818560208601620018ac565b6200192981620018e2565b840191505092915050565b60006020820190508181036000830152620019508184620018f3565b905092915050565b61530c80620019686000396000f3fe60806040526004361061031e5760003560e01c8063751039fc116101ab578063c0b4d199116100f7578063dd62ed3e11610095578063f275f64b1161006f578063f275f64b14610bd1578063f2fde38b14610bfa578063f872858a14610c23578063fb0ecfa414610c4e57610325565b8063dd62ed3e14610b54578063e6b2603b14610b91578063ee828db314610ba857610325565b8063c816841b116100d1578063c816841b14610a98578063c867d60b14610ac3578063cea9d26f14610b00578063d2d7ad8314610b2957610325565b8063c0b4d19914610a1d578063c16dd4a414610a46578063c49b9a8014610a6f57610325565b80638f32d59b11610164578063a9059cbb1161013e578063a9059cbb14610963578063af9549e0146109a0578063b44cd5bc146109c9578063bf4cc52b146109f257610325565b80638f32d59b146108d057806395d89b41146108fb578063a457c2d71461092657610325565b8063751039fc146107d057806375f0a874146107e75780637d1db4a514610812578063807c2d9c1461083d5780638b42507f146108685780638da5cb5b146108a557610325565b8063395093511161026a5780635881f3ef116102235780636902ca61116101fd5780636902ca611461072a5780636ac9a8701461074157806370a082311461076a578063728d41c9146107a757610325565b80635881f3ef146106995780635c85974f146106d65780635e42358c146106ff57610325565b806339509351146105655780633b97084a146105a25780633ecad271146105cb5780634974d88f146106085780634a74bb02146106315780635342acb41461065c57610325565b806320365d5f116102d75780632b112e49116102b15780632b112e49146104bb578063313ce567146104e65780633187c3041461051157806338ec0b111461053c57610325565b806320365d5f1461043c57806323b872dd1461045357806327c8f8351461049057610325565b806306fdde031461032a5780630930907b14610355578063095ea7b31461038057806313ea1d89146103bd5780631694505e146103e657806318160ddd1461041157610325565b3661032557005b600080fd5b34801561033657600080fd5b5061033f610c77565b60405161034c9190614240565b60405180910390f35b34801561036157600080fd5b5061036a610d09565b60405161037791906142a3565b60405180910390f35b34801561038c57600080fd5b506103a760048036038101906103a29190614325565b610d0e565b6040516103b49190614380565b60405180910390f35b3480156103c957600080fd5b506103e460048036038101906103df91906143c7565b610d2c565b005b3480156103f257600080fd5b506103fb610eae565b6040516104089190614466565b60405180910390f35b34801561041d57600080fd5b50610426610ed4565b6040516104339190614490565b60405180910390f35b34801561044857600080fd5b50610451610ede565b005b34801561045f57600080fd5b5061047a600480360381019061047591906144ab565b611033565b6040516104879190614380565b60405180910390f35b34801561049c57600080fd5b506104a561110d565b6040516104b291906142a3565b60405180910390f35b3480156104c757600080fd5b506104d0611113565b6040516104dd9190614490565b60405180910390f35b3480156104f257600080fd5b506104fb611154565b604051610508919061451a565b60405180910390f35b34801561051d57600080fd5b5061052661116b565b6040516105339190614380565b60405180910390f35b34801561054857600080fd5b50610563600480360381019061055e91906143c7565b61117e565b005b34801561057157600080fd5b5061058c60048036038101906105879190614325565b611300565b6040516105999190614380565b60405180910390f35b3480156105ae57600080fd5b506105c960048036038101906105c49190614535565b6113b3565b005b3480156105d757600080fd5b506105f260048036038101906105ed9190614562565b611452565b6040516105ff9190614380565b60405180910390f35b34801561061457600080fd5b5061062f600480360381019061062a919061458f565b611472565b005b34801561063d57600080fd5b50610646611524565b6040516106539190614380565b60405180910390f35b34801561066857600080fd5b50610683600480360381019061067e9190614562565b611537565b6040516106909190614380565b60405180910390f35b3480156106a557600080fd5b506106c060048036038101906106bb9190614562565b611557565b6040516106cd91906142a3565b60405180910390f35b3480156106e257600080fd5b506106fd60048036038101906106f89190614535565b611a5a565b005b34801561070b57600080fd5b50610714611af9565b6040516107219190614380565b60405180910390f35b34801561073657600080fd5b5061073f611b0c565b005b34801561074d57600080fd5b50610768600480360381019061076391906145bc565b611bd9565b005b34801561077657600080fd5b50610791600480360381019061078c9190614562565b611c9d565b60405161079e9190614490565b60405180910390f35b3480156107b357600080fd5b506107ce60048036038101906107c99190614535565b611ce6565b005b3480156107dc57600080fd5b506107e5611d85565b005b3480156107f357600080fd5b506107fc611e52565b60405161080991906142a3565b60405180910390f35b34801561081e57600080fd5b50610827611e78565b6040516108349190614490565b60405180910390f35b34801561084957600080fd5b50610852611e7e565b60405161085f9190614490565b60405180910390f35b34801561087457600080fd5b5061088f600480360381019061088a9190614562565b611e84565b60405161089c9190614380565b60405180910390f35b3480156108b157600080fd5b506108ba611ea4565b6040516108c791906142a3565b60405180910390f35b3480156108dc57600080fd5b506108e5611ecd565b6040516108f29190614380565b60405180910390f35b34801561090757600080fd5b50610910611f24565b60405161091d9190614240565b60405180910390f35b34801561093257600080fd5b5061094d60048036038101906109489190614325565b611fb6565b60405161095a9190614380565b60405180910390f35b34801561096f57600080fd5b5061098a60048036038101906109859190614325565b612083565b6040516109979190614380565b60405180910390f35b3480156109ac57600080fd5b506109c760048036038101906109c291906143c7565b6120a2565b005b3480156109d557600080fd5b506109f060048036038101906109eb9190614562565b612224565b005b3480156109fe57600080fd5b50610a076122fd565b604051610a1491906142a3565b60405180910390f35b348015610a2957600080fd5b50610a446004803603810190610a3f9190614562565b612323565b005b348015610a5257600080fd5b50610a6d6004803603810190610a6891906143c7565b6123fc565b005b348015610a7b57600080fd5b50610a966004803603810190610a91919061458f565b61254b565b005b348015610aa457600080fd5b50610aad61262f565b604051610aba91906142a3565b60405180910390f35b348015610acf57600080fd5b50610aea6004803603810190610ae59190614562565b612655565b604051610af79190614380565b60405180910390f35b348015610b0c57600080fd5b50610b276004803603810190610b22919061463a565b612675565b005b348015610b3557600080fd5b50610b3e612789565b604051610b4b9190614490565b60405180910390f35b348015610b6057600080fd5b50610b7b6004803603810190610b76919061468d565b61278f565b604051610b889190614490565b60405180910390f35b348015610b9d57600080fd5b50610ba6612816565b005b348015610bb457600080fd5b50610bcf6004803603810190610bca919061458f565b612955565b005b348015610bdd57600080fd5b50610bf86004803603810190610bf3919061458f565b612a07565b005b348015610c0657600080fd5b50610c216004803603810190610c1c9190614562565b612ab9565b005b348015610c2f57600080fd5b50610c38612c7a565b604051610c459190614380565b60405180910390f35b348015610c5a57600080fd5b50610c756004803603810190610c7091906145bc565b612c8d565b005b606060018054610c86906146fc565b80601f0160208091040260200160405190810160405280929190818152602001828054610cb2906146fc565b8015610cff5780601f10610cd457610100808354040283529160200191610cff565b820191906000526020600020905b815481529060010190602001808311610ce257829003601f168201915b5050505050905090565b600081565b6000610d22610d1b612e73565b8484612e7b565b6001905092915050565b610d34612e73565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610dc1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610db890614779565b60405180910390fd5b801515600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151503610e53576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e4a906147e5565b60405180910390fd5b80600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b601560039054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000601154905090565b610ee6612e73565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f73576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f6a90614779565b60405180910390fd5b61dead73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a361dead6000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b6000611040848484613044565b506111028461104d612e73565b6110fd8560405180606001604052806028815260200161528a60289139600660008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006110b3612e73565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546136fa9092919063ffffffff16565b612e7b565b600190509392505050565b61dead81565b600061114f6111226000611c9d565b61114161113061dead611c9d565b60115461375e90919063ffffffff16565b61375e90919063ffffffff16565b905090565b6000600360009054906101000a900460ff16905090565b601560029054906101000a900460ff1681565b611186612e73565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611213576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161120a90614779565b60405180910390fd5b801515600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515036112a5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161129c906147e5565b60405180910390fd5b80600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60006113a961130d612e73565b846113a4856006600061131e612e73565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612e1590919063ffffffff16565b612e7b565b6001905092915050565b6113bb612e73565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611448576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161143f90614779565b60405180910390fd5b8060128190555050565b60086020528060005260406000206000915054906101000a900460ff1681565b61147a612e73565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611507576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114fe90614779565b60405180910390fd5b80601560016101000a81548160ff02191690831515021790555050565b601660159054906101000a900460ff1681565b60076020528060005260406000206000915054906101000a900460ff1681565b6000611561612e73565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146115ee576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115e590614779565b60405180910390fd5b60008290508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801561163e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611662919061481a565b73ffffffffffffffffffffffffffffffffffffffff1663e6a43905308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156116c9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116ed919061481a565b6040518363ffffffff1660e01b815260040161170a929190614847565b602060405180830381865afa158015611727573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061174b919061481a565b9150600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036118de578073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156117cc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117f0919061481a565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611857573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061187b919061481a565b6040518363ffffffff1660e01b8152600401611898929190614847565b6020604051808303816000875af11580156118b7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118db919061481a565b91505b81601660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080601560036101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160086000601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160096000601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050919050565b611a62612e73565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611aef576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ae690614779565b60405180910390fd5b8060138190555050565b601560009054906101000a900460ff1681565b611b14612e73565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611ba1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b9890614779565b60405180910390fd5b6001601560016101000a81548160ff0219169083151502179055506001601560006101000a81548160ff021916908315150217905550565b611be1612e73565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611c6e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c6590614779565b60405180910390fd5b81600e8190555080600d81905550611c93600d54600e54612e1590919063ffffffff16565b6010819055505050565b6000600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b611cee612e73565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611d7b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d7290614779565b60405180910390fd5b8060148190555050565b611d8d612e73565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611e1a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e1190614779565b60405180910390fd5b6000601560016101000a81548160ff0219169083151502179055506000601560006101000a81548160ff021916908315150217905550565b600360019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60135481565b60145481565b600a6020528060005260406000206000915054906101000a900460ff1681565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614905090565b606060028054611f33906146fc565b80601f0160208091040260200160405190810160405280929190818152602001828054611f5f906146fc565b8015611fac5780601f10611f8157610100808354040283529160200191611fac565b820191906000526020600020905b815481529060010190602001808311611f8f57829003601f168201915b5050505050905090565b6000612079611fc3612e73565b84612074856040518060600160405280602581526020016152b26025913960066000611fed612e73565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546136fa9092919063ffffffff16565b612e7b565b6001905092915050565b6000612097612090612e73565b8484613044565b506001905092915050565b6120aa612e73565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612137576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161212e90614779565b60405180910390fd5b801515600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515036121c9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121c0906147e5565b60405180910390fd5b80600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b61222c612e73565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146122b9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122b090614779565b60405180910390fd5b80600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61232b612e73565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146123b8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123af90614779565b60405180910390fd5b80600360016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b612404612e73565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612491576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161248890614779565b60405180910390fd5b80600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015612547576001600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b5050565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146125db576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125d2906148bc565b60405180910390fd5b80601660156101000a81548160ff0219169083151502179055507f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc159816040516126249190614380565b60405180910390a150565b601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60096020528060005260406000206000915054906101000a900460ff1681565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614612705576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126fc906148bc565b60405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb83836040518363ffffffff1660e01b81526004016127409291906148dc565b6020604051808303816000875af115801561275f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612783919061491a565b50505050565b60125481565b6000600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146128a6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161289d906148bc565b60405180910390fd5b60003373ffffffffffffffffffffffffffffffffffffffff16476040516128cc90614978565b60006040518083038185875af1925050503d8060008114612909576040519150601f19603f3d011682016040523d82523d6000602084013e61290e565b606091505b5050905080612952576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612949906149d9565b60405180910390fd5b50565b61295d612e73565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146129ea576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129e190614779565b60405180910390fd5b80601560006101000a81548160ff02191690831515021790555050565b612a0f612e73565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612a9c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a9390614779565b60405180910390fd5b80601560026101000a81548160ff02191690831515021790555050565b612ac1612e73565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612b4e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b4590614779565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603612bbd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612bb490614a6b565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b601560019054906101000a900460ff1681565b612c95612e73565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612d22576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d1990614779565b60405180910390fd5b81600c8190555080600b81905550612d47600b54600c54612e1590919063ffffffff16565b600f819055505050565b6000808303612d635760009050612dc5565b60008284612d719190614aba565b9050828482612d809190614b43565b14612dc0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612db790614be6565b60405180910390fd5b809150505b92915050565b6000612e0d83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506137a8565b905092915050565b6000808284612e249190614c06565b905083811015612e69576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e6090614ca8565b60405180910390fd5b8091505092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612eea576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ee190614d3a565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612f59576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f5090614dcc565b60405180910390fd5b80600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516130379190614490565b60405180910390a3505050565b60008073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16036130b4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016130ab90614e38565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603613123576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161311a90614ea4565b60405180910390fd5b60008211613166576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161315d90614f10565b60405180910390fd5b601560029054906101000a900460ff1661325b57600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168061321b5750600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b61325a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161325190614f7c565b60405180910390fd5b5b601660149054906101000a900460ff16156132825761327b84848461380b565b90506136f3565b600a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156133265750600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b801561333e5750601560009054906101000a900460ff165b1561338957601354821115613388576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161337f90614fe8565b60405180910390fd5b5b600061339430611c9d565b9050600060125482101590508080156133ba5750601660149054906101000a900460ff16155b80156134105750600860008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156134285750601660159054906101000a900460ff165b15613436576134356139de565b5b6134bf846040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600560008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546136fa9092919063ffffffff16565b600560008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600061350e8787613b50565b6135225761351d878787613cbb565b613524565b845b9050601560019054906101000a900460ff16801561358c5750600960008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156135f1576014546135af826135a189611c9d565b612e1590919063ffffffff16565b11156135f0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016135e790615054565b60405180910390fd5b5b61364381600560008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612e1590919063ffffffff16565b600560008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516136e39190614490565b60405180910390a3600193505050505b9392505050565b6000838311158290613742576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016137399190614240565b60405180910390fd5b50600083856137519190615074565b9050809150509392505050565b60006137a083836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506136fa565b905092915050565b600080831182906137ef576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016137e69190614240565b60405180910390fd5b50600083856137fe9190614b43565b9050809150509392505050565b6000613896826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600560008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546136fa9092919063ffffffff16565b600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061392b82600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612e1590919063ffffffff16565b600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516139cb9190614490565b60405180910390a3600190509392505050565b6001601660146101000a81548160ff0219169083151502179055506000613a0430611c9d565b905060008103613a145750613b33565b6000613a2d600d54600b54612e1590919063ffffffff16565b90506000613a48601054600f54612e1590919063ffffffff16565b905060008103613a5a57505050613b33565b6000479050613a6884613ee0565b6000613a7d824761375e90919063ffffffff16565b90506000613aa684613a988785612d5190919063ffffffff16565b612dcb90919063ffffffff16565b90506000613abd828461375e90919063ffffffff16565b90506000821115613af557613af4600360019054906101000a900473ffffffffffffffffffffffffffffffffffffffff168361415c565b5b6000811115613b2b57613b2a600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168261415c565b5b505050505050505b6000601660146101000a81548160ff021916908315150217905550565b6000600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680613bf35750600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15613c015760019050613cb5565b600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680613ca25750600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15613cb05760009050613cb5565b600090505b92915050565b600080600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615613d4057613d396103e8613d2b600f5486612d5190919063ffffffff16565b612dcb90919063ffffffff16565b9050613dbf565b600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615613dbe57613dbb6103e8613dad60105486612d5190919063ffffffff16565b612dcb90919063ffffffff16565b90505b5b6000811115613ec357613e1a81600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612e1590919063ffffffff16565b600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051613eba9190614490565b60405180910390a35b613ed6818461375e90919063ffffffff16565b9150509392505050565b6000600267ffffffffffffffff811115613efd57613efc6150a8565b5b604051908082528060200260200182016040528015613f2b5781602001602082028036833780820191505090505b5090503081600081518110613f4357613f426150d7565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601560039054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015613fea573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061400e919061481a565b81600181518110614022576140216150d7565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061408930601560039054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684612e7b565b601560039054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b81526004016140ed9594939291906151ff565b600060405180830381600087803b15801561410757600080fd5b505af115801561411b573d6000803e3d6000fd5b505050507f32cde87eb454f3a0b875ab23547023107cfad454363ec88ba5695e2c24aa52a78282604051614150929190615259565b60405180910390a15050565b8173ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f193505050501580156141a2573d6000803e3d6000fd5b505050565b600081519050919050565b600082825260208201905092915050565b60005b838110156141e15780820151818401526020810190506141c6565b838111156141f0576000848401525b50505050565b6000601f19601f8301169050919050565b6000614212826141a7565b61421c81856141b2565b935061422c8185602086016141c3565b614235816141f6565b840191505092915050565b6000602082019050818103600083015261425a8184614207565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061428d82614262565b9050919050565b61429d81614282565b82525050565b60006020820190506142b86000830184614294565b92915050565b600080fd5b6142cc81614282565b81146142d757600080fd5b50565b6000813590506142e9816142c3565b92915050565b6000819050919050565b614302816142ef565b811461430d57600080fd5b50565b60008135905061431f816142f9565b92915050565b6000806040838503121561433c5761433b6142be565b5b600061434a858286016142da565b925050602061435b85828601614310565b9150509250929050565b60008115159050919050565b61437a81614365565b82525050565b60006020820190506143956000830184614371565b92915050565b6143a481614365565b81146143af57600080fd5b50565b6000813590506143c18161439b565b92915050565b600080604083850312156143de576143dd6142be565b5b60006143ec858286016142da565b92505060206143fd858286016143b2565b9150509250929050565b6000819050919050565b600061442c61442761442284614262565b614407565b614262565b9050919050565b600061443e82614411565b9050919050565b600061445082614433565b9050919050565b61446081614445565b82525050565b600060208201905061447b6000830184614457565b92915050565b61448a816142ef565b82525050565b60006020820190506144a56000830184614481565b92915050565b6000806000606084860312156144c4576144c36142be565b5b60006144d2868287016142da565b93505060206144e3868287016142da565b92505060406144f486828701614310565b9150509250925092565b600060ff82169050919050565b614514816144fe565b82525050565b600060208201905061452f600083018461450b565b92915050565b60006020828403121561454b5761454a6142be565b5b600061455984828501614310565b91505092915050565b600060208284031215614578576145776142be565b5b6000614586848285016142da565b91505092915050565b6000602082840312156145a5576145a46142be565b5b60006145b3848285016143b2565b91505092915050565b600080604083850312156145d3576145d26142be565b5b60006145e185828601614310565b92505060206145f285828601614310565b9150509250929050565b600061460782614282565b9050919050565b614617816145fc565b811461462257600080fd5b50565b6000813590506146348161460e565b92915050565b600080600060608486031215614653576146526142be565b5b600061466186828701614625565b9350506020614672868287016142da565b925050604061468386828701614310565b9150509250925092565b600080604083850312156146a4576146a36142be565b5b60006146b2858286016142da565b92505060206146c3858286016142da565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061471457607f821691505b602082108103614727576147266146cd565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006147636020836141b2565b915061476e8261472d565b602082019050919050565b6000602082019050818103600083015261479281614756565b9050919050565b7f4e6f74204368616e676564212100000000000000000000000000000000000000600082015250565b60006147cf600d836141b2565b91506147da82614799565b602082019050919050565b600060208201905081810360008301526147fe816147c2565b9050919050565b600081519050614814816142c3565b92915050565b6000602082840312156148305761482f6142be565b5b600061483e84828501614805565b91505092915050565b600060408201905061485c6000830185614294565b6148696020830184614294565b9392505050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865204465760000600082015250565b60006148a6601e836141b2565b91506148b182614870565b602082019050919050565b600060208201905081810360008301526148d581614899565b9050919050565b60006040820190506148f16000830185614294565b6148fe6020830184614481565b9392505050565b6000815190506149148161439b565b92915050565b6000602082840312156149305761492f6142be565b5b600061493e84828501614905565b91505092915050565b600081905092915050565b50565b6000614962600083614947565b915061496d82614952565b600082019050919050565b600061498382614955565b9150819050919050565b7f5472616e73616374696f6e204661696c65642121000000000000000000000000600082015250565b60006149c36014836141b2565b91506149ce8261498d565b602082019050919050565b600060208201905081810360008301526149f2816149b6565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000614a556026836141b2565b9150614a60826149f9565b604082019050919050565b60006020820190508181036000830152614a8481614a48565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000614ac5826142ef565b9150614ad0836142ef565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615614b0957614b08614a8b565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000614b4e826142ef565b9150614b59836142ef565b925082614b6957614b68614b14565b5b828204905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b6000614bd06021836141b2565b9150614bdb82614b74565b604082019050919050565b60006020820190508181036000830152614bff81614bc3565b9050919050565b6000614c11826142ef565b9150614c1c836142ef565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115614c5157614c50614a8b565b5b828201905092915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000614c92601b836141b2565b9150614c9d82614c5c565b602082019050919050565b60006020820190508181036000830152614cc181614c85565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000614d246024836141b2565b9150614d2f82614cc8565b604082019050919050565b60006020820190508181036000830152614d5381614d17565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000614db66022836141b2565b9150614dc182614d5a565b604082019050919050565b60006020820190508181036000830152614de581614da9565b9050919050565b7f45524332303a66726f6d207a65726f0000000000000000000000000000000000600082015250565b6000614e22600f836141b2565b9150614e2d82614dec565b602082019050919050565b60006020820190508181036000830152614e5181614e15565b9050919050565b7f45524332303a746f207a65726f00000000000000000000000000000000000000600082015250565b6000614e8e600d836141b2565b9150614e9982614e58565b602082019050919050565b60006020820190508181036000830152614ebd81614e81565b9050919050565b7f496e76616c696420416d6f756e74000000000000000000000000000000000000600082015250565b6000614efa600e836141b2565b9150614f0582614ec4565b602082019050919050565b60006020820190508181036000830152614f2981614eed565b9050919050565b7f54726164696e6720697320506175736564210000000000000000000000000000600082015250565b6000614f666012836141b2565b9150614f7182614f30565b602082019050919050565b60006020820190508181036000830152614f9581614f59565b9050919050565b7f4d61782054780000000000000000000000000000000000000000000000000000600082015250565b6000614fd26006836141b2565b9150614fdd82614f9c565b602082019050919050565b6000602082019050818103600083015261500181614fc5565b9050919050565b7f4d61782057616c6c657400000000000000000000000000000000000000000000600082015250565b600061503e600a836141b2565b915061504982615008565b602082019050919050565b6000602082019050818103600083015261506d81615031565b9050919050565b600061507f826142ef565b915061508a836142ef565b92508282101561509d5761509c614a8b565b5b828203905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000819050919050565b600061512b61512661512184615106565b614407565b6142ef565b9050919050565b61513b81615110565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61517681614282565b82525050565b6000615188838361516d565b60208301905092915050565b6000602082019050919050565b60006151ac82615141565b6151b6818561514c565b93506151c18361515d565b8060005b838110156151f25781516151d9888261517c565b97506151e483615194565b9250506001810190506151c5565b5085935050505092915050565b600060a0820190506152146000830188614481565b6152216020830187615132565b818103604083015261523381866151a1565b90506152426060830185614294565b61524f6080830184614481565b9695505050505050565b600060408201905061526e6000830185614481565b818103602083015261528081846151a1565b9050939250505056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa264697066735822122094a3b9cf72e5bccce854acab4f2cfdb9064acb5f52c253d7f98fdf0c2c7b018d64736f6c634300080f0033

Deployed Bytecode

0x60806040526004361061031e5760003560e01c8063751039fc116101ab578063c0b4d199116100f7578063dd62ed3e11610095578063f275f64b1161006f578063f275f64b14610bd1578063f2fde38b14610bfa578063f872858a14610c23578063fb0ecfa414610c4e57610325565b8063dd62ed3e14610b54578063e6b2603b14610b91578063ee828db314610ba857610325565b8063c816841b116100d1578063c816841b14610a98578063c867d60b14610ac3578063cea9d26f14610b00578063d2d7ad8314610b2957610325565b8063c0b4d19914610a1d578063c16dd4a414610a46578063c49b9a8014610a6f57610325565b80638f32d59b11610164578063a9059cbb1161013e578063a9059cbb14610963578063af9549e0146109a0578063b44cd5bc146109c9578063bf4cc52b146109f257610325565b80638f32d59b146108d057806395d89b41146108fb578063a457c2d71461092657610325565b8063751039fc146107d057806375f0a874146107e75780637d1db4a514610812578063807c2d9c1461083d5780638b42507f146108685780638da5cb5b146108a557610325565b8063395093511161026a5780635881f3ef116102235780636902ca61116101fd5780636902ca611461072a5780636ac9a8701461074157806370a082311461076a578063728d41c9146107a757610325565b80635881f3ef146106995780635c85974f146106d65780635e42358c146106ff57610325565b806339509351146105655780633b97084a146105a25780633ecad271146105cb5780634974d88f146106085780634a74bb02146106315780635342acb41461065c57610325565b806320365d5f116102d75780632b112e49116102b15780632b112e49146104bb578063313ce567146104e65780633187c3041461051157806338ec0b111461053c57610325565b806320365d5f1461043c57806323b872dd1461045357806327c8f8351461049057610325565b806306fdde031461032a5780630930907b14610355578063095ea7b31461038057806313ea1d89146103bd5780631694505e146103e657806318160ddd1461041157610325565b3661032557005b600080fd5b34801561033657600080fd5b5061033f610c77565b60405161034c9190614240565b60405180910390f35b34801561036157600080fd5b5061036a610d09565b60405161037791906142a3565b60405180910390f35b34801561038c57600080fd5b506103a760048036038101906103a29190614325565b610d0e565b6040516103b49190614380565b60405180910390f35b3480156103c957600080fd5b506103e460048036038101906103df91906143c7565b610d2c565b005b3480156103f257600080fd5b506103fb610eae565b6040516104089190614466565b60405180910390f35b34801561041d57600080fd5b50610426610ed4565b6040516104339190614490565b60405180910390f35b34801561044857600080fd5b50610451610ede565b005b34801561045f57600080fd5b5061047a600480360381019061047591906144ab565b611033565b6040516104879190614380565b60405180910390f35b34801561049c57600080fd5b506104a561110d565b6040516104b291906142a3565b60405180910390f35b3480156104c757600080fd5b506104d0611113565b6040516104dd9190614490565b60405180910390f35b3480156104f257600080fd5b506104fb611154565b604051610508919061451a565b60405180910390f35b34801561051d57600080fd5b5061052661116b565b6040516105339190614380565b60405180910390f35b34801561054857600080fd5b50610563600480360381019061055e91906143c7565b61117e565b005b34801561057157600080fd5b5061058c60048036038101906105879190614325565b611300565b6040516105999190614380565b60405180910390f35b3480156105ae57600080fd5b506105c960048036038101906105c49190614535565b6113b3565b005b3480156105d757600080fd5b506105f260048036038101906105ed9190614562565b611452565b6040516105ff9190614380565b60405180910390f35b34801561061457600080fd5b5061062f600480360381019061062a919061458f565b611472565b005b34801561063d57600080fd5b50610646611524565b6040516106539190614380565b60405180910390f35b34801561066857600080fd5b50610683600480360381019061067e9190614562565b611537565b6040516106909190614380565b60405180910390f35b3480156106a557600080fd5b506106c060048036038101906106bb9190614562565b611557565b6040516106cd91906142a3565b60405180910390f35b3480156106e257600080fd5b506106fd60048036038101906106f89190614535565b611a5a565b005b34801561070b57600080fd5b50610714611af9565b6040516107219190614380565b60405180910390f35b34801561073657600080fd5b5061073f611b0c565b005b34801561074d57600080fd5b50610768600480360381019061076391906145bc565b611bd9565b005b34801561077657600080fd5b50610791600480360381019061078c9190614562565b611c9d565b60405161079e9190614490565b60405180910390f35b3480156107b357600080fd5b506107ce60048036038101906107c99190614535565b611ce6565b005b3480156107dc57600080fd5b506107e5611d85565b005b3480156107f357600080fd5b506107fc611e52565b60405161080991906142a3565b60405180910390f35b34801561081e57600080fd5b50610827611e78565b6040516108349190614490565b60405180910390f35b34801561084957600080fd5b50610852611e7e565b60405161085f9190614490565b60405180910390f35b34801561087457600080fd5b5061088f600480360381019061088a9190614562565b611e84565b60405161089c9190614380565b60405180910390f35b3480156108b157600080fd5b506108ba611ea4565b6040516108c791906142a3565b60405180910390f35b3480156108dc57600080fd5b506108e5611ecd565b6040516108f29190614380565b60405180910390f35b34801561090757600080fd5b50610910611f24565b60405161091d9190614240565b60405180910390f35b34801561093257600080fd5b5061094d60048036038101906109489190614325565b611fb6565b60405161095a9190614380565b60405180910390f35b34801561096f57600080fd5b5061098a60048036038101906109859190614325565b612083565b6040516109979190614380565b60405180910390f35b3480156109ac57600080fd5b506109c760048036038101906109c291906143c7565b6120a2565b005b3480156109d557600080fd5b506109f060048036038101906109eb9190614562565b612224565b005b3480156109fe57600080fd5b50610a076122fd565b604051610a1491906142a3565b60405180910390f35b348015610a2957600080fd5b50610a446004803603810190610a3f9190614562565b612323565b005b348015610a5257600080fd5b50610a6d6004803603810190610a6891906143c7565b6123fc565b005b348015610a7b57600080fd5b50610a966004803603810190610a91919061458f565b61254b565b005b348015610aa457600080fd5b50610aad61262f565b604051610aba91906142a3565b60405180910390f35b348015610acf57600080fd5b50610aea6004803603810190610ae59190614562565b612655565b604051610af79190614380565b60405180910390f35b348015610b0c57600080fd5b50610b276004803603810190610b22919061463a565b612675565b005b348015610b3557600080fd5b50610b3e612789565b604051610b4b9190614490565b60405180910390f35b348015610b6057600080fd5b50610b7b6004803603810190610b76919061468d565b61278f565b604051610b889190614490565b60405180910390f35b348015610b9d57600080fd5b50610ba6612816565b005b348015610bb457600080fd5b50610bcf6004803603810190610bca919061458f565b612955565b005b348015610bdd57600080fd5b50610bf86004803603810190610bf3919061458f565b612a07565b005b348015610c0657600080fd5b50610c216004803603810190610c1c9190614562565b612ab9565b005b348015610c2f57600080fd5b50610c38612c7a565b604051610c459190614380565b60405180910390f35b348015610c5a57600080fd5b50610c756004803603810190610c7091906145bc565b612c8d565b005b606060018054610c86906146fc565b80601f0160208091040260200160405190810160405280929190818152602001828054610cb2906146fc565b8015610cff5780601f10610cd457610100808354040283529160200191610cff565b820191906000526020600020905b815481529060010190602001808311610ce257829003601f168201915b5050505050905090565b600081565b6000610d22610d1b612e73565b8484612e7b565b6001905092915050565b610d34612e73565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610dc1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610db890614779565b60405180910390fd5b801515600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151503610e53576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e4a906147e5565b60405180910390fd5b80600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b601560039054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000601154905090565b610ee6612e73565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f73576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f6a90614779565b60405180910390fd5b61dead73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a361dead6000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b6000611040848484613044565b506111028461104d612e73565b6110fd8560405180606001604052806028815260200161528a60289139600660008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006110b3612e73565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546136fa9092919063ffffffff16565b612e7b565b600190509392505050565b61dead81565b600061114f6111226000611c9d565b61114161113061dead611c9d565b60115461375e90919063ffffffff16565b61375e90919063ffffffff16565b905090565b6000600360009054906101000a900460ff16905090565b601560029054906101000a900460ff1681565b611186612e73565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611213576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161120a90614779565b60405180910390fd5b801515600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515036112a5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161129c906147e5565b60405180910390fd5b80600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60006113a961130d612e73565b846113a4856006600061131e612e73565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612e1590919063ffffffff16565b612e7b565b6001905092915050565b6113bb612e73565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611448576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161143f90614779565b60405180910390fd5b8060128190555050565b60086020528060005260406000206000915054906101000a900460ff1681565b61147a612e73565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611507576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114fe90614779565b60405180910390fd5b80601560016101000a81548160ff02191690831515021790555050565b601660159054906101000a900460ff1681565b60076020528060005260406000206000915054906101000a900460ff1681565b6000611561612e73565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146115ee576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115e590614779565b60405180910390fd5b60008290508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801561163e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611662919061481a565b73ffffffffffffffffffffffffffffffffffffffff1663e6a43905308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156116c9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116ed919061481a565b6040518363ffffffff1660e01b815260040161170a929190614847565b602060405180830381865afa158015611727573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061174b919061481a565b9150600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036118de578073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156117cc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117f0919061481a565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611857573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061187b919061481a565b6040518363ffffffff1660e01b8152600401611898929190614847565b6020604051808303816000875af11580156118b7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118db919061481a565b91505b81601660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080601560036101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160086000601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160096000601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050919050565b611a62612e73565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611aef576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ae690614779565b60405180910390fd5b8060138190555050565b601560009054906101000a900460ff1681565b611b14612e73565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611ba1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b9890614779565b60405180910390fd5b6001601560016101000a81548160ff0219169083151502179055506001601560006101000a81548160ff021916908315150217905550565b611be1612e73565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611c6e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c6590614779565b60405180910390fd5b81600e8190555080600d81905550611c93600d54600e54612e1590919063ffffffff16565b6010819055505050565b6000600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b611cee612e73565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611d7b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d7290614779565b60405180910390fd5b8060148190555050565b611d8d612e73565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611e1a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e1190614779565b60405180910390fd5b6000601560016101000a81548160ff0219169083151502179055506000601560006101000a81548160ff021916908315150217905550565b600360019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60135481565b60145481565b600a6020528060005260406000206000915054906101000a900460ff1681565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614905090565b606060028054611f33906146fc565b80601f0160208091040260200160405190810160405280929190818152602001828054611f5f906146fc565b8015611fac5780601f10611f8157610100808354040283529160200191611fac565b820191906000526020600020905b815481529060010190602001808311611f8f57829003601f168201915b5050505050905090565b6000612079611fc3612e73565b84612074856040518060600160405280602581526020016152b26025913960066000611fed612e73565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546136fa9092919063ffffffff16565b612e7b565b6001905092915050565b6000612097612090612e73565b8484613044565b506001905092915050565b6120aa612e73565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612137576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161212e90614779565b60405180910390fd5b801515600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515036121c9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121c0906147e5565b60405180910390fd5b80600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b61222c612e73565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146122b9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122b090614779565b60405180910390fd5b80600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61232b612e73565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146123b8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123af90614779565b60405180910390fd5b80600360016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b612404612e73565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612491576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161248890614779565b60405180910390fd5b80600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015612547576001600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b5050565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146125db576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125d2906148bc565b60405180910390fd5b80601660156101000a81548160ff0219169083151502179055507f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc159816040516126249190614380565b60405180910390a150565b601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60096020528060005260406000206000915054906101000a900460ff1681565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614612705576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126fc906148bc565b60405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb83836040518363ffffffff1660e01b81526004016127409291906148dc565b6020604051808303816000875af115801561275f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612783919061491a565b50505050565b60125481565b6000600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146128a6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161289d906148bc565b60405180910390fd5b60003373ffffffffffffffffffffffffffffffffffffffff16476040516128cc90614978565b60006040518083038185875af1925050503d8060008114612909576040519150601f19603f3d011682016040523d82523d6000602084013e61290e565b606091505b5050905080612952576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612949906149d9565b60405180910390fd5b50565b61295d612e73565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146129ea576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129e190614779565b60405180910390fd5b80601560006101000a81548160ff02191690831515021790555050565b612a0f612e73565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612a9c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a9390614779565b60405180910390fd5b80601560026101000a81548160ff02191690831515021790555050565b612ac1612e73565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612b4e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b4590614779565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603612bbd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612bb490614a6b565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b601560019054906101000a900460ff1681565b612c95612e73565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612d22576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d1990614779565b60405180910390fd5b81600c8190555080600b81905550612d47600b54600c54612e1590919063ffffffff16565b600f819055505050565b6000808303612d635760009050612dc5565b60008284612d719190614aba565b9050828482612d809190614b43565b14612dc0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612db790614be6565b60405180910390fd5b809150505b92915050565b6000612e0d83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506137a8565b905092915050565b6000808284612e249190614c06565b905083811015612e69576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e6090614ca8565b60405180910390fd5b8091505092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612eea576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ee190614d3a565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612f59576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f5090614dcc565b60405180910390fd5b80600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516130379190614490565b60405180910390a3505050565b60008073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16036130b4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016130ab90614e38565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603613123576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161311a90614ea4565b60405180910390fd5b60008211613166576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161315d90614f10565b60405180910390fd5b601560029054906101000a900460ff1661325b57600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168061321b5750600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b61325a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161325190614f7c565b60405180910390fd5b5b601660149054906101000a900460ff16156132825761327b84848461380b565b90506136f3565b600a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156133265750600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b801561333e5750601560009054906101000a900460ff165b1561338957601354821115613388576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161337f90614fe8565b60405180910390fd5b5b600061339430611c9d565b9050600060125482101590508080156133ba5750601660149054906101000a900460ff16155b80156134105750600860008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156134285750601660159054906101000a900460ff165b15613436576134356139de565b5b6134bf846040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600560008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546136fa9092919063ffffffff16565b600560008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600061350e8787613b50565b6135225761351d878787613cbb565b613524565b845b9050601560019054906101000a900460ff16801561358c5750600960008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156135f1576014546135af826135a189611c9d565b612e1590919063ffffffff16565b11156135f0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016135e790615054565b60405180910390fd5b5b61364381600560008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612e1590919063ffffffff16565b600560008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516136e39190614490565b60405180910390a3600193505050505b9392505050565b6000838311158290613742576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016137399190614240565b60405180910390fd5b50600083856137519190615074565b9050809150509392505050565b60006137a083836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506136fa565b905092915050565b600080831182906137ef576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016137e69190614240565b60405180910390fd5b50600083856137fe9190614b43565b9050809150509392505050565b6000613896826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600560008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546136fa9092919063ffffffff16565b600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061392b82600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612e1590919063ffffffff16565b600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516139cb9190614490565b60405180910390a3600190509392505050565b6001601660146101000a81548160ff0219169083151502179055506000613a0430611c9d565b905060008103613a145750613b33565b6000613a2d600d54600b54612e1590919063ffffffff16565b90506000613a48601054600f54612e1590919063ffffffff16565b905060008103613a5a57505050613b33565b6000479050613a6884613ee0565b6000613a7d824761375e90919063ffffffff16565b90506000613aa684613a988785612d5190919063ffffffff16565b612dcb90919063ffffffff16565b90506000613abd828461375e90919063ffffffff16565b90506000821115613af557613af4600360019054906101000a900473ffffffffffffffffffffffffffffffffffffffff168361415c565b5b6000811115613b2b57613b2a600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168261415c565b5b505050505050505b6000601660146101000a81548160ff021916908315150217905550565b6000600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680613bf35750600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15613c015760019050613cb5565b600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680613ca25750600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15613cb05760009050613cb5565b600090505b92915050565b600080600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615613d4057613d396103e8613d2b600f5486612d5190919063ffffffff16565b612dcb90919063ffffffff16565b9050613dbf565b600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615613dbe57613dbb6103e8613dad60105486612d5190919063ffffffff16565b612dcb90919063ffffffff16565b90505b5b6000811115613ec357613e1a81600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612e1590919063ffffffff16565b600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051613eba9190614490565b60405180910390a35b613ed6818461375e90919063ffffffff16565b9150509392505050565b6000600267ffffffffffffffff811115613efd57613efc6150a8565b5b604051908082528060200260200182016040528015613f2b5781602001602082028036833780820191505090505b5090503081600081518110613f4357613f426150d7565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601560039054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015613fea573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061400e919061481a565b81600181518110614022576140216150d7565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061408930601560039054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684612e7b565b601560039054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b81526004016140ed9594939291906151ff565b600060405180830381600087803b15801561410757600080fd5b505af115801561411b573d6000803e3d6000fd5b505050507f32cde87eb454f3a0b875ab23547023107cfad454363ec88ba5695e2c24aa52a78282604051614150929190615259565b60405180910390a15050565b8173ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f193505050501580156141a2573d6000803e3d6000fd5b505050565b600081519050919050565b600082825260208201905092915050565b60005b838110156141e15780820151818401526020810190506141c6565b838111156141f0576000848401525b50505050565b6000601f19601f8301169050919050565b6000614212826141a7565b61421c81856141b2565b935061422c8185602086016141c3565b614235816141f6565b840191505092915050565b6000602082019050818103600083015261425a8184614207565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061428d82614262565b9050919050565b61429d81614282565b82525050565b60006020820190506142b86000830184614294565b92915050565b600080fd5b6142cc81614282565b81146142d757600080fd5b50565b6000813590506142e9816142c3565b92915050565b6000819050919050565b614302816142ef565b811461430d57600080fd5b50565b60008135905061431f816142f9565b92915050565b6000806040838503121561433c5761433b6142be565b5b600061434a858286016142da565b925050602061435b85828601614310565b9150509250929050565b60008115159050919050565b61437a81614365565b82525050565b60006020820190506143956000830184614371565b92915050565b6143a481614365565b81146143af57600080fd5b50565b6000813590506143c18161439b565b92915050565b600080604083850312156143de576143dd6142be565b5b60006143ec858286016142da565b92505060206143fd858286016143b2565b9150509250929050565b6000819050919050565b600061442c61442761442284614262565b614407565b614262565b9050919050565b600061443e82614411565b9050919050565b600061445082614433565b9050919050565b61446081614445565b82525050565b600060208201905061447b6000830184614457565b92915050565b61448a816142ef565b82525050565b60006020820190506144a56000830184614481565b92915050565b6000806000606084860312156144c4576144c36142be565b5b60006144d2868287016142da565b93505060206144e3868287016142da565b92505060406144f486828701614310565b9150509250925092565b600060ff82169050919050565b614514816144fe565b82525050565b600060208201905061452f600083018461450b565b92915050565b60006020828403121561454b5761454a6142be565b5b600061455984828501614310565b91505092915050565b600060208284031215614578576145776142be565b5b6000614586848285016142da565b91505092915050565b6000602082840312156145a5576145a46142be565b5b60006145b3848285016143b2565b91505092915050565b600080604083850312156145d3576145d26142be565b5b60006145e185828601614310565b92505060206145f285828601614310565b9150509250929050565b600061460782614282565b9050919050565b614617816145fc565b811461462257600080fd5b50565b6000813590506146348161460e565b92915050565b600080600060608486031215614653576146526142be565b5b600061466186828701614625565b9350506020614672868287016142da565b925050604061468386828701614310565b9150509250925092565b600080604083850312156146a4576146a36142be565b5b60006146b2858286016142da565b92505060206146c3858286016142da565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061471457607f821691505b602082108103614727576147266146cd565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006147636020836141b2565b915061476e8261472d565b602082019050919050565b6000602082019050818103600083015261479281614756565b9050919050565b7f4e6f74204368616e676564212100000000000000000000000000000000000000600082015250565b60006147cf600d836141b2565b91506147da82614799565b602082019050919050565b600060208201905081810360008301526147fe816147c2565b9050919050565b600081519050614814816142c3565b92915050565b6000602082840312156148305761482f6142be565b5b600061483e84828501614805565b91505092915050565b600060408201905061485c6000830185614294565b6148696020830184614294565b9392505050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865204465760000600082015250565b60006148a6601e836141b2565b91506148b182614870565b602082019050919050565b600060208201905081810360008301526148d581614899565b9050919050565b60006040820190506148f16000830185614294565b6148fe6020830184614481565b9392505050565b6000815190506149148161439b565b92915050565b6000602082840312156149305761492f6142be565b5b600061493e84828501614905565b91505092915050565b600081905092915050565b50565b6000614962600083614947565b915061496d82614952565b600082019050919050565b600061498382614955565b9150819050919050565b7f5472616e73616374696f6e204661696c65642121000000000000000000000000600082015250565b60006149c36014836141b2565b91506149ce8261498d565b602082019050919050565b600060208201905081810360008301526149f2816149b6565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000614a556026836141b2565b9150614a60826149f9565b604082019050919050565b60006020820190508181036000830152614a8481614a48565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000614ac5826142ef565b9150614ad0836142ef565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615614b0957614b08614a8b565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000614b4e826142ef565b9150614b59836142ef565b925082614b6957614b68614b14565b5b828204905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b6000614bd06021836141b2565b9150614bdb82614b74565b604082019050919050565b60006020820190508181036000830152614bff81614bc3565b9050919050565b6000614c11826142ef565b9150614c1c836142ef565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115614c5157614c50614a8b565b5b828201905092915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000614c92601b836141b2565b9150614c9d82614c5c565b602082019050919050565b60006020820190508181036000830152614cc181614c85565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000614d246024836141b2565b9150614d2f82614cc8565b604082019050919050565b60006020820190508181036000830152614d5381614d17565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000614db66022836141b2565b9150614dc182614d5a565b604082019050919050565b60006020820190508181036000830152614de581614da9565b9050919050565b7f45524332303a66726f6d207a65726f0000000000000000000000000000000000600082015250565b6000614e22600f836141b2565b9150614e2d82614dec565b602082019050919050565b60006020820190508181036000830152614e5181614e15565b9050919050565b7f45524332303a746f207a65726f00000000000000000000000000000000000000600082015250565b6000614e8e600d836141b2565b9150614e9982614e58565b602082019050919050565b60006020820190508181036000830152614ebd81614e81565b9050919050565b7f496e76616c696420416d6f756e74000000000000000000000000000000000000600082015250565b6000614efa600e836141b2565b9150614f0582614ec4565b602082019050919050565b60006020820190508181036000830152614f2981614eed565b9050919050565b7f54726164696e6720697320506175736564210000000000000000000000000000600082015250565b6000614f666012836141b2565b9150614f7182614f30565b602082019050919050565b60006020820190508181036000830152614f9581614f59565b9050919050565b7f4d61782054780000000000000000000000000000000000000000000000000000600082015250565b6000614fd26006836141b2565b9150614fdd82614f9c565b602082019050919050565b6000602082019050818103600083015261500181614fc5565b9050919050565b7f4d61782057616c6c657400000000000000000000000000000000000000000000600082015250565b600061503e600a836141b2565b915061504982615008565b602082019050919050565b6000602082019050818103600083015261506d81615031565b9050919050565b600061507f826142ef565b915061508a836142ef565b92508282101561509d5761509c614a8b565b5b828203905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000819050919050565b600061512b61512661512184615106565b614407565b6142ef565b9050919050565b61513b81615110565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61517681614282565b82525050565b6000615188838361516d565b60208301905092915050565b6000602082019050919050565b60006151ac82615141565b6151b6818561514c565b93506151c18361515d565b8060005b838110156151f25781516151d9888261517c565b97506151e483615194565b9250506001810190506151c5565b5085935050505092915050565b600060a0820190506152146000830188614481565b6152216020830187615132565b818103604083015261523381866151a1565b90506152426060830185614294565b61524f6080830184614481565b9695505050505050565b600060408201905061526e6000830185614481565b818103602083015261528081846151a1565b9050939250505056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa264697066735822122094a3b9cf72e5bccce854acab4f2cfdb9064acb5f52c253d7f98fdf0c2c7b018d64736f6c634300080f0033

Deployed Bytecode Sourcemap

5842:14963:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9585:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6308:80;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10755:161;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19043:188;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7429:41;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9862:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4345:231;;;;;;;;;;;;;:::i;:::-;;11706:313;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6221:80;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11273:156;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9771:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7389:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18835:200;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10252:218;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19239:124;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6585:45;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17547:105;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7544:40;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6528:50;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19991:809;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19485:101;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7308:32;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17786:119;;;;;;;;;;;;;:::i;:::-;;18145:233;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;9970:123;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19371:106;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17660:118;;;;;;;;;;;;;:::i;:::-;;6057:75;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7142:68;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7226:65;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6696:48;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4020:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4245:92;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9676:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10478:269;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11531:167;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18632:195;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18509:111;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6139:73;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18386:115;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;19773:210;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;19594:171;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7477:26;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6637:52;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17199:130;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7070:63;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10101:143;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16983:176;;;;;;;;;;;;;:::i;:::-;;17441:98;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17337:96;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4584:244;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7347:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17913:224;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;9585:83;9622:13;9655:5;9648:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9585:83;:::o;6308:80::-;6346:42;6308:80;:::o;10755:161::-;10830:4;10847:39;10856:12;:10;:12::i;:::-;10870:7;10879:6;10847:8;:39::i;:::-;10904:4;10897:11;;10755:161;;;;:::o;19043:188::-;4164:12;:10;:12::i;:::-;4154:22;;:6;;;;;;;;;;:22;;;4146:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;19157:7:::1;19132:32;;:15;:21;19148:4;19132:21;;;;;;;;;;;;;;;;;;;;;;;;;:32;;::::0;19124:57:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;19216:7;19192:15;:21;19208:4;19192:21;;;;;;;;;;;;;;;;:31;;;;;;;;;;;;;;;;;;19043:188:::0;;:::o;7429:41::-;;;;;;;;;;;;;:::o;9862:100::-;9915:7;9942:12;;9935:19;;9862:100;:::o;4345:231::-;4164:12;:10;:12::i;:::-;4154:22;;:6;;;;;;;;;;:22;;;4146:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;4453:42:::1;4416:81;;4437:6;::::0;::::1;;;;;;;;4416:81;;;;;;;;;;;;4525:42;4508:6;::::0;:60:::1;;;;;;;;;;;;;;;;;;4345:231::o:0;11706:313::-;11804:4;11821:36;11831:6;11839:9;11850:6;11821:9;:36::i;:::-;;11868:121;11877:6;11885:12;:10;:12::i;:::-;11899:89;11937:6;11899:89;;;;;;;;;;;;;;;;;:11;:19;11911:6;11899:19;;;;;;;;;;;;;;;:33;11919:12;:10;:12::i;:::-;11899:33;;;;;;;;;;;;;;;;:37;;:89;;;;;:::i;:::-;11868:8;:121::i;:::-;12007:4;12000:11;;11706:313;;;;;:::o;6221:80::-;6259:42;6221:80;:::o;11273:156::-;11326:7;11353:68;11398:22;6346:42;11398:9;:22::i;:::-;11353:40;11370:22;6259:42;11370:9;:22::i;:::-;11353:12;;:16;;:40;;;;:::i;:::-;:44;;:68;;;;:::i;:::-;11346:75;;11273:156;:::o;9771:83::-;9812:5;9837:9;;;;;;;;;;;9830:16;;9771:83;:::o;7389:31::-;;;;;;;;;;;;;:::o;18835:200::-;4164:12;:10;:12::i;:::-;4154:22;;:6;;;;;;;;;;:22;;;4146:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;18957:7:::1;18928:36;;:19;:25;18948:4;18928:25;;;;;;;;;;;;;;;;;;;;;;;;;:36;;::::0;18920:61:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;19020:7;18992:19;:25;19012:4;18992:25;;;;;;;;;;;;;;;;:35;;;;;;;;;;;;;;;;;;18835:200:::0;;:::o;10252:218::-;10340:4;10357:83;10366:12;:10;:12::i;:::-;10380:7;10389:50;10428:10;10389:11;:25;10401:12;:10;:12::i;:::-;10389:25;;;;;;;;;;;;;;;:34;10415:7;10389:34;;;;;;;;;;;;;;;;:38;;:50;;;;:::i;:::-;10357:8;:83::i;:::-;10458:4;10451:11;;10252:218;;;;:::o;19239:124::-;4164:12;:10;:12::i;:::-;4154:22;;:6;;;;;;;;;;:22;;;4146:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;19347:8:::1;19321:23;:34;;;;19239:124:::0;:::o;6585:45::-;;;;;;;;;;;;;;;;;;;;;;:::o;17547:105::-;4164:12;:10;:12::i;:::-;4154:22;;:6;;;;;;;;;;:22;;;4146:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17637:7:::1;17618:16;;:26;;;;;;;;;;;;;;;;;;17547:105:::0;:::o;7544:40::-;;;;;;;;;;;;;:::o;6528:50::-;;;;;;;;;;;;;;;;;;;;;;:::o;19991:809::-;20073:22;4164:12;:10;:12::i;:::-;4154:22;;:6;;;;;;;;;;:22;;;4146:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;20110:35:::1;20167:16;20110:74;;20233:16;:24;;;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;20215:53;;;20277:4;20284:16;:21;;;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;20215:93;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;20198:110;;20350:1;20324:28;;:14;:28;;::::0;20321:225:::1;;20438:16;:24;;;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;20420:74;;;20503:4;20510:16;:21;;;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;20420:114;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;20403:131;;20321:225;20572:14;20558:11;;:28;;;;;;;;;;;;;;;;;;20638:16;20620:15;;:34;;;;;;;;;;;;;;;;;;20729:4;20692:12;:34;20713:11;;;;;;;;;;;20692:34;;;;;;;;;;;;;;;;:41;;;;;;;;;;;;;;;;;;20788:4;20744:19;:41;20772:11;;;;;;;;;;;20744:41;;;;;;;;;;;;;;;;:48;;;;;;;;;;;;;;;;;;20097:703;19991:809:::0;;;:::o;19485:101::-;4164:12;:10;:12::i;:::-;4154:22;;:6;;;;;;;;;;:22;;;4146:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;19570:8:::1;19555:12;:23;;;;19485:101:::0;:::o;7308:32::-;;;;;;;;;;;;;:::o;17786:119::-;4164:12;:10;:12::i;:::-;4154:22;;:6;;;;;;;;;;:22;;;4146:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17859:4:::1;17840:16;;:23;;;;;;;;;;;;;;;;;;17890:4;17874:13;;:20;;;;;;;;;;;;;;;;;;17786:119::o:0;18145:233::-;4164:12;:10;:12::i;:::-;4154:22;;:6;;;;;;;;;;:22;;;4146:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;18257:11:::1;18239:15;:29;;;;18299:10;18279:17;:30;;;;18332:38;18352:17;;18332:15;;:19;;:38;;;;:::i;:::-;18320:9;:50;;;;18145:233:::0;;:::o;9970:123::-;10036:7;10062:9;:18;10072:7;10062:18;;;;;;;;;;;;;;;;10055:25;;9970:123;;;:::o;19371:106::-;4164:12;:10;:12::i;:::-;4154:22;;:6;;;;;;;;;;:22;;;4146:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;19461:8:::1;19448:10;:21;;;;19371:106:::0;:::o;17660:118::-;4164:12;:10;:12::i;:::-;4154:22;;:6;;;;;;;;;;:22;;;4146:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17733:5:::1;17714:16;;:24;;;;;;;;;;;;;;;;;;17765:5;17749:13;;:21;;;;;;;;;;;;;;;;;;17660:118::o:0;6057:75::-;;;;;;;;;;;;;:::o;7142:68::-;;;;:::o;7226:65::-;;;;:::o;6696:48::-;;;;;;;;;;;;;;;;;;;;;;:::o;4020:79::-;4058:7;4085:6;;;;;;;;;;;4078:13;;4020:79;:::o;4245:92::-;4285:4;4323:6;;;;;;;;;;;4309:20;;:10;:20;;;4302:27;;4245:92;:::o;9676:87::-;9715:13;9748:7;9741:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9676:87;:::o;10478:269::-;10571:4;10588:129;10597:12;:10;:12::i;:::-;10611:7;10620:96;10659:15;10620:96;;;;;;;;;;;;;;;;;:11;:25;10632:12;:10;:12::i;:::-;10620:25;;;;;;;;;;;;;;;:34;10646:7;10620:34;;;;;;;;;;;;;;;;:38;;:96;;;;;:::i;:::-;10588:8;:129::i;:::-;10735:4;10728:11;;10478:269;;;;:::o;11531:167::-;11609:4;11626:42;11636:12;:10;:12::i;:::-;11650:9;11661:6;11626:9;:42::i;:::-;;11686:4;11679:11;;11531:167;;;;:::o;18632:195::-;4164:12;:10;:12::i;:::-;4154:22;;:6;;;;;;;;;;:22;;;4146:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;18751:7:::1;18724:34;;:17;:23;18742:4;18724:23;;;;;;;;;;;;;;;;;;;;;;;;;:34;;::::0;18716:59:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;18812:7;18786:17;:23;18804:4;18786:23;;;;;;;;;;;;;;;;:33;;;;;;;;;;;;;;;;;;18632:195:::0;;:::o;18509:111::-;4164:12;:10;:12::i;:::-;4154:22;;:6;;;;;;;;;;:22;;;4146:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;18602:10:::1;18586:13;;:26;;;;;;;;;;;;;;;;;;18509:111:::0;:::o;6139:73::-;;;;;;;;;;;;;:::o;18386:115::-;4164:12;:10;:12::i;:::-;4154:22;;:6;;;;;;;;;;:22;;;4146:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;18483:10:::1;18465:15;;:28;;;;;;;;;;;;;;;;;;18386:115:::0;:::o;19773:210::-;4164:12;:10;:12::i;:::-;4154:22;;:6;;;;;;;;;;:22;;;4146:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;19877:7:::1;19855:12;:19;19868:5;19855:19;;;;;;;;;;;;;;;;:29;;;;;;;;;;;;;;;;;;19898:7;19895:81;;;19960:4;19922:19;:35;19950:5;19922:35;;;;;;;;;;;;;;;;:42;;;;;;;;;;;;;;;;;;19895:81;19773:210:::0;;:::o;19594:171::-;7839:13;;;;;;;;;;;7825:27;;:10;:27;;;7817:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;19695:8:::1;19671:21;;:32;;;;;;;;;;;;;;;;;;19719:38;19748:8;19719:38;;;;;;:::i;:::-;;;;;;;;19594:171:::0;:::o;7477:26::-;;;;;;;;;;;;;:::o;6637:52::-;;;;;;;;;;;;;;;;;;;;;;:::o;17199:130::-;7839:13;;;;;;;;;;;7825:27;;:10;:27;;;7817:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;17291:3:::1;:12;;;17304:9;17314:6;17291:30;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;17199:130:::0;;;:::o;7070:63::-;;;;:::o;10101:143::-;10182:7;10209:11;:18;10221:5;10209:18;;;;;;;;;;;;;;;:27;10228:7;10209:27;;;;;;;;;;;;;;;;10202:34;;10101:143;;;;:::o;16983:176::-;7839:13;;;;;;;;;;;7825:27;;:10;:27;;;7817:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;17036:7:::1;17056:10;17048:24;;17080:21;17048:58;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17035:71;;;17125:2;17117:34;;;;;;;;;;;;:::i;:::-;;;;;;;;;17023:136;16983:176::o:0;17441:98::-;4164:12;:10;:12::i;:::-;4154:22;;:6;;;;;;;;;;:22;;;4146:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17524:7:::1;17508:13;;:23;;;;;;;;;;;;;;;;;;17441:98:::0;:::o;17337:96::-;4164:12;:10;:12::i;:::-;4154:22;;:6;;;;;;;;;;:22;;;4146:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17418:7:::1;17404:11;;:21;;;;;;;;;;;;;;;;;;17337:96:::0;:::o;4584:244::-;4164:12;:10;:12::i;:::-;4154:22;;:6;;;;;;;;;;:22;;;4146:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;4693:1:::1;4673:22;;:8;:22;;::::0;4665:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;4783:8;4754:38;;4775:6;::::0;::::1;;;;;;;;4754:38;;;;;;;;;;;;4812:8;4803:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;4584:244:::0;:::o;7347:35::-;;;;;;;;;;;;;:::o;17913:224::-;4164:12;:10;:12::i;:::-;4154:22;;:6;;;;;;;;;;:22;;;4146:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;18020:11:::1;18003:14;:28;;;;18061:10;18042:16;:29;;;;18093:36;18112:16;;18093:14;;:18;;:36;;;;:::i;:::-;18082:8;:47;;;;17913:224:::0;;:::o;3013:250::-;3071:7;3100:1;3095;:6;3091:47;;3125:1;3118:8;;;;3091:47;3150:9;3166:1;3162;:5;;;;:::i;:::-;3150:17;;3195:1;3190;3186;:5;;;;:::i;:::-;:10;3178:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;3254:1;3247:8;;;3013:250;;;;;:::o;3271:132::-;3329:7;3356:39;3360:1;3363;3356:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;3349:46;;3271:132;;;;:::o;2480:181::-;2538:7;2558:9;2574:1;2570;:5;;;;:::i;:::-;2558:17;;2599:1;2594;:6;;2586:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;2652:1;2645:8;;;2480:181;;;;:::o;1531:115::-;1584:15;1627:10;1612:26;;1531:115;:::o;10924:337::-;11034:1;11017:19;;:5;:19;;;11009:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;11115:1;11096:21;;:7;:21;;;11088:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;11199:6;11169:11;:18;11181:5;11169:18;;;;;;;;;;;;;;;:27;11188:7;11169:27;;;;;;;;;;;;;;;:36;;;;11237:7;11221:32;;11230:5;11221:32;;;11246:6;11221:32;;;;;;:::i;:::-;;;;;;;;10924:337;;;:::o;12027:1645::-;12114:4;12159:1;12141:20;;:6;:20;;;12133:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;12221:1;12200:23;;:9;:23;;;12192:49;;;;;;;;;;;;:::i;:::-;;;;;;;;;12269:1;12260:6;:10;12252:37;;;;;;;;;;;;:::i;:::-;;;;;;;;;12306:11;;;;;;;;;;;12302:130;;12341:17;:25;12359:6;12341:25;;;;;;;;;;;;;;;;;;;;;;;;;:57;;;;12370:17;:28;12388:9;12370:28;;;;;;;;;;;;;;;;;;;;;;;;;12341:57;12333:87;;;;;;;;;;;;:::i;:::-;;;;;;;;;12302:130;12447:16;;;;;;;;;;;12444:1221;;;12497:41;12512:6;12520:9;12531:6;12497:14;:41::i;:::-;12490:48;;;;12444:1221;12596:15;:23;12612:6;12596:23;;;;;;;;;;;;;;;;;;;;;;;;;12595:24;:55;;;;;12624:15;:26;12640:9;12624:26;;;;;;;;;;;;;;;;;;;;;;;;;12623:27;12595:55;:72;;;;;12654:13;;;;;;;;;;;12595:72;12592:152;;;12706:12;;12696:6;:22;;12688:40;;;;;;;;;;;;:::i;:::-;;;;;;;;;12592:152;12761:28;12792:24;12810:4;12792:9;:24::i;:::-;12761:55;;12831:28;12886:23;;12862:20;:47;;12831:78;;12942:23;:44;;;;;12970:16;;;;;;;;;;;12969:17;12942:44;:69;;;;;12991:12;:20;13004:6;12991:20;;;;;;;;;;;;;;;;;;;;;;;;;12990:21;12942:69;:94;;;;;13015:21;;;;;;;;;;;12942:94;12938:165;;;13071:16;:14;:16::i;:::-;12938:165;13139:53;13161:6;13139:53;;;;;;;;;;;;;;;;;:9;:17;13149:6;13139:17;;;;;;;;;;;;;;;;:21;;:53;;;;;:::i;:::-;13119:9;:17;13129:6;13119:17;;;;;;;;;;;;;;;:73;;;;13209:19;13231:31;13245:6;13252:9;13231:13;:31::i;:::-;:77;;13274:34;13282:6;13290:9;13301:6;13274:7;:34::i;:::-;13231:77;;;13265:6;13231:77;13209:99;;13328:16;;;;;;;;;;;:51;;;;;13349:19;:30;13369:9;13349:30;;;;;;;;;;;;;;;;;;;;;;;;;13348:31;13328:51;13325:164;;;13449:10;;13408:37;13433:11;13408:20;13418:9;13408;:20::i;:::-;:24;;:37;;;;:::i;:::-;:51;;13400:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;13325:164;13528:37;13553:11;13528:9;:20;13538:9;13528:20;;;;;;;;;;;;;;;;:24;;:37;;;;:::i;:::-;13505:9;:20;13515:9;13505:20;;;;;;;;;;;;;;;:60;;;;13604:9;13587:40;;13596:6;13587:40;;;13615:11;13587:40;;;;;;:::i;:::-;;;;;;;;13649:4;13642:11;;;;;12027:1645;;;;;;:::o;2813:192::-;2899:7;2932:1;2927;:6;;2935:12;2919:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;2959:9;2975:1;2971;:5;;;;:::i;:::-;2959:17;;2996:1;2989:8;;;2813:192;;;;;:::o;2669:136::-;2727:7;2754:43;2758:1;2761;2754:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;2747:50;;2669:136;;;;:::o;3411:278::-;3497:7;3529:1;3525;:5;3532:12;3517:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;3556:9;3572:1;3568;:5;;;;:::i;:::-;3556:17;;3680:1;3673:8;;;3411:278;;;;;:::o;13680:330::-;13773:4;13810:53;13832:6;13810:53;;;;;;;;;;;;;;;;;:9;:17;13820:6;13810:17;;;;;;;;;;;;;;;;:21;;:53;;;;;:::i;:::-;13790:9;:17;13800:6;13790:17;;;;;;;;;;;;;;;:73;;;;13897:32;13922:6;13897:9;:20;13907:9;13897:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;13874:9;:20;13884:9;13874:20;;;;;;;;;;;;;;;:55;;;;13962:9;13945:35;;13954:6;13945:35;;;13973:6;13945:35;;;;;;:::i;:::-;;;;;;;;13998:4;13991:11;;13680:330;;;;;:::o;14018:979::-;8061:4;8042:16;;:23;;;;;;;;;;;;;;;;;;14085::::1;14111:24;14129:4;14111:9;:24::i;:::-;14085:50;;14170:1;14151:15;:20:::0;14148:32:::1;;14173:7;;;14148:32;14192:23;14218:39;14239:17;;14218:16;;:20;;:39;;;;:::i;:::-;14192:65;;14343:16;14362:23;14375:9;;14362:8;;:12;;:23;;;;:::i;:::-;14343:42;;14414:1;14399:11;:16:::0;14396:28:::1;;14417:7;;;;;14396:28;14436:22;14461:21;14436:46;;14493:33;14510:15;14493:16;:33::i;:::-;14537:22;14562:41;14588:14;14562:21;:25;;:41;;;;:::i;:::-;14537:66;;14616:26;14645:52;14685:11;14645:35;14664:15;14645:14;:18;;:35;;;;:::i;:::-;:39;;:52;;;;:::i;:::-;14616:81;;14708:24;14735:38;14754:18;14735:14;:18;;:38;;;;:::i;:::-;14708:65;;14810:1;14789:18;:22;14786:97;;;14827:56;14848:15;;;;;;;;;;;14864:18;14827:20;:56::i;:::-;14786:97;14918:1;14899:16;:20;14896:91;;;14935:52;14956:13;;;;;;;;;;;14970:16;14935:20;:52::i;:::-;14896:91;14064:933;;;;;;;8076:1;8107:5:::0;8088:16;;:24;;;;;;;;;;;;;;;;;;14018:979::o;15818:366::-;15899:4;15919:17;:25;15937:6;15919:25;;;;;;;;;;;;;;;;;;;;;;;;;:57;;;;15948:17;:28;15966:9;15948:28;;;;;;;;;;;;;;;;;;;;;;;;;15919:57;15916:261;;;16000:4;15993:11;;;;15916:261;16035:12;:20;16048:6;16035:20;;;;;;;;;;;;;;;;;;;;;;;;;:47;;;;16059:12;:23;16072:9;16059:23;;;;;;;;;;;;;;;;;;;;;;;;;16035:47;16031:146;;;16106:5;16099:12;;;;16031:146;16160:5;16153:12;;15818:366;;;;;:::o;16192:750::-;16278:7;16308:14;16373:12;:20;16386:6;16373:20;;;;;;;;;;;;;;;;;;;;;;;;;16370:293;;;16428:37;6987:4;16428:20;16439:8;;16428:6;:10;;:20;;;;:::i;:::-;:24;;:37;;;;:::i;:::-;16416:49;;16370:293;;;16517:12;:23;16530:9;16517:23;;;;;;;;;;;;;;;;;;;;;;;;;16514:149;;;16591:38;6987:4;16591:21;16602:9;;16591:6;:10;;:21;;;;:::i;:::-;:25;;:38;;;;:::i;:::-;16579:50;;16514:149;16370:293;16699:1;16687:9;:13;16684:185;;;16748:39;16777:9;16748;:24;16766:4;16748:24;;;;;;;;;;;;;;;;:28;;:39;;;;:::i;:::-;16721:9;:24;16739:4;16721:24;;;;;;;;;;;;;;;:66;;;;16836:4;16811:42;;16820:6;16811:42;;;16843:9;16811:42;;;;;;:::i;:::-;;;;;;;;16684:185;16892:21;16903:9;16892:6;:10;;:21;;;;:::i;:::-;16885:28;;;16192:750;;;;;:::o;15144:666::-;15270:21;15308:1;15294:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15270:40;;15339:4;15321;15326:1;15321:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;15365:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;15355:4;15360:1;15355:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;;;15400:62;15417:4;15432:15;;;;;;;;;;;15450:11;15400:8;:62::i;:::-;15501:15;;;;;;;;;;;:66;;;15582:11;15608:1;15652:4;15679;15715:15;15501:240;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15767:35;15784:11;15797:4;15767:35;;;;;;;:::i;:::-;;;;;;;;15199:611;15144:666;:::o;15005:127::-;15097:9;15089:27;;:35;15117:6;15089:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15005:127;;:::o;7:99:1:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:307::-;355:1;365:113;379:6;376:1;373:13;365:113;;;464:1;459:3;455:11;449:18;445:1;440:3;436:11;429:39;401:2;398:1;394:10;389:15;;365:113;;;496:6;493:1;490:13;487:101;;;576:1;567:6;562:3;558:16;551:27;487:101;336:258;287:307;;;:::o;600:102::-;641:6;692:2;688:7;683:2;676:5;672:14;668:28;658:38;;600:102;;;:::o;708:364::-;796:3;824:39;857:5;824:39;:::i;:::-;879:71;943:6;938:3;879:71;:::i;:::-;872:78;;959:52;1004:6;999:3;992:4;985:5;981:16;959:52;:::i;:::-;1036:29;1058:6;1036:29;:::i;:::-;1031:3;1027:39;1020:46;;800:272;708:364;;;;:::o;1078:313::-;1191:4;1229:2;1218:9;1214:18;1206:26;;1278:9;1272:4;1268:20;1264:1;1253:9;1249:17;1242:47;1306:78;1379:4;1370:6;1306:78;:::i;:::-;1298:86;;1078:313;;;;:::o;1397:126::-;1434:7;1474:42;1467:5;1463:54;1452:65;;1397:126;;;:::o;1529:96::-;1566:7;1595:24;1613:5;1595:24;:::i;:::-;1584:35;;1529:96;;;:::o;1631:118::-;1718:24;1736:5;1718:24;:::i;:::-;1713:3;1706:37;1631:118;;:::o;1755:222::-;1848:4;1886:2;1875:9;1871:18;1863:26;;1899:71;1967:1;1956:9;1952:17;1943:6;1899:71;:::i;:::-;1755:222;;;;:::o;2064:117::-;2173:1;2170;2163:12;2310:122;2383:24;2401:5;2383:24;:::i;:::-;2376:5;2373:35;2363:63;;2422:1;2419;2412:12;2363:63;2310:122;:::o;2438:139::-;2484:5;2522:6;2509:20;2500:29;;2538:33;2565:5;2538:33;:::i;:::-;2438:139;;;;:::o;2583:77::-;2620:7;2649:5;2638:16;;2583:77;;;:::o;2666:122::-;2739:24;2757:5;2739:24;:::i;:::-;2732:5;2729:35;2719:63;;2778:1;2775;2768:12;2719:63;2666:122;:::o;2794:139::-;2840:5;2878:6;2865:20;2856:29;;2894:33;2921:5;2894:33;:::i;:::-;2794:139;;;;:::o;2939:474::-;3007:6;3015;3064:2;3052:9;3043:7;3039:23;3035:32;3032:119;;;3070:79;;:::i;:::-;3032:119;3190:1;3215:53;3260:7;3251:6;3240:9;3236:22;3215:53;:::i;:::-;3205:63;;3161:117;3317:2;3343:53;3388:7;3379:6;3368:9;3364:22;3343:53;:::i;:::-;3333:63;;3288:118;2939:474;;;;;:::o;3419:90::-;3453:7;3496:5;3489:13;3482:21;3471:32;;3419:90;;;:::o;3515:109::-;3596:21;3611:5;3596:21;:::i;:::-;3591:3;3584:34;3515:109;;:::o;3630:210::-;3717:4;3755:2;3744:9;3740:18;3732:26;;3768:65;3830:1;3819:9;3815:17;3806:6;3768:65;:::i;:::-;3630:210;;;;:::o;3846:116::-;3916:21;3931:5;3916:21;:::i;:::-;3909:5;3906:32;3896:60;;3952:1;3949;3942:12;3896:60;3846:116;:::o;3968:133::-;4011:5;4049:6;4036:20;4027:29;;4065:30;4089:5;4065:30;:::i;:::-;3968:133;;;;:::o;4107:468::-;4172:6;4180;4229:2;4217:9;4208:7;4204:23;4200:32;4197:119;;;4235:79;;:::i;:::-;4197:119;4355:1;4380:53;4425:7;4416:6;4405:9;4401:22;4380:53;:::i;:::-;4370:63;;4326:117;4482:2;4508:50;4550:7;4541:6;4530:9;4526:22;4508:50;:::i;:::-;4498:60;;4453:115;4107:468;;;;;:::o;4581:60::-;4609:3;4630:5;4623:12;;4581:60;;;:::o;4647:142::-;4697:9;4730:53;4748:34;4757:24;4775:5;4757:24;:::i;:::-;4748:34;:::i;:::-;4730:53;:::i;:::-;4717:66;;4647:142;;;:::o;4795:126::-;4845:9;4878:37;4909:5;4878:37;:::i;:::-;4865:50;;4795:126;;;:::o;4927:152::-;5003:9;5036:37;5067:5;5036:37;:::i;:::-;5023:50;;4927:152;;;:::o;5085:183::-;5198:63;5255:5;5198:63;:::i;:::-;5193:3;5186:76;5085:183;;:::o;5274:274::-;5393:4;5431:2;5420:9;5416:18;5408:26;;5444:97;5538:1;5527:9;5523:17;5514:6;5444:97;:::i;:::-;5274:274;;;;:::o;5554:118::-;5641:24;5659:5;5641:24;:::i;:::-;5636:3;5629:37;5554:118;;:::o;5678:222::-;5771:4;5809:2;5798:9;5794:18;5786:26;;5822:71;5890:1;5879:9;5875:17;5866:6;5822:71;:::i;:::-;5678:222;;;;:::o;5906:619::-;5983:6;5991;5999;6048:2;6036:9;6027:7;6023:23;6019:32;6016:119;;;6054:79;;:::i;:::-;6016:119;6174:1;6199:53;6244:7;6235:6;6224:9;6220:22;6199:53;:::i;:::-;6189:63;;6145:117;6301:2;6327:53;6372:7;6363:6;6352:9;6348:22;6327:53;:::i;:::-;6317:63;;6272:118;6429:2;6455:53;6500:7;6491:6;6480:9;6476:22;6455:53;:::i;:::-;6445:63;;6400:118;5906:619;;;;;:::o;6531:86::-;6566:7;6606:4;6599:5;6595:16;6584:27;;6531:86;;;:::o;6623:112::-;6706:22;6722:5;6706:22;:::i;:::-;6701:3;6694:35;6623:112;;:::o;6741:214::-;6830:4;6868:2;6857:9;6853:18;6845:26;;6881:67;6945:1;6934:9;6930:17;6921:6;6881:67;:::i;:::-;6741:214;;;;:::o;6961:329::-;7020:6;7069:2;7057:9;7048:7;7044:23;7040:32;7037:119;;;7075:79;;:::i;:::-;7037:119;7195:1;7220:53;7265:7;7256:6;7245:9;7241:22;7220:53;:::i;:::-;7210:63;;7166:117;6961:329;;;;:::o;7296:::-;7355:6;7404:2;7392:9;7383:7;7379:23;7375:32;7372:119;;;7410:79;;:::i;:::-;7372:119;7530:1;7555:53;7600:7;7591:6;7580:9;7576:22;7555:53;:::i;:::-;7545:63;;7501:117;7296:329;;;;:::o;7631:323::-;7687:6;7736:2;7724:9;7715:7;7711:23;7707:32;7704:119;;;7742:79;;:::i;:::-;7704:119;7862:1;7887:50;7929:7;7920:6;7909:9;7905:22;7887:50;:::i;:::-;7877:60;;7833:114;7631:323;;;;:::o;7960:474::-;8028:6;8036;8085:2;8073:9;8064:7;8060:23;8056:32;8053:119;;;8091:79;;:::i;:::-;8053:119;8211:1;8236:53;8281:7;8272:6;8261:9;8257:22;8236:53;:::i;:::-;8226:63;;8182:117;8338:2;8364:53;8409:7;8400:6;8389:9;8385:22;8364:53;:::i;:::-;8354:63;;8309:118;7960:474;;;;;:::o;8440:109::-;8490:7;8519:24;8537:5;8519:24;:::i;:::-;8508:35;;8440:109;;;:::o;8555:148::-;8641:37;8672:5;8641:37;:::i;:::-;8634:5;8631:48;8621:76;;8693:1;8690;8683:12;8621:76;8555:148;:::o;8709:165::-;8768:5;8806:6;8793:20;8784:29;;8822:46;8862:5;8822:46;:::i;:::-;8709:165;;;;:::o;8880:645::-;8970:6;8978;8986;9035:2;9023:9;9014:7;9010:23;9006:32;9003:119;;;9041:79;;:::i;:::-;9003:119;9161:1;9186:66;9244:7;9235:6;9224:9;9220:22;9186:66;:::i;:::-;9176:76;;9132:130;9301:2;9327:53;9372:7;9363:6;9352:9;9348:22;9327:53;:::i;:::-;9317:63;;9272:118;9429:2;9455:53;9500:7;9491:6;9480:9;9476:22;9455:53;:::i;:::-;9445:63;;9400:118;8880:645;;;;;:::o;9531:474::-;9599:6;9607;9656:2;9644:9;9635:7;9631:23;9627:32;9624:119;;;9662:79;;:::i;:::-;9624:119;9782:1;9807:53;9852:7;9843:6;9832:9;9828:22;9807:53;:::i;:::-;9797:63;;9753:117;9909:2;9935:53;9980:7;9971:6;9960:9;9956:22;9935:53;:::i;:::-;9925:63;;9880:118;9531:474;;;;;:::o;10011:180::-;10059:77;10056:1;10049:88;10156:4;10153:1;10146:15;10180:4;10177:1;10170:15;10197:320;10241:6;10278:1;10272:4;10268:12;10258:22;;10325:1;10319:4;10315:12;10346:18;10336:81;;10402:4;10394:6;10390:17;10380:27;;10336:81;10464:2;10456:6;10453:14;10433:18;10430:38;10427:84;;10483:18;;:::i;:::-;10427:84;10248:269;10197:320;;;:::o;10523:182::-;10663:34;10659:1;10651:6;10647:14;10640:58;10523:182;:::o;10711:366::-;10853:3;10874:67;10938:2;10933:3;10874:67;:::i;:::-;10867:74;;10950:93;11039:3;10950:93;:::i;:::-;11068:2;11063:3;11059:12;11052:19;;10711:366;;;:::o;11083:419::-;11249:4;11287:2;11276:9;11272:18;11264:26;;11336:9;11330:4;11326:20;11322:1;11311:9;11307:17;11300:47;11364:131;11490:4;11364:131;:::i;:::-;11356:139;;11083:419;;;:::o;11508:163::-;11648:15;11644:1;11636:6;11632:14;11625:39;11508:163;:::o;11677:366::-;11819:3;11840:67;11904:2;11899:3;11840:67;:::i;:::-;11833:74;;11916:93;12005:3;11916:93;:::i;:::-;12034:2;12029:3;12025:12;12018:19;;11677:366;;;:::o;12049:419::-;12215:4;12253:2;12242:9;12238:18;12230:26;;12302:9;12296:4;12292:20;12288:1;12277:9;12273:17;12266:47;12330:131;12456:4;12330:131;:::i;:::-;12322:139;;12049:419;;;:::o;12474:143::-;12531:5;12562:6;12556:13;12547:22;;12578:33;12605:5;12578:33;:::i;:::-;12474:143;;;;:::o;12623:351::-;12693:6;12742:2;12730:9;12721:7;12717:23;12713:32;12710:119;;;12748:79;;:::i;:::-;12710:119;12868:1;12893:64;12949:7;12940:6;12929:9;12925:22;12893:64;:::i;:::-;12883:74;;12839:128;12623:351;;;;:::o;12980:332::-;13101:4;13139:2;13128:9;13124:18;13116:26;;13152:71;13220:1;13209:9;13205:17;13196:6;13152:71;:::i;:::-;13233:72;13301:2;13290:9;13286:18;13277:6;13233:72;:::i;:::-;12980:332;;;;;:::o;13318:180::-;13458:32;13454:1;13446:6;13442:14;13435:56;13318:180;:::o;13504:366::-;13646:3;13667:67;13731:2;13726:3;13667:67;:::i;:::-;13660:74;;13743:93;13832:3;13743:93;:::i;:::-;13861:2;13856:3;13852:12;13845:19;;13504:366;;;:::o;13876:419::-;14042:4;14080:2;14069:9;14065:18;14057:26;;14129:9;14123:4;14119:20;14115:1;14104:9;14100:17;14093:47;14157:131;14283:4;14157:131;:::i;:::-;14149:139;;13876:419;;;:::o;14301:332::-;14422:4;14460:2;14449:9;14445:18;14437:26;;14473:71;14541:1;14530:9;14526:17;14517:6;14473:71;:::i;:::-;14554:72;14622:2;14611:9;14607:18;14598:6;14554:72;:::i;:::-;14301:332;;;;;:::o;14639:137::-;14693:5;14724:6;14718:13;14709:22;;14740:30;14764:5;14740:30;:::i;:::-;14639:137;;;;:::o;14782:345::-;14849:6;14898:2;14886:9;14877:7;14873:23;14869:32;14866:119;;;14904:79;;:::i;:::-;14866:119;15024:1;15049:61;15102:7;15093:6;15082:9;15078:22;15049:61;:::i;:::-;15039:71;;14995:125;14782:345;;;;:::o;15133:147::-;15234:11;15271:3;15256:18;;15133:147;;;;:::o;15286:114::-;;:::o;15406:398::-;15565:3;15586:83;15667:1;15662:3;15586:83;:::i;:::-;15579:90;;15678:93;15767:3;15678:93;:::i;:::-;15796:1;15791:3;15787:11;15780:18;;15406:398;;;:::o;15810:379::-;15994:3;16016:147;16159:3;16016:147;:::i;:::-;16009:154;;16180:3;16173:10;;15810:379;;;:::o;16195:170::-;16335:22;16331:1;16323:6;16319:14;16312:46;16195:170;:::o;16371:366::-;16513:3;16534:67;16598:2;16593:3;16534:67;:::i;:::-;16527:74;;16610:93;16699:3;16610:93;:::i;:::-;16728:2;16723:3;16719:12;16712:19;;16371:366;;;:::o;16743:419::-;16909:4;16947:2;16936:9;16932:18;16924:26;;16996:9;16990:4;16986:20;16982:1;16971:9;16967:17;16960:47;17024:131;17150:4;17024:131;:::i;:::-;17016:139;;16743:419;;;:::o;17168:225::-;17308:34;17304:1;17296:6;17292:14;17285:58;17377:8;17372:2;17364:6;17360:15;17353:33;17168:225;:::o;17399:366::-;17541:3;17562:67;17626:2;17621:3;17562:67;:::i;:::-;17555:74;;17638:93;17727:3;17638:93;:::i;:::-;17756:2;17751:3;17747:12;17740:19;;17399:366;;;:::o;17771:419::-;17937:4;17975:2;17964:9;17960:18;17952:26;;18024:9;18018:4;18014:20;18010:1;17999:9;17995:17;17988:47;18052:131;18178:4;18052:131;:::i;:::-;18044:139;;17771:419;;;:::o;18196:180::-;18244:77;18241:1;18234:88;18341:4;18338:1;18331:15;18365:4;18362:1;18355:15;18382:348;18422:7;18445:20;18463:1;18445:20;:::i;:::-;18440:25;;18479:20;18497:1;18479:20;:::i;:::-;18474:25;;18667:1;18599:66;18595:74;18592:1;18589:81;18584:1;18577:9;18570:17;18566:105;18563:131;;;18674:18;;:::i;:::-;18563:131;18722:1;18719;18715:9;18704:20;;18382:348;;;;:::o;18736:180::-;18784:77;18781:1;18774:88;18881:4;18878:1;18871:15;18905:4;18902:1;18895:15;18922:185;18962:1;18979:20;18997:1;18979:20;:::i;:::-;18974:25;;19013:20;19031:1;19013:20;:::i;:::-;19008:25;;19052:1;19042:35;;19057:18;;:::i;:::-;19042:35;19099:1;19096;19092:9;19087:14;;18922:185;;;;:::o;19113:220::-;19253:34;19249:1;19241:6;19237:14;19230:58;19322:3;19317:2;19309:6;19305:15;19298:28;19113:220;:::o;19339:366::-;19481:3;19502:67;19566:2;19561:3;19502:67;:::i;:::-;19495:74;;19578:93;19667:3;19578:93;:::i;:::-;19696:2;19691:3;19687:12;19680:19;;19339:366;;;:::o;19711:419::-;19877:4;19915:2;19904:9;19900:18;19892:26;;19964:9;19958:4;19954:20;19950:1;19939:9;19935:17;19928:47;19992:131;20118:4;19992:131;:::i;:::-;19984:139;;19711:419;;;:::o;20136:305::-;20176:3;20195:20;20213:1;20195:20;:::i;:::-;20190:25;;20229:20;20247:1;20229:20;:::i;:::-;20224:25;;20383:1;20315:66;20311:74;20308:1;20305:81;20302:107;;;20389:18;;:::i;:::-;20302:107;20433:1;20430;20426:9;20419:16;;20136:305;;;;:::o;20447:177::-;20587:29;20583:1;20575:6;20571:14;20564:53;20447:177;:::o;20630:366::-;20772:3;20793:67;20857:2;20852:3;20793:67;:::i;:::-;20786:74;;20869:93;20958:3;20869:93;:::i;:::-;20987:2;20982:3;20978:12;20971:19;;20630:366;;;:::o;21002:419::-;21168:4;21206:2;21195:9;21191:18;21183:26;;21255:9;21249:4;21245:20;21241:1;21230:9;21226:17;21219:47;21283:131;21409:4;21283:131;:::i;:::-;21275:139;;21002:419;;;:::o;21427:223::-;21567:34;21563:1;21555:6;21551:14;21544:58;21636:6;21631:2;21623:6;21619:15;21612:31;21427:223;:::o;21656:366::-;21798:3;21819:67;21883:2;21878:3;21819:67;:::i;:::-;21812:74;;21895:93;21984:3;21895:93;:::i;:::-;22013:2;22008:3;22004:12;21997:19;;21656:366;;;:::o;22028:419::-;22194:4;22232:2;22221:9;22217:18;22209:26;;22281:9;22275:4;22271:20;22267:1;22256:9;22252:17;22245:47;22309:131;22435:4;22309:131;:::i;:::-;22301:139;;22028:419;;;:::o;22453:221::-;22593:34;22589:1;22581:6;22577:14;22570:58;22662:4;22657:2;22649:6;22645:15;22638:29;22453:221;:::o;22680:366::-;22822:3;22843:67;22907:2;22902:3;22843:67;:::i;:::-;22836:74;;22919:93;23008:3;22919:93;:::i;:::-;23037:2;23032:3;23028:12;23021:19;;22680:366;;;:::o;23052:419::-;23218:4;23256:2;23245:9;23241:18;23233:26;;23305:9;23299:4;23295:20;23291:1;23280:9;23276:17;23269:47;23333:131;23459:4;23333:131;:::i;:::-;23325:139;;23052:419;;;:::o;23477:165::-;23617:17;23613:1;23605:6;23601:14;23594:41;23477:165;:::o;23648:366::-;23790:3;23811:67;23875:2;23870:3;23811:67;:::i;:::-;23804:74;;23887:93;23976:3;23887:93;:::i;:::-;24005:2;24000:3;23996:12;23989:19;;23648:366;;;:::o;24020:419::-;24186:4;24224:2;24213:9;24209:18;24201:26;;24273:9;24267:4;24263:20;24259:1;24248:9;24244:17;24237:47;24301:131;24427:4;24301:131;:::i;:::-;24293:139;;24020:419;;;:::o;24445:163::-;24585:15;24581:1;24573:6;24569:14;24562:39;24445:163;:::o;24614:366::-;24756:3;24777:67;24841:2;24836:3;24777:67;:::i;:::-;24770:74;;24853:93;24942:3;24853:93;:::i;:::-;24971:2;24966:3;24962:12;24955:19;;24614:366;;;:::o;24986:419::-;25152:4;25190:2;25179:9;25175:18;25167:26;;25239:9;25233:4;25229:20;25225:1;25214:9;25210:17;25203:47;25267:131;25393:4;25267:131;:::i;:::-;25259:139;;24986:419;;;:::o;25411:164::-;25551:16;25547:1;25539:6;25535:14;25528:40;25411:164;:::o;25581:366::-;25723:3;25744:67;25808:2;25803:3;25744:67;:::i;:::-;25737:74;;25820:93;25909:3;25820:93;:::i;:::-;25938:2;25933:3;25929:12;25922:19;;25581:366;;;:::o;25953:419::-;26119:4;26157:2;26146:9;26142:18;26134:26;;26206:9;26200:4;26196:20;26192:1;26181:9;26177:17;26170:47;26234:131;26360:4;26234:131;:::i;:::-;26226:139;;25953:419;;;:::o;26378:168::-;26518:20;26514:1;26506:6;26502:14;26495:44;26378:168;:::o;26552:366::-;26694:3;26715:67;26779:2;26774:3;26715:67;:::i;:::-;26708:74;;26791:93;26880:3;26791:93;:::i;:::-;26909:2;26904:3;26900:12;26893:19;;26552:366;;;:::o;26924:419::-;27090:4;27128:2;27117:9;27113:18;27105:26;;27177:9;27171:4;27167:20;27163:1;27152:9;27148:17;27141:47;27205:131;27331:4;27205:131;:::i;:::-;27197:139;;26924:419;;;:::o;27349:156::-;27489:8;27485:1;27477:6;27473:14;27466:32;27349:156;:::o;27511:365::-;27653:3;27674:66;27738:1;27733:3;27674:66;:::i;:::-;27667:73;;27749:93;27838:3;27749:93;:::i;:::-;27867:2;27862:3;27858:12;27851:19;;27511:365;;;:::o;27882:419::-;28048:4;28086:2;28075:9;28071:18;28063:26;;28135:9;28129:4;28125:20;28121:1;28110:9;28106:17;28099:47;28163:131;28289:4;28163:131;:::i;:::-;28155:139;;27882:419;;;:::o;28307:160::-;28447:12;28443:1;28435:6;28431:14;28424:36;28307:160;:::o;28473:366::-;28615:3;28636:67;28700:2;28695:3;28636:67;:::i;:::-;28629:74;;28712:93;28801:3;28712:93;:::i;:::-;28830:2;28825:3;28821:12;28814:19;;28473:366;;;:::o;28845:419::-;29011:4;29049:2;29038:9;29034:18;29026:26;;29098:9;29092:4;29088:20;29084:1;29073:9;29069:17;29062:47;29126:131;29252:4;29126:131;:::i;:::-;29118:139;;28845:419;;;:::o;29270:191::-;29310:4;29330:20;29348:1;29330:20;:::i;:::-;29325:25;;29364:20;29382:1;29364:20;:::i;:::-;29359:25;;29403:1;29400;29397:8;29394:34;;;29408:18;;:::i;:::-;29394:34;29453:1;29450;29446:9;29438:17;;29270:191;;;;:::o;29467:180::-;29515:77;29512:1;29505:88;29612:4;29609:1;29602:15;29636:4;29633:1;29626:15;29653:180;29701:77;29698:1;29691:88;29798:4;29795:1;29788:15;29822:4;29819:1;29812:15;29839:85;29884:7;29913:5;29902:16;;29839:85;;;:::o;29930:158::-;29988:9;30021:61;30039:42;30048:32;30074:5;30048:32;:::i;:::-;30039:42;:::i;:::-;30021:61;:::i;:::-;30008:74;;29930:158;;;:::o;30094:147::-;30189:45;30228:5;30189:45;:::i;:::-;30184:3;30177:58;30094:147;;:::o;30247:114::-;30314:6;30348:5;30342:12;30332:22;;30247:114;;;:::o;30367:184::-;30466:11;30500:6;30495:3;30488:19;30540:4;30535:3;30531:14;30516:29;;30367:184;;;;:::o;30557:132::-;30624:4;30647:3;30639:11;;30677:4;30672:3;30668:14;30660:22;;30557:132;;;:::o;30695:108::-;30772:24;30790:5;30772:24;:::i;:::-;30767:3;30760:37;30695:108;;:::o;30809:179::-;30878:10;30899:46;30941:3;30933:6;30899:46;:::i;:::-;30977:4;30972:3;30968:14;30954:28;;30809:179;;;;:::o;30994:113::-;31064:4;31096;31091:3;31087:14;31079:22;;30994:113;;;:::o;31143:732::-;31262:3;31291:54;31339:5;31291:54;:::i;:::-;31361:86;31440:6;31435:3;31361:86;:::i;:::-;31354:93;;31471:56;31521:5;31471:56;:::i;:::-;31550:7;31581:1;31566:284;31591:6;31588:1;31585:13;31566:284;;;31667:6;31661:13;31694:63;31753:3;31738:13;31694:63;:::i;:::-;31687:70;;31780:60;31833:6;31780:60;:::i;:::-;31770:70;;31626:224;31613:1;31610;31606:9;31601:14;;31566:284;;;31570:14;31866:3;31859:10;;31267:608;;;31143:732;;;;:::o;31881:831::-;32144:4;32182:3;32171:9;32167:19;32159:27;;32196:71;32264:1;32253:9;32249:17;32240:6;32196:71;:::i;:::-;32277:80;32353:2;32342:9;32338:18;32329:6;32277:80;:::i;:::-;32404:9;32398:4;32394:20;32389:2;32378:9;32374:18;32367:48;32432:108;32535:4;32526:6;32432:108;:::i;:::-;32424:116;;32550:72;32618:2;32607:9;32603:18;32594:6;32550:72;:::i;:::-;32632:73;32700:3;32689:9;32685:19;32676:6;32632:73;:::i;:::-;31881:831;;;;;;;;:::o;32718:483::-;32889:4;32927:2;32916:9;32912:18;32904:26;;32940:71;33008:1;32997:9;32993:17;32984:6;32940:71;:::i;:::-;33058:9;33052:4;33048:20;33043:2;33032:9;33028:18;33021:48;33086:108;33189:4;33180:6;33086:108;:::i;:::-;33078:116;;32718:483;;;;;:::o

Swarm Source

ipfs://94a3b9cf72e5bccce854acab4f2cfdb9064acb5f52c253d7f98fdf0c2c7b018d

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

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  ]
[ 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.