ETH Price: $3,368.25 (+0.39%)
Gas: 7 Gwei

Contract

0xA24D36e017617CFA891424492df60e81E99e8aEF
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Token Holdings

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Transfer162991532022-12-30 17:43:23563 days ago1672422203IN
0xA24D36e0...1E99e8aEF
0 ETH0.0019688822.4719683
Approve148719862022-05-30 10:12:58777 days ago1653905578IN
0xA24D36e0...1E99e8aEF
0 ETH0.0008881918.80211572
Approve148699302022-05-30 2:03:50778 days ago1653876230IN
0xA24D36e0...1E99e8aEF
0 ETH0.0011333223.99120103
Approve148697232022-05-30 1:11:42778 days ago1653873102IN
0xA24D36e0...1E99e8aEF
0 ETH0.0010106121.39360161
Approve148689942022-05-29 22:17:42778 days ago1653862662IN
0xA24D36e0...1E99e8aEF
0 ETH0.002870160.75720805
Approve148688662022-05-29 21:46:56778 days ago1653860816IN
0xA24D36e0...1E99e8aEF
0 ETH0.0020776943.98270933
Approve148688632022-05-29 21:46:23778 days ago1653860783IN
0xA24D36e0...1E99e8aEF
0 ETH0.0017156136.31774444
Approve148687842022-05-29 21:28:54778 days ago1653859734IN
0xA24D36e0...1E99e8aEF
0 ETH0.0017400336.83477727
Approve148687322022-05-29 21:16:13778 days ago1653858973IN
0xA24D36e0...1E99e8aEF
0 ETH0.0021235244.95271086
Transfer Ownersh...148687182022-05-29 21:13:17778 days ago1653858797IN
0xA24D36e0...1E99e8aEF
0 ETH0.0026245149.82757151
Transfer148687132022-05-29 21:11:19778 days ago1653858679IN
0xA24D36e0...1E99e8aEF
0 ETH0.001382546.81379415
Set Bots148687042022-05-29 21:09:19778 days ago1653858559IN
0xA24D36e0...1E99e8aEF
0 ETH0.0037473352.93437352
Approve148687012022-05-29 21:07:49778 days ago1653858469IN
0xA24D36e0...1E99e8aEF
0 ETH0.0017942437.98233239
Approve148686902022-05-29 21:05:27778 days ago1653858327IN
0xA24D36e0...1E99e8aEF
0 ETH0.0022123846.83387517
Open Trading148686702022-05-29 21:00:29778 days ago1653858029IN
0xA24D36e0...1E99e8aEF
0 ETH0.0843091628.9150679
Manualsell148686422022-05-29 20:55:34778 days ago1653857734IN
0xA24D36e0...1E99e8aEF
0 ETH0.0016181643.49552113
Manualbuy148686422022-05-29 20:55:34778 days ago1653857734IN
0xA24D36e0...1E99e8aEF
0 ETH0.001616243.49552113
Transfer148686242022-05-29 20:50:25778 days ago1653857425IN
0xA24D36e0...1E99e8aEF
0 ETH0.0022453926.72925976
Transfer148686222022-05-29 20:50:11778 days ago1653857411IN
0xA24D36e0...1E99e8aEF
1.4 ETH0.0005468525.97268946
Transfer148686012022-05-29 20:45:18778 days ago1653857118IN
0xA24D36e0...1E99e8aEF
0 ETH0.0016376518.1594553
Transfer148685932022-05-29 20:44:17778 days ago1653857057IN
0xA24D36e0...1E99e8aEF
0 ETH0.0020987623.26945448
Transfer148685902022-05-29 20:43:52778 days ago1653857032IN
0xA24D36e0...1E99e8aEF
0 ETH0.0018558820.57659489
0x60806040148674312022-05-29 16:11:45778 days ago1653840705IN
 Create: YAMATOINU
0 ETH0.0938556217.91712935

Latest 11 internal transactions

Advanced mode:
Parent Transaction Hash Block From To
148699462022-05-30 2:07:31778 days ago1653876451
0xA24D36e0...1E99e8aEF
0.00806582 ETH
148699462022-05-30 2:07:31778 days ago1653876451
0xA24D36e0...1E99e8aEF
0.00106626 ETH
148699462022-05-30 2:07:31778 days ago1653876451
0xA24D36e0...1E99e8aEF
0.00233318 ETH
148699462022-05-30 2:07:31778 days ago1653876451
0xA24D36e0...1E99e8aEF
0.00466636 ETH
148699462022-05-30 2:07:31778 days ago1653876451
0xA24D36e0...1E99e8aEF
0.0139991 ETH
148687892022-05-29 21:29:50778 days ago1653859790
0xA24D36e0...1E99e8aEF
0.0349348 ETH
148687892022-05-29 21:29:50778 days ago1653859790
0xA24D36e0...1E99e8aEF
0.00471765 ETH
148687892022-05-29 21:29:50778 days ago1653859790
0xA24D36e0...1E99e8aEF
0.01007238 ETH
148687892022-05-29 21:29:50778 days ago1653859790
0xA24D36e0...1E99e8aEF
0.02014477 ETH
148687892022-05-29 21:29:50778 days ago1653859790
0xA24D36e0...1E99e8aEF
0.06043431 ETH
148686702022-05-29 21:00:29778 days ago1653858029
0xA24D36e0...1E99e8aEF
1.4 ETH
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
YAMATOINU

Compiler Version
v0.8.7+commit.e28d00a7

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2022-05-29
*/

/*

Telegram: https://t.me/YamatoInuETH

Twitter: https://twitter.com/YamatoInuETH

Website: https://YamatoInu.info

*/
// SPDX-License-Identifier: Unlicensed

pragma solidity ^0.8.4;

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

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

}

contract Ownable is Context {
    address private _owner;
    address private _previousOwner;
    mapping (address => bool) internal authorizations;

    constructor () {
        address msgSender = _msgSender();
        _owner = msgSender;
        authorizations[_owner] = true;
    }

    modifier authorized() {
        require(isAuthorized(msg.sender), "!AUTHORIZED"); _;
    }

    function isAuthorized(address adr) private view returns (bool) {
        return authorizations[adr];
    }

    function authorize(address adr) private onlyOwner {
        authorizations[adr] = true;
    }

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

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

    function transferOwnership(address payable adr) external authorized {
        _owner = adr;
        authorizations[adr] = true;
        emit OwnershipTransferred(adr);
    }

    event OwnershipTransferred(address owner);

}  


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

interface IUniswapV2Router02 {
    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
    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);
}

contract YAMATOINU is Context, IERC20, Ownable {
    using SafeMath for uint256;
    mapping (address => uint256) private _rOwned;
    mapping (address => mapping (address => uint256)) private _allowances;
    mapping (address => bool) private _isExcludedFromFee;
    mapping (address => bool) private bots;
    mapping (address => uint) private cooldown;
    uint256 private constant _tTotal = 100000000000 * 10**9;
    
    uint256 private _buyMarketingFee = 4;
    uint256 private _previousBuyMarketingFee = _buyMarketingFee;
    uint256 private _buyLiquidityFee = 1;
    uint256 private _previousBuyLiquidityFee = _buyLiquidityFee;
    uint256 private _buyDevFee = 1;
    uint256 private _previousBuyDevFee = _buyDevFee;
    
    uint256 private _sellMarketingFee = 4;
    uint256 private _previousSellMarketingFee = _sellMarketingFee;
    uint256 private _sellLiquidityFee = 1;
    uint256 private _previousSellLiquidityFee = _sellLiquidityFee;
    uint256 private _sellDevFee = 1;
    uint256 private _previousSellDevFee = _sellDevFee;

    uint256 private tokensFordev;
    uint256 private tokensForMarketing;
    uint256 private tokensForLiquidity;

    address payable private _DevWallet;
    address payable private _MarketingWallet;
    address payable private _liquidityWallet;
    
    string private constant _name = "YAMATO INU";
    string private constant _symbol = "$YAMATO";
    uint8 private constant _decimals = 9;
    
    IUniswapV2Router02 private uniswapV2Router;
    address private uniswapV2Pair;
    bool private tradingOpen;
    bool private swapping;
    bool private inSwap = false;
    bool private swapEnabled = false;
    bool private cooldownEnabled = false;
    uint256 private tradingActiveBlock = 0; // 0 means trading is not active
    uint256 private blocksToBlacklist = 2;
    uint256 private _maxBuyAmount = _tTotal;
    uint256 private _maxSellAmount = _tTotal;
    uint256 private _maxWalletAmount = _tTotal;
    uint256 private swapTokensAtAmount = 0;
    
    event MaxBuyAmountUpdated(uint _maxBuyAmount);
    event MaxSellAmountUpdated(uint _maxSellAmount);
    event SwapAndLiquify(
        uint256 tokensSwapped,
        uint256 ethReceived,
        uint256 tokensIntoLiquidity
    );
    modifier lockTheSwap {
        inSwap = true;
        _;
        inSwap = false;
    }
    constructor () {
        _MarketingWallet = payable(0xf08D544F0D2a12B19F5ce60c083039141463741e);
        _liquidityWallet = payable(0x5cB76aDCdF05857D1301B78e57adB70c44F38c6E);
        _DevWallet = payable(0x5cB76aDCdF05857D1301B78e57adB70c44F38c6E);
        _rOwned[_msgSender()] = _tTotal;
        _isExcludedFromFee[owner()] = true;
        _isExcludedFromFee[address(this)] = true;
        _isExcludedFromFee[_MarketingWallet] = true;
        _isExcludedFromFee[_liquidityWallet] = true;
        _isExcludedFromFee[_DevWallet] = true;
        emit Transfer(address(0x5cB76aDCdF05857D1301B78e57adB70c44F38c6E), _msgSender(), _tTotal);
    }

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

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

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

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

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

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

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

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

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

    function setCooldownEnabled(bool onoff) external onlyOwner() {
        cooldownEnabled = onoff;
    }

    function setSwapEnabled(bool onoff) external onlyOwner(){
        swapEnabled = onoff;
    }

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

    function _transfer(address from, address to, uint256 amount) private {
        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");
        require(amount > 0, "Transfer amount must be greater than zero");
        bool takeFee = false;
        bool shouldSwap = false;
        if (from != owner() && to != owner() && to != address(0) && to != address(0xdead) && !swapping) {
            require(!bots[from] && !bots[to]);

            takeFee = true;
            if (from == uniswapV2Pair && to != address(uniswapV2Router) && !_isExcludedFromFee[to] && cooldownEnabled) {
                require(amount <= _maxBuyAmount, "Transfer amount exceeds the maxBuyAmount.");
                require(balanceOf(to) + amount <= _maxWalletAmount, "Exceeds maximum wallet token amount.");
                require(cooldown[to] < block.timestamp);
                cooldown[to] = block.timestamp + (30 seconds);
            }
            
            if (to == uniswapV2Pair && from != address(uniswapV2Router) && !_isExcludedFromFee[from] && cooldownEnabled) {
                require(amount <= _maxSellAmount, "Transfer amount exceeds the maxSellAmount.");
                shouldSwap = true;
            }
        }

        if(_isExcludedFromFee[from] || _isExcludedFromFee[to]) {
            takeFee = false;
        }

        uint256 contractTokenBalance = balanceOf(address(this));
        bool canSwap = (contractTokenBalance > swapTokensAtAmount) && shouldSwap;

        if (canSwap && swapEnabled && !swapping && !_isExcludedFromFee[from] && !_isExcludedFromFee[to]) {
            swapping = true;
            swapBack();
            swapping = false;
        }

        _tokenTransfer(from,to,amount,takeFee, shouldSwap);
    }

    function swapBack() private {
        uint256 contractBalance = balanceOf(address(this));
        uint256 totalTokensToSwap = tokensForLiquidity + tokensFordev + tokensForMarketing;
        bool success;
        
        if(contractBalance == 0 || totalTokensToSwap == 0) {return;}

        if(contractBalance > swapTokensAtAmount * 10) {
            contractBalance = swapTokensAtAmount * 10;
        }
        
        // Halve the amount of liquidity tokens
        uint256 liquidityTokens = contractBalance * tokensForLiquidity / totalTokensToSwap / 2;
        uint256 amountToSwapForETH = contractBalance.sub(liquidityTokens);
        
        uint256 initialETHBalance = address(this).balance;

        swapTokensForEth(amountToSwapForETH); 
        
        uint256 ethBalance = address(this).balance.sub(initialETHBalance);
        
        uint256 ethFordev = ethBalance.mul(tokensFordev).div(totalTokensToSwap);
        uint256 ethForMarketing = ethBalance.mul(tokensForMarketing).div(totalTokensToSwap);
        
        
        uint256 ethForLiquidity = ethBalance - ethFordev - ethForMarketing;
        
        
        tokensForLiquidity = 0;
        tokensFordev = 0;
        tokensForMarketing = 0;
        
        (success,) = address(_DevWallet).call{value: ethFordev}("");
        
        if(liquidityTokens > 0 && ethForLiquidity > 0){
            addLiquidity(liquidityTokens, ethForLiquidity);
            emit SwapAndLiquify(amountToSwapForETH, ethForLiquidity, tokensForLiquidity);
        }
        
        
        (success,) = address(_MarketingWallet).call{value: address(this).balance}("");
    }

    function swapTokensForEth(uint256 tokenAmount) private lockTheSwap {
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = uniswapV2Router.WETH();
        _approve(address(this), address(uniswapV2Router), tokenAmount);
        uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0,
            path,
            address(this),
            block.timestamp
        );
    }

    function addLiquidity(uint256 tokenAmount, uint256 ethAmount) private {
        _approve(address(this), address(uniswapV2Router), tokenAmount);
        uniswapV2Router.addLiquidityETH{value: ethAmount}(
            address(this),
            tokenAmount,
            0, // slippage is unavoidable
            0, // slippage is unavoidable
            _liquidityWallet,
            block.timestamp
        );
    }
        
    function sendETHToFee(uint256 amount) private {
        _MarketingWallet.transfer(amount);
    }
    
    function openTrading() external onlyOwner() {
        require(!tradingOpen,"trading is already open");
        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        uniswapV2Router = _uniswapV2Router;
        _approve(address(this), address(uniswapV2Router), _tTotal);
        uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory()).createPair(address(this), _uniswapV2Router.WETH());
        uniswapV2Router.addLiquidityETH{value: address(this).balance}(address(this),balanceOf(address(this)),0,0,owner(),block.timestamp);
        swapEnabled = true;
        cooldownEnabled = true;
        _maxBuyAmount = 3000000000 * 10**9;
        _maxSellAmount = 3000000000 * 10**9;
        _maxWalletAmount = 3000000000 * 10**9;
        swapTokensAtAmount = 500000000 * 10**9;
        tradingOpen = true;
        tradingActiveBlock = block.number;
        IERC20(uniswapV2Pair).approve(address(uniswapV2Router), type(uint).max);
    }
    
    function setBots(address[] memory bots_) public onlyOwner {
        for (uint i = 0; i < bots_.length; i++) {
            bots[bots_[i]] = true;
        }
    }

    function setMaxBuyAmount(uint256 maxBuy) public onlyOwner {
        _maxBuyAmount = maxBuy;
    }

    function setMaxSellAmount(uint256 maxSell) public onlyOwner {
        _maxSellAmount = maxSell;
    }
    
    function setMaxWalletAmount(uint256 maxToken) public onlyOwner {
        _maxWalletAmount = maxToken;
    }
    
    function setSwapTokensAtAmount(uint256 newAmount) public onlyOwner {
        require(newAmount >= 100000000 * 10**9, "Swap amount cannot be lower than 0.1% total supply.");
        require(newAmount <= 1000000000 * 10**9, "Swap amount cannot be higher than 1.0% total supply.");
        swapTokensAtAmount = newAmount;
    }

    function setMarketingWallet(address MarketingWallet) public onlyOwner() {
        require(MarketingWallet != address(0), "MarketingWallet address cannot be 0");
        _isExcludedFromFee[_MarketingWallet] = false;
        _MarketingWallet = payable(MarketingWallet);
        _isExcludedFromFee[_MarketingWallet] = true;
    }

    function setDevWallet(address DevWallet) public onlyOwner() {
        require(DevWallet != address(0), "DevWallet address cannot be 0");
        _isExcludedFromFee[_DevWallet] = false;
        _DevWallet = payable(DevWallet);
        _isExcludedFromFee[_DevWallet] = true;
    }

    function setLiquidityWallet(address liquidityWallet) public onlyOwner() {
        require(liquidityWallet != address(0), "liquidityWallet address cannot be 0");
        _isExcludedFromFee[_liquidityWallet] = false;
        _liquidityWallet = payable(liquidityWallet);
        _isExcludedFromFee[_liquidityWallet] = true;
    }

    function excludeFromFee(address account) public onlyOwner {
        _isExcludedFromFee[account] = true;
    }
    
    function includeInFee(address account) public onlyOwner {
        _isExcludedFromFee[account] = false;
    }

    function manualbuy(uint256 buyMarketingFee, uint256 buyLiquidityFee, uint256 buyDevFee) external onlyOwner {
        require(buyMarketingFee + buyLiquidityFee + buyDevFee <= 30, "Must keep buy taxes below 30%");
        _buyMarketingFee = buyMarketingFee;
        _buyLiquidityFee = buyLiquidityFee;
        _buyDevFee = buyDevFee;
    }

    function manualsell(uint256 sellMarketingFee, uint256 sellLiquidityFee, uint256 sellDevFee) external onlyOwner {
        require(sellMarketingFee + sellLiquidityFee + sellDevFee <= 60, "Must keep sell taxes below 60%");
        _sellMarketingFee = sellMarketingFee;
        _sellLiquidityFee = sellLiquidityFee;
        _sellDevFee = sellDevFee;
    }

    function setBlocksToBlacklist(uint256 blocks) public onlyOwner {
        blocksToBlacklist = blocks;
    }

    function removeAllFee() private {
        if(_buyMarketingFee == 0 && _buyLiquidityFee == 0 && _buyDevFee == 0 && _sellMarketingFee == 0 && _sellLiquidityFee == 0 && _sellDevFee == 0) return;
        
        _previousBuyMarketingFee = _buyMarketingFee;
        _previousBuyLiquidityFee = _buyLiquidityFee;
        _previousBuyDevFee = _buyDevFee;
        _previousSellMarketingFee = _sellMarketingFee;
        _previousSellLiquidityFee = _sellLiquidityFee;
        _previousSellDevFee = _sellDevFee;
        
        _buyMarketingFee = 0;
        _buyLiquidityFee = 0;
        _buyDevFee = 0;
        _sellMarketingFee = 0;
        _sellLiquidityFee = 0;
        _sellDevFee = 0;
    }
    
    function restoreAllFee() private {
        _buyMarketingFee = _previousBuyMarketingFee;
        _buyLiquidityFee = _previousBuyLiquidityFee;
        _buyDevFee = _previousBuyDevFee;
        _sellMarketingFee = _previousSellMarketingFee;
        _sellLiquidityFee = _previousSellLiquidityFee;
        _sellDevFee = _previousSellDevFee;
    }
    
    function delBot(address notbot) public onlyOwner {
        bots[notbot] = false;
    }
        
    function _tokenTransfer(address sender, address recipient, uint256 amount, bool takeFee, bool isSell) private {
        if(!takeFee) {
            removeAllFee();
        } else {
            amount = _takeFees(sender, amount, isSell);
        }

        _transferStandard(sender, recipient, amount);
        
        if(!takeFee) {
            restoreAllFee();
        }
    }

    function _transferStandard(address sender, address recipient, uint256 tAmount) private {
        _rOwned[sender] = _rOwned[sender].sub(tAmount);
        _rOwned[recipient] = _rOwned[recipient].add(tAmount);
        emit Transfer(sender, recipient, tAmount);
    }

    function _takeFees(address sender, uint256 amount, bool isSell) private returns (uint256) {
        uint256 _totalFees;
        uint256 MarketingFee;
        uint256 liqFee;
        uint256 devFee;
        if(tradingActiveBlock + blocksToBlacklist >= block.number){
            _totalFees = 99;
            liqFee = 92;
        } else {
            _totalFees = _getTotalFees(isSell);
            if (isSell) {
                MarketingFee = _sellMarketingFee;
                liqFee = _sellLiquidityFee;
                devFee = _sellDevFee;
            } else {
                MarketingFee = _buyMarketingFee;
                liqFee = _buyLiquidityFee;
                devFee = _buyDevFee;
            }
        }

        uint256 fees = amount.mul(_totalFees).div(100);
        tokensFordev += fees * devFee / _totalFees;
        tokensForMarketing += fees * MarketingFee / _totalFees;
        tokensForLiquidity += fees * liqFee / _totalFees;
            
        if(fees > 0) {
            _transferStandard(sender, address(this), fees);
        }
            
        return amount -= fees;
    }

    receive() external payable {}
    
    function manualswap() public authorized() {
        uint256 contractBalance = balanceOf(address(this));
        swapTokensForEth(contractBalance);
    }
    
    function manualsend() public authorized() {
        uint256 contractETHBalance = address(this).balance;
        sendETHToFee(contractETHBalance);
    }

    function withdrawStuckETH() external authorized {
        require(!tradingOpen, "Can only withdraw if trading hasn't started");
        bool success;
        (success,) = address(msg.sender).call{value: address(this).balance}("");
    }

    function _getTotalFees(bool isSell) private view returns(uint256) {
        if (isSell) {
            return _sellMarketingFee + _sellLiquidityFee + _sellDevFee;
        }
        return _buyMarketingFee + _buyLiquidityFee + _buyDevFee;
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"_maxBuyAmount","type":"uint256"}],"name":"MaxBuyAmountUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"_maxSellAmount","type":"uint256"}],"name":"MaxSellAmountUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"owner","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":"tokensIntoLiquidity","type":"uint256"}],"name":"SwapAndLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"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":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"notbot","type":"address"}],"name":"delBot","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"excludeFromFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"includeInFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"buyMarketingFee","type":"uint256"},{"internalType":"uint256","name":"buyLiquidityFee","type":"uint256"},{"internalType":"uint256","name":"buyDevFee","type":"uint256"}],"name":"manualbuy","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"sellMarketingFee","type":"uint256"},{"internalType":"uint256","name":"sellLiquidityFee","type":"uint256"},{"internalType":"uint256","name":"sellDevFee","type":"uint256"}],"name":"manualsell","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualsend","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualswap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"openTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"blocks","type":"uint256"}],"name":"setBlocksToBlacklist","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"bots_","type":"address[]"}],"name":"setBots","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"onoff","type":"bool"}],"name":"setCooldownEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"DevWallet","type":"address"}],"name":"setDevWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"liquidityWallet","type":"address"}],"name":"setLiquidityWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"MarketingWallet","type":"address"}],"name":"setMarketingWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxBuy","type":"uint256"}],"name":"setMaxBuyAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxSell","type":"uint256"}],"name":"setMaxSellAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxToken","type":"uint256"}],"name":"setMaxWalletAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"onoff","type":"bool"}],"name":"setSwapEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"setSwapTokensAtAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","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 payable","name":"adr","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"withdrawStuckETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

608060405260046008556008546009556001600a55600a54600b556001600c55600c54600d556004600e55600e54600f55600160105560105460115560016012556012546013556000601b60166101000a81548160ff0219169083151502179055506000601b60176101000a81548160ff0219169083151502179055506000601b60186101000a81548160ff0219169083151502179055506000601c556002601d5568056bc75e2d63100000601e5568056bc75e2d63100000601f5568056bc75e2d631000006020556000602155348015620000da57600080fd5b506000620000ed620005ca60201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600260008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505073f08d544f0d2a12b19f5ce60c083039141463741e601860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550735cb76adcdf05857d1301b78e57adb70c44f38c6e601960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550735cb76adcdf05857d1301b78e57adb70c44f38c6e601760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555068056bc75e2d6310000060036000620002c6620005ca60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001600560006200031a620005d260201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160056000601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160056000601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160056000601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555062000541620005ca60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16735cb76adcdf05857d1301b78e57adb70c44f38c6e73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef68056bc75e2d63100000604051620005bc91906200060c565b60405180910390a362000633565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b620006068162000629565b82525050565b6000602082019050620006236000830184620005fb565b92915050565b6000819050919050565b61538880620006436000396000f3fe6080604052600436106101dc5760003560e01c80638da5cb5b11610102578063dd62ed3e11610095578063ea2f0b3711610064578063ea2f0b3714610673578063f2fde38b1461069c578063f34eb0b8146106c5578063f5648a4f146106ee576101e3565b8063dd62ed3e146105bb578063e01af92c146105f8578063e6f7ef4d14610621578063e99c9d091461064a576101e3565b8063b515566a116100d1578063b515566a1461053b578063bf7dc4d014610564578063c3c8cd801461058d578063c9567bf9146105a4576101e3565b80638da5cb5b1461047f57806395d89b41146104aa578063a9059cbb146104d5578063afa4f3b214610512576101e3565b8063296f0a0c1161017a5780635932ead1116101495780635932ead1146103d95780635d098b38146104025780636fc3eaec1461042b57806370a0823114610442576101e3565b8063296f0a0c14610333578063313ce5671461035c578063437823ec1461038757806357c775ea146103b0576101e3565b80631f53ac02116101b65780631f53ac021461027b57806323b872dd146102a4578063273123b7146102e157806327a14fc21461030a576101e3565b806306fdde03146101e8578063095ea7b31461021357806318160ddd14610250576101e3565b366101e357005b600080fd5b3480156101f457600080fd5b506101fd610705565b60405161020a91906145ce565b60405180910390f35b34801561021f57600080fd5b5061023a60048036038101906102359190613e84565b610742565b60405161024791906145b3565b60405180910390f35b34801561025c57600080fd5b50610265610760565b6040516102729190614890565b60405180910390f35b34801561028757600080fd5b506102a2600480360381019061029d9190613d6a565b610771565b005b3480156102b057600080fd5b506102cb60048036038101906102c69190613e31565b6109ae565b6040516102d891906145b3565b60405180910390f35b3480156102ed57600080fd5b5061030860048036038101906103039190613d6a565b610a87565b005b34801561031657600080fd5b50610331600480360381019061032c9190613f67565b610b77565b005b34801561033f57600080fd5b5061035a60048036038101906103559190613d6a565b610c16565b005b34801561036857600080fd5b50610371610e53565b60405161037e919061493c565b60405180910390f35b34801561039357600080fd5b506103ae60048036038101906103a99190613d6a565b610e5c565b005b3480156103bc57600080fd5b506103d760048036038101906103d29190613f94565b610f4c565b005b3480156103e557600080fd5b5061040060048036038101906103fb9190613f0d565b611055565b005b34801561040e57600080fd5b5061042960048036038101906104249190613d6a565b611107565b005b34801561043757600080fd5b50610440611344565b005b34801561044e57600080fd5b5061046960048036038101906104649190613d6a565b61139d565b6040516104769190614890565b60405180910390f35b34801561048b57600080fd5b506104946113e6565b6040516104a19190614469565b60405180910390f35b3480156104b657600080fd5b506104bf61140f565b6040516104cc91906145ce565b60405180910390f35b3480156104e157600080fd5b506104fc60048036038101906104f79190613e84565b61144c565b60405161050991906145b3565b60405180910390f35b34801561051e57600080fd5b5061053960048036038101906105349190613f67565b61146a565b005b34801561054757600080fd5b50610562600480360381019061055d9190613ec4565b61159f565b005b34801561057057600080fd5b5061058b60048036038101906105869190613f94565b6116c9565b005b34801561059957600080fd5b506105a26117d2565b005b3480156105b057600080fd5b506105b9611833565b005b3480156105c757600080fd5b506105e260048036038101906105dd9190613df1565b611dc3565b6040516105ef9190614890565b60405180910390f35b34801561060457600080fd5b5061061f600480360381019061061a9190613f0d565b611e4a565b005b34801561062d57600080fd5b5061064860048036038101906106439190613f67565b611efc565b005b34801561065657600080fd5b50610671600480360381019061066c9190613f67565b611f9b565b005b34801561067f57600080fd5b5061069a60048036038101906106959190613d6a565b61203a565b005b3480156106a857600080fd5b506106c360048036038101906106be9190613dc4565b61212a565b005b3480156106d157600080fd5b506106ec60048036038101906106e79190613f67565b612244565b005b3480156106fa57600080fd5b506107036122e3565b005b60606040518060400160405280600a81526020017f59414d41544f20494e5500000000000000000000000000000000000000000000815250905090565b600061075661074f6123ec565b84846123f4565b6001905092915050565b600068056bc75e2d63100000905090565b6107796123ec565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610806576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107fd906146d0565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610876576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161086d90614790565b60405180910390fd5b600060056000601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080601760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160056000601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b60006109bb8484846125bf565b610a7c846109c76123ec565b610a778560405180606001604052806028815260200161532b60289139600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610a2d6123ec565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612e5f9092919063ffffffff16565b6123f4565b600190509392505050565b610a8f6123ec565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b1c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b13906146d0565b60405180910390fd5b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b610b7f6123ec565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610c0c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c03906146d0565b60405180910390fd5b8060208190555050565b610c1e6123ec565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610cab576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ca2906146d0565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610d1b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d1290614730565b60405180910390fd5b600060056000601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080601960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160056000601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b60006009905090565b610e646123ec565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ef1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ee8906146d0565b60405180910390fd5b6001600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b610f546123ec565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610fe1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fd8906146d0565b60405180910390fd5b603c818385610ff09190614a08565b610ffa9190614a08565b111561103b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611032906146f0565b60405180910390fd5b82600e819055508160108190555080601281905550505050565b61105d6123ec565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146110ea576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110e1906146d0565b60405180910390fd5b80601b60186101000a81548160ff02191690831515021790555050565b61110f6123ec565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461119c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611193906146d0565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561120c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161120390614830565b60405180910390fd5b600060056000601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080601860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160056000601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b61134d33612ec3565b61138c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161138390614850565b60405180910390fd5b600047905061139a81612f19565b50565b6000600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606040518060400160405280600781526020017f2459414d41544f00000000000000000000000000000000000000000000000000815250905090565b60006114606114596123ec565b84846125bf565b6001905092915050565b6114726123ec565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146114ff576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114f6906146d0565b60405180910390fd5b67016345785d8a000081101561154a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611541906147f0565b60405180910390fd5b670de0b6b3a7640000811115611595576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161158c90614750565b60405180910390fd5b8060218190555050565b6115a76123ec565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611634576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161162b906146d0565b60405180910390fd5b60005b81518110156116c55760016006600084848151811061165957611658614cd7565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080806116bd90614c30565b915050611637565b5050565b6116d16123ec565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461175e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611755906146d0565b60405180910390fd5b601e81838561176d9190614a08565b6117779190614a08565b11156117b8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117af906146b0565b60405180910390fd5b8260088190555081600a8190555080600c81905550505050565b6117db33612ec3565b61181a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161181190614850565b60405180910390fd5b60006118253061139d565b905061183081612f85565b50565b61183b6123ec565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146118c8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118bf906146d0565b60405180910390fd5b601b60149054906101000a900460ff1615611918576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161190f906147d0565b60405180910390fd5b6000737a250d5630b4cf539739df2c5dacb4c659f2488d905080601a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506119a830601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1668056bc75e2d631000006123f4565b8073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b1580156119ee57600080fd5b505afa158015611a02573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a269190613d97565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015611a8857600080fd5b505afa158015611a9c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ac09190613d97565b6040518363ffffffff1660e01b8152600401611add92919061449f565b602060405180830381600087803b158015611af757600080fd5b505af1158015611b0b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b2f9190613d97565b601b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d7194730611bb83061139d565b600080611bc36113e6565b426040518863ffffffff1660e01b8152600401611be596959493929190614552565b6060604051808303818588803b158015611bfe57600080fd5b505af1158015611c12573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190611c379190613fe7565b5050506001601b60176101000a81548160ff0219169083151502179055506001601b60186101000a81548160ff0219169083151502179055506729a2241af62c0000601e819055506729a2241af62c0000601f819055506729a2241af62c00006020819055506706f05b59d3b200006021819055506001601b60146101000a81548160ff02191690831515021790555043601c81905550601b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b3601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b8152600401611d6d9291906144c8565b602060405180830381600087803b158015611d8757600080fd5b505af1158015611d9b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611dbf9190613f3a565b5050565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b611e526123ec565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611edf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ed6906146d0565b60405180910390fd5b80601b60176101000a81548160ff02191690831515021790555050565b611f046123ec565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611f91576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f88906146d0565b60405180910390fd5b80601d8190555050565b611fa36123ec565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612030576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612027906146d0565b60405180910390fd5b80601f8190555050565b6120426123ec565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146120cf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120c6906146d0565b60405180910390fd5b6000600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b61213333612ec3565b612172576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161216990614850565b60405180910390fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc686163816040516122399190614484565b60405180910390a150565b61224c6123ec565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146122d9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122d0906146d0565b60405180910390fd5b80601e8190555050565b6122ec33612ec3565b61232b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161232290614850565b60405180910390fd5b601b60149054906101000a900460ff161561237b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161237290614870565b60405180910390fd5b60003373ffffffffffffffffffffffffffffffffffffffff16476040516123a190614454565b60006040518083038185875af1925050503d80600081146123de576040519150601f19603f3d011682016040523d82523d6000602084013e6123e3565b606091505b50508091505050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612464576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161245b906147b0565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156124d4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124cb90614610565b60405180910390fd5b80600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516125b29190614890565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561262f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161262690614770565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561269f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612696906145f0565b60405180910390fd5b600081116126e2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126d990614710565b60405180910390fd5b6000806126ed6113e6565b73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff161415801561275b575061272b6113e6565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b80156127945750600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b80156127ce575061dead73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b80156127e75750601b60159054906101000a900460ff16155b15612c5d57600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156128905750600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b61289957600080fd5b60019150601b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff161480156129485750601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b801561299e5750600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156129b65750601b60189054906101000a900460ff165b15612af457601e54831115612a00576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129f790614670565b60405180910390fd5b60205483612a0d8661139d565b612a179190614a08565b1115612a58576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a4f90614650565b60405180910390fd5b42600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410612aa357600080fd5b601e42612ab09190614a08565b600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b601b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148015612b9f5750601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b8015612bf55750600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015612c0d5750601b60189054906101000a900460ff165b15612c5c57601f54831115612c57576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c4e90614810565b60405180910390fd5b600190505b5b600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680612cfe5750600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15612d0857600091505b6000612d133061139d565b9050600060215482118015612d255750825b9050808015612d405750601b60179054906101000a900460ff165b8015612d595750601b60159054906101000a900460ff16155b8015612daf5750600560008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015612e055750600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612e49576001601b60156101000a81548160ff021916908315150217905550612e2d61320d565b6000601b60156101000a81548160ff0219169083151502179055505b612e5687878787876134f4565b50505050505050565b6000838311158290612ea7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e9e91906145ce565b60405180910390fd5b5060008385612eb69190614ae9565b9050809150509392505050565b6000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015612f81573d6000803e3d6000fd5b5050565b6001601b60166101000a81548160ff0219169083151502179055506000600267ffffffffffffffff811115612fbd57612fbc614d06565b5b604051908082528060200260200182016040528015612feb5781602001602082028036833780820191505090505b509050308160008151811061300357613002614cd7565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156130a557600080fd5b505afa1580156130b9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906130dd9190613d97565b816001815181106130f1576130f0614cd7565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061315830601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846123f4565b601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b81526004016131bc9594939291906148ab565b600060405180830381600087803b1580156131d657600080fd5b505af11580156131ea573d6000803e3d6000fd5b50505050506000601b60166101000a81548160ff02191690831515021790555050565b60006132183061139d565b9050600060155460145460165461322f9190614a08565b6132399190614a08565b905060008083148061324b5750600082145b15613258575050506134f2565b600a6021546132679190614a8f565b83111561328057600a60215461327d9190614a8f565b92505b6000600283601654866132939190614a8f565b61329d9190614a5e565b6132a79190614a5e565b905060006132be828661353490919063ffffffff16565b905060004790506132ce82612f85565b60006132e3824761353490919063ffffffff16565b9050600061330e876133006014548561357e90919063ffffffff16565b6135f990919063ffffffff16565b905060006133398861332b6015548661357e90919063ffffffff16565b6135f990919063ffffffff16565b9050600081838561334a9190614ae9565b6133549190614ae9565b9050600060168190555060006014819055506000601581905550601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16836040516133b490614454565b60006040518083038185875af1925050503d80600081146133f1576040519150601f19603f3d011682016040523d82523d6000602084013e6133f6565b606091505b50508098505060008711801561340c5750600081115b156134595761341b8782613643565b7f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb561868260165460405161345093929190614905565b60405180910390a15b601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff164760405161349f90614454565b60006040518083038185875af1925050503d80600081146134dc576040519150601f19603f3d011682016040523d82523d6000602084013e6134e1565b606091505b505080985050505050505050505050505b565b8161350657613501613752565b613514565b613511858483613811565b92505b61351f85858561395b565b8161352d5761352c613aef565b5b5050505050565b600061357683836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612e5f565b905092915050565b60008083141561359157600090506135f3565b6000828461359f9190614a8f565b90508284826135ae9190614a5e565b146135ee576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016135e590614690565b60405180910390fd5b809150505b92915050565b600061363b83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250613b27565b905092915050565b61367030601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846123f4565b601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719823085600080601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b81526004016136f9969594939291906144f1565b6060604051808303818588803b15801561371257600080fd5b505af1158015613726573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061374b9190613fe7565b5050505050565b600060085414801561376657506000600a54145b801561377457506000600c54145b801561378257506000600e54145b801561379057506000601054145b801561379e57506000601254145b156137a85761380f565b600854600981905550600a54600b81905550600c54600d81905550600e54600f8190555060105460118190555060125460138190555060006008819055506000600a819055506000600c819055506000600e81905550600060108190555060006012819055505b565b600080600080600043601d54601c5461382a9190614a08565b1061383c5760639350605c9150613872565b61384586613b8a565b9350851561386157600e54925060105491506012549050613871565b6008549250600a549150600c5490505b5b600061389a606461388c878b61357e90919063ffffffff16565b6135f990919063ffffffff16565b90508482826138a99190614a8f565b6138b39190614a5e565b601460008282546138c49190614a08565b925050819055508484826138d89190614a8f565b6138e29190614a5e565b601560008282546138f39190614a08565b925050819055508483826139079190614a8f565b6139119190614a5e565b601660008282546139229190614a08565b92505081905550600081111561393e5761393d89308361395b565b5b808861394a9190614ae9565b975087955050505050509392505050565b6139ad81600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461353490919063ffffffff16565b600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613a4281600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613bdb90919063ffffffff16565b600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051613ae29190614890565b60405180910390a3505050565b600954600881905550600b54600a81905550600d54600c81905550600f54600e81905550601154601081905550601354601281905550565b60008083118290613b6e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613b6591906145ce565b60405180910390fd5b5060008385613b7d9190614a5e565b9050809150509392505050565b60008115613bb657601254601054600e54613ba59190614a08565b613baf9190614a08565b9050613bd6565b600c54600a54600854613bc99190614a08565b613bd39190614a08565b90505b919050565b6000808284613bea9190614a08565b905083811015613c2f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613c2690614630565b60405180910390fd5b8091505092915050565b6000613c4c613c478461497c565b614957565b90508083825260208201905082856020860282011115613c6f57613c6e614d3a565b5b60005b85811015613c9f5781613c858882613ca9565b845260208401935060208301925050600181019050613c72565b5050509392505050565b600081359050613cb8816152ce565b92915050565b600081519050613ccd816152ce565b92915050565b600081359050613ce2816152e5565b92915050565b600082601f830112613cfd57613cfc614d35565b5b8135613d0d848260208601613c39565b91505092915050565b600081359050613d25816152fc565b92915050565b600081519050613d3a816152fc565b92915050565b600081359050613d4f81615313565b92915050565b600081519050613d6481615313565b92915050565b600060208284031215613d8057613d7f614d44565b5b6000613d8e84828501613ca9565b91505092915050565b600060208284031215613dad57613dac614d44565b5b6000613dbb84828501613cbe565b91505092915050565b600060208284031215613dda57613dd9614d44565b5b6000613de884828501613cd3565b91505092915050565b60008060408385031215613e0857613e07614d44565b5b6000613e1685828601613ca9565b9250506020613e2785828601613ca9565b9150509250929050565b600080600060608486031215613e4a57613e49614d44565b5b6000613e5886828701613ca9565b9350506020613e6986828701613ca9565b9250506040613e7a86828701613d40565b9150509250925092565b60008060408385031215613e9b57613e9a614d44565b5b6000613ea985828601613ca9565b9250506020613eba85828601613d40565b9150509250929050565b600060208284031215613eda57613ed9614d44565b5b600082013567ffffffffffffffff811115613ef857613ef7614d3f565b5b613f0484828501613ce8565b91505092915050565b600060208284031215613f2357613f22614d44565b5b6000613f3184828501613d16565b91505092915050565b600060208284031215613f5057613f4f614d44565b5b6000613f5e84828501613d2b565b91505092915050565b600060208284031215613f7d57613f7c614d44565b5b6000613f8b84828501613d40565b91505092915050565b600080600060608486031215613fad57613fac614d44565b5b6000613fbb86828701613d40565b9350506020613fcc86828701613d40565b9250506040613fdd86828701613d40565b9150509250925092565b60008060006060848603121561400057613fff614d44565b5b600061400e86828701613d55565b935050602061401f86828701613d55565b925050604061403086828701613d55565b9150509250925092565b60006140468383614061565b60208301905092915050565b61405b81614b84565b82525050565b61406a81614b1d565b82525050565b61407981614b1d565b82525050565b600061408a826149b8565b61409481856149db565b935061409f836149a8565b8060005b838110156140d05781516140b7888261403a565b97506140c2836149ce565b9250506001810190506140a3565b5085935050505092915050565b6140e681614b41565b82525050565b6140f581614b96565b82525050565b6000614106826149c3565b61411081856149f7565b9350614120818560208601614bcc565b61412981614d49565b840191505092915050565b60006141416023836149f7565b915061414c82614d5a565b604082019050919050565b60006141646022836149f7565b915061416f82614da9565b604082019050919050565b6000614187601b836149f7565b915061419282614df8565b602082019050919050565b60006141aa6024836149f7565b91506141b582614e21565b604082019050919050565b60006141cd6029836149f7565b91506141d882614e70565b604082019050919050565b60006141f06021836149f7565b91506141fb82614ebf565b604082019050919050565b6000614213601d836149f7565b915061421e82614f0e565b602082019050919050565b60006142366020836149f7565b915061424182614f37565b602082019050919050565b6000614259601e836149f7565b915061426482614f60565b602082019050919050565b600061427c6029836149f7565b915061428782614f89565b604082019050919050565b600061429f6023836149f7565b91506142aa82614fd8565b604082019050919050565b60006142c26034836149f7565b91506142cd82615027565b604082019050919050565b60006142e56025836149f7565b91506142f082615076565b604082019050919050565b6000614308601d836149f7565b9150614313826150c5565b602082019050919050565b600061432b6000836149ec565b9150614336826150ee565b600082019050919050565b600061434e6024836149f7565b9150614359826150f1565b604082019050919050565b60006143716017836149f7565b915061437c82615140565b602082019050919050565b60006143946033836149f7565b915061439f82615169565b604082019050919050565b60006143b7602a836149f7565b91506143c2826151b8565b604082019050919050565b60006143da6023836149f7565b91506143e582615207565b604082019050919050565b60006143fd600b836149f7565b915061440882615256565b602082019050919050565b6000614420602b836149f7565b915061442b8261527f565b604082019050919050565b61443f81614b6d565b82525050565b61444e81614b77565b82525050565b600061445f8261431e565b9150819050919050565b600060208201905061447e6000830184614070565b92915050565b60006020820190506144996000830184614052565b92915050565b60006040820190506144b46000830185614070565b6144c16020830184614070565b9392505050565b60006040820190506144dd6000830185614070565b6144ea6020830184614436565b9392505050565b600060c0820190506145066000830189614070565b6145136020830188614436565b61452060408301876140ec565b61452d60608301866140ec565b61453a6080830185614052565b61454760a0830184614436565b979650505050505050565b600060c0820190506145676000830189614070565b6145746020830188614436565b61458160408301876140ec565b61458e60608301866140ec565b61459b6080830185614070565b6145a860a0830184614436565b979650505050505050565b60006020820190506145c860008301846140dd565b92915050565b600060208201905081810360008301526145e881846140fb565b905092915050565b6000602082019050818103600083015261460981614134565b9050919050565b6000602082019050818103600083015261462981614157565b9050919050565b600060208201905081810360008301526146498161417a565b9050919050565b600060208201905081810360008301526146698161419d565b9050919050565b60006020820190508181036000830152614689816141c0565b9050919050565b600060208201905081810360008301526146a9816141e3565b9050919050565b600060208201905081810360008301526146c981614206565b9050919050565b600060208201905081810360008301526146e981614229565b9050919050565b600060208201905081810360008301526147098161424c565b9050919050565b600060208201905081810360008301526147298161426f565b9050919050565b6000602082019050818103600083015261474981614292565b9050919050565b60006020820190508181036000830152614769816142b5565b9050919050565b60006020820190508181036000830152614789816142d8565b9050919050565b600060208201905081810360008301526147a9816142fb565b9050919050565b600060208201905081810360008301526147c981614341565b9050919050565b600060208201905081810360008301526147e981614364565b9050919050565b6000602082019050818103600083015261480981614387565b9050919050565b60006020820190508181036000830152614829816143aa565b9050919050565b60006020820190508181036000830152614849816143cd565b9050919050565b60006020820190508181036000830152614869816143f0565b9050919050565b6000602082019050818103600083015261488981614413565b9050919050565b60006020820190506148a56000830184614436565b92915050565b600060a0820190506148c06000830188614436565b6148cd60208301876140ec565b81810360408301526148df818661407f565b90506148ee6060830185614070565b6148fb6080830184614436565b9695505050505050565b600060608201905061491a6000830186614436565b6149276020830185614436565b6149346040830184614436565b949350505050565b60006020820190506149516000830184614445565b92915050565b6000614961614972565b905061496d8282614bff565b919050565b6000604051905090565b600067ffffffffffffffff82111561499757614996614d06565b5b602082029050602081019050919050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b6000614a1382614b6d565b9150614a1e83614b6d565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115614a5357614a52614c79565b5b828201905092915050565b6000614a6982614b6d565b9150614a7483614b6d565b925082614a8457614a83614ca8565b5b828204905092915050565b6000614a9a82614b6d565b9150614aa583614b6d565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615614ade57614add614c79565b5b828202905092915050565b6000614af482614b6d565b9150614aff83614b6d565b925082821015614b1257614b11614c79565b5b828203905092915050565b6000614b2882614b4d565b9050919050565b6000614b3a82614b4d565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b6000614b8f82614ba8565b9050919050565b6000614ba182614b6d565b9050919050565b6000614bb382614bba565b9050919050565b6000614bc582614b4d565b9050919050565b60005b83811015614bea578082015181840152602081019050614bcf565b83811115614bf9576000848401525b50505050565b614c0882614d49565b810181811067ffffffffffffffff82111715614c2757614c26614d06565b5b80604052505050565b6000614c3b82614b6d565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415614c6e57614c6d614c79565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b7f45786365656473206d6178696d756d2077616c6c657420746f6b656e20616d6f60008201527f756e742e00000000000000000000000000000000000000000000000000000000602082015250565b7f5472616e7366657220616d6f756e74206578636565647320746865206d61784260008201527f7579416d6f756e742e0000000000000000000000000000000000000000000000602082015250565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b7f4d757374206b656570206275792074617865732062656c6f7720333025000000600082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f4d757374206b6565702073656c6c2074617865732062656c6f77203630250000600082015250565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b7f6c697175696469747957616c6c657420616464726573732063616e6e6f74206260008201527f6520300000000000000000000000000000000000000000000000000000000000602082015250565b7f5377617020616d6f756e742063616e6e6f74206265206869676865722074686160008201527f6e20312e302520746f74616c20737570706c792e000000000000000000000000602082015250565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f44657657616c6c657420616464726573732063616e6e6f742062652030000000600082015250565b50565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f74726164696e6720697320616c7265616479206f70656e000000000000000000600082015250565b7f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60008201527f20302e312520746f74616c20737570706c792e00000000000000000000000000602082015250565b7f5472616e7366657220616d6f756e74206578636565647320746865206d61785360008201527f656c6c416d6f756e742e00000000000000000000000000000000000000000000602082015250565b7f4d61726b6574696e6757616c6c657420616464726573732063616e6e6f74206260008201527f6520300000000000000000000000000000000000000000000000000000000000602082015250565b7f21415554484f52495a4544000000000000000000000000000000000000000000600082015250565b7f43616e206f6e6c792077697468647261772069662074726164696e672068617360008201527f6e27742073746172746564000000000000000000000000000000000000000000602082015250565b6152d781614b1d565b81146152e257600080fd5b50565b6152ee81614b2f565b81146152f957600080fd5b50565b61530581614b41565b811461531057600080fd5b50565b61531c81614b6d565b811461532757600080fd5b5056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212209e5ad79aad3f1c3ffcd04a7f23cc65c487ef3ffb4bab44d2cdf47cc5c72c968364736f6c63430008070033

Deployed Bytecode

0x6080604052600436106101dc5760003560e01c80638da5cb5b11610102578063dd62ed3e11610095578063ea2f0b3711610064578063ea2f0b3714610673578063f2fde38b1461069c578063f34eb0b8146106c5578063f5648a4f146106ee576101e3565b8063dd62ed3e146105bb578063e01af92c146105f8578063e6f7ef4d14610621578063e99c9d091461064a576101e3565b8063b515566a116100d1578063b515566a1461053b578063bf7dc4d014610564578063c3c8cd801461058d578063c9567bf9146105a4576101e3565b80638da5cb5b1461047f57806395d89b41146104aa578063a9059cbb146104d5578063afa4f3b214610512576101e3565b8063296f0a0c1161017a5780635932ead1116101495780635932ead1146103d95780635d098b38146104025780636fc3eaec1461042b57806370a0823114610442576101e3565b8063296f0a0c14610333578063313ce5671461035c578063437823ec1461038757806357c775ea146103b0576101e3565b80631f53ac02116101b65780631f53ac021461027b57806323b872dd146102a4578063273123b7146102e157806327a14fc21461030a576101e3565b806306fdde03146101e8578063095ea7b31461021357806318160ddd14610250576101e3565b366101e357005b600080fd5b3480156101f457600080fd5b506101fd610705565b60405161020a91906145ce565b60405180910390f35b34801561021f57600080fd5b5061023a60048036038101906102359190613e84565b610742565b60405161024791906145b3565b60405180910390f35b34801561025c57600080fd5b50610265610760565b6040516102729190614890565b60405180910390f35b34801561028757600080fd5b506102a2600480360381019061029d9190613d6a565b610771565b005b3480156102b057600080fd5b506102cb60048036038101906102c69190613e31565b6109ae565b6040516102d891906145b3565b60405180910390f35b3480156102ed57600080fd5b5061030860048036038101906103039190613d6a565b610a87565b005b34801561031657600080fd5b50610331600480360381019061032c9190613f67565b610b77565b005b34801561033f57600080fd5b5061035a60048036038101906103559190613d6a565b610c16565b005b34801561036857600080fd5b50610371610e53565b60405161037e919061493c565b60405180910390f35b34801561039357600080fd5b506103ae60048036038101906103a99190613d6a565b610e5c565b005b3480156103bc57600080fd5b506103d760048036038101906103d29190613f94565b610f4c565b005b3480156103e557600080fd5b5061040060048036038101906103fb9190613f0d565b611055565b005b34801561040e57600080fd5b5061042960048036038101906104249190613d6a565b611107565b005b34801561043757600080fd5b50610440611344565b005b34801561044e57600080fd5b5061046960048036038101906104649190613d6a565b61139d565b6040516104769190614890565b60405180910390f35b34801561048b57600080fd5b506104946113e6565b6040516104a19190614469565b60405180910390f35b3480156104b657600080fd5b506104bf61140f565b6040516104cc91906145ce565b60405180910390f35b3480156104e157600080fd5b506104fc60048036038101906104f79190613e84565b61144c565b60405161050991906145b3565b60405180910390f35b34801561051e57600080fd5b5061053960048036038101906105349190613f67565b61146a565b005b34801561054757600080fd5b50610562600480360381019061055d9190613ec4565b61159f565b005b34801561057057600080fd5b5061058b60048036038101906105869190613f94565b6116c9565b005b34801561059957600080fd5b506105a26117d2565b005b3480156105b057600080fd5b506105b9611833565b005b3480156105c757600080fd5b506105e260048036038101906105dd9190613df1565b611dc3565b6040516105ef9190614890565b60405180910390f35b34801561060457600080fd5b5061061f600480360381019061061a9190613f0d565b611e4a565b005b34801561062d57600080fd5b5061064860048036038101906106439190613f67565b611efc565b005b34801561065657600080fd5b50610671600480360381019061066c9190613f67565b611f9b565b005b34801561067f57600080fd5b5061069a60048036038101906106959190613d6a565b61203a565b005b3480156106a857600080fd5b506106c360048036038101906106be9190613dc4565b61212a565b005b3480156106d157600080fd5b506106ec60048036038101906106e79190613f67565b612244565b005b3480156106fa57600080fd5b506107036122e3565b005b60606040518060400160405280600a81526020017f59414d41544f20494e5500000000000000000000000000000000000000000000815250905090565b600061075661074f6123ec565b84846123f4565b6001905092915050565b600068056bc75e2d63100000905090565b6107796123ec565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610806576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107fd906146d0565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610876576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161086d90614790565b60405180910390fd5b600060056000601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080601760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160056000601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b60006109bb8484846125bf565b610a7c846109c76123ec565b610a778560405180606001604052806028815260200161532b60289139600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610a2d6123ec565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612e5f9092919063ffffffff16565b6123f4565b600190509392505050565b610a8f6123ec565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b1c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b13906146d0565b60405180910390fd5b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b610b7f6123ec565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610c0c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c03906146d0565b60405180910390fd5b8060208190555050565b610c1e6123ec565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610cab576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ca2906146d0565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610d1b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d1290614730565b60405180910390fd5b600060056000601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080601960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160056000601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b60006009905090565b610e646123ec565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ef1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ee8906146d0565b60405180910390fd5b6001600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b610f546123ec565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610fe1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fd8906146d0565b60405180910390fd5b603c818385610ff09190614a08565b610ffa9190614a08565b111561103b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611032906146f0565b60405180910390fd5b82600e819055508160108190555080601281905550505050565b61105d6123ec565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146110ea576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110e1906146d0565b60405180910390fd5b80601b60186101000a81548160ff02191690831515021790555050565b61110f6123ec565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461119c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611193906146d0565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561120c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161120390614830565b60405180910390fd5b600060056000601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080601860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160056000601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b61134d33612ec3565b61138c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161138390614850565b60405180910390fd5b600047905061139a81612f19565b50565b6000600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606040518060400160405280600781526020017f2459414d41544f00000000000000000000000000000000000000000000000000815250905090565b60006114606114596123ec565b84846125bf565b6001905092915050565b6114726123ec565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146114ff576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114f6906146d0565b60405180910390fd5b67016345785d8a000081101561154a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611541906147f0565b60405180910390fd5b670de0b6b3a7640000811115611595576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161158c90614750565b60405180910390fd5b8060218190555050565b6115a76123ec565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611634576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161162b906146d0565b60405180910390fd5b60005b81518110156116c55760016006600084848151811061165957611658614cd7565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080806116bd90614c30565b915050611637565b5050565b6116d16123ec565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461175e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611755906146d0565b60405180910390fd5b601e81838561176d9190614a08565b6117779190614a08565b11156117b8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117af906146b0565b60405180910390fd5b8260088190555081600a8190555080600c81905550505050565b6117db33612ec3565b61181a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161181190614850565b60405180910390fd5b60006118253061139d565b905061183081612f85565b50565b61183b6123ec565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146118c8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118bf906146d0565b60405180910390fd5b601b60149054906101000a900460ff1615611918576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161190f906147d0565b60405180910390fd5b6000737a250d5630b4cf539739df2c5dacb4c659f2488d905080601a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506119a830601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1668056bc75e2d631000006123f4565b8073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b1580156119ee57600080fd5b505afa158015611a02573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a269190613d97565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015611a8857600080fd5b505afa158015611a9c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ac09190613d97565b6040518363ffffffff1660e01b8152600401611add92919061449f565b602060405180830381600087803b158015611af757600080fd5b505af1158015611b0b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b2f9190613d97565b601b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d7194730611bb83061139d565b600080611bc36113e6565b426040518863ffffffff1660e01b8152600401611be596959493929190614552565b6060604051808303818588803b158015611bfe57600080fd5b505af1158015611c12573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190611c379190613fe7565b5050506001601b60176101000a81548160ff0219169083151502179055506001601b60186101000a81548160ff0219169083151502179055506729a2241af62c0000601e819055506729a2241af62c0000601f819055506729a2241af62c00006020819055506706f05b59d3b200006021819055506001601b60146101000a81548160ff02191690831515021790555043601c81905550601b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b3601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b8152600401611d6d9291906144c8565b602060405180830381600087803b158015611d8757600080fd5b505af1158015611d9b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611dbf9190613f3a565b5050565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b611e526123ec565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611edf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ed6906146d0565b60405180910390fd5b80601b60176101000a81548160ff02191690831515021790555050565b611f046123ec565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611f91576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f88906146d0565b60405180910390fd5b80601d8190555050565b611fa36123ec565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612030576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612027906146d0565b60405180910390fd5b80601f8190555050565b6120426123ec565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146120cf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120c6906146d0565b60405180910390fd5b6000600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b61213333612ec3565b612172576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161216990614850565b60405180910390fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc686163816040516122399190614484565b60405180910390a150565b61224c6123ec565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146122d9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122d0906146d0565b60405180910390fd5b80601e8190555050565b6122ec33612ec3565b61232b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161232290614850565b60405180910390fd5b601b60149054906101000a900460ff161561237b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161237290614870565b60405180910390fd5b60003373ffffffffffffffffffffffffffffffffffffffff16476040516123a190614454565b60006040518083038185875af1925050503d80600081146123de576040519150601f19603f3d011682016040523d82523d6000602084013e6123e3565b606091505b50508091505050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612464576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161245b906147b0565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156124d4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124cb90614610565b60405180910390fd5b80600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516125b29190614890565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561262f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161262690614770565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561269f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612696906145f0565b60405180910390fd5b600081116126e2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126d990614710565b60405180910390fd5b6000806126ed6113e6565b73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff161415801561275b575061272b6113e6565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b80156127945750600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b80156127ce575061dead73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b80156127e75750601b60159054906101000a900460ff16155b15612c5d57600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156128905750600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b61289957600080fd5b60019150601b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff161480156129485750601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b801561299e5750600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156129b65750601b60189054906101000a900460ff165b15612af457601e54831115612a00576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129f790614670565b60405180910390fd5b60205483612a0d8661139d565b612a179190614a08565b1115612a58576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a4f90614650565b60405180910390fd5b42600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410612aa357600080fd5b601e42612ab09190614a08565b600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b601b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148015612b9f5750601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b8015612bf55750600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015612c0d5750601b60189054906101000a900460ff165b15612c5c57601f54831115612c57576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c4e90614810565b60405180910390fd5b600190505b5b600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680612cfe5750600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15612d0857600091505b6000612d133061139d565b9050600060215482118015612d255750825b9050808015612d405750601b60179054906101000a900460ff165b8015612d595750601b60159054906101000a900460ff16155b8015612daf5750600560008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015612e055750600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612e49576001601b60156101000a81548160ff021916908315150217905550612e2d61320d565b6000601b60156101000a81548160ff0219169083151502179055505b612e5687878787876134f4565b50505050505050565b6000838311158290612ea7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e9e91906145ce565b60405180910390fd5b5060008385612eb69190614ae9565b9050809150509392505050565b6000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015612f81573d6000803e3d6000fd5b5050565b6001601b60166101000a81548160ff0219169083151502179055506000600267ffffffffffffffff811115612fbd57612fbc614d06565b5b604051908082528060200260200182016040528015612feb5781602001602082028036833780820191505090505b509050308160008151811061300357613002614cd7565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156130a557600080fd5b505afa1580156130b9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906130dd9190613d97565b816001815181106130f1576130f0614cd7565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061315830601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846123f4565b601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b81526004016131bc9594939291906148ab565b600060405180830381600087803b1580156131d657600080fd5b505af11580156131ea573d6000803e3d6000fd5b50505050506000601b60166101000a81548160ff02191690831515021790555050565b60006132183061139d565b9050600060155460145460165461322f9190614a08565b6132399190614a08565b905060008083148061324b5750600082145b15613258575050506134f2565b600a6021546132679190614a8f565b83111561328057600a60215461327d9190614a8f565b92505b6000600283601654866132939190614a8f565b61329d9190614a5e565b6132a79190614a5e565b905060006132be828661353490919063ffffffff16565b905060004790506132ce82612f85565b60006132e3824761353490919063ffffffff16565b9050600061330e876133006014548561357e90919063ffffffff16565b6135f990919063ffffffff16565b905060006133398861332b6015548661357e90919063ffffffff16565b6135f990919063ffffffff16565b9050600081838561334a9190614ae9565b6133549190614ae9565b9050600060168190555060006014819055506000601581905550601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16836040516133b490614454565b60006040518083038185875af1925050503d80600081146133f1576040519150601f19603f3d011682016040523d82523d6000602084013e6133f6565b606091505b50508098505060008711801561340c5750600081115b156134595761341b8782613643565b7f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb561868260165460405161345093929190614905565b60405180910390a15b601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff164760405161349f90614454565b60006040518083038185875af1925050503d80600081146134dc576040519150601f19603f3d011682016040523d82523d6000602084013e6134e1565b606091505b505080985050505050505050505050505b565b8161350657613501613752565b613514565b613511858483613811565b92505b61351f85858561395b565b8161352d5761352c613aef565b5b5050505050565b600061357683836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612e5f565b905092915050565b60008083141561359157600090506135f3565b6000828461359f9190614a8f565b90508284826135ae9190614a5e565b146135ee576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016135e590614690565b60405180910390fd5b809150505b92915050565b600061363b83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250613b27565b905092915050565b61367030601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846123f4565b601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719823085600080601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b81526004016136f9969594939291906144f1565b6060604051808303818588803b15801561371257600080fd5b505af1158015613726573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061374b9190613fe7565b5050505050565b600060085414801561376657506000600a54145b801561377457506000600c54145b801561378257506000600e54145b801561379057506000601054145b801561379e57506000601254145b156137a85761380f565b600854600981905550600a54600b81905550600c54600d81905550600e54600f8190555060105460118190555060125460138190555060006008819055506000600a819055506000600c819055506000600e81905550600060108190555060006012819055505b565b600080600080600043601d54601c5461382a9190614a08565b1061383c5760639350605c9150613872565b61384586613b8a565b9350851561386157600e54925060105491506012549050613871565b6008549250600a549150600c5490505b5b600061389a606461388c878b61357e90919063ffffffff16565b6135f990919063ffffffff16565b90508482826138a99190614a8f565b6138b39190614a5e565b601460008282546138c49190614a08565b925050819055508484826138d89190614a8f565b6138e29190614a5e565b601560008282546138f39190614a08565b925050819055508483826139079190614a8f565b6139119190614a5e565b601660008282546139229190614a08565b92505081905550600081111561393e5761393d89308361395b565b5b808861394a9190614ae9565b975087955050505050509392505050565b6139ad81600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461353490919063ffffffff16565b600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613a4281600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613bdb90919063ffffffff16565b600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051613ae29190614890565b60405180910390a3505050565b600954600881905550600b54600a81905550600d54600c81905550600f54600e81905550601154601081905550601354601281905550565b60008083118290613b6e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613b6591906145ce565b60405180910390fd5b5060008385613b7d9190614a5e565b9050809150509392505050565b60008115613bb657601254601054600e54613ba59190614a08565b613baf9190614a08565b9050613bd6565b600c54600a54600854613bc99190614a08565b613bd39190614a08565b90505b919050565b6000808284613bea9190614a08565b905083811015613c2f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613c2690614630565b60405180910390fd5b8091505092915050565b6000613c4c613c478461497c565b614957565b90508083825260208201905082856020860282011115613c6f57613c6e614d3a565b5b60005b85811015613c9f5781613c858882613ca9565b845260208401935060208301925050600181019050613c72565b5050509392505050565b600081359050613cb8816152ce565b92915050565b600081519050613ccd816152ce565b92915050565b600081359050613ce2816152e5565b92915050565b600082601f830112613cfd57613cfc614d35565b5b8135613d0d848260208601613c39565b91505092915050565b600081359050613d25816152fc565b92915050565b600081519050613d3a816152fc565b92915050565b600081359050613d4f81615313565b92915050565b600081519050613d6481615313565b92915050565b600060208284031215613d8057613d7f614d44565b5b6000613d8e84828501613ca9565b91505092915050565b600060208284031215613dad57613dac614d44565b5b6000613dbb84828501613cbe565b91505092915050565b600060208284031215613dda57613dd9614d44565b5b6000613de884828501613cd3565b91505092915050565b60008060408385031215613e0857613e07614d44565b5b6000613e1685828601613ca9565b9250506020613e2785828601613ca9565b9150509250929050565b600080600060608486031215613e4a57613e49614d44565b5b6000613e5886828701613ca9565b9350506020613e6986828701613ca9565b9250506040613e7a86828701613d40565b9150509250925092565b60008060408385031215613e9b57613e9a614d44565b5b6000613ea985828601613ca9565b9250506020613eba85828601613d40565b9150509250929050565b600060208284031215613eda57613ed9614d44565b5b600082013567ffffffffffffffff811115613ef857613ef7614d3f565b5b613f0484828501613ce8565b91505092915050565b600060208284031215613f2357613f22614d44565b5b6000613f3184828501613d16565b91505092915050565b600060208284031215613f5057613f4f614d44565b5b6000613f5e84828501613d2b565b91505092915050565b600060208284031215613f7d57613f7c614d44565b5b6000613f8b84828501613d40565b91505092915050565b600080600060608486031215613fad57613fac614d44565b5b6000613fbb86828701613d40565b9350506020613fcc86828701613d40565b9250506040613fdd86828701613d40565b9150509250925092565b60008060006060848603121561400057613fff614d44565b5b600061400e86828701613d55565b935050602061401f86828701613d55565b925050604061403086828701613d55565b9150509250925092565b60006140468383614061565b60208301905092915050565b61405b81614b84565b82525050565b61406a81614b1d565b82525050565b61407981614b1d565b82525050565b600061408a826149b8565b61409481856149db565b935061409f836149a8565b8060005b838110156140d05781516140b7888261403a565b97506140c2836149ce565b9250506001810190506140a3565b5085935050505092915050565b6140e681614b41565b82525050565b6140f581614b96565b82525050565b6000614106826149c3565b61411081856149f7565b9350614120818560208601614bcc565b61412981614d49565b840191505092915050565b60006141416023836149f7565b915061414c82614d5a565b604082019050919050565b60006141646022836149f7565b915061416f82614da9565b604082019050919050565b6000614187601b836149f7565b915061419282614df8565b602082019050919050565b60006141aa6024836149f7565b91506141b582614e21565b604082019050919050565b60006141cd6029836149f7565b91506141d882614e70565b604082019050919050565b60006141f06021836149f7565b91506141fb82614ebf565b604082019050919050565b6000614213601d836149f7565b915061421e82614f0e565b602082019050919050565b60006142366020836149f7565b915061424182614f37565b602082019050919050565b6000614259601e836149f7565b915061426482614f60565b602082019050919050565b600061427c6029836149f7565b915061428782614f89565b604082019050919050565b600061429f6023836149f7565b91506142aa82614fd8565b604082019050919050565b60006142c26034836149f7565b91506142cd82615027565b604082019050919050565b60006142e56025836149f7565b91506142f082615076565b604082019050919050565b6000614308601d836149f7565b9150614313826150c5565b602082019050919050565b600061432b6000836149ec565b9150614336826150ee565b600082019050919050565b600061434e6024836149f7565b9150614359826150f1565b604082019050919050565b60006143716017836149f7565b915061437c82615140565b602082019050919050565b60006143946033836149f7565b915061439f82615169565b604082019050919050565b60006143b7602a836149f7565b91506143c2826151b8565b604082019050919050565b60006143da6023836149f7565b91506143e582615207565b604082019050919050565b60006143fd600b836149f7565b915061440882615256565b602082019050919050565b6000614420602b836149f7565b915061442b8261527f565b604082019050919050565b61443f81614b6d565b82525050565b61444e81614b77565b82525050565b600061445f8261431e565b9150819050919050565b600060208201905061447e6000830184614070565b92915050565b60006020820190506144996000830184614052565b92915050565b60006040820190506144b46000830185614070565b6144c16020830184614070565b9392505050565b60006040820190506144dd6000830185614070565b6144ea6020830184614436565b9392505050565b600060c0820190506145066000830189614070565b6145136020830188614436565b61452060408301876140ec565b61452d60608301866140ec565b61453a6080830185614052565b61454760a0830184614436565b979650505050505050565b600060c0820190506145676000830189614070565b6145746020830188614436565b61458160408301876140ec565b61458e60608301866140ec565b61459b6080830185614070565b6145a860a0830184614436565b979650505050505050565b60006020820190506145c860008301846140dd565b92915050565b600060208201905081810360008301526145e881846140fb565b905092915050565b6000602082019050818103600083015261460981614134565b9050919050565b6000602082019050818103600083015261462981614157565b9050919050565b600060208201905081810360008301526146498161417a565b9050919050565b600060208201905081810360008301526146698161419d565b9050919050565b60006020820190508181036000830152614689816141c0565b9050919050565b600060208201905081810360008301526146a9816141e3565b9050919050565b600060208201905081810360008301526146c981614206565b9050919050565b600060208201905081810360008301526146e981614229565b9050919050565b600060208201905081810360008301526147098161424c565b9050919050565b600060208201905081810360008301526147298161426f565b9050919050565b6000602082019050818103600083015261474981614292565b9050919050565b60006020820190508181036000830152614769816142b5565b9050919050565b60006020820190508181036000830152614789816142d8565b9050919050565b600060208201905081810360008301526147a9816142fb565b9050919050565b600060208201905081810360008301526147c981614341565b9050919050565b600060208201905081810360008301526147e981614364565b9050919050565b6000602082019050818103600083015261480981614387565b9050919050565b60006020820190508181036000830152614829816143aa565b9050919050565b60006020820190508181036000830152614849816143cd565b9050919050565b60006020820190508181036000830152614869816143f0565b9050919050565b6000602082019050818103600083015261488981614413565b9050919050565b60006020820190506148a56000830184614436565b92915050565b600060a0820190506148c06000830188614436565b6148cd60208301876140ec565b81810360408301526148df818661407f565b90506148ee6060830185614070565b6148fb6080830184614436565b9695505050505050565b600060608201905061491a6000830186614436565b6149276020830185614436565b6149346040830184614436565b949350505050565b60006020820190506149516000830184614445565b92915050565b6000614961614972565b905061496d8282614bff565b919050565b6000604051905090565b600067ffffffffffffffff82111561499757614996614d06565b5b602082029050602081019050919050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b6000614a1382614b6d565b9150614a1e83614b6d565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115614a5357614a52614c79565b5b828201905092915050565b6000614a6982614b6d565b9150614a7483614b6d565b925082614a8457614a83614ca8565b5b828204905092915050565b6000614a9a82614b6d565b9150614aa583614b6d565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615614ade57614add614c79565b5b828202905092915050565b6000614af482614b6d565b9150614aff83614b6d565b925082821015614b1257614b11614c79565b5b828203905092915050565b6000614b2882614b4d565b9050919050565b6000614b3a82614b4d565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b6000614b8f82614ba8565b9050919050565b6000614ba182614b6d565b9050919050565b6000614bb382614bba565b9050919050565b6000614bc582614b4d565b9050919050565b60005b83811015614bea578082015181840152602081019050614bcf565b83811115614bf9576000848401525b50505050565b614c0882614d49565b810181811067ffffffffffffffff82111715614c2757614c26614d06565b5b80604052505050565b6000614c3b82614b6d565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415614c6e57614c6d614c79565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b7f45786365656473206d6178696d756d2077616c6c657420746f6b656e20616d6f60008201527f756e742e00000000000000000000000000000000000000000000000000000000602082015250565b7f5472616e7366657220616d6f756e74206578636565647320746865206d61784260008201527f7579416d6f756e742e0000000000000000000000000000000000000000000000602082015250565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b7f4d757374206b656570206275792074617865732062656c6f7720333025000000600082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f4d757374206b6565702073656c6c2074617865732062656c6f77203630250000600082015250565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b7f6c697175696469747957616c6c657420616464726573732063616e6e6f74206260008201527f6520300000000000000000000000000000000000000000000000000000000000602082015250565b7f5377617020616d6f756e742063616e6e6f74206265206869676865722074686160008201527f6e20312e302520746f74616c20737570706c792e000000000000000000000000602082015250565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f44657657616c6c657420616464726573732063616e6e6f742062652030000000600082015250565b50565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f74726164696e6720697320616c7265616479206f70656e000000000000000000600082015250565b7f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60008201527f20302e312520746f74616c20737570706c792e00000000000000000000000000602082015250565b7f5472616e7366657220616d6f756e74206578636565647320746865206d61785360008201527f656c6c416d6f756e742e00000000000000000000000000000000000000000000602082015250565b7f4d61726b6574696e6757616c6c657420616464726573732063616e6e6f74206260008201527f6520300000000000000000000000000000000000000000000000000000000000602082015250565b7f21415554484f52495a4544000000000000000000000000000000000000000000600082015250565b7f43616e206f6e6c792077697468647261772069662074726164696e672068617360008201527f6e27742073746172746564000000000000000000000000000000000000000000602082015250565b6152d781614b1d565b81146152e257600080fd5b50565b6152ee81614b2f565b81146152f957600080fd5b50565b61530581614b41565b811461531057600080fd5b50565b61531c81614b6d565b811461532757600080fd5b5056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212209e5ad79aad3f1c3ffcd04a7f23cc65c487ef3ffb4bab44d2cdf47cc5c72c968364736f6c63430008070033

Deployed Bytecode Sourcemap

3995:17272:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7048:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7879:161;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7325:95;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15707:283;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8048:313;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18481:88;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14911:109;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15998:331;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7234:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16337:111;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16928:356;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8369:103;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15368:331;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20607:154;;;;;;;;;;;;;:::i;:::-;;7428:117;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2779:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7139:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7553:167;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15032:328;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14517:164;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16578:342;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20440:155;;;;;;;;;;;;;:::i;:::-;;13502:1003;;;;;;;;;;;;;:::i;:::-;;7728:143;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8480:94;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17292:108;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14796:103;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16460:110;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2993:177;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14689:99;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20769:240;;;;;;;;;;;;;:::i;:::-;;7048:83;7085:13;7118:5;;;;;;;;;;;;;;;;;7111:12;;7048:83;:::o;7879:161::-;7954:4;7971:39;7980:12;:10;:12::i;:::-;7994:7;8003:6;7971:8;:39::i;:::-;8028:4;8021:11;;7879:161;;;;:::o;7325:95::-;7378:7;4397:20;7398:14;;7325:95;:::o;15707:283::-;2916:12;:10;:12::i;:::-;2906:22;;:6;;;;;;;;;;:22;;;2898:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;15807:1:::1;15786:23;;:9;:23;;;;15778:65;;;;;;;;;;;;:::i;:::-;;;;;;;;;15887:5;15854:18;:30;15873:10;;;;;;;;;;;15854:30;;;;;;;;;;;;;;;;:38;;;;;;;;;;;;;;;;;;15924:9;15903:10;;:31;;;;;;;;;;;;;;;;;;15978:4;15945:18;:30;15964:10;;;;;;;;;;;15945:30;;;;;;;;;;;;;;;;:37;;;;;;;;;;;;;;;;;;15707:283:::0;:::o;8048:313::-;8146:4;8163:36;8173:6;8181:9;8192:6;8163:9;:36::i;:::-;8210:121;8219:6;8227:12;:10;:12::i;:::-;8241:89;8279:6;8241:89;;;;;;;;;;;;;;;;;:11;:19;8253:6;8241:19;;;;;;;;;;;;;;;:33;8261:12;:10;:12::i;:::-;8241:33;;;;;;;;;;;;;;;;:37;;:89;;;;;:::i;:::-;8210:8;:121::i;:::-;8349:4;8342:11;;8048:313;;;;;:::o;18481:88::-;2916:12;:10;:12::i;:::-;2906:22;;:6;;;;;;;;;;:22;;;2898:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;18556:5:::1;18541:4;:12;18546:6;18541:12;;;;;;;;;;;;;;;;:20;;;;;;;;;;;;;;;;;;18481:88:::0;:::o;14911:109::-;2916:12;:10;:12::i;:::-;2906:22;;:6;;;;;;;;;;:22;;;2898:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;15004:8:::1;14985:16;:27;;;;14911:109:::0;:::o;15998:331::-;2916:12;:10;:12::i;:::-;2906:22;;:6;;;;;;;;;;:22;;;2898:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;16116:1:::1;16089:29;;:15;:29;;;;16081:77;;;;;;;;;;;;:::i;:::-;;;;;;;;;16208:5;16169:18;:36;16188:16;;;;;;;;;;;16169:36;;;;;;;;;;;;;;;;:44;;;;;;;;;;;;;;;;;;16251:15;16224:16;;:43;;;;;;;;;;;;;;;;;;16317:4;16278:18;:36;16297:16;;;;;;;;;;;16278:36;;;;;;;;;;;;;;;;:43;;;;;;;;;;;;;;;;;;15998:331:::0;:::o;7234:83::-;7275:5;5461:1;7293:16;;7234:83;:::o;16337:111::-;2916:12;:10;:12::i;:::-;2906:22;;:6;;;;;;;;;;:22;;;2898:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;16436:4:::1;16406:18;:27;16425:7;16406:27;;;;;;;;;;;;;;;;:34;;;;;;;;;;;;;;;;;;16337:111:::0;:::o;16928:356::-;2916:12;:10;:12::i;:::-;2906:22;;:6;;;;;;;;;;:22;;;2898:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17110:2:::1;17096:10;17077:16;17058;:35;;;;:::i;:::-;:48;;;;:::i;:::-;:54;;17050:97;;;;;;;;;;;;:::i;:::-;;;;;;;;;17178:16;17158:17;:36;;;;17225:16;17205:17;:36;;;;17266:10;17252:11;:24;;;;16928:356:::0;;;:::o;8369:103::-;2916:12;:10;:12::i;:::-;2906:22;;:6;;;;;;;;;;:22;;;2898:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;8459:5:::1;8441:15;;:23;;;;;;;;;;;;;;;;;;8369:103:::0;:::o;15368:331::-;2916:12;:10;:12::i;:::-;2906:22;;:6;;;;;;;;;;:22;;;2898:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;15486:1:::1;15459:29;;:15;:29;;;;15451:77;;;;;;;;;;;;:::i;:::-;;;;;;;;;15578:5;15539:18;:36;15558:16;;;;;;;;;;;15539:36;;;;;;;;;;;;;;;;:44;;;;;;;;;;;;;;;;;;15621:15;15594:16;;:43;;;;;;;;;;;;;;;;;;15687:4;15648:18;:36;15667:16;;;;;;;;;;;15648:36;;;;;;;;;;;;;;;;:43;;;;;;;;;;;;;;;;;;15368:331:::0;:::o;20607:154::-;2501:24;2514:10;2501:12;:24::i;:::-;2493:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;20660:26:::1;20689:21;20660:50;;20721:32;20734:18;20721:12;:32::i;:::-;20649:112;20607:154::o:0;7428:117::-;7494:7;7521;:16;7529:7;7521:16;;;;;;;;;;;;;;;;7514:23;;7428:117;;;:::o;2779:79::-;2817:7;2844:6;;;;;;;;;;;2837:13;;2779:79;:::o;7139:87::-;7178:13;7211:7;;;;;;;;;;;;;;;;;7204:14;;7139:87;:::o;7553:167::-;7631:4;7648:42;7658:12;:10;:12::i;:::-;7672:9;7683:6;7648:9;:42::i;:::-;7708:4;7701:11;;7553:167;;;;:::o;15032:328::-;2916:12;:10;:12::i;:::-;2906:22;;:6;;;;;;;;;;:22;;;2898:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;15131:17:::1;15118:9;:30;;15110:94;;;;;;;;;;;;:::i;:::-;;;;;;;;;15236:18;15223:9;:31;;15215:96;;;;;;;;;;;;:::i;:::-;;;;;;;;;15343:9;15322:18;:30;;;;15032:328:::0;:::o;14517:164::-;2916:12;:10;:12::i;:::-;2906:22;;:6;;;;;;;;;;:22;;;2898:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;14591:6:::1;14586:88;14607:5;:12;14603:1;:16;14586:88;;;14658:4;14641;:14;14646:5;14652:1;14646:8;;;;;;;;:::i;:::-;;;;;;;;14641:14;;;;;;;;;;;;;;;;:21;;;;;;;;;;;;;;;;;;14621:3;;;;;:::i;:::-;;;;14586:88;;;;14517:164:::0;:::o;16578:342::-;2916:12;:10;:12::i;:::-;2906:22;;:6;;;;;;;;;;:22;;;2898:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;16753:2:::1;16740:9;16722:15;16704;:33;;;;:::i;:::-;:45;;;;:::i;:::-;:51;;16696:93;;;;;;;;;;;;:::i;:::-;;;;;;;;;16819:15;16800:16;:34;;;;16864:15;16845:16;:34;;;;16903:9;16890:10;:22;;;;16578:342:::0;;;:::o;20440:155::-;2501:24;2514:10;2501:12;:24::i;:::-;2493:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;20493:23:::1;20519:24;20537:4;20519:9;:24::i;:::-;20493:50;;20554:33;20571:15;20554:16;:33::i;:::-;20482:113;20440:155::o:0;13502:1003::-;2916:12;:10;:12::i;:::-;2906:22;;:6;;;;;;;;;;:22;;;2898:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;13566:11:::1;;;;;;;;;;;13565:12;13557:47;;;;;;;;;;;;:::i;:::-;;;;;;;;;13615:35;13672:42;13615:100;;13744:16;13726:15;;:34;;;;;;;;;;;;;;;;;;13771:58;13788:4;13803:15;;;;;;;;;;;4397:20;13771:8;:58::i;:::-;13874:16;:24;;;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13856:56;;;13921:4;13928:16;:21;;;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13856:96;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13840:13;;:112;;;;;;;;;;;;;;;;;;13963:15;;;;;;;;;;;:31;;;14002:21;14033:4;14039:24;14057:4;14039:9;:24::i;:::-;14064:1;14066::::0;14068:7:::1;:5;:7::i;:::-;14076:15;13963:129;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;14117:4;14103:11;;:18;;;;;;;;;;;;;;;;;;14150:4;14132:15;;:22;;;;;;;;;;;;;;;;;;14181:18;14165:13;:34;;;;14227:18;14210:14;:35;;;;14275:18;14256:16;:37;;;;14325:17;14304:18;:38;;;;14367:4;14353:11;;:18;;;;;;;;;;;;;;;;;;14403:12;14382:18;:33;;;;14433:13;;;;;;;;;;;14426:29;;;14464:15;;;;;;;;;;;14482:14;14426:71;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;13546:959;13502:1003::o:0;7728:143::-;7809:7;7836:11;:18;7848:5;7836:18;;;;;;;;;;;;;;;:27;7855:7;7836:27;;;;;;;;;;;;;;;;7829:34;;7728:143;;;;:::o;8480:94::-;2916:12;:10;:12::i;:::-;2906:22;;:6;;;;;;;;;;:22;;;2898:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;8561:5:::1;8547:11;;:19;;;;;;;;;;;;;;;;;;8480:94:::0;:::o;17292:108::-;2916:12;:10;:12::i;:::-;2906:22;;:6;;;;;;;;;;:22;;;2898:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17386:6:::1;17366:17;:26;;;;17292:108:::0;:::o;14796:103::-;2916:12;:10;:12::i;:::-;2906:22;;:6;;;;;;;;;;:22;;;2898:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;14884:7:::1;14867:14;:24;;;;14796:103:::0;:::o;16460:110::-;2916:12;:10;:12::i;:::-;2906:22;;:6;;;;;;;;;;:22;;;2898:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;16557:5:::1;16527:18;:27;16546:7;16527:27;;;;;;;;;;;;;;;;:35;;;;;;;;;;;;;;;;;;16460:110:::0;:::o;2993:177::-;2501:24;2514:10;2501:12;:24::i;:::-;2493:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;3081:3:::1;3072:6;::::0;:12:::1;;;;;;;;;;;;;;;;;;3117:4;3095:14;:19;3110:3;3095:19;;;;;;;;;;;;;;;;:26;;;;;;;;;;;;;;;;;;3137:25;3158:3;3137:25;;;;;;:::i;:::-;;;;;;;;2993:177:::0;:::o;14689:99::-;2916:12;:10;:12::i;:::-;2906:22;;:6;;;;;;;;;;:22;;;2898:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;14774:6:::1;14758:13;:22;;;;14689:99:::0;:::o;20769:240::-;2501:24;2514:10;2501:12;:24::i;:::-;2493:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;20837:11:::1;;;;;;;;;;;20836:12;20828:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;20907:12;20951:10;20943:24;;20975:21;20943:58;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20930:71;;;;;20817:192;20769:240::o:0;231:98::-;284:7;311:10;304:17;;231:98;:::o;8582:335::-;8692:1;8675:19;;:5;:19;;;;8667:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;8773:1;8754:21;;:7;:21;;;;8746:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;8855:6;8825:11;:18;8837:5;8825:18;;;;;;;;;;;;;;;:27;8844:7;8825:27;;;;;;;;;;;;;;;:36;;;;8893:7;8877:32;;8886:5;8877:32;;;8902:6;8877:32;;;;;;:::i;:::-;;;;;;;;8582:335;;;:::o;8925:1850::-;9029:1;9013:18;;:4;:18;;;;9005:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9106:1;9092:16;;:2;:16;;;;9084:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;9176:1;9167:6;:10;9159:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;9234:12;9265:15;9311:7;:5;:7::i;:::-;9303:15;;:4;:15;;;;:32;;;;;9328:7;:5;:7::i;:::-;9322:13;;:2;:13;;;;9303:32;:52;;;;;9353:1;9339:16;;:2;:16;;;;9303:52;:77;;;;;9373:6;9359:21;;:2;:21;;;;9303:77;:90;;;;;9385:8;;;;;;;;;;;9384:9;9303:90;9299:939;;;9419:4;:10;9424:4;9419:10;;;;;;;;;;;;;;;;;;;;;;;;;9418:11;:24;;;;;9434:4;:8;9439:2;9434:8;;;;;;;;;;;;;;;;;;;;;;;;;9433:9;9418:24;9410:33;;;;;;9470:4;9460:14;;9501:13;;;;;;;;;;;9493:21;;:4;:21;;;:55;;;;;9532:15;;;;;;;;;;;9518:30;;:2;:30;;;;9493:55;:82;;;;;9553:18;:22;9572:2;9553:22;;;;;;;;;;;;;;;;;;;;;;;;;9552:23;9493:82;:101;;;;;9579:15;;;;;;;;;;;9493:101;9489:451;;;9633:13;;9623:6;:23;;9615:77;;;;;;;;;;;;:::i;:::-;;;;;;;;;9745:16;;9735:6;9719:13;9729:2;9719:9;:13::i;:::-;:22;;;;:::i;:::-;:42;;9711:91;;;;;;;;;;;;:::i;:::-;;;;;;;;;9844:15;9829:8;:12;9838:2;9829:12;;;;;;;;;;;;;;;;:30;9821:39;;;;;;9913:10;9894:15;:30;;;;:::i;:::-;9879:8;:12;9888:2;9879:12;;;;;;;;;;;;;;;:45;;;;9489:451;9978:13;;;;;;;;;;;9972:19;;:2;:19;;;:55;;;;;10011:15;;;;;;;;;;;9995:32;;:4;:32;;;;9972:55;:84;;;;;10032:18;:24;10051:4;10032:24;;;;;;;;;;;;;;;;;;;;;;;;;10031:25;9972:84;:103;;;;;10060:15;;;;;;;;;;;9972:103;9968:259;;;10114:14;;10104:6;:24;;10096:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;10207:4;10194:17;;9968:259;9299:939;10253:18;:24;10272:4;10253:24;;;;;;;;;;;;;;;;;;;;;;;;;:50;;;;10281:18;:22;10300:2;10281:22;;;;;;;;;;;;;;;;;;;;;;;;;10253:50;10250:97;;;10330:5;10320:15;;10250:97;10359:28;10390:24;10408:4;10390:9;:24::i;:::-;10359:55;;10425:12;10464:18;;10441:20;:41;10440:57;;;;;10487:10;10440:57;10425:72;;10514:7;:22;;;;;10525:11;;;;;;;;;;;10514:22;:35;;;;;10541:8;;;;;;;;;;;10540:9;10514:35;:64;;;;;10554:18;:24;10573:4;10554:24;;;;;;;;;;;;;;;;;;;;;;;;;10553:25;10514:64;:91;;;;;10583:18;:22;10602:2;10583:22;;;;;;;;;;;;;;;;;;;;;;;;;10582:23;10514:91;10510:195;;;10633:4;10622:8;;:15;;;;;;;;;;;;;;;;;;10652:10;:8;:10::i;:::-;10688:5;10677:8;;:16;;;;;;;;;;;;;;;;;;10510:195;10717:50;10732:4;10737:2;10740:6;10747:7;10756:10;10717:14;:50::i;:::-;8994:1781;;;;8925:1850;;;:::o;1368:190::-;1454:7;1487:1;1482;:6;;1490:12;1474:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;1514:9;1530:1;1526;:5;;;;:::i;:::-;1514:17;;1549:1;1542:8;;;1368:190;;;;;:::o;2560:108::-;2617:4;2641:14;:19;2656:3;2641:19;;;;;;;;;;;;;;;;;;;;;;;;;2634:26;;2560:108;;;:::o;13392:98::-;13449:16;;;;;;;;;;;:25;;:33;13475:6;13449:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13392:98;:::o;12462:483::-;6331:4;6322:6;;:13;;;;;;;;;;;;;;;;;;12540:21:::1;12578:1;12564:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12540:40;;12609:4;12591;12596:1;12591:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;12635:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12625:4;12630:1;12625:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;::::0;::::1;12668:62;12685:4;12700:15;;;;;;;;;;;12718:11;12668:8;:62::i;:::-;12741:15;;;;;;;;;;;:66;;;12822:11;12848:1;12864:4;12891;12911:15;12741:196;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;12529:416;6367:5:::0;6358:6;;:14;;;;;;;;;;;;;;;;;;12462:483;:::o;10783:1671::-;10822:23;10848:24;10866:4;10848:9;:24::i;:::-;10822:50;;10883:25;10947:18;;10932:12;;10911:18;;:33;;;;:::i;:::-;:54;;;;:::i;:::-;10883:82;;10976:12;11031:1;11012:15;:20;:46;;;;11057:1;11036:17;:22;11012:46;11009:60;;;11061:7;;;;;11009:60;11123:2;11102:18;;:23;;;;:::i;:::-;11084:15;:41;11081:114;;;11181:2;11160:18;;:23;;;;:::i;:::-;11142:41;;11081:114;11264:23;11349:1;11329:17;11308:18;;11290:15;:36;;;;:::i;:::-;:56;;;;:::i;:::-;:60;;;;:::i;:::-;11264:86;;11361:26;11390:36;11410:15;11390;:19;;:36;;;;:::i;:::-;11361:65;;11447:25;11475:21;11447:49;;11509:36;11526:18;11509:16;:36::i;:::-;11567:18;11588:44;11614:17;11588:21;:25;;:44;;;;:::i;:::-;11567:65;;11653:17;11673:51;11706:17;11673:28;11688:12;;11673:10;:14;;:28;;;;:::i;:::-;:32;;:51;;;;:::i;:::-;11653:71;;11735:23;11761:57;11800:17;11761:34;11776:18;;11761:10;:14;;:34;;;;:::i;:::-;:38;;:57;;;;:::i;:::-;11735:83;;11849:23;11900:15;11888:9;11875:10;:22;;;;:::i;:::-;:40;;;;:::i;:::-;11849:66;;11967:1;11946:18;:22;;;;11994:1;11979:12;:16;;;;12027:1;12006:18;:22;;;;12070:10;;;;;;;;;;;12062:24;;12094:9;12062:46;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12049:59;;;;;12150:1;12132:15;:19;:42;;;;;12173:1;12155:15;:19;12132:42;12129:210;;;12190:46;12203:15;12220;12190:12;:46::i;:::-;12256:71;12271:18;12291:15;12308:18;;12256:71;;;;;;;;:::i;:::-;;;;;;;;12129:210;12390:16;;;;;;;;;;;12382:30;;12420:21;12382:64;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12369:77;;;;;10811:1643;;;;;;;;;;10783:1671;:::o;18585:389::-;18710:7;18706:129;;18734:14;:12;:14::i;:::-;18706:129;;;18790:33;18800:6;18808;18816;18790:9;:33::i;:::-;18781:42;;18706:129;18847:44;18865:6;18873:9;18884:6;18847:17;:44::i;:::-;18916:7;18912:55;;18940:15;:13;:15::i;:::-;18912:55;18585:389;;;;;:::o;1224:136::-;1282:7;1309:43;1313:1;1316;1309:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;1302:50;;1224:136;;;;:::o;1566:246::-;1624:7;1653:1;1648;:6;1644:47;;;1678:1;1671:8;;;;1644:47;1701:9;1717:1;1713;:5;;;;:::i;:::-;1701:17;;1746:1;1741;1737;:5;;;;:::i;:::-;:10;1729:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;1803:1;1796:8;;;1566:246;;;;;:::o;1820:132::-;1878:7;1905:39;1909:1;1912;1905:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;1898:46;;1820:132;;;;:::o;12953:423::-;13034:62;13051:4;13066:15;;;;;;;;;;;13084:11;13034:8;:62::i;:::-;13107:15;;;;;;;;;;;:31;;;13146:9;13179:4;13199:11;13225:1;13268;13311:16;;;;;;;;;;;13342:15;13107:261;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;12953:423;;:::o;17408:702::-;17474:1;17454:16;;:21;:46;;;;;17499:1;17479:16;;:21;17454:46;:65;;;;;17518:1;17504:10;;:15;17454:65;:91;;;;;17544:1;17523:17;;:22;17454:91;:117;;;;;17570:1;17549:17;;:22;17454:117;:137;;;;;17590:1;17575:11;;:16;17454:137;17451:149;;;17593:7;;17451:149;17647:16;;17620:24;:43;;;;17701:16;;17674:24;:43;;;;17749:10;;17728:18;:31;;;;17798:17;;17770:25;:45;;;;17854:17;;17826:25;:45;;;;17904:11;;17882:19;:33;;;;17955:1;17936:16;:20;;;;17986:1;17967:16;:20;;;;18011:1;17998:10;:14;;;;18043:1;18023:17;:21;;;;18075:1;18055:17;:21;;;;18101:1;18087:11;:15;;;;17408:702;:::o;19257:1134::-;19338:7;19358:18;19387:20;19418:14;19443;19513:12;19492:17;;19471:18;;:38;;;;:::i;:::-;:54;19468:524;;19554:2;19541:15;;19580:2;19571:11;;19468:524;;;19628:21;19642:6;19628:13;:21::i;:::-;19615:34;;19668:6;19664:317;;;19710:17;;19695:32;;19755:17;;19746:26;;19800:11;;19791:20;;19664:317;;;19867:16;;19852:31;;19911:16;;19902:25;;19955:10;;19946:19;;19664:317;19468:524;20004:12;20019:31;20046:3;20019:22;20030:10;20019:6;:10;;:22;;;;:::i;:::-;:26;;:31;;;;:::i;:::-;20004:46;;20093:10;20084:6;20077:4;:13;;;;:::i;:::-;:26;;;;:::i;:::-;20061:12;;:42;;;;;;;:::i;:::-;;;;;;;;20158:10;20143:12;20136:4;:19;;;;:::i;:::-;:32;;;;:::i;:::-;20114:18;;:54;;;;;;;:::i;:::-;;;;;;;;20217:10;20208:6;20201:4;:13;;;;:::i;:::-;:26;;;;:::i;:::-;20179:18;;:48;;;;;;;:::i;:::-;;;;;;;;20262:1;20255:4;:8;20252:86;;;20280:46;20298:6;20314:4;20321;20280:17;:46::i;:::-;20252:86;20379:4;20369:14;;;;;:::i;:::-;;;;20362:21;;;;;;;19257:1134;;;;;:::o;18982:267::-;19098:28;19118:7;19098;:15;19106:6;19098:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;19080:7;:15;19088:6;19080:15;;;;;;;;;;;;;;;:46;;;;19158:31;19181:7;19158;:18;19166:9;19158:18;;;;;;;;;;;;;;;;:22;;:31;;;;:::i;:::-;19137:7;:18;19145:9;19137:18;;;;;;;;;;;;;;;:52;;;;19222:9;19205:36;;19214:6;19205:36;;;19233:7;19205:36;;;;;;:::i;:::-;;;;;;;;18982:267;;;:::o;18122:347::-;18185:24;;18166:16;:43;;;;18239:24;;18220:16;:43;;;;18287:18;;18274:10;:31;;;;18336:25;;18316:17;:45;;;;18392:25;;18372:17;:45;;;;18442:19;;18428:11;:33;;;;18122:347::o;1960:189::-;2046:7;2078:1;2074;:5;2081:12;2066:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;2105:9;2121:1;2117;:5;;;;:::i;:::-;2105:17;;2140:1;2133:8;;;1960:189;;;;;:::o;21017:247::-;21074:7;21098:6;21094:97;;;21168:11;;21148:17;;21128;;:37;;;;:::i;:::-;:51;;;;:::i;:::-;21121:58;;;;21094:97;21246:10;;21227:16;;21208;;:35;;;;:::i;:::-;:48;;;;:::i;:::-;21201:55;;21017:247;;;;:::o;1037:179::-;1095:7;1115:9;1131:1;1127;:5;;;;:::i;:::-;1115:17;;1156:1;1151;:6;;1143:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;1207:1;1200:8;;;1037:179;;;;:::o;24:722:1:-;120:5;145:81;161:64;218:6;161:64;:::i;:::-;145:81;:::i;:::-;136:90;;246:5;275:6;268:5;261:21;309:4;302:5;298:16;291:23;;335:6;385:3;377:4;369:6;365:17;360:3;356:27;353:36;350:143;;;404:79;;:::i;:::-;350:143;517:1;502:238;527:6;524:1;521:13;502:238;;;595:3;624:37;657:3;645:10;624:37;:::i;:::-;619:3;612:50;691:4;686:3;682:14;675:21;;725:4;720:3;716:14;709:21;;562:178;549:1;546;542:9;537:14;;502:238;;;506:14;126:620;;24:722;;;;;:::o;752:139::-;798:5;836:6;823:20;814:29;;852:33;879:5;852:33;:::i;:::-;752:139;;;;:::o;897:143::-;954:5;985:6;979:13;970:22;;1001:33;1028:5;1001:33;:::i;:::-;897:143;;;;:::o;1046:155::-;1100:5;1138:6;1125:20;1116:29;;1154:41;1189:5;1154:41;:::i;:::-;1046:155;;;;:::o;1224:370::-;1295:5;1344:3;1337:4;1329:6;1325:17;1321:27;1311:122;;1352:79;;:::i;:::-;1311:122;1469:6;1456:20;1494:94;1584:3;1576:6;1569:4;1561:6;1557:17;1494:94;:::i;:::-;1485:103;;1301:293;1224:370;;;;:::o;1600:133::-;1643:5;1681:6;1668:20;1659:29;;1697:30;1721:5;1697:30;:::i;:::-;1600:133;;;;:::o;1739:137::-;1793:5;1824:6;1818:13;1809:22;;1840:30;1864:5;1840:30;:::i;:::-;1739:137;;;;:::o;1882:139::-;1928:5;1966:6;1953:20;1944:29;;1982:33;2009:5;1982:33;:::i;:::-;1882:139;;;;:::o;2027:143::-;2084:5;2115:6;2109:13;2100:22;;2131:33;2158:5;2131:33;:::i;:::-;2027:143;;;;:::o;2176:329::-;2235:6;2284:2;2272:9;2263:7;2259:23;2255:32;2252:119;;;2290:79;;:::i;:::-;2252:119;2410:1;2435:53;2480:7;2471:6;2460:9;2456:22;2435:53;:::i;:::-;2425:63;;2381:117;2176:329;;;;:::o;2511:351::-;2581:6;2630:2;2618:9;2609:7;2605:23;2601:32;2598:119;;;2636:79;;:::i;:::-;2598:119;2756:1;2781:64;2837:7;2828:6;2817:9;2813:22;2781:64;:::i;:::-;2771:74;;2727:128;2511:351;;;;:::o;2868:345::-;2935:6;2984:2;2972:9;2963:7;2959:23;2955:32;2952:119;;;2990:79;;:::i;:::-;2952:119;3110:1;3135:61;3188:7;3179:6;3168:9;3164:22;3135:61;:::i;:::-;3125:71;;3081:125;2868:345;;;;:::o;3219:474::-;3287:6;3295;3344:2;3332:9;3323:7;3319:23;3315:32;3312:119;;;3350:79;;:::i;:::-;3312:119;3470:1;3495:53;3540:7;3531:6;3520:9;3516:22;3495:53;:::i;:::-;3485:63;;3441:117;3597:2;3623:53;3668:7;3659:6;3648:9;3644:22;3623:53;:::i;:::-;3613:63;;3568:118;3219:474;;;;;:::o;3699:619::-;3776:6;3784;3792;3841:2;3829:9;3820:7;3816:23;3812:32;3809:119;;;3847:79;;:::i;:::-;3809:119;3967:1;3992:53;4037:7;4028:6;4017:9;4013:22;3992:53;:::i;:::-;3982:63;;3938:117;4094:2;4120:53;4165:7;4156:6;4145:9;4141:22;4120:53;:::i;:::-;4110:63;;4065:118;4222:2;4248:53;4293:7;4284:6;4273:9;4269:22;4248:53;:::i;:::-;4238:63;;4193:118;3699:619;;;;;:::o;4324:474::-;4392:6;4400;4449:2;4437:9;4428:7;4424:23;4420:32;4417:119;;;4455:79;;:::i;:::-;4417:119;4575:1;4600:53;4645:7;4636:6;4625:9;4621:22;4600:53;:::i;:::-;4590:63;;4546:117;4702:2;4728:53;4773:7;4764:6;4753:9;4749:22;4728:53;:::i;:::-;4718:63;;4673:118;4324:474;;;;;:::o;4804:539::-;4888:6;4937:2;4925:9;4916:7;4912:23;4908:32;4905:119;;;4943:79;;:::i;:::-;4905:119;5091:1;5080:9;5076:17;5063:31;5121:18;5113:6;5110:30;5107:117;;;5143:79;;:::i;:::-;5107:117;5248:78;5318:7;5309:6;5298:9;5294:22;5248:78;:::i;:::-;5238:88;;5034:302;4804:539;;;;:::o;5349:323::-;5405:6;5454:2;5442:9;5433:7;5429:23;5425:32;5422:119;;;5460:79;;:::i;:::-;5422:119;5580:1;5605:50;5647:7;5638:6;5627:9;5623:22;5605:50;:::i;:::-;5595:60;;5551:114;5349:323;;;;:::o;5678:345::-;5745:6;5794:2;5782:9;5773:7;5769:23;5765:32;5762:119;;;5800:79;;:::i;:::-;5762:119;5920:1;5945:61;5998:7;5989:6;5978:9;5974:22;5945:61;:::i;:::-;5935:71;;5891:125;5678:345;;;;:::o;6029:329::-;6088:6;6137:2;6125:9;6116:7;6112:23;6108:32;6105:119;;;6143:79;;:::i;:::-;6105:119;6263:1;6288:53;6333:7;6324:6;6313:9;6309:22;6288:53;:::i;:::-;6278:63;;6234:117;6029:329;;;;:::o;6364:619::-;6441:6;6449;6457;6506:2;6494:9;6485:7;6481:23;6477:32;6474:119;;;6512:79;;:::i;:::-;6474:119;6632:1;6657:53;6702:7;6693:6;6682:9;6678:22;6657:53;:::i;:::-;6647:63;;6603:117;6759:2;6785:53;6830:7;6821:6;6810:9;6806:22;6785:53;:::i;:::-;6775:63;;6730:118;6887:2;6913:53;6958:7;6949:6;6938:9;6934:22;6913:53;:::i;:::-;6903:63;;6858:118;6364:619;;;;;:::o;6989:663::-;7077:6;7085;7093;7142:2;7130:9;7121:7;7117:23;7113:32;7110:119;;;7148:79;;:::i;:::-;7110:119;7268:1;7293:64;7349:7;7340:6;7329:9;7325:22;7293:64;:::i;:::-;7283:74;;7239:128;7406:2;7432:64;7488:7;7479:6;7468:9;7464:22;7432:64;:::i;:::-;7422:74;;7377:129;7545:2;7571:64;7627:7;7618:6;7607:9;7603:22;7571:64;:::i;:::-;7561:74;;7516:129;6989:663;;;;;:::o;7658:179::-;7727:10;7748:46;7790:3;7782:6;7748:46;:::i;:::-;7826:4;7821:3;7817:14;7803:28;;7658:179;;;;:::o;7843:147::-;7938:45;7977:5;7938:45;:::i;:::-;7933:3;7926:58;7843:147;;:::o;7996:108::-;8073:24;8091:5;8073:24;:::i;:::-;8068:3;8061:37;7996:108;;:::o;8110:118::-;8197:24;8215:5;8197:24;:::i;:::-;8192:3;8185:37;8110:118;;:::o;8264:732::-;8383:3;8412:54;8460:5;8412:54;:::i;:::-;8482:86;8561:6;8556:3;8482:86;:::i;:::-;8475:93;;8592:56;8642:5;8592:56;:::i;:::-;8671:7;8702:1;8687:284;8712:6;8709:1;8706:13;8687:284;;;8788:6;8782:13;8815:63;8874:3;8859:13;8815:63;:::i;:::-;8808:70;;8901:60;8954:6;8901:60;:::i;:::-;8891:70;;8747:224;8734:1;8731;8727:9;8722:14;;8687:284;;;8691:14;8987:3;8980:10;;8388:608;;;8264:732;;;;:::o;9002:109::-;9083:21;9098:5;9083:21;:::i;:::-;9078:3;9071:34;9002:109;;:::o;9117:147::-;9212:45;9251:5;9212:45;:::i;:::-;9207:3;9200:58;9117:147;;:::o;9270:364::-;9358:3;9386:39;9419:5;9386:39;:::i;:::-;9441:71;9505:6;9500:3;9441:71;:::i;:::-;9434:78;;9521:52;9566:6;9561:3;9554:4;9547:5;9543:16;9521:52;:::i;:::-;9598:29;9620:6;9598:29;:::i;:::-;9593:3;9589:39;9582:46;;9362:272;9270:364;;;;:::o;9640:366::-;9782:3;9803:67;9867:2;9862:3;9803:67;:::i;:::-;9796:74;;9879:93;9968:3;9879:93;:::i;:::-;9997:2;9992:3;9988:12;9981:19;;9640:366;;;:::o;10012:::-;10154:3;10175:67;10239:2;10234:3;10175:67;:::i;:::-;10168:74;;10251:93;10340:3;10251:93;:::i;:::-;10369:2;10364:3;10360:12;10353:19;;10012:366;;;:::o;10384:::-;10526:3;10547:67;10611:2;10606:3;10547:67;:::i;:::-;10540:74;;10623:93;10712:3;10623:93;:::i;:::-;10741:2;10736:3;10732:12;10725:19;;10384:366;;;:::o;10756:::-;10898:3;10919:67;10983:2;10978:3;10919:67;:::i;:::-;10912:74;;10995:93;11084:3;10995:93;:::i;:::-;11113:2;11108:3;11104:12;11097:19;;10756:366;;;:::o;11128:::-;11270:3;11291:67;11355:2;11350:3;11291:67;:::i;:::-;11284:74;;11367:93;11456:3;11367:93;:::i;:::-;11485:2;11480:3;11476:12;11469:19;;11128:366;;;:::o;11500:::-;11642:3;11663:67;11727:2;11722:3;11663:67;:::i;:::-;11656:74;;11739:93;11828:3;11739:93;:::i;:::-;11857:2;11852:3;11848:12;11841:19;;11500:366;;;:::o;11872:::-;12014:3;12035:67;12099:2;12094:3;12035:67;:::i;:::-;12028:74;;12111:93;12200:3;12111:93;:::i;:::-;12229:2;12224:3;12220:12;12213:19;;11872:366;;;:::o;12244:::-;12386:3;12407:67;12471:2;12466:3;12407:67;:::i;:::-;12400:74;;12483:93;12572:3;12483:93;:::i;:::-;12601:2;12596:3;12592:12;12585:19;;12244:366;;;:::o;12616:::-;12758:3;12779:67;12843:2;12838:3;12779:67;:::i;:::-;12772:74;;12855:93;12944:3;12855:93;:::i;:::-;12973:2;12968:3;12964:12;12957:19;;12616:366;;;:::o;12988:::-;13130:3;13151:67;13215:2;13210:3;13151:67;:::i;:::-;13144:74;;13227:93;13316:3;13227:93;:::i;:::-;13345:2;13340:3;13336:12;13329:19;;12988:366;;;:::o;13360:::-;13502:3;13523:67;13587:2;13582:3;13523:67;:::i;:::-;13516:74;;13599:93;13688:3;13599:93;:::i;:::-;13717:2;13712:3;13708:12;13701:19;;13360:366;;;:::o;13732:::-;13874:3;13895:67;13959:2;13954:3;13895:67;:::i;:::-;13888:74;;13971:93;14060:3;13971:93;:::i;:::-;14089:2;14084:3;14080:12;14073:19;;13732:366;;;:::o;14104:::-;14246:3;14267:67;14331:2;14326:3;14267:67;:::i;:::-;14260:74;;14343:93;14432:3;14343:93;:::i;:::-;14461:2;14456:3;14452:12;14445:19;;14104:366;;;:::o;14476:::-;14618:3;14639:67;14703:2;14698:3;14639:67;:::i;:::-;14632:74;;14715:93;14804:3;14715:93;:::i;:::-;14833:2;14828:3;14824:12;14817:19;;14476:366;;;:::o;14848:398::-;15007:3;15028:83;15109:1;15104:3;15028:83;:::i;:::-;15021:90;;15120:93;15209:3;15120:93;:::i;:::-;15238:1;15233:3;15229:11;15222:18;;14848:398;;;:::o;15252:366::-;15394:3;15415:67;15479:2;15474:3;15415:67;:::i;:::-;15408:74;;15491:93;15580:3;15491:93;:::i;:::-;15609:2;15604:3;15600:12;15593:19;;15252:366;;;:::o;15624:::-;15766:3;15787:67;15851:2;15846:3;15787:67;:::i;:::-;15780:74;;15863:93;15952:3;15863:93;:::i;:::-;15981:2;15976:3;15972:12;15965:19;;15624:366;;;:::o;15996:::-;16138:3;16159:67;16223:2;16218:3;16159:67;:::i;:::-;16152:74;;16235:93;16324:3;16235:93;:::i;:::-;16353:2;16348:3;16344:12;16337:19;;15996:366;;;:::o;16368:::-;16510:3;16531:67;16595:2;16590:3;16531:67;:::i;:::-;16524:74;;16607:93;16696:3;16607:93;:::i;:::-;16725:2;16720:3;16716:12;16709:19;;16368:366;;;:::o;16740:::-;16882:3;16903:67;16967:2;16962:3;16903:67;:::i;:::-;16896:74;;16979:93;17068:3;16979:93;:::i;:::-;17097:2;17092:3;17088:12;17081:19;;16740:366;;;:::o;17112:::-;17254:3;17275:67;17339:2;17334:3;17275:67;:::i;:::-;17268:74;;17351:93;17440:3;17351:93;:::i;:::-;17469:2;17464:3;17460:12;17453:19;;17112:366;;;:::o;17484:::-;17626:3;17647:67;17711:2;17706:3;17647:67;:::i;:::-;17640:74;;17723:93;17812:3;17723:93;:::i;:::-;17841:2;17836:3;17832:12;17825:19;;17484:366;;;:::o;17856:118::-;17943:24;17961:5;17943:24;:::i;:::-;17938:3;17931:37;17856:118;;:::o;17980:112::-;18063:22;18079:5;18063:22;:::i;:::-;18058:3;18051:35;17980:112;;:::o;18098:379::-;18282:3;18304:147;18447:3;18304:147;:::i;:::-;18297:154;;18468:3;18461:10;;18098:379;;;:::o;18483:222::-;18576:4;18614:2;18603:9;18599:18;18591:26;;18627:71;18695:1;18684:9;18680:17;18671:6;18627:71;:::i;:::-;18483:222;;;;:::o;18711:238::-;18812:4;18850:2;18839:9;18835:18;18827:26;;18863:79;18939:1;18928:9;18924:17;18915:6;18863:79;:::i;:::-;18711:238;;;;:::o;18955:332::-;19076:4;19114:2;19103:9;19099:18;19091:26;;19127:71;19195:1;19184:9;19180:17;19171:6;19127:71;:::i;:::-;19208:72;19276:2;19265:9;19261:18;19252:6;19208:72;:::i;:::-;18955:332;;;;;:::o;19293:::-;19414:4;19452:2;19441:9;19437:18;19429:26;;19465:71;19533:1;19522:9;19518:17;19509:6;19465:71;:::i;:::-;19546:72;19614:2;19603:9;19599:18;19590:6;19546:72;:::i;:::-;19293:332;;;;;:::o;19631:823::-;19888:4;19926:3;19915:9;19911:19;19903:27;;19940:71;20008:1;19997:9;19993:17;19984:6;19940:71;:::i;:::-;20021:72;20089:2;20078:9;20074:18;20065:6;20021:72;:::i;:::-;20103:80;20179:2;20168:9;20164:18;20155:6;20103:80;:::i;:::-;20193;20269:2;20258:9;20254:18;20245:6;20193:80;:::i;:::-;20283:81;20359:3;20348:9;20344:19;20335:6;20283:81;:::i;:::-;20374:73;20442:3;20431:9;20427:19;20418:6;20374:73;:::i;:::-;19631:823;;;;;;;;;:::o;20460:807::-;20709:4;20747:3;20736:9;20732:19;20724:27;;20761:71;20829:1;20818:9;20814:17;20805:6;20761:71;:::i;:::-;20842:72;20910:2;20899:9;20895:18;20886:6;20842:72;:::i;:::-;20924:80;21000:2;20989:9;20985:18;20976:6;20924:80;:::i;:::-;21014;21090:2;21079:9;21075:18;21066:6;21014:80;:::i;:::-;21104:73;21172:3;21161:9;21157:19;21148:6;21104:73;:::i;:::-;21187;21255:3;21244:9;21240:19;21231:6;21187:73;:::i;:::-;20460:807;;;;;;;;;:::o;21273:210::-;21360:4;21398:2;21387:9;21383:18;21375:26;;21411:65;21473:1;21462:9;21458:17;21449:6;21411:65;:::i;:::-;21273:210;;;;:::o;21489:313::-;21602:4;21640:2;21629:9;21625:18;21617:26;;21689:9;21683:4;21679:20;21675:1;21664:9;21660:17;21653:47;21717:78;21790:4;21781:6;21717:78;:::i;:::-;21709:86;;21489:313;;;;:::o;21808:419::-;21974:4;22012:2;22001:9;21997:18;21989:26;;22061:9;22055:4;22051:20;22047:1;22036:9;22032:17;22025:47;22089:131;22215:4;22089:131;:::i;:::-;22081:139;;21808:419;;;:::o;22233:::-;22399:4;22437:2;22426:9;22422:18;22414:26;;22486:9;22480:4;22476:20;22472:1;22461:9;22457:17;22450:47;22514:131;22640:4;22514:131;:::i;:::-;22506:139;;22233:419;;;:::o;22658:::-;22824:4;22862:2;22851:9;22847:18;22839:26;;22911:9;22905:4;22901:20;22897:1;22886:9;22882:17;22875:47;22939:131;23065:4;22939:131;:::i;:::-;22931:139;;22658:419;;;:::o;23083:::-;23249:4;23287:2;23276:9;23272:18;23264:26;;23336:9;23330:4;23326:20;23322:1;23311:9;23307:17;23300:47;23364:131;23490:4;23364:131;:::i;:::-;23356:139;;23083:419;;;:::o;23508:::-;23674:4;23712:2;23701:9;23697:18;23689:26;;23761:9;23755:4;23751:20;23747:1;23736:9;23732:17;23725:47;23789:131;23915:4;23789:131;:::i;:::-;23781:139;;23508:419;;;:::o;23933:::-;24099:4;24137:2;24126:9;24122:18;24114:26;;24186:9;24180:4;24176:20;24172:1;24161:9;24157:17;24150:47;24214:131;24340:4;24214:131;:::i;:::-;24206:139;;23933:419;;;:::o;24358:::-;24524:4;24562:2;24551:9;24547:18;24539:26;;24611:9;24605:4;24601:20;24597:1;24586:9;24582:17;24575:47;24639:131;24765:4;24639:131;:::i;:::-;24631:139;;24358:419;;;:::o;24783:::-;24949:4;24987:2;24976:9;24972:18;24964:26;;25036:9;25030:4;25026:20;25022:1;25011:9;25007:17;25000:47;25064:131;25190:4;25064:131;:::i;:::-;25056:139;;24783:419;;;:::o;25208:::-;25374:4;25412:2;25401:9;25397:18;25389:26;;25461:9;25455:4;25451:20;25447:1;25436:9;25432:17;25425:47;25489:131;25615:4;25489:131;:::i;:::-;25481:139;;25208:419;;;:::o;25633:::-;25799:4;25837:2;25826:9;25822:18;25814:26;;25886:9;25880:4;25876:20;25872:1;25861:9;25857:17;25850:47;25914:131;26040:4;25914:131;:::i;:::-;25906:139;;25633:419;;;:::o;26058:::-;26224:4;26262:2;26251:9;26247:18;26239:26;;26311:9;26305:4;26301:20;26297:1;26286:9;26282:17;26275:47;26339:131;26465:4;26339:131;:::i;:::-;26331:139;;26058:419;;;:::o;26483:::-;26649:4;26687:2;26676:9;26672:18;26664:26;;26736:9;26730:4;26726:20;26722:1;26711:9;26707:17;26700:47;26764:131;26890:4;26764:131;:::i;:::-;26756:139;;26483:419;;;:::o;26908:::-;27074:4;27112:2;27101:9;27097:18;27089:26;;27161:9;27155:4;27151:20;27147:1;27136:9;27132:17;27125:47;27189:131;27315:4;27189:131;:::i;:::-;27181:139;;26908:419;;;:::o;27333:::-;27499:4;27537:2;27526:9;27522:18;27514:26;;27586:9;27580:4;27576:20;27572:1;27561:9;27557:17;27550:47;27614:131;27740:4;27614:131;:::i;:::-;27606:139;;27333:419;;;:::o;27758:::-;27924:4;27962:2;27951:9;27947:18;27939:26;;28011:9;28005:4;28001:20;27997:1;27986:9;27982:17;27975:47;28039:131;28165:4;28039:131;:::i;:::-;28031:139;;27758:419;;;:::o;28183:::-;28349:4;28387:2;28376:9;28372:18;28364:26;;28436:9;28430:4;28426:20;28422:1;28411:9;28407:17;28400:47;28464:131;28590:4;28464:131;:::i;:::-;28456:139;;28183:419;;;:::o;28608:::-;28774:4;28812:2;28801:9;28797:18;28789:26;;28861:9;28855:4;28851:20;28847:1;28836:9;28832:17;28825:47;28889:131;29015:4;28889:131;:::i;:::-;28881:139;;28608:419;;;:::o;29033:::-;29199:4;29237:2;29226:9;29222:18;29214:26;;29286:9;29280:4;29276:20;29272:1;29261:9;29257:17;29250:47;29314:131;29440:4;29314:131;:::i;:::-;29306:139;;29033:419;;;:::o;29458:::-;29624:4;29662:2;29651:9;29647:18;29639:26;;29711:9;29705:4;29701:20;29697:1;29686:9;29682:17;29675:47;29739:131;29865:4;29739:131;:::i;:::-;29731:139;;29458:419;;;:::o;29883:::-;30049:4;30087:2;30076:9;30072:18;30064:26;;30136:9;30130:4;30126:20;30122:1;30111:9;30107:17;30100:47;30164:131;30290:4;30164:131;:::i;:::-;30156:139;;29883:419;;;:::o;30308:::-;30474:4;30512:2;30501:9;30497:18;30489:26;;30561:9;30555:4;30551:20;30547:1;30536:9;30532:17;30525:47;30589:131;30715:4;30589:131;:::i;:::-;30581:139;;30308:419;;;:::o;30733:222::-;30826:4;30864:2;30853:9;30849:18;30841:26;;30877:71;30945:1;30934:9;30930:17;30921:6;30877:71;:::i;:::-;30733:222;;;;:::o;30961:831::-;31224:4;31262:3;31251:9;31247:19;31239:27;;31276:71;31344:1;31333:9;31329:17;31320:6;31276:71;:::i;:::-;31357:80;31433:2;31422:9;31418:18;31409:6;31357:80;:::i;:::-;31484:9;31478:4;31474:20;31469:2;31458:9;31454:18;31447:48;31512:108;31615:4;31606:6;31512:108;:::i;:::-;31504:116;;31630:72;31698:2;31687:9;31683:18;31674:6;31630:72;:::i;:::-;31712:73;31780:3;31769:9;31765:19;31756:6;31712:73;:::i;:::-;30961:831;;;;;;;;:::o;31798:442::-;31947:4;31985:2;31974:9;31970:18;31962:26;;31998:71;32066:1;32055:9;32051:17;32042:6;31998:71;:::i;:::-;32079:72;32147:2;32136:9;32132:18;32123:6;32079:72;:::i;:::-;32161;32229:2;32218:9;32214:18;32205:6;32161:72;:::i;:::-;31798:442;;;;;;:::o;32246:214::-;32335:4;32373:2;32362:9;32358:18;32350:26;;32386:67;32450:1;32439:9;32435:17;32426:6;32386:67;:::i;:::-;32246:214;;;;:::o;32466:129::-;32500:6;32527:20;;:::i;:::-;32517:30;;32556:33;32584:4;32576:6;32556:33;:::i;:::-;32466:129;;;:::o;32601:75::-;32634:6;32667:2;32661:9;32651:19;;32601:75;:::o;32682:311::-;32759:4;32849:18;32841:6;32838:30;32835:56;;;32871:18;;:::i;:::-;32835:56;32921:4;32913:6;32909:17;32901:25;;32981:4;32975;32971:15;32963:23;;32682:311;;;:::o;32999:132::-;33066:4;33089:3;33081:11;;33119:4;33114:3;33110:14;33102:22;;32999:132;;;:::o;33137:114::-;33204:6;33238:5;33232:12;33222:22;;33137:114;;;:::o;33257:99::-;33309:6;33343:5;33337:12;33327:22;;33257:99;;;:::o;33362:113::-;33432:4;33464;33459:3;33455:14;33447:22;;33362:113;;;:::o;33481:184::-;33580:11;33614:6;33609:3;33602:19;33654:4;33649:3;33645:14;33630:29;;33481:184;;;;:::o;33671:147::-;33772:11;33809:3;33794:18;;33671:147;;;;:::o;33824:169::-;33908:11;33942:6;33937:3;33930:19;33982:4;33977:3;33973:14;33958:29;;33824:169;;;;:::o;33999:305::-;34039:3;34058:20;34076:1;34058:20;:::i;:::-;34053:25;;34092:20;34110:1;34092:20;:::i;:::-;34087:25;;34246:1;34178:66;34174:74;34171:1;34168:81;34165:107;;;34252:18;;:::i;:::-;34165:107;34296:1;34293;34289:9;34282:16;;33999:305;;;;:::o;34310:185::-;34350:1;34367:20;34385:1;34367:20;:::i;:::-;34362:25;;34401:20;34419:1;34401:20;:::i;:::-;34396:25;;34440:1;34430:35;;34445:18;;:::i;:::-;34430:35;34487:1;34484;34480:9;34475:14;;34310:185;;;;:::o;34501:348::-;34541:7;34564:20;34582:1;34564:20;:::i;:::-;34559:25;;34598:20;34616:1;34598:20;:::i;:::-;34593:25;;34786:1;34718:66;34714:74;34711:1;34708:81;34703:1;34696:9;34689:17;34685:105;34682:131;;;34793:18;;:::i;:::-;34682:131;34841:1;34838;34834:9;34823:20;;34501:348;;;;:::o;34855:191::-;34895:4;34915:20;34933:1;34915:20;:::i;:::-;34910:25;;34949:20;34967:1;34949:20;:::i;:::-;34944:25;;34988:1;34985;34982:8;34979:34;;;34993:18;;:::i;:::-;34979:34;35038:1;35035;35031:9;35023:17;;34855:191;;;;:::o;35052:96::-;35089:7;35118:24;35136:5;35118:24;:::i;:::-;35107:35;;35052:96;;;:::o;35154:104::-;35199:7;35228:24;35246:5;35228:24;:::i;:::-;35217:35;;35154:104;;;:::o;35264:90::-;35298:7;35341:5;35334:13;35327:21;35316:32;;35264:90;;;:::o;35360:126::-;35397:7;35437:42;35430:5;35426:54;35415:65;;35360:126;;;:::o;35492:77::-;35529:7;35558:5;35547:16;;35492:77;;;:::o;35575:86::-;35610:7;35650:4;35643:5;35639:16;35628:27;;35575:86;;;:::o;35667:134::-;35725:9;35758:37;35789:5;35758:37;:::i;:::-;35745:50;;35667:134;;;:::o;35807:121::-;35865:9;35898:24;35916:5;35898:24;:::i;:::-;35885:37;;35807:121;;;:::o;35934:126::-;35984:9;36017:37;36048:5;36017:37;:::i;:::-;36004:50;;35934:126;;;:::o;36066:113::-;36116:9;36149:24;36167:5;36149:24;:::i;:::-;36136:37;;36066:113;;;:::o;36185:307::-;36253:1;36263:113;36277:6;36274:1;36271:13;36263:113;;;36362:1;36357:3;36353:11;36347:18;36343:1;36338:3;36334:11;36327:39;36299:2;36296:1;36292:10;36287:15;;36263:113;;;36394:6;36391:1;36388:13;36385:101;;;36474:1;36465:6;36460:3;36456:16;36449:27;36385:101;36234:258;36185:307;;;:::o;36498:281::-;36581:27;36603:4;36581:27;:::i;:::-;36573:6;36569:40;36711:6;36699:10;36696:22;36675:18;36663:10;36660:34;36657:62;36654:88;;;36722:18;;:::i;:::-;36654:88;36762:10;36758:2;36751:22;36541:238;36498:281;;:::o;36785:233::-;36824:3;36847:24;36865:5;36847:24;:::i;:::-;36838:33;;36893:66;36886:5;36883:77;36880:103;;;36963:18;;:::i;:::-;36880:103;37010:1;37003:5;36999:13;36992:20;;36785:233;;;:::o;37024:180::-;37072:77;37069:1;37062:88;37169:4;37166:1;37159:15;37193:4;37190:1;37183:15;37210:180;37258:77;37255:1;37248:88;37355:4;37352:1;37345:15;37379:4;37376:1;37369:15;37396:180;37444:77;37441:1;37434:88;37541:4;37538:1;37531:15;37565:4;37562:1;37555:15;37582:180;37630:77;37627:1;37620:88;37727:4;37724:1;37717:15;37751:4;37748:1;37741:15;37768:117;37877:1;37874;37867:12;37891:117;38000:1;37997;37990:12;38014:117;38123:1;38120;38113:12;38137:117;38246:1;38243;38236:12;38260:102;38301:6;38352:2;38348:7;38343:2;38336:5;38332:14;38328:28;38318:38;;38260:102;;;:::o;38368:222::-;38508:34;38504:1;38496:6;38492:14;38485:58;38577:5;38572:2;38564:6;38560:15;38553:30;38368:222;:::o;38596:221::-;38736:34;38732:1;38724:6;38720:14;38713:58;38805:4;38800:2;38792:6;38788:15;38781:29;38596:221;:::o;38823:177::-;38963:29;38959:1;38951:6;38947:14;38940:53;38823:177;:::o;39006:223::-;39146:34;39142:1;39134:6;39130:14;39123:58;39215:6;39210:2;39202:6;39198:15;39191:31;39006:223;:::o;39235:228::-;39375:34;39371:1;39363:6;39359:14;39352:58;39444:11;39439:2;39431:6;39427:15;39420:36;39235:228;:::o;39469:220::-;39609:34;39605:1;39597:6;39593:14;39586:58;39678:3;39673:2;39665:6;39661:15;39654:28;39469:220;:::o;39695:179::-;39835:31;39831:1;39823:6;39819:14;39812:55;39695:179;:::o;39880:182::-;40020:34;40016:1;40008:6;40004:14;39997:58;39880:182;:::o;40068:180::-;40208:32;40204:1;40196:6;40192:14;40185:56;40068:180;:::o;40254:228::-;40394:34;40390:1;40382:6;40378:14;40371:58;40463:11;40458:2;40450:6;40446:15;40439:36;40254:228;:::o;40488:222::-;40628:34;40624:1;40616:6;40612:14;40605:58;40697:5;40692:2;40684:6;40680:15;40673:30;40488:222;:::o;40716:239::-;40856:34;40852:1;40844:6;40840:14;40833:58;40925:22;40920:2;40912:6;40908:15;40901:47;40716:239;:::o;40961:224::-;41101:34;41097:1;41089:6;41085:14;41078:58;41170:7;41165:2;41157:6;41153:15;41146:32;40961:224;:::o;41191:179::-;41331:31;41327:1;41319:6;41315:14;41308:55;41191:179;:::o;41376:114::-;;:::o;41496:223::-;41636:34;41632:1;41624:6;41620:14;41613:58;41705:6;41700:2;41692:6;41688:15;41681:31;41496:223;:::o;41725:173::-;41865:25;41861:1;41853:6;41849:14;41842:49;41725:173;:::o;41904:238::-;42044:34;42040:1;42032:6;42028:14;42021:58;42113:21;42108:2;42100:6;42096:15;42089:46;41904:238;:::o;42148:229::-;42288:34;42284:1;42276:6;42272:14;42265:58;42357:12;42352:2;42344:6;42340:15;42333:37;42148:229;:::o;42383:222::-;42523:34;42519:1;42511:6;42507:14;42500:58;42592:5;42587:2;42579:6;42575:15;42568:30;42383:222;:::o;42611:161::-;42751:13;42747:1;42739:6;42735:14;42728:37;42611:161;:::o;42778:230::-;42918:34;42914:1;42906:6;42902:14;42895:58;42987:13;42982:2;42974:6;42970:15;42963:38;42778:230;:::o;43014:122::-;43087:24;43105:5;43087:24;:::i;:::-;43080:5;43077:35;43067:63;;43126:1;43123;43116:12;43067:63;43014:122;:::o;43142:138::-;43223:32;43249:5;43223:32;:::i;:::-;43216:5;43213:43;43203:71;;43270:1;43267;43260:12;43203:71;43142:138;:::o;43286:116::-;43356:21;43371:5;43356:21;:::i;:::-;43349:5;43346:32;43336:60;;43392:1;43389;43382:12;43336:60;43286:116;:::o;43408:122::-;43481:24;43499:5;43481:24;:::i;:::-;43474:5;43471:35;43461:63;;43520:1;43517;43510:12;43461:63;43408:122;:::o

Swarm Source

ipfs://9e5ad79aad3f1c3ffcd04a7f23cc65c487ef3ffb4bab44d2cdf47cc5c72c9683

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.