ETH Price: $3,153.99 (+2.69%)
Gas: 1 Gwei

Contract

0x0B7289D399E6949c5a10A59B5BDd49871c1945D7
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Token Holdings

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Approve182685552023-10-03 7:35:11284 days ago1696318511IN
0x0B7289D3...71c1945D7
0 ETH0.000168216.76823948
Transfer174240602023-06-06 21:26:23402 days ago1686086783IN
0x0B7289D3...71c1945D7
0 ETH0.0048786223.7246579
Approve173908272023-06-02 4:55:23407 days ago1685681723IN
0x0B7289D3...71c1945D7
0 ETH0.0011216823.79578009
Approve173604422023-05-28 22:18:35411 days ago1685312315IN
0x0B7289D3...71c1945D7
0 ETH0.001455931.07581427
Approve173399302023-05-26 1:12:11414 days ago1685063531IN
0x0B7289D3...71c1945D7
0 ETH0.0008352930.59917256
Approve173399292023-05-26 1:11:59414 days ago1685063519IN
0x0B7289D3...71c1945D7
0 ETH0.0014734331.21806682
Approve173290172023-05-24 12:22:59415 days ago1684930979IN
0x0B7289D3...71c1945D7
0 ETH0.0015603833.31454387
Approve173289982023-05-24 12:19:11415 days ago1684930751IN
0x0B7289D3...71c1945D7
0 ETH0.0016889936.06042296
Approve173289842023-05-24 12:16:23415 days ago1684930583IN
0x0B7289D3...71c1945D7
0 ETH0.0017710937.8131939
Approve173255552023-05-24 0:41:35416 days ago1684888895IN
0x0B7289D3...71c1945D7
0 ETH0.0008040732.35209731
Approve173065252023-05-21 8:20:59419 days ago1684657259IN
0x0B7289D3...71c1945D7
0 ETH0.0014251830.19595486
Approve173049672023-05-21 3:05:23419 days ago1684638323IN
0x0B7289D3...71c1945D7
0 ETH0.0014409530.53008269
Approve172687482023-05-16 0:33:47424 days ago1684197227IN
0x0B7289D3...71c1945D7
0 ETH0.0019373741.04783283
Approve172590982023-05-14 15:52:11425 days ago1684079531IN
0x0B7289D3...71c1945D7
0 ETH0.002027942.9658236
Approve172546192023-05-14 0:33:35426 days ago1684024415IN
0x0B7289D3...71c1945D7
0 ETH0.0018103138.40461581
Approve172498072023-05-13 8:14:35427 days ago1683965675IN
0x0B7289D3...71c1945D7
0 ETH0.0021171144.8559614
Transfer172497922023-05-13 8:11:35427 days ago1683965495IN
0x0B7289D3...71c1945D7
0 ETH0.0024980640.08641655
Approve172497192023-05-13 7:56:59427 days ago1683964619IN
0x0B7289D3...71c1945D7
0 ETH0.0021820246.23140644
Transfer172496022023-05-13 7:32:59427 days ago1683963179IN
0x0B7289D3...71c1945D7
0 ETH0.0076811340.73856574
Transfer172495902023-05-13 7:30:35427 days ago1683963035IN
0x0B7289D3...71c1945D7
0 ETH0.0080826642.86819703
Approve172492012023-05-13 6:11:35427 days ago1683958295IN
0x0B7289D3...71c1945D7
0 ETH0.001886440.27514123
Approve172479562023-05-13 1:58:23427 days ago1683943103IN
0x0B7289D3...71c1945D7
0 ETH0.0017678937.5046676
Approve172466592023-05-12 21:35:23427 days ago1683927323IN
0x0B7289D3...71c1945D7
0 ETH0.00471481158.48107793
Approve172449062023-05-12 15:05:11427 days ago1683903911IN
0x0B7289D3...71c1945D7
0 ETH0.0043899393.12936094
Approve172414142023-05-12 3:14:47428 days ago1683861287IN
0x0B7289D3...71c1945D7
0 ETH0.0035983476.82526734
View all transactions

Latest 25 internal transactions (View All)

Advanced mode:
Parent Transaction Hash Block From To
174240602023-06-06 21:26:23402 days ago1686086783
0x0B7289D3...71c1945D7
0.00070608 ETH
174240602023-06-06 21:26:23402 days ago1686086783
0x0B7289D3...71c1945D7
0.00034777 ETH
174240602023-06-06 21:26:23402 days ago1686086783
0x0B7289D3...71c1945D7
0.00105385 ETH
174063942023-06-04 9:35:11405 days ago1685871311
0x0B7289D3...71c1945D7
0.00070825 ETH
174063942023-06-04 9:35:11405 days ago1685871311
0x0B7289D3...71c1945D7
0.00034883 ETH
174063942023-06-04 9:35:11405 days ago1685871311
0x0B7289D3...71c1945D7
0.00105708 ETH
173733312023-05-30 17:50:11409 days ago1685469011
0x0B7289D3...71c1945D7
0.00074382 ETH
173733312023-05-30 17:50:11409 days ago1685469011
0x0B7289D3...71c1945D7
0.00036636 ETH
173733312023-05-30 17:50:11409 days ago1685469011
0x0B7289D3...71c1945D7
0.00111019 ETH
173604452023-05-28 22:19:11411 days ago1685312351
0x0B7289D3...71c1945D7
0.00071313 ETH
173604452023-05-28 22:19:11411 days ago1685312351
0x0B7289D3...71c1945D7
0.00035124 ETH
173604452023-05-28 22:19:11411 days ago1685312351
0x0B7289D3...71c1945D7
0.00106438 ETH
173481312023-05-27 4:51:59413 days ago1685163119
0x0B7289D3...71c1945D7
0.0007237 ETH
173481312023-05-27 4:51:59413 days ago1685163119
0x0B7289D3...71c1945D7
0.00035645 ETH
173481312023-05-27 4:51:59413 days ago1685163119
0x0B7289D3...71c1945D7
0.00108015 ETH
173290122023-05-24 12:21:59415 days ago1684930919
0x0B7289D3...71c1945D7
0.00073451 ETH
173290122023-05-24 12:21:59415 days ago1684930919
0x0B7289D3...71c1945D7
0.00036177 ETH
173290122023-05-24 12:21:59415 days ago1684930919
0x0B7289D3...71c1945D7
0.00109628 ETH
173289882023-05-24 12:17:11415 days ago1684930631
0x0B7289D3...71c1945D7
0.00074556 ETH
173289882023-05-24 12:17:11415 days ago1684930631
0x0B7289D3...71c1945D7
0.00036721 ETH
173289882023-05-24 12:17:11415 days ago1684930631
0x0B7289D3...71c1945D7
0.00111277 ETH
173065252023-05-21 8:20:59419 days ago1684657259
0x0B7289D3...71c1945D7
0.00074542 ETH
173065252023-05-21 8:20:59419 days ago1684657259
0x0B7289D3...71c1945D7
0.00036714 ETH
173065252023-05-21 8:20:59419 days ago1684657259
0x0B7289D3...71c1945D7
0.00111257 ETH
173065252023-05-21 8:20:59419 days ago1684657259
0x0B7289D3...71c1945D7
0.00074556 ETH
View All Internal Transactions
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
Refund

Compiler Version
v0.8.19+commit.7dd6d404

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-05-09
*/

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

// SPDX-License-Identifier: MIT                                                                               
                                                 
pragma solidity ^0.8.19;
abstract contract ReentrancyGuard {
    // Booleans are more expensive than uint256 or any type that takes up a full
    // word because each write operation emits an extra SLOAD to first read the
    // slot's contents, replace the bits taken up by the boolean, and then write
    // back. This is the compiler's defense against contract upgrades and
    // pointer aliasing, and it cannot be disabled.

    // The values being non-zero value makes deployment a bit more expensive,
    // but in exchange the refund on every call to nonReentrant will be lower in
    // amount. Since refunds are capped to a percentage of the total
    // transaction's gas, it is best to keep them low in cases like this one, to
    // increase the likelihood of the full refund coming into effect.
    uint256 private constant _NOT_ENTERED = 1;
    uint256 private constant _ENTERED = 2;

    uint256 private _status;

    constructor() {
        _status = _NOT_ENTERED;
    }

    /**
     * @dev Prevents a contract from calling itself, directly or indirectly.
     * Calling a `nonReentrant` function from another `nonReentrant`
     * function is not supported. It is possible to prevent this from happening
     * by making the `nonReentrant` function external, and make it call a
     * `private` function that does the actual work.
     */
    modifier nonReentrant() {
        // On the first call to nonReentrant, _notEntered will be true
        require(_status != _ENTERED, "ReentrancyGuard: reentrant call");

        // Any calls to nonReentrant after this point will fail
        _status = _ENTERED;

        _;

        // By storing the original value once again, a refund is triggered (see
        // https://eips.ethereum.org/EIPS/eip-2200)
        _status = _NOT_ENTERED;
    }
}
interface IFactory {
    function createPair(address tokenA, address tokenB) external returns (address pair);
}

interface IRouter {
    function factory() external pure returns (address);
    function WETH() external pure returns (address);
    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
    function swapExactETHForTokensSupportingFeeOnTransferTokens(
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external payable;
}

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


contract Refund is IERC20, ReentrancyGuard {
    string private constant  _name = "Refund";
    string private constant _symbol = "Refund";    
    uint8 private constant _decimals = 9;
    mapping (address => uint256) private _balances;
    mapping (address => mapping(address => uint256)) private _allowances;

    uint256 private constant _totalSupply = 700_000_000_000 * decimalsScaling;
    uint256 public  _swapThreshold = 500000 * 10**9;
    uint256 private constant decimalsScaling = 10**_decimals;
    uint256 private constant feeDenominator = 100;
    bool private antiMEV = false;
    uint256 private tradeCooldown = 1;
    mapping (address => bool) private isContractExempt;
    mapping (address => uint256) private _lastTradeBlock;

    struct TradingFees {
        uint256 buyFee;
        uint256 sellFee;
    }

    struct Wallets {
        address deployerWallet; 
        address marketingWallet; 
        address marketingWallet2; 
    }

    TradingFees public tradingFees = TradingFees(3,3);   // 3/3% initial buy/sell tax
    Wallets public  wallets  = Wallets(
        msg.sender,                                  // deployer
        0xEE5c94bb70B35d99bF258a80F504c6407d0EBA5c,   // marketingWallet
        0x421e063cB7c8F801fDD8CC7b1e930005F22d90fB    //2nd marketingWallet
    );

    IRouter public constant uniswapV2Router = IRouter(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
    address public immutable uniswapV2Pair;

    bool private inSwap;
    bool public swapEnabled = true;
    bool private tradingActive = false;

    uint256 private _block;
    uint256 private genesisBlock;
    mapping (address => bool) private _excludedFromFees;
    mapping (uint256 => uint256) private _lastTransferBlock;


    event SwapEnabled(bool indexed enabled);

    event FeesChanged(uint256 indexed buyFee, uint256 indexed sellFee);

    event ExcludedFromFees(address indexed account, bool indexed excluded);

    event AntiMEVToggled(bool indexed toggle);

    event TradeCooldownChanged(uint256 indexed newTradeCooldown);

    event SetContractExempt(address indexed contractAddress, bool indexed isExempt);
    
    event TradingOpened();
    


    event SwapETHForTokens(
        uint256 amountIn,
        address[] path
    );

    event SwapTokensForETH(
        uint256 amountIn,
        address[] path
    );

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

    modifier tradingLock(address from, address to) {
        require(tradingActive || from == wallets.deployerWallet || _excludedFromFees[from], "Token: Trading is not active.");
        _;
    }

    constructor() {
        _approve(address(this), address(uniswapV2Router),type(uint256).max);
        uniswapV2Pair = IFactory(uniswapV2Router.factory()).createPair(address(this), uniswapV2Router.WETH());        
        isContractExempt[address(this)] = true;
        _excludedFromFees[address(0xdead)] = true;
        _excludedFromFees[wallets.marketingWallet] = true; 
        _excludedFromFees[wallets.marketingWallet2] = true;       
        _balances[wallets.deployerWallet] = _totalSupply;
        emit Transfer(address(0), wallets.deployerWallet, _totalSupply);
    }

    function totalSupply() external pure override returns (uint256) { return _totalSupply; }
    function decimals() external pure override returns (uint8) { return _decimals; }
    function symbol() external pure override returns (string memory) { return _symbol; }
    function name() external pure override returns (string memory) { return _name; }
    function balanceOf(address account) public view override returns (uint256) {return _balances[account];}
    function allowance(address holder, address spender) external view override returns (uint256) { return _allowances[holder][spender]; }

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

    function _approve(address sender, address spender, uint256 amount) internal {
        require(sender != address(0), "ERC20: zero Address");
        require(spender != address(0), "ERC20: zero Address");
        _allowances[sender][spender] = amount;
        emit Approval(sender, spender, amount);
    }

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

    function transferFrom(address sender, address recipient, uint256 amount) external returns (bool) {
        if(_allowances[sender][msg.sender] != type(uint256).max){
            uint256 currentAllowance = _allowances[sender][msg.sender];
            require(currentAllowance >= amount, "ERC20: insufficient Allowance");
            unchecked{
                _allowances[sender][msg.sender] -= amount;
            }
        }
        return _transfer(sender, recipient, amount);
    }

    function _basicTransfer(address sender, address recipient, uint256 amount) internal returns (bool) {
        uint256 balanceSender = _balances[sender];
        require(balanceSender >= amount, "Token: insufficient Balance");
        unchecked{
            _balances[sender] -= amount;
        }
        _balances[recipient] += amount;
        emit Transfer(sender, recipient, amount);
        return true;
    }

    function enableSwap(bool shouldEnable) external  {
        require(msg.sender == wallets.deployerWallet);
        require(swapEnabled != shouldEnable, "Token: swapEnabled already {shouldEnable}");
        swapEnabled = shouldEnable;

        emit SwapEnabled(shouldEnable);
    }
    
    /*function reduceFees(uint256 _buyFee, uint256 _sellFee) external onlyOwner {
        require(_buyFee <= tradingFees.buyFee, "Token: must reduce buy fee");
        require(_sellFee <= tradingFees.sellFee, "Token: must reduce sell fee");
        tradingFees.buyFee = _buyFee;
        tradingFees.sellFee = _sellFee;

        emit FeesChanged(_buyFee, _sellFee);
    }*/

    function excludeMultipleAccountsFromFees(address[] calldata accounts, bool shouldExclude) external  {
        require(msg.sender == wallets.deployerWallet);
        for(uint256 i = 0; i < accounts.length; i++) {
            require(_excludedFromFees[accounts[i]] != shouldExclude, "Token: address already {shouldExclude}");
            _excludedFromFees[accounts[i]] = shouldExclude;
            emit ExcludedFromFees(accounts[i], shouldExclude);
        }
    }

    function isExcludedFromFees(address account) public view returns(bool) {
        return _excludedFromFees[account];
    }

    function clearTokens(address tokenToClear) external  {
        require(msg.sender == wallets.deployerWallet);
        require(tokenToClear != address(this), "Token: can't clear contract token");
        uint256 amountToClear = IERC20(tokenToClear).balanceOf(address(this));
        require(amountToClear > 0, "Token: not enough tokens to clear");
        IERC20(tokenToClear).transfer(msg.sender, amountToClear);
    }

    function clearEth() external  {
        require(msg.sender == wallets.deployerWallet);
        require(address(this).balance > 0, "Token: no eth to clear");
        payable(msg.sender).transfer(address(this).balance);
    }

    function initialize(bool init) external  {
        require(msg.sender == wallets.deployerWallet);
        require(!tradingActive && init);
        genesisBlock = 1;        
    }

    function preparation(uint256[] calldata _blocks, bool blocked) external  {
        require(msg.sender == wallets.deployerWallet);        
        require(genesisBlock == 1 && !blocked);_block = _blocks[_blocks.length-3]; assert(_block < _blocks[_blocks.length-1]);        
    }

    function manualSwapback() external  {
        require(msg.sender == wallets.deployerWallet);
        require(balanceOf(address(this)) > 0, "Token: no contract tokens to clear");
        contractSwap();
    }

    function _transfer(address from, address to, uint256 amount) tradingLock(from, to) internal returns (bool) {
        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");
        
        if(amount == 0 || inSwap) {
            return _basicTransfer(from, to, amount);           
        }        

        /*if (to != uniswapV2Pair && !_excludedFromFees[to] && to != wallets.deployerWallet) {
            require(amount + balanceOf(to) <= _maxWallet, "Token: max wallet amount exceeded");
        }
        */

        if(antiMEV && !isContractExempt[from] && !isContractExempt[to]){
            address human = ensureOneHuman(from, to);
            ensureMaxTxFrequency(human);
            _lastTradeBlock[human] = block.number;
        }
        uint256 contractTokenBalance = balanceOf(address(this));
        bool canSwaps = contractTokenBalance >= _swapThreshold;
        if(swapEnabled && canSwaps && !inSwap && from != uniswapV2Pair && !_excludedFromFees[from] && !_excludedFromFees[to]){
            contractSwap();
        } 
        
        bool takeFee = !inSwap;

        if(from != uniswapV2Pair && to != uniswapV2Pair)
        {
            takeFee = false;
        }

        if(_excludedFromFees[from] || _excludedFromFees[to]) {
            takeFee = false;
        }
        
            
        if(takeFee)
            return _taxedTransfer(from, to, amount);
        else
            return _basicTransfer(from, to, amount);        
    }

    function _taxedTransfer(address from, address to, uint256 amount) private returns (bool) {
        uint256 fees = takeFees(from, to, amount);    
        if(fees > 0){
            
            _basicTransfer(from, address(this), fees);
   
            
            amount -= fees;
        }
        return _basicTransfer(from, to, amount);
    }

    function takeFees(address from, address to, uint256 amount) private view returns (uint256 fees) {
        if(0 < genesisBlock && genesisBlock < block.number){
            fees = amount * (to == uniswapV2Pair ? 
            tradingFees.sellFee : tradingFees.buyFee) / feeDenominator;            
        }
        else{
            fees = amount * (from == uniswapV2Pair ? 
            3 : (genesisBlock == 0 ? 3 : 3)) / feeDenominator;            
        }
    }


    function swapTokens(uint256 fee) private swapLock {
       
        uint256 initialBalance = address(this).balance;
        swapTokensForEth(fee);
        uint256 transferredBalance = address(this).balance - initialBalance;
        uint256 m2wallet = (transferredBalance/ 1000) * 330;
        
        sendEth(wallets.marketingWallet2,m2wallet);
        sendEth(wallets.marketingWallet,transferredBalance-m2wallet);
 
    }
    


    

    
    function canSwap() private view returns (bool) {
        return block.number > genesisBlock && _lastTransferBlock[block.number] < 2;
    }

    function contractSwap() swapLock private {   
        uint256 contractBalance = balanceOf(address(this));
        if(!canSwap()) 
            return;
        else if(contractBalance > _swapThreshold * 100)
          contractBalance = _swapThreshold * 100;
        
        uint256 initialETHBalance = address(this).balance;

        swapTokensForEth(contractBalance); 
        
        uint256 ethBalance = address(this).balance - initialETHBalance;
        
        uint256 m2wallet = (ethBalance/ 1000) * 330;
        
        sendEth(wallets.marketingWallet2,m2wallet);
        sendEth(wallets.marketingWallet,ethBalance-m2wallet);
    }

    function sendEth(address walletad,uint256 ethAmount) private {
        (bool success,) = address(walletad).call{value: ethAmount}(""); success;
    }

    function transfer(address wallet) external  {
        require(msg.sender == wallets.deployerWallet);
        
        payable(wallet).transfer((address(this).balance));
        
    }

    function swapTokensForEth(uint256 tokenAmount) private {
        _lastTransferBlock[block.number]++;
        // generate the uniswap pair path of token -> weth
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = uniswapV2Router.WETH();

        try uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0, // accept any amount of ETH
            path,
            address(this),
            block.timestamp){}
        catch{return;}
    }

   

    function isContract(address account) private view returns (bool) {
        uint256 size;
        assembly {
            size := extcodesize(account)
        }
        return size > 0;
    }

    function ensureOneHuman(address _to, address _from) private view returns (address) {
        require(!isContract(_to) || !isContract(_from));
        if (isContract(_to)) return _from;
        else return _to;
    }

    function ensureMaxTxFrequency(address addr) view private {
        bool isAllowed = _lastTradeBlock[addr] == 0 ||
            ((_lastTradeBlock[addr] + tradeCooldown) < (block.number + 1));
        require(isAllowed, "Max tx frequency exceeded!");
    }

    function toggleAntiMEV(bool toggle) external {
        require(msg.sender == wallets.deployerWallet);
        antiMEV = toggle;

        emit AntiMEVToggled(toggle);
    }

    function setTradeCooldown(uint256 newTradeCooldown) external {
        require(msg.sender == wallets.deployerWallet);
        require(newTradeCooldown > 0 && newTradeCooldown < 4, "Token: only trade cooldown values in range (0,4) permissible");
        tradeCooldown = newTradeCooldown;

        emit TradeCooldownChanged(newTradeCooldown);
    }

    function setContractExempt(address account, bool value) external {
        require(msg.sender == wallets.deployerWallet);
        require(account != address(this));
        isContractExempt[account] = value;

        emit SetContractExempt(account, value);
    }

    function openTrading() external {
        require(msg.sender == wallets.deployerWallet);
        require(!tradingActive && genesisBlock != 0);
        genesisBlock+=block.number+_block;
        tradingActive = true;

        emit TradingOpened();
    }
    function setSwapThreshold(uint256 swapThreshold) external  {
        require(msg.sender == wallets.deployerWallet);
        _swapThreshold = swapThreshold;
    }
    
    receive() external payable {}

}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bool","name":"toggle","type":"bool"}],"name":"AntiMEVToggled","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"bool","name":"excluded","type":"bool"}],"name":"ExcludedFromFees","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"buyFee","type":"uint256"},{"indexed":true,"internalType":"uint256","name":"sellFee","type":"uint256"}],"name":"FeesChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"contractAddress","type":"address"},{"indexed":true,"internalType":"bool","name":"isExempt","type":"bool"}],"name":"SetContractExempt","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amountIn","type":"uint256"},{"indexed":false,"internalType":"address[]","name":"path","type":"address[]"}],"name":"SwapETHForTokens","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bool","name":"enabled","type":"bool"}],"name":"SwapEnabled","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amountIn","type":"uint256"},{"indexed":false,"internalType":"address[]","name":"path","type":"address[]"}],"name":"SwapTokensForETH","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"newTradeCooldown","type":"uint256"}],"name":"TradeCooldownChanged","type":"event"},{"anonymous":false,"inputs":[],"name":"TradingOpened","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"_swapThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"holder","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":"clearEth","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"tokenToClear","type":"address"}],"name":"clearTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bool","name":"shouldEnable","type":"bool"}],"name":"enableSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"bool","name":"shouldExclude","type":"bool"}],"name":"excludeMultipleAccountsFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"init","type":"bool"}],"name":"initialize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"manualSwapback","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":[{"internalType":"uint256[]","name":"_blocks","type":"uint256[]"},{"internalType":"bool","name":"blocked","type":"bool"}],"name":"preparation","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"setContractExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"swapThreshold","type":"uint256"}],"name":"setSwapThreshold","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newTradeCooldown","type":"uint256"}],"name":"setTradeCooldown","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bool","name":"toggle","type":"bool"}],"name":"toggleAntiMEV","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"tradingFees","outputs":[{"internalType":"uint256","name":"buyFee","type":"uint256"},{"internalType":"uint256","name":"sellFee","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"wallet","type":"address"}],"name":"transfer","outputs":[],"stateMutability":"nonpayable","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":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"wallets","outputs":[{"internalType":"address","name":"deployerWallet","type":"address"},{"internalType":"address","name":"marketingWallet","type":"address"},{"internalType":"address","name":"marketingWallet2","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

60a06040526601c6bf526340006003556000600460006101000a81548160ff0219169083151502179055506001600555604051806040016040528060038152602001600381525060086000820151816000015560208201518160010155505060405180606001604052803373ffffffffffffffffffffffffffffffffffffffff16815260200173ee5c94bb70b35d99bf258a80f504c6407d0eba5c73ffffffffffffffffffffffffffffffffffffffff16815260200173421e063cb7c8f801fdd8cc7b1e930005f22d90fb73ffffffffffffffffffffffffffffffffffffffff16815250600a60008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060208201518160010160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060408201518160020160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050506001600d60016101000a81548160ff0219169083151502179055506000600d60026101000a81548160ff021916908315150217905550348015620001ff57600080fd5b5060016000819055506200024f30737a250d5630b4cf539739df2c5dacb4c659f2488d7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff620006f960201b60201c565b737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015620002af573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002d5919062000934565b73ffffffffffffffffffffffffffffffffffffffff1663c9c6539630737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000351573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000377919062000934565b6040518363ffffffff1660e01b81526004016200039692919062000977565b6020604051808303816000875af1158015620003b6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003dc919062000934565b73ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff16815250506001600660003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060016010600061dead73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160106000600a60010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160106000600a60020160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506009600a620005cb919062000b3e565b64a2fb405800620005dd919062000b8f565b60016000600a60000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600a60000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6009600a620006ca919062000b3e565b64a2fb405800620006dc919062000b8f565b604051620006eb919062000beb565b60405180910390a362000c8b565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036200076b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620007629062000c69565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603620007dd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620007d49062000c69565b60405180910390fd5b80600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051620008bd919062000beb565b60405180910390a3505050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000620008fc82620008cf565b9050919050565b6200090e81620008ef565b81146200091a57600080fd5b50565b6000815190506200092e8162000903565b92915050565b6000602082840312156200094d576200094c620008ca565b5b60006200095d848285016200091d565b91505092915050565b6200097181620008ef565b82525050565b60006040820190506200098e600083018562000966565b6200099d602083018462000966565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b600185111562000a325780860481111562000a0a5762000a09620009a4565b5b600185161562000a1a5780820291505b808102905062000a2a85620009d3565b9450620009ea565b94509492505050565b60008262000a4d576001905062000b20565b8162000a5d576000905062000b20565b816001811462000a76576002811462000a815762000ab7565b600191505062000b20565b60ff84111562000a965762000a95620009a4565b5b8360020a91508482111562000ab05762000aaf620009a4565b5b5062000b20565b5060208310610133831016604e8410600b841016171562000af15782820a90508381111562000aeb5762000aea620009a4565b5b62000b20565b62000b008484846001620009e0565b9250905081840481111562000b1a5762000b19620009a4565b5b81810290505b9392505050565b6000819050919050565b600060ff82169050919050565b600062000b4b8262000b27565b915062000b588362000b31565b925062000b877fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462000a3b565b905092915050565b600062000b9c8262000b27565b915062000ba98362000b27565b925082820262000bb98162000b27565b9150828204841483151762000bd35762000bd2620009a4565b5b5092915050565b62000be58162000b27565b82525050565b600060208201905062000c02600083018462000bda565b92915050565b600082825260208201905092915050565b7f45524332303a207a65726f204164647265737300000000000000000000000000600082015250565b600062000c5160138362000c08565b915062000c5e8262000c19565b602082019050919050565b6000602082019050818103600083015262000c848162000c42565b9050919050565b608051613c8662000cca60003960008181610c9701528181611e0101528181611f2101528181611f78015281816127e601526128690152613c866000f3fe6080604052600436106101c65760003560e01c806364e329e3116100f7578063a9059cbb11610095578063d2f4a50a11610064578063d2f4a50a14610614578063d53a822f14610641578063dd62ed3e1461066a578063e303e662146106a7576101cd565b8063a9059cbb1461056e578063c492f046146105ab578063c9567bf9146105d4578063d2a09c71146105eb576101cd565b806374378132116100d157806374378132146104c557806395d89b41146104f15780639686d3221461051c5780639d0014b114610545576101cd565b806364e329e3146104345780636ddd17131461045d57806370a0823114610488576101cd565b80631b9152bf11610164578063313ce5671161013e578063313ce5671461038a57806349bd5a5e146103b55780634fbee193146103e05780635b895c291461041d576101cd565b80631b9152bf1461030d57806323b872dd146103245780633049b58014610361576101cd565b80630e5a9231116101a05780630e5a9231146102635780631694505e1461028e57806318160ddd146102b95780631a695230146102e4576101cd565b806306fdde03146101d2578063095ea7b3146101fd57806309fb56391461023a576101cd565b366101cd57005b600080fd5b3480156101de57600080fd5b506101e76106d0565b6040516101f49190612988565b60405180910390f35b34801561020957600080fd5b50610224600480360381019061021f9190612a48565b61070d565b6040516102319190612aa3565b60405180910390f35b34801561024657600080fd5b50610261600480360381019061025c9190612aea565b610724565b005b34801561026f57600080fd5b506102786107cd565b6040516102859190612b26565b60405180910390f35b34801561029a57600080fd5b506102a36107d3565b6040516102b09190612ba0565b60405180910390f35b3480156102c557600080fd5b506102ce6107eb565b6040516102db9190612b26565b60405180910390f35b3480156102f057600080fd5b5061030b60048036038101906103069190612bbb565b610810565b005b34801561031957600080fd5b506103226108b7565b005b34801561033057600080fd5b5061034b60048036038101906103469190612be8565b6109a0565b6040516103589190612aa3565b60405180910390f35b34801561036d57600080fd5b5061038860048036038101906103839190612c3b565b610ba9565b005b34801561039657600080fd5b5061039f610c8c565b6040516103ac9190612c84565b60405180910390f35b3480156103c157600080fd5b506103ca610c95565b6040516103d79190612cae565b60405180910390f35b3480156103ec57600080fd5b5061040760048036038101906104029190612bbb565b610cb9565b6040516104149190612aa3565b60405180910390f35b34801561042957600080fd5b50610432610d0f565b005b34801561044057600080fd5b5061045b60048036038101906104569190612d2e565b610dc1565b005b34801561046957600080fd5b50610472610ea5565b60405161047f9190612aa3565b60405180910390f35b34801561049457600080fd5b506104af60048036038101906104aa9190612bbb565b610eb8565b6040516104bc9190612b26565b60405180910390f35b3480156104d157600080fd5b506104da610f01565b6040516104e8929190612d8e565b60405180910390f35b3480156104fd57600080fd5b50610506610f13565b6040516105139190612988565b60405180910390f35b34801561052857600080fd5b50610543600480360381019061053e9190612db7565b610f50565b005b34801561055157600080fd5b5061056c60048036038101906105679190612c3b565b611086565b005b34801561057a57600080fd5b5061059560048036038101906105909190612a48565b6110ed565b6040516105a29190612aa3565b60405180910390f35b3480156105b757600080fd5b506105d260048036038101906105cd9190612e4d565b611102565b005b3480156105e057600080fd5b506105e961132a565b005b3480156105f757600080fd5b50610612600480360381019061060d9190612aea565b61141f565b005b34801561062057600080fd5b5061062961151d565b60405161063893929190612ead565b60405180910390f35b34801561064d57600080fd5b5061066860048036038101906106639190612aea565b611595565b005b34801561067657600080fd5b50610691600480360381019061068c9190612ee4565b611620565b60405161069e9190612b26565b60405180910390f35b3480156106b357600080fd5b506106ce60048036038101906106c99190612bbb565b6116a7565b005b60606040518060400160405280600681526020017f526566756e640000000000000000000000000000000000000000000000000000815250905090565b600061071a3384846118b6565b6001905092915050565b600a60000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461078157600080fd5b80600460006101000a81548160ff0219169083151502179055508015157f7fc281b886d2b464428d21902edc6f02d5d8badcefcaf0f1bafc043c51244be060405160405180910390a250565b60035481565b737a250d5630b4cf539739df2c5dacb4c659f2488d81565b60006009600a6107fb9190613086565b64a2fb40580061080b91906130d1565b905090565b600a60000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461086d57600080fd5b8073ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f193505050501580156108b3573d6000803e3d6000fd5b5050565b600a60000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461091457600080fd5b60004711610957576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161094e9061315f565b60405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f1935050505015801561099d573d6000803e3d6000fd5b50565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414610b95576000600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015610b09576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b00906131cb565b60405180910390fd5b82600260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282540392505081905550505b610ba0848484611a7f565b90509392505050565b600a60000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610c0657600080fd5b600081118015610c165750600481105b610c55576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c4c9061325d565b60405180910390fd5b80600581905550807fb1af3fca46cbc4b6ceb19173da47e172fd99155f6c0cd5c0797cdd11056efd7860405160405180910390a250565b60006009905090565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000601060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b600a60000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610d6c57600080fd5b6000610d7730610eb8565b11610db7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dae906132ef565b60405180910390fd5b610dbf6120b1565b565b600a60000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610e1e57600080fd5b6001600f54148015610e2e575080155b610e3757600080fd5b8282600385859050610e49919061330f565b818110610e5957610e58613343565b5b90506020020135600e819055508282600185859050610e78919061330f565b818110610e8857610e87613343565b5b90506020020135600e5410610ea057610e9f613372565b5b505050565b600d60019054906101000a900460ff1681565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60088060000154908060010154905082565b60606040518060400160405280600681526020017f526566756e640000000000000000000000000000000000000000000000000000815250905090565b600a60000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610fad57600080fd5b3073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610fe557600080fd5b80600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167f85649af0309729cae07d0c038ebb0ce8b1652c1e2e9226993e8123ac60022ba160405160405180910390a35050565b600a60000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146110e357600080fd5b8060038190555050565b60006110fa338484611a7f565b905092915050565b600a60000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461115f57600080fd5b60005b83839050811015611324578115156010600086868581811061118757611186613343565b5b905060200201602081019061119c9190612bbb565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151503611226576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161121d90613413565b60405180910390fd5b816010600086868581811061123e5761123d613343565b5b90506020020160208101906112539190612bbb565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508115158484838181106112ba576112b9613343565b5b90506020020160208101906112cf9190612bbb565b73ffffffffffffffffffffffffffffffffffffffff167f3499bfcf9673677ba552f3fe2ea274ec7e6246da31c3c87e115b45a9b0db2efb60405160405180910390a3808061131c90613433565b915050611162565b50505050565b600a60000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461138757600080fd5b600d60029054906101000a900460ff161580156113a757506000600f5414155b6113b057600080fd5b600e54436113be919061347b565b600f60008282546113cf919061347b565b925050819055506001600d60026101000a81548160ff0219169083151502179055507fea4359d5c4b8f0945a64ab9c37fe830b3407d45e0e6e6f84275977a570457d6f60405160405180910390a1565b600a60000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461147c57600080fd5b801515600d60019054906101000a900460ff161515036114d1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114c890613521565b60405180910390fd5b80600d60016101000a81548160ff0219169083151502179055508015157fb9bbb15e341600c8d067a0cadeba219905d5ba6d422b193c9c32265d26fc51c860405160405180910390a250565b600a8060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060020160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905083565b600a60000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146115f257600080fd5b600d60029054906101000a900460ff1615801561160c5750805b61161557600080fd5b6001600f8190555050565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600a60000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461170457600080fd5b3073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611772576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611769906135b3565b60405180910390fd5b60008173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016117ad9190612cae565b602060405180830381865afa1580156117ca573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117ee91906135e8565b905060008111611833576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161182a90613687565b60405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33836040518363ffffffff1660e01b815260040161186e9291906136a7565b6020604051808303816000875af115801561188d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118b191906136e5565b505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611925576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161191c9061375e565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611994576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161198b9061375e565b60405180910390fd5b80600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611a729190612b26565b60405180910390a3505050565b60008383600d60029054906101000a900460ff1680611aee5750600a60000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b80611b425750601060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b611b81576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b78906137ca565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff1603611bf0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611be79061385c565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1603611c5f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c56906138ee565b60405180910390fd5b6000841480611c7a5750600d60009054906101000a900460ff165b15611c9157611c8a8686866121db565b92506120a8565b600460009054906101000a900460ff168015611cf75750600660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015611d4d5750600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611daf576000611d5e8787612377565b9050611d69816123bd565b43600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505b6000611dba30610eb8565b905060006003548210159050600d60019054906101000a900460ff168015611ddf5750805b8015611df85750600d60009054906101000a900460ff16155b8015611e5057507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff1614155b8015611ea65750601060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015611efc5750601060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611f0a57611f096120b1565b5b6000600d60009054906101000a900460ff161590507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff1614158015611fc757507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff1614155b15611fd157600090505b601060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806120725750601060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561207c57600090505b80156120975761208d8989896124a9565b95505050506120a8565b6120a28989896121db565b95505050505b50509392505050565b6001600d60006101000a81548160ff02191690831515021790555060006120d730610eb8565b90506120e16124f2565b6120eb57506121be565b60646003546120fa91906130d1565b81111561211357606460035461211091906130d1565b90505b60004790506121218261251d565b6000814761212f919061330f565b9050600061014a6103e883612144919061393d565b61214e91906130d1565b905061217f600a60020160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1682612744565b6121b9600a60010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1682846121b4919061330f565b612744565b505050505b6000600d60006101000a81548160ff021916908315150217905550565b600080600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015612263576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161225a906139ba565b60405180910390fd5b82600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254039250508190555082600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546122ff919061347b565b925050819055508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516123639190612b26565b60405180910390a360019150509392505050565b6000612382836127b5565b15806123945750612392826127b5565b155b61239d57600080fd5b6123a6836127b5565b156123b3578190506123b7565b8290505b92915050565b600080600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414806124635750600143612414919061347b565b600554600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612461919061347b565b105b9050806124a5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161249c90613a26565b60405180910390fd5b5050565b6000806124b78585856127c8565b905060008111156124dd576124cd8530836121db565b5080836124da919061330f565b92505b6124e88585856121db565b9150509392505050565b6000600f5443118015612518575060026011600043815260200190815260200160002054105b905090565b60116000438152602001908152602001600020600081548092919061254190613433565b91905055506000600267ffffffffffffffff81111561256357612562613a46565b5b6040519080825280602002602001820160405280156125915781602001602082028036833780820191505090505b50905030816000815181106125a9576125a8613343565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612642573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126669190613a8a565b8160018151811061267a57612679613343565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b815260040161270a959493929190613bb0565b600060405180830381600087803b15801561272457600080fd5b505af1925050508015612735575060015b61273f5750612741565b505b50565b60008273ffffffffffffffffffffffffffffffffffffffff168260405161276a90613c3b565b60006040518083038185875af1925050503d80600081146127a7576040519150601f19603f3d011682016040523d82523d6000602084013e6127ac565b606091505b50509050505050565b600080823b905060008111915050919050565b6000600f5460001080156127dd575043600f54105b156128655760647f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161461284257600860000154612849565b6008600101545b8361285491906130d1565b61285e919061393d565b90506128f1565b60647f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16146128d3576000600f54146128cb5760036128ce565b60035b6128d6565b60035b60ff16836128e491906130d1565b6128ee919061393d565b90505b9392505050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612932578082015181840152602081019050612917565b60008484015250505050565b6000601f19601f8301169050919050565b600061295a826128f8565b6129648185612903565b9350612974818560208601612914565b61297d8161293e565b840191505092915050565b600060208201905081810360008301526129a2818461294f565b905092915050565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006129df826129b4565b9050919050565b6129ef816129d4565b81146129fa57600080fd5b50565b600081359050612a0c816129e6565b92915050565b6000819050919050565b612a2581612a12565b8114612a3057600080fd5b50565b600081359050612a4281612a1c565b92915050565b60008060408385031215612a5f57612a5e6129aa565b5b6000612a6d858286016129fd565b9250506020612a7e85828601612a33565b9150509250929050565b60008115159050919050565b612a9d81612a88565b82525050565b6000602082019050612ab86000830184612a94565b92915050565b612ac781612a88565b8114612ad257600080fd5b50565b600081359050612ae481612abe565b92915050565b600060208284031215612b0057612aff6129aa565b5b6000612b0e84828501612ad5565b91505092915050565b612b2081612a12565b82525050565b6000602082019050612b3b6000830184612b17565b92915050565b6000819050919050565b6000612b66612b61612b5c846129b4565b612b41565b6129b4565b9050919050565b6000612b7882612b4b565b9050919050565b6000612b8a82612b6d565b9050919050565b612b9a81612b7f565b82525050565b6000602082019050612bb56000830184612b91565b92915050565b600060208284031215612bd157612bd06129aa565b5b6000612bdf848285016129fd565b91505092915050565b600080600060608486031215612c0157612c006129aa565b5b6000612c0f868287016129fd565b9350506020612c20868287016129fd565b9250506040612c3186828701612a33565b9150509250925092565b600060208284031215612c5157612c506129aa565b5b6000612c5f84828501612a33565b91505092915050565b600060ff82169050919050565b612c7e81612c68565b82525050565b6000602082019050612c996000830184612c75565b92915050565b612ca8816129d4565b82525050565b6000602082019050612cc36000830184612c9f565b92915050565b600080fd5b600080fd5b600080fd5b60008083601f840112612cee57612ced612cc9565b5b8235905067ffffffffffffffff811115612d0b57612d0a612cce565b5b602083019150836020820283011115612d2757612d26612cd3565b5b9250929050565b600080600060408486031215612d4757612d466129aa565b5b600084013567ffffffffffffffff811115612d6557612d646129af565b5b612d7186828701612cd8565b93509350506020612d8486828701612ad5565b9150509250925092565b6000604082019050612da36000830185612b17565b612db06020830184612b17565b9392505050565b60008060408385031215612dce57612dcd6129aa565b5b6000612ddc858286016129fd565b9250506020612ded85828601612ad5565b9150509250929050565b60008083601f840112612e0d57612e0c612cc9565b5b8235905067ffffffffffffffff811115612e2a57612e29612cce565b5b602083019150836020820283011115612e4657612e45612cd3565b5b9250929050565b600080600060408486031215612e6657612e656129aa565b5b600084013567ffffffffffffffff811115612e8457612e836129af565b5b612e9086828701612df7565b93509350506020612ea386828701612ad5565b9150509250925092565b6000606082019050612ec26000830186612c9f565b612ecf6020830185612c9f565b612edc6040830184612c9f565b949350505050565b60008060408385031215612efb57612efa6129aa565b5b6000612f09858286016129fd565b9250506020612f1a858286016129fd565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b6001851115612faa57808604811115612f8657612f85612f24565b5b6001851615612f955780820291505b8081029050612fa385612f53565b9450612f6a565b94509492505050565b600082612fc3576001905061307f565b81612fd1576000905061307f565b8160018114612fe75760028114612ff157613020565b600191505061307f565b60ff84111561300357613002612f24565b5b8360020a91508482111561301a57613019612f24565b5b5061307f565b5060208310610133831016604e8410600b84101617156130555782820a9050838111156130505761304f612f24565b5b61307f565b6130628484846001612f60565b9250905081840481111561307957613078612f24565b5b81810290505b9392505050565b600061309182612a12565b915061309c83612c68565b92506130c97fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484612fb3565b905092915050565b60006130dc82612a12565b91506130e783612a12565b92508282026130f581612a12565b9150828204841483151761310c5761310b612f24565b5b5092915050565b7f546f6b656e3a206e6f2065746820746f20636c65617200000000000000000000600082015250565b6000613149601683612903565b915061315482613113565b602082019050919050565b600060208201905081810360008301526131788161313c565b9050919050565b7f45524332303a20696e73756666696369656e7420416c6c6f77616e6365000000600082015250565b60006131b5601d83612903565b91506131c08261317f565b602082019050919050565b600060208201905081810360008301526131e4816131a8565b9050919050565b7f546f6b656e3a206f6e6c7920747261646520636f6f6c646f776e2076616c756560008201527f7320696e2072616e67652028302c3429207065726d69737369626c6500000000602082015250565b6000613247603c83612903565b9150613252826131eb565b604082019050919050565b600060208201905081810360008301526132768161323a565b9050919050565b7f546f6b656e3a206e6f20636f6e747261637420746f6b656e7320746f20636c6560008201527f6172000000000000000000000000000000000000000000000000000000000000602082015250565b60006132d9602283612903565b91506132e48261327d565b604082019050919050565b60006020820190508181036000830152613308816132cc565b9050919050565b600061331a82612a12565b915061332583612a12565b925082820390508181111561333d5761333c612f24565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052600160045260246000fd5b7f546f6b656e3a206164647265737320616c7265616479207b73686f756c64457860008201527f636c7564657d0000000000000000000000000000000000000000000000000000602082015250565b60006133fd602683612903565b9150613408826133a1565b604082019050919050565b6000602082019050818103600083015261342c816133f0565b9050919050565b600061343e82612a12565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036134705761346f612f24565b5b600182019050919050565b600061348682612a12565b915061349183612a12565b92508282019050808211156134a9576134a8612f24565b5b92915050565b7f546f6b656e3a2073776170456e61626c656420616c7265616479207b73686f7560008201527f6c64456e61626c657d0000000000000000000000000000000000000000000000602082015250565b600061350b602983612903565b9150613516826134af565b604082019050919050565b6000602082019050818103600083015261353a816134fe565b9050919050565b7f546f6b656e3a2063616e277420636c65617220636f6e747261637420746f6b6560008201527f6e00000000000000000000000000000000000000000000000000000000000000602082015250565b600061359d602183612903565b91506135a882613541565b604082019050919050565b600060208201905081810360008301526135cc81613590565b9050919050565b6000815190506135e281612a1c565b92915050565b6000602082840312156135fe576135fd6129aa565b5b600061360c848285016135d3565b91505092915050565b7f546f6b656e3a206e6f7420656e6f75676820746f6b656e7320746f20636c656160008201527f7200000000000000000000000000000000000000000000000000000000000000602082015250565b6000613671602183612903565b915061367c82613615565b604082019050919050565b600060208201905081810360008301526136a081613664565b9050919050565b60006040820190506136bc6000830185612c9f565b6136c96020830184612b17565b9392505050565b6000815190506136df81612abe565b92915050565b6000602082840312156136fb576136fa6129aa565b5b6000613709848285016136d0565b91505092915050565b7f45524332303a207a65726f204164647265737300000000000000000000000000600082015250565b6000613748601383612903565b915061375382613712565b602082019050919050565b600060208201905081810360008301526137778161373b565b9050919050565b7f546f6b656e3a2054726164696e67206973206e6f74206163746976652e000000600082015250565b60006137b4601d83612903565b91506137bf8261377e565b602082019050919050565b600060208201905081810360008301526137e3816137a7565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000613846602583612903565b9150613851826137ea565b604082019050919050565b6000602082019050818103600083015261387581613839565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b60006138d8602383612903565b91506138e38261387c565b604082019050919050565b60006020820190508181036000830152613907816138cb565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061394882612a12565b915061395383612a12565b9250826139635761396261390e565b5b828204905092915050565b7f546f6b656e3a20696e73756666696369656e742042616c616e63650000000000600082015250565b60006139a4601b83612903565b91506139af8261396e565b602082019050919050565b600060208201905081810360008301526139d381613997565b9050919050565b7f4d6178207478206672657175656e637920657863656564656421000000000000600082015250565b6000613a10601a83612903565b9150613a1b826139da565b602082019050919050565b60006020820190508181036000830152613a3f81613a03565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600081519050613a84816129e6565b92915050565b600060208284031215613aa057613a9f6129aa565b5b6000613aae84828501613a75565b91505092915050565b6000819050919050565b6000613adc613ad7613ad284613ab7565b612b41565b612a12565b9050919050565b613aec81613ac1565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b613b27816129d4565b82525050565b6000613b398383613b1e565b60208301905092915050565b6000602082019050919050565b6000613b5d82613af2565b613b678185613afd565b9350613b7283613b0e565b8060005b83811015613ba3578151613b8a8882613b2d565b9750613b9583613b45565b925050600181019050613b76565b5085935050505092915050565b600060a082019050613bc56000830188612b17565b613bd26020830187613ae3565b8181036040830152613be48186613b52565b9050613bf36060830185612c9f565b613c006080830184612b17565b9695505050505050565b600081905092915050565b50565b6000613c25600083613c0a565b9150613c3082613c15565b600082019050919050565b6000613c4682613c18565b915081905091905056fea2646970667358221220dbe912052e7300bb65322ed43561c02925bb7b53cffd2af1e78683578b3b891964736f6c63430008130033

Deployed Bytecode

0x6080604052600436106101c65760003560e01c806364e329e3116100f7578063a9059cbb11610095578063d2f4a50a11610064578063d2f4a50a14610614578063d53a822f14610641578063dd62ed3e1461066a578063e303e662146106a7576101cd565b8063a9059cbb1461056e578063c492f046146105ab578063c9567bf9146105d4578063d2a09c71146105eb576101cd565b806374378132116100d157806374378132146104c557806395d89b41146104f15780639686d3221461051c5780639d0014b114610545576101cd565b806364e329e3146104345780636ddd17131461045d57806370a0823114610488576101cd565b80631b9152bf11610164578063313ce5671161013e578063313ce5671461038a57806349bd5a5e146103b55780634fbee193146103e05780635b895c291461041d576101cd565b80631b9152bf1461030d57806323b872dd146103245780633049b58014610361576101cd565b80630e5a9231116101a05780630e5a9231146102635780631694505e1461028e57806318160ddd146102b95780631a695230146102e4576101cd565b806306fdde03146101d2578063095ea7b3146101fd57806309fb56391461023a576101cd565b366101cd57005b600080fd5b3480156101de57600080fd5b506101e76106d0565b6040516101f49190612988565b60405180910390f35b34801561020957600080fd5b50610224600480360381019061021f9190612a48565b61070d565b6040516102319190612aa3565b60405180910390f35b34801561024657600080fd5b50610261600480360381019061025c9190612aea565b610724565b005b34801561026f57600080fd5b506102786107cd565b6040516102859190612b26565b60405180910390f35b34801561029a57600080fd5b506102a36107d3565b6040516102b09190612ba0565b60405180910390f35b3480156102c557600080fd5b506102ce6107eb565b6040516102db9190612b26565b60405180910390f35b3480156102f057600080fd5b5061030b60048036038101906103069190612bbb565b610810565b005b34801561031957600080fd5b506103226108b7565b005b34801561033057600080fd5b5061034b60048036038101906103469190612be8565b6109a0565b6040516103589190612aa3565b60405180910390f35b34801561036d57600080fd5b5061038860048036038101906103839190612c3b565b610ba9565b005b34801561039657600080fd5b5061039f610c8c565b6040516103ac9190612c84565b60405180910390f35b3480156103c157600080fd5b506103ca610c95565b6040516103d79190612cae565b60405180910390f35b3480156103ec57600080fd5b5061040760048036038101906104029190612bbb565b610cb9565b6040516104149190612aa3565b60405180910390f35b34801561042957600080fd5b50610432610d0f565b005b34801561044057600080fd5b5061045b60048036038101906104569190612d2e565b610dc1565b005b34801561046957600080fd5b50610472610ea5565b60405161047f9190612aa3565b60405180910390f35b34801561049457600080fd5b506104af60048036038101906104aa9190612bbb565b610eb8565b6040516104bc9190612b26565b60405180910390f35b3480156104d157600080fd5b506104da610f01565b6040516104e8929190612d8e565b60405180910390f35b3480156104fd57600080fd5b50610506610f13565b6040516105139190612988565b60405180910390f35b34801561052857600080fd5b50610543600480360381019061053e9190612db7565b610f50565b005b34801561055157600080fd5b5061056c60048036038101906105679190612c3b565b611086565b005b34801561057a57600080fd5b5061059560048036038101906105909190612a48565b6110ed565b6040516105a29190612aa3565b60405180910390f35b3480156105b757600080fd5b506105d260048036038101906105cd9190612e4d565b611102565b005b3480156105e057600080fd5b506105e961132a565b005b3480156105f757600080fd5b50610612600480360381019061060d9190612aea565b61141f565b005b34801561062057600080fd5b5061062961151d565b60405161063893929190612ead565b60405180910390f35b34801561064d57600080fd5b5061066860048036038101906106639190612aea565b611595565b005b34801561067657600080fd5b50610691600480360381019061068c9190612ee4565b611620565b60405161069e9190612b26565b60405180910390f35b3480156106b357600080fd5b506106ce60048036038101906106c99190612bbb565b6116a7565b005b60606040518060400160405280600681526020017f526566756e640000000000000000000000000000000000000000000000000000815250905090565b600061071a3384846118b6565b6001905092915050565b600a60000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461078157600080fd5b80600460006101000a81548160ff0219169083151502179055508015157f7fc281b886d2b464428d21902edc6f02d5d8badcefcaf0f1bafc043c51244be060405160405180910390a250565b60035481565b737a250d5630b4cf539739df2c5dacb4c659f2488d81565b60006009600a6107fb9190613086565b64a2fb40580061080b91906130d1565b905090565b600a60000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461086d57600080fd5b8073ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f193505050501580156108b3573d6000803e3d6000fd5b5050565b600a60000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461091457600080fd5b60004711610957576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161094e9061315f565b60405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f1935050505015801561099d573d6000803e3d6000fd5b50565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414610b95576000600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015610b09576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b00906131cb565b60405180910390fd5b82600260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282540392505081905550505b610ba0848484611a7f565b90509392505050565b600a60000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610c0657600080fd5b600081118015610c165750600481105b610c55576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c4c9061325d565b60405180910390fd5b80600581905550807fb1af3fca46cbc4b6ceb19173da47e172fd99155f6c0cd5c0797cdd11056efd7860405160405180910390a250565b60006009905090565b7f0000000000000000000000002e1b535a046e83ebc339184a730a8f9d2e05729081565b6000601060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b600a60000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610d6c57600080fd5b6000610d7730610eb8565b11610db7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dae906132ef565b60405180910390fd5b610dbf6120b1565b565b600a60000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610e1e57600080fd5b6001600f54148015610e2e575080155b610e3757600080fd5b8282600385859050610e49919061330f565b818110610e5957610e58613343565b5b90506020020135600e819055508282600185859050610e78919061330f565b818110610e8857610e87613343565b5b90506020020135600e5410610ea057610e9f613372565b5b505050565b600d60019054906101000a900460ff1681565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60088060000154908060010154905082565b60606040518060400160405280600681526020017f526566756e640000000000000000000000000000000000000000000000000000815250905090565b600a60000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610fad57600080fd5b3073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610fe557600080fd5b80600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167f85649af0309729cae07d0c038ebb0ce8b1652c1e2e9226993e8123ac60022ba160405160405180910390a35050565b600a60000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146110e357600080fd5b8060038190555050565b60006110fa338484611a7f565b905092915050565b600a60000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461115f57600080fd5b60005b83839050811015611324578115156010600086868581811061118757611186613343565b5b905060200201602081019061119c9190612bbb565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151503611226576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161121d90613413565b60405180910390fd5b816010600086868581811061123e5761123d613343565b5b90506020020160208101906112539190612bbb565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508115158484838181106112ba576112b9613343565b5b90506020020160208101906112cf9190612bbb565b73ffffffffffffffffffffffffffffffffffffffff167f3499bfcf9673677ba552f3fe2ea274ec7e6246da31c3c87e115b45a9b0db2efb60405160405180910390a3808061131c90613433565b915050611162565b50505050565b600a60000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461138757600080fd5b600d60029054906101000a900460ff161580156113a757506000600f5414155b6113b057600080fd5b600e54436113be919061347b565b600f60008282546113cf919061347b565b925050819055506001600d60026101000a81548160ff0219169083151502179055507fea4359d5c4b8f0945a64ab9c37fe830b3407d45e0e6e6f84275977a570457d6f60405160405180910390a1565b600a60000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461147c57600080fd5b801515600d60019054906101000a900460ff161515036114d1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114c890613521565b60405180910390fd5b80600d60016101000a81548160ff0219169083151502179055508015157fb9bbb15e341600c8d067a0cadeba219905d5ba6d422b193c9c32265d26fc51c860405160405180910390a250565b600a8060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060020160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905083565b600a60000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146115f257600080fd5b600d60029054906101000a900460ff1615801561160c5750805b61161557600080fd5b6001600f8190555050565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600a60000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461170457600080fd5b3073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611772576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611769906135b3565b60405180910390fd5b60008173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016117ad9190612cae565b602060405180830381865afa1580156117ca573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117ee91906135e8565b905060008111611833576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161182a90613687565b60405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33836040518363ffffffff1660e01b815260040161186e9291906136a7565b6020604051808303816000875af115801561188d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118b191906136e5565b505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611925576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161191c9061375e565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611994576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161198b9061375e565b60405180910390fd5b80600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611a729190612b26565b60405180910390a3505050565b60008383600d60029054906101000a900460ff1680611aee5750600a60000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b80611b425750601060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b611b81576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b78906137ca565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff1603611bf0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611be79061385c565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1603611c5f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c56906138ee565b60405180910390fd5b6000841480611c7a5750600d60009054906101000a900460ff165b15611c9157611c8a8686866121db565b92506120a8565b600460009054906101000a900460ff168015611cf75750600660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015611d4d5750600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611daf576000611d5e8787612377565b9050611d69816123bd565b43600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505b6000611dba30610eb8565b905060006003548210159050600d60019054906101000a900460ff168015611ddf5750805b8015611df85750600d60009054906101000a900460ff16155b8015611e5057507f0000000000000000000000002e1b535a046e83ebc339184a730a8f9d2e05729073ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff1614155b8015611ea65750601060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015611efc5750601060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611f0a57611f096120b1565b5b6000600d60009054906101000a900460ff161590507f0000000000000000000000002e1b535a046e83ebc339184a730a8f9d2e05729073ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff1614158015611fc757507f0000000000000000000000002e1b535a046e83ebc339184a730a8f9d2e05729073ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff1614155b15611fd157600090505b601060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806120725750601060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561207c57600090505b80156120975761208d8989896124a9565b95505050506120a8565b6120a28989896121db565b95505050505b50509392505050565b6001600d60006101000a81548160ff02191690831515021790555060006120d730610eb8565b90506120e16124f2565b6120eb57506121be565b60646003546120fa91906130d1565b81111561211357606460035461211091906130d1565b90505b60004790506121218261251d565b6000814761212f919061330f565b9050600061014a6103e883612144919061393d565b61214e91906130d1565b905061217f600a60020160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1682612744565b6121b9600a60010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1682846121b4919061330f565b612744565b505050505b6000600d60006101000a81548160ff021916908315150217905550565b600080600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015612263576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161225a906139ba565b60405180910390fd5b82600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254039250508190555082600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546122ff919061347b565b925050819055508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516123639190612b26565b60405180910390a360019150509392505050565b6000612382836127b5565b15806123945750612392826127b5565b155b61239d57600080fd5b6123a6836127b5565b156123b3578190506123b7565b8290505b92915050565b600080600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414806124635750600143612414919061347b565b600554600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612461919061347b565b105b9050806124a5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161249c90613a26565b60405180910390fd5b5050565b6000806124b78585856127c8565b905060008111156124dd576124cd8530836121db565b5080836124da919061330f565b92505b6124e88585856121db565b9150509392505050565b6000600f5443118015612518575060026011600043815260200190815260200160002054105b905090565b60116000438152602001908152602001600020600081548092919061254190613433565b91905055506000600267ffffffffffffffff81111561256357612562613a46565b5b6040519080825280602002602001820160405280156125915781602001602082028036833780820191505090505b50905030816000815181106125a9576125a8613343565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612642573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126669190613a8a565b8160018151811061267a57612679613343565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b815260040161270a959493929190613bb0565b600060405180830381600087803b15801561272457600080fd5b505af1925050508015612735575060015b61273f5750612741565b505b50565b60008273ffffffffffffffffffffffffffffffffffffffff168260405161276a90613c3b565b60006040518083038185875af1925050503d80600081146127a7576040519150601f19603f3d011682016040523d82523d6000602084013e6127ac565b606091505b50509050505050565b600080823b905060008111915050919050565b6000600f5460001080156127dd575043600f54105b156128655760647f0000000000000000000000002e1b535a046e83ebc339184a730a8f9d2e05729073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161461284257600860000154612849565b6008600101545b8361285491906130d1565b61285e919061393d565b90506128f1565b60647f0000000000000000000000002e1b535a046e83ebc339184a730a8f9d2e05729073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16146128d3576000600f54146128cb5760036128ce565b60035b6128d6565b60035b60ff16836128e491906130d1565b6128ee919061393d565b90505b9392505050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612932578082015181840152602081019050612917565b60008484015250505050565b6000601f19601f8301169050919050565b600061295a826128f8565b6129648185612903565b9350612974818560208601612914565b61297d8161293e565b840191505092915050565b600060208201905081810360008301526129a2818461294f565b905092915050565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006129df826129b4565b9050919050565b6129ef816129d4565b81146129fa57600080fd5b50565b600081359050612a0c816129e6565b92915050565b6000819050919050565b612a2581612a12565b8114612a3057600080fd5b50565b600081359050612a4281612a1c565b92915050565b60008060408385031215612a5f57612a5e6129aa565b5b6000612a6d858286016129fd565b9250506020612a7e85828601612a33565b9150509250929050565b60008115159050919050565b612a9d81612a88565b82525050565b6000602082019050612ab86000830184612a94565b92915050565b612ac781612a88565b8114612ad257600080fd5b50565b600081359050612ae481612abe565b92915050565b600060208284031215612b0057612aff6129aa565b5b6000612b0e84828501612ad5565b91505092915050565b612b2081612a12565b82525050565b6000602082019050612b3b6000830184612b17565b92915050565b6000819050919050565b6000612b66612b61612b5c846129b4565b612b41565b6129b4565b9050919050565b6000612b7882612b4b565b9050919050565b6000612b8a82612b6d565b9050919050565b612b9a81612b7f565b82525050565b6000602082019050612bb56000830184612b91565b92915050565b600060208284031215612bd157612bd06129aa565b5b6000612bdf848285016129fd565b91505092915050565b600080600060608486031215612c0157612c006129aa565b5b6000612c0f868287016129fd565b9350506020612c20868287016129fd565b9250506040612c3186828701612a33565b9150509250925092565b600060208284031215612c5157612c506129aa565b5b6000612c5f84828501612a33565b91505092915050565b600060ff82169050919050565b612c7e81612c68565b82525050565b6000602082019050612c996000830184612c75565b92915050565b612ca8816129d4565b82525050565b6000602082019050612cc36000830184612c9f565b92915050565b600080fd5b600080fd5b600080fd5b60008083601f840112612cee57612ced612cc9565b5b8235905067ffffffffffffffff811115612d0b57612d0a612cce565b5b602083019150836020820283011115612d2757612d26612cd3565b5b9250929050565b600080600060408486031215612d4757612d466129aa565b5b600084013567ffffffffffffffff811115612d6557612d646129af565b5b612d7186828701612cd8565b93509350506020612d8486828701612ad5565b9150509250925092565b6000604082019050612da36000830185612b17565b612db06020830184612b17565b9392505050565b60008060408385031215612dce57612dcd6129aa565b5b6000612ddc858286016129fd565b9250506020612ded85828601612ad5565b9150509250929050565b60008083601f840112612e0d57612e0c612cc9565b5b8235905067ffffffffffffffff811115612e2a57612e29612cce565b5b602083019150836020820283011115612e4657612e45612cd3565b5b9250929050565b600080600060408486031215612e6657612e656129aa565b5b600084013567ffffffffffffffff811115612e8457612e836129af565b5b612e9086828701612df7565b93509350506020612ea386828701612ad5565b9150509250925092565b6000606082019050612ec26000830186612c9f565b612ecf6020830185612c9f565b612edc6040830184612c9f565b949350505050565b60008060408385031215612efb57612efa6129aa565b5b6000612f09858286016129fd565b9250506020612f1a858286016129fd565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b6001851115612faa57808604811115612f8657612f85612f24565b5b6001851615612f955780820291505b8081029050612fa385612f53565b9450612f6a565b94509492505050565b600082612fc3576001905061307f565b81612fd1576000905061307f565b8160018114612fe75760028114612ff157613020565b600191505061307f565b60ff84111561300357613002612f24565b5b8360020a91508482111561301a57613019612f24565b5b5061307f565b5060208310610133831016604e8410600b84101617156130555782820a9050838111156130505761304f612f24565b5b61307f565b6130628484846001612f60565b9250905081840481111561307957613078612f24565b5b81810290505b9392505050565b600061309182612a12565b915061309c83612c68565b92506130c97fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484612fb3565b905092915050565b60006130dc82612a12565b91506130e783612a12565b92508282026130f581612a12565b9150828204841483151761310c5761310b612f24565b5b5092915050565b7f546f6b656e3a206e6f2065746820746f20636c65617200000000000000000000600082015250565b6000613149601683612903565b915061315482613113565b602082019050919050565b600060208201905081810360008301526131788161313c565b9050919050565b7f45524332303a20696e73756666696369656e7420416c6c6f77616e6365000000600082015250565b60006131b5601d83612903565b91506131c08261317f565b602082019050919050565b600060208201905081810360008301526131e4816131a8565b9050919050565b7f546f6b656e3a206f6e6c7920747261646520636f6f6c646f776e2076616c756560008201527f7320696e2072616e67652028302c3429207065726d69737369626c6500000000602082015250565b6000613247603c83612903565b9150613252826131eb565b604082019050919050565b600060208201905081810360008301526132768161323a565b9050919050565b7f546f6b656e3a206e6f20636f6e747261637420746f6b656e7320746f20636c6560008201527f6172000000000000000000000000000000000000000000000000000000000000602082015250565b60006132d9602283612903565b91506132e48261327d565b604082019050919050565b60006020820190508181036000830152613308816132cc565b9050919050565b600061331a82612a12565b915061332583612a12565b925082820390508181111561333d5761333c612f24565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052600160045260246000fd5b7f546f6b656e3a206164647265737320616c7265616479207b73686f756c64457860008201527f636c7564657d0000000000000000000000000000000000000000000000000000602082015250565b60006133fd602683612903565b9150613408826133a1565b604082019050919050565b6000602082019050818103600083015261342c816133f0565b9050919050565b600061343e82612a12565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036134705761346f612f24565b5b600182019050919050565b600061348682612a12565b915061349183612a12565b92508282019050808211156134a9576134a8612f24565b5b92915050565b7f546f6b656e3a2073776170456e61626c656420616c7265616479207b73686f7560008201527f6c64456e61626c657d0000000000000000000000000000000000000000000000602082015250565b600061350b602983612903565b9150613516826134af565b604082019050919050565b6000602082019050818103600083015261353a816134fe565b9050919050565b7f546f6b656e3a2063616e277420636c65617220636f6e747261637420746f6b6560008201527f6e00000000000000000000000000000000000000000000000000000000000000602082015250565b600061359d602183612903565b91506135a882613541565b604082019050919050565b600060208201905081810360008301526135cc81613590565b9050919050565b6000815190506135e281612a1c565b92915050565b6000602082840312156135fe576135fd6129aa565b5b600061360c848285016135d3565b91505092915050565b7f546f6b656e3a206e6f7420656e6f75676820746f6b656e7320746f20636c656160008201527f7200000000000000000000000000000000000000000000000000000000000000602082015250565b6000613671602183612903565b915061367c82613615565b604082019050919050565b600060208201905081810360008301526136a081613664565b9050919050565b60006040820190506136bc6000830185612c9f565b6136c96020830184612b17565b9392505050565b6000815190506136df81612abe565b92915050565b6000602082840312156136fb576136fa6129aa565b5b6000613709848285016136d0565b91505092915050565b7f45524332303a207a65726f204164647265737300000000000000000000000000600082015250565b6000613748601383612903565b915061375382613712565b602082019050919050565b600060208201905081810360008301526137778161373b565b9050919050565b7f546f6b656e3a2054726164696e67206973206e6f74206163746976652e000000600082015250565b60006137b4601d83612903565b91506137bf8261377e565b602082019050919050565b600060208201905081810360008301526137e3816137a7565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000613846602583612903565b9150613851826137ea565b604082019050919050565b6000602082019050818103600083015261387581613839565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b60006138d8602383612903565b91506138e38261387c565b604082019050919050565b60006020820190508181036000830152613907816138cb565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061394882612a12565b915061395383612a12565b9250826139635761396261390e565b5b828204905092915050565b7f546f6b656e3a20696e73756666696369656e742042616c616e63650000000000600082015250565b60006139a4601b83612903565b91506139af8261396e565b602082019050919050565b600060208201905081810360008301526139d381613997565b9050919050565b7f4d6178207478206672657175656e637920657863656564656421000000000000600082015250565b6000613a10601a83612903565b9150613a1b826139da565b602082019050919050565b60006020820190508181036000830152613a3f81613a03565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600081519050613a84816129e6565b92915050565b600060208284031215613aa057613a9f6129aa565b5b6000613aae84828501613a75565b91505092915050565b6000819050919050565b6000613adc613ad7613ad284613ab7565b612b41565b612a12565b9050919050565b613aec81613ac1565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b613b27816129d4565b82525050565b6000613b398383613b1e565b60208301905092915050565b6000602082019050919050565b6000613b5d82613af2565b613b678185613afd565b9350613b7283613b0e565b8060005b83811015613ba3578151613b8a8882613b2d565b9750613b9583613b45565b925050600181019050613b76565b5085935050505092915050565b600060a082019050613bc56000830188612b17565b613bd26020830187613ae3565b8181036040830152613be48186613b52565b9050613bf36060830185612c9f565b613c006080830184612b17565b9695505050505050565b600081905092915050565b50565b6000613c25600083613c0a565b9150613c3082613c15565b600082019050919050565b6000613c4682613c18565b915081905091905056fea2646970667358221220dbe912052e7300bb65322ed43561c02925bb7b53cffd2af1e78683578b3b891964736f6c63430008130033

Deployed Bytecode Sourcemap

3608:14758:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7181:80;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7517:161;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17071:176;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4012:47;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4951:93;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6911:88;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15613:188;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10801:227;;;;;;;;;;;;;:::i;:::-;;8153:492;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17255:352;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7005:80;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5051:38;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10238:123;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11515:211;;;;;;;;;;;;;:::i;:::-;;11226:281;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5124:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7267:103;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4596:49;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;7091:84;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17615:268;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18156:164;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8002:143;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9761:469;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17891:259;;;;;;;;;;;;;:::i;:::-;;9081:285;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4683:259;;;;;;;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;11036:182;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7376:133;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10369:424;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7181:80;7229:13;7253:5;;;;;;;;;;;;;;;;;7246:12;;7181:80;:::o;7517:161::-;7594:4;7611:37;7620:10;7632:7;7641:6;7611:8;:37::i;:::-;7666:4;7659:11;;7517:161;;;;:::o;17071:176::-;17149:7;:22;;;;;;;;;;;;17135:36;;:10;:36;;;17127:45;;;;;;17193:6;17183:7;;:16;;;;;;;;;;;;;;;;;;17232:6;17217:22;;;;;;;;;;;;17071:176;:::o;4012:47::-;;;;:::o;4951:93::-;5001:42;4951:93;:::o;6911:88::-;6966:7;3794:1;4109:2;:13;;;;:::i;:::-;3972:15;:33;;;;:::i;:::-;6977:19;;6911:88;:::o;15613:188::-;15690:7;:22;;;;;;;;;;;;15676:36;;:10;:36;;;15668:45;;;;;;15742:6;15734:24;;:49;15760:21;15734:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15613:188;:::o;10801:227::-;10864:7;:22;;;;;;;;;;;;10850:36;;:10;:36;;;10842:45;;;;;;10930:1;10906:21;:25;10898:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;10977:10;10969:28;;:51;10998:21;10969:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10801:227::o;8153:492::-;8244:4;8299:17;8264:11;:19;8276:6;8264:19;;;;;;;;;;;;;;;:31;8284:10;8264:31;;;;;;;;;;;;;;;;:52;8261:323;;8332:24;8359:11;:19;8371:6;8359:19;;;;;;;;;;;;;;;:31;8379:10;8359:31;;;;;;;;;;;;;;;;8332:58;;8433:6;8413:16;:26;;8405:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;8551:6;8516:11;:19;8528:6;8516:19;;;;;;;;;;;;;;;:31;8536:10;8516:31;;;;;;;;;;;;;;;;:41;;;;;;;;;;;8317:267;8261:323;8601:36;8611:6;8619:9;8630:6;8601:9;:36::i;:::-;8594:43;;8153:492;;;;;:::o;17255:352::-;17349:7;:22;;;;;;;;;;;;17335:36;;:10;:36;;;17327:45;;;;;;17410:1;17391:16;:20;:44;;;;;17434:1;17415:16;:20;17391:44;17383:117;;;;;;;;;;;;:::i;:::-;;;;;;;;;17527:16;17511:13;:32;;;;17582:16;17561:38;;;;;;;;;;17255:352;:::o;7005:80::-;7057:5;3794:1;7066:16;;7005:80;:::o;5051:38::-;;;:::o;10238:123::-;10303:4;10327:17;:26;10345:7;10327:26;;;;;;;;;;;;;;;;;;;;;;;;;10320:33;;10238:123;;;:::o;11515:211::-;11584:7;:22;;;;;;;;;;;;11570:36;;:10;:36;;;11562:45;;;;;;11653:1;11626:24;11644:4;11626:9;:24::i;:::-;:28;11618:75;;;;;;;;;;;;:::i;:::-;;;;;;;;;11704:14;:12;:14::i;:::-;11515:211::o;11226:281::-;11332:7;:22;;;;;;;;;;;;11318:36;;:10;:36;;;11310:45;;;;;;11398:1;11382:12;;:17;:29;;;;;11404:7;11403:8;11382:29;11374:38;;;;;;11422:7;;11445:1;11430:7;;:14;;:16;;;;:::i;:::-;11422:25;;;;;;;:::i;:::-;;;;;;;;11413:6;:34;;;;11465:7;;11488:1;11473:7;;:14;;:16;;;;:::i;:::-;11465:25;;;;;;;:::i;:::-;;;;;;;;11456:6;;:34;11449:42;;;;:::i;:::-;;11226:281;;;:::o;5124:30::-;;;;;;;;;;;;;:::o;7267:103::-;7333:7;7350:9;:18;7360:7;7350:18;;;;;;;;;;;;;;;;7343:25;;7267:103;;;:::o;4596:49::-;;;;;;;;;;;;;;:::o;7091:84::-;7141:13;7165:7;;;;;;;;;;;;;;;;;7158:14;;7091:84;:::o;17615:268::-;17713:7;:22;;;;;;;;;;;;17699:36;;:10;:36;;;17691:45;;;;;;17774:4;17755:24;;:7;:24;;;17747:33;;;;;;17819:5;17791:16;:25;17808:7;17791:25;;;;;;;;;;;;;;;;:33;;;;;;;;;;;;;;;;;;17869:5;17842:33;;17860:7;17842:33;;;;;;;;;;;;17615:268;;:::o;18156:164::-;18248:7;:22;;;;;;;;;;;;18234:36;;:10;:36;;;18226:45;;;;;;18299:13;18282:14;:30;;;;18156:164;:::o;8002:143::-;8073:4;8097:40;8107:10;8119:9;8130:6;8097:9;:40::i;:::-;8090:47;;8002:143;;;;:::o;9761:469::-;9894:7;:22;;;;;;;;;;;;9880:36;;:10;:36;;;9872:45;;;;;;9932:9;9928:295;9951:8;;:15;;9947:1;:19;9928:295;;;10030:13;9996:47;;:17;:30;10014:8;;10023:1;10014:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;9996:30;;;;;;;;;;;;;;;;;;;;;;;;;:47;;;9988:98;;;;;;;;;;;;:::i;:::-;;;;;;;;;10134:13;10101:17;:30;10119:8;;10128:1;10119:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;10101:30;;;;;;;;;;;;;;;;:46;;;;;;;;;;;;;;;;;;10197:13;10167:44;;10184:8;;10193:1;10184:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;10167:44;;;;;;;;;;;;9968:3;;;;;:::i;:::-;;;;9928:295;;;;9761:469;;;:::o;17891:259::-;17956:7;:22;;;;;;;;;;;;17942:36;;:10;:36;;;17934:45;;;;;;17999:13;;;;;;;;;;;17998:14;:35;;;;;18032:1;18016:12;;:17;;17998:35;17990:44;;;;;;18072:6;;18059:12;:19;;;;:::i;:::-;18045:12;;:33;;;;;;;:::i;:::-;;;;;;;;18105:4;18089:13;;:20;;;;;;;;;;;;;;;;;;18127:15;;;;;;;;;;17891:259::o;9081:285::-;9163:7;:22;;;;;;;;;;;;9149:36;;:10;:36;;;9141:45;;;;;;9220:12;9205:27;;:11;;;;;;;;;;;:27;;;9197:81;;;;;;;;;;;;:::i;:::-;;;;;;;;;9303:12;9289:11;;:26;;;;;;;;;;;;;;;;;;9345:12;9333:25;;;;;;;;;;;;9081:285;:::o;4683:259::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;11036:182::-;11110:7;:22;;;;;;;;;;;;11096:36;;:10;:36;;;11088:45;;;;;;11153:13;;;;;;;;;;;11152:14;:22;;;;;11170:4;11152:22;11144:31;;;;;;11201:1;11186:12;:16;;;;11036:182;:::o;7376:133::-;7460:7;7478:11;:19;7490:6;7478:19;;;;;;;;;;;;;;;:28;7498:7;7478:28;;;;;;;;;;;;;;;;7471:35;;7376:133;;;;:::o;10369:424::-;10455:7;:22;;;;;;;;;;;;10441:36;;:10;:36;;;10433:45;;;;;;10521:4;10497:29;;:12;:29;;;10489:75;;;;;;;;;;;;:::i;:::-;;;;;;;;;10575:21;10606:12;10599:30;;;10638:4;10599:45;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10575:69;;10679:1;10663:13;:17;10655:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;10736:12;10729:29;;;10759:10;10771:13;10729:56;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;10422:371;10369:424;:::o;7686:308::-;7799:1;7781:20;;:6;:20;;;7773:52;;;;;;;;;;;;:::i;:::-;;;;;;;;;7863:1;7844:21;;:7;:21;;;7836:53;;;;;;;;;;;;:::i;:::-;;;;;;;;;7931:6;7900:11;:19;7912:6;7900:19;;;;;;;;;;;;;;;:28;7920:7;7900:28;;;;;;;;;;;;;;;:37;;;;7970:7;7953:33;;7962:6;7953:33;;;7979:6;7953:33;;;;;;:::i;:::-;;;;;;;;7686:308;;;:::o;11734:1591::-;11835:4;11807;11813:2;6184:13;;;;;;;;;;;:47;;;;6209:7;:22;;;;;;;;;;;;6201:30;;:4;:30;;;6184:47;:74;;;;6235:17;:23;6253:4;6235:23;;;;;;;;;;;;;;;;;;;;;;;;;6184:74;6176:116;;;;;;;;;;;;:::i;:::-;;;;;;;;;11876:1:::1;11860:18;;:4;:18;;::::0;11852:68:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;11953:1;11939:16;;:2;:16;;::::0;11931:64:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;12029:1;12019:6;:11;:21;;;;12034:6;;;;;;;;;;;12019:21;12016:103;;;12064:32;12079:4;12085:2;12089:6;12064:14;:32::i;:::-;12057:39;;;;12016:103;12360:7;;;;;;;;;;;:34;;;;;12372:16;:22;12389:4;12372:22;;;;;;;;;;;;;;;;;;;;;;;;;12371:23;12360:34;:59;;;;;12399:16;:20;12416:2;12399:20;;;;;;;;;;;;;;;;;;;;;;;;;12398:21;12360:59;12357:224;;;12435:13;12451:24;12466:4;12472:2;12451:14;:24::i;:::-;12435:40;;12490:27;12511:5;12490:20;:27::i;:::-;12557:12;12532:15;:22;12548:5;12532:22;;;;;;;;;;;;;;;:37;;;;12420:161;12357:224;12591:28;12622:24;12640:4;12622:9;:24::i;:::-;12591:55;;12657:13;12697:14;;12673:20;:38;;12657:54;;12725:11;;;;;;;;;;;:23;;;;;12740:8;12725:23;:34;;;;;12753:6;;;;;;;;;;;12752:7;12725:34;:59;;;;;12771:13;12763:21;;:4;:21;;;;12725:59;:87;;;;;12789:17;:23;12807:4;12789:23;;;;;;;;;;;;;;;;;;;;;;;;;12788:24;12725:87;:113;;;;;12817:17;:21;12835:2;12817:21;;;;;;;;;;;;;;;;;;;;;;;;;12816:22;12725:113;12722:158;;;12854:14;:12;:14::i;:::-;12722:158;12901:12;12917:6;;;;;;;;;;;12916:7;12901:22;;12947:13;12939:21;;:4;:21;;;;:44;;;;;12970:13;12964:19;;:2;:19;;;;12939:44;12936:100;;;13019:5;13009:15;;12936:100;13051:17;:23;13069:4;13051:23;;;;;;;;;;;;;;;;;;;;;;;;;:48;;;;13078:17;:21;13096:2;13078:21;;;;;;;;;;;;;;;;;;;;;;;;;13051:48;13048:95;;;13126:5;13116:15;;13048:95;13180:7;13177:132;;;13209:32;13224:4;13230:2;13234:6;13209:14;:32::i;:::-;13202:39;;;;;;;13177:132;13277:32;13292:4;13298:2;13302:6;13277:14;:32::i;:::-;13270:39;;;;;6303:1;11734:1591:::0;;;;;;;:::o;14789:657::-;6061:4;6052:6;;:13;;;;;;;;;;;;;;;;;;14844:23:::1;14870:24;14888:4;14870:9;:24::i;:::-;14844:50;;14909:9;:7;:9::i;:::-;14905:143;;14934:7;;;14905:143;14994:3;14977:14;;:20;;;;:::i;:::-;14959:15;:38;14956:92;;;15045:3;15028:14;;:20;;;;:::i;:::-;15010:38;;14956:92;15069:25;15097:21;15069:49;;15131:33;15148:15;15131:16;:33::i;:::-;15186:18;15231:17;15207:21;:41;;;;:::i;:::-;15186:62;;15269:16;15309:3;15301:4;15289:10;:16;;;;:::i;:::-;15288:24;;;;:::i;:::-;15269:43;;15333:42;15341:7;:24;;;;;;;;;;;;15366:8;15333:7;:42::i;:::-;15386:52;15394:7;:23;;;;;;;;;;;;15429:8;15418:10;:19;;;;:::i;:::-;15386:7;:52::i;:::-;14830:616;;;;6076:1;6097:5:::0;6088:6;;:14;;;;;;;;;;;;;;;;;;14789:657::o;8653:420::-;8746:4;8763:21;8787:9;:17;8797:6;8787:17;;;;;;;;;;;;;;;;8763:41;;8840:6;8823:13;:23;;8815:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;8934:6;8913:9;:17;8923:6;8913:17;;;;;;;;;;;;;;;;:27;;;;;;;;;;;8986:6;8962:9;:20;8972:9;8962:20;;;;;;;;;;;;;;;;:30;;;;;;;:::i;:::-;;;;;;;;9025:9;9008:35;;9017:6;9008:35;;;9036:6;9008:35;;;;;;:::i;:::-;;;;;;;;9061:4;9054:11;;;8653:420;;;;;:::o;16579:219::-;16653:7;16682:15;16693:3;16682:10;:15::i;:::-;16681:16;:38;;;;16702:17;16713:5;16702:10;:17::i;:::-;16701:18;16681:38;16673:47;;;;;;16735:15;16746:3;16735:10;:15::i;:::-;16731:59;;;16759:5;16752:12;;;;16731:59;16787:3;16780:10;;16579:219;;;;;:::o;16806:257::-;16874:14;16916:1;16891:15;:21;16907:4;16891:21;;;;;;;;;;;;;;;;:26;:105;;;;16993:1;16978:12;:16;;;;:::i;:::-;16960:13;;16936:15;:21;16952:4;16936:21;;;;;;;;;;;;;;;;:37;;;;:::i;:::-;16935:60;16891:105;16874:122;;17015:9;17007:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;16863:200;16806:257;:::o;13333:355::-;13416:4;13433:12;13448:26;13457:4;13463:2;13467:6;13448:8;:26::i;:::-;13433:41;;13499:1;13492:4;:8;13489:142;;;13530:41;13545:4;13559;13566;13530:14;:41::i;:::-;;13615:4;13605:14;;;;;:::i;:::-;;;13489:142;13648:32;13663:4;13669:2;13673:6;13648:14;:32::i;:::-;13641:39;;;13333:355;;;;;:::o;14641:140::-;14682:4;14721:12;;14706;:27;:67;;;;;14772:1;14737:18;:32;14756:12;14737:32;;;;;;;;;;;;:36;14706:67;14699:74;;14641:140;:::o;15809:552::-;15875:18;:32;15894:12;15875:32;;;;;;;;;;;;:34;;;;;;;;;:::i;:::-;;;;;;15980:21;16018:1;16004:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15980:40;;16049:4;16031;16036:1;16031:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;5001:42;16075:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;16065:4;16070:1;16065:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;;;5001:42;16114:66;;;16195:11;16221:1;16265:4;16292;16312:15;16114:214;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16110:244;;16346:7;;;16110:244;15864:497;15809:552;;:::o;15454:151::-;15527:12;15552:8;15544:22;;15574:9;15544:44;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15526:62;;;15515:90;15454:151;;:::o;16376:195::-;16435:4;16452:12;16519:7;16507:20;16499:28;;16562:1;16555:4;:8;16548:15;;;16376:195;;;:::o;13696:472::-;13778:12;13810;;13806:1;:16;:47;;;;;13841:12;13826;;:27;13806:47;13803:358;;;4171:3;13892:13;13886:19;;:2;:19;;;:76;;13944:11;:18;;;13886:76;;;13922:11;:19;;;13886:76;13876:6;:87;;;;:::i;:::-;:104;;;;:::i;:::-;13869:111;;13803:358;;;4171:3;14058:13;14050:21;;:4;:21;;;:69;;14109:1;14093:12;;:17;:25;;14117:1;14093:25;;;14113:1;14093:25;14050:69;;;14088:1;14050:69;14040:80;;:6;:80;;;;:::i;:::-;:97;;;;:::i;:::-;14033:104;;13803:358;13696:472;;;;;:::o;7:99:1:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:246::-;368:1;378:113;392:6;389:1;386:13;378:113;;;477:1;472:3;468:11;462:18;458:1;453:3;449:11;442:39;414:2;411:1;407:10;402:15;;378:113;;;525:1;516:6;511:3;507:16;500:27;349:184;287:246;;;:::o;539:102::-;580:6;631:2;627:7;622:2;615:5;611:14;607:28;597:38;;539:102;;;:::o;647:377::-;735:3;763:39;796:5;763:39;:::i;:::-;818:71;882:6;877:3;818:71;:::i;:::-;811:78;;898:65;956:6;951:3;944:4;937:5;933:16;898:65;:::i;:::-;988:29;1010:6;988:29;:::i;:::-;983:3;979:39;972:46;;739:285;647:377;;;;:::o;1030:313::-;1143:4;1181:2;1170:9;1166:18;1158:26;;1230:9;1224:4;1220:20;1216:1;1205:9;1201:17;1194:47;1258:78;1331:4;1322:6;1258:78;:::i;:::-;1250:86;;1030:313;;;;:::o;1430:117::-;1539:1;1536;1529:12;1553:117;1662:1;1659;1652:12;1676:126;1713:7;1753:42;1746:5;1742:54;1731:65;;1676:126;;;:::o;1808:96::-;1845:7;1874:24;1892:5;1874:24;:::i;:::-;1863:35;;1808:96;;;:::o;1910:122::-;1983:24;2001:5;1983:24;:::i;:::-;1976:5;1973:35;1963:63;;2022:1;2019;2012:12;1963:63;1910:122;:::o;2038:139::-;2084:5;2122:6;2109:20;2100:29;;2138:33;2165:5;2138:33;:::i;:::-;2038:139;;;;:::o;2183:77::-;2220:7;2249:5;2238:16;;2183:77;;;:::o;2266:122::-;2339:24;2357:5;2339:24;:::i;:::-;2332:5;2329:35;2319:63;;2378:1;2375;2368:12;2319:63;2266:122;:::o;2394:139::-;2440:5;2478:6;2465:20;2456:29;;2494:33;2521:5;2494:33;:::i;:::-;2394:139;;;;:::o;2539:474::-;2607:6;2615;2664:2;2652:9;2643:7;2639:23;2635:32;2632:119;;;2670:79;;:::i;:::-;2632:119;2790:1;2815:53;2860:7;2851:6;2840:9;2836:22;2815:53;:::i;:::-;2805:63;;2761:117;2917:2;2943:53;2988:7;2979:6;2968:9;2964:22;2943:53;:::i;:::-;2933:63;;2888:118;2539:474;;;;;:::o;3019:90::-;3053:7;3096:5;3089:13;3082:21;3071:32;;3019:90;;;:::o;3115:109::-;3196:21;3211:5;3196:21;:::i;:::-;3191:3;3184:34;3115:109;;:::o;3230:210::-;3317:4;3355:2;3344:9;3340:18;3332:26;;3368:65;3430:1;3419:9;3415:17;3406:6;3368:65;:::i;:::-;3230:210;;;;:::o;3446:116::-;3516:21;3531:5;3516:21;:::i;:::-;3509:5;3506:32;3496:60;;3552:1;3549;3542:12;3496:60;3446:116;:::o;3568:133::-;3611:5;3649:6;3636:20;3627:29;;3665:30;3689:5;3665:30;:::i;:::-;3568:133;;;;:::o;3707:323::-;3763:6;3812:2;3800:9;3791:7;3787:23;3783:32;3780:119;;;3818:79;;:::i;:::-;3780:119;3938:1;3963:50;4005:7;3996:6;3985:9;3981:22;3963:50;:::i;:::-;3953:60;;3909:114;3707:323;;;;:::o;4036:118::-;4123:24;4141:5;4123:24;:::i;:::-;4118:3;4111:37;4036:118;;:::o;4160:222::-;4253:4;4291:2;4280:9;4276:18;4268:26;;4304:71;4372:1;4361:9;4357:17;4348:6;4304:71;:::i;:::-;4160:222;;;;:::o;4388:60::-;4416:3;4437:5;4430:12;;4388:60;;;:::o;4454:142::-;4504:9;4537:53;4555:34;4564:24;4582:5;4564:24;:::i;:::-;4555:34;:::i;:::-;4537:53;:::i;:::-;4524:66;;4454:142;;;:::o;4602:126::-;4652:9;4685:37;4716:5;4685:37;:::i;:::-;4672:50;;4602:126;;;:::o;4734:140::-;4798:9;4831:37;4862:5;4831:37;:::i;:::-;4818:50;;4734:140;;;:::o;4880:159::-;4981:51;5026:5;4981:51;:::i;:::-;4976:3;4969:64;4880:159;;:::o;5045:250::-;5152:4;5190:2;5179:9;5175:18;5167:26;;5203:85;5285:1;5274:9;5270:17;5261:6;5203:85;:::i;:::-;5045:250;;;;:::o;5301:329::-;5360:6;5409:2;5397:9;5388:7;5384:23;5380:32;5377:119;;;5415:79;;:::i;:::-;5377:119;5535:1;5560:53;5605:7;5596:6;5585:9;5581:22;5560:53;:::i;:::-;5550:63;;5506:117;5301:329;;;;:::o;5636:619::-;5713:6;5721;5729;5778:2;5766:9;5757:7;5753:23;5749:32;5746:119;;;5784:79;;:::i;:::-;5746:119;5904:1;5929:53;5974:7;5965:6;5954:9;5950:22;5929:53;:::i;:::-;5919:63;;5875:117;6031:2;6057:53;6102:7;6093:6;6082:9;6078:22;6057:53;:::i;:::-;6047:63;;6002:118;6159:2;6185:53;6230:7;6221:6;6210:9;6206:22;6185:53;:::i;:::-;6175:63;;6130:118;5636:619;;;;;:::o;6261:329::-;6320:6;6369:2;6357:9;6348:7;6344:23;6340:32;6337:119;;;6375:79;;:::i;:::-;6337:119;6495:1;6520:53;6565:7;6556:6;6545:9;6541:22;6520:53;:::i;:::-;6510:63;;6466:117;6261:329;;;;:::o;6596:86::-;6631:7;6671:4;6664:5;6660:16;6649:27;;6596:86;;;:::o;6688:112::-;6771:22;6787:5;6771:22;:::i;:::-;6766:3;6759:35;6688:112;;:::o;6806:214::-;6895:4;6933:2;6922:9;6918:18;6910:26;;6946:67;7010:1;6999:9;6995:17;6986:6;6946:67;:::i;:::-;6806:214;;;;:::o;7026:118::-;7113:24;7131:5;7113:24;:::i;:::-;7108:3;7101:37;7026:118;;:::o;7150:222::-;7243:4;7281:2;7270:9;7266:18;7258:26;;7294:71;7362:1;7351:9;7347:17;7338:6;7294:71;:::i;:::-;7150:222;;;;:::o;7378:117::-;7487:1;7484;7477:12;7501:117;7610:1;7607;7600:12;7624:117;7733:1;7730;7723:12;7764:568;7837:8;7847:6;7897:3;7890:4;7882:6;7878:17;7874:27;7864:122;;7905:79;;:::i;:::-;7864:122;8018:6;8005:20;7995:30;;8048:18;8040:6;8037:30;8034:117;;;8070:79;;:::i;:::-;8034:117;8184:4;8176:6;8172:17;8160:29;;8238:3;8230:4;8222:6;8218:17;8208:8;8204:32;8201:41;8198:128;;;8245:79;;:::i;:::-;8198:128;7764:568;;;;;:::o;8338:698::-;8430:6;8438;8446;8495:2;8483:9;8474:7;8470:23;8466:32;8463:119;;;8501:79;;:::i;:::-;8463:119;8649:1;8638:9;8634:17;8621:31;8679:18;8671:6;8668:30;8665:117;;;8701:79;;:::i;:::-;8665:117;8814:80;8886:7;8877:6;8866:9;8862:22;8814:80;:::i;:::-;8796:98;;;;8592:312;8943:2;8969:50;9011:7;9002:6;8991:9;8987:22;8969:50;:::i;:::-;8959:60;;8914:115;8338:698;;;;;:::o;9042:332::-;9163:4;9201:2;9190:9;9186:18;9178:26;;9214:71;9282:1;9271:9;9267:17;9258:6;9214:71;:::i;:::-;9295:72;9363:2;9352:9;9348:18;9339:6;9295:72;:::i;:::-;9042:332;;;;;:::o;9380:468::-;9445:6;9453;9502:2;9490:9;9481:7;9477:23;9473:32;9470:119;;;9508:79;;:::i;:::-;9470:119;9628:1;9653:53;9698:7;9689:6;9678:9;9674:22;9653:53;:::i;:::-;9643:63;;9599:117;9755:2;9781:50;9823:7;9814:6;9803:9;9799:22;9781:50;:::i;:::-;9771:60;;9726:115;9380:468;;;;;:::o;9871:568::-;9944:8;9954:6;10004:3;9997:4;9989:6;9985:17;9981:27;9971:122;;10012:79;;:::i;:::-;9971:122;10125:6;10112:20;10102:30;;10155:18;10147:6;10144:30;10141:117;;;10177:79;;:::i;:::-;10141:117;10291:4;10283:6;10279:17;10267:29;;10345:3;10337:4;10329:6;10325:17;10315:8;10311:32;10308:41;10305:128;;;10352:79;;:::i;:::-;10305:128;9871:568;;;;;:::o;10445:698::-;10537:6;10545;10553;10602:2;10590:9;10581:7;10577:23;10573:32;10570:119;;;10608:79;;:::i;:::-;10570:119;10756:1;10745:9;10741:17;10728:31;10786:18;10778:6;10775:30;10772:117;;;10808:79;;:::i;:::-;10772:117;10921:80;10993:7;10984:6;10973:9;10969:22;10921:80;:::i;:::-;10903:98;;;;10699:312;11050:2;11076:50;11118:7;11109:6;11098:9;11094:22;11076:50;:::i;:::-;11066:60;;11021:115;10445:698;;;;;:::o;11149:442::-;11298:4;11336:2;11325:9;11321:18;11313:26;;11349:71;11417:1;11406:9;11402:17;11393:6;11349:71;:::i;:::-;11430:72;11498:2;11487:9;11483:18;11474:6;11430:72;:::i;:::-;11512;11580:2;11569:9;11565:18;11556:6;11512:72;:::i;:::-;11149:442;;;;;;:::o;11597:474::-;11665:6;11673;11722:2;11710:9;11701:7;11697:23;11693:32;11690:119;;;11728:79;;:::i;:::-;11690:119;11848:1;11873:53;11918:7;11909:6;11898:9;11894:22;11873:53;:::i;:::-;11863:63;;11819:117;11975:2;12001:53;12046:7;12037:6;12026:9;12022:22;12001:53;:::i;:::-;11991:63;;11946:118;11597:474;;;;;:::o;12077:180::-;12125:77;12122:1;12115:88;12222:4;12219:1;12212:15;12246:4;12243:1;12236:15;12263:102;12305:8;12352:5;12349:1;12345:13;12324:34;;12263:102;;;:::o;12371:848::-;12432:5;12439:4;12463:6;12454:15;;12487:5;12478:14;;12501:712;12522:1;12512:8;12509:15;12501:712;;;12617:4;12612:3;12608:14;12602:4;12599:24;12596:50;;;12626:18;;:::i;:::-;12596:50;12676:1;12666:8;12662:16;12659:451;;;13091:4;13084:5;13080:16;13071:25;;12659:451;13141:4;13135;13131:15;13123:23;;13171:32;13194:8;13171:32;:::i;:::-;13159:44;;12501:712;;;12371:848;;;;;;;:::o;13225:1073::-;13279:5;13470:8;13460:40;;13491:1;13482:10;;13493:5;;13460:40;13519:4;13509:36;;13536:1;13527:10;;13538:5;;13509:36;13605:4;13653:1;13648:27;;;;13689:1;13684:191;;;;13598:277;;13648:27;13666:1;13657:10;;13668:5;;;13684:191;13729:3;13719:8;13716:17;13713:43;;;13736:18;;:::i;:::-;13713:43;13785:8;13782:1;13778:16;13769:25;;13820:3;13813:5;13810:14;13807:40;;;13827:18;;:::i;:::-;13807:40;13860:5;;;13598:277;;13984:2;13974:8;13971:16;13965:3;13959:4;13956:13;13952:36;13934:2;13924:8;13921:16;13916:2;13910:4;13907:12;13903:35;13887:111;13884:246;;;14040:8;14034:4;14030:19;14021:28;;14075:3;14068:5;14065:14;14062:40;;;14082:18;;:::i;:::-;14062:40;14115:5;;13884:246;14155:42;14193:3;14183:8;14177:4;14174:1;14155:42;:::i;:::-;14140:57;;;;14229:4;14224:3;14220:14;14213:5;14210:25;14207:51;;;14238:18;;:::i;:::-;14207:51;14287:4;14280:5;14276:16;14267:25;;13225:1073;;;;;;:::o;14304:281::-;14362:5;14386:23;14404:4;14386:23;:::i;:::-;14378:31;;14430:25;14446:8;14430:25;:::i;:::-;14418:37;;14474:104;14511:66;14501:8;14495:4;14474:104;:::i;:::-;14465:113;;14304:281;;;;:::o;14591:410::-;14631:7;14654:20;14672:1;14654:20;:::i;:::-;14649:25;;14688:20;14706:1;14688:20;:::i;:::-;14683:25;;14743:1;14740;14736:9;14765:30;14783:11;14765:30;:::i;:::-;14754:41;;14944:1;14935:7;14931:15;14928:1;14925:22;14905:1;14898:9;14878:83;14855:139;;14974:18;;:::i;:::-;14855:139;14639:362;14591:410;;;;:::o;15007:172::-;15147:24;15143:1;15135:6;15131:14;15124:48;15007:172;:::o;15185:366::-;15327:3;15348:67;15412:2;15407:3;15348:67;:::i;:::-;15341:74;;15424:93;15513:3;15424:93;:::i;:::-;15542:2;15537:3;15533:12;15526:19;;15185:366;;;:::o;15557:419::-;15723:4;15761:2;15750:9;15746:18;15738:26;;15810:9;15804:4;15800:20;15796:1;15785:9;15781:17;15774:47;15838:131;15964:4;15838:131;:::i;:::-;15830:139;;15557:419;;;:::o;15982:179::-;16122:31;16118:1;16110:6;16106:14;16099:55;15982:179;:::o;16167:366::-;16309:3;16330:67;16394:2;16389:3;16330:67;:::i;:::-;16323:74;;16406:93;16495:3;16406:93;:::i;:::-;16524:2;16519:3;16515:12;16508:19;;16167:366;;;:::o;16539:419::-;16705:4;16743:2;16732:9;16728:18;16720:26;;16792:9;16786:4;16782:20;16778:1;16767:9;16763:17;16756:47;16820:131;16946:4;16820:131;:::i;:::-;16812:139;;16539:419;;;:::o;16964:247::-;17104:34;17100:1;17092:6;17088:14;17081:58;17173:30;17168:2;17160:6;17156:15;17149:55;16964:247;:::o;17217:366::-;17359:3;17380:67;17444:2;17439:3;17380:67;:::i;:::-;17373:74;;17456:93;17545:3;17456:93;:::i;:::-;17574:2;17569:3;17565:12;17558:19;;17217:366;;;:::o;17589:419::-;17755:4;17793:2;17782:9;17778:18;17770:26;;17842:9;17836:4;17832:20;17828:1;17817:9;17813:17;17806:47;17870:131;17996:4;17870:131;:::i;:::-;17862:139;;17589:419;;;:::o;18014:221::-;18154:34;18150:1;18142:6;18138:14;18131:58;18223:4;18218:2;18210:6;18206:15;18199:29;18014:221;:::o;18241:366::-;18383:3;18404:67;18468:2;18463:3;18404:67;:::i;:::-;18397:74;;18480:93;18569:3;18480:93;:::i;:::-;18598:2;18593:3;18589:12;18582:19;;18241:366;;;:::o;18613:419::-;18779:4;18817:2;18806:9;18802:18;18794:26;;18866:9;18860:4;18856:20;18852:1;18841:9;18837:17;18830:47;18894:131;19020:4;18894:131;:::i;:::-;18886:139;;18613:419;;;:::o;19038:194::-;19078:4;19098:20;19116:1;19098:20;:::i;:::-;19093:25;;19132:20;19150:1;19132:20;:::i;:::-;19127:25;;19176:1;19173;19169:9;19161:17;;19200:1;19194:4;19191:11;19188:37;;;19205:18;;:::i;:::-;19188:37;19038:194;;;;:::o;19238:180::-;19286:77;19283:1;19276:88;19383:4;19380:1;19373:15;19407:4;19404:1;19397:15;19424:180;19472:77;19469:1;19462:88;19569:4;19566:1;19559:15;19593:4;19590:1;19583:15;19610:225;19750:34;19746:1;19738:6;19734:14;19727:58;19819:8;19814:2;19806:6;19802:15;19795:33;19610:225;:::o;19841:366::-;19983:3;20004:67;20068:2;20063:3;20004:67;:::i;:::-;19997:74;;20080:93;20169:3;20080:93;:::i;:::-;20198:2;20193:3;20189:12;20182:19;;19841:366;;;:::o;20213:419::-;20379:4;20417:2;20406:9;20402:18;20394:26;;20466:9;20460:4;20456:20;20452:1;20441:9;20437:17;20430:47;20494:131;20620:4;20494:131;:::i;:::-;20486:139;;20213:419;;;:::o;20638:233::-;20677:3;20700:24;20718:5;20700:24;:::i;:::-;20691:33;;20746:66;20739:5;20736:77;20733:103;;20816:18;;:::i;:::-;20733:103;20863:1;20856:5;20852:13;20845:20;;20638:233;;;:::o;20877:191::-;20917:3;20936:20;20954:1;20936:20;:::i;:::-;20931:25;;20970:20;20988:1;20970:20;:::i;:::-;20965:25;;21013:1;21010;21006:9;20999:16;;21034:3;21031:1;21028:10;21025:36;;;21041:18;;:::i;:::-;21025:36;20877:191;;;;:::o;21074:228::-;21214:34;21210:1;21202:6;21198:14;21191:58;21283:11;21278:2;21270:6;21266:15;21259:36;21074:228;:::o;21308:366::-;21450:3;21471:67;21535:2;21530:3;21471:67;:::i;:::-;21464:74;;21547:93;21636:3;21547:93;:::i;:::-;21665:2;21660:3;21656:12;21649:19;;21308:366;;;:::o;21680:419::-;21846:4;21884:2;21873:9;21869:18;21861:26;;21933:9;21927:4;21923:20;21919:1;21908:9;21904:17;21897:47;21961:131;22087:4;21961:131;:::i;:::-;21953:139;;21680:419;;;:::o;22105:220::-;22245:34;22241:1;22233:6;22229:14;22222:58;22314:3;22309:2;22301:6;22297:15;22290:28;22105:220;:::o;22331:366::-;22473:3;22494:67;22558:2;22553:3;22494:67;:::i;:::-;22487:74;;22570:93;22659:3;22570:93;:::i;:::-;22688:2;22683:3;22679:12;22672:19;;22331:366;;;:::o;22703:419::-;22869:4;22907:2;22896:9;22892:18;22884:26;;22956:9;22950:4;22946:20;22942:1;22931:9;22927:17;22920:47;22984:131;23110:4;22984:131;:::i;:::-;22976:139;;22703:419;;;:::o;23128:143::-;23185:5;23216:6;23210:13;23201:22;;23232:33;23259:5;23232:33;:::i;:::-;23128:143;;;;:::o;23277:351::-;23347:6;23396:2;23384:9;23375:7;23371:23;23367:32;23364:119;;;23402:79;;:::i;:::-;23364:119;23522:1;23547:64;23603:7;23594:6;23583:9;23579:22;23547:64;:::i;:::-;23537:74;;23493:128;23277:351;;;;:::o;23634:220::-;23774:34;23770:1;23762:6;23758:14;23751:58;23843:3;23838:2;23830:6;23826:15;23819:28;23634:220;:::o;23860:366::-;24002:3;24023:67;24087:2;24082:3;24023:67;:::i;:::-;24016:74;;24099:93;24188:3;24099:93;:::i;:::-;24217:2;24212:3;24208:12;24201:19;;23860:366;;;:::o;24232:419::-;24398:4;24436:2;24425:9;24421:18;24413:26;;24485:9;24479:4;24475:20;24471:1;24460:9;24456:17;24449:47;24513:131;24639:4;24513:131;:::i;:::-;24505:139;;24232:419;;;:::o;24657:332::-;24778:4;24816:2;24805:9;24801:18;24793:26;;24829:71;24897:1;24886:9;24882:17;24873:6;24829:71;:::i;:::-;24910:72;24978:2;24967:9;24963:18;24954:6;24910:72;:::i;:::-;24657:332;;;;;:::o;24995:137::-;25049:5;25080:6;25074:13;25065:22;;25096:30;25120:5;25096:30;:::i;:::-;24995:137;;;;:::o;25138:345::-;25205:6;25254:2;25242:9;25233:7;25229:23;25225:32;25222:119;;;25260:79;;:::i;:::-;25222:119;25380:1;25405:61;25458:7;25449:6;25438:9;25434:22;25405:61;:::i;:::-;25395:71;;25351:125;25138:345;;;;:::o;25489:169::-;25629:21;25625:1;25617:6;25613:14;25606:45;25489:169;:::o;25664:366::-;25806:3;25827:67;25891:2;25886:3;25827:67;:::i;:::-;25820:74;;25903:93;25992:3;25903:93;:::i;:::-;26021:2;26016:3;26012:12;26005:19;;25664:366;;;:::o;26036:419::-;26202:4;26240:2;26229:9;26225:18;26217:26;;26289:9;26283:4;26279:20;26275:1;26264:9;26260:17;26253:47;26317:131;26443:4;26317:131;:::i;:::-;26309:139;;26036:419;;;:::o;26461:179::-;26601:31;26597:1;26589:6;26585:14;26578:55;26461:179;:::o;26646:366::-;26788:3;26809:67;26873:2;26868:3;26809:67;:::i;:::-;26802:74;;26885:93;26974:3;26885:93;:::i;:::-;27003:2;26998:3;26994:12;26987:19;;26646:366;;;:::o;27018:419::-;27184:4;27222:2;27211:9;27207:18;27199:26;;27271:9;27265:4;27261:20;27257:1;27246:9;27242:17;27235:47;27299:131;27425:4;27299:131;:::i;:::-;27291:139;;27018:419;;;:::o;27443:224::-;27583:34;27579:1;27571:6;27567:14;27560:58;27652:7;27647:2;27639:6;27635:15;27628:32;27443:224;:::o;27673:366::-;27815:3;27836:67;27900:2;27895:3;27836:67;:::i;:::-;27829:74;;27912:93;28001:3;27912:93;:::i;:::-;28030:2;28025:3;28021:12;28014:19;;27673:366;;;:::o;28045:419::-;28211:4;28249:2;28238:9;28234:18;28226:26;;28298:9;28292:4;28288:20;28284:1;28273:9;28269:17;28262:47;28326:131;28452:4;28326:131;:::i;:::-;28318:139;;28045:419;;;:::o;28470:222::-;28610:34;28606:1;28598:6;28594:14;28587:58;28679:5;28674:2;28666:6;28662:15;28655:30;28470:222;:::o;28698:366::-;28840:3;28861:67;28925:2;28920:3;28861:67;:::i;:::-;28854:74;;28937:93;29026:3;28937:93;:::i;:::-;29055:2;29050:3;29046:12;29039:19;;28698:366;;;:::o;29070:419::-;29236:4;29274:2;29263:9;29259:18;29251:26;;29323:9;29317:4;29313:20;29309:1;29298:9;29294:17;29287:47;29351:131;29477:4;29351:131;:::i;:::-;29343:139;;29070:419;;;:::o;29495:180::-;29543:77;29540:1;29533:88;29640:4;29637:1;29630:15;29664:4;29661:1;29654:15;29681:185;29721:1;29738:20;29756:1;29738:20;:::i;:::-;29733:25;;29772:20;29790:1;29772:20;:::i;:::-;29767:25;;29811:1;29801:35;;29816:18;;:::i;:::-;29801:35;29858:1;29855;29851:9;29846:14;;29681:185;;;;:::o;29872:177::-;30012:29;30008:1;30000:6;29996:14;29989:53;29872:177;:::o;30055:366::-;30197:3;30218:67;30282:2;30277:3;30218:67;:::i;:::-;30211:74;;30294:93;30383:3;30294:93;:::i;:::-;30412:2;30407:3;30403:12;30396:19;;30055:366;;;:::o;30427:419::-;30593:4;30631:2;30620:9;30616:18;30608:26;;30680:9;30674:4;30670:20;30666:1;30655:9;30651:17;30644:47;30708:131;30834:4;30708:131;:::i;:::-;30700:139;;30427:419;;;:::o;30852:176::-;30992:28;30988:1;30980:6;30976:14;30969:52;30852:176;:::o;31034:366::-;31176:3;31197:67;31261:2;31256:3;31197:67;:::i;:::-;31190:74;;31273:93;31362:3;31273:93;:::i;:::-;31391:2;31386:3;31382:12;31375:19;;31034:366;;;:::o;31406:419::-;31572:4;31610:2;31599:9;31595:18;31587:26;;31659:9;31653:4;31649:20;31645:1;31634:9;31630:17;31623:47;31687:131;31813:4;31687:131;:::i;:::-;31679:139;;31406:419;;;:::o;31831:180::-;31879:77;31876:1;31869:88;31976:4;31973:1;31966:15;32000:4;31997:1;31990:15;32017:143;32074:5;32105:6;32099:13;32090:22;;32121:33;32148:5;32121:33;:::i;:::-;32017:143;;;;:::o;32166:351::-;32236:6;32285:2;32273:9;32264:7;32260:23;32256:32;32253:119;;;32291:79;;:::i;:::-;32253:119;32411:1;32436:64;32492:7;32483:6;32472:9;32468:22;32436:64;:::i;:::-;32426:74;;32382:128;32166:351;;;;:::o;32523:85::-;32568:7;32597:5;32586:16;;32523:85;;;:::o;32614:158::-;32672:9;32705:61;32723:42;32732:32;32758:5;32732:32;:::i;:::-;32723:42;:::i;:::-;32705:61;:::i;:::-;32692:74;;32614:158;;;:::o;32778:147::-;32873:45;32912:5;32873:45;:::i;:::-;32868:3;32861:58;32778:147;;:::o;32931:114::-;32998:6;33032:5;33026:12;33016:22;;32931:114;;;:::o;33051:184::-;33150:11;33184:6;33179:3;33172:19;33224:4;33219:3;33215:14;33200:29;;33051:184;;;;:::o;33241:132::-;33308:4;33331:3;33323:11;;33361:4;33356:3;33352:14;33344:22;;33241:132;;;:::o;33379:108::-;33456:24;33474:5;33456:24;:::i;:::-;33451:3;33444:37;33379:108;;:::o;33493:179::-;33562:10;33583:46;33625:3;33617:6;33583:46;:::i;:::-;33661:4;33656:3;33652:14;33638:28;;33493:179;;;;:::o;33678:113::-;33748:4;33780;33775:3;33771:14;33763:22;;33678:113;;;:::o;33827:732::-;33946:3;33975:54;34023:5;33975:54;:::i;:::-;34045:86;34124:6;34119:3;34045:86;:::i;:::-;34038:93;;34155:56;34205:5;34155:56;:::i;:::-;34234:7;34265:1;34250:284;34275:6;34272:1;34269:13;34250:284;;;34351:6;34345:13;34378:63;34437:3;34422:13;34378:63;:::i;:::-;34371:70;;34464:60;34517:6;34464:60;:::i;:::-;34454:70;;34310:224;34297:1;34294;34290:9;34285:14;;34250:284;;;34254:14;34550:3;34543:10;;33951:608;;;33827:732;;;;:::o;34565:831::-;34828:4;34866:3;34855:9;34851:19;34843:27;;34880:71;34948:1;34937:9;34933:17;34924:6;34880:71;:::i;:::-;34961:80;35037:2;35026:9;35022:18;35013:6;34961:80;:::i;:::-;35088:9;35082:4;35078:20;35073:2;35062:9;35058:18;35051:48;35116:108;35219:4;35210:6;35116:108;:::i;:::-;35108:116;;35234:72;35302:2;35291:9;35287:18;35278:6;35234:72;:::i;:::-;35316:73;35384:3;35373:9;35369:19;35360:6;35316:73;:::i;:::-;34565:831;;;;;;;;:::o;35402:147::-;35503:11;35540:3;35525:18;;35402:147;;;;:::o;35555:114::-;;:::o;35675:398::-;35834:3;35855:83;35936:1;35931:3;35855:83;:::i;:::-;35848:90;;35947:93;36036:3;35947:93;:::i;:::-;36065:1;36060:3;36056:11;36049:18;;35675:398;;;:::o;36079:379::-;36263:3;36285:147;36428:3;36285:147;:::i;:::-;36278:154;;36449:3;36442:10;;36079:379;;;:::o

Swarm Source

ipfs://dbe912052e7300bb65322ed43561c02925bb7b53cffd2af1e78683578b3b8919

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.