ETH Price: $3,397.30 (+1.96%)

Token

Tales from the list (MONKEYS)
 

Overview

Max Total Supply

500,000,000,000 MONKEYS

Holders

1,209

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Filtered by Token Holder
ludus.eth
Balance
40,416,009 MONKEYS

Value
$0.00
0x43ec5640e18f7384761d8817aa55d38c9a03d855
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:
MonkeysTokenV3

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-09-25
*/

//SPDX-License-Identifier: MIT
pragma solidity 0.8.21;

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 owner, address spender) external view returns (uint256);
    function approve(address spender, uint256 amount) external returns (bool);
    function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);
    event Transfer(address indexed from, address indexed to, uint256 value);
    event Approval(address indexed _owner, address indexed spender, uint256 value);
}

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

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

contract MonkeysTokenV3 is IERC20, Auth {
    string private constant _name         = "Tales from the list";
    string private constant _symbol       = "MONKEYS";
    uint8 private constant _decimals      = 9;
    uint256 private constant _totalSupply = 500_000_000_000 * (10**_decimals);
    mapping (address => uint256) private _balances;
    mapping (address => mapping (address => uint256)) private _allowances;

    uint32 private _tradeCount;

    address payable private constant _walletMarketing = payable(0x2911BadDba4a2753391265B125C65A50e3d61cBE);
    uint256 private constant _taxSwapMin = _totalSupply / 200000;
    uint256 private constant _taxSwapMax = _totalSupply / 1000;

    mapping (address => bool) private _noFees;
    mapping (address => bool) private _preLaunch;

    address private constant _swapRouterAddress = address(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
    IUniswapV2Router02 private _primarySwapRouter = IUniswapV2Router02(_swapRouterAddress);
    address private _primaryLP;
    mapping (address => bool) private _isLP;

    uint256 private _relaunchTimestamp;
    bool private _tradingOpen;    

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

    event TokensAirdropped(uint256 totalWallets, uint256 totalTokens);

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

        _noFees[_owner] = true;
        _noFees[address(this)] = true;
        _noFees[_swapRouterAddress] = true;
        _noFees[_walletMarketing] = true;

        _preLaunch[_owner] = true;
        _preLaunch[address(this)] = true;
        _preLaunch[_swapRouterAddress] = true;
        _preLaunch[_walletMarketing] = true;
    }

    receive() external payable {}

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

    function approve(address spender, uint256 amount) public override returns (bool) {
        _allowances[msg.sender][spender] = amount;
        emit Approval(msg.sender, spender, amount);
        return true;
    }

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

    function transferFrom(address sender, address recipient, uint256 amount) external override returns (bool) {
        require(_checkTradingOpen(sender), "Trading not open");
        if(_allowances[sender][msg.sender] != type(uint256).max){
            _allowances[sender][msg.sender] = _allowances[sender][msg.sender] - amount;
        }
        return _transferFrom(sender, recipient, 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(address lpCA) external payable onlyOwner lockTaxSwap {
        require(_primaryLP == address(0), "LP exists");
        require(!_tradingOpen, "trading is open");
        require(msg.value > 0 || address(this).balance>0, "No ETH in contract or message");
        require(_balances[address(this)]>0, "No tokens in contract");
        if ( lpCA == address(0) ) { 
            _primaryLP = IUniswapV2Factory(_primarySwapRouter.factory()).createPair(address(this), _primarySwapRouter.WETH()); 
        } else { _primaryLP = lpCA; }
        _addLiquidity(_balances[address(this)], address(this).balance);
        _isLP[_primaryLP] = true;
        _tradeCount = 0;
        _relaunchTimestamp = block.timestamp;
        _tradingOpen = true;
    }

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

    function _transferFrom(address sender, address recipient, uint256 amount) internal returns (bool) {
        require(sender != address(0), "No transfers from Zero wallet");
        require(sender != address(0xAb5801a7D398351b8bE11C439e05C5B3259aeC9B), "Vitalik NEVER SELLING");  // Tokens in "Vb" wallet are burned

        if (!_tradingOpen) { require(_preLaunch[sender], "Trading not open"); }
        if ( !_inTaxSwap && _isLP[recipient] && !_noFees[sender] ) { _swapTaxAndLiquify(); }

        uint256 _taxAmount = _calculateTax(sender, recipient, amount);
        uint256 _transferAmount = amount - _taxAmount;
        _balances[sender] -= amount;
        if ( _taxAmount > 0 ) { 
            _balances[address(this)] += _taxAmount; 
            incrementTradeCount();
        }
        _balances[recipient] += _transferAmount;
        emit Transfer(sender, recipient, amount);
        return true;
    }

    function _checkTradingOpen(address sender) private view returns (bool){
        bool checkResult = false;
        if ( _tradingOpen ) { checkResult = true; } 
        else if (_preLaunch[sender]) { checkResult = true; } 

        return checkResult;
    }

    function incrementTradeCount() private {
        if ( _tradeCount <= 60_001 ) {
            // tax is finalized after 60,000 trades
            _tradeCount += 1;
        } 
    }

    function tax() external view returns (uint32 taxNumerator, uint32 taxDenominator) {
        (uint32 numerator, uint32 denominator) = _getTaxPercentages();
        return (numerator, denominator);
    }

    function _getTaxPercentages() private view returns (uint32 numerator, uint32 denominator) {
        uint32 taxNumerator;
        uint32 taxDenominator = 100_000;

        if ( block.timestamp > 1735928105 ) {
            // 16 years after BTC Genesis Block tax becomes 0/0 (at 2025-01-03 18:15:05 UTC)
            taxNumerator = 0;
        } else if ( block.timestamp < _relaunchTimestamp + 1800 ) {
            // first 30 minutes after relaunch tax is 5/5
            taxNumerator = 5000;
        } else {
            if ( _tradeCount < 60_000 ) {
                // tax is 1.0% until 60,000 trades
                taxNumerator = 1000;
            } else {
                // tax is 0.225% above 60,000 trades
                taxNumerator = 225;
            }
        }
        return (taxNumerator, taxDenominator);
    }

    function _calculateTax(address sender, address recipient, uint256 amount) internal view returns (uint256) {
        uint256 taxAmount;
        
        if ( _tradingOpen && !_noFees[sender] && !_noFees[recipient] ) { 
            if ( _isLP[sender] || _isLP[recipient] ) {
                (uint32 numerator, uint32 denominator) = _getTaxPercentages();
                taxAmount = amount * numerator / denominator;
            }
        }

        return taxAmount;
    }

    function marketingMultisig() external pure returns (address) {
        return _walletMarketing;
    }

    function _swapTaxAndLiquify() private lockTaxSwap {
        uint256 _taxTokensAvailable = _balances[address(this)];

        if ( _taxTokensAvailable >= _taxSwapMin && _tradingOpen ) {
            if ( _taxTokensAvailable >= _taxSwapMax ) { _taxTokensAvailable = _taxSwapMax; }

            uint256 _tokensForLP = 0;
            if ( _tradeCount < 60_000 ) {
                // before 60,000 trades are reached half of the tax goes to LP
                _tokensForLP = _taxTokensAvailable / 4;
            }
            
            uint256 _tokensToSwap = _taxTokensAvailable - _tokensForLP;
            if( _tokensToSwap > 10**_decimals ) {
                uint256 _ethPreSwap = address(this).balance;
                _swapTaxTokensForEth(_tokensToSwap);
                uint256 _ethSwapped = address(this).balance - _ethPreSwap;
                if ( _tokensForLP > 0 ) {
                    uint256 _ethWeiAmount = _ethSwapped / 2 ;
                    _approveRouter(_tokensForLP);
                    _addLiquidity(_tokensForLP, _ethWeiAmount);
                }
            }
            uint256 _contractETHBalance = address(this).balance;
            if(_contractETHBalance > 0) { 
                (bool sent, bytes memory senddata) = _walletMarketing.call{value: _contractETHBalance}("");
                sent = true;
                senddata = bytes('');
            }
        }
    }

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

    function setExemption(address[] calldata wallets, bool isExempt) external onlyOwner {
        for(uint i=0; i < wallets.length; i++){
            _noFees[wallets[i]] = isExempt;
        }
    }

    function airdrop(address[] calldata addresses, uint256[] calldata tokenAmounts) external onlyOwner {
        require(addresses.length <= 250,"More than 250 wallets");
        require(addresses.length == tokenAmounts.length,"List length mismatch");

        uint256 airdropTotal = 0;
        for(uint i=0; i < addresses.length; i++){
            airdropTotal += (tokenAmounts[i] * 10**_decimals);
        }
        require(_balances[msg.sender] >= airdropTotal, "Token balance too low");

        for(uint i=0; i < addresses.length; i++){
            _balances[msg.sender] -= (tokenAmounts[i] * 10**_decimals);
            _balances[addresses[i]] += (tokenAmounts[i] * 10**_decimals);
            emit Transfer(msg.sender, addresses[i], (tokenAmounts[i] * 10**_decimals) );       
        }

        emit TokensAirdropped(addresses.length, airdropTotal);
    }
}

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":false,"internalType":"uint256","name":"totalWallets","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"totalTokens","type":"uint256"}],"name":"TokensAirdropped","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"lpCA","type":"address"}],"name":"addLiquidity","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address[]","name":"addresses","type":"address[]"},{"internalType":"uint256[]","name":"tokenAmounts","type":"uint256[]"}],"name":"airdrop","outputs":[],"stateMutability":"nonpayable","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":"marketingMultisig","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"pure","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":"address[]","name":"wallets","type":"address[]"},{"internalType":"bool","name":"isExempt","type":"bool"}],"name":"setExemption","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"tax","outputs":[{"internalType":"uint32","name":"taxNumerator","type":"uint32"},{"internalType":"uint32","name":"taxDenominator","type":"uint32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

6080604052737a250d5630b4cf539739df2c5dacb4c659f2488d60065f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505f600a60016101000a81548160ff0219169083151502179055503480156200007e575f80fd5b5033805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550506009600a620000d09190620006f6565b64746a528800620000e2919062000746565b60015f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60015f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546040516200021e9190620007a1565b60405180910390a3600160045f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160045f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160045f737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160045f732911baddba4a2753391265b125c65a50e3d61cbe73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160055f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160055f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160055f737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160055f732911baddba4a2753391265b125c65a50e3d61cbe73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550620007bc565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b6001851115620005ee57808604811115620005c657620005c562000564565b5b6001851615620005d65780820291505b8081029050620005e68562000591565b9450620005a6565b94509492505050565b5f82620006085760019050620006da565b8162000617575f9050620006da565b81600181146200063057600281146200063b5762000671565b6001915050620006da565b60ff84111562000650576200064f62000564565b5b8360020a9150848211156200066a576200066962000564565b5b50620006da565b5060208310610133831016604e8410600b8410161715620006ab5782820a905083811115620006a557620006a462000564565b5b620006da565b620006ba84848460016200059d565b92509050818404811115620006d457620006d362000564565b5b81810290505b9392505050565b5f819050919050565b5f60ff82169050919050565b5f6200070282620006e1565b91506200070f83620006ea565b92506200073e7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484620005f7565b905092915050565b5f6200075282620006e1565b91506200075f83620006e1565b92508282026200076f81620006e1565b9150828204841483151762000789576200078862000564565b5b5092915050565b6200079b81620006e1565b82525050565b5f602082019050620007b65f83018462000790565b92915050565b61333d80620007ca5f395ff3fe6080604052600436106100f6575f3560e01c8063715018a61161008957806399c8d5561161005857806399c8d55614610317578063a9059cbb14610342578063dd62ed3e1461037e578063e3412e3d146103ba576100fd565b8063715018a6146102855780638c6ce3811461029b5780638da5cb5b146102c357806395d89b41146102ed576100fd565b806323b872dd116100c557806323b872dd146101bb578063313ce567146101f7578063672434821461022157806370a0823114610249576100fd565b806306fdde0314610101578063095ea7b31461012b5780631046128a1461016757806318160ddd14610191576100fd565b366100fd57005b5f80fd5b34801561010c575f80fd5b506101156103d6565b60405161012291906123c8565b60405180910390f35b348015610136575f80fd5b50610151600480360381019061014c919061247d565b610413565b60405161015e91906124d5565b60405180910390f35b348015610172575f80fd5b5061017b610500565b60405161018891906124fd565b60405180910390f35b34801561019c575f80fd5b506101a561051b565b6040516101b29190612525565b60405180910390f35b3480156101c6575f80fd5b506101e160048036038101906101dc919061253e565b61053f565b6040516101ee91906124d5565b60405180910390f35b348015610202575f80fd5b5061020b61073c565b60405161021891906125a9565b60405180910390f35b34801561022c575f80fd5b5061024760048036038101906102429190612678565b610744565b005b348015610254575f80fd5b5061026f600480360381019061026a91906126f6565b610b91565b60405161027c9190612525565b60405180910390f35b348015610290575f80fd5b50610299610bd7565b005b3480156102a6575f80fd5b506102c160048036038101906102bc919061274b565b610cdc565b005b3480156102ce575f80fd5b506102d7610e0a565b6040516102e491906124fd565b60405180910390f35b3480156102f8575f80fd5b50610301610e31565b60405161030e91906123c8565b60405180910390f35b348015610322575f80fd5b5061032b610e6e565b6040516103399291906127c6565b60405180910390f35b34801561034d575f80fd5b506103686004803603810190610363919061247d565b610e8a565b60405161037591906124d5565b60405180910390f35b348015610389575f80fd5b506103a4600480360381019061039f91906127ed565b610ee6565b6040516103b19190612525565b60405180910390f35b6103d460048036038101906103cf91906126f6565b610f68565b005b60606040518060400160405280601381526020017f54616c65732066726f6d20746865206c69737400000000000000000000000000815250905090565b5f8160025f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040516104ee9190612525565b60405180910390a36001905092915050565b5f732911baddba4a2753391265b125c65a50e3d61cbe905090565b5f6009600a61052a9190612987565b64746a52880061053a91906129d1565b905090565b5f61054984611521565b610588576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161057f90612a5c565b60405180910390fd5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60025f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205414610728578160025f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546106ab9190612a7a565b60025f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505b6107338484846115a1565b90509392505050565b5f6009905090565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146107d1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107c890612af7565b60405180910390fd5b60fa848490501115610818576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161080f90612b5f565b60405180910390fd5b818190508484905014610860576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161085790612bc7565b60405180910390fd5b5f805b858590508110156108c0576009600a61087c9190612987565b84848381811061088f5761088e612be5565b5b905060200201356108a091906129d1565b826108ab9190612c12565b915080806108b890612c45565b915050610863565b508060015f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20541015610941576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161093890612cd6565b60405180910390fd5b5f5b85859050811015610b4d576009600a61095c9190612987565b84848381811061096f5761096e612be5565b5b9050602002013561098091906129d1565b60015f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546109cb9190612a7a565b925050819055506009600a6109e09190612987565b8484838181106109f3576109f2612be5565b5b90506020020135610a0491906129d1565b60015f888885818110610a1a57610a19612be5565b5b9050602002016020810190610a2f91906126f6565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f828254610a769190612c12565b92505081905550858582818110610a9057610a8f612be5565b5b9050602002016020810190610aa591906126f6565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6009600a610b019190612987565b878786818110610b1457610b13612be5565b5b90506020020135610b2591906129d1565b604051610b329190612525565b60405180910390a38080610b4590612c45565b915050610943565b507f71cc7095cc35ed4701c217a8efb440732eb0737da67f6548c008ac26fba954648585905082604051610b82929190612cf4565b60405180910390a15050505050565b5f60015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610c64576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c5b90612af7565b60405180910390fd5b5f805f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc6861635f604051610cd291906124fd565b60405180910390a1565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610d69576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d6090612af7565b60405180910390fd5b5f5b83839050811015610e04578160045f868685818110610d8d57610d8c612be5565b5b9050602002016020810190610da291906126f6565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508080610dfc90612c45565b915050610d6b565b50505050565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606040518060400160405280600781526020017f4d4f4e4b45595300000000000000000000000000000000000000000000000000815250905090565b5f805f80610e7a61198c565b9150915081819350935050509091565b5f610e9433611521565b610ed3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610eca90612a5c565b60405180910390fd5b610ede3384846115a1565b905092915050565b5f60025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610ff5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fec90612af7565b60405180910390fd5b6001600a60016101000a81548160ff0219169083151502179055505f73ffffffffffffffffffffffffffffffffffffffff1660075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461109f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161109690612d65565b60405180910390fd5b600a5f9054906101000a900460ff16156110ee576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110e590612dcd565b60405180910390fd5b5f3411806110fb57505f47115b61113a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161113190612e35565b60405180910390fd5b5f60015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054116111b9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111b090612e9d565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036113c55760065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015611256573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061127a9190612ecf565b73ffffffffffffffffffffffffffffffffffffffff1663c9c653963060065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611300573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906113249190612ecf565b6040518363ffffffff1660e01b8152600401611341929190612efa565b6020604051808303815f875af115801561135d573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906113819190612ecf565b60075f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550611406565b8060075f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b61144d60015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205447611a09565b600160085f60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505f60035f6101000a81548163ffffffff021916908363ffffffff160217905550426009819055506001600a5f6101000a81548160ff0219169083151502179055505f600a60016101000a81548160ff02191690831515021790555050565b5f805f9050600a5f9054906101000a900460ff16156115435760019050611598565b60055f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff161561159757600190505b5b80915050919050565b5f8073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603611610576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161160790612f6b565b60405180910390fd5b73ab5801a7d398351b8be11c439e05c5b3259aec9b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603611692576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161168990612fd3565b60405180910390fd5b600a5f9054906101000a900460ff1661172f5760055f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1661172e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161172590612a5c565b60405180910390fd5b5b600a60019054906101000a900460ff16158015611792575060085f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b80156117e5575060045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b156117f3576117f2611ade565b5b5f6117ff858585611d49565b90505f818461180e9190612a7a565b90508360015f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825461185c9190612a7a565b925050819055505f8211156118c7578160015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546118b79190612c12565b925050819055506118c6611ee7565b5b8060015f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546119139190612c12565b925050819055508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef866040516119779190612525565b60405180910390a36001925050509392505050565b5f805f80620186a0905063677829294211156119aa575f91506119fd565b6107086009546119ba9190612c12565b4210156119cb5761138891506119fc565b61ea6060035f9054906101000a900463ffffffff1663ffffffff1610156119f6576103e891506119fb565b60e191505b5b5b81819350935050509091565b611a1282611f49565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d7198230855f805f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b8152600401611a9696959493929190613033565b60606040518083038185885af1158015611ab2573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190611ad791906130a6565b5050505050565b6001600a60016101000a81548160ff0219169083151502179055505f60015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905062030d406009600a611b4c9190612987565b64746a528800611b5c91906129d1565b611b669190613123565b8110158015611b805750600a5f9054906101000a900460ff165b15611d2c576103e86009600a611b969190612987565b64746a528800611ba691906129d1565b611bb09190613123565b8110611be4576103e86009600a611bc79190612987565b64746a528800611bd791906129d1565b611be19190613123565b90505b5f61ea6060035f9054906101000a900463ffffffff1663ffffffff161015611c1657600482611c139190613123565b90505b5f8183611c239190612a7a565b90506009600a611c339190612987565b811115611c86575f479050611c478261212b565b5f8147611c549190612a7a565b90505f841115611c83575f600282611c6c9190613123565b9050611c7785611f49565b611c818582611a09565b505b50505b5f4790505f811115611d28575f80732911baddba4a2753391265b125c65a50e3d61cbe73ffffffffffffffffffffffffffffffffffffffff1683604051611ccc90613180565b5f6040518083038185875af1925050503d805f8114611d06576040519150601f19603f3d011682016040523d82523d5f602084013e611d0b565b606091505b50915091506001915060405180602001604052805f815250905050505b5050505b505f600a60016101000a81548160ff021916908315150217905550565b5f80600a5f9054906101000a900460ff168015611dad575060045f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b8015611e00575060045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15611edc5760085f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680611ea0575060085f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b15611edb575f80611eaf61198c565b915091508063ffffffff168263ffffffff1686611ecc91906129d1565b611ed69190613123565b925050505b5b809150509392505050565b61ea6160035f9054906101000a900463ffffffff1663ffffffff1611611f4757600160035f8282829054906101000a900463ffffffff16611f289190613194565b92506101000a81548163ffffffff021916908363ffffffff1602179055505b565b8060025f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20541015612128577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60025f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9257fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60405161211f9190612525565b60405180910390a35b50565b61213481611f49565b5f600267ffffffffffffffff8111156121505761214f6131cb565b5b60405190808252806020026020018201604052801561217e5781602001602082028036833780820191505090505b50905030815f8151811061219557612194612be5565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612239573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061225d9190612ecf565b8160018151811061227157612270612be5565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b815260040161230d9594939291906132af565b5f604051808303815f87803b158015612324575f80fd5b505af1158015612336573d5f803e3d5ffd5b505050505050565b5f81519050919050565b5f82825260208201905092915050565b5f5b8381101561237557808201518184015260208101905061235a565b5f8484015250505050565b5f601f19601f8301169050919050565b5f61239a8261233e565b6123a48185612348565b93506123b4818560208601612358565b6123bd81612380565b840191505092915050565b5f6020820190508181035f8301526123e08184612390565b905092915050565b5f80fd5b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f612419826123f0565b9050919050565b6124298161240f565b8114612433575f80fd5b50565b5f8135905061244481612420565b92915050565b5f819050919050565b61245c8161244a565b8114612466575f80fd5b50565b5f8135905061247781612453565b92915050565b5f8060408385031215612493576124926123e8565b5b5f6124a085828601612436565b92505060206124b185828601612469565b9150509250929050565b5f8115159050919050565b6124cf816124bb565b82525050565b5f6020820190506124e85f8301846124c6565b92915050565b6124f78161240f565b82525050565b5f6020820190506125105f8301846124ee565b92915050565b61251f8161244a565b82525050565b5f6020820190506125385f830184612516565b92915050565b5f805f60608486031215612555576125546123e8565b5b5f61256286828701612436565b935050602061257386828701612436565b925050604061258486828701612469565b9150509250925092565b5f60ff82169050919050565b6125a38161258e565b82525050565b5f6020820190506125bc5f83018461259a565b92915050565b5f80fd5b5f80fd5b5f80fd5b5f8083601f8401126125e3576125e26125c2565b5b8235905067ffffffffffffffff811115612600576125ff6125c6565b5b60208301915083602082028301111561261c5761261b6125ca565b5b9250929050565b5f8083601f840112612638576126376125c2565b5b8235905067ffffffffffffffff811115612655576126546125c6565b5b602083019150836020820283011115612671576126706125ca565b5b9250929050565b5f805f80604085870312156126905761268f6123e8565b5b5f85013567ffffffffffffffff8111156126ad576126ac6123ec565b5b6126b9878288016125ce565b9450945050602085013567ffffffffffffffff8111156126dc576126db6123ec565b5b6126e887828801612623565b925092505092959194509250565b5f6020828403121561270b5761270a6123e8565b5b5f61271884828501612436565b91505092915050565b61272a816124bb565b8114612734575f80fd5b50565b5f8135905061274581612721565b92915050565b5f805f60408486031215612762576127616123e8565b5b5f84013567ffffffffffffffff81111561277f5761277e6123ec565b5b61278b868287016125ce565b9350935050602061279e86828701612737565b9150509250925092565b5f63ffffffff82169050919050565b6127c0816127a8565b82525050565b5f6040820190506127d95f8301856127b7565b6127e660208301846127b7565b9392505050565b5f8060408385031215612803576128026123e8565b5b5f61281085828601612436565b925050602061282185828601612436565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b60018511156128ad578086048111156128895761288861282b565b5b60018516156128985780820291505b80810290506128a685612858565b945061286d565b94509492505050565b5f826128c55760019050612980565b816128d2575f9050612980565b81600181146128e857600281146128f257612921565b6001915050612980565b60ff8411156129045761290361282b565b5b8360020a91508482111561291b5761291a61282b565b5b50612980565b5060208310610133831016604e8410600b84101617156129565782820a9050838111156129515761295061282b565b5b612980565b6129638484846001612864565b9250905081840481111561297a5761297961282b565b5b81810290505b9392505050565b5f6129918261244a565b915061299c8361258e565b92506129c97fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84846128b6565b905092915050565b5f6129db8261244a565b91506129e68361244a565b92508282026129f48161244a565b91508282048414831517612a0b57612a0a61282b565b5b5092915050565b7f54726164696e67206e6f74206f70656e000000000000000000000000000000005f82015250565b5f612a46601083612348565b9150612a5182612a12565b602082019050919050565b5f6020820190508181035f830152612a7381612a3a565b9050919050565b5f612a848261244a565b9150612a8f8361244a565b9250828203905081811115612aa757612aa661282b565b5b92915050565b7f4f6e6c79206f776e65722063616e2063616c6c207468697300000000000000005f82015250565b5f612ae1601883612348565b9150612aec82612aad565b602082019050919050565b5f6020820190508181035f830152612b0e81612ad5565b9050919050565b7f4d6f7265207468616e203235302077616c6c65747300000000000000000000005f82015250565b5f612b49601583612348565b9150612b5482612b15565b602082019050919050565b5f6020820190508181035f830152612b7681612b3d565b9050919050565b7f4c697374206c656e677468206d69736d617463680000000000000000000000005f82015250565b5f612bb1601483612348565b9150612bbc82612b7d565b602082019050919050565b5f6020820190508181035f830152612bde81612ba5565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f612c1c8261244a565b9150612c278361244a565b9250828201905080821115612c3f57612c3e61282b565b5b92915050565b5f612c4f8261244a565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203612c8157612c8061282b565b5b600182019050919050565b7f546f6b656e2062616c616e636520746f6f206c6f7700000000000000000000005f82015250565b5f612cc0601583612348565b9150612ccb82612c8c565b602082019050919050565b5f6020820190508181035f830152612ced81612cb4565b9050919050565b5f604082019050612d075f830185612516565b612d146020830184612516565b9392505050565b7f4c502065786973747300000000000000000000000000000000000000000000005f82015250565b5f612d4f600983612348565b9150612d5a82612d1b565b602082019050919050565b5f6020820190508181035f830152612d7c81612d43565b9050919050565b7f74726164696e67206973206f70656e00000000000000000000000000000000005f82015250565b5f612db7600f83612348565b9150612dc282612d83565b602082019050919050565b5f6020820190508181035f830152612de481612dab565b9050919050565b7f4e6f2045544820696e20636f6e7472616374206f72206d6573736167650000005f82015250565b5f612e1f601d83612348565b9150612e2a82612deb565b602082019050919050565b5f6020820190508181035f830152612e4c81612e13565b9050919050565b7f4e6f20746f6b656e7320696e20636f6e747261637400000000000000000000005f82015250565b5f612e87601583612348565b9150612e9282612e53565b602082019050919050565b5f6020820190508181035f830152612eb481612e7b565b9050919050565b5f81519050612ec981612420565b92915050565b5f60208284031215612ee457612ee36123e8565b5b5f612ef184828501612ebb565b91505092915050565b5f604082019050612f0d5f8301856124ee565b612f1a60208301846124ee565b9392505050565b7f4e6f207472616e73666572732066726f6d205a65726f2077616c6c65740000005f82015250565b5f612f55601d83612348565b9150612f6082612f21565b602082019050919050565b5f6020820190508181035f830152612f8281612f49565b9050919050565b7f566974616c696b204e455645522053454c4c494e4700000000000000000000005f82015250565b5f612fbd601583612348565b9150612fc882612f89565b602082019050919050565b5f6020820190508181035f830152612fea81612fb1565b9050919050565b5f819050919050565b5f819050919050565b5f61301d61301861301384612ff1565b612ffa565b61244a565b9050919050565b61302d81613003565b82525050565b5f60c0820190506130465f8301896124ee565b6130536020830188612516565b6130606040830187613024565b61306d6060830186613024565b61307a60808301856124ee565b61308760a0830184612516565b979650505050505050565b5f815190506130a081612453565b92915050565b5f805f606084860312156130bd576130bc6123e8565b5b5f6130ca86828701613092565b93505060206130db86828701613092565b92505060406130ec86828701613092565b9150509250925092565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f61312d8261244a565b91506131388361244a565b925082613148576131476130f6565b5b828204905092915050565b5f81905092915050565b50565b5f61316b5f83613153565b91506131768261315d565b5f82019050919050565b5f61318a82613160565b9150819050919050565b5f61319e826127a8565b91506131a9836127a8565b9250828201905063ffffffff8111156131c5576131c461282b565b5b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b61322a8161240f565b82525050565b5f61323b8383613221565b60208301905092915050565b5f602082019050919050565b5f61325d826131f8565b6132678185613202565b935061327283613212565b805f5b838110156132a25781516132898882613230565b975061329483613247565b925050600181019050613275565b5085935050505092915050565b5f60a0820190506132c25f830188612516565b6132cf6020830187613024565b81810360408301526132e18186613253565b90506132f060608301856124ee565b6132fd6080830184612516565b969550505050505056fea2646970667358221220717c0e7e84a36e9b7a11cef2a2e4599ce9dbf45f40e07eabf5d21660362f898864736f6c63430008150033

Deployed Bytecode

0x6080604052600436106100f6575f3560e01c8063715018a61161008957806399c8d5561161005857806399c8d55614610317578063a9059cbb14610342578063dd62ed3e1461037e578063e3412e3d146103ba576100fd565b8063715018a6146102855780638c6ce3811461029b5780638da5cb5b146102c357806395d89b41146102ed576100fd565b806323b872dd116100c557806323b872dd146101bb578063313ce567146101f7578063672434821461022157806370a0823114610249576100fd565b806306fdde0314610101578063095ea7b31461012b5780631046128a1461016757806318160ddd14610191576100fd565b366100fd57005b5f80fd5b34801561010c575f80fd5b506101156103d6565b60405161012291906123c8565b60405180910390f35b348015610136575f80fd5b50610151600480360381019061014c919061247d565b610413565b60405161015e91906124d5565b60405180910390f35b348015610172575f80fd5b5061017b610500565b60405161018891906124fd565b60405180910390f35b34801561019c575f80fd5b506101a561051b565b6040516101b29190612525565b60405180910390f35b3480156101c6575f80fd5b506101e160048036038101906101dc919061253e565b61053f565b6040516101ee91906124d5565b60405180910390f35b348015610202575f80fd5b5061020b61073c565b60405161021891906125a9565b60405180910390f35b34801561022c575f80fd5b5061024760048036038101906102429190612678565b610744565b005b348015610254575f80fd5b5061026f600480360381019061026a91906126f6565b610b91565b60405161027c9190612525565b60405180910390f35b348015610290575f80fd5b50610299610bd7565b005b3480156102a6575f80fd5b506102c160048036038101906102bc919061274b565b610cdc565b005b3480156102ce575f80fd5b506102d7610e0a565b6040516102e491906124fd565b60405180910390f35b3480156102f8575f80fd5b50610301610e31565b60405161030e91906123c8565b60405180910390f35b348015610322575f80fd5b5061032b610e6e565b6040516103399291906127c6565b60405180910390f35b34801561034d575f80fd5b506103686004803603810190610363919061247d565b610e8a565b60405161037591906124d5565b60405180910390f35b348015610389575f80fd5b506103a4600480360381019061039f91906127ed565b610ee6565b6040516103b19190612525565b60405180910390f35b6103d460048036038101906103cf91906126f6565b610f68565b005b60606040518060400160405280601381526020017f54616c65732066726f6d20746865206c69737400000000000000000000000000815250905090565b5f8160025f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040516104ee9190612525565b60405180910390a36001905092915050565b5f732911baddba4a2753391265b125c65a50e3d61cbe905090565b5f6009600a61052a9190612987565b64746a52880061053a91906129d1565b905090565b5f61054984611521565b610588576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161057f90612a5c565b60405180910390fd5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60025f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205414610728578160025f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546106ab9190612a7a565b60025f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505b6107338484846115a1565b90509392505050565b5f6009905090565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146107d1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107c890612af7565b60405180910390fd5b60fa848490501115610818576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161080f90612b5f565b60405180910390fd5b818190508484905014610860576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161085790612bc7565b60405180910390fd5b5f805b858590508110156108c0576009600a61087c9190612987565b84848381811061088f5761088e612be5565b5b905060200201356108a091906129d1565b826108ab9190612c12565b915080806108b890612c45565b915050610863565b508060015f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20541015610941576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161093890612cd6565b60405180910390fd5b5f5b85859050811015610b4d576009600a61095c9190612987565b84848381811061096f5761096e612be5565b5b9050602002013561098091906129d1565b60015f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546109cb9190612a7a565b925050819055506009600a6109e09190612987565b8484838181106109f3576109f2612be5565b5b90506020020135610a0491906129d1565b60015f888885818110610a1a57610a19612be5565b5b9050602002016020810190610a2f91906126f6565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f828254610a769190612c12565b92505081905550858582818110610a9057610a8f612be5565b5b9050602002016020810190610aa591906126f6565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6009600a610b019190612987565b878786818110610b1457610b13612be5565b5b90506020020135610b2591906129d1565b604051610b329190612525565b60405180910390a38080610b4590612c45565b915050610943565b507f71cc7095cc35ed4701c217a8efb440732eb0737da67f6548c008ac26fba954648585905082604051610b82929190612cf4565b60405180910390a15050505050565b5f60015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610c64576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c5b90612af7565b60405180910390fd5b5f805f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc6861635f604051610cd291906124fd565b60405180910390a1565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610d69576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d6090612af7565b60405180910390fd5b5f5b83839050811015610e04578160045f868685818110610d8d57610d8c612be5565b5b9050602002016020810190610da291906126f6565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508080610dfc90612c45565b915050610d6b565b50505050565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606040518060400160405280600781526020017f4d4f4e4b45595300000000000000000000000000000000000000000000000000815250905090565b5f805f80610e7a61198c565b9150915081819350935050509091565b5f610e9433611521565b610ed3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610eca90612a5c565b60405180910390fd5b610ede3384846115a1565b905092915050565b5f60025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610ff5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fec90612af7565b60405180910390fd5b6001600a60016101000a81548160ff0219169083151502179055505f73ffffffffffffffffffffffffffffffffffffffff1660075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461109f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161109690612d65565b60405180910390fd5b600a5f9054906101000a900460ff16156110ee576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110e590612dcd565b60405180910390fd5b5f3411806110fb57505f47115b61113a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161113190612e35565b60405180910390fd5b5f60015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054116111b9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111b090612e9d565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036113c55760065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015611256573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061127a9190612ecf565b73ffffffffffffffffffffffffffffffffffffffff1663c9c653963060065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611300573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906113249190612ecf565b6040518363ffffffff1660e01b8152600401611341929190612efa565b6020604051808303815f875af115801561135d573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906113819190612ecf565b60075f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550611406565b8060075f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b61144d60015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205447611a09565b600160085f60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505f60035f6101000a81548163ffffffff021916908363ffffffff160217905550426009819055506001600a5f6101000a81548160ff0219169083151502179055505f600a60016101000a81548160ff02191690831515021790555050565b5f805f9050600a5f9054906101000a900460ff16156115435760019050611598565b60055f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff161561159757600190505b5b80915050919050565b5f8073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603611610576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161160790612f6b565b60405180910390fd5b73ab5801a7d398351b8be11c439e05c5b3259aec9b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603611692576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161168990612fd3565b60405180910390fd5b600a5f9054906101000a900460ff1661172f5760055f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1661172e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161172590612a5c565b60405180910390fd5b5b600a60019054906101000a900460ff16158015611792575060085f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b80156117e5575060045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b156117f3576117f2611ade565b5b5f6117ff858585611d49565b90505f818461180e9190612a7a565b90508360015f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825461185c9190612a7a565b925050819055505f8211156118c7578160015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546118b79190612c12565b925050819055506118c6611ee7565b5b8060015f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546119139190612c12565b925050819055508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef866040516119779190612525565b60405180910390a36001925050509392505050565b5f805f80620186a0905063677829294211156119aa575f91506119fd565b6107086009546119ba9190612c12565b4210156119cb5761138891506119fc565b61ea6060035f9054906101000a900463ffffffff1663ffffffff1610156119f6576103e891506119fb565b60e191505b5b5b81819350935050509091565b611a1282611f49565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d7198230855f805f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b8152600401611a9696959493929190613033565b60606040518083038185885af1158015611ab2573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190611ad791906130a6565b5050505050565b6001600a60016101000a81548160ff0219169083151502179055505f60015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905062030d406009600a611b4c9190612987565b64746a528800611b5c91906129d1565b611b669190613123565b8110158015611b805750600a5f9054906101000a900460ff165b15611d2c576103e86009600a611b969190612987565b64746a528800611ba691906129d1565b611bb09190613123565b8110611be4576103e86009600a611bc79190612987565b64746a528800611bd791906129d1565b611be19190613123565b90505b5f61ea6060035f9054906101000a900463ffffffff1663ffffffff161015611c1657600482611c139190613123565b90505b5f8183611c239190612a7a565b90506009600a611c339190612987565b811115611c86575f479050611c478261212b565b5f8147611c549190612a7a565b90505f841115611c83575f600282611c6c9190613123565b9050611c7785611f49565b611c818582611a09565b505b50505b5f4790505f811115611d28575f80732911baddba4a2753391265b125c65a50e3d61cbe73ffffffffffffffffffffffffffffffffffffffff1683604051611ccc90613180565b5f6040518083038185875af1925050503d805f8114611d06576040519150601f19603f3d011682016040523d82523d5f602084013e611d0b565b606091505b50915091506001915060405180602001604052805f815250905050505b5050505b505f600a60016101000a81548160ff021916908315150217905550565b5f80600a5f9054906101000a900460ff168015611dad575060045f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b8015611e00575060045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15611edc5760085f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680611ea0575060085f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b15611edb575f80611eaf61198c565b915091508063ffffffff168263ffffffff1686611ecc91906129d1565b611ed69190613123565b925050505b5b809150509392505050565b61ea6160035f9054906101000a900463ffffffff1663ffffffff1611611f4757600160035f8282829054906101000a900463ffffffff16611f289190613194565b92506101000a81548163ffffffff021916908363ffffffff1602179055505b565b8060025f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20541015612128577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60025f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9257fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60405161211f9190612525565b60405180910390a35b50565b61213481611f49565b5f600267ffffffffffffffff8111156121505761214f6131cb565b5b60405190808252806020026020018201604052801561217e5781602001602082028036833780820191505090505b50905030815f8151811061219557612194612be5565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612239573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061225d9190612ecf565b8160018151811061227157612270612be5565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b815260040161230d9594939291906132af565b5f604051808303815f87803b158015612324575f80fd5b505af1158015612336573d5f803e3d5ffd5b505050505050565b5f81519050919050565b5f82825260208201905092915050565b5f5b8381101561237557808201518184015260208101905061235a565b5f8484015250505050565b5f601f19601f8301169050919050565b5f61239a8261233e565b6123a48185612348565b93506123b4818560208601612358565b6123bd81612380565b840191505092915050565b5f6020820190508181035f8301526123e08184612390565b905092915050565b5f80fd5b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f612419826123f0565b9050919050565b6124298161240f565b8114612433575f80fd5b50565b5f8135905061244481612420565b92915050565b5f819050919050565b61245c8161244a565b8114612466575f80fd5b50565b5f8135905061247781612453565b92915050565b5f8060408385031215612493576124926123e8565b5b5f6124a085828601612436565b92505060206124b185828601612469565b9150509250929050565b5f8115159050919050565b6124cf816124bb565b82525050565b5f6020820190506124e85f8301846124c6565b92915050565b6124f78161240f565b82525050565b5f6020820190506125105f8301846124ee565b92915050565b61251f8161244a565b82525050565b5f6020820190506125385f830184612516565b92915050565b5f805f60608486031215612555576125546123e8565b5b5f61256286828701612436565b935050602061257386828701612436565b925050604061258486828701612469565b9150509250925092565b5f60ff82169050919050565b6125a38161258e565b82525050565b5f6020820190506125bc5f83018461259a565b92915050565b5f80fd5b5f80fd5b5f80fd5b5f8083601f8401126125e3576125e26125c2565b5b8235905067ffffffffffffffff811115612600576125ff6125c6565b5b60208301915083602082028301111561261c5761261b6125ca565b5b9250929050565b5f8083601f840112612638576126376125c2565b5b8235905067ffffffffffffffff811115612655576126546125c6565b5b602083019150836020820283011115612671576126706125ca565b5b9250929050565b5f805f80604085870312156126905761268f6123e8565b5b5f85013567ffffffffffffffff8111156126ad576126ac6123ec565b5b6126b9878288016125ce565b9450945050602085013567ffffffffffffffff8111156126dc576126db6123ec565b5b6126e887828801612623565b925092505092959194509250565b5f6020828403121561270b5761270a6123e8565b5b5f61271884828501612436565b91505092915050565b61272a816124bb565b8114612734575f80fd5b50565b5f8135905061274581612721565b92915050565b5f805f60408486031215612762576127616123e8565b5b5f84013567ffffffffffffffff81111561277f5761277e6123ec565b5b61278b868287016125ce565b9350935050602061279e86828701612737565b9150509250925092565b5f63ffffffff82169050919050565b6127c0816127a8565b82525050565b5f6040820190506127d95f8301856127b7565b6127e660208301846127b7565b9392505050565b5f8060408385031215612803576128026123e8565b5b5f61281085828601612436565b925050602061282185828601612436565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b60018511156128ad578086048111156128895761288861282b565b5b60018516156128985780820291505b80810290506128a685612858565b945061286d565b94509492505050565b5f826128c55760019050612980565b816128d2575f9050612980565b81600181146128e857600281146128f257612921565b6001915050612980565b60ff8411156129045761290361282b565b5b8360020a91508482111561291b5761291a61282b565b5b50612980565b5060208310610133831016604e8410600b84101617156129565782820a9050838111156129515761295061282b565b5b612980565b6129638484846001612864565b9250905081840481111561297a5761297961282b565b5b81810290505b9392505050565b5f6129918261244a565b915061299c8361258e565b92506129c97fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84846128b6565b905092915050565b5f6129db8261244a565b91506129e68361244a565b92508282026129f48161244a565b91508282048414831517612a0b57612a0a61282b565b5b5092915050565b7f54726164696e67206e6f74206f70656e000000000000000000000000000000005f82015250565b5f612a46601083612348565b9150612a5182612a12565b602082019050919050565b5f6020820190508181035f830152612a7381612a3a565b9050919050565b5f612a848261244a565b9150612a8f8361244a565b9250828203905081811115612aa757612aa661282b565b5b92915050565b7f4f6e6c79206f776e65722063616e2063616c6c207468697300000000000000005f82015250565b5f612ae1601883612348565b9150612aec82612aad565b602082019050919050565b5f6020820190508181035f830152612b0e81612ad5565b9050919050565b7f4d6f7265207468616e203235302077616c6c65747300000000000000000000005f82015250565b5f612b49601583612348565b9150612b5482612b15565b602082019050919050565b5f6020820190508181035f830152612b7681612b3d565b9050919050565b7f4c697374206c656e677468206d69736d617463680000000000000000000000005f82015250565b5f612bb1601483612348565b9150612bbc82612b7d565b602082019050919050565b5f6020820190508181035f830152612bde81612ba5565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f612c1c8261244a565b9150612c278361244a565b9250828201905080821115612c3f57612c3e61282b565b5b92915050565b5f612c4f8261244a565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203612c8157612c8061282b565b5b600182019050919050565b7f546f6b656e2062616c616e636520746f6f206c6f7700000000000000000000005f82015250565b5f612cc0601583612348565b9150612ccb82612c8c565b602082019050919050565b5f6020820190508181035f830152612ced81612cb4565b9050919050565b5f604082019050612d075f830185612516565b612d146020830184612516565b9392505050565b7f4c502065786973747300000000000000000000000000000000000000000000005f82015250565b5f612d4f600983612348565b9150612d5a82612d1b565b602082019050919050565b5f6020820190508181035f830152612d7c81612d43565b9050919050565b7f74726164696e67206973206f70656e00000000000000000000000000000000005f82015250565b5f612db7600f83612348565b9150612dc282612d83565b602082019050919050565b5f6020820190508181035f830152612de481612dab565b9050919050565b7f4e6f2045544820696e20636f6e7472616374206f72206d6573736167650000005f82015250565b5f612e1f601d83612348565b9150612e2a82612deb565b602082019050919050565b5f6020820190508181035f830152612e4c81612e13565b9050919050565b7f4e6f20746f6b656e7320696e20636f6e747261637400000000000000000000005f82015250565b5f612e87601583612348565b9150612e9282612e53565b602082019050919050565b5f6020820190508181035f830152612eb481612e7b565b9050919050565b5f81519050612ec981612420565b92915050565b5f60208284031215612ee457612ee36123e8565b5b5f612ef184828501612ebb565b91505092915050565b5f604082019050612f0d5f8301856124ee565b612f1a60208301846124ee565b9392505050565b7f4e6f207472616e73666572732066726f6d205a65726f2077616c6c65740000005f82015250565b5f612f55601d83612348565b9150612f6082612f21565b602082019050919050565b5f6020820190508181035f830152612f8281612f49565b9050919050565b7f566974616c696b204e455645522053454c4c494e4700000000000000000000005f82015250565b5f612fbd601583612348565b9150612fc882612f89565b602082019050919050565b5f6020820190508181035f830152612fea81612fb1565b9050919050565b5f819050919050565b5f819050919050565b5f61301d61301861301384612ff1565b612ffa565b61244a565b9050919050565b61302d81613003565b82525050565b5f60c0820190506130465f8301896124ee565b6130536020830188612516565b6130606040830187613024565b61306d6060830186613024565b61307a60808301856124ee565b61308760a0830184612516565b979650505050505050565b5f815190506130a081612453565b92915050565b5f805f606084860312156130bd576130bc6123e8565b5b5f6130ca86828701613092565b93505060206130db86828701613092565b92505060406130ec86828701613092565b9150509250925092565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f61312d8261244a565b91506131388361244a565b925082613148576131476130f6565b5b828204905092915050565b5f81905092915050565b50565b5f61316b5f83613153565b91506131768261315d565b5f82019050919050565b5f61318a82613160565b9150819050919050565b5f61319e826127a8565b91506131a9836127a8565b9250828201905063ffffffff8111156131c5576131c461282b565b5b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b61322a8161240f565b82525050565b5f61323b8383613221565b60208301905092915050565b5f602082019050919050565b5f61325d826131f8565b6132678185613202565b935061327283613212565b805f5b838110156132a25781516132898882613230565b975061329483613247565b925050600181019050613275565b5085935050505092915050565b5f60a0820190506132c25f830188612516565b6132cf6020830187613024565b81810360408301526132e18186613253565b90506132f060608301856124ee565b6132fd6080830184612516565b969550505050505056fea2646970667358221220717c0e7e84a36e9b7a11cef2a2e4599ce9dbf45f40e07eabf5d21660362f898864736f6c63430008150033

Deployed Bytecode Sourcemap

2046:10709:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4233:80;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4571:216;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9754:103;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3963:88;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5028:404;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4057:80;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11876:876;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4319:105;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1902:137;;;;;;;;;;;;;:::i;:::-;;11671:197;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1831:65;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4143:84;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8201:204;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;4795:225;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4430:133;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5765:773;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4233:80;4281:13;4305:5;;;;;;;;;;;;;;;;;4298:12;;4233:80;:::o;4571:216::-;4646:4;4698:6;4663:11;:23;4675:10;4663:23;;;;;;;;;;;;;;;:32;4687:7;4663:32;;;;;;;;;;;;;;;:41;;;;4741:7;4720:37;;4729:10;4720:37;;;4750:6;4720:37;;;;;;:::i;:::-;;;;;;;;4775:4;4768:11;;4571:216;;;;:::o;9754:103::-;9806:7;2571:42;9826:23;;9754:103;:::o;3963:88::-;4018:7;2257:1;2324:2;:13;;;;:::i;:::-;2305:15;:33;;;;:::i;:::-;4029:19;;3963:88;:::o;5028:404::-;5128:4;5153:25;5171:6;5153:17;:25::i;:::-;5145:54;;;;;;;;;;;;:::i;:::-;;;;;;;;;5248:17;5213:11;:19;5225:6;5213:19;;;;;;;;;;;;;;;:31;5233:10;5213:31;;;;;;;;;;;;;;;;:52;5210:157;;5349:6;5315:11;:19;5327:6;5315:19;;;;;;;;;;;;;;;:31;5335:10;5315:31;;;;;;;;;;;;;;;;:40;;;;:::i;:::-;5281:11;:19;5293:6;5281:19;;;;;;;;;;;;;;;:31;5301:10;5281:31;;;;;;;;;;;;;;;:74;;;;5210:157;5384:40;5398:6;5406:9;5417:6;5384:13;:40::i;:::-;5377:47;;5028:404;;;;;:::o;4057:80::-;4109:5;2257:1;4118:16;;4057:80;:::o;11876:876::-;1784:6;;;;;;;;;;1770:20;;:10;:20;;;1762:57;;;;;;;;;;;;:::i;:::-;;;;;;;;;12014:3:::1;11994:9;;:16;;:23;;11986:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;12081:12;;:19;;12061:9;;:16;;:39;12053:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;12137:20;12176:6:::0;12172:116:::1;12190:9;;:16;;12186:1;:20;12172:116;;;2257:1;12262:2;:13;;;;:::i;:::-;12244:12;;12257:1;12244:15;;;;;;;:::i;:::-;;;;;;;;:31;;;;:::i;:::-;12227:49;;;;;:::i;:::-;;;12208:3;;;;;:::i;:::-;;;;12172:116;;;;12331:12;12306:9;:21;12316:10;12306:21;;;;;;;;;;;;;;;;:37;;12298:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;12386:6;12382:297;12400:9;;:16;;12396:1;:20;12382:297;;;2257:1;12481:2;:13;;;;:::i;:::-;12463:12;;12476:1;12463:15;;;;;;;:::i;:::-;;;;;;;;:31;;;;:::i;:::-;12437:9;:21;12447:10;12437:21;;;;;;;;;;;;;;;;:58;;;;;;;:::i;:::-;;;;;;;;2257:1;12556:2;:13;;;;:::i;:::-;12538:12;;12551:1;12538:15;;;;;;;:::i;:::-;;;;;;;;:31;;;;:::i;:::-;12510:9;:23;12520:9;;12530:1;12520:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;12510:23;;;;;;;;;;;;;;;;:60;;;;;;;:::i;:::-;;;;;;;;12611:9;;12621:1;12611:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;12590:70;;12599:10;12590:70;;;2257:1;12644:2;:13;;;;:::i;:::-;12626:12;;12639:1;12626:15;;;;;;;:::i;:::-;;;;;;;;:31;;;;:::i;:::-;12590:70;;;;;;:::i;:::-;;;;;;;;12418:3;;;;;:::i;:::-;;;;12382:297;;;;12696:48;12713:9;;:16;;12731:12;12696:48;;;;;;;:::i;:::-;;;;;;;;11975:777;11876:876:::0;;;;:::o;4319:105::-;4385:7;4403:9;:18;4413:7;4403:18;;;;;;;;;;;;;;;;4396:25;;4319:105;;;:::o;1902:137::-;1784:6;;;;;;;;;;1770:20;;:10;:20;;;1762:57;;;;;;;;;;;;:::i;:::-;;;;;;;;;1979:1:::1;1962:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;1998:32;2027:1;1998:32;;;;;;:::i;:::-;;;;;;;;1902:137::o:0;11671:197::-;1784:6;;;;;;;;;;1770:20;;:10;:20;;;1762:57;;;;;;;;;;;;:::i;:::-;;;;;;;;;11770:6:::1;11766:95;11784:7;;:14;;11780:1;:18;11766:95;;;11841:8;11819:7;:19;11827:7;;11835:1;11827:10;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;11819:19;;;;;;;;;;;;;;;;:30;;;;;;;;;;;;;;;;;;11800:3;;;;;:::i;:::-;;;;11766:95;;;;11671:197:::0;;;:::o;1831:65::-;1869:7;1887:6;;;;;;;;;;;1880:13;;1831:65;:::o;4143:84::-;4193:13;4217:7;;;;;;;;;;;;;;;;;4210:14;;4143:84;:::o;8201:204::-;8239:19;8260:21;8295:16;8313:18;8335:20;:18;:20::i;:::-;8294:61;;;;8374:9;8385:11;8366:31;;;;;;8201:204;;:::o;4795:225::-;4875:4;4900:29;4918:10;4900:17;:29::i;:::-;4892:58;;;;;;;;;;;;:::i;:::-;;;;;;;;;4968:44;4982:10;4994:9;5005:6;4968:13;:44::i;:::-;4961:51;;4795:225;;;;:::o;4430:133::-;4514:7;4532:11;:19;4544:6;4532:19;;;;;;;;;;;;;;;:28;4552:7;4532:28;;;;;;;;;;;;;;;;4525:35;;4430:133;;;;:::o;5765:773::-;1784:6;;;;;;;;;;1770:20;;:10;:20;;;1762:57;;;;;;;;;;;;:::i;:::-;;;;;;;;;3297:4:::1;3284:10;;:17;;;;;;;;;;;;;;;;;;5881:1:::2;5859:24;;:10;;;;;;;;;;;:24;;;5851:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;5917:12;;;;;;;;;;;5916:13;5908:41;;;;;;;;;;;;:::i;:::-;;;;;;;;;5980:1;5968:9;:13;:40;;;;6007:1;5985:21;:23;5968:40;5960:82;;;;;;;;;;;;:::i;:::-;;;;;;;;;6086:1;6061:9;:24;6079:4;6061:24;;;;;;;;;;;;;;;;:26;6053:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;6145:1;6129:18;;:4;:18;;::::0;6124:196:::2;;6197:18;;;;;;;;;;;:26;;;:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6179:58;;;6246:4;6253:18;;;;;;;;;;;:23;;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6179:100;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6166:10;;:113;;;;;;;;;;;;;;;;;;6124:196;;;6313:4;6300:10;;:17;;;;;;;;;;;;;;;;;;6124:196;6330:62;6344:9;:24;6362:4;6344:24;;;;;;;;;;;;;;;;6370:21;6330:13;:62::i;:::-;6423:4;6403:5;:17;6409:10;;;;;;;;;;;6403:17;;;;;;;;;;;;;;;;:24;;;;;;;;;;;;;;;;;;6452:1;6438:11;;:15;;;;;;;;;;;;;;;;;;6485;6464:18;:36;;;;6526:4;6511:12;;:19;;;;;;;;;;;;;;;;;;3339:5:::1;3326:10;;:18;;;;;;;;;;;;;;;;;;5765:773:::0;:::o;7741:261::-;7806:4;7822:16;7841:5;7822:24;;7862:12;;;;;;;;;;;7857:106;;;7893:4;7879:18;;7857:106;;;7920:10;:18;7931:6;7920:18;;;;;;;;;;;;;;;;;;;;;;;;;7916:47;;;7956:4;7942:18;;7916:47;7857:106;7983:11;7976:18;;;7741:261;;;:::o;6808:925::-;6900:4;6943:1;6925:20;;:6;:20;;;6917:62;;;;;;;;;;;;:::i;:::-;;;;;;;;;7016:42;6998:61;;:6;:61;;;6990:95;;;;;;;;;;;;:::i;:::-;;;;;;;;;7140:12;;;;;;;;;;;7135:71;;7164:10;:18;7175:6;7164:18;;;;;;;;;;;;;;;;;;;;;;;;;7156:47;;;;;;;;;;;;:::i;:::-;;;;;;;;;7135:71;7222:10;;;;;;;;;;;7221:11;:31;;;;;7236:5;:16;7242:9;7236:16;;;;;;;;;;;;;;;;;;;;;;;;;7221:31;:51;;;;;7257:7;:15;7265:6;7257:15;;;;;;;;;;;;;;;;;;;;;;;;;7256:16;7221:51;7216:84;;;7277:20;:18;:20::i;:::-;7216:84;7312:18;7333:40;7347:6;7355:9;7366:6;7333:13;:40::i;:::-;7312:61;;7384:23;7419:10;7410:6;:19;;;;:::i;:::-;7384:45;;7461:6;7440:9;:17;7450:6;7440:17;;;;;;;;;;;;;;;;:27;;;;;;;:::i;:::-;;;;;;;;7496:1;7483:10;:14;7478:125;;;7544:10;7516:9;:24;7534:4;7516:24;;;;;;;;;;;;;;;;:38;;;;;;;:::i;:::-;;;;;;;;7570:21;:19;:21::i;:::-;7478:125;7637:15;7613:9;:20;7623:9;7613:20;;;;;;;;;;;;;;;;:39;;;;;;;:::i;:::-;;;;;;;;7685:9;7668:35;;7677:6;7668:35;;;7696:6;7668:35;;;;;;:::i;:::-;;;;;;;;7721:4;7714:11;;;;6808:925;;;;;:::o;8413:844::-;8465:16;8483:18;8514:19;8544:21;8568:7;8544:31;;8611:10;8593:15;:28;8588:614;;;8748:1;8733:16;;8588:614;;;8811:4;8790:18;;:25;;;;:::i;:::-;8772:15;:43;8767:435;;;8907:4;8892:19;;8767:435;;;8963:6;8949:11;;;;;;;;;;;:20;;;8944:247;;;9058:4;9043:19;;8944:247;;;9172:3;9157:18;;8944:247;8767:435;8588:614;9220:12;9234:14;9212:37;;;;;;8413:844;;:::o;6546:254::-;6634:28;6649:12;6634:14;:28::i;:::-;6673:18;;;;;;;;;;;:34;;;6715:13;6740:4;6747:12;6761:1;6764;6767:6;;;;;;;;;;6775:15;6673:119;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;6546:254;;:::o;9865:1424::-;3297:4;3284:10;;:17;;;;;;;;;;;;;;;;;;9926:27:::1;9956:9;:24;9974:4;9956:24;;;;;;;;;;;;;;;;9926:54;;2675:6;2257:1;2324:2;:13;;;;:::i;:::-;2305:15;:33;;;;:::i;:::-;2660:21;;;;:::i;:::-;9998:19;:34;;:50;;;;;10036:12;;;;;;;;;;;9998:50;9993:1289;;;2742:4;2257:1;2324:2;:13;;;;:::i;:::-;2305:15;:33;;;;:::i;:::-;2727:19;;;;:::i;:::-;10071;:34;10066:80;;2742:4;2257:1;2324:2;:13;;;;:::i;:::-;2305:15;:33;;;;:::i;:::-;2727:19;;;;:::i;:::-;10110:33;;10066:80;10162:20;10220:6;10206:11;;;;;;;;;;;:20;;;10201:181;;;10365:1;10343:19;:23;;;;:::i;:::-;10328:38;;10201:181;10410:21;10456:12;10434:19;:34;;;;:::i;:::-;10410:58;;2257:1;10503:2;:13;;;;:::i;:::-;10487;:29;10483:485;;;10538:19;10560:21;10538:43;;10600:35;10621:13;10600:20;:35::i;:::-;10654:19;10700:11;10676:21;:35;;;;:::i;:::-;10654:57;;10750:1;10735:12;:16;10730:223;;;10777:21;10815:1;10801:11;:15;;;;:::i;:::-;10777:39;;10840:28;10855:12;10840:14;:28::i;:::-;10891:42;10905:12;10919:13;10891;:42::i;:::-;10754:199;10730:223;10519:449;;10483:485;10982:27;11012:21;10982:51;;11073:1;11051:19;:23;11048:223;;;11097:9;11108:21:::0;2571:42:::1;11133:21;;11162:19;11133:53;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11096:90;;;;11212:4;11205:11;;11246:9;;;;;;;;;;;::::0;11235:20:::1;;11076:195;;11048:223;10051:1231;;;9993:1289;9915:1374;3339:5:::0;3326:10;;:18;;;;;;;;;;;;;;;;;;9865:1424::o;9265:481::-;9362:7;9382:17;9425:12;;;;;;;;;;;:32;;;;;9442:7;:15;9450:6;9442:15;;;;;;;;;;;;;;;;;;;;;;;;;9441:16;9425:32;:55;;;;;9462:7;:18;9470:9;9462:18;;;;;;;;;;;;;;;;;;;;;;;;;9461:19;9425:55;9420:290;;;9504:5;:13;9510:6;9504:13;;;;;;;;;;;;;;;;;;;;;;;;;:33;;;;9521:5;:16;9527:9;9521:16;;;;;;;;;;;;;;;;;;;;;;;;;9504:33;9499:200;;;9560:16;9578:18;9600:20;:18;:20::i;:::-;9559:61;;;;9672:11;9651:32;;9660:9;9651:18;;:6;:18;;;;:::i;:::-;:32;;;;:::i;:::-;9639:44;;9540:159;;9499:200;9420:290;9729:9;9722:16;;;9265:481;;;;;:::o;8010:183::-;8080:6;8065:11;;;;;;;;;;;:21;;;8060:125;;8172:1;8157:11;;:16;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;8060:125;8010:183::o;5440:317::-;5560:12;5511:11;:26;5531:4;5511:26;;;;;;;;;;;;;;;:46;2910:42;5511:46;;;;;;;;;;;;;;;;:61;5506:244;;;5639:17;5590:11;:26;5610:4;5590:26;;;;;;;;;;;;;;;:46;2910:42;5590:46;;;;;;;;;;;;;;;:66;;;;2910:42;5676:62;;5693:4;5676:62;;;5720:17;5676:62;;;;;;:::i;:::-;;;;;;;;5506:244;5440:317;:::o;11297:366::-;11367:27;11382:11;11367:14;:27::i;:::-;11405:21;11443:1;11429:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11405:40;;11474:4;11456;11461:1;11456:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;11500:18;;;;;;;;;;;:23;;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11490:4;11495:1;11490:7;;;;;;;;:::i;:::-;;;;;;;:35;;;;;;;;;;;11536:18;;;;;;;;;;;:69;;;11606:11;11618:1;11620:4;11633;11639:15;11536:119;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11356:307;11297:366;:::o;7:99:1:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:246::-;368:1;378:113;392:6;389:1;386:13;378:113;;;477:1;472:3;468:11;462:18;458:1;453:3;449:11;442:39;414:2;411:1;407:10;402:15;;378:113;;;525:1;516:6;511:3;507:16;500:27;349:184;287:246;;;:::o;539:102::-;580:6;631:2;627:7;622:2;615:5;611:14;607:28;597:38;;539:102;;;:::o;647:377::-;735:3;763:39;796:5;763:39;:::i;:::-;818:71;882:6;877:3;818:71;:::i;:::-;811:78;;898:65;956:6;951:3;944:4;937:5;933:16;898:65;:::i;:::-;988:29;1010:6;988:29;:::i;:::-;983:3;979:39;972:46;;739:285;647:377;;;;:::o;1030:313::-;1143:4;1181:2;1170:9;1166:18;1158:26;;1230:9;1224:4;1220:20;1216:1;1205:9;1201:17;1194:47;1258:78;1331:4;1322:6;1258:78;:::i;:::-;1250:86;;1030:313;;;;:::o;1430:117::-;1539:1;1536;1529:12;1553:117;1662:1;1659;1652:12;1676:126;1713:7;1753:42;1746:5;1742:54;1731:65;;1676:126;;;:::o;1808:96::-;1845:7;1874:24;1892:5;1874:24;:::i;:::-;1863:35;;1808:96;;;:::o;1910:122::-;1983:24;2001:5;1983:24;:::i;:::-;1976:5;1973:35;1963:63;;2022:1;2019;2012:12;1963:63;1910:122;:::o;2038:139::-;2084:5;2122:6;2109:20;2100:29;;2138:33;2165:5;2138:33;:::i;:::-;2038:139;;;;:::o;2183:77::-;2220:7;2249:5;2238:16;;2183:77;;;:::o;2266:122::-;2339:24;2357:5;2339:24;:::i;:::-;2332:5;2329:35;2319:63;;2378:1;2375;2368:12;2319:63;2266:122;:::o;2394:139::-;2440:5;2478:6;2465:20;2456:29;;2494:33;2521:5;2494:33;:::i;:::-;2394:139;;;;:::o;2539:474::-;2607:6;2615;2664:2;2652:9;2643:7;2639:23;2635:32;2632:119;;;2670:79;;:::i;:::-;2632:119;2790:1;2815:53;2860:7;2851:6;2840:9;2836:22;2815:53;:::i;:::-;2805:63;;2761:117;2917:2;2943:53;2988:7;2979:6;2968:9;2964:22;2943:53;:::i;:::-;2933:63;;2888:118;2539:474;;;;;:::o;3019:90::-;3053:7;3096:5;3089:13;3082:21;3071:32;;3019:90;;;:::o;3115:109::-;3196:21;3211:5;3196:21;:::i;:::-;3191:3;3184:34;3115:109;;:::o;3230:210::-;3317:4;3355:2;3344:9;3340:18;3332:26;;3368:65;3430:1;3419:9;3415:17;3406:6;3368:65;:::i;:::-;3230:210;;;;:::o;3446: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:118::-;3885:24;3903:5;3885:24;:::i;:::-;3880:3;3873:37;3798:118;;:::o;3922:222::-;4015:4;4053:2;4042:9;4038:18;4030:26;;4066:71;4134:1;4123:9;4119:17;4110:6;4066:71;:::i;:::-;3922:222;;;;:::o;4150:619::-;4227:6;4235;4243;4292:2;4280:9;4271:7;4267:23;4263:32;4260:119;;;4298:79;;:::i;:::-;4260:119;4418:1;4443:53;4488:7;4479:6;4468:9;4464:22;4443:53;:::i;:::-;4433:63;;4389:117;4545:2;4571:53;4616:7;4607:6;4596:9;4592:22;4571:53;:::i;:::-;4561:63;;4516:118;4673:2;4699:53;4744:7;4735:6;4724:9;4720:22;4699:53;:::i;:::-;4689:63;;4644:118;4150:619;;;;;:::o;4775:86::-;4810:7;4850:4;4843:5;4839:16;4828:27;;4775:86;;;:::o;4867:112::-;4950:22;4966:5;4950:22;:::i;:::-;4945:3;4938:35;4867:112;;:::o;4985:214::-;5074:4;5112:2;5101:9;5097:18;5089:26;;5125:67;5189:1;5178:9;5174:17;5165:6;5125:67;:::i;:::-;4985:214;;;;:::o;5205:117::-;5314:1;5311;5304:12;5328:117;5437:1;5434;5427:12;5451:117;5560:1;5557;5550:12;5591:568;5664:8;5674:6;5724:3;5717:4;5709:6;5705:17;5701:27;5691:122;;5732:79;;:::i;:::-;5691:122;5845:6;5832:20;5822:30;;5875:18;5867:6;5864:30;5861:117;;;5897:79;;:::i;:::-;5861:117;6011:4;6003:6;5999:17;5987:29;;6065:3;6057:4;6049:6;6045:17;6035:8;6031:32;6028:41;6025:128;;;6072:79;;:::i;:::-;6025:128;5591:568;;;;;:::o;6182:::-;6255:8;6265:6;6315:3;6308:4;6300:6;6296:17;6292:27;6282:122;;6323:79;;:::i;:::-;6282:122;6436:6;6423:20;6413:30;;6466:18;6458:6;6455:30;6452:117;;;6488:79;;:::i;:::-;6452:117;6602:4;6594:6;6590:17;6578:29;;6656:3;6648:4;6640:6;6636:17;6626:8;6622:32;6619:41;6616:128;;;6663:79;;:::i;:::-;6616:128;6182:568;;;;;:::o;6756:934::-;6878:6;6886;6894;6902;6951:2;6939:9;6930:7;6926:23;6922:32;6919:119;;;6957:79;;:::i;:::-;6919:119;7105:1;7094:9;7090:17;7077:31;7135:18;7127:6;7124:30;7121:117;;;7157:79;;:::i;:::-;7121:117;7270:80;7342:7;7333:6;7322:9;7318:22;7270:80;:::i;:::-;7252:98;;;;7048:312;7427:2;7416:9;7412:18;7399:32;7458:18;7450:6;7447:30;7444:117;;;7480:79;;:::i;:::-;7444:117;7593:80;7665:7;7656:6;7645:9;7641:22;7593:80;:::i;:::-;7575:98;;;;7370:313;6756:934;;;;;;;:::o;7696:329::-;7755:6;7804:2;7792:9;7783:7;7779:23;7775:32;7772:119;;;7810:79;;:::i;:::-;7772:119;7930:1;7955:53;8000:7;7991:6;7980:9;7976:22;7955:53;:::i;:::-;7945:63;;7901:117;7696:329;;;;:::o;8031:116::-;8101:21;8116:5;8101:21;:::i;:::-;8094:5;8091:32;8081:60;;8137:1;8134;8127:12;8081:60;8031:116;:::o;8153:133::-;8196:5;8234:6;8221:20;8212:29;;8250:30;8274:5;8250:30;:::i;:::-;8153:133;;;;:::o;8292:698::-;8384:6;8392;8400;8449:2;8437:9;8428:7;8424:23;8420:32;8417:119;;;8455:79;;:::i;:::-;8417:119;8603:1;8592:9;8588:17;8575:31;8633:18;8625:6;8622:30;8619:117;;;8655:79;;:::i;:::-;8619:117;8768:80;8840:7;8831:6;8820:9;8816:22;8768:80;:::i;:::-;8750:98;;;;8546:312;8897:2;8923:50;8965:7;8956:6;8945:9;8941:22;8923:50;:::i;:::-;8913:60;;8868:115;8292:698;;;;;:::o;8996:93::-;9032:7;9072:10;9065:5;9061:22;9050:33;;8996:93;;;:::o;9095:115::-;9180:23;9197:5;9180:23;:::i;:::-;9175:3;9168:36;9095:115;;:::o;9216:324::-;9333:4;9371:2;9360:9;9356:18;9348:26;;9384:69;9450:1;9439:9;9435:17;9426:6;9384:69;:::i;:::-;9463:70;9529:2;9518:9;9514:18;9505:6;9463:70;:::i;:::-;9216:324;;;;;:::o;9546:474::-;9614:6;9622;9671:2;9659:9;9650:7;9646:23;9642:32;9639:119;;;9677:79;;:::i;:::-;9639:119;9797:1;9822:53;9867:7;9858:6;9847:9;9843:22;9822:53;:::i;:::-;9812:63;;9768:117;9924:2;9950:53;9995:7;9986:6;9975:9;9971:22;9950:53;:::i;:::-;9940:63;;9895:118;9546:474;;;;;:::o;10026:180::-;10074:77;10071:1;10064:88;10171:4;10168:1;10161:15;10195:4;10192:1;10185:15;10212:102;10254:8;10301:5;10298:1;10294:13;10273:34;;10212:102;;;:::o;10320:848::-;10381:5;10388:4;10412:6;10403:15;;10436:5;10427:14;;10450:712;10471:1;10461:8;10458:15;10450:712;;;10566:4;10561:3;10557:14;10551:4;10548:24;10545:50;;;10575:18;;:::i;:::-;10545:50;10625:1;10615:8;10611:16;10608:451;;;11040:4;11033:5;11029:16;11020:25;;10608:451;11090:4;11084;11080:15;11072:23;;11120:32;11143:8;11120:32;:::i;:::-;11108:44;;10450:712;;;10320:848;;;;;;;:::o;11174:1073::-;11228:5;11419:8;11409:40;;11440:1;11431:10;;11442:5;;11409:40;11468:4;11458:36;;11485:1;11476:10;;11487:5;;11458:36;11554:4;11602:1;11597:27;;;;11638:1;11633:191;;;;11547:277;;11597:27;11615:1;11606:10;;11617:5;;;11633:191;11678:3;11668:8;11665:17;11662:43;;;11685:18;;:::i;:::-;11662:43;11734:8;11731:1;11727:16;11718:25;;11769:3;11762:5;11759:14;11756:40;;;11776:18;;:::i;:::-;11756:40;11809:5;;;11547:277;;11933:2;11923:8;11920:16;11914:3;11908:4;11905:13;11901:36;11883:2;11873:8;11870:16;11865:2;11859:4;11856:12;11852:35;11836:111;11833:246;;;11989:8;11983:4;11979:19;11970:28;;12024:3;12017:5;12014:14;12011:40;;;12031:18;;:::i;:::-;12011:40;12064:5;;11833:246;12104:42;12142:3;12132:8;12126:4;12123:1;12104:42;:::i;:::-;12089:57;;;;12178:4;12173:3;12169:14;12162:5;12159:25;12156:51;;;12187:18;;:::i;:::-;12156:51;12236:4;12229:5;12225:16;12216:25;;11174:1073;;;;;;:::o;12253:281::-;12311:5;12335:23;12353:4;12335:23;:::i;:::-;12327:31;;12379:25;12395:8;12379:25;:::i;:::-;12367:37;;12423:104;12460:66;12450:8;12444:4;12423:104;:::i;:::-;12414:113;;12253:281;;;;:::o;12540:410::-;12580:7;12603:20;12621:1;12603:20;:::i;:::-;12598:25;;12637:20;12655:1;12637:20;:::i;:::-;12632:25;;12692:1;12689;12685:9;12714:30;12732:11;12714:30;:::i;:::-;12703:41;;12893:1;12884:7;12880:15;12877:1;12874:22;12854:1;12847:9;12827:83;12804:139;;12923:18;;:::i;:::-;12804:139;12588:362;12540:410;;;;:::o;12956:166::-;13096:18;13092:1;13084:6;13080:14;13073:42;12956:166;:::o;13128:366::-;13270:3;13291:67;13355:2;13350:3;13291:67;:::i;:::-;13284:74;;13367:93;13456:3;13367:93;:::i;:::-;13485:2;13480:3;13476:12;13469:19;;13128:366;;;:::o;13500:419::-;13666:4;13704:2;13693:9;13689:18;13681:26;;13753:9;13747:4;13743:20;13739:1;13728:9;13724:17;13717:47;13781:131;13907:4;13781:131;:::i;:::-;13773:139;;13500:419;;;:::o;13925:194::-;13965:4;13985:20;14003:1;13985:20;:::i;:::-;13980:25;;14019:20;14037:1;14019:20;:::i;:::-;14014:25;;14063:1;14060;14056:9;14048:17;;14087:1;14081:4;14078:11;14075:37;;;14092:18;;:::i;:::-;14075:37;13925:194;;;;:::o;14125:174::-;14265:26;14261:1;14253:6;14249:14;14242:50;14125:174;:::o;14305:366::-;14447:3;14468:67;14532:2;14527:3;14468:67;:::i;:::-;14461:74;;14544:93;14633:3;14544:93;:::i;:::-;14662:2;14657:3;14653:12;14646:19;;14305:366;;;:::o;14677:419::-;14843:4;14881:2;14870:9;14866:18;14858:26;;14930:9;14924:4;14920:20;14916:1;14905:9;14901:17;14894:47;14958:131;15084:4;14958:131;:::i;:::-;14950:139;;14677:419;;;:::o;15102:171::-;15242:23;15238:1;15230:6;15226:14;15219:47;15102:171;:::o;15279:366::-;15421:3;15442:67;15506:2;15501:3;15442:67;:::i;:::-;15435:74;;15518:93;15607:3;15518:93;:::i;:::-;15636:2;15631:3;15627:12;15620:19;;15279:366;;;:::o;15651:419::-;15817:4;15855:2;15844:9;15840:18;15832:26;;15904:9;15898:4;15894:20;15890:1;15879:9;15875:17;15868:47;15932:131;16058:4;15932:131;:::i;:::-;15924:139;;15651:419;;;:::o;16076:170::-;16216:22;16212:1;16204:6;16200:14;16193:46;16076:170;:::o;16252:366::-;16394:3;16415:67;16479:2;16474:3;16415:67;:::i;:::-;16408:74;;16491:93;16580:3;16491:93;:::i;:::-;16609:2;16604:3;16600:12;16593:19;;16252:366;;;:::o;16624:419::-;16790:4;16828:2;16817:9;16813:18;16805:26;;16877:9;16871:4;16867:20;16863:1;16852:9;16848:17;16841:47;16905:131;17031:4;16905:131;:::i;:::-;16897:139;;16624:419;;;:::o;17049:180::-;17097:77;17094:1;17087:88;17194:4;17191:1;17184:15;17218:4;17215:1;17208:15;17235:191;17275:3;17294:20;17312:1;17294:20;:::i;:::-;17289:25;;17328:20;17346:1;17328:20;:::i;:::-;17323:25;;17371:1;17368;17364:9;17357:16;;17392:3;17389:1;17386:10;17383:36;;;17399:18;;:::i;:::-;17383:36;17235:191;;;;:::o;17432:233::-;17471:3;17494:24;17512:5;17494:24;:::i;:::-;17485:33;;17540:66;17533:5;17530:77;17527:103;;17610:18;;:::i;:::-;17527:103;17657:1;17650:5;17646:13;17639:20;;17432:233;;;:::o;17671:171::-;17811:23;17807:1;17799:6;17795:14;17788:47;17671:171;:::o;17848:366::-;17990:3;18011:67;18075:2;18070:3;18011:67;:::i;:::-;18004:74;;18087:93;18176:3;18087:93;:::i;:::-;18205:2;18200:3;18196:12;18189:19;;17848:366;;;:::o;18220:419::-;18386:4;18424:2;18413:9;18409:18;18401:26;;18473:9;18467:4;18463:20;18459:1;18448:9;18444:17;18437:47;18501:131;18627:4;18501:131;:::i;:::-;18493:139;;18220:419;;;:::o;18645:332::-;18766:4;18804:2;18793:9;18789:18;18781:26;;18817:71;18885:1;18874:9;18870:17;18861:6;18817:71;:::i;:::-;18898:72;18966:2;18955:9;18951:18;18942:6;18898:72;:::i;:::-;18645:332;;;;;:::o;18983:159::-;19123:11;19119:1;19111:6;19107:14;19100:35;18983:159;:::o;19148:365::-;19290:3;19311:66;19375:1;19370:3;19311:66;:::i;:::-;19304:73;;19386:93;19475:3;19386:93;:::i;:::-;19504:2;19499:3;19495:12;19488:19;;19148:365;;;:::o;19519:419::-;19685:4;19723:2;19712:9;19708:18;19700:26;;19772:9;19766:4;19762:20;19758:1;19747:9;19743:17;19736:47;19800:131;19926:4;19800:131;:::i;:::-;19792:139;;19519:419;;;:::o;19944:165::-;20084:17;20080:1;20072:6;20068:14;20061:41;19944:165;:::o;20115:366::-;20257:3;20278:67;20342:2;20337:3;20278:67;:::i;:::-;20271:74;;20354:93;20443:3;20354:93;:::i;:::-;20472:2;20467:3;20463:12;20456:19;;20115:366;;;:::o;20487:419::-;20653:4;20691:2;20680:9;20676:18;20668:26;;20740:9;20734:4;20730:20;20726:1;20715:9;20711:17;20704:47;20768:131;20894:4;20768:131;:::i;:::-;20760:139;;20487:419;;;:::o;20912:179::-;21052:31;21048:1;21040:6;21036:14;21029:55;20912:179;:::o;21097:366::-;21239:3;21260:67;21324:2;21319:3;21260:67;:::i;:::-;21253:74;;21336:93;21425:3;21336:93;:::i;:::-;21454:2;21449:3;21445:12;21438:19;;21097:366;;;:::o;21469:419::-;21635:4;21673:2;21662:9;21658:18;21650:26;;21722:9;21716:4;21712:20;21708:1;21697:9;21693:17;21686:47;21750:131;21876:4;21750:131;:::i;:::-;21742:139;;21469:419;;;:::o;21894:171::-;22034:23;22030:1;22022:6;22018:14;22011:47;21894:171;:::o;22071:366::-;22213:3;22234:67;22298:2;22293:3;22234:67;:::i;:::-;22227:74;;22310:93;22399:3;22310:93;:::i;:::-;22428:2;22423:3;22419:12;22412:19;;22071:366;;;:::o;22443:419::-;22609:4;22647:2;22636:9;22632:18;22624:26;;22696:9;22690:4;22686:20;22682:1;22671:9;22667:17;22660:47;22724:131;22850:4;22724:131;:::i;:::-;22716:139;;22443:419;;;:::o;22868:143::-;22925:5;22956:6;22950:13;22941:22;;22972:33;22999:5;22972:33;:::i;:::-;22868:143;;;;:::o;23017:351::-;23087:6;23136:2;23124:9;23115:7;23111:23;23107:32;23104:119;;;23142:79;;:::i;:::-;23104:119;23262:1;23287:64;23343:7;23334:6;23323:9;23319:22;23287:64;:::i;:::-;23277:74;;23233:128;23017:351;;;;:::o;23374:332::-;23495:4;23533:2;23522:9;23518:18;23510:26;;23546:71;23614:1;23603:9;23599:17;23590:6;23546:71;:::i;:::-;23627:72;23695:2;23684:9;23680:18;23671:6;23627:72;:::i;:::-;23374:332;;;;;:::o;23712:179::-;23852:31;23848:1;23840:6;23836:14;23829:55;23712:179;:::o;23897:366::-;24039:3;24060:67;24124:2;24119:3;24060:67;:::i;:::-;24053:74;;24136:93;24225:3;24136:93;:::i;:::-;24254:2;24249:3;24245:12;24238:19;;23897:366;;;:::o;24269:419::-;24435:4;24473:2;24462:9;24458:18;24450:26;;24522:9;24516:4;24512:20;24508:1;24497:9;24493:17;24486:47;24550:131;24676:4;24550:131;:::i;:::-;24542:139;;24269:419;;;:::o;24694:171::-;24834:23;24830:1;24822:6;24818:14;24811:47;24694:171;:::o;24871:366::-;25013:3;25034:67;25098:2;25093:3;25034:67;:::i;:::-;25027:74;;25110:93;25199:3;25110:93;:::i;:::-;25228:2;25223:3;25219:12;25212:19;;24871:366;;;:::o;25243:419::-;25409:4;25447:2;25436:9;25432:18;25424:26;;25496:9;25490:4;25486:20;25482:1;25471:9;25467:17;25460:47;25524:131;25650:4;25524:131;:::i;:::-;25516:139;;25243:419;;;:::o;25668:85::-;25713:7;25742:5;25731:16;;25668:85;;;:::o;25759:60::-;25787:3;25808:5;25801:12;;25759:60;;;:::o;25825:158::-;25883:9;25916:61;25934:42;25943:32;25969:5;25943:32;:::i;:::-;25934:42;:::i;:::-;25916:61;:::i;:::-;25903:74;;25825:158;;;:::o;25989:147::-;26084:45;26123:5;26084:45;:::i;:::-;26079:3;26072:58;25989:147;;:::o;26142:807::-;26391:4;26429:3;26418:9;26414:19;26406:27;;26443:71;26511:1;26500:9;26496:17;26487:6;26443:71;:::i;:::-;26524:72;26592:2;26581:9;26577:18;26568:6;26524:72;:::i;:::-;26606:80;26682:2;26671:9;26667:18;26658:6;26606:80;:::i;:::-;26696;26772:2;26761:9;26757:18;26748:6;26696:80;:::i;:::-;26786:73;26854:3;26843:9;26839:19;26830:6;26786:73;:::i;:::-;26869;26937:3;26926:9;26922:19;26913:6;26869:73;:::i;:::-;26142:807;;;;;;;;;:::o;26955:143::-;27012:5;27043:6;27037:13;27028:22;;27059:33;27086:5;27059:33;:::i;:::-;26955:143;;;;:::o;27104:663::-;27192:6;27200;27208;27257:2;27245:9;27236:7;27232:23;27228:32;27225:119;;;27263:79;;:::i;:::-;27225:119;27383:1;27408:64;27464:7;27455:6;27444:9;27440:22;27408:64;:::i;:::-;27398:74;;27354:128;27521:2;27547:64;27603:7;27594:6;27583:9;27579:22;27547:64;:::i;:::-;27537:74;;27492:129;27660:2;27686:64;27742:7;27733:6;27722:9;27718:22;27686:64;:::i;:::-;27676:74;;27631:129;27104:663;;;;;:::o;27773:180::-;27821:77;27818:1;27811:88;27918:4;27915:1;27908:15;27942:4;27939:1;27932:15;27959:185;27999:1;28016:20;28034:1;28016:20;:::i;:::-;28011:25;;28050:20;28068:1;28050:20;:::i;:::-;28045:25;;28089:1;28079:35;;28094:18;;:::i;:::-;28079:35;28136:1;28133;28129:9;28124:14;;27959:185;;;;:::o;28150:147::-;28251:11;28288:3;28273:18;;28150:147;;;;:::o;28303:114::-;;:::o;28423:398::-;28582:3;28603:83;28684:1;28679:3;28603:83;:::i;:::-;28596:90;;28695:93;28784:3;28695:93;:::i;:::-;28813:1;28808:3;28804:11;28797:18;;28423:398;;;:::o;28827:379::-;29011:3;29033:147;29176:3;29033:147;:::i;:::-;29026:154;;29197:3;29190:10;;28827:379;;;:::o;29212:197::-;29251:3;29270:19;29287:1;29270:19;:::i;:::-;29265:24;;29303:19;29320:1;29303:19;:::i;:::-;29298:24;;29345:1;29342;29338:9;29331:16;;29368:10;29363:3;29360:19;29357:45;;;29382:18;;:::i;:::-;29357:45;29212:197;;;;:::o;29415:180::-;29463:77;29460:1;29453:88;29560:4;29557:1;29550:15;29584:4;29581:1;29574:15;29601:114;29668:6;29702:5;29696:12;29686:22;;29601:114;;;:::o;29721:184::-;29820:11;29854:6;29849:3;29842:19;29894:4;29889:3;29885:14;29870:29;;29721:184;;;;:::o;29911:132::-;29978:4;30001:3;29993:11;;30031:4;30026:3;30022:14;30014:22;;29911:132;;;:::o;30049:108::-;30126:24;30144:5;30126:24;:::i;:::-;30121:3;30114:37;30049:108;;:::o;30163:179::-;30232:10;30253:46;30295:3;30287:6;30253:46;:::i;:::-;30331:4;30326:3;30322:14;30308:28;;30163:179;;;;:::o;30348:113::-;30418:4;30450;30445:3;30441:14;30433:22;;30348:113;;;:::o;30497:732::-;30616:3;30645:54;30693:5;30645:54;:::i;:::-;30715:86;30794:6;30789:3;30715:86;:::i;:::-;30708:93;;30825:56;30875:5;30825:56;:::i;:::-;30904:7;30935:1;30920:284;30945:6;30942:1;30939:13;30920:284;;;31021:6;31015:13;31048:63;31107:3;31092:13;31048:63;:::i;:::-;31041:70;;31134:60;31187:6;31134:60;:::i;:::-;31124:70;;30980:224;30967:1;30964;30960:9;30955:14;;30920:284;;;30924:14;31220:3;31213:10;;30621:608;;;30497:732;;;;:::o;31235:831::-;31498:4;31536:3;31525:9;31521:19;31513:27;;31550:71;31618:1;31607:9;31603:17;31594:6;31550:71;:::i;:::-;31631:80;31707:2;31696:9;31692:18;31683:6;31631:80;:::i;:::-;31758:9;31752:4;31748:20;31743:2;31732:9;31728:18;31721:48;31786:108;31889:4;31880:6;31786:108;:::i;:::-;31778:116;;31904:72;31972:2;31961:9;31957:18;31948:6;31904:72;:::i;:::-;31986:73;32054:3;32043:9;32039:19;32030:6;31986:73;:::i;:::-;31235:831;;;;;;;;:::o

Swarm Source

ipfs://717c0e7e84a36e9b7a11cef2a2e4599ce9dbf45f40e07eabf5d21660362f8988
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.