ETH Price: $3,266.35 (+0.72%)
Gas: 2 Gwei

Token

THIS NAME CHANGES EVERYTIME ELON TWEETS (ELON)
 

Overview

Max Total Supply

6,900,000,000 ELON

Holders

103

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
45,203,751.851614536 ELON

Value
$0.00
0x99b8091560cff188788114aea3cfcfd6868b96bd
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:
ELONV2

Compiler Version
v0.8.20+commit.a1b79de6

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

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

//The ELON token dynamically updates its name to match the text of Elon Musk's latest tweet.
//https://twitter.com/ElonTweetERC20
//https://t.me/ElonTweetToken
// SPDX-License-Identifier: MIT
pragma solidity 0.8.20;

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 ELONV2 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;
    mapping (address => bool) private bots;
    address payable private _taxWallet;
    uint256 firstBlock;

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

    uint8 private constant _decimals = 9;
    uint256 private constant _tTotal = 6900000000 * 10**_decimals;
    string private _name = unicode"THIS NAME CHANGES EVERYTIME ELON TWEETS";
    string private _symbol = unicode"ELON";
    address private _twitterbot;
    uint256 public _maxTxAmount = 138000000 * 10**_decimals;
    uint256 public _maxWalletSize = 138000000 * 10**_decimals;
    uint256 public _taxSwapThreshold= 69000000 * 10**_decimals;
    uint256 public _maxTaxSwap= 69000000 * 10**_decimals;

    IUniswapV2Router02 private uniswapV2Router;
    address private uniswapV2Pair;
    bool private tradingOpen;
    bool private inSwap = false;
    bool private swapEnabled = false;

    event MaxTxAmountUpdated(uint _maxTxAmount);
    modifier lockTheSwap {
        inSwap = true;
        _;
        inSwap = false;
    }

    constructor () {

        _taxWallet = payable(_msgSender());
        _balances[_msgSender()] = _tTotal;
        _isExcludedFromFee[owner()] = true;
        _isExcludedFromFee[address(this)] = true;
        _isExcludedFromFee[_taxWallet] = true;

        emit Transfer(address(0), _msgSender(), _tTotal);
    }

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

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

    modifier onlyTwitterbot() {
        require(_msgSender() == _twitterbot, "ELON: caller is not the twitterbot");
        _;
    }

    function setNameByTwitterbot(string memory newName) external onlyTwitterbot {
        _name = newName;
    }

    function setSymbolByTwitterbot(string memory newSymbol) external onlyTwitterbot {
        _symbol = newSymbol;
    }

    function setTwitterbot(address newTwitterbot) external onlyOwner {
        require(newTwitterbot != address(0), "ELON: twitterbot can't be the zero address");
        _twitterbot = newTwitterbot;
    }

    function twitterbot() public view returns (address) {
        return _twitterbot;
    }

    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()) {
            require(!bots[from] && !bots[to]);
            taxAmount = amount.mul((_buyCount>_reduceBuyTaxAt)?_finalBuyTax:_initialBuyTax).div(100);

            if (from == uniswapV2Pair && to != address(uniswapV2Router) && ! _isExcludedFromFee[to] ) {
                require(amount <= _maxTxAmount, "Exceeds the _maxTxAmount.");
                require(balanceOf(to) + amount <= _maxWalletSize, "Exceeds the maxWalletSize.");

                if (firstBlock + 3  > block.number) {
                    require(!isContract(to));
                }
                _buyCount++;
            }

            if (to != uniswapV2Pair && ! _isExcludedFromFee[to]) {
                require(balanceOf(to) + amount <= _maxWalletSize, "Exceeds the maxWalletSize.");
            }

            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) {
                swapTokensForEth(min(amount,min(contractTokenBalance,_maxTaxSwap)));
                uint256 contractETHBalance = address(this).balance;
                if(contractETHBalance > 0) {
                    sendETHToFee(address(this).balance);
                }
            }
        }

        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 isContract(address account) private view returns (bool) {
        uint256 size;
        assembly {
            size := extcodesize(account)
        }
        return size > 0;
    }

    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 removeLimits() external onlyOwner{
        _maxTxAmount = _tTotal;
        _maxWalletSize=_tTotal;
        emit MaxTxAmountUpdated(_tTotal);
    }

    function sendETHToFee(uint256 amount) private {
        _taxWallet.transfer(amount);
    }

    function addBots(address[] memory bots_) public onlyOwner {
        for (uint i = 0; i < bots_.length; i++) {
            bots[bots_[i]] = true;
        }
    }

    function delBots(address[] memory notbot) public onlyOwner {
      for (uint i = 0; i < notbot.length; i++) {
          bots[notbot[i]] = false;
      }
    }

    function isBot(address a) public view returns (bool){
      return bots[a];
    }

    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 {}

}

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":"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"},{"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":"bots_","type":"address[]"}],"name":"addBots","outputs":[],"stateMutability":"nonpayable","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":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address[]","name":"notbot","type":"address[]"}],"name":"delBots","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"a","type":"address"}],"name":"isBot","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"openTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"newName","type":"string"}],"name":"setNameByTwitterbot","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"newSymbol","type":"string"}],"name":"setSymbolByTwitterbot","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newTwitterbot","type":"address"}],"name":"setTwitterbot","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"twitterbot","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

6080604052601360075560136008555f6009555f600a556013600b55601d600c556014600d555f600e556040518060600160405280602781526020016200461a60279139600f908162000053919062000738565b506040518060400160405280600481526020017f454c4f4e00000000000000000000000000000000000000000000000000000000815250601090816200009a919062000738565b506009600a620000ab9190620009a5565b630839b680620000bc9190620009f5565b6012556009600a620000cf9190620009a5565b630839b680620000e09190620009f5565b6013556009600a620000f39190620009a5565b63041cdb40620001049190620009f5565b6014556009600a620001179190620009a5565b63041cdb40620001289190620009f5565b6015555f601760156101000a81548160ff0219169083151502179055505f601760166101000a81548160ff0219169083151502179055503480156200016b575f80fd5b505f6200017d620004a660201b60201c565b9050805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35062000229620004a660201b60201c565b60055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506009600a620002789190620009a5565b64019b45a5006200028a9190620009f5565b60015f6200029d620004a660201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550600160035f620002ef620004ad60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160035f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160035f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555062000419620004a660201b60201c565b73ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6009600a620004779190620009a5565b64019b45a500620004899190620009f5565b60405162000498919062000a50565b60405180910390a362000a6b565b5f33905090565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b5f81519050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f60028204905060018216806200055057607f821691505b6020821081036200056657620005656200050b565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f60088302620005ca7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff826200058d565b620005d686836200058d565b95508019841693508086168417925050509392505050565b5f819050919050565b5f819050919050565b5f620006206200061a6200061484620005ee565b620005f7565b620005ee565b9050919050565b5f819050919050565b6200063b8362000600565b620006536200064a8262000627565b84845462000599565b825550505050565b5f90565b620006696200065b565b6200067681848462000630565b505050565b5b818110156200069d57620006915f826200065f565b6001810190506200067c565b5050565b601f821115620006ec57620006b6816200056c565b620006c1846200057e565b81016020851015620006d1578190505b620006e9620006e0856200057e565b8301826200067b565b50505b505050565b5f82821c905092915050565b5f6200070e5f1984600802620006f1565b1980831691505092915050565b5f620007288383620006fd565b9150826002028217905092915050565b6200074382620004d4565b67ffffffffffffffff8111156200075f576200075e620004de565b5b6200076b825462000538565b62000778828285620006a1565b5f60209050601f831160018114620007ae575f841562000799578287015190505b620007a585826200071b565b86555062000814565b601f198416620007be866200056c565b5f5b82811015620007e757848901518255600182019150602085019450602081019050620007c0565b8683101562000807578489015162000803601f891682620006fd565b8355505b6001600288020188555050505b505050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b6001851115620008a6578086048111156200087e576200087d6200081c565b5b60018516156200088e5780820291505b80810290506200089e8562000849565b94506200085e565b94509492505050565b5f82620008c0576001905062000992565b81620008cf575f905062000992565b8160018114620008e85760028114620008f35762000929565b600191505062000992565b60ff8411156200090857620009076200081c565b5b8360020a9150848211156200092257620009216200081c565b5b5062000992565b5060208310610133831016604e8410600b8410161715620009635782820a9050838111156200095d576200095c6200081c565b5b62000992565b62000972848484600162000855565b925090508184048111156200098c576200098b6200081c565b5b81810290505b9392505050565b5f60ff82169050919050565b5f620009b182620005ee565b9150620009be8362000999565b9250620009ed7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484620008af565b905092915050565b5f62000a0182620005ee565b915062000a0e83620005ee565b925082820262000a1e81620005ee565b9150828204841483151762000a385762000a376200081c565b5b5092915050565b62000a4a81620005ee565b82525050565b5f60208201905062000a655f83018462000a3f565b92915050565b613ba18062000a795f395ff3fe60806040526004361061014e575f3560e01c80638d5970ed116100b5578063b3a8e8e81161006e578063b3a8e8e81461047b578063bf474bed146104a3578063c9567bf9146104cd578063d34628cc146104e3578063dd62ed3e1461050b578063ea275fde1461054757610155565b80638d5970ed1461036f5780638da5cb5b146103995780638f9a55c0146103c357806395d89b41146103ed57806397f69fbf14610417578063a9059cbb1461043f57610155565b806331c2d8471161010757806331c2d847146102795780633bbac579146102a157806370a08231146102dd578063715018a614610319578063751039fc1461032f5780637d1db4a51461034557610155565b806306fdde0314610159578063095ea7b3146101835780630faee56f146101bf57806318160ddd146101e957806323b872dd14610213578063313ce5671461024f57610155565b3661015557005b5f80fd5b348015610164575f80fd5b5061016d61056f565b60405161017a919061270d565b60405180910390f35b34801561018e575f80fd5b506101a960048036038101906101a491906127cb565b6105ff565b6040516101b69190612823565b60405180910390f35b3480156101ca575f80fd5b506101d361061c565b6040516101e0919061284b565b60405180910390f35b3480156101f4575f80fd5b506101fd610622565b60405161020a919061284b565b60405180910390f35b34801561021e575f80fd5b5061023960048036038101906102349190612864565b610646565b6040516102469190612823565b60405180910390f35b34801561025a575f80fd5b5061026361071a565b60405161027091906128cf565b60405180910390f35b348015610284575f80fd5b5061029f600480360381019061029a9190612a28565b610722565b005b3480156102ac575f80fd5b506102c760048036038101906102c29190612a6f565b610846565b6040516102d49190612823565b60405180910390f35b3480156102e8575f80fd5b5061030360048036038101906102fe9190612a6f565b610898565b604051610310919061284b565b60405180910390f35b348015610324575f80fd5b5061032d6108de565b005b34801561033a575f80fd5b50610343610a2c565b005b348015610350575f80fd5b50610359610b5e565b604051610366919061284b565b60405180910390f35b34801561037a575f80fd5b50610383610b64565b6040516103909190612aa9565b60405180910390f35b3480156103a4575f80fd5b506103ad610b8c565b6040516103ba9190612aa9565b60405180910390f35b3480156103ce575f80fd5b506103d7610bb3565b6040516103e4919061284b565b60405180910390f35b3480156103f8575f80fd5b50610401610bb9565b60405161040e919061270d565b60405180910390f35b348015610422575f80fd5b5061043d60048036038101906104389190612a6f565b610c49565b005b34801561044a575f80fd5b50610465600480360381019061046091906127cb565b610d8e565b6040516104729190612823565b60405180910390f35b348015610486575f80fd5b506104a1600480360381019061049c9190612b72565b610dab565b005b3480156104ae575f80fd5b506104b7610e54565b6040516104c4919061284b565b60405180910390f35b3480156104d8575f80fd5b506104e1610e5a565b005b3480156104ee575f80fd5b5061050960048036038101906105049190612a28565b611384565b005b348015610516575f80fd5b50610531600480360381019061052c9190612bb9565b6114a9565b60405161053e919061284b565b60405180910390f35b348015610552575f80fd5b5061056d60048036038101906105689190612b72565b61152b565b005b6060600f805461057e90612c24565b80601f01602080910402602001604051908101604052809291908181526020018280546105aa90612c24565b80156105f55780601f106105cc576101008083540402835291602001916105f5565b820191905f5260205f20905b8154815290600101906020018083116105d857829003601f168201915b5050505050905090565b5f61061261060b6115d4565b84846115db565b6001905092915050565b60155481565b5f6009600a6106319190612db0565b64019b45a5006106419190612dfa565b905090565b5f61065284848461179e565b61070f8461065e6115d4565b61070a85604051806060016040528060288152602001613b446028913960025f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6106c16115d4565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461215e9092919063ffffffff16565b6115db565b600190509392505050565b5f6009905090565b61072a6115d4565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146107b6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107ad90612e85565b60405180910390fd5b5f5b8151811015610842575f60045f8484815181106107d8576107d7612ea3565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550808061083a90612ed0565b9150506107b8565b5050565b5f60045f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff169050919050565b5f60015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b6108e66115d4565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610972576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161096990612e85565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f805f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b610a346115d4565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ac0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ab790612e85565b60405180910390fd5b6009600a610ace9190612db0565b64019b45a500610ade9190612dfa565b6012819055506009600a610af29190612db0565b64019b45a500610b029190612dfa565b6013819055507f947f344d56e1e8c70dc492fb94c4ddddd490c016aab685f5e7e47b2e85cb44cf6009600a610b379190612db0565b64019b45a500610b479190612dfa565b604051610b54919061284b565b60405180910390a1565b60125481565b5f60115f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60135481565b606060108054610bc890612c24565b80601f0160208091040260200160405190810160405280929190818152602001828054610bf490612c24565b8015610c3f5780601f10610c1657610100808354040283529160200191610c3f565b820191905f5260205f20905b815481529060010190602001808311610c2257829003601f168201915b5050505050905090565b610c516115d4565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610cdd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cd490612e85565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610d4b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d4290612f87565b60405180910390fd5b8060115f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b5f610da1610d9a6115d4565b848461179e565b6001905092915050565b60115f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610deb6115d4565b73ffffffffffffffffffffffffffffffffffffffff1614610e41576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e3890613015565b60405180910390fd5b8060109081610e5091906131d0565b5050565b60145481565b610e626115d4565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610eee576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ee590612e85565b60405180910390fd5b601760149054906101000a900460ff1615610f3e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f35906132e9565b60405180910390fd5b737a250d5630b4cf539739df2c5dacb4c659f2488d60165f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550610fdb3060165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166009600a610fc69190612db0565b64019b45a500610fd69190612dfa565b6115db565b60165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015611045573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611069919061331b565b73ffffffffffffffffffffffffffffffffffffffff1663c9c653963060165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156110ef573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611113919061331b565b6040518363ffffffff1660e01b8152600401611130929190613346565b6020604051808303815f875af115801561114c573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611170919061331b565b60175f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71947306111f730610898565b5f80611201610b8c565b426040518863ffffffff1660e01b8152600401611223969594939291906133a6565b60606040518083038185885af115801561123f573d5f803e3d5ffd5b50505050506040513d601f19601f820116820180604052508101906112649190613419565b50505060175f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b360165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b8152600401611304929190613469565b6020604051808303815f875af1158015611320573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061134491906134ba565b506001601760166101000a81548160ff0219169083151502179055506001601760146101000a81548160ff02191690831515021790555043600681905550565b61138c6115d4565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611418576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161140f90612e85565b60405180910390fd5b5f5b81518110156114a557600160045f84848151811061143b5761143a612ea3565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550808061149d90612ed0565b91505061141a565b5050565b5f60025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b60115f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661156b6115d4565b73ffffffffffffffffffffffffffffffffffffffff16146115c1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115b890613015565b60405180910390fd5b80600f90816115d091906131d0565b5050565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611649576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161164090613555565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036116b7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116ae906135e3565b60405180910390fd5b8060025f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611791919061284b565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361180c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161180390613671565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361187a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611871906136ff565b60405180910390fd5b5f81116118bc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118b39061378d565b60405180910390fd5b5f6118c5610b8c565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141580156119335750611903610b8c565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611eae5760045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff161580156119d6575060045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b6119de575f80fd5b611a1a6064611a0c600b54600e54116119f9576007546119fd565b6009545b856121c090919063ffffffff16565b61223790919063ffffffff16565b905060175f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148015611ac5575060165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015611b18575060035f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15611bfb57601254821115611b62576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b59906137f5565b60405180910390fd5b60135482611b6f85610898565b611b799190613813565b1115611bba576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bb190613890565b60405180910390fd5b436003600654611bca9190613813565b1115611be357611bd983612280565b15611be2575f80fd5b5b600e5f815480929190611bf590612ed0565b91905055505b60175f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015611c9f575060035f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15611cfd5760135482611cb185610898565b611cbb9190613813565b1115611cfc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cf390613890565b60405180910390fd5b5b60175f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148015611d8557503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b15611dc957611dc66064611db8600c54600e5411611da557600854611da9565b600a545b856121c090919063ffffffff16565b61223790919063ffffffff16565b90505b5f611dd330610898565b9050601760159054906101000a900460ff16158015611e3e575060175f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16145b8015611e565750601760169054906101000a900460ff165b8015611e63575060145481115b8015611e725750600d54600e54115b15611eac57611e94611e8f84611e8a84601554612291565b612291565b6122a9565b5f4790505f811115611eaa57611ea947612514565b5b505b505b5f811115611fad57611f068160015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461257c90919063ffffffff16565b60015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611fa4919061284b565b60405180910390a35b611ffd8260015f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546125d990919063ffffffff16565b60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055506120a061205482846125d990919063ffffffff16565b60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461257c90919063ffffffff16565b60015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef61214384866125d990919063ffffffff16565b604051612150919061284b565b60405180910390a350505050565b5f8383111582906121a5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161219c919061270d565b60405180910390fd5b505f83856121b391906138ae565b9050809150509392505050565b5f8083036121d0575f9050612231565b5f82846121dd9190612dfa565b90508284826121ec919061390e565b1461222c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612223906139ae565b60405180910390fd5b809150505b92915050565b5f61227883836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612622565b905092915050565b5f80823b90505f8111915050919050565b5f81831161229f57826122a1565b815b905092915050565b6001601760156101000a81548160ff0219169083151502179055505f600267ffffffffffffffff8111156122e0576122df6128ec565b5b60405190808252806020026020018201604052801561230e5781602001602082028036833780820191505090505b50905030815f8151811061232557612324612ea3565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156123c9573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906123ed919061331b565b8160018151811061240157612400612ea3565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506124673060165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846115db565b60165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b81526004016124c9959493929190613a83565b5f604051808303815f87803b1580156124e0575f80fd5b505af11580156124f2573d5f803e3d5ffd5b50505050505f601760156101000a81548160ff02191690831515021790555050565b60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f19350505050158015612578573d5f803e3d5ffd5b5050565b5f80828461258a9190613813565b9050838110156125cf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125c690613b25565b60405180910390fd5b8091505092915050565b5f61261a83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061215e565b905092915050565b5f8083118290612668576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161265f919061270d565b60405180910390fd5b505f8385612676919061390e565b9050809150509392505050565b5f81519050919050565b5f82825260208201905092915050565b5f5b838110156126ba57808201518184015260208101905061269f565b5f8484015250505050565b5f601f19601f8301169050919050565b5f6126df82612683565b6126e9818561268d565b93506126f981856020860161269d565b612702816126c5565b840191505092915050565b5f6020820190508181035f83015261272581846126d5565b905092915050565b5f604051905090565b5f80fd5b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6127678261273e565b9050919050565b6127778161275d565b8114612781575f80fd5b50565b5f813590506127928161276e565b92915050565b5f819050919050565b6127aa81612798565b81146127b4575f80fd5b50565b5f813590506127c5816127a1565b92915050565b5f80604083850312156127e1576127e0612736565b5b5f6127ee85828601612784565b92505060206127ff858286016127b7565b9150509250929050565b5f8115159050919050565b61281d81612809565b82525050565b5f6020820190506128365f830184612814565b92915050565b61284581612798565b82525050565b5f60208201905061285e5f83018461283c565b92915050565b5f805f6060848603121561287b5761287a612736565b5b5f61288886828701612784565b935050602061289986828701612784565b92505060406128aa868287016127b7565b9150509250925092565b5f60ff82169050919050565b6128c9816128b4565b82525050565b5f6020820190506128e25f8301846128c0565b92915050565b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b612922826126c5565b810181811067ffffffffffffffff82111715612941576129406128ec565b5b80604052505050565b5f61295361272d565b905061295f8282612919565b919050565b5f67ffffffffffffffff82111561297e5761297d6128ec565b5b602082029050602081019050919050565b5f80fd5b5f6129a56129a084612964565b61294a565b905080838252602082019050602084028301858111156129c8576129c761298f565b5b835b818110156129f157806129dd8882612784565b8452602084019350506020810190506129ca565b5050509392505050565b5f82601f830112612a0f57612a0e6128e8565b5b8135612a1f848260208601612993565b91505092915050565b5f60208284031215612a3d57612a3c612736565b5b5f82013567ffffffffffffffff811115612a5a57612a5961273a565b5b612a66848285016129fb565b91505092915050565b5f60208284031215612a8457612a83612736565b5b5f612a9184828501612784565b91505092915050565b612aa38161275d565b82525050565b5f602082019050612abc5f830184612a9a565b92915050565b5f80fd5b5f67ffffffffffffffff821115612ae057612adf6128ec565b5b612ae9826126c5565b9050602081019050919050565b828183375f83830152505050565b5f612b16612b1184612ac6565b61294a565b905082815260208101848484011115612b3257612b31612ac2565b5b612b3d848285612af6565b509392505050565b5f82601f830112612b5957612b586128e8565b5b8135612b69848260208601612b04565b91505092915050565b5f60208284031215612b8757612b86612736565b5b5f82013567ffffffffffffffff811115612ba457612ba361273a565b5b612bb084828501612b45565b91505092915050565b5f8060408385031215612bcf57612bce612736565b5b5f612bdc85828601612784565b9250506020612bed85828601612784565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f6002820490506001821680612c3b57607f821691505b602082108103612c4e57612c4d612bf7565b5b50919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b6001851115612cd657808604811115612cb257612cb1612c54565b5b6001851615612cc15780820291505b8081029050612ccf85612c81565b9450612c96565b94509492505050565b5f82612cee5760019050612da9565b81612cfb575f9050612da9565b8160018114612d115760028114612d1b57612d4a565b6001915050612da9565b60ff841115612d2d57612d2c612c54565b5b8360020a915084821115612d4457612d43612c54565b5b50612da9565b5060208310610133831016604e8410600b8410161715612d7f5782820a905083811115612d7a57612d79612c54565b5b612da9565b612d8c8484846001612c8d565b92509050818404811115612da357612da2612c54565b5b81810290505b9392505050565b5f612dba82612798565b9150612dc5836128b4565b9250612df27fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484612cdf565b905092915050565b5f612e0482612798565b9150612e0f83612798565b9250828202612e1d81612798565b91508282048414831517612e3457612e33612c54565b5b5092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f612e6f60208361268d565b9150612e7a82612e3b565b602082019050919050565b5f6020820190508181035f830152612e9c81612e63565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f612eda82612798565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203612f0c57612f0b612c54565b5b600182019050919050565b7f454c4f4e3a2074776974746572626f742063616e277420626520746865207a655f8201527f726f206164647265737300000000000000000000000000000000000000000000602082015250565b5f612f71602a8361268d565b9150612f7c82612f17565b604082019050919050565b5f6020820190508181035f830152612f9e81612f65565b9050919050565b7f454c4f4e3a2063616c6c6572206973206e6f74207468652074776974746572625f8201527f6f74000000000000000000000000000000000000000000000000000000000000602082015250565b5f612fff60228361268d565b915061300a82612fa5565b604082019050919050565b5f6020820190508181035f83015261302c81612ff3565b9050919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f6008830261308f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82613054565b6130998683613054565b95508019841693508086168417925050509392505050565b5f819050919050565b5f6130d46130cf6130ca84612798565b6130b1565b612798565b9050919050565b5f819050919050565b6130ed836130ba565b6131016130f9826130db565b848454613060565b825550505050565b5f90565b613115613109565b6131208184846130e4565b505050565b5b81811015613143576131385f8261310d565b600181019050613126565b5050565b601f8211156131885761315981613033565b61316284613045565b81016020851015613171578190505b61318561317d85613045565b830182613125565b50505b505050565b5f82821c905092915050565b5f6131a85f198460080261318d565b1980831691505092915050565b5f6131c08383613199565b9150826002028217905092915050565b6131d982612683565b67ffffffffffffffff8111156131f2576131f16128ec565b5b6131fc8254612c24565b613207828285613147565b5f60209050601f831160018114613238575f8415613226578287015190505b61323085826131b5565b865550613297565b601f19841661324686613033565b5f5b8281101561326d57848901518255600182019150602085019450602081019050613248565b8683101561328a5784890151613286601f891682613199565b8355505b6001600288020188555050505b505050505050565b7f74726164696e6720697320616c7265616479206f70656e0000000000000000005f82015250565b5f6132d360178361268d565b91506132de8261329f565b602082019050919050565b5f6020820190508181035f830152613300816132c7565b9050919050565b5f815190506133158161276e565b92915050565b5f602082840312156133305761332f612736565b5b5f61333d84828501613307565b91505092915050565b5f6040820190506133595f830185612a9a565b6133666020830184612a9a565b9392505050565b5f819050919050565b5f61339061338b6133868461336d565b6130b1565b612798565b9050919050565b6133a081613376565b82525050565b5f60c0820190506133b95f830189612a9a565b6133c6602083018861283c565b6133d36040830187613397565b6133e06060830186613397565b6133ed6080830185612a9a565b6133fa60a083018461283c565b979650505050505050565b5f81519050613413816127a1565b92915050565b5f805f606084860312156134305761342f612736565b5b5f61343d86828701613405565b935050602061344e86828701613405565b925050604061345f86828701613405565b9150509250925092565b5f60408201905061347c5f830185612a9a565b613489602083018461283c565b9392505050565b61349981612809565b81146134a3575f80fd5b50565b5f815190506134b481613490565b92915050565b5f602082840312156134cf576134ce612736565b5b5f6134dc848285016134a6565b91505092915050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f61353f60248361268d565b915061354a826134e5565b604082019050919050565b5f6020820190508181035f83015261356c81613533565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f6135cd60228361268d565b91506135d882613573565b604082019050919050565b5f6020820190508181035f8301526135fa816135c1565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f61365b60258361268d565b915061366682613601565b604082019050919050565b5f6020820190508181035f8301526136888161364f565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f6136e960238361268d565b91506136f48261368f565b604082019050919050565b5f6020820190508181035f830152613716816136dd565b9050919050565b7f5472616e7366657220616d6f756e74206d7573742062652067726561746572205f8201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b5f61377760298361268d565b91506137828261371d565b604082019050919050565b5f6020820190508181035f8301526137a48161376b565b9050919050565b7f4578636565647320746865205f6d61785478416d6f756e742e000000000000005f82015250565b5f6137df60198361268d565b91506137ea826137ab565b602082019050919050565b5f6020820190508181035f83015261380c816137d3565b9050919050565b5f61381d82612798565b915061382883612798565b92508282019050808211156138405761383f612c54565b5b92915050565b7f4578636565647320746865206d617857616c6c657453697a652e0000000000005f82015250565b5f61387a601a8361268d565b915061388582613846565b602082019050919050565b5f6020820190508181035f8301526138a78161386e565b9050919050565b5f6138b882612798565b91506138c383612798565b92508282039050818111156138db576138da612c54565b5b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f61391882612798565b915061392383612798565b925082613933576139326138e1565b5b828204905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f5f8201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b5f61399860218361268d565b91506139a38261393e565b604082019050919050565b5f6020820190508181035f8301526139c58161398c565b9050919050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b6139fe8161275d565b82525050565b5f613a0f83836139f5565b60208301905092915050565b5f602082019050919050565b5f613a31826139cc565b613a3b81856139d6565b9350613a46836139e6565b805f5b83811015613a76578151613a5d8882613a04565b9750613a6883613a1b565b925050600181019050613a49565b5085935050505092915050565b5f60a082019050613a965f83018861283c565b613aa36020830187613397565b8181036040830152613ab58186613a27565b9050613ac46060830185612a9a565b613ad1608083018461283c565b9695505050505050565b7f536166654d6174683a206164646974696f6e206f766572666c6f7700000000005f82015250565b5f613b0f601b8361268d565b9150613b1a82613adb565b602082019050919050565b5f6020820190508181035f830152613b3c81613b03565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220a2ad5742d9dc3d9352e71a5dd999b3244cb4821b564caa8ed6c2138c13a9b54664736f6c6343000814003354484953204e414d45204348414e47455320455645525954494d4520454c4f4e20545745455453

Deployed Bytecode

0x60806040526004361061014e575f3560e01c80638d5970ed116100b5578063b3a8e8e81161006e578063b3a8e8e81461047b578063bf474bed146104a3578063c9567bf9146104cd578063d34628cc146104e3578063dd62ed3e1461050b578063ea275fde1461054757610155565b80638d5970ed1461036f5780638da5cb5b146103995780638f9a55c0146103c357806395d89b41146103ed57806397f69fbf14610417578063a9059cbb1461043f57610155565b806331c2d8471161010757806331c2d847146102795780633bbac579146102a157806370a08231146102dd578063715018a614610319578063751039fc1461032f5780637d1db4a51461034557610155565b806306fdde0314610159578063095ea7b3146101835780630faee56f146101bf57806318160ddd146101e957806323b872dd14610213578063313ce5671461024f57610155565b3661015557005b5f80fd5b348015610164575f80fd5b5061016d61056f565b60405161017a919061270d565b60405180910390f35b34801561018e575f80fd5b506101a960048036038101906101a491906127cb565b6105ff565b6040516101b69190612823565b60405180910390f35b3480156101ca575f80fd5b506101d361061c565b6040516101e0919061284b565b60405180910390f35b3480156101f4575f80fd5b506101fd610622565b60405161020a919061284b565b60405180910390f35b34801561021e575f80fd5b5061023960048036038101906102349190612864565b610646565b6040516102469190612823565b60405180910390f35b34801561025a575f80fd5b5061026361071a565b60405161027091906128cf565b60405180910390f35b348015610284575f80fd5b5061029f600480360381019061029a9190612a28565b610722565b005b3480156102ac575f80fd5b506102c760048036038101906102c29190612a6f565b610846565b6040516102d49190612823565b60405180910390f35b3480156102e8575f80fd5b5061030360048036038101906102fe9190612a6f565b610898565b604051610310919061284b565b60405180910390f35b348015610324575f80fd5b5061032d6108de565b005b34801561033a575f80fd5b50610343610a2c565b005b348015610350575f80fd5b50610359610b5e565b604051610366919061284b565b60405180910390f35b34801561037a575f80fd5b50610383610b64565b6040516103909190612aa9565b60405180910390f35b3480156103a4575f80fd5b506103ad610b8c565b6040516103ba9190612aa9565b60405180910390f35b3480156103ce575f80fd5b506103d7610bb3565b6040516103e4919061284b565b60405180910390f35b3480156103f8575f80fd5b50610401610bb9565b60405161040e919061270d565b60405180910390f35b348015610422575f80fd5b5061043d60048036038101906104389190612a6f565b610c49565b005b34801561044a575f80fd5b50610465600480360381019061046091906127cb565b610d8e565b6040516104729190612823565b60405180910390f35b348015610486575f80fd5b506104a1600480360381019061049c9190612b72565b610dab565b005b3480156104ae575f80fd5b506104b7610e54565b6040516104c4919061284b565b60405180910390f35b3480156104d8575f80fd5b506104e1610e5a565b005b3480156104ee575f80fd5b5061050960048036038101906105049190612a28565b611384565b005b348015610516575f80fd5b50610531600480360381019061052c9190612bb9565b6114a9565b60405161053e919061284b565b60405180910390f35b348015610552575f80fd5b5061056d60048036038101906105689190612b72565b61152b565b005b6060600f805461057e90612c24565b80601f01602080910402602001604051908101604052809291908181526020018280546105aa90612c24565b80156105f55780601f106105cc576101008083540402835291602001916105f5565b820191905f5260205f20905b8154815290600101906020018083116105d857829003601f168201915b5050505050905090565b5f61061261060b6115d4565b84846115db565b6001905092915050565b60155481565b5f6009600a6106319190612db0565b64019b45a5006106419190612dfa565b905090565b5f61065284848461179e565b61070f8461065e6115d4565b61070a85604051806060016040528060288152602001613b446028913960025f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6106c16115d4565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461215e9092919063ffffffff16565b6115db565b600190509392505050565b5f6009905090565b61072a6115d4565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146107b6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107ad90612e85565b60405180910390fd5b5f5b8151811015610842575f60045f8484815181106107d8576107d7612ea3565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550808061083a90612ed0565b9150506107b8565b5050565b5f60045f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff169050919050565b5f60015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b6108e66115d4565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610972576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161096990612e85565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f805f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b610a346115d4565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ac0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ab790612e85565b60405180910390fd5b6009600a610ace9190612db0565b64019b45a500610ade9190612dfa565b6012819055506009600a610af29190612db0565b64019b45a500610b029190612dfa565b6013819055507f947f344d56e1e8c70dc492fb94c4ddddd490c016aab685f5e7e47b2e85cb44cf6009600a610b379190612db0565b64019b45a500610b479190612dfa565b604051610b54919061284b565b60405180910390a1565b60125481565b5f60115f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60135481565b606060108054610bc890612c24565b80601f0160208091040260200160405190810160405280929190818152602001828054610bf490612c24565b8015610c3f5780601f10610c1657610100808354040283529160200191610c3f565b820191905f5260205f20905b815481529060010190602001808311610c2257829003601f168201915b5050505050905090565b610c516115d4565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610cdd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cd490612e85565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610d4b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d4290612f87565b60405180910390fd5b8060115f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b5f610da1610d9a6115d4565b848461179e565b6001905092915050565b60115f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610deb6115d4565b73ffffffffffffffffffffffffffffffffffffffff1614610e41576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e3890613015565b60405180910390fd5b8060109081610e5091906131d0565b5050565b60145481565b610e626115d4565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610eee576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ee590612e85565b60405180910390fd5b601760149054906101000a900460ff1615610f3e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f35906132e9565b60405180910390fd5b737a250d5630b4cf539739df2c5dacb4c659f2488d60165f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550610fdb3060165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166009600a610fc69190612db0565b64019b45a500610fd69190612dfa565b6115db565b60165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015611045573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611069919061331b565b73ffffffffffffffffffffffffffffffffffffffff1663c9c653963060165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156110ef573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611113919061331b565b6040518363ffffffff1660e01b8152600401611130929190613346565b6020604051808303815f875af115801561114c573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611170919061331b565b60175f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71947306111f730610898565b5f80611201610b8c565b426040518863ffffffff1660e01b8152600401611223969594939291906133a6565b60606040518083038185885af115801561123f573d5f803e3d5ffd5b50505050506040513d601f19601f820116820180604052508101906112649190613419565b50505060175f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b360165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b8152600401611304929190613469565b6020604051808303815f875af1158015611320573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061134491906134ba565b506001601760166101000a81548160ff0219169083151502179055506001601760146101000a81548160ff02191690831515021790555043600681905550565b61138c6115d4565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611418576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161140f90612e85565b60405180910390fd5b5f5b81518110156114a557600160045f84848151811061143b5761143a612ea3565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550808061149d90612ed0565b91505061141a565b5050565b5f60025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b60115f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661156b6115d4565b73ffffffffffffffffffffffffffffffffffffffff16146115c1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115b890613015565b60405180910390fd5b80600f90816115d091906131d0565b5050565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611649576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161164090613555565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036116b7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116ae906135e3565b60405180910390fd5b8060025f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611791919061284b565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361180c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161180390613671565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361187a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611871906136ff565b60405180910390fd5b5f81116118bc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118b39061378d565b60405180910390fd5b5f6118c5610b8c565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141580156119335750611903610b8c565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611eae5760045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff161580156119d6575060045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b6119de575f80fd5b611a1a6064611a0c600b54600e54116119f9576007546119fd565b6009545b856121c090919063ffffffff16565b61223790919063ffffffff16565b905060175f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148015611ac5575060165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015611b18575060035f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15611bfb57601254821115611b62576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b59906137f5565b60405180910390fd5b60135482611b6f85610898565b611b799190613813565b1115611bba576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bb190613890565b60405180910390fd5b436003600654611bca9190613813565b1115611be357611bd983612280565b15611be2575f80fd5b5b600e5f815480929190611bf590612ed0565b91905055505b60175f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015611c9f575060035f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15611cfd5760135482611cb185610898565b611cbb9190613813565b1115611cfc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cf390613890565b60405180910390fd5b5b60175f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148015611d8557503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b15611dc957611dc66064611db8600c54600e5411611da557600854611da9565b600a545b856121c090919063ffffffff16565b61223790919063ffffffff16565b90505b5f611dd330610898565b9050601760159054906101000a900460ff16158015611e3e575060175f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16145b8015611e565750601760169054906101000a900460ff165b8015611e63575060145481115b8015611e725750600d54600e54115b15611eac57611e94611e8f84611e8a84601554612291565b612291565b6122a9565b5f4790505f811115611eaa57611ea947612514565b5b505b505b5f811115611fad57611f068160015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461257c90919063ffffffff16565b60015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611fa4919061284b565b60405180910390a35b611ffd8260015f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546125d990919063ffffffff16565b60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055506120a061205482846125d990919063ffffffff16565b60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461257c90919063ffffffff16565b60015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef61214384866125d990919063ffffffff16565b604051612150919061284b565b60405180910390a350505050565b5f8383111582906121a5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161219c919061270d565b60405180910390fd5b505f83856121b391906138ae565b9050809150509392505050565b5f8083036121d0575f9050612231565b5f82846121dd9190612dfa565b90508284826121ec919061390e565b1461222c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612223906139ae565b60405180910390fd5b809150505b92915050565b5f61227883836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612622565b905092915050565b5f80823b90505f8111915050919050565b5f81831161229f57826122a1565b815b905092915050565b6001601760156101000a81548160ff0219169083151502179055505f600267ffffffffffffffff8111156122e0576122df6128ec565b5b60405190808252806020026020018201604052801561230e5781602001602082028036833780820191505090505b50905030815f8151811061232557612324612ea3565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156123c9573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906123ed919061331b565b8160018151811061240157612400612ea3565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506124673060165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846115db565b60165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b81526004016124c9959493929190613a83565b5f604051808303815f87803b1580156124e0575f80fd5b505af11580156124f2573d5f803e3d5ffd5b50505050505f601760156101000a81548160ff02191690831515021790555050565b60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f19350505050158015612578573d5f803e3d5ffd5b5050565b5f80828461258a9190613813565b9050838110156125cf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125c690613b25565b60405180910390fd5b8091505092915050565b5f61261a83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061215e565b905092915050565b5f8083118290612668576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161265f919061270d565b60405180910390fd5b505f8385612676919061390e565b9050809150509392505050565b5f81519050919050565b5f82825260208201905092915050565b5f5b838110156126ba57808201518184015260208101905061269f565b5f8484015250505050565b5f601f19601f8301169050919050565b5f6126df82612683565b6126e9818561268d565b93506126f981856020860161269d565b612702816126c5565b840191505092915050565b5f6020820190508181035f83015261272581846126d5565b905092915050565b5f604051905090565b5f80fd5b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6127678261273e565b9050919050565b6127778161275d565b8114612781575f80fd5b50565b5f813590506127928161276e565b92915050565b5f819050919050565b6127aa81612798565b81146127b4575f80fd5b50565b5f813590506127c5816127a1565b92915050565b5f80604083850312156127e1576127e0612736565b5b5f6127ee85828601612784565b92505060206127ff858286016127b7565b9150509250929050565b5f8115159050919050565b61281d81612809565b82525050565b5f6020820190506128365f830184612814565b92915050565b61284581612798565b82525050565b5f60208201905061285e5f83018461283c565b92915050565b5f805f6060848603121561287b5761287a612736565b5b5f61288886828701612784565b935050602061289986828701612784565b92505060406128aa868287016127b7565b9150509250925092565b5f60ff82169050919050565b6128c9816128b4565b82525050565b5f6020820190506128e25f8301846128c0565b92915050565b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b612922826126c5565b810181811067ffffffffffffffff82111715612941576129406128ec565b5b80604052505050565b5f61295361272d565b905061295f8282612919565b919050565b5f67ffffffffffffffff82111561297e5761297d6128ec565b5b602082029050602081019050919050565b5f80fd5b5f6129a56129a084612964565b61294a565b905080838252602082019050602084028301858111156129c8576129c761298f565b5b835b818110156129f157806129dd8882612784565b8452602084019350506020810190506129ca565b5050509392505050565b5f82601f830112612a0f57612a0e6128e8565b5b8135612a1f848260208601612993565b91505092915050565b5f60208284031215612a3d57612a3c612736565b5b5f82013567ffffffffffffffff811115612a5a57612a5961273a565b5b612a66848285016129fb565b91505092915050565b5f60208284031215612a8457612a83612736565b5b5f612a9184828501612784565b91505092915050565b612aa38161275d565b82525050565b5f602082019050612abc5f830184612a9a565b92915050565b5f80fd5b5f67ffffffffffffffff821115612ae057612adf6128ec565b5b612ae9826126c5565b9050602081019050919050565b828183375f83830152505050565b5f612b16612b1184612ac6565b61294a565b905082815260208101848484011115612b3257612b31612ac2565b5b612b3d848285612af6565b509392505050565b5f82601f830112612b5957612b586128e8565b5b8135612b69848260208601612b04565b91505092915050565b5f60208284031215612b8757612b86612736565b5b5f82013567ffffffffffffffff811115612ba457612ba361273a565b5b612bb084828501612b45565b91505092915050565b5f8060408385031215612bcf57612bce612736565b5b5f612bdc85828601612784565b9250506020612bed85828601612784565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f6002820490506001821680612c3b57607f821691505b602082108103612c4e57612c4d612bf7565b5b50919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b6001851115612cd657808604811115612cb257612cb1612c54565b5b6001851615612cc15780820291505b8081029050612ccf85612c81565b9450612c96565b94509492505050565b5f82612cee5760019050612da9565b81612cfb575f9050612da9565b8160018114612d115760028114612d1b57612d4a565b6001915050612da9565b60ff841115612d2d57612d2c612c54565b5b8360020a915084821115612d4457612d43612c54565b5b50612da9565b5060208310610133831016604e8410600b8410161715612d7f5782820a905083811115612d7a57612d79612c54565b5b612da9565b612d8c8484846001612c8d565b92509050818404811115612da357612da2612c54565b5b81810290505b9392505050565b5f612dba82612798565b9150612dc5836128b4565b9250612df27fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484612cdf565b905092915050565b5f612e0482612798565b9150612e0f83612798565b9250828202612e1d81612798565b91508282048414831517612e3457612e33612c54565b5b5092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f612e6f60208361268d565b9150612e7a82612e3b565b602082019050919050565b5f6020820190508181035f830152612e9c81612e63565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f612eda82612798565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203612f0c57612f0b612c54565b5b600182019050919050565b7f454c4f4e3a2074776974746572626f742063616e277420626520746865207a655f8201527f726f206164647265737300000000000000000000000000000000000000000000602082015250565b5f612f71602a8361268d565b9150612f7c82612f17565b604082019050919050565b5f6020820190508181035f830152612f9e81612f65565b9050919050565b7f454c4f4e3a2063616c6c6572206973206e6f74207468652074776974746572625f8201527f6f74000000000000000000000000000000000000000000000000000000000000602082015250565b5f612fff60228361268d565b915061300a82612fa5565b604082019050919050565b5f6020820190508181035f83015261302c81612ff3565b9050919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f6008830261308f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82613054565b6130998683613054565b95508019841693508086168417925050509392505050565b5f819050919050565b5f6130d46130cf6130ca84612798565b6130b1565b612798565b9050919050565b5f819050919050565b6130ed836130ba565b6131016130f9826130db565b848454613060565b825550505050565b5f90565b613115613109565b6131208184846130e4565b505050565b5b81811015613143576131385f8261310d565b600181019050613126565b5050565b601f8211156131885761315981613033565b61316284613045565b81016020851015613171578190505b61318561317d85613045565b830182613125565b50505b505050565b5f82821c905092915050565b5f6131a85f198460080261318d565b1980831691505092915050565b5f6131c08383613199565b9150826002028217905092915050565b6131d982612683565b67ffffffffffffffff8111156131f2576131f16128ec565b5b6131fc8254612c24565b613207828285613147565b5f60209050601f831160018114613238575f8415613226578287015190505b61323085826131b5565b865550613297565b601f19841661324686613033565b5f5b8281101561326d57848901518255600182019150602085019450602081019050613248565b8683101561328a5784890151613286601f891682613199565b8355505b6001600288020188555050505b505050505050565b7f74726164696e6720697320616c7265616479206f70656e0000000000000000005f82015250565b5f6132d360178361268d565b91506132de8261329f565b602082019050919050565b5f6020820190508181035f830152613300816132c7565b9050919050565b5f815190506133158161276e565b92915050565b5f602082840312156133305761332f612736565b5b5f61333d84828501613307565b91505092915050565b5f6040820190506133595f830185612a9a565b6133666020830184612a9a565b9392505050565b5f819050919050565b5f61339061338b6133868461336d565b6130b1565b612798565b9050919050565b6133a081613376565b82525050565b5f60c0820190506133b95f830189612a9a565b6133c6602083018861283c565b6133d36040830187613397565b6133e06060830186613397565b6133ed6080830185612a9a565b6133fa60a083018461283c565b979650505050505050565b5f81519050613413816127a1565b92915050565b5f805f606084860312156134305761342f612736565b5b5f61343d86828701613405565b935050602061344e86828701613405565b925050604061345f86828701613405565b9150509250925092565b5f60408201905061347c5f830185612a9a565b613489602083018461283c565b9392505050565b61349981612809565b81146134a3575f80fd5b50565b5f815190506134b481613490565b92915050565b5f602082840312156134cf576134ce612736565b5b5f6134dc848285016134a6565b91505092915050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f61353f60248361268d565b915061354a826134e5565b604082019050919050565b5f6020820190508181035f83015261356c81613533565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f6135cd60228361268d565b91506135d882613573565b604082019050919050565b5f6020820190508181035f8301526135fa816135c1565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f61365b60258361268d565b915061366682613601565b604082019050919050565b5f6020820190508181035f8301526136888161364f565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f6136e960238361268d565b91506136f48261368f565b604082019050919050565b5f6020820190508181035f830152613716816136dd565b9050919050565b7f5472616e7366657220616d6f756e74206d7573742062652067726561746572205f8201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b5f61377760298361268d565b91506137828261371d565b604082019050919050565b5f6020820190508181035f8301526137a48161376b565b9050919050565b7f4578636565647320746865205f6d61785478416d6f756e742e000000000000005f82015250565b5f6137df60198361268d565b91506137ea826137ab565b602082019050919050565b5f6020820190508181035f83015261380c816137d3565b9050919050565b5f61381d82612798565b915061382883612798565b92508282019050808211156138405761383f612c54565b5b92915050565b7f4578636565647320746865206d617857616c6c657453697a652e0000000000005f82015250565b5f61387a601a8361268d565b915061388582613846565b602082019050919050565b5f6020820190508181035f8301526138a78161386e565b9050919050565b5f6138b882612798565b91506138c383612798565b92508282039050818111156138db576138da612c54565b5b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f61391882612798565b915061392383612798565b925082613933576139326138e1565b5b828204905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f5f8201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b5f61399860218361268d565b91506139a38261393e565b604082019050919050565b5f6020820190508181035f8301526139c58161398c565b9050919050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b6139fe8161275d565b82525050565b5f613a0f83836139f5565b60208301905092915050565b5f602082019050919050565b5f613a31826139cc565b613a3b81856139d6565b9350613a46836139e6565b805f5b83811015613a76578151613a5d8882613a04565b9750613a6883613a1b565b925050600181019050613a49565b5085935050505092915050565b5f60a082019050613a965f83018861283c565b613aa36020830187613397565b8181036040830152613ab58186613a27565b9050613ac46060830185612a9a565b613ad1608083018461283c565b9695505050505050565b7f536166654d6174683a206164646974696f6e206f766572666c6f7700000000005f82015250565b5f613b0f601b8361268d565b9150613b1a82613adb565b602082019050919050565b5f6020820190508181035f830152613b3c81613b03565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220a2ad5742d9dc3d9352e71a5dd999b3244cb4821b564caa8ed6c2138c13a9b54664736f6c63430008140033

Deployed Bytecode Sourcemap

3635:8735:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5525:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7050:161;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4798:52;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6494:95;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7219:313;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6403:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11360:162;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11530:83;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6597:119;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2716:148;;;;;;;;;;;;;:::i;:::-;;10921:159;;;;;;;;;;;;;:::i;:::-;;4607:55;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6306:89;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2502:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4669:57;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5616:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6094:204;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6724:167;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5968:118;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4733:58;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11621:707;;;;;;;;;;;;;:::i;:::-;;11188:164;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6899:143;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5850:110;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5525:83;5562:13;5595:5;5588:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5525:83;:::o;7050:161::-;7125:4;7142:39;7151:12;:10;:12::i;:::-;7165:7;7174:6;7142:8;:39::i;:::-;7199:4;7192:11;;7050:161;;;;:::o;4798:52::-;;;;:::o;6494:95::-;6547:7;4374:1;4430:2;:13;;;;:::i;:::-;4417:10;:26;;;;:::i;:::-;6567:14;;6494:95;:::o;7219:313::-;7317:4;7334:36;7344:6;7352:9;7363:6;7334:9;:36::i;:::-;7381:121;7390:6;7398:12;:10;:12::i;:::-;7412:89;7450:6;7412:89;;;;;;;;;;;;;;;;;:11;:19;7424:6;7412:19;;;;;;;;;;;;;;;:33;7432:12;:10;:12::i;:::-;7412:33;;;;;;;;;;;;;;;;:37;;:89;;;;;:::i;:::-;7381:8;:121::i;:::-;7520:4;7513:11;;7219:313;;;;;:::o;6403:83::-;6444:5;4374:1;6462:16;;6403:83;:::o;11360:162::-;2639:12;:10;:12::i;:::-;2629:22;;:6;;;;;;;;;;:22;;;2621:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;11433:6:::1;11428:87;11449:6;:13;11445:1;:17;11428:87;;;11500:5;11482:4;:15;11487:6;11494:1;11487:9;;;;;;;;:::i;:::-;;;;;;;;11482:15;;;;;;;;;;;;;;;;:23;;;;;;;;;;;;;;;;;;11464:3;;;;;:::i;:::-;;;;11428:87;;;;11360:162:::0;:::o;11530:83::-;11577:4;11598;:7;11603:1;11598:7;;;;;;;;;;;;;;;;;;;;;;;;;11591:14;;11530:83;;;:::o;6597:119::-;6663:7;6690:9;:18;6700:7;6690:18;;;;;;;;;;;;;;;;6683:25;;6597:119;;;:::o;2716:148::-;2639:12;:10;:12::i;:::-;2629:22;;:6;;;;;;;;;;:22;;;2621:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;2823:1:::1;2786:40;;2807:6;::::0;::::1;;;;;;;;2786:40;;;;;;;;;;;;2854:1;2837:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;2716:148::o:0;10921:159::-;2639:12;:10;:12::i;:::-;2629:22;;:6;;;;;;;;;;:22;;;2621:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;4374:1:::1;4430:2;:13;;;;:::i;:::-;4417:10;:26;;;;:::i;:::-;10974:12;:22;;;;4374:1;4430:2;:13;;;;:::i;:::-;4417:10;:26;;;;:::i;:::-;11007:14;:22;;;;11045:27;4374:1;4430:2;:13;;;;:::i;:::-;4417:10;:26;;;;:::i;:::-;11045:27;;;;;;:::i;:::-;;;;;;;;10921:159::o:0;4607:55::-;;;;:::o;6306:89::-;6349:7;6376:11;;;;;;;;;;;6369:18;;6306:89;:::o;2502:79::-;2540:7;2567:6;;;;;;;;;;;2560:13;;2502:79;:::o;4669:57::-;;;;:::o;5616:87::-;5655:13;5688:7;5681:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5616:87;:::o;6094:204::-;2639:12;:10;:12::i;:::-;2629:22;;:6;;;;;;;;;;:22;;;2621:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;6203:1:::1;6178:27;;:13;:27;;::::0;6170:82:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;6277:13;6263:11;;:27;;;;;;;;;;;;;;;;;;6094:204:::0;:::o;6724:167::-;6802:4;6819:42;6829:12;:10;:12::i;:::-;6843:9;6854:6;6819:9;:42::i;:::-;6879:4;6872:11;;6724:167;;;;:::o;5968:118::-;5772:11;;;;;;;;;;;5756:27;;:12;:10;:12::i;:::-;:27;;;5748:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;6069:9:::1;6059:7;:19;;;;;;:::i;:::-;;5968:118:::0;:::o;4733:58::-;;;;:::o;11621:707::-;2639:12;:10;:12::i;:::-;2629:22;;:6;;;;;;;;;;:22;;;2621:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;11685:11:::1;;;;;;;;;;;11684:12;11676:47;;;;;;;;;;;;:::i;:::-;;;;;;;;;11771:42;11734:15;;:80;;;;;;;;;;;;;;;;;;11825:58;11842:4;11857:15;;;;;;;;;;;4374:1;4430:2;:13;;;;:::i;:::-;4417:10;:26;;;;:::i;:::-;11825:8;:58::i;:::-;11928:15;;;;;;;;;;;:23;;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11910:55;;;11974:4;11981:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11910:94;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11894:13;;:110;;;;;;;;;;;;;;;;;;12015:15;;;;;;;;;;;:31;;;12054:21;12085:4;12091:24;12109:4;12091:9;:24::i;:::-;12116:1;12118::::0;12120:7:::1;:5;:7::i;:::-;12128:15;12015:129;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;12162:13;;;;;;;;;;;12155:29;;;12193:15;;;;;;;;;;;12211:14;12155:71;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;12251:4;12237:11;;:18;;;;;;;;;;;;;;;;;;12280:4;12266:11;;:18;;;;;;;;;;;;;;;;;;12308:12;12295:10;:25;;;;11621:707::o:0;11188:164::-;2639:12;:10;:12::i;:::-;2629:22;;:6;;;;;;;;;;:22;;;2621:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;11262:6:::1;11257:88;11278:5;:12;11274:1;:16;11257:88;;;11329:4;11312;:14;11317:5;11323:1;11317:8;;;;;;;;:::i;:::-;;;;;;;;11312:14;;;;;;;;;;;;;;;;:21;;;;;;;;;;;;;;;;;;11292:3;;;;;:::i;:::-;;;;11257:88;;;;11188:164:::0;:::o;6899:143::-;6980:7;7007:11;:18;7019:5;7007:18;;;;;;;;;;;;;;;:27;7026:7;7007:27;;;;;;;;;;;;;;;;7000:34;;6899:143;;;;:::o;5850:110::-;5772:11;;;;;;;;;;;5756:27;;:12;:10;:12::i;:::-;:27;;;5748:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;5945:7:::1;5937:5;:15;;;;;;:::i;:::-;;5850:110:::0;:::o;256:98::-;309:7;336:10;329:17;;256:98;:::o;7540:335::-;7650:1;7633:19;;:5;:19;;;7625:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;7731:1;7712:21;;:7;:21;;;7704:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;7813:6;7783:11;:18;7795:5;7783:18;;;;;;;;;;;;;;;:27;7802:7;7783:27;;;;;;;;;;;;;;;:36;;;;7851:7;7835:32;;7844:5;7835:32;;;7860:6;7835:32;;;;;;:::i;:::-;;;;;;;;7540:335;;;:::o;7883:2228::-;7987:1;7971:18;;:4;:18;;;7963:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;8064:1;8050:16;;:2;:16;;;8042:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;8134:1;8125:6;:10;8117:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;8192:17;8234:7;:5;:7::i;:::-;8226:15;;:4;:15;;;;:32;;;;;8251:7;:5;:7::i;:::-;8245:13;;:2;:13;;;;8226:32;8222:1533;;;8284:4;:10;8289:4;8284:10;;;;;;;;;;;;;;;;;;;;;;;;;8283:11;:24;;;;;8299:4;:8;8304:2;8299:8;;;;;;;;;;;;;;;;;;;;;;;;;8298:9;8283:24;8275:33;;;;;;8335:76;8407:3;8335:67;8357:15;;8347:9;;:25;8346:55;;8387:14;;8346:55;;;8374:12;;8346:55;8335:6;:10;;:67;;;;:::i;:::-;:71;;:76;;;;:::i;:::-;8323:88;;8440:13;;;;;;;;;;;8432:21;;:4;:21;;;:55;;;;;8471:15;;;;;;;;;;;8457:30;;:2;:30;;;;8432:55;:83;;;;;8493:18;:22;8512:2;8493:22;;;;;;;;;;;;;;;;;;;;;;;;;8491:24;8432:83;8428:436;;;8555:12;;8545:6;:22;;8537:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;8650:14;;8640:6;8624:13;8634:2;8624:9;:13::i;:::-;:22;;;;:::i;:::-;:40;;8616:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;8738:12;8733:1;8720:10;;:14;;;;:::i;:::-;:30;8716:103;;;8784:14;8795:2;8784:10;:14::i;:::-;8783:15;8775:24;;;;;;8716:103;8837:9;;:11;;;;;;;;;:::i;:::-;;;;;;8428:436;8890:13;;;;;;;;;;;8884:19;;:2;:19;;;;:47;;;;;8909:18;:22;8928:2;8909:22;;;;;;;;;;;;;;;;;;;;;;;;;8907:24;8884:47;8880:167;;;8986:14;;8976:6;8960:13;8970:2;8960:9;:13::i;:::-;:22;;;;:::i;:::-;:40;;8952:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;8880:167;9072:13;;;;;;;;;;;9066:19;;:2;:19;;;:43;;;;;9104:4;9089:20;;:4;:20;;;;9066:43;9063:174;;;9142:79;9217:3;9142:70;9164:16;;9154:9;;:26;9153:58;;9196:15;;9153:58;;;9182:13;;9153:58;9142:6;:10;;:70;;;;:::i;:::-;:74;;:79;;;;:::i;:::-;9130:91;;9063:174;9253:28;9284:24;9302:4;9284:9;:24::i;:::-;9253:55;;9328:6;;;;;;;;;;;9327:7;:32;;;;;9346:13;;;;;;;;;;;9338:21;;:2;:21;;;9327:32;:47;;;;;9363:11;;;;;;;;;;;9327:47;:89;;;;;9399:17;;9378:20;:38;9327:89;:121;;;;;9430:18;;9420:9;;:28;9327:121;9323:421;;;9469:67;9486:49;9490:6;9497:37;9501:20;9522:11;;9497:3;:37::i;:::-;9486:3;:49::i;:::-;9469:16;:67::i;:::-;9555:26;9584:21;9555:50;;9648:1;9627:18;:22;9624:105;;;9674:35;9687:21;9674:12;:35::i;:::-;9624:105;9450:294;9323:421;8260:1495;8222:1533;9780:1;9770:9;:11;9767:161;;;9820:39;9849:9;9820;:24;9838:4;9820:24;;;;;;;;;;;;;;;;:28;;:39;;;;:::i;:::-;9795:9;:24;9813:4;9795:24;;;;;;;;;;;;;;;:64;;;;9900:4;9877:39;;9886:4;9877:39;;;9906:9;9877:39;;;;;;:::i;:::-;;;;;;;;9767:161;9954:27;9974:6;9954:9;:15;9964:4;9954:15;;;;;;;;;;;;;;;;:19;;:27;;;;:::i;:::-;9938:9;:15;9948:4;9938:15;;;;;;;;;;;;;;;:43;;;;10006:40;10024:21;10035:9;10024:6;:10;;:21;;;;:::i;:::-;10006:9;:13;10016:2;10006:13;;;;;;;;;;;;;;;;:17;;:40;;;;:::i;:::-;9992:9;:13;10002:2;9992:13;;;;;;;;;;;;;;;:54;;;;10077:2;10062:41;;10071:4;10062:41;;;10081:21;10092:9;10081:6;:10;;:21;;;;:::i;:::-;10062:41;;;;;;:::i;:::-;;;;;;;;7952:2159;7883:2228;;;:::o;1394:190::-;1480:7;1513:1;1508;:6;;1516:12;1500:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;1540:9;1556:1;1552;:5;;;;:::i;:::-;1540:17;;1575:1;1568:8;;;1394:190;;;;;:::o;1592:246::-;1650:7;1679:1;1674;:6;1670:47;;1704:1;1697:8;;;;1670:47;1727:9;1743:1;1739;:5;;;;:::i;:::-;1727:17;;1772:1;1767;1763;:5;;;;:::i;:::-;:10;1755:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;1829:1;1822:8;;;1592:246;;;;;:::o;1846:132::-;1904:7;1931:39;1935:1;1938;1931:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;1924:46;;1846:132;;;;:::o;10227:195::-;10286:4;10303:12;10370:7;10358:20;10350:28;;10413:1;10406:4;:8;10399:15;;;10227:195;;;:::o;10121:98::-;10178:7;10205:1;10203;:3;10202:9;;10210:1;10202:9;;;10208:1;10202:9;10195:16;;10121:98;;;;:::o;10430:483::-;5141:4;5132:6;;:13;;;;;;;;;;;;;;;;;;10508:21:::1;10546:1;10532:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10508:40;;10577:4;10559;10564:1;10559:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;10603:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10593:4;10598:1;10593:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;::::0;::::1;10636:62;10653:4;10668:15;;;;;;;;;;;10686:11;10636:8;:62::i;:::-;10709:15;;;;;;;;;;;:66;;;10790:11;10816:1;10832:4;10859;10879:15;10709:196;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;10497:416;5177:5:::0;5168:6;;:14;;;;;;;;;;;;;;;;;;10430:483;:::o;11088:92::-;11145:10;;;;;;;;;;;:19;;:27;11165:6;11145:27;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11088:92;:::o;1063:179::-;1121:7;1141:9;1157:1;1153;:5;;;;:::i;:::-;1141:17;;1182:1;1177;:6;;1169:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;1233:1;1226:8;;;1063:179;;;;:::o;1250:136::-;1308:7;1335:43;1339:1;1342;1335:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;1328:50;;1250:136;;;;:::o;1986:189::-;2072:7;2104:1;2100;:5;2107:12;2092:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;2131:9;2147:1;2143;:5;;;;:::i;:::-;2131:17;;2166:1;2159:8;;;1986: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:246::-;368:1;378:113;392:6;389:1;386:13;378:113;;;477:1;472:3;468:11;462:18;458:1;453:3;449:11;442:39;414:2;411:1;407:10;402:15;;378:113;;;525:1;516:6;511:3;507:16;500:27;349:184;287:246;;;:::o;539:102::-;580:6;631:2;627:7;622:2;615:5;611:14;607:28;597:38;;539:102;;;:::o;647:377::-;735:3;763:39;796:5;763:39;:::i;:::-;818:71;882:6;877:3;818:71;:::i;:::-;811:78;;898:65;956:6;951:3;944:4;937:5;933:16;898:65;:::i;:::-;988:29;1010:6;988:29;:::i;:::-;983:3;979:39;972:46;;739:285;647:377;;;;:::o;1030:313::-;1143:4;1181:2;1170:9;1166:18;1158:26;;1230:9;1224:4;1220:20;1216:1;1205:9;1201:17;1194:47;1258:78;1331:4;1322:6;1258:78;:::i;:::-;1250:86;;1030:313;;;;:::o;1349:75::-;1382:6;1415:2;1409:9;1399:19;;1349:75;:::o;1430:117::-;1539:1;1536;1529:12;1553:117;1662:1;1659;1652:12;1676:126;1713:7;1753:42;1746:5;1742:54;1731:65;;1676:126;;;:::o;1808:96::-;1845:7;1874:24;1892:5;1874:24;:::i;:::-;1863:35;;1808:96;;;:::o;1910:122::-;1983:24;2001:5;1983:24;:::i;:::-;1976:5;1973:35;1963:63;;2022:1;2019;2012:12;1963:63;1910:122;:::o;2038:139::-;2084:5;2122:6;2109:20;2100:29;;2138:33;2165:5;2138:33;:::i;:::-;2038:139;;;;:::o;2183:77::-;2220:7;2249:5;2238:16;;2183:77;;;:::o;2266:122::-;2339:24;2357:5;2339:24;:::i;:::-;2332:5;2329:35;2319:63;;2378:1;2375;2368:12;2319:63;2266:122;:::o;2394:139::-;2440:5;2478:6;2465:20;2456:29;;2494:33;2521:5;2494:33;:::i;:::-;2394:139;;;;:::o;2539:474::-;2607:6;2615;2664:2;2652:9;2643:7;2639:23;2635:32;2632:119;;;2670:79;;:::i;:::-;2632:119;2790:1;2815:53;2860:7;2851:6;2840:9;2836:22;2815:53;:::i;:::-;2805:63;;2761:117;2917:2;2943:53;2988:7;2979:6;2968:9;2964:22;2943:53;:::i;:::-;2933:63;;2888:118;2539:474;;;;;:::o;3019:90::-;3053:7;3096:5;3089:13;3082:21;3071:32;;3019:90;;;:::o;3115:109::-;3196:21;3211:5;3196:21;:::i;:::-;3191:3;3184:34;3115:109;;:::o;3230:210::-;3317:4;3355:2;3344:9;3340:18;3332:26;;3368:65;3430:1;3419:9;3415:17;3406:6;3368:65;:::i;:::-;3230:210;;;;:::o;3446:118::-;3533:24;3551:5;3533:24;:::i;:::-;3528:3;3521:37;3446:118;;:::o;3570:222::-;3663:4;3701:2;3690:9;3686:18;3678:26;;3714:71;3782:1;3771:9;3767:17;3758:6;3714:71;:::i;:::-;3570:222;;;;:::o;3798:619::-;3875:6;3883;3891;3940:2;3928:9;3919:7;3915:23;3911:32;3908:119;;;3946:79;;:::i;:::-;3908:119;4066:1;4091:53;4136:7;4127:6;4116:9;4112:22;4091:53;:::i;:::-;4081:63;;4037:117;4193:2;4219:53;4264:7;4255:6;4244:9;4240:22;4219:53;:::i;:::-;4209:63;;4164:118;4321:2;4347:53;4392:7;4383:6;4372:9;4368:22;4347:53;:::i;:::-;4337:63;;4292:118;3798:619;;;;;:::o;4423:86::-;4458:7;4498:4;4491:5;4487:16;4476:27;;4423:86;;;:::o;4515:112::-;4598:22;4614:5;4598:22;:::i;:::-;4593:3;4586:35;4515:112;;:::o;4633:214::-;4722:4;4760:2;4749:9;4745:18;4737:26;;4773:67;4837:1;4826:9;4822:17;4813:6;4773:67;:::i;:::-;4633:214;;;;:::o;4853:117::-;4962:1;4959;4952:12;4976:180;5024:77;5021:1;5014:88;5121:4;5118:1;5111:15;5145:4;5142:1;5135:15;5162:281;5245:27;5267:4;5245:27;:::i;:::-;5237:6;5233:40;5375:6;5363:10;5360:22;5339:18;5327:10;5324:34;5321:62;5318:88;;;5386:18;;:::i;:::-;5318:88;5426:10;5422:2;5415:22;5205:238;5162:281;;:::o;5449:129::-;5483:6;5510:20;;:::i;:::-;5500:30;;5539:33;5567:4;5559:6;5539:33;:::i;:::-;5449:129;;;:::o;5584:311::-;5661:4;5751:18;5743:6;5740:30;5737:56;;;5773:18;;:::i;:::-;5737:56;5823:4;5815:6;5811:17;5803:25;;5883:4;5877;5873:15;5865:23;;5584:311;;;:::o;5901:117::-;6010:1;6007;6000:12;6041:710;6137:5;6162:81;6178:64;6235:6;6178:64;:::i;:::-;6162:81;:::i;:::-;6153:90;;6263:5;6292:6;6285:5;6278:21;6326:4;6319:5;6315:16;6308:23;;6379:4;6371:6;6367:17;6359:6;6355:30;6408:3;6400:6;6397:15;6394:122;;;6427:79;;:::i;:::-;6394:122;6542:6;6525:220;6559:6;6554:3;6551:15;6525:220;;;6634:3;6663:37;6696:3;6684:10;6663:37;:::i;:::-;6658:3;6651:50;6730:4;6725:3;6721:14;6714:21;;6601:144;6585:4;6580:3;6576:14;6569:21;;6525:220;;;6529:21;6143:608;;6041:710;;;;;:::o;6774:370::-;6845:5;6894:3;6887:4;6879:6;6875:17;6871:27;6861:122;;6902:79;;:::i;:::-;6861:122;7019:6;7006:20;7044:94;7134:3;7126:6;7119:4;7111:6;7107:17;7044:94;:::i;:::-;7035:103;;6851:293;6774:370;;;;:::o;7150:539::-;7234:6;7283:2;7271:9;7262:7;7258:23;7254:32;7251:119;;;7289:79;;:::i;:::-;7251:119;7437:1;7426:9;7422:17;7409:31;7467:18;7459:6;7456:30;7453:117;;;7489:79;;:::i;:::-;7453:117;7594:78;7664:7;7655:6;7644:9;7640:22;7594:78;:::i;:::-;7584:88;;7380:302;7150:539;;;;:::o;7695:329::-;7754:6;7803:2;7791:9;7782:7;7778:23;7774:32;7771:119;;;7809:79;;:::i;:::-;7771:119;7929:1;7954:53;7999:7;7990:6;7979:9;7975:22;7954:53;:::i;:::-;7944:63;;7900:117;7695:329;;;;:::o;8030:118::-;8117:24;8135:5;8117:24;:::i;:::-;8112:3;8105:37;8030:118;;:::o;8154:222::-;8247:4;8285:2;8274:9;8270:18;8262:26;;8298:71;8366:1;8355:9;8351:17;8342:6;8298:71;:::i;:::-;8154:222;;;;:::o;8382:117::-;8491:1;8488;8481:12;8505:308;8567:4;8657:18;8649:6;8646:30;8643:56;;;8679:18;;:::i;:::-;8643:56;8717:29;8739:6;8717:29;:::i;:::-;8709:37;;8801:4;8795;8791:15;8783:23;;8505:308;;;:::o;8819:146::-;8916:6;8911:3;8906;8893:30;8957:1;8948:6;8943:3;8939:16;8932:27;8819:146;;;:::o;8971:425::-;9049:5;9074:66;9090:49;9132:6;9090:49;:::i;:::-;9074:66;:::i;:::-;9065:75;;9163:6;9156:5;9149:21;9201:4;9194:5;9190:16;9239:3;9230:6;9225:3;9221:16;9218:25;9215:112;;;9246:79;;:::i;:::-;9215:112;9336:54;9383:6;9378:3;9373;9336:54;:::i;:::-;9055:341;8971:425;;;;;:::o;9416:340::-;9472:5;9521:3;9514:4;9506:6;9502:17;9498:27;9488:122;;9529:79;;:::i;:::-;9488:122;9646:6;9633:20;9671:79;9746:3;9738:6;9731:4;9723:6;9719:17;9671:79;:::i;:::-;9662:88;;9478:278;9416:340;;;;:::o;9762:509::-;9831:6;9880:2;9868:9;9859:7;9855:23;9851:32;9848:119;;;9886:79;;:::i;:::-;9848:119;10034:1;10023:9;10019:17;10006:31;10064:18;10056:6;10053:30;10050:117;;;10086:79;;:::i;:::-;10050:117;10191:63;10246:7;10237:6;10226:9;10222:22;10191:63;:::i;:::-;10181:73;;9977:287;9762:509;;;;:::o;10277:474::-;10345:6;10353;10402:2;10390:9;10381:7;10377:23;10373:32;10370:119;;;10408:79;;:::i;:::-;10370:119;10528:1;10553:53;10598:7;10589:6;10578:9;10574:22;10553:53;:::i;:::-;10543:63;;10499:117;10655:2;10681:53;10726:7;10717:6;10706:9;10702:22;10681:53;:::i;:::-;10671:63;;10626:118;10277:474;;;;;:::o;10757:180::-;10805:77;10802:1;10795:88;10902:4;10899:1;10892:15;10926:4;10923:1;10916:15;10943:320;10987:6;11024:1;11018:4;11014:12;11004:22;;11071:1;11065:4;11061:12;11092:18;11082:81;;11148:4;11140:6;11136:17;11126:27;;11082:81;11210:2;11202:6;11199:14;11179:18;11176:38;11173:84;;11229:18;;:::i;:::-;11173:84;10994:269;10943:320;;;:::o;11269:180::-;11317:77;11314:1;11307:88;11414:4;11411:1;11404:15;11438:4;11435:1;11428:15;11455:102;11497:8;11544:5;11541:1;11537:13;11516:34;;11455:102;;;:::o;11563:848::-;11624:5;11631:4;11655:6;11646:15;;11679:5;11670:14;;11693:712;11714:1;11704:8;11701:15;11693:712;;;11809:4;11804:3;11800:14;11794:4;11791:24;11788:50;;;11818:18;;:::i;:::-;11788:50;11868:1;11858:8;11854:16;11851:451;;;12283:4;12276:5;12272:16;12263:25;;11851:451;12333:4;12327;12323:15;12315:23;;12363:32;12386:8;12363:32;:::i;:::-;12351:44;;11693:712;;;11563:848;;;;;;;:::o;12417:1073::-;12471:5;12662:8;12652:40;;12683:1;12674:10;;12685:5;;12652:40;12711:4;12701:36;;12728:1;12719:10;;12730:5;;12701:36;12797:4;12845:1;12840:27;;;;12881:1;12876:191;;;;12790:277;;12840:27;12858:1;12849:10;;12860:5;;;12876:191;12921:3;12911:8;12908:17;12905:43;;;12928:18;;:::i;:::-;12905:43;12977:8;12974:1;12970:16;12961:25;;13012:3;13005:5;13002:14;12999:40;;;13019:18;;:::i;:::-;12999:40;13052:5;;;12790:277;;13176:2;13166:8;13163:16;13157:3;13151:4;13148:13;13144:36;13126:2;13116:8;13113:16;13108:2;13102:4;13099:12;13095:35;13079:111;13076:246;;;13232:8;13226:4;13222:19;13213:28;;13267:3;13260:5;13257:14;13254:40;;;13274:18;;:::i;:::-;13254:40;13307:5;;13076:246;13347:42;13385:3;13375:8;13369:4;13366:1;13347:42;:::i;:::-;13332:57;;;;13421:4;13416:3;13412:14;13405:5;13402:25;13399:51;;;13430:18;;:::i;:::-;13399:51;13479:4;13472:5;13468:16;13459:25;;12417:1073;;;;;;:::o;13496:281::-;13554:5;13578:23;13596:4;13578:23;:::i;:::-;13570:31;;13622:25;13638:8;13622:25;:::i;:::-;13610:37;;13666:104;13703:66;13693:8;13687:4;13666:104;:::i;:::-;13657:113;;13496:281;;;;:::o;13783:410::-;13823:7;13846:20;13864:1;13846:20;:::i;:::-;13841:25;;13880:20;13898:1;13880:20;:::i;:::-;13875:25;;13935:1;13932;13928:9;13957:30;13975:11;13957:30;:::i;:::-;13946:41;;14136:1;14127:7;14123:15;14120:1;14117:22;14097:1;14090:9;14070:83;14047:139;;14166:18;;:::i;:::-;14047:139;13831:362;13783:410;;;;:::o;14199:182::-;14339:34;14335:1;14327:6;14323:14;14316:58;14199:182;:::o;14387:366::-;14529:3;14550:67;14614:2;14609:3;14550:67;:::i;:::-;14543:74;;14626:93;14715:3;14626:93;:::i;:::-;14744:2;14739:3;14735:12;14728:19;;14387:366;;;:::o;14759:419::-;14925:4;14963:2;14952:9;14948:18;14940:26;;15012:9;15006:4;15002:20;14998:1;14987:9;14983:17;14976:47;15040:131;15166:4;15040:131;:::i;:::-;15032:139;;14759:419;;;:::o;15184:180::-;15232:77;15229:1;15222:88;15329:4;15326:1;15319:15;15353:4;15350:1;15343:15;15370:233;15409:3;15432:24;15450:5;15432:24;:::i;:::-;15423:33;;15478:66;15471:5;15468:77;15465:103;;15548:18;;:::i;:::-;15465:103;15595:1;15588:5;15584:13;15577:20;;15370:233;;;:::o;15609:229::-;15749:34;15745:1;15737:6;15733:14;15726:58;15818:12;15813:2;15805:6;15801:15;15794:37;15609:229;:::o;15844:366::-;15986:3;16007:67;16071:2;16066:3;16007:67;:::i;:::-;16000:74;;16083:93;16172:3;16083:93;:::i;:::-;16201:2;16196:3;16192:12;16185:19;;15844:366;;;:::o;16216:419::-;16382:4;16420:2;16409:9;16405:18;16397:26;;16469:9;16463:4;16459:20;16455:1;16444:9;16440:17;16433:47;16497:131;16623:4;16497:131;:::i;:::-;16489:139;;16216:419;;;:::o;16641:221::-;16781:34;16777:1;16769:6;16765:14;16758:58;16850:4;16845:2;16837:6;16833:15;16826:29;16641:221;:::o;16868:366::-;17010:3;17031:67;17095:2;17090:3;17031:67;:::i;:::-;17024:74;;17107:93;17196:3;17107:93;:::i;:::-;17225:2;17220:3;17216:12;17209:19;;16868:366;;;:::o;17240:419::-;17406:4;17444:2;17433:9;17429:18;17421:26;;17493:9;17487:4;17483:20;17479:1;17468:9;17464:17;17457:47;17521:131;17647:4;17521:131;:::i;:::-;17513:139;;17240:419;;;:::o;17665:141::-;17714:4;17737:3;17729:11;;17760:3;17757:1;17750:14;17794:4;17791:1;17781:18;17773:26;;17665:141;;;:::o;17812:93::-;17849:6;17896:2;17891;17884:5;17880:14;17876:23;17866:33;;17812:93;;;:::o;17911:107::-;17955:8;18005:5;17999:4;17995:16;17974:37;;17911:107;;;;:::o;18024:393::-;18093:6;18143:1;18131:10;18127:18;18166:97;18196:66;18185:9;18166:97;:::i;:::-;18284:39;18314:8;18303:9;18284:39;:::i;:::-;18272:51;;18356:4;18352:9;18345:5;18341:21;18332:30;;18405:4;18395:8;18391:19;18384:5;18381:30;18371:40;;18100:317;;18024:393;;;;;:::o;18423:60::-;18451:3;18472:5;18465:12;;18423:60;;;:::o;18489:142::-;18539:9;18572:53;18590:34;18599:24;18617:5;18599:24;:::i;:::-;18590:34;:::i;:::-;18572:53;:::i;:::-;18559:66;;18489:142;;;:::o;18637:75::-;18680:3;18701:5;18694:12;;18637:75;;;:::o;18718:269::-;18828:39;18859:7;18828:39;:::i;:::-;18889:91;18938:41;18962:16;18938:41;:::i;:::-;18930:6;18923:4;18917:11;18889:91;:::i;:::-;18883:4;18876:105;18794:193;18718:269;;;:::o;18993:73::-;19038:3;18993:73;:::o;19072:189::-;19149:32;;:::i;:::-;19190:65;19248:6;19240;19234:4;19190:65;:::i;:::-;19125:136;19072:189;;:::o;19267:186::-;19327:120;19344:3;19337:5;19334:14;19327:120;;;19398:39;19435:1;19428:5;19398:39;:::i;:::-;19371:1;19364:5;19360:13;19351:22;;19327:120;;;19267:186;;:::o;19459:543::-;19560:2;19555:3;19552:11;19549:446;;;19594:38;19626:5;19594:38;:::i;:::-;19678:29;19696:10;19678:29;:::i;:::-;19668:8;19664:44;19861:2;19849:10;19846:18;19843:49;;;19882:8;19867:23;;19843:49;19905:80;19961:22;19979:3;19961:22;:::i;:::-;19951:8;19947:37;19934:11;19905:80;:::i;:::-;19564:431;;19549:446;19459:543;;;:::o;20008:117::-;20062:8;20112:5;20106:4;20102:16;20081:37;;20008:117;;;;:::o;20131:169::-;20175:6;20208:51;20256:1;20252:6;20244:5;20241:1;20237:13;20208:51;:::i;:::-;20204:56;20289:4;20283;20279:15;20269:25;;20182:118;20131:169;;;;:::o;20305:295::-;20381:4;20527:29;20552:3;20546:4;20527:29;:::i;:::-;20519:37;;20589:3;20586:1;20582:11;20576:4;20573:21;20565:29;;20305:295;;;;:::o;20605:1395::-;20722:37;20755:3;20722:37;:::i;:::-;20824:18;20816:6;20813:30;20810:56;;;20846:18;;:::i;:::-;20810:56;20890:38;20922:4;20916:11;20890:38;:::i;:::-;20975:67;21035:6;21027;21021:4;20975:67;:::i;:::-;21069:1;21093:4;21080:17;;21125:2;21117:6;21114:14;21142:1;21137:618;;;;21799:1;21816:6;21813:77;;;21865:9;21860:3;21856:19;21850:26;21841:35;;21813:77;21916:67;21976:6;21969:5;21916:67;:::i;:::-;21910:4;21903:81;21772:222;21107:887;;21137:618;21189:4;21185:9;21177:6;21173:22;21223:37;21255:4;21223:37;:::i;:::-;21282:1;21296:208;21310:7;21307:1;21304:14;21296:208;;;21389:9;21384:3;21380:19;21374:26;21366:6;21359:42;21440:1;21432:6;21428:14;21418:24;;21487:2;21476:9;21472:18;21459:31;;21333:4;21330:1;21326:12;21321:17;;21296:208;;;21532:6;21523:7;21520:19;21517:179;;;21590:9;21585:3;21581:19;21575:26;21633:48;21675:4;21667:6;21663:17;21652:9;21633:48;:::i;:::-;21625:6;21618:64;21540:156;21517:179;21742:1;21738;21730:6;21726:14;21722:22;21716:4;21709:36;21144:611;;;21107:887;;20697:1303;;;20605:1395;;:::o;22006:173::-;22146:25;22142:1;22134:6;22130:14;22123:49;22006:173;:::o;22185:366::-;22327:3;22348:67;22412:2;22407:3;22348:67;:::i;:::-;22341:74;;22424:93;22513:3;22424:93;:::i;:::-;22542:2;22537:3;22533:12;22526:19;;22185:366;;;:::o;22557:419::-;22723:4;22761:2;22750:9;22746:18;22738:26;;22810:9;22804:4;22800:20;22796:1;22785:9;22781:17;22774:47;22838:131;22964:4;22838:131;:::i;:::-;22830:139;;22557:419;;;:::o;22982:143::-;23039:5;23070:6;23064:13;23055:22;;23086:33;23113:5;23086:33;:::i;:::-;22982:143;;;;:::o;23131:351::-;23201:6;23250:2;23238:9;23229:7;23225:23;23221:32;23218:119;;;23256:79;;:::i;:::-;23218:119;23376:1;23401:64;23457:7;23448:6;23437:9;23433:22;23401:64;:::i;:::-;23391:74;;23347:128;23131:351;;;;:::o;23488:332::-;23609:4;23647:2;23636:9;23632:18;23624:26;;23660:71;23728:1;23717:9;23713:17;23704:6;23660:71;:::i;:::-;23741:72;23809:2;23798:9;23794:18;23785:6;23741:72;:::i;:::-;23488:332;;;;;:::o;23826:85::-;23871:7;23900:5;23889:16;;23826:85;;;:::o;23917:158::-;23975:9;24008:61;24026:42;24035:32;24061:5;24035:32;:::i;:::-;24026:42;:::i;:::-;24008:61;:::i;:::-;23995:74;;23917:158;;;:::o;24081:147::-;24176:45;24215:5;24176:45;:::i;:::-;24171:3;24164:58;24081:147;;:::o;24234:807::-;24483:4;24521:3;24510:9;24506:19;24498:27;;24535:71;24603:1;24592:9;24588:17;24579:6;24535:71;:::i;:::-;24616:72;24684:2;24673:9;24669:18;24660:6;24616:72;:::i;:::-;24698:80;24774:2;24763:9;24759:18;24750:6;24698:80;:::i;:::-;24788;24864:2;24853:9;24849:18;24840:6;24788:80;:::i;:::-;24878:73;24946:3;24935:9;24931:19;24922:6;24878:73;:::i;:::-;24961;25029:3;25018:9;25014:19;25005:6;24961:73;:::i;:::-;24234:807;;;;;;;;;:::o;25047:143::-;25104:5;25135:6;25129:13;25120:22;;25151:33;25178:5;25151:33;:::i;:::-;25047:143;;;;:::o;25196:663::-;25284:6;25292;25300;25349:2;25337:9;25328:7;25324:23;25320:32;25317:119;;;25355:79;;:::i;:::-;25317:119;25475:1;25500:64;25556:7;25547:6;25536:9;25532:22;25500:64;:::i;:::-;25490:74;;25446:128;25613:2;25639:64;25695:7;25686:6;25675:9;25671:22;25639:64;:::i;:::-;25629:74;;25584:129;25752:2;25778:64;25834:7;25825:6;25814:9;25810:22;25778:64;:::i;:::-;25768:74;;25723:129;25196:663;;;;;:::o;25865:332::-;25986:4;26024:2;26013:9;26009:18;26001:26;;26037:71;26105:1;26094:9;26090:17;26081:6;26037:71;:::i;:::-;26118:72;26186:2;26175:9;26171:18;26162:6;26118:72;:::i;:::-;25865:332;;;;;:::o;26203:116::-;26273:21;26288:5;26273:21;:::i;:::-;26266:5;26263:32;26253:60;;26309:1;26306;26299:12;26253:60;26203:116;:::o;26325:137::-;26379:5;26410:6;26404:13;26395:22;;26426:30;26450:5;26426:30;:::i;:::-;26325:137;;;;:::o;26468:345::-;26535:6;26584:2;26572:9;26563:7;26559:23;26555:32;26552:119;;;26590:79;;:::i;:::-;26552:119;26710:1;26735:61;26788:7;26779:6;26768:9;26764:22;26735:61;:::i;:::-;26725:71;;26681:125;26468:345;;;;:::o;26819:223::-;26959:34;26955:1;26947:6;26943:14;26936:58;27028:6;27023:2;27015:6;27011:15;27004:31;26819:223;:::o;27048:366::-;27190:3;27211:67;27275:2;27270:3;27211:67;:::i;:::-;27204:74;;27287:93;27376:3;27287:93;:::i;:::-;27405:2;27400:3;27396:12;27389:19;;27048:366;;;:::o;27420:419::-;27586:4;27624:2;27613:9;27609:18;27601:26;;27673:9;27667:4;27663:20;27659:1;27648:9;27644:17;27637:47;27701:131;27827:4;27701:131;:::i;:::-;27693:139;;27420:419;;;:::o;27845:221::-;27985:34;27981:1;27973:6;27969:14;27962:58;28054:4;28049:2;28041:6;28037:15;28030:29;27845:221;:::o;28072:366::-;28214:3;28235:67;28299:2;28294:3;28235:67;:::i;:::-;28228:74;;28311:93;28400:3;28311:93;:::i;:::-;28429:2;28424:3;28420:12;28413:19;;28072:366;;;:::o;28444:419::-;28610:4;28648:2;28637:9;28633:18;28625:26;;28697:9;28691:4;28687:20;28683:1;28672:9;28668:17;28661:47;28725:131;28851:4;28725:131;:::i;:::-;28717:139;;28444:419;;;:::o;28869:224::-;29009:34;29005:1;28997:6;28993:14;28986:58;29078:7;29073:2;29065:6;29061:15;29054:32;28869:224;:::o;29099:366::-;29241:3;29262:67;29326:2;29321:3;29262:67;:::i;:::-;29255:74;;29338:93;29427:3;29338:93;:::i;:::-;29456:2;29451:3;29447:12;29440:19;;29099:366;;;:::o;29471:419::-;29637:4;29675:2;29664:9;29660:18;29652:26;;29724:9;29718:4;29714:20;29710:1;29699:9;29695:17;29688:47;29752:131;29878:4;29752:131;:::i;:::-;29744:139;;29471:419;;;:::o;29896:222::-;30036:34;30032:1;30024:6;30020:14;30013:58;30105:5;30100:2;30092:6;30088:15;30081:30;29896:222;:::o;30124:366::-;30266:3;30287:67;30351:2;30346:3;30287:67;:::i;:::-;30280:74;;30363:93;30452:3;30363:93;:::i;:::-;30481:2;30476:3;30472:12;30465:19;;30124:366;;;:::o;30496:419::-;30662:4;30700:2;30689:9;30685:18;30677:26;;30749:9;30743:4;30739:20;30735:1;30724:9;30720:17;30713:47;30777:131;30903:4;30777:131;:::i;:::-;30769:139;;30496:419;;;:::o;30921:228::-;31061:34;31057:1;31049:6;31045:14;31038:58;31130:11;31125:2;31117:6;31113:15;31106:36;30921:228;:::o;31155:366::-;31297:3;31318:67;31382:2;31377:3;31318:67;:::i;:::-;31311:74;;31394:93;31483:3;31394:93;:::i;:::-;31512:2;31507:3;31503:12;31496:19;;31155:366;;;:::o;31527:419::-;31693:4;31731:2;31720:9;31716:18;31708:26;;31780:9;31774:4;31770:20;31766:1;31755:9;31751:17;31744:47;31808:131;31934:4;31808:131;:::i;:::-;31800:139;;31527:419;;;:::o;31952:175::-;32092:27;32088:1;32080:6;32076:14;32069:51;31952:175;:::o;32133:366::-;32275:3;32296:67;32360:2;32355:3;32296:67;:::i;:::-;32289:74;;32372:93;32461:3;32372:93;:::i;:::-;32490:2;32485:3;32481:12;32474:19;;32133:366;;;:::o;32505:419::-;32671:4;32709:2;32698:9;32694:18;32686:26;;32758:9;32752:4;32748:20;32744:1;32733:9;32729:17;32722:47;32786:131;32912:4;32786:131;:::i;:::-;32778:139;;32505:419;;;:::o;32930:191::-;32970:3;32989:20;33007:1;32989:20;:::i;:::-;32984:25;;33023:20;33041:1;33023:20;:::i;:::-;33018:25;;33066:1;33063;33059:9;33052:16;;33087:3;33084:1;33081:10;33078:36;;;33094:18;;:::i;:::-;33078:36;32930:191;;;;:::o;33127:176::-;33267:28;33263:1;33255:6;33251:14;33244:52;33127:176;:::o;33309:366::-;33451:3;33472:67;33536:2;33531:3;33472:67;:::i;:::-;33465:74;;33548:93;33637:3;33548:93;:::i;:::-;33666:2;33661:3;33657:12;33650:19;;33309:366;;;:::o;33681:419::-;33847:4;33885:2;33874:9;33870:18;33862:26;;33934:9;33928:4;33924:20;33920:1;33909:9;33905:17;33898:47;33962:131;34088:4;33962:131;:::i;:::-;33954:139;;33681:419;;;:::o;34106:194::-;34146:4;34166:20;34184:1;34166:20;:::i;:::-;34161:25;;34200:20;34218:1;34200:20;:::i;:::-;34195:25;;34244:1;34241;34237:9;34229:17;;34268:1;34262:4;34259:11;34256:37;;;34273:18;;:::i;:::-;34256:37;34106:194;;;;:::o;34306:180::-;34354:77;34351:1;34344:88;34451:4;34448:1;34441:15;34475:4;34472:1;34465:15;34492:185;34532:1;34549:20;34567:1;34549:20;:::i;:::-;34544:25;;34583:20;34601:1;34583:20;:::i;:::-;34578:25;;34622:1;34612:35;;34627:18;;:::i;:::-;34612:35;34669:1;34666;34662:9;34657:14;;34492:185;;;;:::o;34683:220::-;34823:34;34819:1;34811:6;34807:14;34800:58;34892:3;34887:2;34879:6;34875:15;34868:28;34683:220;:::o;34909:366::-;35051:3;35072:67;35136:2;35131:3;35072:67;:::i;:::-;35065:74;;35148:93;35237:3;35148:93;:::i;:::-;35266:2;35261:3;35257:12;35250:19;;34909:366;;;:::o;35281:419::-;35447:4;35485:2;35474:9;35470:18;35462:26;;35534:9;35528:4;35524:20;35520:1;35509:9;35505:17;35498:47;35562:131;35688:4;35562:131;:::i;:::-;35554:139;;35281:419;;;:::o;35706:114::-;35773:6;35807:5;35801:12;35791:22;;35706:114;;;:::o;35826:184::-;35925:11;35959:6;35954:3;35947:19;35999:4;35994:3;35990:14;35975:29;;35826:184;;;;:::o;36016:132::-;36083:4;36106:3;36098:11;;36136:4;36131:3;36127:14;36119:22;;36016:132;;;:::o;36154:108::-;36231:24;36249:5;36231:24;:::i;:::-;36226:3;36219:37;36154:108;;:::o;36268:179::-;36337:10;36358:46;36400:3;36392:6;36358:46;:::i;:::-;36436:4;36431:3;36427:14;36413:28;;36268:179;;;;:::o;36453:113::-;36523:4;36555;36550:3;36546:14;36538:22;;36453:113;;;:::o;36602:732::-;36721:3;36750:54;36798:5;36750:54;:::i;:::-;36820:86;36899:6;36894:3;36820:86;:::i;:::-;36813:93;;36930:56;36980:5;36930:56;:::i;:::-;37009:7;37040:1;37025:284;37050:6;37047:1;37044:13;37025:284;;;37126:6;37120:13;37153:63;37212:3;37197:13;37153:63;:::i;:::-;37146:70;;37239:60;37292:6;37239:60;:::i;:::-;37229:70;;37085:224;37072:1;37069;37065:9;37060:14;;37025:284;;;37029:14;37325:3;37318:10;;36726:608;;;36602:732;;;;:::o;37340:831::-;37603:4;37641:3;37630:9;37626:19;37618:27;;37655:71;37723:1;37712:9;37708:17;37699:6;37655:71;:::i;:::-;37736:80;37812:2;37801:9;37797:18;37788:6;37736:80;:::i;:::-;37863:9;37857:4;37853:20;37848:2;37837:9;37833:18;37826:48;37891:108;37994:4;37985:6;37891:108;:::i;:::-;37883:116;;38009:72;38077:2;38066:9;38062:18;38053:6;38009:72;:::i;:::-;38091:73;38159:3;38148:9;38144:19;38135:6;38091:73;:::i;:::-;37340:831;;;;;;;;:::o;38177:177::-;38317:29;38313:1;38305:6;38301:14;38294:53;38177:177;:::o;38360:366::-;38502:3;38523:67;38587:2;38582:3;38523:67;:::i;:::-;38516:74;;38599:93;38688:3;38599:93;:::i;:::-;38717:2;38712:3;38708:12;38701:19;;38360:366;;;:::o;38732:419::-;38898:4;38936:2;38925:9;38921:18;38913:26;;38985:9;38979:4;38975:20;38971:1;38960:9;38956:17;38949:47;39013:131;39139:4;39013:131;:::i;:::-;39005:139;;38732:419;;;:::o

Swarm Source

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