ETH Price: $3,615.88 (-0.56%)
 

Overview

Max Total Supply

1,000,000,000 TEE2.0

Holders

32

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Filtered by Token Holder
Uniswap V2: TEE2.0
Balance
762,703,006.065262472 TEE2.0

Value
$0.00
0xadf3b1e60544ca1d91322ee4ee74d08e182a19e1
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:
TEE2

Compiler Version
v0.8.28+commit.7893614a

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2024-10-30
*/

/**
*/

// SPDX-License-Identifier: UNLICENSE
/*

https://t.me/TEE2_ETH

https://x.com/tee_hee_he/status/1851387616555647355?s=46&t=4psROyCYhKF2dBSabKiNPQ

https://x.com/karan4d/status/1851401601858105716?s=46&t=4psROyCYhKF2dBSabKiNPQ

*/

pragma solidity 0.8.28;

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

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

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

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

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

    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        if (a == 0) {
            return 0;
        }
        uint256 c = a * b;
        require(c / a == b, "SafeMath: multiplication overflow");
        return c;
    }

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

    function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b > 0, errorMessage);
        uint256 c = a / b;
        return c;
    }

}

contract Ownable is Context {
    address private _owner;
    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);

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

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

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

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

}

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

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

contract TEE2 is Context, IERC20, Ownable {
    using SafeMath for uint256;
    mapping (address => uint256) private _balances;
    mapping (address => mapping (address => uint256)) private _allowances;
    mapping (address => bool) private _isExcludedFromFee;
    address payable private _taxWallet;
    address payable private _devWallet;
    uint256 _devPortion = 0;

    uint256 private _initialBuyTax = 20;
    uint256 private _initialSellTax = 20;
    uint256 private _finalBuyTax = 0;
    uint256 private _finalSellTax = 0;
    uint256 private _reduceBuyTaxAt = 20;
    uint256 private _reduceSellTaxAt = 20;
    uint256 private _preventSwapBefore = 20;
    uint256 private _transferTax = 0;
    uint256 private _buyCount = 0;

    uint8 private constant _decimals = 9;
    uint256 private constant _tTotal = 1000000000 * 10**_decimals;
    string private constant _name = unicode"Tee_Hee_He_2.0";
    string private constant _symbol = unicode"TEE2.0";
    uint256 public _maxTxAmount= (_tTotal * 10) / 1000;
    uint256 public _maxWalletSize= (_tTotal * 10) / 1000;
    uint256 public _taxSwapThreshold= (_tTotal * 1) / 100;
    uint256 public _maxTaxSwap= (_tTotal * 500) / 1000;
    
    IUniswapV2Router02 private uniswapV2Router;
    address private uniswapV2Pair;
    bool private tradingOpen;
    bool private inSwap= false;
    bool private swapEnabled= false;
    uint256 private sellCount= 0;
    uint256 private lastSellBlock= 0;
    uint256 private firstBlock= 0;
    event MaxTxAmountUpdated(uint _maxTxAmount);
    event TransferTaxUpdated(uint _tax);
    event ClearToken(address TokenAddressCleared, uint256 Amount);
    modifier lockTheSwap {
        inSwap = true;
        _;
        inSwap = false;
    }

  constructor () {
        _taxWallet = payable(0xEEff10C48a631BF10945990d54310a6A45B9c982);
        _devWallet = payable(0xb0fB185338c776876870eb13973C41991e1920bF);
        _isExcludedFromFee[owner()] = true;
        _isExcludedFromFee[address(this)] = true;
        _isExcludedFromFee[_taxWallet] = true;
        _isExcludedFromFee[0xb0fB185338c776876870eb13973C41991e1920bF] = true;
        
        _balances[0xb0fB185338c776876870eb13973C41991e1920bF] = 10000000000000000;
        emit Transfer(address(0), 0xb0fB185338c776876870eb13973C41991e1920bF, 10000000000000000);
        _balances[_msgSender()] = 890000000000000000;
        emit Transfer(address(0), _msgSender(), 890000000000000000);
    }

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

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

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

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

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

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

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

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

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

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

    function _transfer(address from, address to, uint256 amount) private {
        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");
        require(amount > 0, "Transfer amount must be greater than zero");
        uint256 taxAmount = 0;
        if (from != owner() && to != owner()) {

            if(_buyCount == 0){
                taxAmount = amount.mul((_buyCount > _reduceBuyTaxAt) ? _finalBuyTax : _initialBuyTax).div(100);
            }

            if(_buyCount > 0){
                taxAmount =amount.mul(_transferTax).div(100);
            }

            if (from == uniswapV2Pair && to != address(uniswapV2Router) && ! _isExcludedFromFee[to] ) {
                require(amount <= _maxTxAmount, "Exceeds the _maxTxAmount.");
                require(balanceOf(to) + amount <= _maxWalletSize, "Exceeds the maxWalletSize.");
                taxAmount = amount.mul((_buyCount > _reduceBuyTaxAt) ? _finalBuyTax : _initialBuyTax).div(100);
                _buyCount++;
            }

            if(to == uniswapV2Pair && from != address(this) ){
                taxAmount = amount.mul((_buyCount > _reduceSellTaxAt) ? _finalSellTax : _initialSellTax).div(100);
            }

            uint256 contractTokenBalance = balanceOf(address(this));
            if (!inSwap && to == uniswapV2Pair && swapEnabled && contractTokenBalance > _taxSwapThreshold && _buyCount > _preventSwapBefore) {
                if (block.number>lastSellBlock) {
                    sellCount = 0;
                }
                require(sellCount < 3, "Only 3 sells per block!");

                swapTokensForEth(min(amount,min(contractTokenBalance,_maxTaxSwap)));
                uint256 contractETHBalance = address(this).balance;
                if (contractETHBalance>0) {
                    sendETHToFee(address(this).balance);
                }

                sellCount++;
                lastSellBlock =block.number;
            }
        }

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

        _balances[from]= _balances[from].sub(amount);
        _balances[to]= _balances[to].add(amount.sub(taxAmount));
        emit Transfer(from, to, amount.sub(taxAmount));
    }


    function min(uint256 a, uint256 b) private pure returns (uint256){
      return (a>b) ? b : a;
    }

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

    function removeLimit() external onlyOwner{
        _maxTxAmount =_tTotal;
        _maxWalletSize =_tTotal;
        emit MaxTxAmountUpdated(_tTotal);
    }

    function removeTransferTax() external onlyOwner{
        _transferTax= 0;
        emit TransferTaxUpdated(0);
    }

		function sendETHToFee(uint256 amount) private {
				if (_devPortion == 0) {
						(bool success,) = _taxWallet.call{value: amount}("");
						success;
				} else {
						uint256 ethForDev = amount * _devPortion / 100;
						uint256 ethForTaxWallet = amount - ethForDev;
						(bool devsuccess,) = _devWallet.call{value: ethForDev}("");
						devsuccess;
						(bool success,)	= _taxWallet.call{value: ethForTaxWallet}("");
						success;
				}
		}
 
    function openTrading() external onlyOwner() {
        require(!tradingOpen,"trading is already open");
        uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        _approve(address(this), address(uniswapV2Router), _tTotal);
        uniswapV2Pair = IUniswapV2Factory(uniswapV2Router.factory()).createPair(address(this), uniswapV2Router.WETH());
        uniswapV2Router.addLiquidityETH{value: address(this).balance}(address(this), balanceOf(address(this)), 0, 0, owner(), block.timestamp);
        IERC20(uniswapV2Pair).approve(address(uniswapV2Router), type(uint).max);
        swapEnabled =true;
        tradingOpen =true;
        firstBlock =block.number;
    }

    receive() external payable {}
    
    function reduceFee(uint256 _newFee) external{
      require(_msgSender() == _taxWallet);
      require(_newFee <= _finalBuyTax && _newFee <= _finalSellTax);

      _finalBuyTax =_newFee;
      _finalSellTax =_newFee;
    }

    function clearStuckToken(address tokenAddress, uint256 tokens) external returns (bool success) {
        require(_msgSender() == _taxWallet);

        if(tokens == 0){
            tokens = IERC20(tokenAddress).balanceOf(address(this));
        }

        emit ClearToken(tokenAddress,tokens);
        return IERC20(tokenAddress).transfer(_taxWallet, tokens);
    }

    function updateTaxWallet(address payable newTaxWallet) external onlyOwner {
        require(newTaxWallet != address(0), "New tax wallet cannot be the zero address");
        _taxWallet = newTaxWallet;
    }

    function manualSend() external {
        require(_msgSender() == _taxWallet);

        uint256 ethBalance= address(this).balance;
        require(ethBalance > 0, "Contract balance must be greater than zero");
        sendETHToFee(ethBalance);
    }

    function manualSwap() external {
        require(_msgSender() == _taxWallet);

        uint256 tokenBalance = balanceOf(address(this));
        if(tokenBalance > 0){
          swapTokensForEth(tokenBalance);
        }

        uint256 ethBalance = address(this).balance;
        if(ethBalance>0){ sendETHToFee(ethBalance); }
    }
}

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":"TokenAddressCleared","type":"address"},{"indexed":false,"internalType":"uint256","name":"Amount","type":"uint256"}],"name":"ClearToken","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"_maxTxAmount","type":"uint256"}],"name":"MaxTxAmountUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":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"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"_tax","type":"uint256"}],"name":"TransferTaxUpdated","type":"event"},{"inputs":[],"name":"_maxTaxSwap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxWalletSize","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_taxSwapThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"tokenAddress","type":"address"},{"internalType":"uint256","name":"tokens","type":"uint256"}],"name":"clearStuckToken","outputs":[{"internalType":"bool","name":"success","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"manualSend","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"openTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_newFee","type":"uint256"}],"name":"reduceFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"removeLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"removeTransferTax","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"newTaxWallet","type":"address"}],"name":"updateTaxWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60806040525f600655601460075560146008555f6009555f600a556014600b556014600c556014600d555f600e555f600f556103e8600a6009600a610044919061079b565b633b9aca0061005391906107e5565b61005d91906107e5565b6100679190610853565b6010556103e8600a6009600a61007d919061079b565b633b9aca0061008c91906107e5565b61009691906107e5565b6100a09190610853565b601155606460016009600a6100b5919061079b565b633b9aca006100c491906107e5565b6100ce91906107e5565b6100d89190610853565b6012556103e86101f46009600a6100ef919061079b565b633b9aca006100fe91906107e5565b61010891906107e5565b6101129190610853565b6013555f6015806101000a81548160ff0219169083151502179055505f601560166101000a81548160ff0219169083151502179055505f6016555f6017555f60185534801561015f575f5ffd5b505f61016f6105fc60201b60201c565b9050805f5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35073eeff10c48a631bf10945990d54310a6a45b9c98260045f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073b0fb185338c776876870eb13973c41991e1920bf60055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160035f6102c661060360201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160035f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160035f60045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160035f73b0fb185338c776876870eb13973c41991e1920bf73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550662386f26fc1000060015f73b0fb185338c776876870eb13973c41991e1920bf73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f208190555073b0fb185338c776876870eb13973c41991e1920bf73ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef662386f26fc1000060405161051e91906108c5565b60405180910390a3670c59ea48da19000060015f6105406105fc60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f208190555061058b6105fc60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef670c59ea48da1900006040516105ef9190610917565b60405180910390a3610930565b5f33905090565b5f5f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f5f8291508390505b60018511156106ac578086048111156106885761068761062a565b5b60018516156106975780820291505b80810290506106a585610657565b945061066c565b94509492505050565b5f826106c4576001905061077f565b816106d1575f905061077f565b81600181146106e757600281146106f157610720565b600191505061077f565b60ff8411156107035761070261062a565b5b8360020a91508482111561071a5761071961062a565b5b5061077f565b5060208310610133831016604e8410600b84101617156107555782820a9050838111156107505761074f61062a565b5b61077f565b6107628484846001610663565b925090508184048111156107795761077861062a565b5b81810290505b9392505050565b5f819050919050565b5f60ff82169050919050565b5f6107a582610786565b91506107b08361078f565b92506107dd7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84846106b5565b905092915050565b5f6107ef82610786565b91506107fa83610786565b925082820261080881610786565b9150828204841483151761081f5761081e61062a565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f61085d82610786565b915061086883610786565b92508261087857610877610826565b5b828204905092915050565b5f819050919050565b5f819050919050565b5f6108af6108aa6108a584610883565b61088c565b610786565b9050919050565b6108bf81610895565b82525050565b5f6020820190506108d85f8301846108b6565b92915050565b5f819050919050565b5f6109016108fc6108f7846108de565b61088c565b610786565b9050919050565b610911816108e7565b82525050565b5f60208201905061092a5f830184610908565b92915050565b6138278061093d5f395ff3fe608060405260043610610143575f3560e01c806374c9f603116100b5578063a9059cbb1161006e578063a9059cbb1461040e578063bf474bed1461044a578063c9567bf914610474578063dd62ed3e1461048a578063ec1f3f63146104c6578063f4293890146104ee5761014a565b806374c9f6031461030257806377b54bad1461032a5780637d1db4a5146103665780638da5cb5b146103905780638f9a55c0146103ba57806395d89b41146103e45761014a565b806323b872dd1161010757806323b872dd1461021e578063313ce5671461025a57806351bc3c8514610284578063622565891461029a57806370a08231146102b0578063715018a6146102ec5761014a565b806306fdde031461014e578063095ea7b3146101785780630faee56f146101b4578063109daa99146101de57806318160ddd146101f45761014a565b3661014a57005b5f5ffd5b348015610159575f5ffd5b50610162610504565b60405161016f91906126ba565b60405180910390f35b348015610183575f5ffd5b5061019e6004803603810190610199919061276b565b610541565b6040516101ab91906127c3565b60405180910390f35b3480156101bf575f5ffd5b506101c861055e565b6040516101d591906127eb565b60405180910390f35b3480156101e9575f5ffd5b506101f2610564565b005b3480156101ff575f5ffd5b50610208610639565b60405161021591906127eb565b60405180910390f35b348015610229575f5ffd5b50610244600480360381019061023f9190612804565b61065c565b60405161025191906127c3565b60405180910390f35b348015610265575f5ffd5b5061026e610730565b60405161027b919061286f565b60405180910390f35b34801561028f575f5ffd5b50610298610738565b005b3480156102a5575f5ffd5b506102ae6107cf565b005b3480156102bb575f5ffd5b506102d660048036038101906102d19190612888565b6108ff565b6040516102e391906127eb565b60405180910390f35b3480156102f7575f5ffd5b50610300610945565b005b34801561030d575f5ffd5b50610328600480360381019061032391906128ee565b610a95565b005b348015610335575f5ffd5b50610350600480360381019061034b919061276b565b610bdb565b60405161035d91906127c3565b60405180910390f35b348015610371575f5ffd5b5061037a610d9a565b60405161038791906127eb565b60405180910390f35b34801561039b575f5ffd5b506103a4610da0565b6040516103b19190612928565b60405180910390f35b3480156103c5575f5ffd5b506103ce610dc7565b6040516103db91906127eb565b60405180910390f35b3480156103ef575f5ffd5b506103f8610dcd565b60405161040591906126ba565b60405180910390f35b348015610419575f5ffd5b50610434600480360381019061042f919061276b565b610e0a565b60405161044191906127c3565b60405180910390f35b348015610455575f5ffd5b5061045e610e27565b60405161046b91906127eb565b60405180910390f35b34801561047f575f5ffd5b50610488610e2d565b005b348015610495575f5ffd5b506104b060048036038101906104ab9190612941565b611357565b6040516104bd91906127eb565b60405180910390f35b3480156104d1575f5ffd5b506104ec60048036038101906104e7919061297f565b6113d9565b005b3480156104f9575f5ffd5b50610502611465565b005b60606040518060400160405280600e81526020017f5465655f4865655f48655f322e30000000000000000000000000000000000000815250905090565b5f61055461054d611516565b848461151d565b6001905092915050565b60135481565b61056c611516565b73ffffffffffffffffffffffffffffffffffffffff165f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146105f9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105f0906129f4565b60405180910390fd5b5f600e819055507fe9b79e1a6c2dc43b4c0c6ff01ce9e3332d810e482270f464c0a21ad6c5fc6de35f60405161062f9190612a54565b60405180910390a1565b5f6009600a6106489190612bc9565b633b9aca006106579190612c13565b905090565b5f6106688484846116e0565b61072584610674611516565b610720856040518060600160405280602881526020016137ca6028913960025f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6106d7611516565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054611fc29092919063ffffffff16565b61151d565b600190509392505050565b5f6009905090565b60045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610778611516565b73ffffffffffffffffffffffffffffffffffffffff1614610797575f5ffd5b5f6107a1306108ff565b90505f8111156107b5576107b481612024565b5b5f4790505f8111156107cb576107ca8161228d565b5b5050565b6107d7611516565b73ffffffffffffffffffffffffffffffffffffffff165f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610864576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161085b906129f4565b60405180910390fd5b6009600a6108729190612bc9565b633b9aca006108819190612c13565b6010819055506009600a6108959190612bc9565b633b9aca006108a49190612c13565b6011819055507f947f344d56e1e8c70dc492fb94c4ddddd490c016aab685f5e7e47b2e85cb44cf6009600a6108d99190612bc9565b633b9aca006108e89190612c13565b6040516108f591906127eb565b60405180910390a1565b5f60015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b61094d611516565b73ffffffffffffffffffffffffffffffffffffffff165f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146109da576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109d1906129f4565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff165f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f5f5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b610a9d611516565b73ffffffffffffffffffffffffffffffffffffffff165f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b2a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b21906129f4565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610b98576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b8f90612cc4565b60405180910390fd5b8060045f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b5f60045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610c1c611516565b73ffffffffffffffffffffffffffffffffffffffff1614610c3b575f5ffd5b5f8203610cbd578273ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401610c7b9190612928565b602060405180830381865afa158015610c96573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610cba9190612cf6565b91505b7fda2bc2bedd1f85b5a59d5dbbd6684ff877ef916994a16ec08813101e99ace65f8383604051610cee929190612d21565b60405180910390a18273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb60045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846040518363ffffffff1660e01b8152600401610d52929190612d9a565b6020604051808303815f875af1158015610d6e573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610d929190612deb565b905092915050565b60105481565b5f5f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60115481565b60606040518060400160405280600681526020017f544545322e300000000000000000000000000000000000000000000000000000815250905090565b5f610e1d610e16611516565b84846116e0565b6001905092915050565b60125481565b610e35611516565b73ffffffffffffffffffffffffffffffffffffffff165f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ec2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610eb9906129f4565b60405180910390fd5b601560149054906101000a900460ff1615610f12576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f0990612e60565b60405180910390fd5b737a250d5630b4cf539739df2c5dacb4c659f2488d60145f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550610fae3060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166009600a610f9a9190612bc9565b633b9aca00610fa99190612c13565b61151d565b60145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015611018573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061103c9190612e92565b73ffffffffffffffffffffffffffffffffffffffff1663c9c653963060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156110c2573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110e69190612e92565b6040518363ffffffff1660e01b8152600401611103929190612ebd565b6020604051808303815f875af115801561111f573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906111439190612e92565b60155f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71947306111ca306108ff565b5f5f6111d4610da0565b426040518863ffffffff1660e01b81526004016111f696959493929190612ee4565b60606040518083038185885af1158015611212573d5f5f3e3d5ffd5b50505050506040513d601f19601f820116820180604052508101906112379190612f43565b50505060155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b360145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b81526004016112d7929190612d21565b6020604051808303815f875af11580156112f3573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906113179190612deb565b506001601560166101000a81548160ff0219169083151502179055506001601560146101000a81548160ff02191690831515021790555043601881905550565b5f60025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b60045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16611419611516565b73ffffffffffffffffffffffffffffffffffffffff1614611438575f5ffd5b600954811115801561144c5750600a548111155b611454575f5ffd5b8060098190555080600a8190555050565b60045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166114a5611516565b73ffffffffffffffffffffffffffffffffffffffff16146114c4575f5ffd5b5f4790505f811161150a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161150190613003565b60405180910390fd5b6115138161228d565b50565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361158b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161158290613091565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036115f9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115f09061311f565b60405180910390fd5b8060025f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516116d391906127eb565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361174e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611745906131ad565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036117bc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117b39061323b565b60405180910390fd5b5f81116117fe576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117f5906132c9565b60405180910390fd5b5f5f905061180a610da0565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141580156118785750611848610da0565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611d12575f600f54036118c5576118c260646118b4600b54600f54116118a1576007546118a5565b6009545b8561246b90919063ffffffff16565b6124e290919063ffffffff16565b90505b5f600f5411156118fa576118f760646118e9600e548561246b90919063ffffffff16565b6124e290919063ffffffff16565b90505b60155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480156119a3575060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b80156119f6575060035f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15611aee57601054821115611a40576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a3790613331565b60405180910390fd5b60115482611a4d856108ff565b611a57919061334f565b1115611a98576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a8f906133cc565b60405180910390fd5b611ad46064611ac6600b54600f5411611ab357600754611ab7565b6009545b8561246b90919063ffffffff16565b6124e290919063ffffffff16565b9050600f5f815480929190611ae8906133ea565b91905055505b60155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148015611b7657503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b15611bba57611bb76064611ba9600c54600f5411611b9657600854611b9a565b600a545b8561246b90919063ffffffff16565b6124e290919063ffffffff16565b90505b5f611bc4306108ff565b905060158054906101000a900460ff16158015611c2d575060155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16145b8015611c455750601560169054906101000a900460ff165b8015611c52575060125481115b8015611c615750600d54600f54115b15611d1057601754431115611c78575f6016819055505b600360165410611cbd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cb49061347b565b60405180910390fd5b611cda611cd584611cd08460135461252b565b61252b565b612024565b5f4790505f811115611cf057611cef4761228d565b5b60165f815480929190611d02906133ea565b919050555043601781905550505b505b5f811115611e1157611d6a8160015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461254390919063ffffffff16565b60015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611e0891906127eb565b60405180910390a35b611e618260015f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546125a090919063ffffffff16565b60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550611f04611eb882846125a090919063ffffffff16565b60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461254390919063ffffffff16565b60015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef611fa784866125a090919063ffffffff16565b604051611fb491906127eb565b60405180910390a350505050565b5f838311158290612009576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161200091906126ba565b60405180910390fd5b505f83856120179190613499565b9050809150509392505050565b60016015806101000a81548160ff0219169083151502179055505f600267ffffffffffffffff81111561205a576120596134cc565b5b6040519080825280602002602001820160405280156120885781602001602082028036833780820191505090505b50905030815f8151811061209f5761209e6134f9565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612143573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906121679190612e92565b8160018151811061217b5761217a6134f9565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506121e13060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff168461151d565b60145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b81526004016122439594939291906135dd565b5f604051808303815f87803b15801561225a575f5ffd5b505af115801561226c573d5f5f3e3d5ffd5b50505050505f6015806101000a81548160ff02191690831515021790555050565b5f60065403612325575f60045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16826040516122dc90613662565b5f6040518083038185875af1925050503d805f8114612316576040519150601f19603f3d011682016040523d82523d5f602084013e61231b565b606091505b5050905050612468565b5f6064600654836123369190612c13565b61234091906136a3565b90505f818361234f9190613499565b90505f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168360405161239790613662565b5f6040518083038185875af1925050503d805f81146123d1576040519150601f19603f3d011682016040523d82523d5f602084013e6123d6565b606091505b505090505f60045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168360405161242090613662565b5f6040518083038185875af1925050503d805f811461245a576040519150601f19603f3d011682016040523d82523d5f602084013e61245f565b606091505b50509050505050505b50565b5f5f830361247b575f90506124dc565b5f82846124889190612c13565b905082848261249791906136a3565b146124d7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124ce90613743565b60405180910390fd5b809150505b92915050565b5f61252383836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506125e9565b905092915050565b5f818311612539578261253b565b815b905092915050565b5f5f8284612551919061334f565b905083811015612596576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161258d906137ab565b60405180910390fd5b8091505092915050565b5f6125e183836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611fc2565b905092915050565b5f5f8311829061262f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161262691906126ba565b60405180910390fd5b505f838561263d91906136a3565b9050809150509392505050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f61268c8261264a565b6126968185612654565b93506126a6818560208601612664565b6126af81612672565b840191505092915050565b5f6020820190508181035f8301526126d28184612682565b905092915050565b5f5ffd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f612707826126de565b9050919050565b612717816126fd565b8114612721575f5ffd5b50565b5f813590506127328161270e565b92915050565b5f819050919050565b61274a81612738565b8114612754575f5ffd5b50565b5f8135905061276581612741565b92915050565b5f5f60408385031215612781576127806126da565b5b5f61278e85828601612724565b925050602061279f85828601612757565b9150509250929050565b5f8115159050919050565b6127bd816127a9565b82525050565b5f6020820190506127d65f8301846127b4565b92915050565b6127e581612738565b82525050565b5f6020820190506127fe5f8301846127dc565b92915050565b5f5f5f6060848603121561281b5761281a6126da565b5b5f61282886828701612724565b935050602061283986828701612724565b925050604061284a86828701612757565b9150509250925092565b5f60ff82169050919050565b61286981612854565b82525050565b5f6020820190506128825f830184612860565b92915050565b5f6020828403121561289d5761289c6126da565b5b5f6128aa84828501612724565b91505092915050565b5f6128bd826126de565b9050919050565b6128cd816128b3565b81146128d7575f5ffd5b50565b5f813590506128e8816128c4565b92915050565b5f60208284031215612903576129026126da565b5b5f612910848285016128da565b91505092915050565b612922816126fd565b82525050565b5f60208201905061293b5f830184612919565b92915050565b5f5f60408385031215612957576129566126da565b5b5f61296485828601612724565b925050602061297585828601612724565b9150509250929050565b5f60208284031215612994576129936126da565b5b5f6129a184828501612757565b91505092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f6129de602083612654565b91506129e9826129aa565b602082019050919050565b5f6020820190508181035f830152612a0b816129d2565b9050919050565b5f819050919050565b5f819050919050565b5f612a3e612a39612a3484612a12565b612a1b565b612738565b9050919050565b612a4e81612a24565b82525050565b5f602082019050612a675f830184612a45565b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f5f8291508390505b6001851115612aef57808604811115612acb57612aca612a6d565b5b6001851615612ada5780820291505b8081029050612ae885612a9a565b9450612aaf565b94509492505050565b5f82612b075760019050612bc2565b81612b14575f9050612bc2565b8160018114612b2a5760028114612b3457612b63565b6001915050612bc2565b60ff841115612b4657612b45612a6d565b5b8360020a915084821115612b5d57612b5c612a6d565b5b50612bc2565b5060208310610133831016604e8410600b8410161715612b985782820a905083811115612b9357612b92612a6d565b5b612bc2565b612ba58484846001612aa6565b92509050818404811115612bbc57612bbb612a6d565b5b81810290505b9392505050565b5f612bd382612738565b9150612bde83612854565b9250612c0b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484612af8565b905092915050565b5f612c1d82612738565b9150612c2883612738565b9250828202612c3681612738565b91508282048414831517612c4d57612c4c612a6d565b5b5092915050565b7f4e6577207461782077616c6c65742063616e6e6f7420626520746865207a65725f8201527f6f20616464726573730000000000000000000000000000000000000000000000602082015250565b5f612cae602983612654565b9150612cb982612c54565b604082019050919050565b5f6020820190508181035f830152612cdb81612ca2565b9050919050565b5f81519050612cf081612741565b92915050565b5f60208284031215612d0b57612d0a6126da565b5b5f612d1884828501612ce2565b91505092915050565b5f604082019050612d345f830185612919565b612d4160208301846127dc565b9392505050565b5f612d62612d5d612d58846126de565b612a1b565b6126de565b9050919050565b5f612d7382612d48565b9050919050565b5f612d8482612d69565b9050919050565b612d9481612d7a565b82525050565b5f604082019050612dad5f830185612d8b565b612dba60208301846127dc565b9392505050565b612dca816127a9565b8114612dd4575f5ffd5b50565b5f81519050612de581612dc1565b92915050565b5f60208284031215612e0057612dff6126da565b5b5f612e0d84828501612dd7565b91505092915050565b7f74726164696e6720697320616c7265616479206f70656e0000000000000000005f82015250565b5f612e4a601783612654565b9150612e5582612e16565b602082019050919050565b5f6020820190508181035f830152612e7781612e3e565b9050919050565b5f81519050612e8c8161270e565b92915050565b5f60208284031215612ea757612ea66126da565b5b5f612eb484828501612e7e565b91505092915050565b5f604082019050612ed05f830185612919565b612edd6020830184612919565b9392505050565b5f60c082019050612ef75f830189612919565b612f0460208301886127dc565b612f116040830187612a45565b612f1e6060830186612a45565b612f2b6080830185612919565b612f3860a08301846127dc565b979650505050505050565b5f5f5f60608486031215612f5a57612f596126da565b5b5f612f6786828701612ce2565b9350506020612f7886828701612ce2565b9250506040612f8986828701612ce2565b9150509250925092565b7f436f6e74726163742062616c616e6365206d75737420626520677265617465725f8201527f207468616e207a65726f00000000000000000000000000000000000000000000602082015250565b5f612fed602a83612654565b9150612ff882612f93565b604082019050919050565b5f6020820190508181035f83015261301a81612fe1565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f61307b602483612654565b915061308682613021565b604082019050919050565b5f6020820190508181035f8301526130a88161306f565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f613109602283612654565b9150613114826130af565b604082019050919050565b5f6020820190508181035f830152613136816130fd565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f613197602583612654565b91506131a28261313d565b604082019050919050565b5f6020820190508181035f8301526131c48161318b565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f613225602383612654565b9150613230826131cb565b604082019050919050565b5f6020820190508181035f83015261325281613219565b9050919050565b7f5472616e7366657220616d6f756e74206d7573742062652067726561746572205f8201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b5f6132b3602983612654565b91506132be82613259565b604082019050919050565b5f6020820190508181035f8301526132e0816132a7565b9050919050565b7f4578636565647320746865205f6d61785478416d6f756e742e000000000000005f82015250565b5f61331b601983612654565b9150613326826132e7565b602082019050919050565b5f6020820190508181035f8301526133488161330f565b9050919050565b5f61335982612738565b915061336483612738565b925082820190508082111561337c5761337b612a6d565b5b92915050565b7f4578636565647320746865206d617857616c6c657453697a652e0000000000005f82015250565b5f6133b6601a83612654565b91506133c182613382565b602082019050919050565b5f6020820190508181035f8301526133e3816133aa565b9050919050565b5f6133f482612738565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361342657613425612a6d565b5b600182019050919050565b7f4f6e6c7920332073656c6c732070657220626c6f636b210000000000000000005f82015250565b5f613465601783612654565b915061347082613431565b602082019050919050565b5f6020820190508181035f83015261349281613459565b9050919050565b5f6134a382612738565b91506134ae83612738565b92508282039050818111156134c6576134c5612a6d565b5b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b613558816126fd565b82525050565b5f613569838361354f565b60208301905092915050565b5f602082019050919050565b5f61358b82613526565b6135958185613530565b93506135a083613540565b805f5b838110156135d05781516135b7888261355e565b97506135c283613575565b9250506001810190506135a3565b5085935050505092915050565b5f60a0820190506135f05f8301886127dc565b6135fd6020830187612a45565b818103604083015261360f8186613581565b905061361e6060830185612919565b61362b60808301846127dc565b9695505050505050565b5f81905092915050565b50565b5f61364d5f83613635565b91506136588261363f565b5f82019050919050565b5f61366c82613642565b9150819050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f6136ad82612738565b91506136b883612738565b9250826136c8576136c7613676565b5b828204905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f5f8201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b5f61372d602183612654565b9150613738826136d3565b604082019050919050565b5f6020820190508181035f83015261375a81613721565b9050919050565b7f536166654d6174683a206164646974696f6e206f766572666c6f7700000000005f82015250565b5f613795601b83612654565b91506137a082613761565b602082019050919050565b5f6020820190508181035f8301526137c281613789565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a264697066735822122075c8052bb9c2f4d2fe4d4e5d814d677ee87df6a3e211ef9c16bf8818177e6e3764736f6c634300081c0033

Deployed Bytecode

0x608060405260043610610143575f3560e01c806374c9f603116100b5578063a9059cbb1161006e578063a9059cbb1461040e578063bf474bed1461044a578063c9567bf914610474578063dd62ed3e1461048a578063ec1f3f63146104c6578063f4293890146104ee5761014a565b806374c9f6031461030257806377b54bad1461032a5780637d1db4a5146103665780638da5cb5b146103905780638f9a55c0146103ba57806395d89b41146103e45761014a565b806323b872dd1161010757806323b872dd1461021e578063313ce5671461025a57806351bc3c8514610284578063622565891461029a57806370a08231146102b0578063715018a6146102ec5761014a565b806306fdde031461014e578063095ea7b3146101785780630faee56f146101b4578063109daa99146101de57806318160ddd146101f45761014a565b3661014a57005b5f5ffd5b348015610159575f5ffd5b50610162610504565b60405161016f91906126ba565b60405180910390f35b348015610183575f5ffd5b5061019e6004803603810190610199919061276b565b610541565b6040516101ab91906127c3565b60405180910390f35b3480156101bf575f5ffd5b506101c861055e565b6040516101d591906127eb565b60405180910390f35b3480156101e9575f5ffd5b506101f2610564565b005b3480156101ff575f5ffd5b50610208610639565b60405161021591906127eb565b60405180910390f35b348015610229575f5ffd5b50610244600480360381019061023f9190612804565b61065c565b60405161025191906127c3565b60405180910390f35b348015610265575f5ffd5b5061026e610730565b60405161027b919061286f565b60405180910390f35b34801561028f575f5ffd5b50610298610738565b005b3480156102a5575f5ffd5b506102ae6107cf565b005b3480156102bb575f5ffd5b506102d660048036038101906102d19190612888565b6108ff565b6040516102e391906127eb565b60405180910390f35b3480156102f7575f5ffd5b50610300610945565b005b34801561030d575f5ffd5b50610328600480360381019061032391906128ee565b610a95565b005b348015610335575f5ffd5b50610350600480360381019061034b919061276b565b610bdb565b60405161035d91906127c3565b60405180910390f35b348015610371575f5ffd5b5061037a610d9a565b60405161038791906127eb565b60405180910390f35b34801561039b575f5ffd5b506103a4610da0565b6040516103b19190612928565b60405180910390f35b3480156103c5575f5ffd5b506103ce610dc7565b6040516103db91906127eb565b60405180910390f35b3480156103ef575f5ffd5b506103f8610dcd565b60405161040591906126ba565b60405180910390f35b348015610419575f5ffd5b50610434600480360381019061042f919061276b565b610e0a565b60405161044191906127c3565b60405180910390f35b348015610455575f5ffd5b5061045e610e27565b60405161046b91906127eb565b60405180910390f35b34801561047f575f5ffd5b50610488610e2d565b005b348015610495575f5ffd5b506104b060048036038101906104ab9190612941565b611357565b6040516104bd91906127eb565b60405180910390f35b3480156104d1575f5ffd5b506104ec60048036038101906104e7919061297f565b6113d9565b005b3480156104f9575f5ffd5b50610502611465565b005b60606040518060400160405280600e81526020017f5465655f4865655f48655f322e30000000000000000000000000000000000000815250905090565b5f61055461054d611516565b848461151d565b6001905092915050565b60135481565b61056c611516565b73ffffffffffffffffffffffffffffffffffffffff165f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146105f9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105f0906129f4565b60405180910390fd5b5f600e819055507fe9b79e1a6c2dc43b4c0c6ff01ce9e3332d810e482270f464c0a21ad6c5fc6de35f60405161062f9190612a54565b60405180910390a1565b5f6009600a6106489190612bc9565b633b9aca006106579190612c13565b905090565b5f6106688484846116e0565b61072584610674611516565b610720856040518060600160405280602881526020016137ca6028913960025f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6106d7611516565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054611fc29092919063ffffffff16565b61151d565b600190509392505050565b5f6009905090565b60045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610778611516565b73ffffffffffffffffffffffffffffffffffffffff1614610797575f5ffd5b5f6107a1306108ff565b90505f8111156107b5576107b481612024565b5b5f4790505f8111156107cb576107ca8161228d565b5b5050565b6107d7611516565b73ffffffffffffffffffffffffffffffffffffffff165f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610864576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161085b906129f4565b60405180910390fd5b6009600a6108729190612bc9565b633b9aca006108819190612c13565b6010819055506009600a6108959190612bc9565b633b9aca006108a49190612c13565b6011819055507f947f344d56e1e8c70dc492fb94c4ddddd490c016aab685f5e7e47b2e85cb44cf6009600a6108d99190612bc9565b633b9aca006108e89190612c13565b6040516108f591906127eb565b60405180910390a1565b5f60015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b61094d611516565b73ffffffffffffffffffffffffffffffffffffffff165f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146109da576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109d1906129f4565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff165f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f5f5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b610a9d611516565b73ffffffffffffffffffffffffffffffffffffffff165f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b2a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b21906129f4565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610b98576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b8f90612cc4565b60405180910390fd5b8060045f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b5f60045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610c1c611516565b73ffffffffffffffffffffffffffffffffffffffff1614610c3b575f5ffd5b5f8203610cbd578273ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401610c7b9190612928565b602060405180830381865afa158015610c96573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610cba9190612cf6565b91505b7fda2bc2bedd1f85b5a59d5dbbd6684ff877ef916994a16ec08813101e99ace65f8383604051610cee929190612d21565b60405180910390a18273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb60045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846040518363ffffffff1660e01b8152600401610d52929190612d9a565b6020604051808303815f875af1158015610d6e573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610d929190612deb565b905092915050565b60105481565b5f5f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60115481565b60606040518060400160405280600681526020017f544545322e300000000000000000000000000000000000000000000000000000815250905090565b5f610e1d610e16611516565b84846116e0565b6001905092915050565b60125481565b610e35611516565b73ffffffffffffffffffffffffffffffffffffffff165f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ec2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610eb9906129f4565b60405180910390fd5b601560149054906101000a900460ff1615610f12576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f0990612e60565b60405180910390fd5b737a250d5630b4cf539739df2c5dacb4c659f2488d60145f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550610fae3060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166009600a610f9a9190612bc9565b633b9aca00610fa99190612c13565b61151d565b60145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015611018573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061103c9190612e92565b73ffffffffffffffffffffffffffffffffffffffff1663c9c653963060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156110c2573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110e69190612e92565b6040518363ffffffff1660e01b8152600401611103929190612ebd565b6020604051808303815f875af115801561111f573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906111439190612e92565b60155f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71947306111ca306108ff565b5f5f6111d4610da0565b426040518863ffffffff1660e01b81526004016111f696959493929190612ee4565b60606040518083038185885af1158015611212573d5f5f3e3d5ffd5b50505050506040513d601f19601f820116820180604052508101906112379190612f43565b50505060155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b360145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b81526004016112d7929190612d21565b6020604051808303815f875af11580156112f3573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906113179190612deb565b506001601560166101000a81548160ff0219169083151502179055506001601560146101000a81548160ff02191690831515021790555043601881905550565b5f60025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b60045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16611419611516565b73ffffffffffffffffffffffffffffffffffffffff1614611438575f5ffd5b600954811115801561144c5750600a548111155b611454575f5ffd5b8060098190555080600a8190555050565b60045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166114a5611516565b73ffffffffffffffffffffffffffffffffffffffff16146114c4575f5ffd5b5f4790505f811161150a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161150190613003565b60405180910390fd5b6115138161228d565b50565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361158b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161158290613091565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036115f9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115f09061311f565b60405180910390fd5b8060025f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516116d391906127eb565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361174e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611745906131ad565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036117bc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117b39061323b565b60405180910390fd5b5f81116117fe576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117f5906132c9565b60405180910390fd5b5f5f905061180a610da0565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141580156118785750611848610da0565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611d12575f600f54036118c5576118c260646118b4600b54600f54116118a1576007546118a5565b6009545b8561246b90919063ffffffff16565b6124e290919063ffffffff16565b90505b5f600f5411156118fa576118f760646118e9600e548561246b90919063ffffffff16565b6124e290919063ffffffff16565b90505b60155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480156119a3575060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b80156119f6575060035f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15611aee57601054821115611a40576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a3790613331565b60405180910390fd5b60115482611a4d856108ff565b611a57919061334f565b1115611a98576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a8f906133cc565b60405180910390fd5b611ad46064611ac6600b54600f5411611ab357600754611ab7565b6009545b8561246b90919063ffffffff16565b6124e290919063ffffffff16565b9050600f5f815480929190611ae8906133ea565b91905055505b60155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148015611b7657503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b15611bba57611bb76064611ba9600c54600f5411611b9657600854611b9a565b600a545b8561246b90919063ffffffff16565b6124e290919063ffffffff16565b90505b5f611bc4306108ff565b905060158054906101000a900460ff16158015611c2d575060155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16145b8015611c455750601560169054906101000a900460ff165b8015611c52575060125481115b8015611c615750600d54600f54115b15611d1057601754431115611c78575f6016819055505b600360165410611cbd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cb49061347b565b60405180910390fd5b611cda611cd584611cd08460135461252b565b61252b565b612024565b5f4790505f811115611cf057611cef4761228d565b5b60165f815480929190611d02906133ea565b919050555043601781905550505b505b5f811115611e1157611d6a8160015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461254390919063ffffffff16565b60015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611e0891906127eb565b60405180910390a35b611e618260015f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546125a090919063ffffffff16565b60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550611f04611eb882846125a090919063ffffffff16565b60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461254390919063ffffffff16565b60015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef611fa784866125a090919063ffffffff16565b604051611fb491906127eb565b60405180910390a350505050565b5f838311158290612009576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161200091906126ba565b60405180910390fd5b505f83856120179190613499565b9050809150509392505050565b60016015806101000a81548160ff0219169083151502179055505f600267ffffffffffffffff81111561205a576120596134cc565b5b6040519080825280602002602001820160405280156120885781602001602082028036833780820191505090505b50905030815f8151811061209f5761209e6134f9565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612143573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906121679190612e92565b8160018151811061217b5761217a6134f9565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506121e13060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff168461151d565b60145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b81526004016122439594939291906135dd565b5f604051808303815f87803b15801561225a575f5ffd5b505af115801561226c573d5f5f3e3d5ffd5b50505050505f6015806101000a81548160ff02191690831515021790555050565b5f60065403612325575f60045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16826040516122dc90613662565b5f6040518083038185875af1925050503d805f8114612316576040519150601f19603f3d011682016040523d82523d5f602084013e61231b565b606091505b5050905050612468565b5f6064600654836123369190612c13565b61234091906136a3565b90505f818361234f9190613499565b90505f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168360405161239790613662565b5f6040518083038185875af1925050503d805f81146123d1576040519150601f19603f3d011682016040523d82523d5f602084013e6123d6565b606091505b505090505f60045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168360405161242090613662565b5f6040518083038185875af1925050503d805f811461245a576040519150601f19603f3d011682016040523d82523d5f602084013e61245f565b606091505b50509050505050505b50565b5f5f830361247b575f90506124dc565b5f82846124889190612c13565b905082848261249791906136a3565b146124d7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124ce90613743565b60405180910390fd5b809150505b92915050565b5f61252383836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506125e9565b905092915050565b5f818311612539578261253b565b815b905092915050565b5f5f8284612551919061334f565b905083811015612596576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161258d906137ab565b60405180910390fd5b8091505092915050565b5f6125e183836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611fc2565b905092915050565b5f5f8311829061262f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161262691906126ba565b60405180910390fd5b505f838561263d91906136a3565b9050809150509392505050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f61268c8261264a565b6126968185612654565b93506126a6818560208601612664565b6126af81612672565b840191505092915050565b5f6020820190508181035f8301526126d28184612682565b905092915050565b5f5ffd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f612707826126de565b9050919050565b612717816126fd565b8114612721575f5ffd5b50565b5f813590506127328161270e565b92915050565b5f819050919050565b61274a81612738565b8114612754575f5ffd5b50565b5f8135905061276581612741565b92915050565b5f5f60408385031215612781576127806126da565b5b5f61278e85828601612724565b925050602061279f85828601612757565b9150509250929050565b5f8115159050919050565b6127bd816127a9565b82525050565b5f6020820190506127d65f8301846127b4565b92915050565b6127e581612738565b82525050565b5f6020820190506127fe5f8301846127dc565b92915050565b5f5f5f6060848603121561281b5761281a6126da565b5b5f61282886828701612724565b935050602061283986828701612724565b925050604061284a86828701612757565b9150509250925092565b5f60ff82169050919050565b61286981612854565b82525050565b5f6020820190506128825f830184612860565b92915050565b5f6020828403121561289d5761289c6126da565b5b5f6128aa84828501612724565b91505092915050565b5f6128bd826126de565b9050919050565b6128cd816128b3565b81146128d7575f5ffd5b50565b5f813590506128e8816128c4565b92915050565b5f60208284031215612903576129026126da565b5b5f612910848285016128da565b91505092915050565b612922816126fd565b82525050565b5f60208201905061293b5f830184612919565b92915050565b5f5f60408385031215612957576129566126da565b5b5f61296485828601612724565b925050602061297585828601612724565b9150509250929050565b5f60208284031215612994576129936126da565b5b5f6129a184828501612757565b91505092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f6129de602083612654565b91506129e9826129aa565b602082019050919050565b5f6020820190508181035f830152612a0b816129d2565b9050919050565b5f819050919050565b5f819050919050565b5f612a3e612a39612a3484612a12565b612a1b565b612738565b9050919050565b612a4e81612a24565b82525050565b5f602082019050612a675f830184612a45565b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f5f8291508390505b6001851115612aef57808604811115612acb57612aca612a6d565b5b6001851615612ada5780820291505b8081029050612ae885612a9a565b9450612aaf565b94509492505050565b5f82612b075760019050612bc2565b81612b14575f9050612bc2565b8160018114612b2a5760028114612b3457612b63565b6001915050612bc2565b60ff841115612b4657612b45612a6d565b5b8360020a915084821115612b5d57612b5c612a6d565b5b50612bc2565b5060208310610133831016604e8410600b8410161715612b985782820a905083811115612b9357612b92612a6d565b5b612bc2565b612ba58484846001612aa6565b92509050818404811115612bbc57612bbb612a6d565b5b81810290505b9392505050565b5f612bd382612738565b9150612bde83612854565b9250612c0b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484612af8565b905092915050565b5f612c1d82612738565b9150612c2883612738565b9250828202612c3681612738565b91508282048414831517612c4d57612c4c612a6d565b5b5092915050565b7f4e6577207461782077616c6c65742063616e6e6f7420626520746865207a65725f8201527f6f20616464726573730000000000000000000000000000000000000000000000602082015250565b5f612cae602983612654565b9150612cb982612c54565b604082019050919050565b5f6020820190508181035f830152612cdb81612ca2565b9050919050565b5f81519050612cf081612741565b92915050565b5f60208284031215612d0b57612d0a6126da565b5b5f612d1884828501612ce2565b91505092915050565b5f604082019050612d345f830185612919565b612d4160208301846127dc565b9392505050565b5f612d62612d5d612d58846126de565b612a1b565b6126de565b9050919050565b5f612d7382612d48565b9050919050565b5f612d8482612d69565b9050919050565b612d9481612d7a565b82525050565b5f604082019050612dad5f830185612d8b565b612dba60208301846127dc565b9392505050565b612dca816127a9565b8114612dd4575f5ffd5b50565b5f81519050612de581612dc1565b92915050565b5f60208284031215612e0057612dff6126da565b5b5f612e0d84828501612dd7565b91505092915050565b7f74726164696e6720697320616c7265616479206f70656e0000000000000000005f82015250565b5f612e4a601783612654565b9150612e5582612e16565b602082019050919050565b5f6020820190508181035f830152612e7781612e3e565b9050919050565b5f81519050612e8c8161270e565b92915050565b5f60208284031215612ea757612ea66126da565b5b5f612eb484828501612e7e565b91505092915050565b5f604082019050612ed05f830185612919565b612edd6020830184612919565b9392505050565b5f60c082019050612ef75f830189612919565b612f0460208301886127dc565b612f116040830187612a45565b612f1e6060830186612a45565b612f2b6080830185612919565b612f3860a08301846127dc565b979650505050505050565b5f5f5f60608486031215612f5a57612f596126da565b5b5f612f6786828701612ce2565b9350506020612f7886828701612ce2565b9250506040612f8986828701612ce2565b9150509250925092565b7f436f6e74726163742062616c616e6365206d75737420626520677265617465725f8201527f207468616e207a65726f00000000000000000000000000000000000000000000602082015250565b5f612fed602a83612654565b9150612ff882612f93565b604082019050919050565b5f6020820190508181035f83015261301a81612fe1565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f61307b602483612654565b915061308682613021565b604082019050919050565b5f6020820190508181035f8301526130a88161306f565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f613109602283612654565b9150613114826130af565b604082019050919050565b5f6020820190508181035f830152613136816130fd565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f613197602583612654565b91506131a28261313d565b604082019050919050565b5f6020820190508181035f8301526131c48161318b565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f613225602383612654565b9150613230826131cb565b604082019050919050565b5f6020820190508181035f83015261325281613219565b9050919050565b7f5472616e7366657220616d6f756e74206d7573742062652067726561746572205f8201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b5f6132b3602983612654565b91506132be82613259565b604082019050919050565b5f6020820190508181035f8301526132e0816132a7565b9050919050565b7f4578636565647320746865205f6d61785478416d6f756e742e000000000000005f82015250565b5f61331b601983612654565b9150613326826132e7565b602082019050919050565b5f6020820190508181035f8301526133488161330f565b9050919050565b5f61335982612738565b915061336483612738565b925082820190508082111561337c5761337b612a6d565b5b92915050565b7f4578636565647320746865206d617857616c6c657453697a652e0000000000005f82015250565b5f6133b6601a83612654565b91506133c182613382565b602082019050919050565b5f6020820190508181035f8301526133e3816133aa565b9050919050565b5f6133f482612738565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361342657613425612a6d565b5b600182019050919050565b7f4f6e6c7920332073656c6c732070657220626c6f636b210000000000000000005f82015250565b5f613465601783612654565b915061347082613431565b602082019050919050565b5f6020820190508181035f83015261349281613459565b9050919050565b5f6134a382612738565b91506134ae83612738565b92508282039050818111156134c6576134c5612a6d565b5b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b613558816126fd565b82525050565b5f613569838361354f565b60208301905092915050565b5f602082019050919050565b5f61358b82613526565b6135958185613530565b93506135a083613540565b805f5b838110156135d05781516135b7888261355e565b97506135c283613575565b9250506001810190506135a3565b5085935050505092915050565b5f60a0820190506135f05f8301886127dc565b6135fd6020830187612a45565b818103604083015261360f8186613581565b905061361e6060830185612919565b61362b60808301846127dc565b9695505050505050565b5f81905092915050565b50565b5f61364d5f83613635565b91506136588261363f565b5f82019050919050565b5f61366c82613642565b9150819050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f6136ad82612738565b91506136b883612738565b9250826136c8576136c7613676565b5b828204905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f5f8201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b5f61372d602183612654565b9150613738826136d3565b604082019050919050565b5f6020820190508181035f83015261375a81613721565b9050919050565b7f536166654d6174683a206164646974696f6e206f766572666c6f7700000000005f82015250565b5f613795601b83612654565b91506137a082613761565b602082019050919050565b5f6020820190508181035f8301526137c281613789565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a264697066735822122075c8052bb9c2f4d2fe4d4e5d814d677ee87df6a3e211ef9c16bf8818177e6e3764736f6c634300081c0033

Deployed Bytecode Sourcemap

3692:10166:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6194:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7027:161;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4855:50;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11069:118;;;;;;;;;;;;;:::i;:::-;;6471:95;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7196:313;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6380:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13515:340;;;;;;;;;;;;;:::i;:::-;;10903:158;;;;;;;;;;;;;:::i;:::-;;6574:119;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2773:148;;;;;;;;;;;;;:::i;:::-;;13036:209;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12655:373;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4679:50;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2559:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4736:52;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6285:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6701:167;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4795:53;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11661:709;;;;;;;;;;;;;:::i;:::-;;6876:143;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12419:228;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13253:254;;;;;;;;;;;;;:::i;:::-;;6194:83;6231:13;6264:5;;;;;;;;;;;;;;;;;6257:12;;6194:83;:::o;7027:161::-;7102:4;7119:39;7128:12;:10;:12::i;:::-;7142:7;7151:6;7119:8;:39::i;:::-;7176:4;7169:11;;7027:161;;;;:::o;4855:50::-;;;;:::o;11069:118::-;2696:12;:10;:12::i;:::-;2686:22;;:6;;;;;;;;;;;:22;;;2678:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;11141:1:::1;11127:12;:15;;;;11158:21;11177:1;11158:21;;;;;;:::i;:::-;;;;;;;;11069:118::o:0;6471:95::-;6524:7;4485:1;4541:2;:13;;;;:::i;:::-;4528:10;:26;;;;:::i;:::-;6544:14;;6471:95;:::o;7196:313::-;7294:4;7311:36;7321:6;7329:9;7340:6;7311:9;:36::i;:::-;7358:121;7367:6;7375:12;:10;:12::i;:::-;7389:89;7427:6;7389:89;;;;;;;;;;;;;;;;;:11;:19;7401:6;7389:19;;;;;;;;;;;;;;;:33;7409:12;:10;:12::i;:::-;7389:33;;;;;;;;;;;;;;;;:37;;:89;;;;;:::i;:::-;7358:8;:121::i;:::-;7497:4;7490:11;;7196:313;;;;;:::o;6380:83::-;6421:5;4485:1;6439:16;;6380:83;:::o;13515:340::-;13581:10;;;;;;;;;;;13565:26;;:12;:10;:12::i;:::-;:26;;;13557:35;;;;;;13605:20;13628:24;13646:4;13628:9;:24::i;:::-;13605:47;;13681:1;13666:12;:16;13663:75;;;13696:30;13713:12;13696:16;:30::i;:::-;13663:75;13750:18;13771:21;13750:42;;13817:1;13806:10;:12;13803:45;;;13821:24;13834:10;13821:12;:24::i;:::-;13803:45;13546:309;;13515:340::o;10903:158::-;2696:12;:10;:12::i;:::-;2686:22;;:6;;;;;;;;;;;:22;;;2678:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;4485:1:::1;4541:2;:13;;;;:::i;:::-;4528:10;:26;;;;:::i;:::-;10955:12;:21;;;;4485:1;4541:2;:13;;;;:::i;:::-;4528:10;:26;;;;:::i;:::-;10987:14;:23;;;;11026:27;4485:1;4541:2;:13;;;;:::i;:::-;4528:10;:26;;;;:::i;:::-;11026:27;;;;;;:::i;:::-;;;;;;;;10903:158::o:0;6574:119::-;6640:7;6667:9;:18;6677:7;6667:18;;;;;;;;;;;;;;;;6660:25;;6574:119;;;:::o;2773:148::-;2696:12;:10;:12::i;:::-;2686:22;;:6;;;;;;;;;;;:22;;;2678:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;2880:1:::1;2843:40;;2864:6;;;;;;;;;;;2843:40;;;;;;;;;;;;2911:1;2894:6;;:19;;;;;;;;;;;;;;;;;;2773:148::o:0;13036:209::-;2696:12;:10;:12::i;:::-;2686:22;;:6;;;;;;;;;;;:22;;;2678:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;13153:1:::1;13129:26;;:12;:26;;::::0;13121:80:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;13225:12;13212:10;;:25;;;;;;;;;;;;;;;;;;13036:209:::0;:::o;12655:373::-;12736:12;12785:10;;;;;;;;;;;12769:26;;:12;:10;:12::i;:::-;:26;;;12761:35;;;;;;12822:1;12812:6;:11;12809:96;;12855:12;12848:30;;;12887:4;12848:45;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12839:54;;12809:96;12922:31;12933:12;12946:6;12922:31;;;;;;;:::i;:::-;;;;;;;;12978:12;12971:29;;;13001:10;;;;;;;;;;;13013:6;12971:49;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12964:56;;12655:373;;;;:::o;4679:50::-;;;;:::o;2559:79::-;2597:7;2624:6;;;;;;;;;;;2617:13;;2559:79;:::o;4736:52::-;;;;:::o;6285:87::-;6324:13;6357:7;;;;;;;;;;;;;;;;;6350:14;;6285:87;:::o;6701:167::-;6779:4;6796:42;6806:12;:10;:12::i;:::-;6820:9;6831:6;6796:9;:42::i;:::-;6856:4;6849:11;;6701:167;;;;:::o;4795:53::-;;;;:::o;11661:709::-;2696:12;:10;:12::i;:::-;2686:22;;:6;;;;;;;;;;;:22;;;2678:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;11725:11:::1;;;;;;;;;;;11724:12;11716:47;;;;;;;;;;;;:::i;:::-;;;;;;;;;11811:42;11774:15;;:80;;;;;;;;;;;;;;;;;;11865:58;11882:4;11897:15;;;;;;;;;;;4485:1;4541:2;:13;;;;:::i;:::-;4528:10;:26;;;;:::i;:::-;11865:8;:58::i;:::-;11968:15;;;;;;;;;;;:23;;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11950:55;;;12014:4;12021:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11950:94;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11934:13;;:110;;;;;;;;;;;;;;;;;;12055:15;;;;;;;;;;;:31;;;12094:21;12125:4;12132:24;12150:4;12132:9;:24::i;:::-;12158:1;12161;12164:7;:5;:7::i;:::-;12173:15;12055:134;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;12207:13;;;;;;;;;;;12200:29;;;12238:15;;;;;;;;;;;12256:14;12200:71;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;12295:4;12282:11;;:17;;;;;;;;;;;;;;;;;;12323:4;12310:11;;:17;;;;;;;;;;;;;;;;;;12350:12;12338:10;:24;;;;11661:709::o:0;6876:143::-;6957:7;6984:11;:18;6996:5;6984:18;;;;;;;;;;;;;;;:27;7003:7;6984:27;;;;;;;;;;;;;;;;6977:34;;6876:143;;;;:::o;12419:228::-;12496:10;;;;;;;;;;;12480:26;;:12;:10;:12::i;:::-;:26;;;12472:35;;;;;;12535:12;;12524:7;:23;;:51;;;;;12562:13;;12551:7;:24;;12524:51;12516:60;;;;;;12601:7;12587:12;:21;;;;12632:7;12617:13;:22;;;;12419:228;:::o;13253:254::-;13319:10;;;;;;;;;;;13303:26;;:12;:10;:12::i;:::-;:26;;;13295:35;;;;;;13343:18;13363:21;13343:41;;13416:1;13403:10;:14;13395:69;;;;;;;;;;;;:::i;:::-;;;;;;;;;13475:24;13488:10;13475:12;:24::i;:::-;13284:223;13253:254::o;314:98::-;367:7;394:10;387:17;;314:98;:::o;7517:335::-;7627:1;7610:19;;:5;:19;;;7602:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;7708:1;7689:21;;:7;:21;;;7681:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;7790:6;7760:11;:18;7772:5;7760:18;;;;;;;;;;;;;;;:27;7779:7;7760:27;;;;;;;;;;;;;;;:36;;;;7828:7;7812:32;;7821:5;7812:32;;;7837:6;7812:32;;;;;;:::i;:::-;;;;;;;;7517:335;;;:::o;7860:2432::-;7964:1;7948:18;;:4;:18;;;7940:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;8041:1;8027:16;;:2;:16;;;8019:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;8111:1;8102:6;:10;8094:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;8169:17;8189:1;8169:21;;8213:7;:5;:7::i;:::-;8205:15;;:4;:15;;;;:32;;;;;8230:7;:5;:7::i;:::-;8224:13;;:2;:13;;;;8205:32;8201:1726;;;8272:1;8259:9;;:14;8256:147;;8305:82;8383:3;8305:73;8329:15;;8317:9;;:27;8316:61;;8363:14;;8316:61;;;8348:12;;8316:61;8305:6;:10;;:73;;;;:::i;:::-;:77;;:82;;;;:::i;:::-;8293:94;;8256:147;8434:1;8422:9;;:13;8419:96;;;8466:33;8495:3;8466:24;8477:12;;8466:6;:10;;:24;;;;:::i;:::-;:28;;:33;;;;:::i;:::-;8455:44;;8419:96;8543:13;;;;;;;;;;;8535:21;;:4;:21;;;:55;;;;;8574:15;;;;;;;;;;;8560:30;;:2;:30;;;;8535:55;:83;;;;;8596:18;:22;8615:2;8596:22;;;;;;;;;;;;;;;;;;;;;;;;;8594:24;8535:83;8531:426;;;8658:12;;8648:6;:22;;8640:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;8753:14;;8743:6;8727:13;8737:2;8727:9;:13::i;:::-;:22;;;;:::i;:::-;:40;;8719:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;8829:82;8907:3;8829:73;8853:15;;8841:9;;:27;8840:61;;8887:14;;8840:61;;;8872:12;;8840:61;8829:6;:10;;:73;;;;:::i;:::-;:77;;:82;;;;:::i;:::-;8817:94;;8930:9;;:11;;;;;;;;;:::i;:::-;;;;;;8531:426;8982:13;;;;;;;;;;;8976:19;;:2;:19;;;:44;;;;;9015:4;8999:21;;:4;:21;;;;8976:44;8973:181;;;9053:85;9134:3;9053:76;9077:16;;9065:9;;:28;9064:64;;9113:15;;9064:64;;;9097:13;;9064:64;9053:6;:10;;:76;;;;:::i;:::-;:80;;:85;;;;:::i;:::-;9041:97;;8973:181;9170:28;9201:24;9219:4;9201:9;:24::i;:::-;9170:55;;9245:6;;;;;;;;;;9244:7;:30;;;;;9261:13;;;;;;;;;;;9255:19;;:2;:19;;;9244:30;:45;;;;;9278:11;;;;;;;;;;;9244:45;:89;;;;;9316:17;;9293:20;:40;9244:89;:123;;;;;9349:18;;9337:9;;:30;9244:123;9240:676;;;9405:13;;9392:12;:26;9388:88;;;9455:1;9443:9;:13;;;;9388:88;9514:1;9502:9;;:13;9494:49;;;;;;;;;;;;:::i;:::-;;;;;;;;;9564:67;9581:49;9585:6;9592:37;9596:20;9617:11;;9592:3;:37::i;:::-;9581:3;:49::i;:::-;9564:16;:67::i;:::-;9650:26;9679:21;9650:50;;9742:1;9723:18;:20;9719:104;;;9768:35;9781:21;9768:12;:35::i;:::-;9719:104;9843:9;;:11;;;;;;;;;:::i;:::-;;;;;;9888:12;9873:13;:27;;;;9369:547;9240:676;8239:1688;8201:1726;9954:1;9942:9;:13;9939:166;;;9996:39;10025:9;9996;:24;10014:4;9996:24;;;;;;;;;;;;;;;;:28;;:39;;;;:::i;:::-;9969:9;:24;9987:4;9969:24;;;;;;;;;;;;;;;:66;;;;10076:4;10053:40;;10062:4;10053:40;;;10083:9;10053:40;;;;;;:::i;:::-;;;;;;;;9939:166;10134:27;10154:6;10134:9;:15;10144:4;10134:15;;;;;;;;;;;;;;;;:19;;:27;;;;:::i;:::-;10117:9;:15;10127:4;10117:15;;;;;;;;;;;;;;;:44;;;;10187:40;10205:21;10216:9;10205:6;:10;;:21;;;;:::i;:::-;10187:9;:13;10197:2;10187:13;;;;;;;;;;;;;;;;:17;;:40;;;;:::i;:::-;10172:9;:13;10182:2;10172:13;;;;;;;;;;;;;;;:55;;;;10258:2;10243:41;;10252:4;10243:41;;;10262:21;10273:9;10262:6;:10;;:21;;;;:::i;:::-;10243:41;;;;;;:::i;:::-;;;;;;;;7929:2363;7860:2432;;;:::o;1451:190::-;1537:7;1570:1;1565;:6;;1573:12;1557:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;1597:9;1613:1;1609;:5;;;;:::i;:::-;1597:17;;1632:1;1625:8;;;1451:190;;;;;:::o;10412:483::-;5416:4;5407:6;;:13;;;;;;;;;;;;;;;;;;10490:21:::1;10528:1;10514:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10490:40;;10559:4;10541;10546:1;10541:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;10585:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10575:4;10580:1;10575:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;::::0;::::1;10618:62;10635:4;10650:15;;;;;;;;;;;10668:11;10618:8;:62::i;:::-;10691:15;;;;;;;;;;;:66;;;10772:11;10798:1;10814:4;10841;10861:15;10691:196;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10479:416;5452:5:::0;5443:6;;:14;;;;;;;;;;;;;;;;;;10412:483;:::o;11193:459::-;11265:1;11250:11;;:16;11246:401;;11278:12;11295:10;;;;;;;;;;;:15;;11318:6;11295:34;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11277:52;;;11268:85;11246:401;;;11368:17;11411:3;11397:11;;11388:6;:20;;;;:::i;:::-;:26;;;;:::i;:::-;11368:46;;11423:23;11458:9;11449:6;:18;;;;:::i;:::-;11423:44;;11477:15;11497:10;;;;;;;;;;;:15;;11520:9;11497:37;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11476:58;;;11563:12;11580:10;;;;;;;;;;;:15;;11603;11580:43;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11562:61;;;11359:288;;;;11246:401;11193:459;:::o;1649:246::-;1707:7;1736:1;1731;:6;1727:47;;1761:1;1754:8;;;;1727:47;1784:9;1800:1;1796;:5;;;;:::i;:::-;1784:17;;1829:1;1824;1820;:5;;;;:::i;:::-;:10;1812:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;1886:1;1879:8;;;1649:246;;;;;:::o;1903:132::-;1961:7;1988:39;1992:1;1995;1988:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;1981:46;;1903:132;;;;:::o;10302:102::-;10359:7;10386:1;10384;:3;10383:13;;10395:1;10383:13;;;10391:1;10383:13;10376:20;;10302:102;;;;:::o;1120:179::-;1178:7;1198:9;1214:1;1210;:5;;;;:::i;:::-;1198:17;;1239:1;1234;:6;;1226:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;1290:1;1283:8;;;1120:179;;;;:::o;1307:136::-;1365:7;1392:43;1396:1;1399;1392:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;1385:50;;1307:136;;;;:::o;2043:189::-;2129:7;2161:1;2157;:5;2164:12;2149:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;2188:9;2204:1;2200;:5;;;;:::i;:::-;2188:17;;2223:1;2216:8;;;2043:189;;;;;:::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:139::-;376:6;371:3;366;360:23;417:1;408:6;403:3;399:16;392:27;287:139;;;:::o;432:102::-;473:6;524:2;520:7;515:2;508:5;504:14;500:28;490:38;;432:102;;;:::o;540:377::-;628:3;656:39;689:5;656:39;:::i;:::-;711:71;775:6;770:3;711:71;:::i;:::-;704:78;;791:65;849:6;844:3;837:4;830:5;826:16;791:65;:::i;:::-;881:29;903:6;881:29;:::i;:::-;876:3;872:39;865:46;;632:285;540:377;;;;:::o;923:313::-;1036:4;1074:2;1063:9;1059:18;1051:26;;1123:9;1117:4;1113:20;1109:1;1098:9;1094:17;1087:47;1151:78;1224:4;1215:6;1151:78;:::i;:::-;1143:86;;923:313;;;;:::o;1323:117::-;1432:1;1429;1422:12;1569:126;1606:7;1646:42;1639:5;1635:54;1624:65;;1569:126;;;:::o;1701:96::-;1738:7;1767:24;1785:5;1767:24;:::i;:::-;1756:35;;1701:96;;;:::o;1803:122::-;1876:24;1894:5;1876:24;:::i;:::-;1869:5;1866:35;1856:63;;1915:1;1912;1905:12;1856:63;1803:122;:::o;1931:139::-;1977:5;2015:6;2002:20;1993:29;;2031:33;2058:5;2031:33;:::i;:::-;1931:139;;;;:::o;2076:77::-;2113:7;2142:5;2131:16;;2076:77;;;:::o;2159:122::-;2232:24;2250:5;2232:24;:::i;:::-;2225:5;2222:35;2212:63;;2271:1;2268;2261:12;2212:63;2159:122;:::o;2287:139::-;2333:5;2371:6;2358:20;2349:29;;2387:33;2414:5;2387:33;:::i;:::-;2287:139;;;;:::o;2432:474::-;2500:6;2508;2557:2;2545:9;2536:7;2532:23;2528:32;2525:119;;;2563:79;;:::i;:::-;2525:119;2683:1;2708:53;2753:7;2744:6;2733:9;2729:22;2708:53;:::i;:::-;2698:63;;2654:117;2810:2;2836:53;2881:7;2872:6;2861:9;2857:22;2836:53;:::i;:::-;2826:63;;2781:118;2432:474;;;;;:::o;2912:90::-;2946:7;2989:5;2982:13;2975:21;2964:32;;2912:90;;;:::o;3008:109::-;3089:21;3104:5;3089:21;:::i;:::-;3084:3;3077:34;3008:109;;:::o;3123:210::-;3210:4;3248:2;3237:9;3233:18;3225:26;;3261:65;3323:1;3312:9;3308:17;3299:6;3261:65;:::i;:::-;3123:210;;;;:::o;3339:118::-;3426:24;3444:5;3426:24;:::i;:::-;3421:3;3414:37;3339:118;;:::o;3463:222::-;3556:4;3594:2;3583:9;3579:18;3571:26;;3607:71;3675:1;3664:9;3660:17;3651:6;3607:71;:::i;:::-;3463:222;;;;:::o;3691:619::-;3768:6;3776;3784;3833:2;3821:9;3812:7;3808:23;3804:32;3801:119;;;3839:79;;:::i;:::-;3801:119;3959:1;3984:53;4029:7;4020:6;4009:9;4005:22;3984:53;:::i;:::-;3974:63;;3930:117;4086:2;4112:53;4157:7;4148:6;4137:9;4133:22;4112:53;:::i;:::-;4102:63;;4057:118;4214:2;4240:53;4285:7;4276:6;4265:9;4261:22;4240:53;:::i;:::-;4230:63;;4185:118;3691:619;;;;;:::o;4316:86::-;4351:7;4391:4;4384:5;4380:16;4369:27;;4316:86;;;:::o;4408:112::-;4491:22;4507:5;4491:22;:::i;:::-;4486:3;4479:35;4408:112;;:::o;4526:214::-;4615:4;4653:2;4642:9;4638:18;4630:26;;4666:67;4730:1;4719:9;4715:17;4706:6;4666:67;:::i;:::-;4526:214;;;;:::o;4746:329::-;4805:6;4854:2;4842:9;4833:7;4829:23;4825:32;4822:119;;;4860:79;;:::i;:::-;4822:119;4980:1;5005:53;5050:7;5041:6;5030:9;5026:22;5005:53;:::i;:::-;4995:63;;4951:117;4746:329;;;;:::o;5081:104::-;5126:7;5155:24;5173:5;5155:24;:::i;:::-;5144:35;;5081:104;;;:::o;5191:138::-;5272:32;5298:5;5272:32;:::i;:::-;5265:5;5262:43;5252:71;;5319:1;5316;5309:12;5252:71;5191:138;:::o;5335:155::-;5389:5;5427:6;5414:20;5405:29;;5443:41;5478:5;5443:41;:::i;:::-;5335:155;;;;:::o;5496:345::-;5563:6;5612:2;5600:9;5591:7;5587:23;5583:32;5580:119;;;5618:79;;:::i;:::-;5580:119;5738:1;5763:61;5816:7;5807:6;5796:9;5792:22;5763:61;:::i;:::-;5753:71;;5709:125;5496:345;;;;:::o;5847:118::-;5934:24;5952:5;5934:24;:::i;:::-;5929:3;5922:37;5847:118;;:::o;5971:222::-;6064:4;6102:2;6091:9;6087:18;6079:26;;6115:71;6183:1;6172:9;6168:17;6159:6;6115:71;:::i;:::-;5971:222;;;;:::o;6199:474::-;6267:6;6275;6324:2;6312:9;6303:7;6299:23;6295:32;6292:119;;;6330:79;;:::i;:::-;6292:119;6450:1;6475:53;6520:7;6511:6;6500:9;6496:22;6475:53;:::i;:::-;6465:63;;6421:117;6577:2;6603:53;6648:7;6639:6;6628:9;6624:22;6603:53;:::i;:::-;6593:63;;6548:118;6199:474;;;;;:::o;6679:329::-;6738:6;6787:2;6775:9;6766:7;6762:23;6758:32;6755:119;;;6793:79;;:::i;:::-;6755:119;6913:1;6938:53;6983:7;6974:6;6963:9;6959:22;6938:53;:::i;:::-;6928:63;;6884:117;6679:329;;;;:::o;7014:182::-;7154:34;7150:1;7142:6;7138:14;7131:58;7014:182;:::o;7202:366::-;7344:3;7365:67;7429:2;7424:3;7365:67;:::i;:::-;7358:74;;7441:93;7530:3;7441:93;:::i;:::-;7559:2;7554:3;7550:12;7543:19;;7202:366;;;:::o;7574:419::-;7740:4;7778:2;7767:9;7763:18;7755:26;;7827:9;7821:4;7817:20;7813:1;7802:9;7798:17;7791:47;7855:131;7981:4;7855:131;:::i;:::-;7847:139;;7574:419;;;:::o;7999:85::-;8044:7;8073:5;8062:16;;7999:85;;;:::o;8090:60::-;8118:3;8139:5;8132:12;;8090:60;;;:::o;8156:158::-;8214:9;8247:61;8265:42;8274:32;8300:5;8274:32;:::i;:::-;8265:42;:::i;:::-;8247:61;:::i;:::-;8234:74;;8156:158;;;:::o;8320:147::-;8415:45;8454:5;8415:45;:::i;:::-;8410:3;8403:58;8320:147;;:::o;8473:238::-;8574:4;8612:2;8601:9;8597:18;8589:26;;8625:79;8701:1;8690:9;8686:17;8677:6;8625:79;:::i;:::-;8473:238;;;;:::o;8717:180::-;8765:77;8762:1;8755:88;8862:4;8859:1;8852:15;8886:4;8883:1;8876:15;8903:102;8945:8;8992:5;8989:1;8985:13;8964:34;;8903:102;;;:::o;9011:848::-;9072:5;9079:4;9103:6;9094:15;;9127:5;9118:14;;9141:712;9162:1;9152:8;9149:15;9141:712;;;9257:4;9252:3;9248:14;9242:4;9239:24;9236:50;;;9266:18;;:::i;:::-;9236:50;9316:1;9306:8;9302:16;9299:451;;;9731:4;9724:5;9720:16;9711:25;;9299:451;9781:4;9775;9771:15;9763:23;;9811:32;9834:8;9811:32;:::i;:::-;9799:44;;9141:712;;;9011:848;;;;;;;:::o;9865:1073::-;9919:5;10110:8;10100:40;;10131:1;10122:10;;10133:5;;10100:40;10159:4;10149:36;;10176:1;10167:10;;10178:5;;10149:36;10245:4;10293:1;10288:27;;;;10329:1;10324:191;;;;10238:277;;10288:27;10306:1;10297:10;;10308:5;;;10324:191;10369:3;10359:8;10356:17;10353:43;;;10376:18;;:::i;:::-;10353:43;10425:8;10422:1;10418:16;10409:25;;10460:3;10453:5;10450:14;10447:40;;;10467:18;;:::i;:::-;10447:40;10500:5;;;10238:277;;10624:2;10614:8;10611:16;10605:3;10599:4;10596:13;10592:36;10574:2;10564:8;10561:16;10556:2;10550:4;10547:12;10543:35;10527:111;10524:246;;;10680:8;10674:4;10670:19;10661:28;;10715:3;10708:5;10705:14;10702:40;;;10722:18;;:::i;:::-;10702:40;10755:5;;10524:246;10795:42;10833:3;10823:8;10817:4;10814:1;10795:42;:::i;:::-;10780:57;;;;10869:4;10864:3;10860:14;10853:5;10850:25;10847:51;;;10878:18;;:::i;:::-;10847:51;10927:4;10920:5;10916:16;10907:25;;9865:1073;;;;;;:::o;10944:281::-;11002:5;11026:23;11044:4;11026:23;:::i;:::-;11018:31;;11070:25;11086:8;11070:25;:::i;:::-;11058:37;;11114:104;11151:66;11141:8;11135:4;11114:104;:::i;:::-;11105:113;;10944:281;;;;:::o;11231:410::-;11271:7;11294:20;11312:1;11294:20;:::i;:::-;11289:25;;11328:20;11346:1;11328:20;:::i;:::-;11323:25;;11383:1;11380;11376:9;11405:30;11423:11;11405:30;:::i;:::-;11394:41;;11584:1;11575:7;11571:15;11568:1;11565:22;11545:1;11538:9;11518:83;11495:139;;11614:18;;:::i;:::-;11495:139;11279:362;11231:410;;;;:::o;11647:228::-;11787:34;11783:1;11775:6;11771:14;11764:58;11856:11;11851:2;11843:6;11839:15;11832:36;11647:228;:::o;11881:366::-;12023:3;12044:67;12108:2;12103:3;12044:67;:::i;:::-;12037:74;;12120:93;12209:3;12120:93;:::i;:::-;12238:2;12233:3;12229:12;12222:19;;11881:366;;;:::o;12253:419::-;12419:4;12457:2;12446:9;12442:18;12434:26;;12506:9;12500:4;12496:20;12492:1;12481:9;12477:17;12470:47;12534:131;12660:4;12534:131;:::i;:::-;12526:139;;12253:419;;;:::o;12678:143::-;12735:5;12766:6;12760:13;12751:22;;12782:33;12809:5;12782:33;:::i;:::-;12678:143;;;;:::o;12827:351::-;12897:6;12946:2;12934:9;12925:7;12921:23;12917:32;12914:119;;;12952:79;;:::i;:::-;12914:119;13072:1;13097:64;13153:7;13144:6;13133:9;13129:22;13097:64;:::i;:::-;13087:74;;13043:128;12827:351;;;;:::o;13184:332::-;13305:4;13343:2;13332:9;13328:18;13320:26;;13356:71;13424:1;13413:9;13409:17;13400:6;13356:71;:::i;:::-;13437:72;13505:2;13494:9;13490:18;13481:6;13437:72;:::i;:::-;13184:332;;;;;:::o;13522:142::-;13572:9;13605:53;13623:34;13632:24;13650:5;13632:24;:::i;:::-;13623:34;:::i;:::-;13605:53;:::i;:::-;13592:66;;13522:142;;;:::o;13670:126::-;13720:9;13753:37;13784:5;13753:37;:::i;:::-;13740:50;;13670:126;;;:::o;13802:134::-;13860:9;13893:37;13924:5;13893:37;:::i;:::-;13880:50;;13802:134;;;:::o;13942:147::-;14037:45;14076:5;14037:45;:::i;:::-;14032:3;14025:58;13942:147;;:::o;14095:348::-;14224:4;14262:2;14251:9;14247:18;14239:26;;14275:79;14351:1;14340:9;14336:17;14327:6;14275:79;:::i;:::-;14364:72;14432:2;14421:9;14417:18;14408:6;14364:72;:::i;:::-;14095:348;;;;;:::o;14449:116::-;14519:21;14534:5;14519:21;:::i;:::-;14512:5;14509:32;14499:60;;14555:1;14552;14545:12;14499:60;14449:116;:::o;14571:137::-;14625:5;14656:6;14650:13;14641:22;;14672:30;14696:5;14672:30;:::i;:::-;14571:137;;;;:::o;14714:345::-;14781:6;14830:2;14818:9;14809:7;14805:23;14801:32;14798:119;;;14836:79;;:::i;:::-;14798:119;14956:1;14981:61;15034:7;15025:6;15014:9;15010:22;14981:61;:::i;:::-;14971:71;;14927:125;14714:345;;;;:::o;15065:173::-;15205:25;15201:1;15193:6;15189:14;15182:49;15065:173;:::o;15244:366::-;15386:3;15407:67;15471:2;15466:3;15407:67;:::i;:::-;15400:74;;15483:93;15572:3;15483:93;:::i;:::-;15601:2;15596:3;15592:12;15585:19;;15244:366;;;:::o;15616:419::-;15782:4;15820:2;15809:9;15805:18;15797:26;;15869:9;15863:4;15859:20;15855:1;15844:9;15840:17;15833:47;15897:131;16023:4;15897:131;:::i;:::-;15889:139;;15616:419;;;:::o;16041:143::-;16098:5;16129:6;16123:13;16114:22;;16145:33;16172:5;16145:33;:::i;:::-;16041:143;;;;:::o;16190:351::-;16260:6;16309:2;16297:9;16288:7;16284:23;16280:32;16277:119;;;16315:79;;:::i;:::-;16277:119;16435:1;16460:64;16516:7;16507:6;16496:9;16492:22;16460:64;:::i;:::-;16450:74;;16406:128;16190:351;;;;:::o;16547:332::-;16668:4;16706:2;16695:9;16691:18;16683:26;;16719:71;16787:1;16776:9;16772:17;16763:6;16719:71;:::i;:::-;16800:72;16868:2;16857:9;16853:18;16844:6;16800:72;:::i;:::-;16547:332;;;;;:::o;16885:807::-;17134:4;17172:3;17161:9;17157:19;17149:27;;17186:71;17254:1;17243:9;17239:17;17230:6;17186:71;:::i;:::-;17267:72;17335:2;17324:9;17320:18;17311:6;17267:72;:::i;:::-;17349:80;17425:2;17414:9;17410:18;17401:6;17349:80;:::i;:::-;17439;17515:2;17504:9;17500:18;17491:6;17439:80;:::i;:::-;17529:73;17597:3;17586:9;17582:19;17573:6;17529:73;:::i;:::-;17612;17680:3;17669:9;17665:19;17656:6;17612:73;:::i;:::-;16885:807;;;;;;;;;:::o;17698:663::-;17786:6;17794;17802;17851:2;17839:9;17830:7;17826:23;17822:32;17819:119;;;17857:79;;:::i;:::-;17819:119;17977:1;18002:64;18058:7;18049:6;18038:9;18034:22;18002:64;:::i;:::-;17992:74;;17948:128;18115:2;18141:64;18197:7;18188:6;18177:9;18173:22;18141:64;:::i;:::-;18131:74;;18086:129;18254:2;18280:64;18336:7;18327:6;18316:9;18312:22;18280:64;:::i;:::-;18270:74;;18225:129;17698:663;;;;;:::o;18367:229::-;18507:34;18503:1;18495:6;18491:14;18484:58;18576:12;18571:2;18563:6;18559:15;18552:37;18367:229;:::o;18602:366::-;18744:3;18765:67;18829:2;18824:3;18765:67;:::i;:::-;18758:74;;18841:93;18930:3;18841:93;:::i;:::-;18959:2;18954:3;18950:12;18943:19;;18602:366;;;:::o;18974:419::-;19140:4;19178:2;19167:9;19163:18;19155:26;;19227:9;19221:4;19217:20;19213:1;19202:9;19198:17;19191:47;19255:131;19381:4;19255:131;:::i;:::-;19247:139;;18974:419;;;:::o;19399:223::-;19539:34;19535:1;19527:6;19523:14;19516:58;19608:6;19603:2;19595:6;19591:15;19584:31;19399:223;:::o;19628:366::-;19770:3;19791:67;19855:2;19850:3;19791:67;:::i;:::-;19784:74;;19867:93;19956:3;19867:93;:::i;:::-;19985:2;19980:3;19976:12;19969:19;;19628:366;;;:::o;20000:419::-;20166:4;20204:2;20193:9;20189:18;20181:26;;20253:9;20247:4;20243:20;20239:1;20228:9;20224:17;20217:47;20281:131;20407:4;20281:131;:::i;:::-;20273:139;;20000:419;;;:::o;20425:221::-;20565:34;20561:1;20553:6;20549:14;20542:58;20634:4;20629:2;20621:6;20617:15;20610:29;20425:221;:::o;20652:366::-;20794:3;20815:67;20879:2;20874:3;20815:67;:::i;:::-;20808:74;;20891:93;20980:3;20891:93;:::i;:::-;21009:2;21004:3;21000:12;20993:19;;20652:366;;;:::o;21024:419::-;21190:4;21228:2;21217:9;21213:18;21205:26;;21277:9;21271:4;21267:20;21263:1;21252:9;21248:17;21241:47;21305:131;21431:4;21305:131;:::i;:::-;21297:139;;21024:419;;;:::o;21449:224::-;21589:34;21585:1;21577:6;21573:14;21566:58;21658:7;21653:2;21645:6;21641:15;21634:32;21449:224;:::o;21679:366::-;21821:3;21842:67;21906:2;21901:3;21842:67;:::i;:::-;21835:74;;21918:93;22007:3;21918:93;:::i;:::-;22036:2;22031:3;22027:12;22020:19;;21679:366;;;:::o;22051:419::-;22217:4;22255:2;22244:9;22240:18;22232:26;;22304:9;22298:4;22294:20;22290:1;22279:9;22275:17;22268:47;22332:131;22458:4;22332:131;:::i;:::-;22324:139;;22051:419;;;:::o;22476:222::-;22616:34;22612:1;22604:6;22600:14;22593:58;22685:5;22680:2;22672:6;22668:15;22661:30;22476:222;:::o;22704:366::-;22846:3;22867:67;22931:2;22926:3;22867:67;:::i;:::-;22860:74;;22943:93;23032:3;22943:93;:::i;:::-;23061:2;23056:3;23052:12;23045:19;;22704:366;;;:::o;23076:419::-;23242:4;23280:2;23269:9;23265:18;23257:26;;23329:9;23323:4;23319:20;23315:1;23304:9;23300:17;23293:47;23357:131;23483:4;23357:131;:::i;:::-;23349:139;;23076:419;;;:::o;23501:228::-;23641:34;23637:1;23629:6;23625:14;23618:58;23710:11;23705:2;23697:6;23693:15;23686:36;23501:228;:::o;23735:366::-;23877:3;23898:67;23962:2;23957:3;23898:67;:::i;:::-;23891:74;;23974:93;24063:3;23974:93;:::i;:::-;24092:2;24087:3;24083:12;24076:19;;23735:366;;;:::o;24107:419::-;24273:4;24311:2;24300:9;24296:18;24288:26;;24360:9;24354:4;24350:20;24346:1;24335:9;24331:17;24324:47;24388:131;24514:4;24388:131;:::i;:::-;24380:139;;24107:419;;;:::o;24532:175::-;24672:27;24668:1;24660:6;24656:14;24649:51;24532:175;:::o;24713:366::-;24855:3;24876:67;24940:2;24935:3;24876:67;:::i;:::-;24869:74;;24952:93;25041:3;24952:93;:::i;:::-;25070:2;25065:3;25061:12;25054:19;;24713:366;;;:::o;25085:419::-;25251:4;25289:2;25278:9;25274:18;25266:26;;25338:9;25332:4;25328:20;25324:1;25313:9;25309:17;25302:47;25366:131;25492:4;25366:131;:::i;:::-;25358:139;;25085:419;;;:::o;25510:191::-;25550:3;25569:20;25587:1;25569:20;:::i;:::-;25564:25;;25603:20;25621:1;25603:20;:::i;:::-;25598:25;;25646:1;25643;25639:9;25632:16;;25667:3;25664:1;25661:10;25658:36;;;25674:18;;:::i;:::-;25658:36;25510:191;;;;:::o;25707:176::-;25847:28;25843:1;25835:6;25831:14;25824:52;25707:176;:::o;25889:366::-;26031:3;26052:67;26116:2;26111:3;26052:67;:::i;:::-;26045:74;;26128:93;26217:3;26128:93;:::i;:::-;26246:2;26241:3;26237:12;26230:19;;25889:366;;;:::o;26261:419::-;26427:4;26465:2;26454:9;26450:18;26442:26;;26514:9;26508:4;26504:20;26500:1;26489:9;26485:17;26478:47;26542:131;26668:4;26542:131;:::i;:::-;26534:139;;26261:419;;;:::o;26686:233::-;26725:3;26748:24;26766:5;26748:24;:::i;:::-;26739:33;;26794:66;26787:5;26784:77;26781:103;;26864:18;;:::i;:::-;26781:103;26911:1;26904:5;26900:13;26893:20;;26686:233;;;:::o;26925:173::-;27065:25;27061:1;27053:6;27049:14;27042:49;26925:173;:::o;27104:366::-;27246:3;27267:67;27331:2;27326:3;27267:67;:::i;:::-;27260:74;;27343:93;27432:3;27343:93;:::i;:::-;27461:2;27456:3;27452:12;27445:19;;27104:366;;;:::o;27476:419::-;27642:4;27680:2;27669:9;27665:18;27657:26;;27729:9;27723:4;27719:20;27715:1;27704:9;27700:17;27693:47;27757:131;27883:4;27757:131;:::i;:::-;27749:139;;27476:419;;;:::o;27901:194::-;27941:4;27961:20;27979:1;27961:20;:::i;:::-;27956:25;;27995:20;28013:1;27995:20;:::i;:::-;27990:25;;28039:1;28036;28032:9;28024:17;;28063:1;28057:4;28054:11;28051:37;;;28068:18;;:::i;:::-;28051:37;27901:194;;;;:::o;28101:180::-;28149:77;28146:1;28139:88;28246:4;28243:1;28236:15;28270:4;28267:1;28260:15;28287:180;28335:77;28332:1;28325:88;28432:4;28429:1;28422:15;28456:4;28453:1;28446:15;28473:114;28540:6;28574:5;28568:12;28558:22;;28473:114;;;:::o;28593:184::-;28692:11;28726:6;28721:3;28714:19;28766:4;28761:3;28757:14;28742:29;;28593:184;;;;:::o;28783:132::-;28850:4;28873:3;28865:11;;28903:4;28898:3;28894:14;28886:22;;28783:132;;;:::o;28921:108::-;28998:24;29016:5;28998:24;:::i;:::-;28993:3;28986:37;28921:108;;:::o;29035:179::-;29104:10;29125:46;29167:3;29159:6;29125:46;:::i;:::-;29203:4;29198:3;29194:14;29180:28;;29035:179;;;;:::o;29220:113::-;29290:4;29322;29317:3;29313:14;29305:22;;29220:113;;;:::o;29369:732::-;29488:3;29517:54;29565:5;29517:54;:::i;:::-;29587:86;29666:6;29661:3;29587:86;:::i;:::-;29580:93;;29697:56;29747:5;29697:56;:::i;:::-;29776:7;29807:1;29792:284;29817:6;29814:1;29811:13;29792:284;;;29893:6;29887:13;29920:63;29979:3;29964:13;29920:63;:::i;:::-;29913:70;;30006:60;30059:6;30006:60;:::i;:::-;29996:70;;29852:224;29839:1;29836;29832:9;29827:14;;29792:284;;;29796:14;30092:3;30085:10;;29493:608;;;29369:732;;;;:::o;30107:831::-;30370:4;30408:3;30397:9;30393:19;30385:27;;30422:71;30490:1;30479:9;30475:17;30466:6;30422:71;:::i;:::-;30503:80;30579:2;30568:9;30564:18;30555:6;30503:80;:::i;:::-;30630:9;30624:4;30620:20;30615:2;30604:9;30600:18;30593:48;30658:108;30761:4;30752:6;30658:108;:::i;:::-;30650:116;;30776:72;30844:2;30833:9;30829:18;30820:6;30776:72;:::i;:::-;30858:73;30926:3;30915:9;30911:19;30902:6;30858:73;:::i;:::-;30107:831;;;;;;;;:::o;30944:147::-;31045:11;31082:3;31067:18;;30944:147;;;;:::o;31097:114::-;;:::o;31217:398::-;31376:3;31397:83;31478:1;31473:3;31397:83;:::i;:::-;31390:90;;31489:93;31578:3;31489:93;:::i;:::-;31607:1;31602:3;31598:11;31591:18;;31217:398;;;:::o;31621:379::-;31805:3;31827:147;31970:3;31827:147;:::i;:::-;31820:154;;31991:3;31984:10;;31621:379;;;:::o;32006:180::-;32054:77;32051:1;32044:88;32151:4;32148:1;32141:15;32175:4;32172:1;32165:15;32192:185;32232:1;32249:20;32267:1;32249:20;:::i;:::-;32244:25;;32283:20;32301:1;32283:20;:::i;:::-;32278:25;;32322:1;32312:35;;32327:18;;:::i;:::-;32312:35;32369:1;32366;32362:9;32357:14;;32192:185;;;;:::o;32383:220::-;32523:34;32519:1;32511:6;32507:14;32500:58;32592:3;32587:2;32579:6;32575:15;32568:28;32383:220;:::o;32609:366::-;32751:3;32772:67;32836:2;32831:3;32772:67;:::i;:::-;32765:74;;32848:93;32937:3;32848:93;:::i;:::-;32966:2;32961:3;32957:12;32950:19;;32609:366;;;:::o;32981:419::-;33147:4;33185:2;33174:9;33170:18;33162:26;;33234:9;33228:4;33224:20;33220:1;33209:9;33205:17;33198:47;33262:131;33388:4;33262:131;:::i;:::-;33254:139;;32981:419;;;:::o;33406:177::-;33546:29;33542:1;33534:6;33530:14;33523:53;33406:177;:::o;33589:366::-;33731:3;33752:67;33816:2;33811:3;33752:67;:::i;:::-;33745:74;;33828:93;33917:3;33828:93;:::i;:::-;33946:2;33941:3;33937:12;33930:19;;33589:366;;;:::o;33961:419::-;34127:4;34165:2;34154:9;34150:18;34142:26;;34214:9;34208:4;34204:20;34200:1;34189:9;34185:17;34178:47;34242:131;34368:4;34242:131;:::i;:::-;34234:139;;33961:419;;;:::o

Swarm Source

ipfs://75c8052bb9c2f4d2fe4d4e5d814d677ee87df6a3e211ef9c16bf8818177e6e37
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.