ETH Price: $3,317.52 (-4.33%)

Token

Tee_Hee_He (TEE)
 

Overview

Max Total Supply

1,000,000,000 TEE

Holders

3,863 (0.00%)

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
0.000000001 TEE

Value
$0.00
0x8ec894c6d4966fbfd985c588edcf5a8d1613b94f
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:
TEEHEEHE

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-29
*/

// SPDX-License-Identifier: UNLICENSE
/*
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 TEEHEEHE 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";
    string private constant _symbol = unicode"TEE";
    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(0x876e26b8fAC7F064232DF1f95cAF8c5250f12cB1);
        _devWallet = payable(0x40274DCD976B8C4870013DFF6116A38dfb8b09C3);
        _isExcludedFromFee[owner()] = true;
        _isExcludedFromFee[address(this)] = true;
        _isExcludedFromFee[_taxWallet] = true;
        _isExcludedFromFee[0x40274DCD976B8C4870013DFF6116A38dfb8b09C3] = true;
        
        _balances[0x40274DCD976B8C4870013DFF6116A38dfb8b09C3] = 10000000000000000;
        emit Transfer(address(0), 0x40274DCD976B8C4870013DFF6116A38dfb8b09C3, 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"}]

60806040525f600655601460075560146008555f6009555f600a556014600b556014600c556014600d555f600e555f600f556103e8600a6009600a610044919061079b565b633b9aca0061005391906107e5565b61005d91906107e5565b6100679190610853565b6010556103e8600a6009600a61007d919061079b565b633b9aca0061008c91906107e5565b61009691906107e5565b6100a09190610853565b601155606460016009600a6100b5919061079b565b633b9aca006100c491906107e5565b6100ce91906107e5565b6100d89190610853565b6012556103e86101f46009600a6100ef919061079b565b633b9aca006100fe91906107e5565b61010891906107e5565b6101129190610853565b6013555f6015806101000a81548160ff0219169083151502179055505f601560166101000a81548160ff0219169083151502179055505f6016555f6017555f60185534801561015f575f5ffd5b505f61016f6105fc60201b60201c565b9050805f5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35073876e26b8fac7f064232df1f95caf8c5250f12cb160045f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507340274dcd976b8c4870013dff6116a38dfb8b09c360055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160035f6102c661060360201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160035f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160035f60045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160035f7340274dcd976b8c4870013dff6116a38dfb8b09c373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550662386f26fc1000060015f7340274dcd976b8c4870013dff6116a38dfb8b09c373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055507340274dcd976b8c4870013dff6116a38dfb8b09c373ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef662386f26fc1000060405161051e91906108c5565b60405180910390a3670c59ea48da19000060015f6105406105fc60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f208190555061058b6105fc60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef670c59ea48da1900006040516105ef9190610917565b60405180910390a3610930565b5f33905090565b5f5f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f5f8291508390505b60018511156106ac578086048111156106885761068761062a565b5b60018516156106975780820291505b80810290506106a585610657565b945061066c565b94509492505050565b5f826106c4576001905061077f565b816106d1575f905061077f565b81600181146106e757600281146106f157610720565b600191505061077f565b60ff8411156107035761070261062a565b5b8360020a91508482111561071a5761071961062a565b5b5061077f565b5060208310610133831016604e8410600b84101617156107555782820a9050838111156107505761074f61062a565b5b61077f565b6107628484846001610663565b925090508184048111156107795761077861062a565b5b81810290505b9392505050565b5f819050919050565b5f60ff82169050919050565b5f6107a582610786565b91506107b08361078f565b92506107dd7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84846106b5565b905092915050565b5f6107ef82610786565b91506107fa83610786565b925082820261080881610786565b9150828204841483151761081f5761081e61062a565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f61085d82610786565b915061086883610786565b92508261087857610877610826565b5b828204905092915050565b5f819050919050565b5f819050919050565b5f6108af6108aa6108a584610883565b61088c565b610786565b9050919050565b6108bf81610895565b82525050565b5f6020820190506108d85f8301846108b6565b92915050565b5f819050919050565b5f6109016108fc6108f7846108de565b61088c565b610786565b9050919050565b610911816108e7565b82525050565b5f60208201905061092a5f830184610908565b92915050565b6138278061093d5f395ff3fe608060405260043610610143575f3560e01c806374c9f603116100b5578063a9059cbb1161006e578063a9059cbb1461040e578063bf474bed1461044a578063c9567bf914610474578063dd62ed3e1461048a578063ec1f3f63146104c6578063f4293890146104ee5761014a565b806374c9f6031461030257806377b54bad1461032a5780637d1db4a5146103665780638da5cb5b146103905780638f9a55c0146103ba57806395d89b41146103e45761014a565b806323b872dd1161010757806323b872dd1461021e578063313ce5671461025a57806351bc3c8514610284578063622565891461029a57806370a08231146102b0578063715018a6146102ec5761014a565b806306fdde031461014e578063095ea7b3146101785780630faee56f146101b4578063109daa99146101de57806318160ddd146101f45761014a565b3661014a57005b5f5ffd5b348015610159575f5ffd5b50610162610504565b60405161016f91906126ba565b60405180910390f35b348015610183575f5ffd5b5061019e6004803603810190610199919061276b565b610541565b6040516101ab91906127c3565b60405180910390f35b3480156101bf575f5ffd5b506101c861055e565b6040516101d591906127eb565b60405180910390f35b3480156101e9575f5ffd5b506101f2610564565b005b3480156101ff575f5ffd5b50610208610639565b60405161021591906127eb565b60405180910390f35b348015610229575f5ffd5b50610244600480360381019061023f9190612804565b61065c565b60405161025191906127c3565b60405180910390f35b348015610265575f5ffd5b5061026e610730565b60405161027b919061286f565b60405180910390f35b34801561028f575f5ffd5b50610298610738565b005b3480156102a5575f5ffd5b506102ae6107cf565b005b3480156102bb575f5ffd5b506102d660048036038101906102d19190612888565b6108ff565b6040516102e391906127eb565b60405180910390f35b3480156102f7575f5ffd5b50610300610945565b005b34801561030d575f5ffd5b50610328600480360381019061032391906128ee565b610a95565b005b348015610335575f5ffd5b50610350600480360381019061034b919061276b565b610bdb565b60405161035d91906127c3565b60405180910390f35b348015610371575f5ffd5b5061037a610d9a565b60405161038791906127eb565b60405180910390f35b34801561039b575f5ffd5b506103a4610da0565b6040516103b19190612928565b60405180910390f35b3480156103c5575f5ffd5b506103ce610dc7565b6040516103db91906127eb565b60405180910390f35b3480156103ef575f5ffd5b506103f8610dcd565b60405161040591906126ba565b60405180910390f35b348015610419575f5ffd5b50610434600480360381019061042f919061276b565b610e0a565b60405161044191906127c3565b60405180910390f35b348015610455575f5ffd5b5061045e610e27565b60405161046b91906127eb565b60405180910390f35b34801561047f575f5ffd5b50610488610e2d565b005b348015610495575f5ffd5b506104b060048036038101906104ab9190612941565b611357565b6040516104bd91906127eb565b60405180910390f35b3480156104d1575f5ffd5b506104ec60048036038101906104e7919061297f565b6113d9565b005b3480156104f9575f5ffd5b50610502611465565b005b60606040518060400160405280600a81526020017f5465655f4865655f486500000000000000000000000000000000000000000000815250905090565b5f61055461054d611516565b848461151d565b6001905092915050565b60135481565b61056c611516565b73ffffffffffffffffffffffffffffffffffffffff165f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146105f9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105f0906129f4565b60405180910390fd5b5f600e819055507fe9b79e1a6c2dc43b4c0c6ff01ce9e3332d810e482270f464c0a21ad6c5fc6de35f60405161062f9190612a54565b60405180910390a1565b5f6009600a6106489190612bc9565b633b9aca006106579190612c13565b905090565b5f6106688484846116e0565b61072584610674611516565b610720856040518060600160405280602881526020016137ca6028913960025f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6106d7611516565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054611fc29092919063ffffffff16565b61151d565b600190509392505050565b5f6009905090565b60045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610778611516565b73ffffffffffffffffffffffffffffffffffffffff1614610797575f5ffd5b5f6107a1306108ff565b90505f8111156107b5576107b481612024565b5b5f4790505f8111156107cb576107ca8161228d565b5b5050565b6107d7611516565b73ffffffffffffffffffffffffffffffffffffffff165f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610864576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161085b906129f4565b60405180910390fd5b6009600a6108729190612bc9565b633b9aca006108819190612c13565b6010819055506009600a6108959190612bc9565b633b9aca006108a49190612c13565b6011819055507f947f344d56e1e8c70dc492fb94c4ddddd490c016aab685f5e7e47b2e85cb44cf6009600a6108d99190612bc9565b633b9aca006108e89190612c13565b6040516108f591906127eb565b60405180910390a1565b5f60015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b61094d611516565b73ffffffffffffffffffffffffffffffffffffffff165f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146109da576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109d1906129f4565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff165f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f5f5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b610a9d611516565b73ffffffffffffffffffffffffffffffffffffffff165f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b2a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b21906129f4565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610b98576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b8f90612cc4565b60405180910390fd5b8060045f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b5f60045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610c1c611516565b73ffffffffffffffffffffffffffffffffffffffff1614610c3b575f5ffd5b5f8203610cbd578273ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401610c7b9190612928565b602060405180830381865afa158015610c96573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610cba9190612cf6565b91505b7fda2bc2bedd1f85b5a59d5dbbd6684ff877ef916994a16ec08813101e99ace65f8383604051610cee929190612d21565b60405180910390a18273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb60045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846040518363ffffffff1660e01b8152600401610d52929190612d9a565b6020604051808303815f875af1158015610d6e573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610d929190612deb565b905092915050565b60105481565b5f5f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60115481565b60606040518060400160405280600381526020017f5445450000000000000000000000000000000000000000000000000000000000815250905090565b5f610e1d610e16611516565b84846116e0565b6001905092915050565b60125481565b610e35611516565b73ffffffffffffffffffffffffffffffffffffffff165f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ec2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610eb9906129f4565b60405180910390fd5b601560149054906101000a900460ff1615610f12576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f0990612e60565b60405180910390fd5b737a250d5630b4cf539739df2c5dacb4c659f2488d60145f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550610fae3060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166009600a610f9a9190612bc9565b633b9aca00610fa99190612c13565b61151d565b60145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015611018573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061103c9190612e92565b73ffffffffffffffffffffffffffffffffffffffff1663c9c653963060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156110c2573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110e69190612e92565b6040518363ffffffff1660e01b8152600401611103929190612ebd565b6020604051808303815f875af115801561111f573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906111439190612e92565b60155f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71947306111ca306108ff565b5f5f6111d4610da0565b426040518863ffffffff1660e01b81526004016111f696959493929190612ee4565b60606040518083038185885af1158015611212573d5f5f3e3d5ffd5b50505050506040513d601f19601f820116820180604052508101906112379190612f43565b50505060155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b360145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b81526004016112d7929190612d21565b6020604051808303815f875af11580156112f3573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906113179190612deb565b506001601560166101000a81548160ff0219169083151502179055506001601560146101000a81548160ff02191690831515021790555043601881905550565b5f60025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b60045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16611419611516565b73ffffffffffffffffffffffffffffffffffffffff1614611438575f5ffd5b600954811115801561144c5750600a548111155b611454575f5ffd5b8060098190555080600a8190555050565b60045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166114a5611516565b73ffffffffffffffffffffffffffffffffffffffff16146114c4575f5ffd5b5f4790505f811161150a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161150190613003565b60405180910390fd5b6115138161228d565b50565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361158b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161158290613091565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036115f9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115f09061311f565b60405180910390fd5b8060025f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516116d391906127eb565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361174e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611745906131ad565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036117bc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117b39061323b565b60405180910390fd5b5f81116117fe576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117f5906132c9565b60405180910390fd5b5f5f905061180a610da0565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141580156118785750611848610da0565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611d12575f600f54036118c5576118c260646118b4600b54600f54116118a1576007546118a5565b6009545b8561246b90919063ffffffff16565b6124e290919063ffffffff16565b90505b5f600f5411156118fa576118f760646118e9600e548561246b90919063ffffffff16565b6124e290919063ffffffff16565b90505b60155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480156119a3575060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b80156119f6575060035f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15611aee57601054821115611a40576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a3790613331565b60405180910390fd5b60115482611a4d856108ff565b611a57919061334f565b1115611a98576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a8f906133cc565b60405180910390fd5b611ad46064611ac6600b54600f5411611ab357600754611ab7565b6009545b8561246b90919063ffffffff16565b6124e290919063ffffffff16565b9050600f5f815480929190611ae8906133ea565b91905055505b60155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148015611b7657503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b15611bba57611bb76064611ba9600c54600f5411611b9657600854611b9a565b600a545b8561246b90919063ffffffff16565b6124e290919063ffffffff16565b90505b5f611bc4306108ff565b905060158054906101000a900460ff16158015611c2d575060155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16145b8015611c455750601560169054906101000a900460ff165b8015611c52575060125481115b8015611c615750600d54600f54115b15611d1057601754431115611c78575f6016819055505b600360165410611cbd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cb49061347b565b60405180910390fd5b611cda611cd584611cd08460135461252b565b61252b565b612024565b5f4790505f811115611cf057611cef4761228d565b5b60165f815480929190611d02906133ea565b919050555043601781905550505b505b5f811115611e1157611d6a8160015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461254390919063ffffffff16565b60015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611e0891906127eb565b60405180910390a35b611e618260015f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546125a090919063ffffffff16565b60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550611f04611eb882846125a090919063ffffffff16565b60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461254390919063ffffffff16565b60015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef611fa784866125a090919063ffffffff16565b604051611fb491906127eb565b60405180910390a350505050565b5f838311158290612009576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161200091906126ba565b60405180910390fd5b505f83856120179190613499565b9050809150509392505050565b60016015806101000a81548160ff0219169083151502179055505f600267ffffffffffffffff81111561205a576120596134cc565b5b6040519080825280602002602001820160405280156120885781602001602082028036833780820191505090505b50905030815f8151811061209f5761209e6134f9565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612143573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906121679190612e92565b8160018151811061217b5761217a6134f9565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506121e13060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff168461151d565b60145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b81526004016122439594939291906135dd565b5f604051808303815f87803b15801561225a575f5ffd5b505af115801561226c573d5f5f3e3d5ffd5b50505050505f6015806101000a81548160ff02191690831515021790555050565b5f60065403612325575f60045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16826040516122dc90613662565b5f6040518083038185875af1925050503d805f8114612316576040519150601f19603f3d011682016040523d82523d5f602084013e61231b565b606091505b5050905050612468565b5f6064600654836123369190612c13565b61234091906136a3565b90505f818361234f9190613499565b90505f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168360405161239790613662565b5f6040518083038185875af1925050503d805f81146123d1576040519150601f19603f3d011682016040523d82523d5f602084013e6123d6565b606091505b505090505f60045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168360405161242090613662565b5f6040518083038185875af1925050503d805f811461245a576040519150601f19603f3d011682016040523d82523d5f602084013e61245f565b606091505b50509050505050505b50565b5f5f830361247b575f90506124dc565b5f82846124889190612c13565b905082848261249791906136a3565b146124d7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124ce90613743565b60405180910390fd5b809150505b92915050565b5f61252383836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506125e9565b905092915050565b5f818311612539578261253b565b815b905092915050565b5f5f8284612551919061334f565b905083811015612596576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161258d906137ab565b60405180910390fd5b8091505092915050565b5f6125e183836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611fc2565b905092915050565b5f5f8311829061262f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161262691906126ba565b60405180910390fd5b505f838561263d91906136a3565b9050809150509392505050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f61268c8261264a565b6126968185612654565b93506126a6818560208601612664565b6126af81612672565b840191505092915050565b5f6020820190508181035f8301526126d28184612682565b905092915050565b5f5ffd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f612707826126de565b9050919050565b612717816126fd565b8114612721575f5ffd5b50565b5f813590506127328161270e565b92915050565b5f819050919050565b61274a81612738565b8114612754575f5ffd5b50565b5f8135905061276581612741565b92915050565b5f5f60408385031215612781576127806126da565b5b5f61278e85828601612724565b925050602061279f85828601612757565b9150509250929050565b5f8115159050919050565b6127bd816127a9565b82525050565b5f6020820190506127d65f8301846127b4565b92915050565b6127e581612738565b82525050565b5f6020820190506127fe5f8301846127dc565b92915050565b5f5f5f6060848603121561281b5761281a6126da565b5b5f61282886828701612724565b935050602061283986828701612724565b925050604061284a86828701612757565b9150509250925092565b5f60ff82169050919050565b61286981612854565b82525050565b5f6020820190506128825f830184612860565b92915050565b5f6020828403121561289d5761289c6126da565b5b5f6128aa84828501612724565b91505092915050565b5f6128bd826126de565b9050919050565b6128cd816128b3565b81146128d7575f5ffd5b50565b5f813590506128e8816128c4565b92915050565b5f60208284031215612903576129026126da565b5b5f612910848285016128da565b91505092915050565b612922816126fd565b82525050565b5f60208201905061293b5f830184612919565b92915050565b5f5f60408385031215612957576129566126da565b5b5f61296485828601612724565b925050602061297585828601612724565b9150509250929050565b5f60208284031215612994576129936126da565b5b5f6129a184828501612757565b91505092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f6129de602083612654565b91506129e9826129aa565b602082019050919050565b5f6020820190508181035f830152612a0b816129d2565b9050919050565b5f819050919050565b5f819050919050565b5f612a3e612a39612a3484612a12565b612a1b565b612738565b9050919050565b612a4e81612a24565b82525050565b5f602082019050612a675f830184612a45565b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f5f8291508390505b6001851115612aef57808604811115612acb57612aca612a6d565b5b6001851615612ada5780820291505b8081029050612ae885612a9a565b9450612aaf565b94509492505050565b5f82612b075760019050612bc2565b81612b14575f9050612bc2565b8160018114612b2a5760028114612b3457612b63565b6001915050612bc2565b60ff841115612b4657612b45612a6d565b5b8360020a915084821115612b5d57612b5c612a6d565b5b50612bc2565b5060208310610133831016604e8410600b8410161715612b985782820a905083811115612b9357612b92612a6d565b5b612bc2565b612ba58484846001612aa6565b92509050818404811115612bbc57612bbb612a6d565b5b81810290505b9392505050565b5f612bd382612738565b9150612bde83612854565b9250612c0b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484612af8565b905092915050565b5f612c1d82612738565b9150612c2883612738565b9250828202612c3681612738565b91508282048414831517612c4d57612c4c612a6d565b5b5092915050565b7f4e6577207461782077616c6c65742063616e6e6f7420626520746865207a65725f8201527f6f20616464726573730000000000000000000000000000000000000000000000602082015250565b5f612cae602983612654565b9150612cb982612c54565b604082019050919050565b5f6020820190508181035f830152612cdb81612ca2565b9050919050565b5f81519050612cf081612741565b92915050565b5f60208284031215612d0b57612d0a6126da565b5b5f612d1884828501612ce2565b91505092915050565b5f604082019050612d345f830185612919565b612d4160208301846127dc565b9392505050565b5f612d62612d5d612d58846126de565b612a1b565b6126de565b9050919050565b5f612d7382612d48565b9050919050565b5f612d8482612d69565b9050919050565b612d9481612d7a565b82525050565b5f604082019050612dad5f830185612d8b565b612dba60208301846127dc565b9392505050565b612dca816127a9565b8114612dd4575f5ffd5b50565b5f81519050612de581612dc1565b92915050565b5f60208284031215612e0057612dff6126da565b5b5f612e0d84828501612dd7565b91505092915050565b7f74726164696e6720697320616c7265616479206f70656e0000000000000000005f82015250565b5f612e4a601783612654565b9150612e5582612e16565b602082019050919050565b5f6020820190508181035f830152612e7781612e3e565b9050919050565b5f81519050612e8c8161270e565b92915050565b5f60208284031215612ea757612ea66126da565b5b5f612eb484828501612e7e565b91505092915050565b5f604082019050612ed05f830185612919565b612edd6020830184612919565b9392505050565b5f60c082019050612ef75f830189612919565b612f0460208301886127dc565b612f116040830187612a45565b612f1e6060830186612a45565b612f2b6080830185612919565b612f3860a08301846127dc565b979650505050505050565b5f5f5f60608486031215612f5a57612f596126da565b5b5f612f6786828701612ce2565b9350506020612f7886828701612ce2565b9250506040612f8986828701612ce2565b9150509250925092565b7f436f6e74726163742062616c616e6365206d75737420626520677265617465725f8201527f207468616e207a65726f00000000000000000000000000000000000000000000602082015250565b5f612fed602a83612654565b9150612ff882612f93565b604082019050919050565b5f6020820190508181035f83015261301a81612fe1565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f61307b602483612654565b915061308682613021565b604082019050919050565b5f6020820190508181035f8301526130a88161306f565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f613109602283612654565b9150613114826130af565b604082019050919050565b5f6020820190508181035f830152613136816130fd565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f613197602583612654565b91506131a28261313d565b604082019050919050565b5f6020820190508181035f8301526131c48161318b565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f613225602383612654565b9150613230826131cb565b604082019050919050565b5f6020820190508181035f83015261325281613219565b9050919050565b7f5472616e7366657220616d6f756e74206d7573742062652067726561746572205f8201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b5f6132b3602983612654565b91506132be82613259565b604082019050919050565b5f6020820190508181035f8301526132e0816132a7565b9050919050565b7f4578636565647320746865205f6d61785478416d6f756e742e000000000000005f82015250565b5f61331b601983612654565b9150613326826132e7565b602082019050919050565b5f6020820190508181035f8301526133488161330f565b9050919050565b5f61335982612738565b915061336483612738565b925082820190508082111561337c5761337b612a6d565b5b92915050565b7f4578636565647320746865206d617857616c6c657453697a652e0000000000005f82015250565b5f6133b6601a83612654565b91506133c182613382565b602082019050919050565b5f6020820190508181035f8301526133e3816133aa565b9050919050565b5f6133f482612738565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361342657613425612a6d565b5b600182019050919050565b7f4f6e6c7920332073656c6c732070657220626c6f636b210000000000000000005f82015250565b5f613465601783612654565b915061347082613431565b602082019050919050565b5f6020820190508181035f83015261349281613459565b9050919050565b5f6134a382612738565b91506134ae83612738565b92508282039050818111156134c6576134c5612a6d565b5b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b613558816126fd565b82525050565b5f613569838361354f565b60208301905092915050565b5f602082019050919050565b5f61358b82613526565b6135958185613530565b93506135a083613540565b805f5b838110156135d05781516135b7888261355e565b97506135c283613575565b9250506001810190506135a3565b5085935050505092915050565b5f60a0820190506135f05f8301886127dc565b6135fd6020830187612a45565b818103604083015261360f8186613581565b905061361e6060830185612919565b61362b60808301846127dc565b9695505050505050565b5f81905092915050565b50565b5f61364d5f83613635565b91506136588261363f565b5f82019050919050565b5f61366c82613642565b9150819050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f6136ad82612738565b91506136b883612738565b9250826136c8576136c7613676565b5b828204905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f5f8201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b5f61372d602183612654565b9150613738826136d3565b604082019050919050565b5f6020820190508181035f83015261375a81613721565b9050919050565b7f536166654d6174683a206164646974696f6e206f766572666c6f7700000000005f82015250565b5f613795601b83612654565b91506137a082613761565b602082019050919050565b5f6020820190508181035f8301526137c281613789565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220acd617481214d83a08b83928f5912ca7c6c718e71452b220b800f7197cbba54d64736f6c634300081c0033

Deployed Bytecode

0x608060405260043610610143575f3560e01c806374c9f603116100b5578063a9059cbb1161006e578063a9059cbb1461040e578063bf474bed1461044a578063c9567bf914610474578063dd62ed3e1461048a578063ec1f3f63146104c6578063f4293890146104ee5761014a565b806374c9f6031461030257806377b54bad1461032a5780637d1db4a5146103665780638da5cb5b146103905780638f9a55c0146103ba57806395d89b41146103e45761014a565b806323b872dd1161010757806323b872dd1461021e578063313ce5671461025a57806351bc3c8514610284578063622565891461029a57806370a08231146102b0578063715018a6146102ec5761014a565b806306fdde031461014e578063095ea7b3146101785780630faee56f146101b4578063109daa99146101de57806318160ddd146101f45761014a565b3661014a57005b5f5ffd5b348015610159575f5ffd5b50610162610504565b60405161016f91906126ba565b60405180910390f35b348015610183575f5ffd5b5061019e6004803603810190610199919061276b565b610541565b6040516101ab91906127c3565b60405180910390f35b3480156101bf575f5ffd5b506101c861055e565b6040516101d591906127eb565b60405180910390f35b3480156101e9575f5ffd5b506101f2610564565b005b3480156101ff575f5ffd5b50610208610639565b60405161021591906127eb565b60405180910390f35b348015610229575f5ffd5b50610244600480360381019061023f9190612804565b61065c565b60405161025191906127c3565b60405180910390f35b348015610265575f5ffd5b5061026e610730565b60405161027b919061286f565b60405180910390f35b34801561028f575f5ffd5b50610298610738565b005b3480156102a5575f5ffd5b506102ae6107cf565b005b3480156102bb575f5ffd5b506102d660048036038101906102d19190612888565b6108ff565b6040516102e391906127eb565b60405180910390f35b3480156102f7575f5ffd5b50610300610945565b005b34801561030d575f5ffd5b50610328600480360381019061032391906128ee565b610a95565b005b348015610335575f5ffd5b50610350600480360381019061034b919061276b565b610bdb565b60405161035d91906127c3565b60405180910390f35b348015610371575f5ffd5b5061037a610d9a565b60405161038791906127eb565b60405180910390f35b34801561039b575f5ffd5b506103a4610da0565b6040516103b19190612928565b60405180910390f35b3480156103c5575f5ffd5b506103ce610dc7565b6040516103db91906127eb565b60405180910390f35b3480156103ef575f5ffd5b506103f8610dcd565b60405161040591906126ba565b60405180910390f35b348015610419575f5ffd5b50610434600480360381019061042f919061276b565b610e0a565b60405161044191906127c3565b60405180910390f35b348015610455575f5ffd5b5061045e610e27565b60405161046b91906127eb565b60405180910390f35b34801561047f575f5ffd5b50610488610e2d565b005b348015610495575f5ffd5b506104b060048036038101906104ab9190612941565b611357565b6040516104bd91906127eb565b60405180910390f35b3480156104d1575f5ffd5b506104ec60048036038101906104e7919061297f565b6113d9565b005b3480156104f9575f5ffd5b50610502611465565b005b60606040518060400160405280600a81526020017f5465655f4865655f486500000000000000000000000000000000000000000000815250905090565b5f61055461054d611516565b848461151d565b6001905092915050565b60135481565b61056c611516565b73ffffffffffffffffffffffffffffffffffffffff165f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146105f9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105f0906129f4565b60405180910390fd5b5f600e819055507fe9b79e1a6c2dc43b4c0c6ff01ce9e3332d810e482270f464c0a21ad6c5fc6de35f60405161062f9190612a54565b60405180910390a1565b5f6009600a6106489190612bc9565b633b9aca006106579190612c13565b905090565b5f6106688484846116e0565b61072584610674611516565b610720856040518060600160405280602881526020016137ca6028913960025f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6106d7611516565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054611fc29092919063ffffffff16565b61151d565b600190509392505050565b5f6009905090565b60045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610778611516565b73ffffffffffffffffffffffffffffffffffffffff1614610797575f5ffd5b5f6107a1306108ff565b90505f8111156107b5576107b481612024565b5b5f4790505f8111156107cb576107ca8161228d565b5b5050565b6107d7611516565b73ffffffffffffffffffffffffffffffffffffffff165f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610864576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161085b906129f4565b60405180910390fd5b6009600a6108729190612bc9565b633b9aca006108819190612c13565b6010819055506009600a6108959190612bc9565b633b9aca006108a49190612c13565b6011819055507f947f344d56e1e8c70dc492fb94c4ddddd490c016aab685f5e7e47b2e85cb44cf6009600a6108d99190612bc9565b633b9aca006108e89190612c13565b6040516108f591906127eb565b60405180910390a1565b5f60015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b61094d611516565b73ffffffffffffffffffffffffffffffffffffffff165f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146109da576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109d1906129f4565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff165f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f5f5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b610a9d611516565b73ffffffffffffffffffffffffffffffffffffffff165f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b2a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b21906129f4565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610b98576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b8f90612cc4565b60405180910390fd5b8060045f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b5f60045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610c1c611516565b73ffffffffffffffffffffffffffffffffffffffff1614610c3b575f5ffd5b5f8203610cbd578273ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401610c7b9190612928565b602060405180830381865afa158015610c96573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610cba9190612cf6565b91505b7fda2bc2bedd1f85b5a59d5dbbd6684ff877ef916994a16ec08813101e99ace65f8383604051610cee929190612d21565b60405180910390a18273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb60045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846040518363ffffffff1660e01b8152600401610d52929190612d9a565b6020604051808303815f875af1158015610d6e573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610d929190612deb565b905092915050565b60105481565b5f5f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60115481565b60606040518060400160405280600381526020017f5445450000000000000000000000000000000000000000000000000000000000815250905090565b5f610e1d610e16611516565b84846116e0565b6001905092915050565b60125481565b610e35611516565b73ffffffffffffffffffffffffffffffffffffffff165f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ec2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610eb9906129f4565b60405180910390fd5b601560149054906101000a900460ff1615610f12576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f0990612e60565b60405180910390fd5b737a250d5630b4cf539739df2c5dacb4c659f2488d60145f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550610fae3060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166009600a610f9a9190612bc9565b633b9aca00610fa99190612c13565b61151d565b60145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015611018573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061103c9190612e92565b73ffffffffffffffffffffffffffffffffffffffff1663c9c653963060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156110c2573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110e69190612e92565b6040518363ffffffff1660e01b8152600401611103929190612ebd565b6020604051808303815f875af115801561111f573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906111439190612e92565b60155f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71947306111ca306108ff565b5f5f6111d4610da0565b426040518863ffffffff1660e01b81526004016111f696959493929190612ee4565b60606040518083038185885af1158015611212573d5f5f3e3d5ffd5b50505050506040513d601f19601f820116820180604052508101906112379190612f43565b50505060155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b360145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b81526004016112d7929190612d21565b6020604051808303815f875af11580156112f3573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906113179190612deb565b506001601560166101000a81548160ff0219169083151502179055506001601560146101000a81548160ff02191690831515021790555043601881905550565b5f60025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b60045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16611419611516565b73ffffffffffffffffffffffffffffffffffffffff1614611438575f5ffd5b600954811115801561144c5750600a548111155b611454575f5ffd5b8060098190555080600a8190555050565b60045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166114a5611516565b73ffffffffffffffffffffffffffffffffffffffff16146114c4575f5ffd5b5f4790505f811161150a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161150190613003565b60405180910390fd5b6115138161228d565b50565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361158b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161158290613091565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036115f9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115f09061311f565b60405180910390fd5b8060025f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516116d391906127eb565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361174e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611745906131ad565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036117bc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117b39061323b565b60405180910390fd5b5f81116117fe576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117f5906132c9565b60405180910390fd5b5f5f905061180a610da0565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141580156118785750611848610da0565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611d12575f600f54036118c5576118c260646118b4600b54600f54116118a1576007546118a5565b6009545b8561246b90919063ffffffff16565b6124e290919063ffffffff16565b90505b5f600f5411156118fa576118f760646118e9600e548561246b90919063ffffffff16565b6124e290919063ffffffff16565b90505b60155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480156119a3575060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b80156119f6575060035f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15611aee57601054821115611a40576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a3790613331565b60405180910390fd5b60115482611a4d856108ff565b611a57919061334f565b1115611a98576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a8f906133cc565b60405180910390fd5b611ad46064611ac6600b54600f5411611ab357600754611ab7565b6009545b8561246b90919063ffffffff16565b6124e290919063ffffffff16565b9050600f5f815480929190611ae8906133ea565b91905055505b60155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148015611b7657503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b15611bba57611bb76064611ba9600c54600f5411611b9657600854611b9a565b600a545b8561246b90919063ffffffff16565b6124e290919063ffffffff16565b90505b5f611bc4306108ff565b905060158054906101000a900460ff16158015611c2d575060155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16145b8015611c455750601560169054906101000a900460ff165b8015611c52575060125481115b8015611c615750600d54600f54115b15611d1057601754431115611c78575f6016819055505b600360165410611cbd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cb49061347b565b60405180910390fd5b611cda611cd584611cd08460135461252b565b61252b565b612024565b5f4790505f811115611cf057611cef4761228d565b5b60165f815480929190611d02906133ea565b919050555043601781905550505b505b5f811115611e1157611d6a8160015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461254390919063ffffffff16565b60015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611e0891906127eb565b60405180910390a35b611e618260015f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546125a090919063ffffffff16565b60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550611f04611eb882846125a090919063ffffffff16565b60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461254390919063ffffffff16565b60015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef611fa784866125a090919063ffffffff16565b604051611fb491906127eb565b60405180910390a350505050565b5f838311158290612009576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161200091906126ba565b60405180910390fd5b505f83856120179190613499565b9050809150509392505050565b60016015806101000a81548160ff0219169083151502179055505f600267ffffffffffffffff81111561205a576120596134cc565b5b6040519080825280602002602001820160405280156120885781602001602082028036833780820191505090505b50905030815f8151811061209f5761209e6134f9565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612143573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906121679190612e92565b8160018151811061217b5761217a6134f9565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506121e13060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff168461151d565b60145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b81526004016122439594939291906135dd565b5f604051808303815f87803b15801561225a575f5ffd5b505af115801561226c573d5f5f3e3d5ffd5b50505050505f6015806101000a81548160ff02191690831515021790555050565b5f60065403612325575f60045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16826040516122dc90613662565b5f6040518083038185875af1925050503d805f8114612316576040519150601f19603f3d011682016040523d82523d5f602084013e61231b565b606091505b5050905050612468565b5f6064600654836123369190612c13565b61234091906136a3565b90505f818361234f9190613499565b90505f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168360405161239790613662565b5f6040518083038185875af1925050503d805f81146123d1576040519150601f19603f3d011682016040523d82523d5f602084013e6123d6565b606091505b505090505f60045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168360405161242090613662565b5f6040518083038185875af1925050503d805f811461245a576040519150601f19603f3d011682016040523d82523d5f602084013e61245f565b606091505b50509050505050505b50565b5f5f830361247b575f90506124dc565b5f82846124889190612c13565b905082848261249791906136a3565b146124d7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124ce90613743565b60405180910390fd5b809150505b92915050565b5f61252383836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506125e9565b905092915050565b5f818311612539578261253b565b815b905092915050565b5f5f8284612551919061334f565b905083811015612596576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161258d906137ab565b60405180910390fd5b8091505092915050565b5f6125e183836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611fc2565b905092915050565b5f5f8311829061262f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161262691906126ba565b60405180910390fd5b505f838561263d91906136a3565b9050809150509392505050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f61268c8261264a565b6126968185612654565b93506126a6818560208601612664565b6126af81612672565b840191505092915050565b5f6020820190508181035f8301526126d28184612682565b905092915050565b5f5ffd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f612707826126de565b9050919050565b612717816126fd565b8114612721575f5ffd5b50565b5f813590506127328161270e565b92915050565b5f819050919050565b61274a81612738565b8114612754575f5ffd5b50565b5f8135905061276581612741565b92915050565b5f5f60408385031215612781576127806126da565b5b5f61278e85828601612724565b925050602061279f85828601612757565b9150509250929050565b5f8115159050919050565b6127bd816127a9565b82525050565b5f6020820190506127d65f8301846127b4565b92915050565b6127e581612738565b82525050565b5f6020820190506127fe5f8301846127dc565b92915050565b5f5f5f6060848603121561281b5761281a6126da565b5b5f61282886828701612724565b935050602061283986828701612724565b925050604061284a86828701612757565b9150509250925092565b5f60ff82169050919050565b61286981612854565b82525050565b5f6020820190506128825f830184612860565b92915050565b5f6020828403121561289d5761289c6126da565b5b5f6128aa84828501612724565b91505092915050565b5f6128bd826126de565b9050919050565b6128cd816128b3565b81146128d7575f5ffd5b50565b5f813590506128e8816128c4565b92915050565b5f60208284031215612903576129026126da565b5b5f612910848285016128da565b91505092915050565b612922816126fd565b82525050565b5f60208201905061293b5f830184612919565b92915050565b5f5f60408385031215612957576129566126da565b5b5f61296485828601612724565b925050602061297585828601612724565b9150509250929050565b5f60208284031215612994576129936126da565b5b5f6129a184828501612757565b91505092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f6129de602083612654565b91506129e9826129aa565b602082019050919050565b5f6020820190508181035f830152612a0b816129d2565b9050919050565b5f819050919050565b5f819050919050565b5f612a3e612a39612a3484612a12565b612a1b565b612738565b9050919050565b612a4e81612a24565b82525050565b5f602082019050612a675f830184612a45565b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f5f8291508390505b6001851115612aef57808604811115612acb57612aca612a6d565b5b6001851615612ada5780820291505b8081029050612ae885612a9a565b9450612aaf565b94509492505050565b5f82612b075760019050612bc2565b81612b14575f9050612bc2565b8160018114612b2a5760028114612b3457612b63565b6001915050612bc2565b60ff841115612b4657612b45612a6d565b5b8360020a915084821115612b5d57612b5c612a6d565b5b50612bc2565b5060208310610133831016604e8410600b8410161715612b985782820a905083811115612b9357612b92612a6d565b5b612bc2565b612ba58484846001612aa6565b92509050818404811115612bbc57612bbb612a6d565b5b81810290505b9392505050565b5f612bd382612738565b9150612bde83612854565b9250612c0b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484612af8565b905092915050565b5f612c1d82612738565b9150612c2883612738565b9250828202612c3681612738565b91508282048414831517612c4d57612c4c612a6d565b5b5092915050565b7f4e6577207461782077616c6c65742063616e6e6f7420626520746865207a65725f8201527f6f20616464726573730000000000000000000000000000000000000000000000602082015250565b5f612cae602983612654565b9150612cb982612c54565b604082019050919050565b5f6020820190508181035f830152612cdb81612ca2565b9050919050565b5f81519050612cf081612741565b92915050565b5f60208284031215612d0b57612d0a6126da565b5b5f612d1884828501612ce2565b91505092915050565b5f604082019050612d345f830185612919565b612d4160208301846127dc565b9392505050565b5f612d62612d5d612d58846126de565b612a1b565b6126de565b9050919050565b5f612d7382612d48565b9050919050565b5f612d8482612d69565b9050919050565b612d9481612d7a565b82525050565b5f604082019050612dad5f830185612d8b565b612dba60208301846127dc565b9392505050565b612dca816127a9565b8114612dd4575f5ffd5b50565b5f81519050612de581612dc1565b92915050565b5f60208284031215612e0057612dff6126da565b5b5f612e0d84828501612dd7565b91505092915050565b7f74726164696e6720697320616c7265616479206f70656e0000000000000000005f82015250565b5f612e4a601783612654565b9150612e5582612e16565b602082019050919050565b5f6020820190508181035f830152612e7781612e3e565b9050919050565b5f81519050612e8c8161270e565b92915050565b5f60208284031215612ea757612ea66126da565b5b5f612eb484828501612e7e565b91505092915050565b5f604082019050612ed05f830185612919565b612edd6020830184612919565b9392505050565b5f60c082019050612ef75f830189612919565b612f0460208301886127dc565b612f116040830187612a45565b612f1e6060830186612a45565b612f2b6080830185612919565b612f3860a08301846127dc565b979650505050505050565b5f5f5f60608486031215612f5a57612f596126da565b5b5f612f6786828701612ce2565b9350506020612f7886828701612ce2565b9250506040612f8986828701612ce2565b9150509250925092565b7f436f6e74726163742062616c616e6365206d75737420626520677265617465725f8201527f207468616e207a65726f00000000000000000000000000000000000000000000602082015250565b5f612fed602a83612654565b9150612ff882612f93565b604082019050919050565b5f6020820190508181035f83015261301a81612fe1565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f61307b602483612654565b915061308682613021565b604082019050919050565b5f6020820190508181035f8301526130a88161306f565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f613109602283612654565b9150613114826130af565b604082019050919050565b5f6020820190508181035f830152613136816130fd565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f613197602583612654565b91506131a28261313d565b604082019050919050565b5f6020820190508181035f8301526131c48161318b565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f613225602383612654565b9150613230826131cb565b604082019050919050565b5f6020820190508181035f83015261325281613219565b9050919050565b7f5472616e7366657220616d6f756e74206d7573742062652067726561746572205f8201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b5f6132b3602983612654565b91506132be82613259565b604082019050919050565b5f6020820190508181035f8301526132e0816132a7565b9050919050565b7f4578636565647320746865205f6d61785478416d6f756e742e000000000000005f82015250565b5f61331b601983612654565b9150613326826132e7565b602082019050919050565b5f6020820190508181035f8301526133488161330f565b9050919050565b5f61335982612738565b915061336483612738565b925082820190508082111561337c5761337b612a6d565b5b92915050565b7f4578636565647320746865206d617857616c6c657453697a652e0000000000005f82015250565b5f6133b6601a83612654565b91506133c182613382565b602082019050919050565b5f6020820190508181035f8301526133e3816133aa565b9050919050565b5f6133f482612738565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361342657613425612a6d565b5b600182019050919050565b7f4f6e6c7920332073656c6c732070657220626c6f636b210000000000000000005f82015250565b5f613465601783612654565b915061347082613431565b602082019050919050565b5f6020820190508181035f83015261349281613459565b9050919050565b5f6134a382612738565b91506134ae83612738565b92508282039050818111156134c6576134c5612a6d565b5b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b613558816126fd565b82525050565b5f613569838361354f565b60208301905092915050565b5f602082019050919050565b5f61358b82613526565b6135958185613530565b93506135a083613540565b805f5b838110156135d05781516135b7888261355e565b97506135c283613575565b9250506001810190506135a3565b5085935050505092915050565b5f60a0820190506135f05f8301886127dc565b6135fd6020830187612a45565b818103604083015261360f8186613581565b905061361e6060830185612919565b61362b60808301846127dc565b9695505050505050565b5f81905092915050565b50565b5f61364d5f83613635565b91506136588261363f565b5f82019050919050565b5f61366c82613642565b9150819050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f6136ad82612738565b91506136b883612738565b9250826136c8576136c7613676565b5b828204905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f5f8201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b5f61372d602183612654565b9150613738826136d3565b604082019050919050565b5f6020820190508181035f83015261375a81613721565b9050919050565b7f536166654d6174683a206164646974696f6e206f766572666c6f7700000000005f82015250565b5f613795601b83612654565b91506137a082613761565b602082019050919050565b5f6020820190508181035f8301526137c281613789565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220acd617481214d83a08b83928f5912ca7c6c718e71452b220b800f7197cbba54d64736f6c634300081c0033

Deployed Bytecode Sourcemap

3656:10163:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6155:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6988:161;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4816:50;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11030:118;;;;;;;;;;;;;:::i;:::-;;6432:95;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7157:313;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6341:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13476:340;;;;;;;;;;;;;:::i;:::-;;10864:158;;;;;;;;;;;;;:::i;:::-;;6535:119;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2737:148;;;;;;;;;;;;;:::i;:::-;;12997:209;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12616:373;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4640:50;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2523:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4697:52;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6246:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6662:167;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4756:53;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11622:709;;;;;;;;;;;;;:::i;:::-;;6837:143;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12380:228;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13214:254;;;;;;;;;;;;;:::i;:::-;;6155:83;6192:13;6225:5;;;;;;;;;;;;;;;;;6218:12;;6155:83;:::o;6988:161::-;7063:4;7080:39;7089:12;:10;:12::i;:::-;7103:7;7112:6;7080:8;:39::i;:::-;7137:4;7130:11;;6988:161;;;;:::o;4816:50::-;;;;:::o;11030:118::-;2660:12;:10;:12::i;:::-;2650:22;;:6;;;;;;;;;;;:22;;;2642:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;11102:1:::1;11088:12;:15;;;;11119:21;11138:1;11119:21;;;;;;:::i;:::-;;;;;;;;11030:118::o:0;6432:95::-;6485:7;4453:1;4509:2;:13;;;;:::i;:::-;4496:10;:26;;;;:::i;:::-;6505:14;;6432:95;:::o;7157:313::-;7255:4;7272:36;7282:6;7290:9;7301:6;7272:9;:36::i;:::-;7319:121;7328:6;7336:12;:10;:12::i;:::-;7350:89;7388:6;7350:89;;;;;;;;;;;;;;;;;:11;:19;7362:6;7350:19;;;;;;;;;;;;;;;:33;7370:12;:10;:12::i;:::-;7350:33;;;;;;;;;;;;;;;;:37;;:89;;;;;:::i;:::-;7319:8;:121::i;:::-;7458:4;7451:11;;7157:313;;;;;:::o;6341:83::-;6382:5;4453:1;6400:16;;6341:83;:::o;13476:340::-;13542:10;;;;;;;;;;;13526:26;;:12;:10;:12::i;:::-;:26;;;13518:35;;;;;;13566:20;13589:24;13607:4;13589:9;:24::i;:::-;13566:47;;13642:1;13627:12;:16;13624:75;;;13657:30;13674:12;13657:16;:30::i;:::-;13624:75;13711:18;13732:21;13711:42;;13778:1;13767:10;:12;13764:45;;;13782:24;13795:10;13782:12;:24::i;:::-;13764:45;13507:309;;13476:340::o;10864:158::-;2660:12;:10;:12::i;:::-;2650:22;;:6;;;;;;;;;;;:22;;;2642:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;4453:1:::1;4509:2;:13;;;;:::i;:::-;4496:10;:26;;;;:::i;:::-;10916:12;:21;;;;4453:1;4509:2;:13;;;;:::i;:::-;4496:10;:26;;;;:::i;:::-;10948:14;:23;;;;10987:27;4453:1;4509:2;:13;;;;:::i;:::-;4496:10;:26;;;;:::i;:::-;10987:27;;;;;;:::i;:::-;;;;;;;;10864:158::o:0;6535:119::-;6601:7;6628:9;:18;6638:7;6628:18;;;;;;;;;;;;;;;;6621:25;;6535:119;;;:::o;2737:148::-;2660:12;:10;:12::i;:::-;2650:22;;:6;;;;;;;;;;;:22;;;2642:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;2844:1:::1;2807:40;;2828:6;;;;;;;;;;;2807:40;;;;;;;;;;;;2875:1;2858:6;;:19;;;;;;;;;;;;;;;;;;2737:148::o:0;12997:209::-;2660:12;:10;:12::i;:::-;2650:22;;:6;;;;;;;;;;;:22;;;2642:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;13114:1:::1;13090:26;;:12;:26;;::::0;13082:80:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;13186:12;13173:10;;:25;;;;;;;;;;;;;;;;;;12997:209:::0;:::o;12616:373::-;12697:12;12746:10;;;;;;;;;;;12730:26;;:12;:10;:12::i;:::-;:26;;;12722:35;;;;;;12783:1;12773:6;:11;12770:96;;12816:12;12809:30;;;12848:4;12809:45;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12800:54;;12770:96;12883:31;12894:12;12907:6;12883:31;;;;;;;:::i;:::-;;;;;;;;12939:12;12932:29;;;12962:10;;;;;;;;;;;12974:6;12932:49;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12925:56;;12616:373;;;;:::o;4640:50::-;;;;:::o;2523:79::-;2561:7;2588:6;;;;;;;;;;;2581:13;;2523:79;:::o;4697:52::-;;;;:::o;6246:87::-;6285:13;6318:7;;;;;;;;;;;;;;;;;6311:14;;6246:87;:::o;6662:167::-;6740:4;6757:42;6767:12;:10;:12::i;:::-;6781:9;6792:6;6757:9;:42::i;:::-;6817:4;6810:11;;6662:167;;;;:::o;4756:53::-;;;;:::o;11622:709::-;2660:12;:10;:12::i;:::-;2650:22;;:6;;;;;;;;;;;:22;;;2642:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;11686:11:::1;;;;;;;;;;;11685:12;11677:47;;;;;;;;;;;;:::i;:::-;;;;;;;;;11772:42;11735:15;;:80;;;;;;;;;;;;;;;;;;11826:58;11843:4;11858:15;;;;;;;;;;;4453:1;4509:2;:13;;;;:::i;:::-;4496:10;:26;;;;:::i;:::-;11826:8;:58::i;:::-;11929:15;;;;;;;;;;;:23;;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11911:55;;;11975:4;11982:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11911:94;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11895:13;;:110;;;;;;;;;;;;;;;;;;12016:15;;;;;;;;;;;:31;;;12055:21;12086:4;12093:24;12111:4;12093:9;:24::i;:::-;12119:1;12122;12125:7;:5;:7::i;:::-;12134:15;12016:134;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;12168:13;;;;;;;;;;;12161:29;;;12199:15;;;;;;;;;;;12217:14;12161:71;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;12256:4;12243:11;;:17;;;;;;;;;;;;;;;;;;12284:4;12271:11;;:17;;;;;;;;;;;;;;;;;;12311:12;12299:10;:24;;;;11622:709::o:0;6837:143::-;6918:7;6945:11;:18;6957:5;6945:18;;;;;;;;;;;;;;;:27;6964:7;6945:27;;;;;;;;;;;;;;;;6938:34;;6837:143;;;;:::o;12380:228::-;12457:10;;;;;;;;;;;12441:26;;:12;:10;:12::i;:::-;:26;;;12433:35;;;;;;12496:12;;12485:7;:23;;:51;;;;;12523:13;;12512:7;:24;;12485:51;12477:60;;;;;;12562:7;12548:12;:21;;;;12593:7;12578:13;:22;;;;12380:228;:::o;13214:254::-;13280:10;;;;;;;;;;;13264:26;;:12;:10;:12::i;:::-;:26;;;13256:35;;;;;;13304:18;13324:21;13304:41;;13377:1;13364:10;:14;13356:69;;;;;;;;;;;;:::i;:::-;;;;;;;;;13436:24;13449:10;13436:12;:24::i;:::-;13245:223;13214:254::o;278:98::-;331:7;358:10;351:17;;278:98;:::o;7478:335::-;7588:1;7571:19;;:5;:19;;;7563:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;7669:1;7650:21;;:7;:21;;;7642:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;7751:6;7721:11;:18;7733:5;7721:18;;;;;;;;;;;;;;;:27;7740:7;7721:27;;;;;;;;;;;;;;;:36;;;;7789:7;7773:32;;7782:5;7773:32;;;7798:6;7773:32;;;;;;:::i;:::-;;;;;;;;7478:335;;;:::o;7821:2432::-;7925:1;7909:18;;:4;:18;;;7901:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;8002:1;7988:16;;:2;:16;;;7980:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;8072:1;8063:6;:10;8055:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;8130:17;8150:1;8130:21;;8174:7;:5;:7::i;:::-;8166:15;;:4;:15;;;;:32;;;;;8191:7;:5;:7::i;:::-;8185:13;;:2;:13;;;;8166:32;8162:1726;;;8233:1;8220:9;;:14;8217:147;;8266:82;8344:3;8266:73;8290:15;;8278:9;;:27;8277:61;;8324:14;;8277:61;;;8309:12;;8277:61;8266:6;:10;;:73;;;;:::i;:::-;:77;;:82;;;;:::i;:::-;8254:94;;8217:147;8395:1;8383:9;;:13;8380:96;;;8427:33;8456:3;8427:24;8438:12;;8427:6;:10;;:24;;;;:::i;:::-;:28;;:33;;;;:::i;:::-;8416:44;;8380:96;8504:13;;;;;;;;;;;8496:21;;:4;:21;;;:55;;;;;8535:15;;;;;;;;;;;8521:30;;:2;:30;;;;8496:55;:83;;;;;8557:18;:22;8576:2;8557:22;;;;;;;;;;;;;;;;;;;;;;;;;8555:24;8496:83;8492:426;;;8619:12;;8609:6;:22;;8601:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;8714:14;;8704:6;8688:13;8698:2;8688:9;:13::i;:::-;:22;;;;:::i;:::-;:40;;8680:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;8790:82;8868:3;8790:73;8814:15;;8802:9;;:27;8801:61;;8848:14;;8801:61;;;8833:12;;8801:61;8790:6;:10;;:73;;;;:::i;:::-;:77;;:82;;;;:::i;:::-;8778:94;;8891:9;;:11;;;;;;;;;:::i;:::-;;;;;;8492:426;8943:13;;;;;;;;;;;8937:19;;:2;:19;;;:44;;;;;8976:4;8960:21;;:4;:21;;;;8937:44;8934:181;;;9014:85;9095:3;9014:76;9038:16;;9026:9;;:28;9025:64;;9074:15;;9025:64;;;9058:13;;9025:64;9014:6;:10;;:76;;;;:::i;:::-;:80;;:85;;;;:::i;:::-;9002:97;;8934:181;9131:28;9162:24;9180:4;9162:9;:24::i;:::-;9131:55;;9206:6;;;;;;;;;;9205:7;:30;;;;;9222:13;;;;;;;;;;;9216:19;;:2;:19;;;9205:30;:45;;;;;9239:11;;;;;;;;;;;9205:45;:89;;;;;9277:17;;9254:20;:40;9205:89;:123;;;;;9310:18;;9298:9;;:30;9205:123;9201:676;;;9366:13;;9353:12;:26;9349:88;;;9416:1;9404:9;:13;;;;9349:88;9475:1;9463:9;;:13;9455:49;;;;;;;;;;;;:::i;:::-;;;;;;;;;9525:67;9542:49;9546:6;9553:37;9557:20;9578:11;;9553:3;:37::i;:::-;9542:3;:49::i;:::-;9525:16;:67::i;:::-;9611:26;9640:21;9611:50;;9703:1;9684:18;:20;9680:104;;;9729:35;9742:21;9729:12;:35::i;:::-;9680:104;9804:9;;:11;;;;;;;;;:::i;:::-;;;;;;9849:12;9834:13;:27;;;;9330:547;9201:676;8200:1688;8162:1726;9915:1;9903:9;:13;9900:166;;;9957:39;9986:9;9957;:24;9975:4;9957:24;;;;;;;;;;;;;;;;:28;;:39;;;;:::i;:::-;9930:9;:24;9948:4;9930:24;;;;;;;;;;;;;;;:66;;;;10037:4;10014:40;;10023:4;10014:40;;;10044:9;10014:40;;;;;;:::i;:::-;;;;;;;;9900:166;10095:27;10115:6;10095:9;:15;10105:4;10095:15;;;;;;;;;;;;;;;;:19;;:27;;;;:::i;:::-;10078:9;:15;10088:4;10078:15;;;;;;;;;;;;;;;:44;;;;10148:40;10166:21;10177:9;10166:6;:10;;:21;;;;:::i;:::-;10148:9;:13;10158:2;10148:13;;;;;;;;;;;;;;;;:17;;:40;;;;:::i;:::-;10133:9;:13;10143:2;10133:13;;;;;;;;;;;;;;;:55;;;;10219:2;10204:41;;10213:4;10204:41;;;10223:21;10234:9;10223:6;:10;;:21;;;;:::i;:::-;10204:41;;;;;;:::i;:::-;;;;;;;;7890:2363;7821:2432;;;:::o;1415:190::-;1501:7;1534:1;1529;:6;;1537:12;1521:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;1561:9;1577:1;1573;:5;;;;:::i;:::-;1561:17;;1596:1;1589:8;;;1415:190;;;;;:::o;10373:483::-;5377:4;5368:6;;:13;;;;;;;;;;;;;;;;;;10451:21:::1;10489:1;10475:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10451:40;;10520:4;10502;10507:1;10502:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;10546:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10536:4;10541:1;10536:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;::::0;::::1;10579:62;10596:4;10611:15;;;;;;;;;;;10629:11;10579:8;:62::i;:::-;10652:15;;;;;;;;;;;:66;;;10733:11;10759:1;10775:4;10802;10822:15;10652:196;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10440:416;5413:5:::0;5404:6;;:14;;;;;;;;;;;;;;;;;;10373:483;:::o;11154:459::-;11226:1;11211:11;;:16;11207:401;;11239:12;11256:10;;;;;;;;;;;:15;;11279:6;11256:34;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11238:52;;;11229:85;11207:401;;;11329:17;11372:3;11358:11;;11349:6;:20;;;;:::i;:::-;:26;;;;:::i;:::-;11329:46;;11384:23;11419:9;11410:6;:18;;;;:::i;:::-;11384:44;;11438:15;11458:10;;;;;;;;;;;:15;;11481:9;11458:37;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11437:58;;;11524:12;11541:10;;;;;;;;;;;:15;;11564;11541:43;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11523:61;;;11320:288;;;;11207:401;11154:459;:::o;1613:246::-;1671:7;1700:1;1695;:6;1691:47;;1725:1;1718:8;;;;1691:47;1748:9;1764:1;1760;:5;;;;:::i;:::-;1748:17;;1793:1;1788;1784;:5;;;;:::i;:::-;:10;1776:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;1850:1;1843:8;;;1613:246;;;;;:::o;1867:132::-;1925:7;1952:39;1956:1;1959;1952:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;1945:46;;1867:132;;;;:::o;10263:102::-;10320:7;10347:1;10345;:3;10344:13;;10356:1;10344:13;;;10352:1;10344:13;10337:20;;10263:102;;;;:::o;1084:179::-;1142:7;1162:9;1178:1;1174;:5;;;;:::i;:::-;1162:17;;1203:1;1198;:6;;1190:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;1254:1;1247:8;;;1084:179;;;;:::o;1271:136::-;1329:7;1356:43;1360:1;1363;1356:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;1349:50;;1271:136;;;;:::o;2007:189::-;2093:7;2125:1;2121;:5;2128:12;2113:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;2152:9;2168:1;2164;:5;;;;:::i;:::-;2152:17;;2187:1;2180:8;;;2007: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://acd617481214d83a08b83928f5912ca7c6c718e71452b220b800f7197cbba54d
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.