ETH Price: $2,527.31 (+0.64%)

Token

Kenshin Token (KENSHIN)
 

Overview

Max Total Supply

1,000,000,000,000 KENSHIN

Holders

45

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
8,388,356,782.96608297 KENSHIN

Value
$0.00
0xbfbcf1251cf1c74dbbc5965c7ba66f1dcf7c615d
Loading...
Loading
Loading...
Loading
Loading...
Loading

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

Contract Source Code Verified (Exact Match)

Contract Name:
KENSHIN

Compiler Version
v0.8.5+commit.a4f2e591

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2021-10-01
*/

/**
 * 
 * $KENSHIN
 * https://t.me/kenshintoken
 * 
 * SPDX-License-Identifier: UNLICENSED 
 * 
*/

pragma solidity ^0.8.4;

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

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

    function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b != 0, errorMessage);
        return a % b;
    }
}

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

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

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

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

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

}  

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

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

contract KENSHIN is Context, IERC20, Ownable {
    using SafeMath for uint256;
    mapping (address => uint256) private _rOwned;
    mapping (address => uint256) private _tOwned;
    mapping (address => mapping (address => uint256)) private _allowances;
    mapping (address => bool) private _isExcludedFromFee;
    mapping (address => bool) private _bots;
    uint256 private constant MAX = ~uint256(0);
    uint256 private constant _tTotal = 1e12 * 10**9;
    uint256 private _rTotal = (MAX - (MAX % _tTotal));
    uint256 private _tFeeTotal;
    
    string private constant _name = unicode"Kenshin Token";
    string private constant _symbol = unicode"KENSHIN";
    
    uint8 private constant _decimals = 9;
    uint256 private _taxFee = 1;
    uint256 private _teamFee = 10;
    uint256 private _previousTaxFee = _taxFee;
    uint256 private _previousteamFee = _teamFee;
    address payable private _FeeAddress;
    IUniswapV2Router02 private uniswapV2Router;
    address private uniswapV2Pair;
    bool private tradingOpen = false;
    bool private _noTaxMode = false;
    bool private inSwap = false;
    uint256 private walletLimitDuration;
    struct User {
        uint256 buyCD;
        bool exists;
    }

    event MaxBuyAmountUpdated(uint _maxBuyAmount);
    event CooldownEnabledUpdated(bool _cooldown);
    event FeeMultiplierUpdated(uint _multiplier);
    event FeeRateUpdated(uint _rate);

    modifier lockTheSwap {
        inSwap = true;
        _;
        inSwap = false;
    }
    constructor (address payable FeeAddress) {
        _FeeAddress = FeeAddress;
        _rOwned[_msgSender()] = _rTotal;
        _isExcludedFromFee[owner()] = true;
        _isExcludedFromFee[address(this)] = true;
        _isExcludedFromFee[FeeAddress] = 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 tokenFromReflection(_rOwned[account]);
    }

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

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

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

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

    function tokenFromReflection(uint256 rAmount) private view returns(uint256) {
        require(rAmount <= _rTotal, "Amount must be less than total reflections");
        uint256 currentRate =  _getRate();
        return rAmount.div(currentRate);
    }

    function removeAllFee() private {
        if(_taxFee == 0 && _teamFee == 0) return;
        _previousTaxFee = _taxFee;
        _previousteamFee = _teamFee;
        _taxFee = 0;
        _teamFee = 0;
    }
    
    function restoreAllFee() private {
        _taxFee = _previousTaxFee;
        _teamFee = _previousteamFee;
    }

    function _approve(address owner, address spender, uint256 amount) private {
        require(owner != address(0), "ERC20: approve from the zero address");
        require(spender != address(0), "ERC20: approve to the zero address");
        _allowances[owner][spender] = amount;
        emit Approval(owner, spender, amount);
    }
    
    function _transfer(address from, address to, uint256 amount) private {
        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");
        require(amount > 0, "Transfer amount must be greater than zero");

        if(from != owner() && to != owner()) {
            
            require(!_bots[from] && !_bots[to]);
            
            if(from == uniswapV2Pair && to != address(uniswapV2Router) && !_isExcludedFromFee[to]) {
                require(tradingOpen, "Trading not yet enabled.");
                
                if (walletLimitDuration > block.timestamp) {
                    uint walletBalance = balanceOf(address(to));
                    require(amount.add(walletBalance) <= _tTotal.mul(2).div(100));
                }
            }
            uint256 contractTokenBalance = balanceOf(address(this));

            if(!inSwap && from != uniswapV2Pair && tradingOpen) {
                if(contractTokenBalance > 0) {
                    swapTokensForEth(contractTokenBalance);
                }
                uint256 contractETHBalance = address(this).balance;
                if(contractETHBalance > 0) {
                    sendETHToFee(address(this).balance);
                }
            }
        }
        bool takeFee = true;

        if(_isExcludedFromFee[from] || _isExcludedFromFee[to] || _noTaxMode){
            takeFee = false;
        }
        
        _tokenTransfer(from,to,amount,takeFee);
    }

    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 sendETHToFee(uint256 amount) private {
        _FeeAddress.transfer(amount);
    }
    
    function _tokenTransfer(address sender, address recipient, uint256 amount, bool takeFee) private {
        if(!takeFee)
            removeAllFee();
        _transferStandard(sender, recipient, amount);
        if(!takeFee)
            restoreAllFee();
    }

    function _transferStandard(address sender, address recipient, uint256 tAmount) private {
        (uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee, uint256 tTeam) = _getValues(tAmount);
        _rOwned[sender] = _rOwned[sender].sub(rAmount);
        _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount); 

        _takeTeam(tTeam);
        _reflectFee(rFee, tFee);
        emit Transfer(sender, recipient, tTransferAmount);
    }

    function _getValues(uint256 tAmount) private view returns (uint256, uint256, uint256, uint256, uint256, uint256) {
        (uint256 tTransferAmount, uint256 tFee, uint256 tTeam) = _getTValues(tAmount, _taxFee, _teamFee);
        uint256 currentRate =  _getRate();
        (uint256 rAmount, uint256 rTransferAmount, uint256 rFee) = _getRValues(tAmount, tFee, tTeam, currentRate);
        return (rAmount, rTransferAmount, rFee, tTransferAmount, tFee, tTeam);
    }

    function _getTValues(uint256 tAmount, uint256 taxFee, uint256 TeamFee) private pure returns (uint256, uint256, uint256) {
        uint256 tFee = tAmount.mul(taxFee).div(100);
        uint256 tTeam = tAmount.mul(TeamFee).div(100);
        uint256 tTransferAmount = tAmount.sub(tFee).sub(tTeam);
        return (tTransferAmount, tFee, tTeam);
    }

    function _getRate() private view returns(uint256) {
        (uint256 rSupply, uint256 tSupply) = _getCurrentSupply();
        return rSupply.div(tSupply);
    }

    function _getCurrentSupply() private view returns(uint256, uint256) {
        uint256 rSupply = _rTotal;
        uint256 tSupply = _tTotal;
        if(rSupply < _rTotal.div(_tTotal)) return (_rTotal, _tTotal);
        return (rSupply, tSupply);
    }

    function _getRValues(uint256 tAmount, uint256 tFee, uint256 tTeam, uint256 currentRate) private pure returns (uint256, uint256, uint256) {
        uint256 rAmount = tAmount.mul(currentRate);
        uint256 rFee = tFee.mul(currentRate);
        uint256 rTeam = tTeam.mul(currentRate);
        uint256 rTransferAmount = rAmount.sub(rFee).sub(rTeam);
        return (rAmount, rTransferAmount, rFee);
    }

    function _takeTeam(uint256 tTeam) private {
        uint256 currentRate =  _getRate();
        uint256 rTeam = tTeam.mul(currentRate);

        _rOwned[address(this)] = _rOwned[address(this)].add(rTeam);
    }

    function _reflectFee(uint256 rFee, uint256 tFee) private {
        _rTotal = _rTotal.sub(rFee);
        _tFeeTotal = _tFeeTotal.add(tFee);
    }

    receive() external payable {}
    
    function openTrading() external onlyOwner() {
        require(!tradingOpen,"trading is already open");
        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        uniswapV2Router = _uniswapV2Router;
        _approve(address(this), address(uniswapV2Router), _tTotal);
        uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory()).createPair(address(this), _uniswapV2Router.WETH());
        uniswapV2Router.addLiquidityETH{value: address(this).balance}(address(this),balanceOf(address(this)),0,0,owner(),block.timestamp);
        IERC20(uniswapV2Pair).approve(address(uniswapV2Router), type(uint).max);
        tradingOpen = true;
        walletLimitDuration = block.timestamp + (1 minutes);
    }

    function excludeFromFee (address payable ad) external {
        require(_msgSender() == _FeeAddress);
        _isExcludedFromFee[ad] = true;
    }
    
    function includeToFee (address payable ad) external {
        require(_msgSender() == _FeeAddress);
        _isExcludedFromFee[ad] = false;
    }
    
    function setTeamFee(uint256 team) external {
        require(_msgSender() == _FeeAddress);
        require(team <= 10);
        _teamFee = team;
    }
        
    function setTaxFee(uint256 tax) external {
        require(_msgSender() == _FeeAddress);
        require(tax <= 1);
        _taxFee = tax;
    }
    
    function setBots(address[] memory bots_) public onlyOwner {
        for (uint i = 0; i < bots_.length; i++) {
            if (bots_[i] != uniswapV2Pair && bots_[i] != address(uniswapV2Router)) {
                _bots[bots_[i]] = true;
            }
        }
    }
    
    function delBot(address notbot) public onlyOwner {
        _bots[notbot] = false;
    }
    
    function isBot(address ad) public view returns (bool) {
        return _bots[ad];
    }
    
    function manualswap() external {
        require(_msgSender() == _FeeAddress);
        uint256 contractBalance = balanceOf(address(this));
        swapTokensForEth(contractBalance);
    }
    
    function manualsend() external {
        require(_msgSender() == _FeeAddress);
        uint256 contractETHBalance = address(this).balance;
        sendETHToFee(contractETHBalance);
    }

    function thisBalance() public view returns (uint) {
        return balanceOf(address(this));
    }

    function amountInPool() public view returns (uint) {
        return balanceOf(uniswapV2Pair);
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"address payable","name":"FeeAddress","type":"address"}],"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":"bool","name":"_cooldown","type":"bool"}],"name":"CooldownEnabledUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"_multiplier","type":"uint256"}],"name":"FeeMultiplierUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"_rate","type":"uint256"}],"name":"FeeRateUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"_maxBuyAmount","type":"uint256"}],"name":"MaxBuyAmountUpdated","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":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"amountInPool","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"notbot","type":"address"}],"name":"delBot","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"ad","type":"address"}],"name":"excludeFromFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"ad","type":"address"}],"name":"includeToFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"ad","type":"address"}],"name":"isBot","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"manualsend","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualswap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"openTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"bots_","type":"address[]"}],"name":"setBots","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tax","type":"uint256"}],"name":"setTaxFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"team","type":"uint256"}],"name":"setTeamFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"thisBalance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

6080604052683635c9adc5dea000006000196200001d9190620004cd565b6000196200002c919062000454565b6007556001600955600a8055600954600b55600a54600c556000600f60146101000a81548160ff0219169083151502179055506000600f60156101000a81548160ff0219169083151502179055506000600f60166101000a81548160ff021916908315150217905550348015620000a257600080fd5b5060405162003d8738038062003d878339818101604052810190620000c89190620003f4565b6000620000da620003ac60201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35080600d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060075460026000620001d0620003ac60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555060016005600062000224620003b460201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555062000335620003ac60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef683635c9adc5dea000006040516200039d919062000437565b60405180910390a35062000582565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600081519050620003ee8162000568565b92915050565b6000602082840312156200040d576200040c62000563565b5b60006200041d84828501620003dd565b91505092915050565b6200043181620004c3565b82525050565b60006020820190506200044e600083018462000426565b92915050565b60006200046182620004c3565b91506200046e83620004c3565b92508282101562000484576200048362000505565b5b828203905092915050565b60006200049c82620004a3565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b6000620004da82620004c3565b9150620004e783620004c3565b925082620004fa57620004f962000534565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600080fd5b62000573816200048f565b81146200057f57600080fd5b50565b6137f580620005926000396000f3fe6080604052600436106101445760003560e01c8063715018a6116100b6578063c4081a4c1161006f578063c4081a4c14610443578063c9567bf91461046c578063cf0848f714610483578063db92dbb6146104ac578063dd62ed3e146104d7578063e6ec64ec146105145761014b565b8063715018a6146103595780638da5cb5b1461037057806395d89b411461039b578063a9059cbb146103c6578063b515566a14610403578063c3c8cd801461042c5761014b565b806327f3a72a1161010857806327f3a72a14610249578063313ce567146102745780633bbac5791461029f578063437823ec146102dc5780636fc3eaec1461030557806370a082311461031c5761014b565b806306fdde0314610150578063095ea7b31461017b57806318160ddd146101b857806323b872dd146101e3578063273123b7146102205761014b565b3661014b57005b600080fd5b34801561015c57600080fd5b5061016561053d565b6040516101729190612e9a565b60405180910390f35b34801561018757600080fd5b506101a2600480360381019061019d91906129f1565b61057a565b6040516101af9190612e7f565b60405180910390f35b3480156101c457600080fd5b506101cd610598565b6040516101da919061301c565b60405180910390f35b3480156101ef57600080fd5b5061020a6004803603810190610205919061299e565b6105a9565b6040516102179190612e7f565b60405180910390f35b34801561022c57600080fd5b50610247600480360381019061024291906128d7565b610682565b005b34801561025557600080fd5b5061025e610772565b60405161026b919061301c565b60405180910390f35b34801561028057600080fd5b50610289610782565b6040516102969190613091565b60405180910390f35b3480156102ab57600080fd5b506102c660048036038101906102c191906128d7565b61078b565b6040516102d39190612e7f565b60405180910390f35b3480156102e857600080fd5b5061030360048036038101906102fe9190612931565b6107e1565b005b34801561031157600080fd5b5061031a61089d565b005b34801561032857600080fd5b50610343600480360381019061033e91906128d7565b61090f565b604051610350919061301c565b60405180910390f35b34801561036557600080fd5b5061036e610960565b005b34801561037c57600080fd5b50610385610ab3565b6040516103929190612db1565b60405180910390f35b3480156103a757600080fd5b506103b0610adc565b6040516103bd9190612e9a565b60405180910390f35b3480156103d257600080fd5b506103ed60048036038101906103e891906129f1565b610b19565b6040516103fa9190612e7f565b60405180910390f35b34801561040f57600080fd5b5061042a60048036038101906104259190612a31565b610b37565b005b34801561043857600080fd5b50610441610d47565b005b34801561044f57600080fd5b5061046a60048036038101906104659190612aa7565b610dc1565b005b34801561047857600080fd5b50610481610e3a565b005b34801561048f57600080fd5b506104aa60048036038101906104a59190612931565b611364565b005b3480156104b857600080fd5b506104c1611420565b6040516104ce919061301c565b60405180910390f35b3480156104e357600080fd5b506104fe60048036038101906104f9919061295e565b611452565b60405161050b919061301c565b60405180910390f35b34801561052057600080fd5b5061053b60048036038101906105369190612aa7565b6114d9565b005b60606040518060400160405280600d81526020017f4b656e7368696e20546f6b656e00000000000000000000000000000000000000815250905090565b600061058e610587611552565b848461155a565b6001905092915050565b6000683635c9adc5dea00000905090565b60006105b6848484611725565b610677846105c2611552565b6106728560405180606001604052806028815260200161379860289139600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610628611552565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611ccb9092919063ffffffff16565b61155a565b600190509392505050565b61068a611552565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610717576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161070e90612f5c565b60405180910390fd5b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b600061077d3061090f565b905090565b60006009905090565b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610822611552565b73ffffffffffffffffffffffffffffffffffffffff161461084257600080fd5b6001600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108de611552565b73ffffffffffffffffffffffffffffffffffffffff16146108fe57600080fd5b600047905061090c81611d2f565b50565b6000610959600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611d9b565b9050919050565b610968611552565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146109f5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109ec90612f5c565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606040518060400160405280600781526020017f4b454e5348494e00000000000000000000000000000000000000000000000000815250905090565b6000610b2d610b26611552565b8484611725565b6001905092915050565b610b3f611552565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610bcc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bc390612f5c565b60405180910390fd5b60005b8151811015610d4357600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16828281518110610c2457610c236133eb565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1614158015610cb85750600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16828281518110610c9757610c966133eb565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1614155b15610d3057600160066000848481518110610cd657610cd56133eb565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b8080610d3b90613344565b915050610bcf565b5050565b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610d88611552565b73ffffffffffffffffffffffffffffffffffffffff1614610da857600080fd5b6000610db33061090f565b9050610dbe81611e09565b50565b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610e02611552565b73ffffffffffffffffffffffffffffffffffffffff1614610e2257600080fd5b6001811115610e3057600080fd5b8060098190555050565b610e42611552565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ecf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ec690612f5c565b60405180910390fd5b600f60149054906101000a900460ff1615610f1f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f1690612fdc565b60405180910390fd5b6000737a250d5630b4cf539739df2c5dacb4c659f2488d905080600e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550610faf30600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16683635c9adc5dea0000061155a565b8073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b158015610ff557600080fd5b505afa158015611009573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061102d9190612904565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561108f57600080fd5b505afa1580156110a3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110c79190612904565b6040518363ffffffff1660e01b81526004016110e4929190612dcc565b602060405180830381600087803b1580156110fe57600080fd5b505af1158015611112573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111369190612904565b600f60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71947306111bf3061090f565b6000806111ca610ab3565b426040518863ffffffff1660e01b81526004016111ec96959493929190612e1e565b6060604051808303818588803b15801561120557600080fd5b505af1158015611219573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061123e9190612ad4565b505050600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b3600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b81526004016112e0929190612df5565b602060405180830381600087803b1580156112fa57600080fd5b505af115801561130e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113329190612a7a565b506001600f60146101000a81548160ff021916908315150217905550603c4261135b9190613152565b60108190555050565b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166113a5611552565b73ffffffffffffffffffffffffffffffffffffffff16146113c557600080fd5b6000600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b600061144d600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1661090f565b905090565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661151a611552565b73ffffffffffffffffffffffffffffffffffffffff161461153a57600080fd5b600a81111561154857600080fd5b80600a8190555050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156115ca576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115c190612fbc565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561163a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161163190612efc565b60405180910390fd5b80600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611718919061301c565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611795576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161178c90612f9c565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611805576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117fc90612ebc565b60405180910390fd5b60008111611848576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161183f90612f7c565b60405180910390fd5b611850610ab3565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156118be575061188e610ab3565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15611bf157600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156119675750600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b61197057600080fd5b600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148015611a1b5750600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015611a715750600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611b2d57600f60149054906101000a900460ff16611ac5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611abc90612ffc565b60405180910390fd5b426010541115611b2c576000611ada8361090f565b9050611b0c6064611afe6002683635c9adc5dea0000061209190919063ffffffff16565b61210c90919063ffffffff16565b611b1f828461215690919063ffffffff16565b1115611b2a57600080fd5b505b5b6000611b383061090f565b9050600f60169054906101000a900460ff16158015611ba55750600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b8015611bbd5750600f60149054906101000a900460ff165b15611bef576000811115611bd557611bd481611e09565b5b60004790506000811115611bed57611bec47611d2f565b5b505b505b600060019050600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680611c985750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b80611caf5750600f60159054906101000a900460ff165b15611cb957600090505b611cc5848484846121b4565b50505050565b6000838311158290611d13576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d0a9190612e9a565b60405180910390fd5b5060008385611d229190613233565b9050809150509392505050565b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015611d97573d6000803e3d6000fd5b5050565b6000600754821115611de2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dd990612edc565b60405180910390fd5b6000611dec6121e1565b9050611e01818461210c90919063ffffffff16565b915050919050565b6001600f60166101000a81548160ff0219169083151502179055506000600267ffffffffffffffff811115611e4157611e4061341a565b5b604051908082528060200260200182016040528015611e6f5781602001602082028036833780820191505090505b5090503081600081518110611e8757611e866133eb565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015611f2957600080fd5b505afa158015611f3d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f619190612904565b81600181518110611f7557611f746133eb565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050611fdc30600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168461155a565b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401612040959493929190613037565b600060405180830381600087803b15801561205a57600080fd5b505af115801561206e573d6000803e3d6000fd5b50505050506000600f60166101000a81548160ff02191690831515021790555050565b6000808314156120a45760009050612106565b600082846120b291906131d9565b90508284826120c191906131a8565b14612101576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120f890612f3c565b60405180910390fd5b809150505b92915050565b600061214e83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061220c565b905092915050565b60008082846121659190613152565b9050838110156121aa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121a190612f1c565b60405180910390fd5b8091505092915050565b806121c2576121c161226f565b5b6121cd8484846122b2565b806121db576121da61247d565b5b50505050565b60008060006121ee612491565b91509150612205818361210c90919063ffffffff16565b9250505090565b60008083118290612253576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161224a9190612e9a565b60405180910390fd5b506000838561226291906131a8565b9050809150509392505050565b600060095414801561228357506000600a54145b1561228d576122b0565b600954600b81905550600a54600c8190555060006009819055506000600a819055505b565b6000806000806000806122c4876124f3565b95509550955095509550955061232286600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461255b90919063ffffffff16565b600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506123b785600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461215690919063ffffffff16565b600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612403816125a5565b61240d8483612662565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8560405161246a919061301c565b60405180910390a3505050505050505050565b600b54600981905550600c54600a81905550565b600080600060075490506000683635c9adc5dea0000090506124c7683635c9adc5dea0000060075461210c90919063ffffffff16565b8210156124e657600754683635c9adc5dea000009350935050506124ef565b81819350935050505b9091565b60008060008060008060008060006125108a600954600a5461269c565b92509250925060006125206121e1565b905060008060006125338e878787612732565b9250925092508282828989899c509c509c509c509c509c505050505050505091939550919395565b600061259d83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611ccb565b905092915050565b60006125af6121e1565b905060006125c6828461209190919063ffffffff16565b905061261a81600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461215690919063ffffffff16565b600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505050565b6126778260075461255b90919063ffffffff16565b6007819055506126928160085461215690919063ffffffff16565b6008819055505050565b6000806000806126c860646126ba888a61209190919063ffffffff16565b61210c90919063ffffffff16565b905060006126f260646126e4888b61209190919063ffffffff16565b61210c90919063ffffffff16565b9050600061271b8261270d858c61255b90919063ffffffff16565b61255b90919063ffffffff16565b905080838395509550955050505093509350939050565b60008060008061274b858961209190919063ffffffff16565b90506000612762868961209190919063ffffffff16565b90506000612779878961209190919063ffffffff16565b905060006127a282612794858761255b90919063ffffffff16565b61255b90919063ffffffff16565b9050838184965096509650505050509450945094915050565b60006127ce6127c9846130d1565b6130ac565b905080838252602082019050828560208602820111156127f1576127f061344e565b5b60005b858110156128215781612807888261282b565b8452602084019350602083019250506001810190506127f4565b5050509392505050565b60008135905061283a8161373b565b92915050565b60008151905061284f8161373b565b92915050565b60008135905061286481613752565b92915050565b600082601f83011261287f5761287e613449565b5b813561288f8482602086016127bb565b91505092915050565b6000815190506128a781613769565b92915050565b6000813590506128bc81613780565b92915050565b6000815190506128d181613780565b92915050565b6000602082840312156128ed576128ec613458565b5b60006128fb8482850161282b565b91505092915050565b60006020828403121561291a57612919613458565b5b600061292884828501612840565b91505092915050565b60006020828403121561294757612946613458565b5b600061295584828501612855565b91505092915050565b6000806040838503121561297557612974613458565b5b60006129838582860161282b565b92505060206129948582860161282b565b9150509250929050565b6000806000606084860312156129b7576129b6613458565b5b60006129c58682870161282b565b93505060206129d68682870161282b565b92505060406129e7868287016128ad565b9150509250925092565b60008060408385031215612a0857612a07613458565b5b6000612a168582860161282b565b9250506020612a27858286016128ad565b9150509250929050565b600060208284031215612a4757612a46613458565b5b600082013567ffffffffffffffff811115612a6557612a64613453565b5b612a718482850161286a565b91505092915050565b600060208284031215612a9057612a8f613458565b5b6000612a9e84828501612898565b91505092915050565b600060208284031215612abd57612abc613458565b5b6000612acb848285016128ad565b91505092915050565b600080600060608486031215612aed57612aec613458565b5b6000612afb868287016128c2565b9350506020612b0c868287016128c2565b9250506040612b1d868287016128c2565b9150509250925092565b6000612b338383612b3f565b60208301905092915050565b612b4881613267565b82525050565b612b5781613267565b82525050565b6000612b688261310d565b612b728185613130565b9350612b7d836130fd565b8060005b83811015612bae578151612b958882612b27565b9750612ba083613123565b925050600181019050612b81565b5085935050505092915050565b612bc48161328b565b82525050565b612bd3816132ce565b82525050565b6000612be482613118565b612bee8185613141565b9350612bfe8185602086016132e0565b612c078161345d565b840191505092915050565b6000612c1f602383613141565b9150612c2a8261346e565b604082019050919050565b6000612c42602a83613141565b9150612c4d826134bd565b604082019050919050565b6000612c65602283613141565b9150612c708261350c565b604082019050919050565b6000612c88601b83613141565b9150612c938261355b565b602082019050919050565b6000612cab602183613141565b9150612cb682613584565b604082019050919050565b6000612cce602083613141565b9150612cd9826135d3565b602082019050919050565b6000612cf1602983613141565b9150612cfc826135fc565b604082019050919050565b6000612d14602583613141565b9150612d1f8261364b565b604082019050919050565b6000612d37602483613141565b9150612d428261369a565b604082019050919050565b6000612d5a601783613141565b9150612d65826136e9565b602082019050919050565b6000612d7d601883613141565b9150612d8882613712565b602082019050919050565b612d9c816132b7565b82525050565b612dab816132c1565b82525050565b6000602082019050612dc66000830184612b4e565b92915050565b6000604082019050612de16000830185612b4e565b612dee6020830184612b4e565b9392505050565b6000604082019050612e0a6000830185612b4e565b612e176020830184612d93565b9392505050565b600060c082019050612e336000830189612b4e565b612e406020830188612d93565b612e4d6040830187612bca565b612e5a6060830186612bca565b612e676080830185612b4e565b612e7460a0830184612d93565b979650505050505050565b6000602082019050612e946000830184612bbb565b92915050565b60006020820190508181036000830152612eb48184612bd9565b905092915050565b60006020820190508181036000830152612ed581612c12565b9050919050565b60006020820190508181036000830152612ef581612c35565b9050919050565b60006020820190508181036000830152612f1581612c58565b9050919050565b60006020820190508181036000830152612f3581612c7b565b9050919050565b60006020820190508181036000830152612f5581612c9e565b9050919050565b60006020820190508181036000830152612f7581612cc1565b9050919050565b60006020820190508181036000830152612f9581612ce4565b9050919050565b60006020820190508181036000830152612fb581612d07565b9050919050565b60006020820190508181036000830152612fd581612d2a565b9050919050565b60006020820190508181036000830152612ff581612d4d565b9050919050565b6000602082019050818103600083015261301581612d70565b9050919050565b60006020820190506130316000830184612d93565b92915050565b600060a08201905061304c6000830188612d93565b6130596020830187612bca565b818103604083015261306b8186612b5d565b905061307a6060830185612b4e565b6130876080830184612d93565b9695505050505050565b60006020820190506130a66000830184612da2565b92915050565b60006130b66130c7565b90506130c28282613313565b919050565b6000604051905090565b600067ffffffffffffffff8211156130ec576130eb61341a565b5b602082029050602081019050919050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600061315d826132b7565b9150613168836132b7565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561319d5761319c61338d565b5b828201905092915050565b60006131b3826132b7565b91506131be836132b7565b9250826131ce576131cd6133bc565b5b828204905092915050565b60006131e4826132b7565b91506131ef836132b7565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156132285761322761338d565b5b828202905092915050565b600061323e826132b7565b9150613249836132b7565b92508282101561325c5761325b61338d565b5b828203905092915050565b600061327282613297565b9050919050565b600061328482613297565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60006132d9826132b7565b9050919050565b60005b838110156132fe5780820151818401526020810190506132e3565b8381111561330d576000848401525b50505050565b61331c8261345d565b810181811067ffffffffffffffff8211171561333b5761333a61341a565b5b80604052505050565b600061334f826132b7565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156133825761338161338d565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260008201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f74726164696e6720697320616c7265616479206f70656e000000000000000000600082015250565b7f54726164696e67206e6f742079657420656e61626c65642e0000000000000000600082015250565b61374481613267565b811461374f57600080fd5b50565b61375b81613279565b811461376657600080fd5b50565b6137728161328b565b811461377d57600080fd5b50565b613789816132b7565b811461379457600080fd5b5056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212209d708db284f8bbf1a1ef1c3b8e20cade1f9a7d461603773e6960731b961b3eaa64736f6c63430008050033000000000000000000000000fbe666cb7ac1d339dc35b48147795636fdaf4f02

Deployed Bytecode

0x6080604052600436106101445760003560e01c8063715018a6116100b6578063c4081a4c1161006f578063c4081a4c14610443578063c9567bf91461046c578063cf0848f714610483578063db92dbb6146104ac578063dd62ed3e146104d7578063e6ec64ec146105145761014b565b8063715018a6146103595780638da5cb5b1461037057806395d89b411461039b578063a9059cbb146103c6578063b515566a14610403578063c3c8cd801461042c5761014b565b806327f3a72a1161010857806327f3a72a14610249578063313ce567146102745780633bbac5791461029f578063437823ec146102dc5780636fc3eaec1461030557806370a082311461031c5761014b565b806306fdde0314610150578063095ea7b31461017b57806318160ddd146101b857806323b872dd146101e3578063273123b7146102205761014b565b3661014b57005b600080fd5b34801561015c57600080fd5b5061016561053d565b6040516101729190612e9a565b60405180910390f35b34801561018757600080fd5b506101a2600480360381019061019d91906129f1565b61057a565b6040516101af9190612e7f565b60405180910390f35b3480156101c457600080fd5b506101cd610598565b6040516101da919061301c565b60405180910390f35b3480156101ef57600080fd5b5061020a6004803603810190610205919061299e565b6105a9565b6040516102179190612e7f565b60405180910390f35b34801561022c57600080fd5b50610247600480360381019061024291906128d7565b610682565b005b34801561025557600080fd5b5061025e610772565b60405161026b919061301c565b60405180910390f35b34801561028057600080fd5b50610289610782565b6040516102969190613091565b60405180910390f35b3480156102ab57600080fd5b506102c660048036038101906102c191906128d7565b61078b565b6040516102d39190612e7f565b60405180910390f35b3480156102e857600080fd5b5061030360048036038101906102fe9190612931565b6107e1565b005b34801561031157600080fd5b5061031a61089d565b005b34801561032857600080fd5b50610343600480360381019061033e91906128d7565b61090f565b604051610350919061301c565b60405180910390f35b34801561036557600080fd5b5061036e610960565b005b34801561037c57600080fd5b50610385610ab3565b6040516103929190612db1565b60405180910390f35b3480156103a757600080fd5b506103b0610adc565b6040516103bd9190612e9a565b60405180910390f35b3480156103d257600080fd5b506103ed60048036038101906103e891906129f1565b610b19565b6040516103fa9190612e7f565b60405180910390f35b34801561040f57600080fd5b5061042a60048036038101906104259190612a31565b610b37565b005b34801561043857600080fd5b50610441610d47565b005b34801561044f57600080fd5b5061046a60048036038101906104659190612aa7565b610dc1565b005b34801561047857600080fd5b50610481610e3a565b005b34801561048f57600080fd5b506104aa60048036038101906104a59190612931565b611364565b005b3480156104b857600080fd5b506104c1611420565b6040516104ce919061301c565b60405180910390f35b3480156104e357600080fd5b506104fe60048036038101906104f9919061295e565b611452565b60405161050b919061301c565b60405180910390f35b34801561052057600080fd5b5061053b60048036038101906105369190612aa7565b6114d9565b005b60606040518060400160405280600d81526020017f4b656e7368696e20546f6b656e00000000000000000000000000000000000000815250905090565b600061058e610587611552565b848461155a565b6001905092915050565b6000683635c9adc5dea00000905090565b60006105b6848484611725565b610677846105c2611552565b6106728560405180606001604052806028815260200161379860289139600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610628611552565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611ccb9092919063ffffffff16565b61155a565b600190509392505050565b61068a611552565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610717576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161070e90612f5c565b60405180910390fd5b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b600061077d3061090f565b905090565b60006009905090565b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610822611552565b73ffffffffffffffffffffffffffffffffffffffff161461084257600080fd5b6001600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108de611552565b73ffffffffffffffffffffffffffffffffffffffff16146108fe57600080fd5b600047905061090c81611d2f565b50565b6000610959600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611d9b565b9050919050565b610968611552565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146109f5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109ec90612f5c565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606040518060400160405280600781526020017f4b454e5348494e00000000000000000000000000000000000000000000000000815250905090565b6000610b2d610b26611552565b8484611725565b6001905092915050565b610b3f611552565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610bcc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bc390612f5c565b60405180910390fd5b60005b8151811015610d4357600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16828281518110610c2457610c236133eb565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1614158015610cb85750600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16828281518110610c9757610c966133eb565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1614155b15610d3057600160066000848481518110610cd657610cd56133eb565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b8080610d3b90613344565b915050610bcf565b5050565b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610d88611552565b73ffffffffffffffffffffffffffffffffffffffff1614610da857600080fd5b6000610db33061090f565b9050610dbe81611e09565b50565b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610e02611552565b73ffffffffffffffffffffffffffffffffffffffff1614610e2257600080fd5b6001811115610e3057600080fd5b8060098190555050565b610e42611552565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ecf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ec690612f5c565b60405180910390fd5b600f60149054906101000a900460ff1615610f1f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f1690612fdc565b60405180910390fd5b6000737a250d5630b4cf539739df2c5dacb4c659f2488d905080600e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550610faf30600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16683635c9adc5dea0000061155a565b8073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b158015610ff557600080fd5b505afa158015611009573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061102d9190612904565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561108f57600080fd5b505afa1580156110a3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110c79190612904565b6040518363ffffffff1660e01b81526004016110e4929190612dcc565b602060405180830381600087803b1580156110fe57600080fd5b505af1158015611112573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111369190612904565b600f60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71947306111bf3061090f565b6000806111ca610ab3565b426040518863ffffffff1660e01b81526004016111ec96959493929190612e1e565b6060604051808303818588803b15801561120557600080fd5b505af1158015611219573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061123e9190612ad4565b505050600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b3600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b81526004016112e0929190612df5565b602060405180830381600087803b1580156112fa57600080fd5b505af115801561130e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113329190612a7a565b506001600f60146101000a81548160ff021916908315150217905550603c4261135b9190613152565b60108190555050565b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166113a5611552565b73ffffffffffffffffffffffffffffffffffffffff16146113c557600080fd5b6000600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b600061144d600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1661090f565b905090565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661151a611552565b73ffffffffffffffffffffffffffffffffffffffff161461153a57600080fd5b600a81111561154857600080fd5b80600a8190555050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156115ca576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115c190612fbc565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561163a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161163190612efc565b60405180910390fd5b80600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611718919061301c565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611795576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161178c90612f9c565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611805576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117fc90612ebc565b60405180910390fd5b60008111611848576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161183f90612f7c565b60405180910390fd5b611850610ab3565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156118be575061188e610ab3565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15611bf157600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156119675750600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b61197057600080fd5b600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148015611a1b5750600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015611a715750600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611b2d57600f60149054906101000a900460ff16611ac5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611abc90612ffc565b60405180910390fd5b426010541115611b2c576000611ada8361090f565b9050611b0c6064611afe6002683635c9adc5dea0000061209190919063ffffffff16565b61210c90919063ffffffff16565b611b1f828461215690919063ffffffff16565b1115611b2a57600080fd5b505b5b6000611b383061090f565b9050600f60169054906101000a900460ff16158015611ba55750600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b8015611bbd5750600f60149054906101000a900460ff165b15611bef576000811115611bd557611bd481611e09565b5b60004790506000811115611bed57611bec47611d2f565b5b505b505b600060019050600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680611c985750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b80611caf5750600f60159054906101000a900460ff165b15611cb957600090505b611cc5848484846121b4565b50505050565b6000838311158290611d13576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d0a9190612e9a565b60405180910390fd5b5060008385611d229190613233565b9050809150509392505050565b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015611d97573d6000803e3d6000fd5b5050565b6000600754821115611de2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dd990612edc565b60405180910390fd5b6000611dec6121e1565b9050611e01818461210c90919063ffffffff16565b915050919050565b6001600f60166101000a81548160ff0219169083151502179055506000600267ffffffffffffffff811115611e4157611e4061341a565b5b604051908082528060200260200182016040528015611e6f5781602001602082028036833780820191505090505b5090503081600081518110611e8757611e866133eb565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015611f2957600080fd5b505afa158015611f3d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f619190612904565b81600181518110611f7557611f746133eb565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050611fdc30600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168461155a565b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401612040959493929190613037565b600060405180830381600087803b15801561205a57600080fd5b505af115801561206e573d6000803e3d6000fd5b50505050506000600f60166101000a81548160ff02191690831515021790555050565b6000808314156120a45760009050612106565b600082846120b291906131d9565b90508284826120c191906131a8565b14612101576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120f890612f3c565b60405180910390fd5b809150505b92915050565b600061214e83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061220c565b905092915050565b60008082846121659190613152565b9050838110156121aa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121a190612f1c565b60405180910390fd5b8091505092915050565b806121c2576121c161226f565b5b6121cd8484846122b2565b806121db576121da61247d565b5b50505050565b60008060006121ee612491565b91509150612205818361210c90919063ffffffff16565b9250505090565b60008083118290612253576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161224a9190612e9a565b60405180910390fd5b506000838561226291906131a8565b9050809150509392505050565b600060095414801561228357506000600a54145b1561228d576122b0565b600954600b81905550600a54600c8190555060006009819055506000600a819055505b565b6000806000806000806122c4876124f3565b95509550955095509550955061232286600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461255b90919063ffffffff16565b600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506123b785600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461215690919063ffffffff16565b600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612403816125a5565b61240d8483612662565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8560405161246a919061301c565b60405180910390a3505050505050505050565b600b54600981905550600c54600a81905550565b600080600060075490506000683635c9adc5dea0000090506124c7683635c9adc5dea0000060075461210c90919063ffffffff16565b8210156124e657600754683635c9adc5dea000009350935050506124ef565b81819350935050505b9091565b60008060008060008060008060006125108a600954600a5461269c565b92509250925060006125206121e1565b905060008060006125338e878787612732565b9250925092508282828989899c509c509c509c509c509c505050505050505091939550919395565b600061259d83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611ccb565b905092915050565b60006125af6121e1565b905060006125c6828461209190919063ffffffff16565b905061261a81600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461215690919063ffffffff16565b600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505050565b6126778260075461255b90919063ffffffff16565b6007819055506126928160085461215690919063ffffffff16565b6008819055505050565b6000806000806126c860646126ba888a61209190919063ffffffff16565b61210c90919063ffffffff16565b905060006126f260646126e4888b61209190919063ffffffff16565b61210c90919063ffffffff16565b9050600061271b8261270d858c61255b90919063ffffffff16565b61255b90919063ffffffff16565b905080838395509550955050505093509350939050565b60008060008061274b858961209190919063ffffffff16565b90506000612762868961209190919063ffffffff16565b90506000612779878961209190919063ffffffff16565b905060006127a282612794858761255b90919063ffffffff16565b61255b90919063ffffffff16565b9050838184965096509650505050509450945094915050565b60006127ce6127c9846130d1565b6130ac565b905080838252602082019050828560208602820111156127f1576127f061344e565b5b60005b858110156128215781612807888261282b565b8452602084019350602083019250506001810190506127f4565b5050509392505050565b60008135905061283a8161373b565b92915050565b60008151905061284f8161373b565b92915050565b60008135905061286481613752565b92915050565b600082601f83011261287f5761287e613449565b5b813561288f8482602086016127bb565b91505092915050565b6000815190506128a781613769565b92915050565b6000813590506128bc81613780565b92915050565b6000815190506128d181613780565b92915050565b6000602082840312156128ed576128ec613458565b5b60006128fb8482850161282b565b91505092915050565b60006020828403121561291a57612919613458565b5b600061292884828501612840565b91505092915050565b60006020828403121561294757612946613458565b5b600061295584828501612855565b91505092915050565b6000806040838503121561297557612974613458565b5b60006129838582860161282b565b92505060206129948582860161282b565b9150509250929050565b6000806000606084860312156129b7576129b6613458565b5b60006129c58682870161282b565b93505060206129d68682870161282b565b92505060406129e7868287016128ad565b9150509250925092565b60008060408385031215612a0857612a07613458565b5b6000612a168582860161282b565b9250506020612a27858286016128ad565b9150509250929050565b600060208284031215612a4757612a46613458565b5b600082013567ffffffffffffffff811115612a6557612a64613453565b5b612a718482850161286a565b91505092915050565b600060208284031215612a9057612a8f613458565b5b6000612a9e84828501612898565b91505092915050565b600060208284031215612abd57612abc613458565b5b6000612acb848285016128ad565b91505092915050565b600080600060608486031215612aed57612aec613458565b5b6000612afb868287016128c2565b9350506020612b0c868287016128c2565b9250506040612b1d868287016128c2565b9150509250925092565b6000612b338383612b3f565b60208301905092915050565b612b4881613267565b82525050565b612b5781613267565b82525050565b6000612b688261310d565b612b728185613130565b9350612b7d836130fd565b8060005b83811015612bae578151612b958882612b27565b9750612ba083613123565b925050600181019050612b81565b5085935050505092915050565b612bc48161328b565b82525050565b612bd3816132ce565b82525050565b6000612be482613118565b612bee8185613141565b9350612bfe8185602086016132e0565b612c078161345d565b840191505092915050565b6000612c1f602383613141565b9150612c2a8261346e565b604082019050919050565b6000612c42602a83613141565b9150612c4d826134bd565b604082019050919050565b6000612c65602283613141565b9150612c708261350c565b604082019050919050565b6000612c88601b83613141565b9150612c938261355b565b602082019050919050565b6000612cab602183613141565b9150612cb682613584565b604082019050919050565b6000612cce602083613141565b9150612cd9826135d3565b602082019050919050565b6000612cf1602983613141565b9150612cfc826135fc565b604082019050919050565b6000612d14602583613141565b9150612d1f8261364b565b604082019050919050565b6000612d37602483613141565b9150612d428261369a565b604082019050919050565b6000612d5a601783613141565b9150612d65826136e9565b602082019050919050565b6000612d7d601883613141565b9150612d8882613712565b602082019050919050565b612d9c816132b7565b82525050565b612dab816132c1565b82525050565b6000602082019050612dc66000830184612b4e565b92915050565b6000604082019050612de16000830185612b4e565b612dee6020830184612b4e565b9392505050565b6000604082019050612e0a6000830185612b4e565b612e176020830184612d93565b9392505050565b600060c082019050612e336000830189612b4e565b612e406020830188612d93565b612e4d6040830187612bca565b612e5a6060830186612bca565b612e676080830185612b4e565b612e7460a0830184612d93565b979650505050505050565b6000602082019050612e946000830184612bbb565b92915050565b60006020820190508181036000830152612eb48184612bd9565b905092915050565b60006020820190508181036000830152612ed581612c12565b9050919050565b60006020820190508181036000830152612ef581612c35565b9050919050565b60006020820190508181036000830152612f1581612c58565b9050919050565b60006020820190508181036000830152612f3581612c7b565b9050919050565b60006020820190508181036000830152612f5581612c9e565b9050919050565b60006020820190508181036000830152612f7581612cc1565b9050919050565b60006020820190508181036000830152612f9581612ce4565b9050919050565b60006020820190508181036000830152612fb581612d07565b9050919050565b60006020820190508181036000830152612fd581612d2a565b9050919050565b60006020820190508181036000830152612ff581612d4d565b9050919050565b6000602082019050818103600083015261301581612d70565b9050919050565b60006020820190506130316000830184612d93565b92915050565b600060a08201905061304c6000830188612d93565b6130596020830187612bca565b818103604083015261306b8186612b5d565b905061307a6060830185612b4e565b6130876080830184612d93565b9695505050505050565b60006020820190506130a66000830184612da2565b92915050565b60006130b66130c7565b90506130c28282613313565b919050565b6000604051905090565b600067ffffffffffffffff8211156130ec576130eb61341a565b5b602082029050602081019050919050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600061315d826132b7565b9150613168836132b7565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561319d5761319c61338d565b5b828201905092915050565b60006131b3826132b7565b91506131be836132b7565b9250826131ce576131cd6133bc565b5b828204905092915050565b60006131e4826132b7565b91506131ef836132b7565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156132285761322761338d565b5b828202905092915050565b600061323e826132b7565b9150613249836132b7565b92508282101561325c5761325b61338d565b5b828203905092915050565b600061327282613297565b9050919050565b600061328482613297565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60006132d9826132b7565b9050919050565b60005b838110156132fe5780820151818401526020810190506132e3565b8381111561330d576000848401525b50505050565b61331c8261345d565b810181811067ffffffffffffffff8211171561333b5761333a61341a565b5b80604052505050565b600061334f826132b7565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156133825761338161338d565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260008201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f74726164696e6720697320616c7265616479206f70656e000000000000000000600082015250565b7f54726164696e67206e6f742079657420656e61626c65642e0000000000000000600082015250565b61374481613267565b811461374f57600080fd5b50565b61375b81613279565b811461376657600080fd5b50565b6137728161328b565b811461377d57600080fd5b50565b613789816132b7565b811461379457600080fd5b5056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212209d708db284f8bbf1a1ef1c3b8e20cade1f9a7d461603773e6960731b961b3eaa64736f6c63430008050033

Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)

000000000000000000000000fbe666cb7ac1d339dc35b48147795636fdaf4f02

-----Decoded View---------------
Arg [0] : FeeAddress (address): 0xFBe666Cb7aC1D339dc35b48147795636fDAf4F02

-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 000000000000000000000000fbe666cb7ac1d339dc35b48147795636fdaf4f02


Deployed Bytecode Sourcemap

3896:11754:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5779:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6631:161;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6056:95;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6800:313;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14835:89;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15438:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5965:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14936:89;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13902:149;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15240:190;;;;;;;;;;;;;:::i;:::-;;6159:138;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2975:148;;;;;;;;;;;;;:::i;:::-;;2761:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5870:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6305:167;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14553:270;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15037:191;;;;;;;;;;;;;:::i;:::-;;14393:148;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13123:771;;;;;;;;;;;;;:::i;:::-;;14063:148;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15546:101;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6480:143;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14223:154;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5779:83;5816:13;5849:5;;;;;;;;;;;;;;;;;5842:12;;5779:83;:::o;6631:161::-;6706:4;6723:39;6732:12;:10;:12::i;:::-;6746:7;6755:6;6723:8;:39::i;:::-;6780:4;6773:11;;6631:161;;;;:::o;6056:95::-;6109:7;4348:12;6129:14;;6056:95;:::o;6800:313::-;6898:4;6915:36;6925:6;6933:9;6944:6;6915:9;:36::i;:::-;6962:121;6971:6;6979:12;:10;:12::i;:::-;6993:89;7031:6;6993:89;;;;;;;;;;;;;;;;;:11;:19;7005:6;6993:19;;;;;;;;;;;;;;;:33;7013:12;:10;:12::i;:::-;6993:33;;;;;;;;;;;;;;;;:37;;:89;;;;;:::i;:::-;6962:8;:121::i;:::-;7101:4;7094:11;;6800:313;;;;;:::o;14835:89::-;2898:12;:10;:12::i;:::-;2888:22;;:6;;;;;;;;;;:22;;;2880:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;14911:5:::1;14895;:13;14901:6;14895:13;;;;;;;;;;;;;;;;:21;;;;;;;;;;;;;;;;;;14835:89:::0;:::o;15438:100::-;15482:4;15506:24;15524:4;15506:9;:24::i;:::-;15499:31;;15438:100;:::o;5965:83::-;6006:5;4621:1;6024:16;;5965:83;:::o;14936:89::-;14984:4;15008:5;:9;15014:2;15008:9;;;;;;;;;;;;;;;;;;;;;;;;;15001:16;;14936:89;;;:::o;13902:149::-;13991:11;;;;;;;;;;;13975:27;;:12;:10;:12::i;:::-;:27;;;13967:36;;;;;;14039:4;14014:18;:22;14033:2;14014:22;;;;;;;;;;;;;;;;:29;;;;;;;;;;;;;;;;;;13902:149;:::o;15240:190::-;15306:11;;;;;;;;;;;15290:27;;:12;:10;:12::i;:::-;:27;;;15282:36;;;;;;15329:26;15358:21;15329:50;;15390:32;15403:18;15390:12;:32::i;:::-;15271:159;15240:190::o;6159:138::-;6225:7;6252:37;6272:7;:16;6280:7;6272:16;;;;;;;;;;;;;;;;6252:19;:37::i;:::-;6245:44;;6159:138;;;:::o;2975:148::-;2898:12;:10;:12::i;:::-;2888:22;;:6;;;;;;;;;;:22;;;2880:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;3082:1:::1;3045:40;;3066:6;::::0;::::1;;;;;;;;3045:40;;;;;;;;;;;;3113:1;3096:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;2975:148::o:0;2761:79::-;2799:7;2826:6;;;;;;;;;;;2819:13;;2761:79;:::o;5870:87::-;5909:13;5942:7;;;;;;;;;;;;;;;;;5935:14;;5870:87;:::o;6305:167::-;6383:4;6400:42;6410:12;:10;:12::i;:::-;6424:9;6435:6;6400:9;:42::i;:::-;6460:4;6453:11;;6305:167;;;;:::o;14553:270::-;2898:12;:10;:12::i;:::-;2888:22;;:6;;;;;;;;;;:22;;;2880:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;14627:6:::1;14622:194;14643:5;:12;14639:1;:16;14622:194;;;14693:13;;;;;;;;;;;14681:25;;:5;14687:1;14681:8;;;;;;;;:::i;:::-;;;;;;;;:25;;;;:65;;;;;14730:15;;;;;;;;;;;14710:36;;:5;14716:1;14710:8;;;;;;;;:::i;:::-;;;;;;;;:36;;;;14681:65;14677:128;;;14785:4;14767:5;:15;14773:5;14779:1;14773:8;;;;;;;;:::i;:::-;;;;;;;;14767:15;;;;;;;;;;;;;;;;:22;;;;;;;;;;;;;;;;;;14677:128;14657:3;;;;;:::i;:::-;;;;14622:194;;;;14553:270:::0;:::o;15037:191::-;15103:11;;;;;;;;;;;15087:27;;:12;:10;:12::i;:::-;:27;;;15079:36;;;;;;15126:23;15152:24;15170:4;15152:9;:24::i;:::-;15126:50;;15187:33;15204:15;15187:16;:33::i;:::-;15068:160;15037:191::o;14393:148::-;14469:11;;;;;;;;;;;14453:27;;:12;:10;:12::i;:::-;:27;;;14445:36;;;;;;14507:1;14500:3;:8;;14492:17;;;;;;14530:3;14520:7;:13;;;;14393:148;:::o;13123:771::-;2898:12;:10;:12::i;:::-;2888:22;;:6;;;;;;;;;;:22;;;2880:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;13187:11:::1;;;;;;;;;;;13186:12;13178:47;;;;;;;;;;;;:::i;:::-;;;;;;;;;13236:35;13293:42;13236:100;;13365:16;13347:15;;:34;;;;;;;;;;;;;;;;;;13392:58;13409:4;13424:15;;;;;;;;;;;4348:12;13392:8;:58::i;:::-;13495:16;:24;;;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13477:56;;;13542:4;13549:16;:21;;;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13477:96;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13461:13;;:112;;;;;;;;;;;;;;;;;;13584:15;;;;;;;;;;;:31;;;13623:21;13654:4;13660:24;13678:4;13660:9;:24::i;:::-;13685:1;13687::::0;13689:7:::1;:5;:7::i;:::-;13697:15;13584:129;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;13731:13;;;;;;;;;;;13724:29;;;13762:15;;;;;;;;;;;13780:14;13724:71;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;13820:4;13806:11;;:18;;;;;;;;;;;;;;;;;;13876:9;13857:15;:29;;;;:::i;:::-;13835:19;:51;;;;13167:727;13123:771::o:0;14063:148::-;14150:11;;;;;;;;;;;14134:27;;:12;:10;:12::i;:::-;:27;;;14126:36;;;;;;14198:5;14173:18;:22;14192:2;14173:22;;;;;;;;;;;;;;;;:30;;;;;;;;;;;;;;;;;;14063:148;:::o;15546:101::-;15591:4;15615:24;15625:13;;;;;;;;;;;15615:9;:24::i;:::-;15608:31;;15546:101;:::o;6480:143::-;6561:7;6588:11;:18;6600:5;6588:18;;;;;;;;;;;;;;;:27;6607:7;6588:27;;;;;;;;;;;;;;;;6581:34;;6480:143;;;;:::o;14223:154::-;14301:11;;;;;;;;;;;14285:27;;:12;:10;:12::i;:::-;:27;;;14277:36;;;;;;14340:2;14332:4;:10;;14324:19;;;;;;14365:4;14354:8;:15;;;;14223:154;:::o;170:98::-;223:7;250:10;243:17;;170:98;:::o;7728:335::-;7838:1;7821:19;;:5;:19;;;;7813:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;7919:1;7900:21;;:7;:21;;;;7892:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;8001:6;7971:11;:18;7983:5;7971:18;;;;;;;;;;;;;;;:27;7990:7;7971:27;;;;;;;;;;;;;;;:36;;;;8039:7;8023:32;;8032:5;8023:32;;;8048:6;8023:32;;;;;;:::i;:::-;;;;;;;;7728:335;;;:::o;8075:1563::-;8179:1;8163:18;;:4;:18;;;;8155:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;8256:1;8242:16;;:2;:16;;;;8234:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;8326:1;8317:6;:10;8309:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;8397:7;:5;:7::i;:::-;8389:15;;:4;:15;;;;:32;;;;;8414:7;:5;:7::i;:::-;8408:13;;:2;:13;;;;8389:32;8386:1034;;;8461:5;:11;8467:4;8461:11;;;;;;;;;;;;;;;;;;;;;;;;;8460:12;:26;;;;;8477:5;:9;8483:2;8477:9;;;;;;;;;;;;;;;;;;;;;;;;;8476:10;8460:26;8452:35;;;;;;8527:13;;;;;;;;;;;8519:21;;:4;:21;;;:55;;;;;8558:15;;;;;;;;;;;8544:30;;:2;:30;;;;8519:55;:82;;;;;8579:18;:22;8598:2;8579:22;;;;;;;;;;;;;;;;;;;;;;;;;8578:23;8519:82;8516:419;;;8630:11;;;;;;;;;;;8622:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;8733:15;8711:19;;:37;8707:213;;;8773:18;8794:22;8812:2;8794:9;:22::i;:::-;8773:43;;8876:23;8895:3;8876:14;8888:1;4348:12;8876:11;;:14;;;;:::i;:::-;:18;;:23;;;;:::i;:::-;8847:25;8858:13;8847:6;:10;;:25;;;;:::i;:::-;:52;;8839:61;;;;;;8750:170;8707:213;8516:419;8949:28;8980:24;8998:4;8980:9;:24::i;:::-;8949:55;;9025:6;;;;;;;;;;;9024:7;:32;;;;;9043:13;;;;;;;;;;;9035:21;;:4;:21;;;;9024:32;:47;;;;;9060:11;;;;;;;;;;;9024:47;9021:388;;;9118:1;9095:20;:24;9092:110;;;9144:38;9161:20;9144:16;:38::i;:::-;9092:110;9220:26;9249:21;9220:50;;9313:1;9292:18;:22;9289:105;;;9339:35;9352:21;9339:12;:35::i;:::-;9289:105;9073:336;9021:388;8423:997;8386:1034;9430:12;9445:4;9430:19;;9465:18;:24;9484:4;9465:24;;;;;;;;;;;;;;;;;;;;;;;;;:50;;;;9493:18;:22;9512:2;9493:22;;;;;;;;;;;;;;;;;;;;;;;;;9465:50;:64;;;;9519:10;;;;;;;;;;;9465:64;9462:110;;;9555:5;9545:15;;9462:110;9592:38;9607:4;9612:2;9615:6;9622:7;9592:14;:38::i;:::-;8144:1494;8075:1563;;;:::o;1307:190::-;1393:7;1426:1;1421;:6;;1429:12;1413:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;1453:9;1469:1;1465;:5;;;;:::i;:::-;1453:17;;1488:1;1481:8;;;1307:190;;;;;:::o;10145:93::-;10202:11;;;;;;;;;;;:20;;:28;10223:6;10202:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10145:93;:::o;7121:254::-;7188:7;7227;;7216;:18;;7208:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;7292:19;7315:10;:8;:10::i;:::-;7292:33;;7343:24;7355:11;7343:7;:11;;:24;;;;:::i;:::-;7336:31;;;7121:254;;;:::o;9646:483::-;5387:4;5378:6;;:13;;;;;;;;;;;;;;;;;;9724:21:::1;9762:1;9748:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9724:40;;9793:4;9775;9780:1;9775:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;9819:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;9809:4;9814:1;9809:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;::::0;::::1;9852:62;9869:4;9884:15;;;;;;;;;;;9902:11;9852:8;:62::i;:::-;9925:15;;;;;;;;;;;:66;;;10006:11;10032:1;10048:4;10075;10095:15;9925:196;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;9713:416;5423:5:::0;5414:6;;:14;;;;;;;;;;;;;;;;;;9646:483;:::o;1505:245::-;1563:7;1591:1;1586;:6;1583:46;;;1616:1;1609:8;;;;1583:46;1639:9;1655:1;1651;:5;;;;:::i;:::-;1639:17;;1684:1;1679;1675;:5;;;;:::i;:::-;:10;1667:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;1741:1;1734:8;;;1505:245;;;;;:::o;1758:132::-;1816:7;1843:39;1847:1;1850;1843:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;1836:46;;1758:132;;;;:::o;976:179::-;1034:7;1054:9;1070:1;1066;:5;;;;:::i;:::-;1054:17;;1095:1;1090;:6;;1082:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;1146:1;1139:8;;;976:179;;;;:::o;10250:263::-;10362:7;10358:40;;10384:14;:12;:14::i;:::-;10358:40;10409:44;10427:6;10435:9;10446:6;10409:17;:44::i;:::-;10468:7;10464:41;;10490:15;:13;:15::i;:::-;10464:41;10250:263;;;;:::o;11854:163::-;11895:7;11916:15;11933;11952:19;:17;:19::i;:::-;11915:56;;;;11989:20;12001:7;11989;:11;;:20;;;;:::i;:::-;11982:27;;;;11854:163;:::o;1898:189::-;1984:7;2016:1;2012;:5;2019:12;2004:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;2043:9;2059:1;2055;:5;;;;:::i;:::-;2043:17;;2078:1;2071:8;;;1898:189;;;;;:::o;7383:210::-;7440:1;7429:7;;:12;:29;;;;;7457:1;7445:8;;:13;7429:29;7426:41;;;7460:7;;7426:41;7495:7;;7477:15;:25;;;;7532:8;;7513:16;:27;;;;7561:1;7551:7;:11;;;;7584:1;7573:8;:12;;;;7383:210;:::o;10521:490::-;10620:15;10637:23;10662:12;10676:23;10701:12;10715:13;10732:19;10743:7;10732:10;:19::i;:::-;10619:132;;;;;;;;;;;;10780:28;10800:7;10780;:15;10788:6;10780:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;10762:7;:15;10770:6;10762:15;;;;;;;;;;;;;;;:46;;;;10840:39;10863:15;10840:7;:18;10848:9;10840:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;10819:7;:18;10827:9;10819:18;;;;;;;;;;;;;;;:60;;;;10893:16;10903:5;10893:9;:16::i;:::-;10920:23;10932:4;10938;10920:11;:23::i;:::-;10976:9;10959:44;;10968:6;10959:44;;;10987:15;10959:44;;;;;;:::i;:::-;;;;;;;;10608:403;;;;;;10521:490;;;:::o;7605:115::-;7659:15;;7649:7;:25;;;;7696:16;;7685:8;:27;;;;7605:115::o;12025:255::-;12075:7;12084;12104:15;12122:7;;12104:25;;12140:15;4348:12;12140:25;;12189:20;4348:12;12189:7;;:11;;:20;;;;:::i;:::-;12179:7;:30;12176:60;;;12219:7;;4348:12;12211:25;;;;;;;;12176:60;12255:7;12264;12247:25;;;;;;12025:255;;;:::o;11019:468::-;11078:7;11087;11096;11105;11114;11123;11144:23;11169:12;11183:13;11200:39;11212:7;11221;;11230:8;;11200:11;:39::i;:::-;11143:96;;;;;;11250:19;11273:10;:8;:10::i;:::-;11250:33;;11295:15;11312:23;11337:12;11353:46;11365:7;11374:4;11380:5;11387:11;11353;:46::i;:::-;11294:105;;;;;;11418:7;11427:15;11444:4;11450:15;11467:4;11473:5;11410:69;;;;;;;;;;;;;;;;;;;11019:468;;;;;;;:::o;1163:136::-;1221:7;1248:43;1252:1;1255;1248:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;1241:50;;1163:136;;;;:::o;12705:214::-;12758:19;12781:10;:8;:10::i;:::-;12758:33;;12802:13;12818:22;12828:11;12818:5;:9;;:22;;;;:::i;:::-;12802:38;;12878:33;12905:5;12878:7;:22;12894:4;12878:22;;;;;;;;;;;;;;;;:26;;:33;;;;:::i;:::-;12853:7;:22;12869:4;12853:22;;;;;;;;;;;;;;;:58;;;;12747:172;;12705:214;:::o;12927:147::-;13005:17;13017:4;13005:7;;:11;;:17;;;;:::i;:::-;12995:7;:27;;;;13046:20;13061:4;13046:10;;:14;;:20;;;;:::i;:::-;13033:10;:33;;;;12927:147;;:::o;11495:351::-;11588:7;11597;11606;11626:12;11641:28;11665:3;11641:19;11653:6;11641:7;:11;;:19;;;;:::i;:::-;:23;;:28;;;;:::i;:::-;11626:43;;11680:13;11696:29;11721:3;11696:20;11708:7;11696;:11;;:20;;;;:::i;:::-;:24;;:29;;;;:::i;:::-;11680:45;;11736:23;11762:28;11784:5;11762:17;11774:4;11762:7;:11;;:17;;;;:::i;:::-;:21;;:28;;;;:::i;:::-;11736:54;;11809:15;11826:4;11832:5;11801:37;;;;;;;;;11495:351;;;;;;;:::o;12288:409::-;12398:7;12407;12416;12436:15;12454:24;12466:11;12454:7;:11;;:24;;;;:::i;:::-;12436:42;;12489:12;12504:21;12513:11;12504:4;:8;;:21;;;;:::i;:::-;12489:36;;12536:13;12552:22;12562:11;12552:5;:9;;:22;;;;:::i;:::-;12536:38;;12585:23;12611:28;12633:5;12611:17;12623:4;12611:7;:11;;:17;;;;:::i;:::-;:21;;:28;;;;:::i;:::-;12585:54;;12658:7;12667:15;12684:4;12650:39;;;;;;;;;;12288:409;;;;;;;;:::o;24:722:1:-;120:5;145:81;161:64;218:6;161:64;:::i;:::-;145:81;:::i;:::-;136:90;;246:5;275:6;268:5;261:21;309:4;302:5;298:16;291:23;;335:6;385:3;377:4;369:6;365:17;360:3;356:27;353:36;350:2;;;404:79;;:::i;:::-;350:2;517:1;502:238;527:6;524:1;521:13;502:238;;;595:3;624:37;657:3;645:10;624:37;:::i;:::-;619:3;612:50;691:4;686:3;682:14;675:21;;725:4;720:3;716:14;709:21;;562:178;549:1;546;542:9;537:14;;502:238;;;506:14;126:620;;;;;;;:::o;752:139::-;798:5;836:6;823:20;814:29;;852:33;879:5;852:33;:::i;:::-;804:87;;;;:::o;897:143::-;954:5;985:6;979:13;970:22;;1001:33;1028:5;1001:33;:::i;:::-;960:80;;;;:::o;1046:155::-;1100:5;1138:6;1125:20;1116:29;;1154:41;1189:5;1154:41;:::i;:::-;1106:95;;;;:::o;1224:370::-;1295:5;1344:3;1337:4;1329:6;1325:17;1321:27;1311:2;;1352:79;;:::i;:::-;1311:2;1469:6;1456:20;1494:94;1584:3;1576:6;1569:4;1561:6;1557:17;1494:94;:::i;:::-;1485:103;;1301:293;;;;;:::o;1600:137::-;1654:5;1685:6;1679:13;1670:22;;1701:30;1725:5;1701:30;:::i;:::-;1660:77;;;;:::o;1743:139::-;1789:5;1827:6;1814:20;1805:29;;1843:33;1870:5;1843:33;:::i;:::-;1795:87;;;;:::o;1888:143::-;1945:5;1976:6;1970:13;1961:22;;1992:33;2019:5;1992:33;:::i;:::-;1951:80;;;;:::o;2037:329::-;2096:6;2145:2;2133:9;2124:7;2120:23;2116:32;2113:2;;;2151:79;;:::i;:::-;2113:2;2271:1;2296:53;2341:7;2332:6;2321:9;2317:22;2296:53;:::i;:::-;2286:63;;2242:117;2103:263;;;;:::o;2372:351::-;2442:6;2491:2;2479:9;2470:7;2466:23;2462:32;2459:2;;;2497:79;;:::i;:::-;2459:2;2617:1;2642:64;2698:7;2689:6;2678:9;2674:22;2642:64;:::i;:::-;2632:74;;2588:128;2449:274;;;;:::o;2729:345::-;2796:6;2845:2;2833:9;2824:7;2820:23;2816:32;2813:2;;;2851:79;;:::i;:::-;2813:2;2971:1;2996:61;3049:7;3040:6;3029:9;3025:22;2996:61;:::i;:::-;2986:71;;2942:125;2803:271;;;;:::o;3080:474::-;3148:6;3156;3205:2;3193:9;3184:7;3180:23;3176:32;3173:2;;;3211:79;;:::i;:::-;3173:2;3331:1;3356:53;3401:7;3392:6;3381:9;3377:22;3356:53;:::i;:::-;3346:63;;3302:117;3458:2;3484:53;3529:7;3520:6;3509:9;3505:22;3484:53;:::i;:::-;3474:63;;3429:118;3163:391;;;;;:::o;3560:619::-;3637:6;3645;3653;3702:2;3690:9;3681:7;3677:23;3673:32;3670:2;;;3708:79;;:::i;:::-;3670:2;3828:1;3853:53;3898:7;3889:6;3878:9;3874:22;3853:53;:::i;:::-;3843:63;;3799:117;3955:2;3981:53;4026:7;4017:6;4006:9;4002:22;3981:53;:::i;:::-;3971:63;;3926:118;4083:2;4109:53;4154:7;4145:6;4134:9;4130:22;4109:53;:::i;:::-;4099:63;;4054:118;3660:519;;;;;:::o;4185:474::-;4253:6;4261;4310:2;4298:9;4289:7;4285:23;4281:32;4278:2;;;4316:79;;:::i;:::-;4278:2;4436:1;4461:53;4506:7;4497:6;4486:9;4482:22;4461:53;:::i;:::-;4451:63;;4407:117;4563:2;4589:53;4634:7;4625:6;4614:9;4610:22;4589:53;:::i;:::-;4579:63;;4534:118;4268:391;;;;;:::o;4665:539::-;4749:6;4798:2;4786:9;4777:7;4773:23;4769:32;4766:2;;;4804:79;;:::i;:::-;4766:2;4952:1;4941:9;4937:17;4924:31;4982:18;4974:6;4971:30;4968:2;;;5004:79;;:::i;:::-;4968:2;5109:78;5179:7;5170:6;5159:9;5155:22;5109:78;:::i;:::-;5099:88;;4895:302;4756:448;;;;:::o;5210:345::-;5277:6;5326:2;5314:9;5305:7;5301:23;5297:32;5294:2;;;5332:79;;:::i;:::-;5294:2;5452:1;5477:61;5530:7;5521:6;5510:9;5506:22;5477:61;:::i;:::-;5467:71;;5423:125;5284:271;;;;:::o;5561:329::-;5620:6;5669:2;5657:9;5648:7;5644:23;5640:32;5637:2;;;5675:79;;:::i;:::-;5637:2;5795:1;5820:53;5865:7;5856:6;5845:9;5841:22;5820:53;:::i;:::-;5810:63;;5766:117;5627:263;;;;:::o;5896:663::-;5984:6;5992;6000;6049:2;6037:9;6028:7;6024:23;6020:32;6017:2;;;6055:79;;:::i;:::-;6017:2;6175:1;6200:64;6256:7;6247:6;6236:9;6232:22;6200:64;:::i;:::-;6190:74;;6146:128;6313:2;6339:64;6395:7;6386:6;6375:9;6371:22;6339:64;:::i;:::-;6329:74;;6284:129;6452:2;6478:64;6534:7;6525:6;6514:9;6510:22;6478:64;:::i;:::-;6468:74;;6423:129;6007:552;;;;;:::o;6565:179::-;6634:10;6655:46;6697:3;6689:6;6655:46;:::i;:::-;6733:4;6728:3;6724:14;6710:28;;6645:99;;;;:::o;6750:108::-;6827:24;6845:5;6827:24;:::i;:::-;6822:3;6815:37;6805:53;;:::o;6864:118::-;6951:24;6969:5;6951:24;:::i;:::-;6946:3;6939:37;6929:53;;:::o;7018:732::-;7137:3;7166:54;7214:5;7166:54;:::i;:::-;7236:86;7315:6;7310:3;7236:86;:::i;:::-;7229:93;;7346:56;7396:5;7346:56;:::i;:::-;7425:7;7456:1;7441:284;7466:6;7463:1;7460:13;7441:284;;;7542:6;7536:13;7569:63;7628:3;7613:13;7569:63;:::i;:::-;7562:70;;7655:60;7708:6;7655:60;:::i;:::-;7645:70;;7501:224;7488:1;7485;7481:9;7476:14;;7441:284;;;7445:14;7741:3;7734:10;;7142:608;;;;;;;:::o;7756:109::-;7837:21;7852:5;7837:21;:::i;:::-;7832:3;7825:34;7815:50;;:::o;7871:147::-;7966:45;8005:5;7966:45;:::i;:::-;7961:3;7954:58;7944:74;;:::o;8024:364::-;8112:3;8140:39;8173:5;8140:39;:::i;:::-;8195:71;8259:6;8254:3;8195:71;:::i;:::-;8188:78;;8275:52;8320:6;8315:3;8308:4;8301:5;8297:16;8275:52;:::i;:::-;8352:29;8374:6;8352:29;:::i;:::-;8347:3;8343:39;8336:46;;8116:272;;;;;:::o;8394:366::-;8536:3;8557:67;8621:2;8616:3;8557:67;:::i;:::-;8550:74;;8633:93;8722:3;8633:93;:::i;:::-;8751:2;8746:3;8742:12;8735:19;;8540:220;;;:::o;8766:366::-;8908:3;8929:67;8993:2;8988:3;8929:67;:::i;:::-;8922:74;;9005:93;9094:3;9005:93;:::i;:::-;9123:2;9118:3;9114:12;9107:19;;8912:220;;;:::o;9138:366::-;9280:3;9301:67;9365:2;9360:3;9301:67;:::i;:::-;9294:74;;9377:93;9466:3;9377:93;:::i;:::-;9495:2;9490:3;9486:12;9479:19;;9284:220;;;:::o;9510:366::-;9652:3;9673:67;9737:2;9732:3;9673:67;:::i;:::-;9666:74;;9749:93;9838:3;9749:93;:::i;:::-;9867:2;9862:3;9858:12;9851:19;;9656:220;;;:::o;9882:366::-;10024:3;10045:67;10109:2;10104:3;10045:67;:::i;:::-;10038:74;;10121:93;10210:3;10121:93;:::i;:::-;10239:2;10234:3;10230:12;10223:19;;10028:220;;;:::o;10254:366::-;10396:3;10417:67;10481:2;10476:3;10417:67;:::i;:::-;10410:74;;10493:93;10582:3;10493:93;:::i;:::-;10611:2;10606:3;10602:12;10595:19;;10400:220;;;:::o;10626:366::-;10768:3;10789:67;10853:2;10848:3;10789:67;:::i;:::-;10782:74;;10865:93;10954:3;10865:93;:::i;:::-;10983:2;10978:3;10974:12;10967:19;;10772:220;;;:::o;10998:366::-;11140:3;11161:67;11225:2;11220:3;11161:67;:::i;:::-;11154:74;;11237:93;11326:3;11237:93;:::i;:::-;11355:2;11350:3;11346:12;11339:19;;11144:220;;;:::o;11370:366::-;11512:3;11533:67;11597:2;11592:3;11533:67;:::i;:::-;11526:74;;11609:93;11698:3;11609:93;:::i;:::-;11727:2;11722:3;11718:12;11711:19;;11516:220;;;:::o;11742:366::-;11884:3;11905:67;11969:2;11964:3;11905:67;:::i;:::-;11898:74;;11981:93;12070:3;11981:93;:::i;:::-;12099:2;12094:3;12090:12;12083:19;;11888:220;;;:::o;12114:366::-;12256:3;12277:67;12341:2;12336:3;12277:67;:::i;:::-;12270:74;;12353:93;12442:3;12353:93;:::i;:::-;12471:2;12466:3;12462:12;12455:19;;12260:220;;;:::o;12486:118::-;12573:24;12591:5;12573:24;:::i;:::-;12568:3;12561:37;12551:53;;:::o;12610:112::-;12693:22;12709:5;12693:22;:::i;:::-;12688:3;12681:35;12671:51;;:::o;12728:222::-;12821:4;12859:2;12848:9;12844:18;12836:26;;12872:71;12940:1;12929:9;12925:17;12916:6;12872:71;:::i;:::-;12826:124;;;;:::o;12956:332::-;13077:4;13115:2;13104:9;13100:18;13092:26;;13128:71;13196:1;13185:9;13181:17;13172:6;13128:71;:::i;:::-;13209:72;13277:2;13266:9;13262:18;13253:6;13209:72;:::i;:::-;13082:206;;;;;:::o;13294:332::-;13415:4;13453:2;13442:9;13438:18;13430:26;;13466:71;13534:1;13523:9;13519:17;13510:6;13466:71;:::i;:::-;13547:72;13615:2;13604:9;13600:18;13591:6;13547:72;:::i;:::-;13420:206;;;;;:::o;13632:807::-;13881:4;13919:3;13908:9;13904:19;13896:27;;13933:71;14001:1;13990:9;13986:17;13977:6;13933:71;:::i;:::-;14014:72;14082:2;14071:9;14067:18;14058:6;14014:72;:::i;:::-;14096:80;14172:2;14161:9;14157:18;14148:6;14096:80;:::i;:::-;14186;14262:2;14251:9;14247:18;14238:6;14186:80;:::i;:::-;14276:73;14344:3;14333:9;14329:19;14320:6;14276:73;:::i;:::-;14359;14427:3;14416:9;14412:19;14403:6;14359:73;:::i;:::-;13886:553;;;;;;;;;:::o;14445:210::-;14532:4;14570:2;14559:9;14555:18;14547:26;;14583:65;14645:1;14634:9;14630:17;14621:6;14583:65;:::i;:::-;14537:118;;;;:::o;14661:313::-;14774:4;14812:2;14801:9;14797:18;14789:26;;14861:9;14855:4;14851:20;14847:1;14836:9;14832:17;14825:47;14889:78;14962:4;14953:6;14889:78;:::i;:::-;14881:86;;14779:195;;;;:::o;14980:419::-;15146:4;15184:2;15173:9;15169:18;15161:26;;15233:9;15227:4;15223:20;15219:1;15208:9;15204:17;15197:47;15261:131;15387:4;15261:131;:::i;:::-;15253:139;;15151:248;;;:::o;15405:419::-;15571:4;15609:2;15598:9;15594:18;15586:26;;15658:9;15652:4;15648:20;15644:1;15633:9;15629:17;15622:47;15686:131;15812:4;15686:131;:::i;:::-;15678:139;;15576:248;;;:::o;15830:419::-;15996:4;16034:2;16023:9;16019:18;16011:26;;16083:9;16077:4;16073:20;16069:1;16058:9;16054:17;16047:47;16111:131;16237:4;16111:131;:::i;:::-;16103:139;;16001:248;;;:::o;16255:419::-;16421:4;16459:2;16448:9;16444:18;16436:26;;16508:9;16502:4;16498:20;16494:1;16483:9;16479:17;16472:47;16536:131;16662:4;16536:131;:::i;:::-;16528:139;;16426:248;;;:::o;16680:419::-;16846:4;16884:2;16873:9;16869:18;16861:26;;16933:9;16927:4;16923:20;16919:1;16908:9;16904:17;16897:47;16961:131;17087:4;16961:131;:::i;:::-;16953:139;;16851:248;;;:::o;17105:419::-;17271:4;17309:2;17298:9;17294:18;17286:26;;17358:9;17352:4;17348:20;17344:1;17333:9;17329:17;17322:47;17386:131;17512:4;17386:131;:::i;:::-;17378:139;;17276:248;;;:::o;17530:419::-;17696:4;17734:2;17723:9;17719:18;17711:26;;17783:9;17777:4;17773:20;17769:1;17758:9;17754:17;17747:47;17811:131;17937:4;17811:131;:::i;:::-;17803:139;;17701:248;;;:::o;17955:419::-;18121:4;18159:2;18148:9;18144:18;18136:26;;18208:9;18202:4;18198:20;18194:1;18183:9;18179:17;18172:47;18236:131;18362:4;18236:131;:::i;:::-;18228:139;;18126:248;;;:::o;18380:419::-;18546:4;18584:2;18573:9;18569:18;18561:26;;18633:9;18627:4;18623:20;18619:1;18608:9;18604:17;18597:47;18661:131;18787:4;18661:131;:::i;:::-;18653:139;;18551:248;;;:::o;18805:419::-;18971:4;19009:2;18998:9;18994:18;18986:26;;19058:9;19052:4;19048:20;19044:1;19033:9;19029:17;19022:47;19086:131;19212:4;19086:131;:::i;:::-;19078:139;;18976:248;;;:::o;19230:419::-;19396:4;19434:2;19423:9;19419:18;19411:26;;19483:9;19477:4;19473:20;19469:1;19458:9;19454:17;19447:47;19511:131;19637:4;19511:131;:::i;:::-;19503:139;;19401:248;;;:::o;19655:222::-;19748:4;19786:2;19775:9;19771:18;19763:26;;19799:71;19867:1;19856:9;19852:17;19843:6;19799:71;:::i;:::-;19753:124;;;;:::o;19883:831::-;20146:4;20184:3;20173:9;20169:19;20161:27;;20198:71;20266:1;20255:9;20251:17;20242:6;20198:71;:::i;:::-;20279:80;20355:2;20344:9;20340:18;20331:6;20279:80;:::i;:::-;20406:9;20400:4;20396:20;20391:2;20380:9;20376:18;20369:48;20434:108;20537:4;20528:6;20434:108;:::i;:::-;20426:116;;20552:72;20620:2;20609:9;20605:18;20596:6;20552:72;:::i;:::-;20634:73;20702:3;20691:9;20687:19;20678:6;20634:73;:::i;:::-;20151:563;;;;;;;;:::o;20720:214::-;20809:4;20847:2;20836:9;20832:18;20824:26;;20860:67;20924:1;20913:9;20909:17;20900:6;20860:67;:::i;:::-;20814:120;;;;:::o;20940:129::-;20974:6;21001:20;;:::i;:::-;20991:30;;21030:33;21058:4;21050:6;21030:33;:::i;:::-;20981:88;;;:::o;21075:75::-;21108:6;21141:2;21135:9;21125:19;;21115:35;:::o;21156:311::-;21233:4;21323:18;21315:6;21312:30;21309:2;;;21345:18;;:::i;:::-;21309:2;21395:4;21387:6;21383:17;21375:25;;21455:4;21449;21445:15;21437:23;;21238:229;;;:::o;21473:132::-;21540:4;21563:3;21555:11;;21593:4;21588:3;21584:14;21576:22;;21545:60;;;:::o;21611:114::-;21678:6;21712:5;21706:12;21696:22;;21685:40;;;:::o;21731:99::-;21783:6;21817:5;21811:12;21801:22;;21790:40;;;:::o;21836:113::-;21906:4;21938;21933:3;21929:14;21921:22;;21911:38;;;:::o;21955:184::-;22054:11;22088:6;22083:3;22076:19;22128:4;22123:3;22119:14;22104:29;;22066:73;;;;:::o;22145:169::-;22229:11;22263:6;22258:3;22251:19;22303:4;22298:3;22294:14;22279:29;;22241:73;;;;:::o;22320:305::-;22360:3;22379:20;22397:1;22379:20;:::i;:::-;22374:25;;22413:20;22431:1;22413:20;:::i;:::-;22408:25;;22567:1;22499:66;22495:74;22492:1;22489:81;22486:2;;;22573:18;;:::i;:::-;22486:2;22617:1;22614;22610:9;22603:16;;22364:261;;;;:::o;22631:185::-;22671:1;22688:20;22706:1;22688:20;:::i;:::-;22683:25;;22722:20;22740:1;22722:20;:::i;:::-;22717:25;;22761:1;22751:2;;22766:18;;:::i;:::-;22751:2;22808:1;22805;22801:9;22796:14;;22673:143;;;;:::o;22822:348::-;22862:7;22885:20;22903:1;22885:20;:::i;:::-;22880:25;;22919:20;22937:1;22919:20;:::i;:::-;22914:25;;23107:1;23039:66;23035:74;23032:1;23029:81;23024:1;23017:9;23010:17;23006:105;23003:2;;;23114:18;;:::i;:::-;23003:2;23162:1;23159;23155:9;23144:20;;22870:300;;;;:::o;23176:191::-;23216:4;23236:20;23254:1;23236:20;:::i;:::-;23231:25;;23270:20;23288:1;23270:20;:::i;:::-;23265:25;;23309:1;23306;23303:8;23300:2;;;23314:18;;:::i;:::-;23300:2;23359:1;23356;23352:9;23344:17;;23221:146;;;;:::o;23373:96::-;23410:7;23439:24;23457:5;23439:24;:::i;:::-;23428:35;;23418:51;;;:::o;23475:104::-;23520:7;23549:24;23567:5;23549:24;:::i;:::-;23538:35;;23528:51;;;:::o;23585:90::-;23619:7;23662:5;23655:13;23648:21;23637:32;;23627:48;;;:::o;23681:126::-;23718:7;23758:42;23751:5;23747:54;23736:65;;23726:81;;;:::o;23813:77::-;23850:7;23879:5;23868:16;;23858:32;;;:::o;23896:86::-;23931:7;23971:4;23964:5;23960:16;23949:27;;23939:43;;;:::o;23988:121::-;24046:9;24079:24;24097:5;24079:24;:::i;:::-;24066:37;;24056:53;;;:::o;24115:307::-;24183:1;24193:113;24207:6;24204:1;24201:13;24193:113;;;24292:1;24287:3;24283:11;24277:18;24273:1;24268:3;24264:11;24257:39;24229:2;24226:1;24222:10;24217:15;;24193:113;;;24324:6;24321:1;24318:13;24315:2;;;24404:1;24395:6;24390:3;24386:16;24379:27;24315:2;24164:258;;;;:::o;24428:281::-;24511:27;24533:4;24511:27;:::i;:::-;24503:6;24499:40;24641:6;24629:10;24626:22;24605:18;24593:10;24590:34;24587:62;24584:2;;;24652:18;;:::i;:::-;24584:2;24692:10;24688:2;24681:22;24471:238;;;:::o;24715:233::-;24754:3;24777:24;24795:5;24777:24;:::i;:::-;24768:33;;24823:66;24816:5;24813:77;24810:2;;;24893:18;;:::i;:::-;24810:2;24940:1;24933:5;24929:13;24922:20;;24758:190;;;:::o;24954:180::-;25002:77;24999:1;24992:88;25099:4;25096:1;25089:15;25123:4;25120:1;25113:15;25140:180;25188:77;25185:1;25178:88;25285:4;25282:1;25275:15;25309:4;25306:1;25299:15;25326:180;25374:77;25371:1;25364:88;25471:4;25468:1;25461:15;25495:4;25492:1;25485:15;25512:180;25560:77;25557:1;25550:88;25657:4;25654:1;25647:15;25681:4;25678:1;25671:15;25698:117;25807:1;25804;25797:12;25821:117;25930:1;25927;25920:12;25944:117;26053:1;26050;26043:12;26067:117;26176:1;26173;26166:12;26190:102;26231:6;26282:2;26278:7;26273:2;26266:5;26262:14;26258:28;26248:38;;26238:54;;;:::o;26298:222::-;26438:34;26434:1;26426:6;26422:14;26415:58;26507:5;26502:2;26494:6;26490:15;26483:30;26404:116;:::o;26526:229::-;26666:34;26662:1;26654:6;26650:14;26643:58;26735:12;26730:2;26722:6;26718:15;26711:37;26632:123;:::o;26761:221::-;26901:34;26897:1;26889:6;26885:14;26878:58;26970:4;26965:2;26957:6;26953:15;26946:29;26867:115;:::o;26988:177::-;27128:29;27124:1;27116:6;27112:14;27105:53;27094:71;:::o;27171:220::-;27311:34;27307:1;27299:6;27295:14;27288:58;27380:3;27375:2;27367:6;27363:15;27356:28;27277:114;:::o;27397:182::-;27537:34;27533:1;27525:6;27521:14;27514:58;27503:76;:::o;27585:228::-;27725:34;27721:1;27713:6;27709:14;27702:58;27794:11;27789:2;27781:6;27777:15;27770:36;27691:122;:::o;27819:224::-;27959:34;27955:1;27947:6;27943:14;27936:58;28028:7;28023:2;28015:6;28011:15;28004:32;27925:118;:::o;28049:223::-;28189:34;28185:1;28177:6;28173:14;28166:58;28258:6;28253:2;28245:6;28241:15;28234:31;28155:117;:::o;28278:173::-;28418:25;28414:1;28406:6;28402:14;28395:49;28384:67;:::o;28457:174::-;28597:26;28593:1;28585:6;28581:14;28574:50;28563:68;:::o;28637:122::-;28710:24;28728:5;28710:24;:::i;:::-;28703:5;28700:35;28690:2;;28749:1;28746;28739:12;28690:2;28680:79;:::o;28765:138::-;28846:32;28872:5;28846:32;:::i;:::-;28839:5;28836:43;28826:2;;28893:1;28890;28883:12;28826:2;28816:87;:::o;28909:116::-;28979:21;28994:5;28979:21;:::i;:::-;28972:5;28969:32;28959:2;;29015:1;29012;29005:12;28959:2;28949:76;:::o;29031:122::-;29104:24;29122:5;29104:24;:::i;:::-;29097:5;29094:35;29084:2;;29143:1;29140;29133:12;29084:2;29074:79;:::o

Swarm Source

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