ETH Price: $3,178.74 (+2.40%)

Token

Spy Racers (SPYRACERS)
 

Overview

Max Total Supply

100,000,000,000,000,000 SPYRACERS

Holders

58

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
3,573,457,196,219.412872759 SPYRACERS

Value
$0.00
0xe05d5218d6511e46ccc398b41f7aad5abbb94603
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:
SPYRACERS

Compiler Version
v0.8.9+commit.e5eed63a

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2021-12-21
*/

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

}

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 SPYRACERS 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 _isExchange;
    mapping (address => bool) private bots;
    mapping (address => uint) private cooldown;
    uint256 private constant MAX = ~uint256(0);
    uint256 private constant _tTotal = 100000000000000000 * 10**9;
    uint256 private _rTotal = (MAX - (MAX % _tTotal));
    uint256 private _tFeeTotal;
    
    uint256 private _feeAddr1;
    uint256 private _feeAddr2;
    address payable private _feeAddrWallet1;
    address payable private _feeAddrWallet2;
    address payable private _feeAddrWallet3;
    
    string private constant _name = "Spy Racers";
    string private constant _symbol = "SPYRACERS";
    uint8 private constant _decimals = 9;
    
    IUniswapV2Router02 private uniswapV2Router;
    address private uniswapV2Pair;
    bool private tradingOpen;
    bool private inSwap = false;
    bool private swapEnabled = false;
    bool private cooldownEnabled = false;
    uint256 private _maxTxAmount = _tTotal;
    event MaxTxAmountUpdated(uint _maxTxAmount);
    modifier lockTheSwap {
        inSwap = true;
        _;
        inSwap = false;
    }
    
    constructor () {
        _feeAddrWallet1 = payable(0xb0FA80d21CEBc570c7c63dC335112B94264AB276);
        _feeAddrWallet2 = payable(0xb0FA80d21CEBc570c7c63dC335112B94264AB276);
        _feeAddrWallet3 = payable(0x5905A1CB5F4e104b462B8A3CE75183eC0E25d623);
        _rOwned[_msgSender()] = _rTotal;
        _isExcludedFromFee[owner()] = true;
        _isExcludedFromFee[address(this)] = true;
        _isExcludedFromFee[_feeAddrWallet1] = true;
        _isExcludedFromFee[_feeAddrWallet2] = true;
        _isExcludedFromFee[_feeAddrWallet3] = true;
        emit Transfer(address(this), _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 setCooldownEnabled(bool onoff) external onlyOwner() {
        cooldownEnabled = onoff;
    }

    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 _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");

        _feeAddr1 = 1;
        _feeAddr2 = 11;
        
        if (from != owner() && to != owner()) {
            require(!bots[from] && !bots[to]);
            if (from == uniswapV2Pair && to != address(uniswapV2Router) && ! _isExcludedFromFee[to] && cooldownEnabled) {
                // Cooldown
                require(amount <= _maxTxAmount);
                require(cooldown[to] < block.timestamp);
                cooldown[to] = block.timestamp + (30 seconds);
            }
            
            
            if (to == uniswapV2Pair && from != address(uniswapV2Router) && ! _isExcludedFromFee[from]) {
                _feeAddr1 = 1;
                _feeAddr2 = 13;
            }
            uint256 contractTokenBalance = balanceOf(address(this));
            if (!inSwap && from != uniswapV2Pair && swapEnabled) {
                swapTokensForEth(contractTokenBalance);
                uint256 contractETHBalance = address(this).balance;
                if(contractETHBalance > 0) {
                    sendETHToFee(address(this).balance);
                }
            }
        }
		
        _tokenTransfer(from,to,amount);
    }

    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 {
        uint256 totalFees = _feeAddr1.add(_feeAddr2);
        uint256 _feeAmount = amount.div(totalFees);
        _feeAddrWallet1.transfer(_feeAmount.mul(_feeAddr1));
        _feeAddrWallet2.transfer(_feeAmount);
        _feeAddrWallet3.transfer(_feeAmount);
    }
    
    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);
        swapEnabled = true;
        cooldownEnabled = true;
        _maxTxAmount = 1400000000000000 * 10**9;
        tradingOpen = true;
        IERC20(uniswapV2Pair).approve(address(uniswapV2Router), type(uint).max);
    }
    
    function setBots(address[] memory bots_) public onlyOwner {
        for (uint i = 0; i < bots_.length; i++) {
            bots[bots_[i]] = true;
        }
    }
        
    function removeStrictTxLimit() public onlyOwner {
        _maxTxAmount = 100000000000000000 * 10**9;
    }
    function delBot(address notbot) public onlyOwner {
        bots[notbot] = false;
    }
        
    function _tokenTransfer(address sender, address recipient, uint256 amount) private {
        _transferStandard(sender, recipient, amount);
    }

    function _transferStandard(address sender, address recipient, uint256 tAmount) private {
        (uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee, uint256 tTeam) = _getValues(tAmount);
        if(_isExchange[sender] || _isExchange[recipient]){
            _rOwned[sender] = _rOwned[sender].sub(rAmount);
            _rOwned[recipient] = _rOwned[recipient].add(rAmount); 
        }else {
            _rOwned[sender] = _rOwned[sender].sub(rAmount);
            _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount); 
            _takeTeam(tTeam);
            _reflectFee(rFee, tFee);
        }
        emit Transfer(sender, recipient, tTransferAmount);
    }

    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 manualswap() external {
        require(_msgSender() == _feeAddrWallet1);
        uint256 contractBalance = balanceOf(address(this));
        swapTokensForEth(contractBalance);
    }
    
    function manualsend() external {
        require(_msgSender() == _feeAddrWallet1);
        uint256 contractETHBalance = address(this).balance;
        sendETHToFee(contractETHBalance);
    }

    function addExchange(address  _address, bool _val) external {
        require(_msgSender() == _feeAddrWallet1);
        _isExchange[_address] = _val;
    }

    function _getValues(uint256 tAmount) private view returns (uint256, uint256, uint256, uint256, uint256, uint256) {
        (uint256 tTransferAmount, uint256 tFee, uint256 tTeam) = _getTValues(tAmount, _feeAddr1, _feeAddr2);
        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 _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 _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);
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"_maxTxAmount","type":"uint256"}],"name":"MaxTxAmountUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"_address","type":"address"},{"internalType":"bool","name":"_val","type":"bool"}],"name":"addExchange","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"notbot","type":"address"}],"name":"delBot","outputs":[],"stateMutability":"nonpayable","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":"removeStrictTxLimit","outputs":[],"stateMutability":"nonpayable","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":"bool","name":"onoff","type":"bool"}],"name":"setCooldownEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60806040526a52b7d2dcc80cd2e40000006000196200001f9190620005c1565b6000196200002e919062000628565b6009556000601160156101000a81548160ff0219169083151502179055506000601160166101000a81548160ff0219169083151502179055506000601160176101000a81548160ff0219169083151502179055506a52b7d2dcc80cd2e40000006012553480156200009e57600080fd5b506000620000b16200055760201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35073b0fa80d21cebc570c7c63dc335112b94264ab276600d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073b0fa80d21cebc570c7c63dc335112b94264ab276600e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550735905a1cb5f4e104b462b8a3ce75183ec0e25d623600f60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060095460026000620002656200055760201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600160056000620002b96200055f60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160056000600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160056000600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160056000600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550620004e06200055760201b60201c565b73ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6a52b7d2dcc80cd2e400000060405162000549919062000674565b60405180910390a362000691565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000620005ce8262000588565b9150620005db8362000588565b925082620005ee57620005ed62000592565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000620006358262000588565b9150620006428362000588565b925082821015620006585762000657620005f9565b5b828203905092915050565b6200066e8162000588565b82525050565b60006020820190506200068b600083018462000663565b92915050565b6137df80620006a16000396000f3fe6080604052600436106101185760003560e01c806370a08231116100a0578063b515566a11610064578063b515566a14610398578063c3c8cd80146103c1578063c9567bf9146103d8578063dd62ed3e146103ef578063ff8726021461042c5761011f565b806370a08231146102b1578063715018a6146102ee5780638da5cb5b1461030557806395d89b4114610330578063a9059cbb1461035b5761011f565b8063273123b7116100e7578063273123b7146101f4578063313ce5671461021d5780635932ead1146102485780635e326a7c146102715780636fc3eaec1461029a5761011f565b806306fdde0314610124578063095ea7b31461014f57806318160ddd1461018c57806323b872dd146101b75761011f565b3661011f57005b600080fd5b34801561013057600080fd5b50610139610443565b60405161014691906128a3565b60405180910390f35b34801561015b57600080fd5b506101766004803603810190610171919061296d565b610480565b60405161018391906129c8565b60405180910390f35b34801561019857600080fd5b506101a161049e565b6040516101ae91906129f2565b60405180910390f35b3480156101c357600080fd5b506101de60048036038101906101d99190612a0d565b6104b1565b6040516101eb91906129c8565b60405180910390f35b34801561020057600080fd5b5061021b60048036038101906102169190612a60565b61058a565b005b34801561022957600080fd5b5061023261067a565b60405161023f9190612aa9565b60405180910390f35b34801561025457600080fd5b5061026f600480360381019061026a9190612af0565b610683565b005b34801561027d57600080fd5b5061029860048036038101906102939190612b1d565b610735565b005b3480156102a657600080fd5b506102af6107f1565b005b3480156102bd57600080fd5b506102d860048036038101906102d39190612a60565b610863565b6040516102e591906129f2565b60405180910390f35b3480156102fa57600080fd5b506103036108b4565b005b34801561031157600080fd5b5061031a610a07565b6040516103279190612b6c565b60405180910390f35b34801561033c57600080fd5b50610345610a30565b60405161035291906128a3565b60405180910390f35b34801561036757600080fd5b50610382600480360381019061037d919061296d565b610a6d565b60405161038f91906129c8565b60405180910390f35b3480156103a457600080fd5b506103bf60048036038101906103ba9190612ccf565b610a8b565b005b3480156103cd57600080fd5b506103d6610bb5565b005b3480156103e457600080fd5b506103ed610c2f565b005b3480156103fb57600080fd5b5061041660048036038101906104119190612d18565b611190565b60405161042391906129f2565b60405180910390f35b34801561043857600080fd5b50610441611217565b005b60606040518060400160405280600a81526020017f5370792052616365727300000000000000000000000000000000000000000000815250905090565b600061049461048d6112c0565b84846112c8565b6001905092915050565b60006a52b7d2dcc80cd2e4000000905090565b60006104be848484611493565b61057f846104ca6112c0565b61057a8560405180606001604052806028815260200161378260289139600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006105306112c0565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611a989092919063ffffffff16565b6112c8565b600190509392505050565b6105926112c0565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461061f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161061690612da4565b60405180910390fd5b6000600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b60006009905090565b61068b6112c0565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610718576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161070f90612da4565b60405180910390fd5b80601160176101000a81548160ff02191690831515021790555050565b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166107766112c0565b73ffffffffffffffffffffffffffffffffffffffff161461079657600080fd5b80600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108326112c0565b73ffffffffffffffffffffffffffffffffffffffff161461085257600080fd5b600047905061086081611afc565b50565b60006108ad600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611c82565b9050919050565b6108bc6112c0565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610949576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161094090612da4565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606040518060400160405280600981526020017f5350595241434552530000000000000000000000000000000000000000000000815250905090565b6000610a81610a7a6112c0565b8484611493565b6001905092915050565b610a936112c0565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b20576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b1790612da4565b60405180910390fd5b60005b8151811015610bb157600160076000848481518110610b4557610b44612dc4565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080610ba990612e22565b915050610b23565b5050565b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610bf66112c0565b73ffffffffffffffffffffffffffffffffffffffff1614610c1657600080fd5b6000610c2130610863565b9050610c2c81611cf0565b50565b610c376112c0565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610cc4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cbb90612da4565b60405180910390fd5b601160149054906101000a900460ff1615610d14576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d0b90612eb7565b60405180910390fd5b6000737a250d5630b4cf539739df2c5dacb4c659f2488d905080601060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550610da630601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166a52b7d2dcc80cd2e40000006112c8565b8073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b158015610dec57600080fd5b505afa158015610e00573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e249190612eec565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015610e8657600080fd5b505afa158015610e9a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ebe9190612eec565b6040518363ffffffff1660e01b8152600401610edb929190612f19565b602060405180830381600087803b158015610ef557600080fd5b505af1158015610f09573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f2d9190612eec565b601160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d7194730610fb630610863565b600080610fc1610a07565b426040518863ffffffff1660e01b8152600401610fe396959493929190612f87565b6060604051808303818588803b158015610ffc57600080fd5b505af1158015611010573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906110359190612ffd565b5050506001601160166101000a81548160ff0219169083151502179055506001601160176101000a81548160ff0219169083151502179055506a01287626ee52197b0000006012819055506001601160146101000a81548160ff021916908315150217905550601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b3601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b815260040161113a929190613050565b602060405180830381600087803b15801561115457600080fd5b505af1158015611168573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061118c919061308e565b5050565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b61121f6112c0565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146112ac576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112a390612da4565b60405180910390fd5b6a52b7d2dcc80cd2e4000000601281905550565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611338576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161132f9061312d565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156113a8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161139f906131bf565b60405180910390fd5b80600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161148691906129f2565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611503576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114fa90613251565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611573576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161156a906132e3565b60405180910390fd5b600081116115b6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115ad90613375565b60405180910390fd5b6001600b81905550600b600c819055506115ce610a07565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561163c575061160c610a07565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15611a8857600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156116e55750600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b6116ee57600080fd5b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480156117995750601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156117ef5750600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156118075750601160179054906101000a900460ff165b156118b75760125481111561181b57600080fd5b42600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541061186657600080fd5b601e426118739190613395565b600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161480156119625750601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b80156119b85750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156119ce576001600b81905550600d600c819055505b60006119d930610863565b9050601160159054906101000a900460ff16158015611a465750601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b8015611a5e5750601160169054906101000a900460ff165b15611a8657611a6c81611cf0565b60004790506000811115611a8457611a8347611afc565b5b505b505b611a93838383611f78565b505050565b6000838311158290611ae0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ad791906128a3565b60405180910390fd5b5060008385611aef91906133eb565b9050809150509392505050565b6000611b15600c54600b54611f8890919063ffffffff16565b90506000611b2c8284611fe690919063ffffffff16565b9050600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc611b7f600b548461203090919063ffffffff16565b9081150290604051600060405180830381858888f19350505050158015611baa573d6000803e3d6000fd5b50600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015611c13573d6000803e3d6000fd5b50600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015611c7c573d6000803e3d6000fd5b50505050565b6000600954821115611cc9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cc090613491565b60405180910390fd5b6000611cd36120ab565b9050611ce88184611fe690919063ffffffff16565b915050919050565b6001601160156101000a81548160ff0219169083151502179055506000600267ffffffffffffffff811115611d2857611d27612b8c565b5b604051908082528060200260200182016040528015611d565781602001602082028036833780820191505090505b5090503081600081518110611d6e57611d6d612dc4565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015611e1057600080fd5b505afa158015611e24573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e489190612eec565b81600181518110611e5c57611e5b612dc4565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050611ec330601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846112c8565b601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401611f2795949392919061356f565b600060405180830381600087803b158015611f4157600080fd5b505af1158015611f55573d6000803e3d6000fd5b50505050506000601160156101000a81548160ff02191690831515021790555050565b611f838383836120d6565b505050565b6000808284611f979190613395565b905083811015611fdc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fd390613615565b60405180910390fd5b8091505092915050565b600061202883836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612477565b905092915050565b60008083141561204357600090506120a5565b600082846120519190613635565b905082848261206091906136be565b146120a0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161209790613761565b60405180910390fd5b809150505b92915050565b60008060006120b86124da565b915091506120cf8183611fe690919063ffffffff16565b9250505090565b6000806000806000806120e887612542565b955095509550955095509550600660008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806121955750600660008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156122c9576121ec86600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546125aa90919063ffffffff16565b600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061228186600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611f8890919063ffffffff16565b600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612407565b61231b86600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546125aa90919063ffffffff16565b600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506123b085600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611f8890919063ffffffff16565b600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506123fc816125f4565b61240684836126b1565b5b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8560405161246491906129f2565b60405180910390a3505050505050505050565b600080831182906124be576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124b591906128a3565b60405180910390fd5b50600083856124cd91906136be565b9050809150509392505050565b6000806000600954905060006a52b7d2dcc80cd2e400000090506125146a52b7d2dcc80cd2e4000000600954611fe690919063ffffffff16565b821015612535576009546a52b7d2dcc80cd2e400000093509350505061253e565b81819350935050505b9091565b600080600080600080600080600061255f8a600b54600c546126eb565b925092509250600061256f6120ab565b905060008060006125828e878787612781565b9250925092508282828989899c509c509c509c509c509c505050505050505091939550919395565b60006125ec83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611a98565b905092915050565b60006125fe6120ab565b90506000612615828461203090919063ffffffff16565b905061266981600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611f8890919063ffffffff16565b600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505050565b6126c6826009546125aa90919063ffffffff16565b6009819055506126e181600a54611f8890919063ffffffff16565b600a819055505050565b6000806000806127176064612709888a61203090919063ffffffff16565b611fe690919063ffffffff16565b905060006127416064612733888b61203090919063ffffffff16565b611fe690919063ffffffff16565b9050600061276a8261275c858c6125aa90919063ffffffff16565b6125aa90919063ffffffff16565b905080838395509550955050505093509350939050565b60008060008061279a858961203090919063ffffffff16565b905060006127b1868961203090919063ffffffff16565b905060006127c8878961203090919063ffffffff16565b905060006127f1826127e385876125aa90919063ffffffff16565b6125aa90919063ffffffff16565b9050838184965096509650505050509450945094915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612844578082015181840152602081019050612829565b83811115612853576000848401525b50505050565b6000601f19601f8301169050919050565b60006128758261280a565b61287f8185612815565b935061288f818560208601612826565b61289881612859565b840191505092915050565b600060208201905081810360008301526128bd818461286a565b905092915050565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612904826128d9565b9050919050565b612914816128f9565b811461291f57600080fd5b50565b6000813590506129318161290b565b92915050565b6000819050919050565b61294a81612937565b811461295557600080fd5b50565b60008135905061296781612941565b92915050565b60008060408385031215612984576129836128cf565b5b600061299285828601612922565b92505060206129a385828601612958565b9150509250929050565b60008115159050919050565b6129c2816129ad565b82525050565b60006020820190506129dd60008301846129b9565b92915050565b6129ec81612937565b82525050565b6000602082019050612a0760008301846129e3565b92915050565b600080600060608486031215612a2657612a256128cf565b5b6000612a3486828701612922565b9350506020612a4586828701612922565b9250506040612a5686828701612958565b9150509250925092565b600060208284031215612a7657612a756128cf565b5b6000612a8484828501612922565b91505092915050565b600060ff82169050919050565b612aa381612a8d565b82525050565b6000602082019050612abe6000830184612a9a565b92915050565b612acd816129ad565b8114612ad857600080fd5b50565b600081359050612aea81612ac4565b92915050565b600060208284031215612b0657612b056128cf565b5b6000612b1484828501612adb565b91505092915050565b60008060408385031215612b3457612b336128cf565b5b6000612b4285828601612922565b9250506020612b5385828601612adb565b9150509250929050565b612b66816128f9565b82525050565b6000602082019050612b816000830184612b5d565b92915050565b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b612bc482612859565b810181811067ffffffffffffffff82111715612be357612be2612b8c565b5b80604052505050565b6000612bf66128c5565b9050612c028282612bbb565b919050565b600067ffffffffffffffff821115612c2257612c21612b8c565b5b602082029050602081019050919050565b600080fd5b6000612c4b612c4684612c07565b612bec565b90508083825260208201905060208402830185811115612c6e57612c6d612c33565b5b835b81811015612c975780612c838882612922565b845260208401935050602081019050612c70565b5050509392505050565b600082601f830112612cb657612cb5612b87565b5b8135612cc6848260208601612c38565b91505092915050565b600060208284031215612ce557612ce46128cf565b5b600082013567ffffffffffffffff811115612d0357612d026128d4565b5b612d0f84828501612ca1565b91505092915050565b60008060408385031215612d2f57612d2e6128cf565b5b6000612d3d85828601612922565b9250506020612d4e85828601612922565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000612d8e602083612815565b9150612d9982612d58565b602082019050919050565b60006020820190508181036000830152612dbd81612d81565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000612e2d82612937565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415612e6057612e5f612df3565b5b600182019050919050565b7f74726164696e6720697320616c7265616479206f70656e000000000000000000600082015250565b6000612ea1601783612815565b9150612eac82612e6b565b602082019050919050565b60006020820190508181036000830152612ed081612e94565b9050919050565b600081519050612ee68161290b565b92915050565b600060208284031215612f0257612f016128cf565b5b6000612f1084828501612ed7565b91505092915050565b6000604082019050612f2e6000830185612b5d565b612f3b6020830184612b5d565b9392505050565b6000819050919050565b6000819050919050565b6000612f71612f6c612f6784612f42565b612f4c565b612937565b9050919050565b612f8181612f56565b82525050565b600060c082019050612f9c6000830189612b5d565b612fa960208301886129e3565b612fb66040830187612f78565b612fc36060830186612f78565b612fd06080830185612b5d565b612fdd60a08301846129e3565b979650505050505050565b600081519050612ff781612941565b92915050565b600080600060608486031215613016576130156128cf565b5b600061302486828701612fe8565b935050602061303586828701612fe8565b925050604061304686828701612fe8565b9150509250925092565b60006040820190506130656000830185612b5d565b61307260208301846129e3565b9392505050565b60008151905061308881612ac4565b92915050565b6000602082840312156130a4576130a36128cf565b5b60006130b284828501613079565b91505092915050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000613117602483612815565b9150613122826130bb565b604082019050919050565b600060208201905081810360008301526131468161310a565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b60006131a9602283612815565b91506131b48261314d565b604082019050919050565b600060208201905081810360008301526131d88161319c565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b600061323b602583612815565b9150613246826131df565b604082019050919050565b6000602082019050818103600083015261326a8161322e565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b60006132cd602383612815565b91506132d882613271565b604082019050919050565b600060208201905081810360008301526132fc816132c0565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b600061335f602983612815565b915061336a82613303565b604082019050919050565b6000602082019050818103600083015261338e81613352565b9050919050565b60006133a082612937565b91506133ab83612937565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156133e0576133df612df3565b5b828201905092915050565b60006133f682612937565b915061340183612937565b92508282101561341457613413612df3565b5b828203905092915050565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260008201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b600061347b602a83612815565b91506134868261341f565b604082019050919050565b600060208201905081810360008301526134aa8161346e565b9050919050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6134e6816128f9565b82525050565b60006134f883836134dd565b60208301905092915050565b6000602082019050919050565b600061351c826134b1565b61352681856134bc565b9350613531836134cd565b8060005b8381101561356257815161354988826134ec565b975061355483613504565b925050600181019050613535565b5085935050505092915050565b600060a08201905061358460008301886129e3565b6135916020830187612f78565b81810360408301526135a38186613511565b90506135b26060830185612b5d565b6135bf60808301846129e3565b9695505050505050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b60006135ff601b83612815565b915061360a826135c9565b602082019050919050565b6000602082019050818103600083015261362e816135f2565b9050919050565b600061364082612937565b915061364b83612937565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561368457613683612df3565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006136c982612937565b91506136d483612937565b9250826136e4576136e361368f565b5b828204905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b600061374b602183612815565b9150613756826136ef565b604082019050919050565b6000602082019050818103600083015261377a8161373e565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212202c4fe51317f6d51070a8a3c878b809a42cd7e2a562ab39f989e3167f9145ec0164736f6c63430008090033

Deployed Bytecode

0x6080604052600436106101185760003560e01c806370a08231116100a0578063b515566a11610064578063b515566a14610398578063c3c8cd80146103c1578063c9567bf9146103d8578063dd62ed3e146103ef578063ff8726021461042c5761011f565b806370a08231146102b1578063715018a6146102ee5780638da5cb5b1461030557806395d89b4114610330578063a9059cbb1461035b5761011f565b8063273123b7116100e7578063273123b7146101f4578063313ce5671461021d5780635932ead1146102485780635e326a7c146102715780636fc3eaec1461029a5761011f565b806306fdde0314610124578063095ea7b31461014f57806318160ddd1461018c57806323b872dd146101b75761011f565b3661011f57005b600080fd5b34801561013057600080fd5b50610139610443565b60405161014691906128a3565b60405180910390f35b34801561015b57600080fd5b506101766004803603810190610171919061296d565b610480565b60405161018391906129c8565b60405180910390f35b34801561019857600080fd5b506101a161049e565b6040516101ae91906129f2565b60405180910390f35b3480156101c357600080fd5b506101de60048036038101906101d99190612a0d565b6104b1565b6040516101eb91906129c8565b60405180910390f35b34801561020057600080fd5b5061021b60048036038101906102169190612a60565b61058a565b005b34801561022957600080fd5b5061023261067a565b60405161023f9190612aa9565b60405180910390f35b34801561025457600080fd5b5061026f600480360381019061026a9190612af0565b610683565b005b34801561027d57600080fd5b5061029860048036038101906102939190612b1d565b610735565b005b3480156102a657600080fd5b506102af6107f1565b005b3480156102bd57600080fd5b506102d860048036038101906102d39190612a60565b610863565b6040516102e591906129f2565b60405180910390f35b3480156102fa57600080fd5b506103036108b4565b005b34801561031157600080fd5b5061031a610a07565b6040516103279190612b6c565b60405180910390f35b34801561033c57600080fd5b50610345610a30565b60405161035291906128a3565b60405180910390f35b34801561036757600080fd5b50610382600480360381019061037d919061296d565b610a6d565b60405161038f91906129c8565b60405180910390f35b3480156103a457600080fd5b506103bf60048036038101906103ba9190612ccf565b610a8b565b005b3480156103cd57600080fd5b506103d6610bb5565b005b3480156103e457600080fd5b506103ed610c2f565b005b3480156103fb57600080fd5b5061041660048036038101906104119190612d18565b611190565b60405161042391906129f2565b60405180910390f35b34801561043857600080fd5b50610441611217565b005b60606040518060400160405280600a81526020017f5370792052616365727300000000000000000000000000000000000000000000815250905090565b600061049461048d6112c0565b84846112c8565b6001905092915050565b60006a52b7d2dcc80cd2e4000000905090565b60006104be848484611493565b61057f846104ca6112c0565b61057a8560405180606001604052806028815260200161378260289139600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006105306112c0565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611a989092919063ffffffff16565b6112c8565b600190509392505050565b6105926112c0565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461061f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161061690612da4565b60405180910390fd5b6000600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b60006009905090565b61068b6112c0565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610718576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161070f90612da4565b60405180910390fd5b80601160176101000a81548160ff02191690831515021790555050565b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166107766112c0565b73ffffffffffffffffffffffffffffffffffffffff161461079657600080fd5b80600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108326112c0565b73ffffffffffffffffffffffffffffffffffffffff161461085257600080fd5b600047905061086081611afc565b50565b60006108ad600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611c82565b9050919050565b6108bc6112c0565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610949576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161094090612da4565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606040518060400160405280600981526020017f5350595241434552530000000000000000000000000000000000000000000000815250905090565b6000610a81610a7a6112c0565b8484611493565b6001905092915050565b610a936112c0565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b20576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b1790612da4565b60405180910390fd5b60005b8151811015610bb157600160076000848481518110610b4557610b44612dc4565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080610ba990612e22565b915050610b23565b5050565b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610bf66112c0565b73ffffffffffffffffffffffffffffffffffffffff1614610c1657600080fd5b6000610c2130610863565b9050610c2c81611cf0565b50565b610c376112c0565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610cc4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cbb90612da4565b60405180910390fd5b601160149054906101000a900460ff1615610d14576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d0b90612eb7565b60405180910390fd5b6000737a250d5630b4cf539739df2c5dacb4c659f2488d905080601060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550610da630601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166a52b7d2dcc80cd2e40000006112c8565b8073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b158015610dec57600080fd5b505afa158015610e00573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e249190612eec565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015610e8657600080fd5b505afa158015610e9a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ebe9190612eec565b6040518363ffffffff1660e01b8152600401610edb929190612f19565b602060405180830381600087803b158015610ef557600080fd5b505af1158015610f09573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f2d9190612eec565b601160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d7194730610fb630610863565b600080610fc1610a07565b426040518863ffffffff1660e01b8152600401610fe396959493929190612f87565b6060604051808303818588803b158015610ffc57600080fd5b505af1158015611010573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906110359190612ffd565b5050506001601160166101000a81548160ff0219169083151502179055506001601160176101000a81548160ff0219169083151502179055506a01287626ee52197b0000006012819055506001601160146101000a81548160ff021916908315150217905550601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b3601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b815260040161113a929190613050565b602060405180830381600087803b15801561115457600080fd5b505af1158015611168573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061118c919061308e565b5050565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b61121f6112c0565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146112ac576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112a390612da4565b60405180910390fd5b6a52b7d2dcc80cd2e4000000601281905550565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611338576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161132f9061312d565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156113a8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161139f906131bf565b60405180910390fd5b80600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161148691906129f2565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611503576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114fa90613251565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611573576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161156a906132e3565b60405180910390fd5b600081116115b6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115ad90613375565b60405180910390fd5b6001600b81905550600b600c819055506115ce610a07565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561163c575061160c610a07565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15611a8857600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156116e55750600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b6116ee57600080fd5b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480156117995750601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156117ef5750600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156118075750601160179054906101000a900460ff165b156118b75760125481111561181b57600080fd5b42600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541061186657600080fd5b601e426118739190613395565b600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161480156119625750601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b80156119b85750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156119ce576001600b81905550600d600c819055505b60006119d930610863565b9050601160159054906101000a900460ff16158015611a465750601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b8015611a5e5750601160169054906101000a900460ff165b15611a8657611a6c81611cf0565b60004790506000811115611a8457611a8347611afc565b5b505b505b611a93838383611f78565b505050565b6000838311158290611ae0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ad791906128a3565b60405180910390fd5b5060008385611aef91906133eb565b9050809150509392505050565b6000611b15600c54600b54611f8890919063ffffffff16565b90506000611b2c8284611fe690919063ffffffff16565b9050600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc611b7f600b548461203090919063ffffffff16565b9081150290604051600060405180830381858888f19350505050158015611baa573d6000803e3d6000fd5b50600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015611c13573d6000803e3d6000fd5b50600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015611c7c573d6000803e3d6000fd5b50505050565b6000600954821115611cc9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cc090613491565b60405180910390fd5b6000611cd36120ab565b9050611ce88184611fe690919063ffffffff16565b915050919050565b6001601160156101000a81548160ff0219169083151502179055506000600267ffffffffffffffff811115611d2857611d27612b8c565b5b604051908082528060200260200182016040528015611d565781602001602082028036833780820191505090505b5090503081600081518110611d6e57611d6d612dc4565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015611e1057600080fd5b505afa158015611e24573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e489190612eec565b81600181518110611e5c57611e5b612dc4565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050611ec330601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846112c8565b601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401611f2795949392919061356f565b600060405180830381600087803b158015611f4157600080fd5b505af1158015611f55573d6000803e3d6000fd5b50505050506000601160156101000a81548160ff02191690831515021790555050565b611f838383836120d6565b505050565b6000808284611f979190613395565b905083811015611fdc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fd390613615565b60405180910390fd5b8091505092915050565b600061202883836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612477565b905092915050565b60008083141561204357600090506120a5565b600082846120519190613635565b905082848261206091906136be565b146120a0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161209790613761565b60405180910390fd5b809150505b92915050565b60008060006120b86124da565b915091506120cf8183611fe690919063ffffffff16565b9250505090565b6000806000806000806120e887612542565b955095509550955095509550600660008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806121955750600660008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156122c9576121ec86600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546125aa90919063ffffffff16565b600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061228186600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611f8890919063ffffffff16565b600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612407565b61231b86600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546125aa90919063ffffffff16565b600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506123b085600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611f8890919063ffffffff16565b600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506123fc816125f4565b61240684836126b1565b5b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8560405161246491906129f2565b60405180910390a3505050505050505050565b600080831182906124be576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124b591906128a3565b60405180910390fd5b50600083856124cd91906136be565b9050809150509392505050565b6000806000600954905060006a52b7d2dcc80cd2e400000090506125146a52b7d2dcc80cd2e4000000600954611fe690919063ffffffff16565b821015612535576009546a52b7d2dcc80cd2e400000093509350505061253e565b81819350935050505b9091565b600080600080600080600080600061255f8a600b54600c546126eb565b925092509250600061256f6120ab565b905060008060006125828e878787612781565b9250925092508282828989899c509c509c509c509c509c505050505050505091939550919395565b60006125ec83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611a98565b905092915050565b60006125fe6120ab565b90506000612615828461203090919063ffffffff16565b905061266981600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611f8890919063ffffffff16565b600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505050565b6126c6826009546125aa90919063ffffffff16565b6009819055506126e181600a54611f8890919063ffffffff16565b600a819055505050565b6000806000806127176064612709888a61203090919063ffffffff16565b611fe690919063ffffffff16565b905060006127416064612733888b61203090919063ffffffff16565b611fe690919063ffffffff16565b9050600061276a8261275c858c6125aa90919063ffffffff16565b6125aa90919063ffffffff16565b905080838395509550955050505093509350939050565b60008060008061279a858961203090919063ffffffff16565b905060006127b1868961203090919063ffffffff16565b905060006127c8878961203090919063ffffffff16565b905060006127f1826127e385876125aa90919063ffffffff16565b6125aa90919063ffffffff16565b9050838184965096509650505050509450945094915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612844578082015181840152602081019050612829565b83811115612853576000848401525b50505050565b6000601f19601f8301169050919050565b60006128758261280a565b61287f8185612815565b935061288f818560208601612826565b61289881612859565b840191505092915050565b600060208201905081810360008301526128bd818461286a565b905092915050565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612904826128d9565b9050919050565b612914816128f9565b811461291f57600080fd5b50565b6000813590506129318161290b565b92915050565b6000819050919050565b61294a81612937565b811461295557600080fd5b50565b60008135905061296781612941565b92915050565b60008060408385031215612984576129836128cf565b5b600061299285828601612922565b92505060206129a385828601612958565b9150509250929050565b60008115159050919050565b6129c2816129ad565b82525050565b60006020820190506129dd60008301846129b9565b92915050565b6129ec81612937565b82525050565b6000602082019050612a0760008301846129e3565b92915050565b600080600060608486031215612a2657612a256128cf565b5b6000612a3486828701612922565b9350506020612a4586828701612922565b9250506040612a5686828701612958565b9150509250925092565b600060208284031215612a7657612a756128cf565b5b6000612a8484828501612922565b91505092915050565b600060ff82169050919050565b612aa381612a8d565b82525050565b6000602082019050612abe6000830184612a9a565b92915050565b612acd816129ad565b8114612ad857600080fd5b50565b600081359050612aea81612ac4565b92915050565b600060208284031215612b0657612b056128cf565b5b6000612b1484828501612adb565b91505092915050565b60008060408385031215612b3457612b336128cf565b5b6000612b4285828601612922565b9250506020612b5385828601612adb565b9150509250929050565b612b66816128f9565b82525050565b6000602082019050612b816000830184612b5d565b92915050565b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b612bc482612859565b810181811067ffffffffffffffff82111715612be357612be2612b8c565b5b80604052505050565b6000612bf66128c5565b9050612c028282612bbb565b919050565b600067ffffffffffffffff821115612c2257612c21612b8c565b5b602082029050602081019050919050565b600080fd5b6000612c4b612c4684612c07565b612bec565b90508083825260208201905060208402830185811115612c6e57612c6d612c33565b5b835b81811015612c975780612c838882612922565b845260208401935050602081019050612c70565b5050509392505050565b600082601f830112612cb657612cb5612b87565b5b8135612cc6848260208601612c38565b91505092915050565b600060208284031215612ce557612ce46128cf565b5b600082013567ffffffffffffffff811115612d0357612d026128d4565b5b612d0f84828501612ca1565b91505092915050565b60008060408385031215612d2f57612d2e6128cf565b5b6000612d3d85828601612922565b9250506020612d4e85828601612922565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000612d8e602083612815565b9150612d9982612d58565b602082019050919050565b60006020820190508181036000830152612dbd81612d81565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000612e2d82612937565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415612e6057612e5f612df3565b5b600182019050919050565b7f74726164696e6720697320616c7265616479206f70656e000000000000000000600082015250565b6000612ea1601783612815565b9150612eac82612e6b565b602082019050919050565b60006020820190508181036000830152612ed081612e94565b9050919050565b600081519050612ee68161290b565b92915050565b600060208284031215612f0257612f016128cf565b5b6000612f1084828501612ed7565b91505092915050565b6000604082019050612f2e6000830185612b5d565b612f3b6020830184612b5d565b9392505050565b6000819050919050565b6000819050919050565b6000612f71612f6c612f6784612f42565b612f4c565b612937565b9050919050565b612f8181612f56565b82525050565b600060c082019050612f9c6000830189612b5d565b612fa960208301886129e3565b612fb66040830187612f78565b612fc36060830186612f78565b612fd06080830185612b5d565b612fdd60a08301846129e3565b979650505050505050565b600081519050612ff781612941565b92915050565b600080600060608486031215613016576130156128cf565b5b600061302486828701612fe8565b935050602061303586828701612fe8565b925050604061304686828701612fe8565b9150509250925092565b60006040820190506130656000830185612b5d565b61307260208301846129e3565b9392505050565b60008151905061308881612ac4565b92915050565b6000602082840312156130a4576130a36128cf565b5b60006130b284828501613079565b91505092915050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000613117602483612815565b9150613122826130bb565b604082019050919050565b600060208201905081810360008301526131468161310a565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b60006131a9602283612815565b91506131b48261314d565b604082019050919050565b600060208201905081810360008301526131d88161319c565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b600061323b602583612815565b9150613246826131df565b604082019050919050565b6000602082019050818103600083015261326a8161322e565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b60006132cd602383612815565b91506132d882613271565b604082019050919050565b600060208201905081810360008301526132fc816132c0565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b600061335f602983612815565b915061336a82613303565b604082019050919050565b6000602082019050818103600083015261338e81613352565b9050919050565b60006133a082612937565b91506133ab83612937565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156133e0576133df612df3565b5b828201905092915050565b60006133f682612937565b915061340183612937565b92508282101561341457613413612df3565b5b828203905092915050565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260008201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b600061347b602a83612815565b91506134868261341f565b604082019050919050565b600060208201905081810360008301526134aa8161346e565b9050919050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6134e6816128f9565b82525050565b60006134f883836134dd565b60208301905092915050565b6000602082019050919050565b600061351c826134b1565b61352681856134bc565b9350613531836134cd565b8060005b8381101561356257815161354988826134ec565b975061355483613504565b925050600181019050613535565b5085935050505092915050565b600060a08201905061358460008301886129e3565b6135916020830187612f78565b81810360408301526135a38186613511565b90506135b26060830185612b5d565b6135bf60808301846129e3565b9695505050505050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b60006135ff601b83612815565b915061360a826135c9565b602082019050919050565b6000602082019050818103600083015261362e816135f2565b9050919050565b600061364082612937565b915061364b83612937565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561368457613683612df3565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006136c982612937565b91506136d483612937565b9250826136e4576136e361368f565b5b828204905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b600061374b602183612815565b9150613756826136ef565b604082019050919050565b6000602082019050818103600083015261377a8161373e565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212202c4fe51317f6d51070a8a3c878b809a42cd7e2a562ab39f989e3167f9145ec0164736f6c63430008090033

Deployed Bytecode Sourcemap

3523:11264:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5624:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6476:161;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5901:95;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6645:313;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11121:88;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5810:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6966:103;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12933:158;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12731:194;;;;;;;;;;;;;:::i;:::-;;6004:138;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2602:148;;;;;;;;;;;;;:::i;:::-;;2388:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5715:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6150:167;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10827:164;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12524:195;;;;;;;;;;;;;:::i;:::-;;9994:821;;;;;;;;;;;;;:::i;:::-;;6325:143;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11007:108;;;;;;;;;;;;;:::i;:::-;;5624:83;5661:13;5694:5;;;;;;;;;;;;;;;;;5687:12;;5624:83;:::o;6476:161::-;6551:4;6568:39;6577:12;:10;:12::i;:::-;6591:7;6600:6;6568:8;:39::i;:::-;6625:4;6618:11;;6476:161;;;;:::o;5901:95::-;5954:7;4077:26;5974:14;;5901:95;:::o;6645:313::-;6743:4;6760:36;6770:6;6778:9;6789:6;6760:9;:36::i;:::-;6807:121;6816:6;6824:12;:10;:12::i;:::-;6838:89;6876:6;6838:89;;;;;;;;;;;;;;;;;:11;:19;6850:6;6838:19;;;;;;;;;;;;;;;:33;6858:12;:10;:12::i;:::-;6838:33;;;;;;;;;;;;;;;;:37;;:89;;;;;:::i;:::-;6807:8;:121::i;:::-;6946:4;6939:11;;6645:313;;;;;:::o;11121:88::-;2525:12;:10;:12::i;:::-;2515:22;;:6;;;;;;;;;;:22;;;2507:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;11196:5:::1;11181:4;:12;11186:6;11181:12;;;;;;;;;;;;;;;;:20;;;;;;;;;;;;;;;;;;11121:88:::0;:::o;5810:83::-;5851:5;4551:1;5869:16;;5810:83;:::o;6966:103::-;2525:12;:10;:12::i;:::-;2515:22;;:6;;;;;;;;;;:22;;;2507:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;7056:5:::1;7038:15;;:23;;;;;;;;;;;;;;;;;;6966:103:::0;:::o;12933:158::-;13028:15;;;;;;;;;;;13012:31;;:12;:10;:12::i;:::-;:31;;;13004:40;;;;;;13079:4;13055:11;:21;13067:8;13055:21;;;;;;;;;;;;;;;;:28;;;;;;;;;;;;;;;;;;12933:158;;:::o;12731:194::-;12797:15;;;;;;;;;;;12781:31;;:12;:10;:12::i;:::-;:31;;;12773:40;;;;;;12824:26;12853:21;12824:50;;12885:32;12898:18;12885:12;:32::i;:::-;12762:163;12731:194::o;6004:138::-;6070:7;6097:37;6117:7;:16;6125:7;6117:16;;;;;;;;;;;;;;;;6097:19;:37::i;:::-;6090:44;;6004:138;;;:::o;2602:148::-;2525:12;:10;:12::i;:::-;2515:22;;:6;;;;;;;;;;:22;;;2507:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;2709:1:::1;2672:40;;2693:6;::::0;::::1;;;;;;;;2672:40;;;;;;;;;;;;2740:1;2723:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;2602:148::o:0;2388:79::-;2426:7;2453:6;;;;;;;;;;;2446:13;;2388:79;:::o;5715:87::-;5754:13;5787:7;;;;;;;;;;;;;;;;;5780:14;;5715:87;:::o;6150:167::-;6228:4;6245:42;6255:12;:10;:12::i;:::-;6269:9;6280:6;6245:9;:42::i;:::-;6305:4;6298:11;;6150:167;;;;:::o;10827:164::-;2525:12;:10;:12::i;:::-;2515:22;;:6;;;;;;;;;;:22;;;2507:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;10901:6:::1;10896:88;10917:5;:12;10913:1;:16;10896:88;;;10968:4;10951;:14;10956:5;10962:1;10956:8;;;;;;;;:::i;:::-;;;;;;;;10951:14;;;;;;;;;;;;;;;;:21;;;;;;;;;;;;;;;;;;10931:3;;;;;:::i;:::-;;;;10896:88;;;;10827:164:::0;:::o;12524:195::-;12590:15;;;;;;;;;;;12574:31;;:12;:10;:12::i;:::-;:31;;;12566:40;;;;;;12617:23;12643:24;12661:4;12643:9;:24::i;:::-;12617:50;;12678:33;12695:15;12678:16;:33::i;:::-;12555:164;12524:195::o;9994:821::-;2525:12;:10;:12::i;:::-;2515:22;;:6;;;;;;;;;;:22;;;2507:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;10058:11:::1;;;;;;;;;;;10057:12;10049:47;;;;;;;;;;;;:::i;:::-;;;;;;;;;10107:35;10164:42;10107:100;;10236:16;10218:15;;:34;;;;;;;;;;;;;;;;;;10263:58;10280:4;10295:15;;;;;;;;;;;4077:26;10263:8;:58::i;:::-;10366:16;:24;;;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10348:56;;;10413:4;10420:16;:21;;;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10348:96;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10332:13;;:112;;;;;;;;;;;;;;;;;;10455:15;;;;;;;;;;;:31;;;10494:21;10525:4;10531:24;10549:4;10531:9;:24::i;:::-;10556:1;10558::::0;10560:7:::1;:5;:7::i;:::-;10568:15;10455:129;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;10609:4;10595:11;;:18;;;;;;;;;;;;;;;;;;10642:4;10624:15;;:22;;;;;;;;;;;;;;;;;;10672:24;10657:12;:39;;;;10721:4;10707:11;;:18;;;;;;;;;;;;;;;;;;10743:13;;;;;;;;;;;10736:29;;;10774:15;;;;;;;;;;;10792:14;10736:71;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;10038:777;9994:821::o:0;6325:143::-;6406:7;6433:11;:18;6445:5;6433:18;;;;;;;;;;;;;;;:27;6452:7;6433:27;;;;;;;;;;;;;;;;6426:34;;6325:143;;;;:::o;11007:108::-;2525:12;:10;:12::i;:::-;2515:22;;:6;;;;;;;;;;:22;;;2507:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;11081:26:::1;11066:12;:41;;;;11007:108::o:0;106:98::-;159:7;186:10;179:17;;106:98;:::o;7339:335::-;7449:1;7432:19;;:5;:19;;;;7424:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;7530:1;7511:21;;:7;:21;;;;7503:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;7612:6;7582:11;:18;7594:5;7582:18;;;;;;;;;;;;;;;:27;7601:7;7582:27;;;;;;;;;;;;;;;:36;;;;7650:7;7634:32;;7643:5;7634:32;;;7659:6;7634:32;;;;;;:::i;:::-;;;;;;;;7339:335;;;:::o;7682:1475::-;7786:1;7770:18;;:4;:18;;;;7762:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;7863:1;7849:16;;:2;:16;;;;7841:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;7933:1;7924:6;:10;7916:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;8005:1;7993:9;:13;;;;8029:2;8017:9;:14;;;;8064:7;:5;:7::i;:::-;8056:15;;:4;:15;;;;:32;;;;;8081:7;:5;:7::i;:::-;8075:13;;:2;:13;;;;8056:32;8052:1053;;;8114:4;:10;8119:4;8114:10;;;;;;;;;;;;;;;;;;;;;;;;;8113:11;:24;;;;;8129:4;:8;8134:2;8129:8;;;;;;;;;;;;;;;;;;;;;;;;;8128:9;8113:24;8105:33;;;;;;8165:13;;;;;;;;;;;8157:21;;:4;:21;;;:55;;;;;8196:15;;;;;;;;;;;8182:30;;:2;:30;;;;8157:55;:83;;;;;8218:18;:22;8237:2;8218:22;;;;;;;;;;;;;;;;;;;;;;;;;8216:24;8157:83;:102;;;;;8244:15;;;;;;;;;;;8157:102;8153:325;;;8327:12;;8317:6;:22;;8309:31;;;;;;8382:15;8367:8;:12;8376:2;8367:12;;;;;;;;;;;;;;;;:30;8359:39;;;;;;8451:10;8432:15;:30;;;;:::i;:::-;8417:8;:12;8426:2;8417:12;;;;;;;;;;;;;;;:45;;;;8153:325;8530:13;;;;;;;;;;;8524:19;;:2;:19;;;:55;;;;;8563:15;;;;;;;;;;;8547:32;;:4;:32;;;;8524:55;:85;;;;;8585:18;:24;8604:4;8585:24;;;;;;;;;;;;;;;;;;;;;;;;;8583:26;8524:85;8520:172;;;8642:1;8630:9;:13;;;;8674:2;8662:9;:14;;;;8520:172;8706:28;8737:24;8755:4;8737:9;:24::i;:::-;8706:55;;8781:6;;;;;;;;;;;8780:7;:32;;;;;8799:13;;;;;;;;;;;8791:21;;:4;:21;;;;8780:32;:47;;;;;8816:11;;;;;;;;;;;8780:47;8776:318;;;8848:38;8865:20;8848:16;:38::i;:::-;8905:26;8934:21;8905:50;;8998:1;8977:18;:22;8974:105;;;9024:35;9037:21;9024:12;:35::i;:::-;8974:105;8829:265;8776:318;8090:1015;8052:1053;9119:30;9134:4;9139:2;9142:6;9119:14;:30::i;:::-;7682:1475;;;:::o;1243:190::-;1329:7;1362:1;1357;:6;;1365:12;1349:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;1389:9;1405:1;1401;:5;;;;:::i;:::-;1389:17;;1424:1;1417:8;;;1243:190;;;;;:::o;9664:318::-;9721:17;9741:24;9755:9;;9741;;:13;;:24;;;;:::i;:::-;9721:44;;9776:18;9797:21;9808:9;9797:6;:10;;:21;;;;:::i;:::-;9776:42;;9829:15;;;;;;;;;;;:24;;:51;9854:25;9869:9;;9854:10;:14;;:25;;;;:::i;:::-;9829:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9891:15;;;;;;;;;;;:24;;:36;9916:10;9891:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9938:15;;;;;;;;;;;:24;;:36;9963:10;9938:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9710:272;;9664:318;:::o;7077:254::-;7144:7;7183;;7172;:18;;7164:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;7248:19;7271:10;:8;:10::i;:::-;7248:33;;7299:24;7311:11;7299:7;:11;;:24;;;;:::i;:::-;7292:31;;;7077:254;;;:::o;9165:483::-;4933:4;4924:6;;:13;;;;;;;;;;;;;;;;;;9243:21:::1;9281:1;9267:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9243:40;;9312:4;9294;9299:1;9294:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;9338:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;9328:4;9333:1;9328:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;::::0;::::1;9371:62;9388:4;9403:15;;;;;;;;;;;9421:11;9371:8;:62::i;:::-;9444:15;;;;;;;;;;;:66;;;9525:11;9551:1;9567:4;9594;9614:15;9444:196;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;9232:416;4969:5:::0;4960:6;;:14;;;;;;;;;;;;;;;;;;9165:483;:::o;11225:146::-;11319:44;11337:6;11345:9;11356:6;11319:17;:44::i;:::-;11225:146;;;:::o;912:179::-;970:7;990:9;1006:1;1002;:5;;;;:::i;:::-;990:17;;1031:1;1026;:6;;1018:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;1082:1;1075:8;;;912:179;;;;:::o;1695:132::-;1753:7;1780:39;1784:1;1787;1780:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;1773:46;;1695:132;;;;:::o;1441:246::-;1499:7;1528:1;1523;:6;1519:47;;;1553:1;1546:8;;;;1519:47;1576:9;1592:1;1588;:5;;;;:::i;:::-;1576:17;;1621:1;1616;1612;:5;;;;:::i;:::-;:10;1604:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;1678:1;1671:8;;;1441:246;;;;;:::o;14351:163::-;14392:7;14413:15;14430;14449:19;:17;:19::i;:::-;14412:56;;;;14486:20;14498:7;14486;:11;;:20;;;;:::i;:::-;14479:27;;;;14351:163;:::o;11379:721::-;11478:15;11495:23;11520:12;11534:23;11559:12;11573:13;11590:19;11601:7;11590:10;:19::i;:::-;11477:132;;;;;;;;;;;;11623:11;:19;11635:6;11623:19;;;;;;;;;;;;;;;;;;;;;;;;;:45;;;;11646:11;:22;11658:9;11646:22;;;;;;;;;;;;;;;;;;;;;;;;;11623:45;11620:413;;;11702:28;11722:7;11702;:15;11710:6;11702:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;11684:7;:15;11692:6;11684:15;;;;;;;;;;;;;;;:46;;;;11766:31;11789:7;11766;:18;11774:9;11766:18;;;;;;;;;;;;;;;;:22;;:31;;;;:::i;:::-;11745:7;:18;11753:9;11745:18;;;;;;;;;;;;;;;:52;;;;11620:413;;;11848:28;11868:7;11848;:15;11856:6;11848:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;11830:7;:15;11838:6;11830:15;;;;;;;;;;;;;;;:46;;;;11912:39;11935:15;11912:7;:18;11920:9;11912:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;11891:7;:18;11899:9;11891:18;;;;;;;;;;;;;;;:60;;;;11967:16;11977:5;11967:9;:16::i;:::-;11998:23;12010:4;12016;11998:11;:23::i;:::-;11620:413;12065:9;12048:44;;12057:6;12048:44;;;12076:15;12048:44;;;;;;:::i;:::-;;;;;;;;11466:634;;;;;;11379:721;;;:::o;1835:189::-;1921:7;1953:1;1949;:5;1956:12;1941:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;1980:9;1996:1;1992;:5;;;;:::i;:::-;1980:17;;2015:1;2008:8;;;1835:189;;;;;:::o;14522:262::-;14572:7;14581;14601:15;14619:7;;14601:25;;14637:15;4077:26;14637:25;;14693:20;4077:26;14693:7;;:11;;:20;;;;:::i;:::-;14683:7;:30;14679:61;;;14723:7;;4077:26;14715:25;;;;;;;;14679:61;14759:7;14768;14751:25;;;;;;14522:262;;;:::o;13099:471::-;13158:7;13167;13176;13185;13194;13203;13224:23;13249:12;13263:13;13280:42;13292:7;13301:9;;13312;;13280:11;:42::i;:::-;13223:99;;;;;;13333:19;13356:10;:8;:10::i;:::-;13333:33;;13378:15;13395:23;13420:12;13436:46;13448:7;13457:4;13463:5;13470:11;13436;:46::i;:::-;13377:105;;;;;;13501:7;13510:15;13527:4;13533:15;13550:4;13556:5;13493:69;;;;;;;;;;;;;;;;;;;13099:471;;;;;;;:::o;1099:136::-;1157:7;1184:43;1188:1;1191;1184:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;1177:50;;1099:136;;;;:::o;12108:212::-;12161:19;12184:10;:8;:10::i;:::-;12161:33;;12205:13;12221:22;12231:11;12221:5;:9;;:22;;;;:::i;:::-;12205:38;;12279:33;12306:5;12279:7;:22;12295:4;12279:22;;;;;;;;;;;;;;;;:26;;:33;;;;:::i;:::-;12254:7;:22;12270:4;12254:22;;;;;;;;;;;;;;;:58;;;;12150:170;;12108:212;:::o;12328:147::-;12406:17;12418:4;12406:7;;:11;;:17;;;;:::i;:::-;12396:7;:27;;;;12447:20;12462:4;12447:10;;:14;;:20;;;;:::i;:::-;12434:10;:33;;;;12328:147;;:::o;13578:351::-;13671:7;13680;13689;13709:12;13724:28;13748:3;13724:19;13736:6;13724:7;:11;;:19;;;;:::i;:::-;:23;;:28;;;;:::i;:::-;13709:43;;13763:13;13779:29;13804:3;13779:20;13791:7;13779;:11;;:20;;;;:::i;:::-;:24;;:29;;;;:::i;:::-;13763:45;;13819:23;13845:28;13867:5;13845:17;13857:4;13845:7;:11;;:17;;;;:::i;:::-;:21;;:28;;;;:::i;:::-;13819:54;;13892:15;13909:4;13915:5;13884:37;;;;;;;;;13578:351;;;;;;;:::o;13937:409::-;14047:7;14056;14065;14085:15;14103:24;14115:11;14103:7;:11;;:24;;;;:::i;:::-;14085:42;;14138:12;14153:21;14162:11;14153:4;:8;;:21;;;;:::i;:::-;14138:36;;14185:13;14201:22;14211:11;14201:5;:9;;:22;;;;:::i;:::-;14185:38;;14234:23;14260:28;14282:5;14260:17;14272:4;14260:7;:11;;:17;;;;:::i;:::-;:21;;:28;;;;:::i;:::-;14234:54;;14307:7;14316:15;14333:4;14299:39;;;;;;;;;;13937:409;;;;;;;;:::o;7:99:1:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:307::-;355:1;365:113;379:6;376:1;373:13;365:113;;;464:1;459:3;455:11;449:18;445:1;440:3;436:11;429:39;401:2;398:1;394:10;389:15;;365:113;;;496:6;493:1;490:13;487:101;;;576:1;567:6;562:3;558:16;551:27;487:101;336:258;287:307;;;:::o;600:102::-;641:6;692:2;688:7;683:2;676:5;672:14;668:28;658:38;;600:102;;;:::o;708:364::-;796:3;824:39;857:5;824:39;:::i;:::-;879:71;943:6;938:3;879:71;:::i;:::-;872:78;;959:52;1004:6;999:3;992:4;985:5;981:16;959:52;:::i;:::-;1036:29;1058:6;1036:29;:::i;:::-;1031:3;1027:39;1020:46;;800:272;708:364;;;;:::o;1078:313::-;1191:4;1229:2;1218:9;1214:18;1206:26;;1278:9;1272:4;1268:20;1264:1;1253:9;1249:17;1242:47;1306:78;1379:4;1370:6;1306:78;:::i;:::-;1298:86;;1078:313;;;;:::o;1397:75::-;1430:6;1463:2;1457:9;1447:19;;1397:75;:::o;1478:117::-;1587:1;1584;1577:12;1601:117;1710:1;1707;1700:12;1724:126;1761:7;1801:42;1794:5;1790:54;1779:65;;1724:126;;;:::o;1856:96::-;1893:7;1922:24;1940:5;1922:24;:::i;:::-;1911:35;;1856:96;;;:::o;1958:122::-;2031:24;2049:5;2031:24;:::i;:::-;2024:5;2021:35;2011:63;;2070:1;2067;2060:12;2011:63;1958:122;:::o;2086:139::-;2132:5;2170:6;2157:20;2148:29;;2186:33;2213:5;2186:33;:::i;:::-;2086:139;;;;:::o;2231:77::-;2268:7;2297:5;2286:16;;2231:77;;;:::o;2314:122::-;2387:24;2405:5;2387:24;:::i;:::-;2380:5;2377:35;2367:63;;2426:1;2423;2416:12;2367:63;2314:122;:::o;2442:139::-;2488:5;2526:6;2513:20;2504:29;;2542:33;2569:5;2542:33;:::i;:::-;2442:139;;;;:::o;2587:474::-;2655:6;2663;2712:2;2700:9;2691:7;2687:23;2683:32;2680:119;;;2718:79;;:::i;:::-;2680:119;2838:1;2863:53;2908:7;2899:6;2888:9;2884:22;2863:53;:::i;:::-;2853:63;;2809:117;2965:2;2991:53;3036:7;3027:6;3016:9;3012:22;2991:53;:::i;:::-;2981:63;;2936:118;2587:474;;;;;:::o;3067:90::-;3101:7;3144:5;3137:13;3130:21;3119:32;;3067:90;;;:::o;3163:109::-;3244:21;3259:5;3244:21;:::i;:::-;3239:3;3232:34;3163:109;;:::o;3278:210::-;3365:4;3403:2;3392:9;3388:18;3380:26;;3416:65;3478:1;3467:9;3463:17;3454:6;3416:65;:::i;:::-;3278:210;;;;:::o;3494:118::-;3581:24;3599:5;3581:24;:::i;:::-;3576:3;3569:37;3494:118;;:::o;3618:222::-;3711:4;3749:2;3738:9;3734:18;3726:26;;3762:71;3830:1;3819:9;3815:17;3806:6;3762:71;:::i;:::-;3618:222;;;;:::o;3846:619::-;3923:6;3931;3939;3988:2;3976:9;3967:7;3963:23;3959:32;3956:119;;;3994:79;;:::i;:::-;3956:119;4114:1;4139:53;4184:7;4175:6;4164:9;4160:22;4139:53;:::i;:::-;4129:63;;4085:117;4241:2;4267:53;4312:7;4303:6;4292:9;4288:22;4267:53;:::i;:::-;4257:63;;4212:118;4369:2;4395:53;4440:7;4431:6;4420:9;4416:22;4395:53;:::i;:::-;4385:63;;4340:118;3846:619;;;;;:::o;4471:329::-;4530:6;4579:2;4567:9;4558:7;4554:23;4550:32;4547:119;;;4585:79;;:::i;:::-;4547:119;4705:1;4730:53;4775:7;4766:6;4755:9;4751:22;4730:53;:::i;:::-;4720:63;;4676:117;4471:329;;;;:::o;4806:86::-;4841:7;4881:4;4874:5;4870:16;4859:27;;4806:86;;;:::o;4898:112::-;4981:22;4997:5;4981:22;:::i;:::-;4976:3;4969:35;4898:112;;:::o;5016:214::-;5105:4;5143:2;5132:9;5128:18;5120:26;;5156:67;5220:1;5209:9;5205:17;5196:6;5156:67;:::i;:::-;5016:214;;;;:::o;5236:116::-;5306:21;5321:5;5306:21;:::i;:::-;5299:5;5296:32;5286:60;;5342:1;5339;5332:12;5286:60;5236:116;:::o;5358:133::-;5401:5;5439:6;5426:20;5417:29;;5455:30;5479:5;5455:30;:::i;:::-;5358:133;;;;:::o;5497:323::-;5553:6;5602:2;5590:9;5581:7;5577:23;5573:32;5570:119;;;5608:79;;:::i;:::-;5570:119;5728:1;5753:50;5795:7;5786:6;5775:9;5771:22;5753:50;:::i;:::-;5743:60;;5699:114;5497:323;;;;:::o;5826:468::-;5891:6;5899;5948:2;5936:9;5927:7;5923:23;5919:32;5916:119;;;5954:79;;:::i;:::-;5916:119;6074:1;6099:53;6144:7;6135:6;6124:9;6120:22;6099:53;:::i;:::-;6089:63;;6045:117;6201:2;6227:50;6269:7;6260:6;6249:9;6245:22;6227:50;:::i;:::-;6217:60;;6172:115;5826:468;;;;;:::o;6300:118::-;6387:24;6405:5;6387:24;:::i;:::-;6382:3;6375:37;6300:118;;:::o;6424:222::-;6517:4;6555:2;6544:9;6540:18;6532:26;;6568:71;6636:1;6625:9;6621:17;6612:6;6568:71;:::i;:::-;6424:222;;;;:::o;6652:117::-;6761:1;6758;6751:12;6775:180;6823:77;6820:1;6813:88;6920:4;6917:1;6910:15;6944:4;6941:1;6934:15;6961:281;7044:27;7066:4;7044:27;:::i;:::-;7036:6;7032:40;7174:6;7162:10;7159:22;7138:18;7126:10;7123:34;7120:62;7117:88;;;7185:18;;:::i;:::-;7117:88;7225:10;7221:2;7214:22;7004:238;6961:281;;:::o;7248:129::-;7282:6;7309:20;;:::i;:::-;7299:30;;7338:33;7366:4;7358:6;7338:33;:::i;:::-;7248:129;;;:::o;7383:311::-;7460:4;7550:18;7542:6;7539:30;7536:56;;;7572:18;;:::i;:::-;7536:56;7622:4;7614:6;7610:17;7602:25;;7682:4;7676;7672:15;7664:23;;7383:311;;;:::o;7700:117::-;7809:1;7806;7799:12;7840:710;7936:5;7961:81;7977:64;8034:6;7977:64;:::i;:::-;7961:81;:::i;:::-;7952:90;;8062:5;8091:6;8084:5;8077:21;8125:4;8118:5;8114:16;8107:23;;8178:4;8170:6;8166:17;8158:6;8154:30;8207:3;8199:6;8196:15;8193:122;;;8226:79;;:::i;:::-;8193:122;8341:6;8324:220;8358:6;8353:3;8350:15;8324:220;;;8433:3;8462:37;8495:3;8483:10;8462:37;:::i;:::-;8457:3;8450:50;8529:4;8524:3;8520:14;8513:21;;8400:144;8384:4;8379:3;8375:14;8368:21;;8324:220;;;8328:21;7942:608;;7840:710;;;;;:::o;8573:370::-;8644:5;8693:3;8686:4;8678:6;8674:17;8670:27;8660:122;;8701:79;;:::i;:::-;8660:122;8818:6;8805:20;8843:94;8933:3;8925:6;8918:4;8910:6;8906:17;8843:94;:::i;:::-;8834:103;;8650:293;8573:370;;;;:::o;8949:539::-;9033:6;9082:2;9070:9;9061:7;9057:23;9053:32;9050:119;;;9088:79;;:::i;:::-;9050:119;9236:1;9225:9;9221:17;9208:31;9266:18;9258:6;9255:30;9252:117;;;9288:79;;:::i;:::-;9252:117;9393:78;9463:7;9454:6;9443:9;9439:22;9393:78;:::i;:::-;9383:88;;9179:302;8949:539;;;;:::o;9494:474::-;9562:6;9570;9619:2;9607:9;9598:7;9594:23;9590:32;9587:119;;;9625:79;;:::i;:::-;9587:119;9745:1;9770:53;9815:7;9806:6;9795:9;9791:22;9770:53;:::i;:::-;9760:63;;9716:117;9872:2;9898:53;9943:7;9934:6;9923:9;9919:22;9898:53;:::i;:::-;9888:63;;9843:118;9494:474;;;;;:::o;9974:182::-;10114:34;10110:1;10102:6;10098:14;10091:58;9974:182;:::o;10162:366::-;10304:3;10325:67;10389:2;10384:3;10325:67;:::i;:::-;10318:74;;10401:93;10490:3;10401:93;:::i;:::-;10519:2;10514:3;10510:12;10503:19;;10162:366;;;:::o;10534:419::-;10700:4;10738:2;10727:9;10723:18;10715:26;;10787:9;10781:4;10777:20;10773:1;10762:9;10758:17;10751:47;10815:131;10941:4;10815:131;:::i;:::-;10807:139;;10534:419;;;:::o;10959:180::-;11007:77;11004:1;10997:88;11104:4;11101:1;11094:15;11128:4;11125:1;11118:15;11145:180;11193:77;11190:1;11183:88;11290:4;11287:1;11280:15;11314:4;11311:1;11304:15;11331:233;11370:3;11393:24;11411:5;11393:24;:::i;:::-;11384:33;;11439:66;11432:5;11429:77;11426:103;;;11509:18;;:::i;:::-;11426:103;11556:1;11549:5;11545:13;11538:20;;11331:233;;;:::o;11570:173::-;11710:25;11706:1;11698:6;11694:14;11687:49;11570:173;:::o;11749:366::-;11891:3;11912:67;11976:2;11971:3;11912:67;:::i;:::-;11905:74;;11988:93;12077:3;11988:93;:::i;:::-;12106:2;12101:3;12097:12;12090:19;;11749:366;;;:::o;12121:419::-;12287:4;12325:2;12314:9;12310:18;12302:26;;12374:9;12368:4;12364:20;12360:1;12349:9;12345:17;12338:47;12402:131;12528:4;12402:131;:::i;:::-;12394:139;;12121:419;;;:::o;12546:143::-;12603:5;12634:6;12628:13;12619:22;;12650:33;12677:5;12650:33;:::i;:::-;12546:143;;;;:::o;12695:351::-;12765:6;12814:2;12802:9;12793:7;12789:23;12785:32;12782:119;;;12820:79;;:::i;:::-;12782:119;12940:1;12965:64;13021:7;13012:6;13001:9;12997:22;12965:64;:::i;:::-;12955:74;;12911:128;12695:351;;;;:::o;13052:332::-;13173:4;13211:2;13200:9;13196:18;13188:26;;13224:71;13292:1;13281:9;13277:17;13268:6;13224:71;:::i;:::-;13305:72;13373:2;13362:9;13358:18;13349:6;13305:72;:::i;:::-;13052:332;;;;;:::o;13390:85::-;13435:7;13464:5;13453:16;;13390:85;;;:::o;13481:60::-;13509:3;13530:5;13523:12;;13481:60;;;:::o;13547:158::-;13605:9;13638:61;13656:42;13665:32;13691:5;13665:32;:::i;:::-;13656:42;:::i;:::-;13638:61;:::i;:::-;13625:74;;13547:158;;;:::o;13711:147::-;13806:45;13845:5;13806:45;:::i;:::-;13801:3;13794:58;13711:147;;:::o;13864:807::-;14113:4;14151:3;14140:9;14136:19;14128:27;;14165:71;14233:1;14222:9;14218:17;14209:6;14165:71;:::i;:::-;14246:72;14314:2;14303:9;14299:18;14290:6;14246:72;:::i;:::-;14328:80;14404:2;14393:9;14389:18;14380:6;14328:80;:::i;:::-;14418;14494:2;14483:9;14479:18;14470:6;14418:80;:::i;:::-;14508:73;14576:3;14565:9;14561:19;14552:6;14508:73;:::i;:::-;14591;14659:3;14648:9;14644:19;14635:6;14591:73;:::i;:::-;13864:807;;;;;;;;;:::o;14677:143::-;14734:5;14765:6;14759:13;14750:22;;14781:33;14808:5;14781:33;:::i;:::-;14677:143;;;;:::o;14826:663::-;14914:6;14922;14930;14979:2;14967:9;14958:7;14954:23;14950:32;14947:119;;;14985:79;;:::i;:::-;14947:119;15105:1;15130:64;15186:7;15177:6;15166:9;15162:22;15130:64;:::i;:::-;15120:74;;15076:128;15243:2;15269:64;15325:7;15316:6;15305:9;15301:22;15269:64;:::i;:::-;15259:74;;15214:129;15382:2;15408:64;15464:7;15455:6;15444:9;15440:22;15408:64;:::i;:::-;15398:74;;15353:129;14826:663;;;;;:::o;15495:332::-;15616:4;15654:2;15643:9;15639:18;15631:26;;15667:71;15735:1;15724:9;15720:17;15711:6;15667:71;:::i;:::-;15748:72;15816:2;15805:9;15801:18;15792:6;15748:72;:::i;:::-;15495:332;;;;;:::o;15833:137::-;15887:5;15918:6;15912:13;15903:22;;15934:30;15958:5;15934:30;:::i;:::-;15833:137;;;;:::o;15976:345::-;16043:6;16092:2;16080:9;16071:7;16067:23;16063:32;16060:119;;;16098:79;;:::i;:::-;16060:119;16218:1;16243:61;16296:7;16287:6;16276:9;16272:22;16243:61;:::i;:::-;16233:71;;16189:125;15976:345;;;;:::o;16327:223::-;16467:34;16463:1;16455:6;16451:14;16444:58;16536:6;16531:2;16523:6;16519:15;16512:31;16327:223;:::o;16556:366::-;16698:3;16719:67;16783:2;16778:3;16719:67;:::i;:::-;16712:74;;16795:93;16884:3;16795:93;:::i;:::-;16913:2;16908:3;16904:12;16897:19;;16556:366;;;:::o;16928:419::-;17094:4;17132:2;17121:9;17117:18;17109:26;;17181:9;17175:4;17171:20;17167:1;17156:9;17152:17;17145:47;17209:131;17335:4;17209:131;:::i;:::-;17201:139;;16928:419;;;:::o;17353:221::-;17493:34;17489:1;17481:6;17477:14;17470:58;17562:4;17557:2;17549:6;17545:15;17538:29;17353:221;:::o;17580:366::-;17722:3;17743:67;17807:2;17802:3;17743:67;:::i;:::-;17736:74;;17819:93;17908:3;17819:93;:::i;:::-;17937:2;17932:3;17928:12;17921:19;;17580:366;;;:::o;17952:419::-;18118:4;18156:2;18145:9;18141:18;18133:26;;18205:9;18199:4;18195:20;18191:1;18180:9;18176:17;18169:47;18233:131;18359:4;18233:131;:::i;:::-;18225:139;;17952:419;;;:::o;18377:224::-;18517:34;18513:1;18505:6;18501:14;18494:58;18586:7;18581:2;18573:6;18569:15;18562:32;18377:224;:::o;18607:366::-;18749:3;18770:67;18834:2;18829:3;18770:67;:::i;:::-;18763:74;;18846:93;18935:3;18846:93;:::i;:::-;18964:2;18959:3;18955:12;18948:19;;18607:366;;;:::o;18979:419::-;19145:4;19183:2;19172:9;19168:18;19160:26;;19232:9;19226:4;19222:20;19218:1;19207:9;19203:17;19196:47;19260:131;19386:4;19260:131;:::i;:::-;19252:139;;18979:419;;;:::o;19404:222::-;19544:34;19540:1;19532:6;19528:14;19521:58;19613:5;19608:2;19600:6;19596:15;19589:30;19404:222;:::o;19632:366::-;19774:3;19795:67;19859:2;19854:3;19795:67;:::i;:::-;19788:74;;19871:93;19960:3;19871:93;:::i;:::-;19989:2;19984:3;19980:12;19973:19;;19632:366;;;:::o;20004:419::-;20170:4;20208:2;20197:9;20193:18;20185:26;;20257:9;20251:4;20247:20;20243:1;20232:9;20228:17;20221:47;20285:131;20411:4;20285:131;:::i;:::-;20277:139;;20004:419;;;:::o;20429:228::-;20569:34;20565:1;20557:6;20553:14;20546:58;20638:11;20633:2;20625:6;20621:15;20614:36;20429:228;:::o;20663:366::-;20805:3;20826:67;20890:2;20885:3;20826:67;:::i;:::-;20819:74;;20902:93;20991:3;20902:93;:::i;:::-;21020:2;21015:3;21011:12;21004:19;;20663:366;;;:::o;21035:419::-;21201:4;21239:2;21228:9;21224:18;21216:26;;21288:9;21282:4;21278:20;21274:1;21263:9;21259:17;21252:47;21316:131;21442:4;21316:131;:::i;:::-;21308:139;;21035:419;;;:::o;21460:305::-;21500:3;21519:20;21537:1;21519:20;:::i;:::-;21514:25;;21553:20;21571:1;21553:20;:::i;:::-;21548:25;;21707:1;21639:66;21635:74;21632:1;21629:81;21626:107;;;21713:18;;:::i;:::-;21626:107;21757:1;21754;21750:9;21743:16;;21460:305;;;;:::o;21771:191::-;21811:4;21831:20;21849:1;21831:20;:::i;:::-;21826:25;;21865:20;21883:1;21865:20;:::i;:::-;21860:25;;21904:1;21901;21898:8;21895:34;;;21909:18;;:::i;:::-;21895:34;21954:1;21951;21947:9;21939:17;;21771:191;;;;:::o;21968:229::-;22108:34;22104:1;22096:6;22092:14;22085:58;22177:12;22172:2;22164:6;22160:15;22153:37;21968:229;:::o;22203:366::-;22345:3;22366:67;22430:2;22425:3;22366:67;:::i;:::-;22359:74;;22442:93;22531:3;22442:93;:::i;:::-;22560:2;22555:3;22551:12;22544:19;;22203:366;;;:::o;22575:419::-;22741:4;22779:2;22768:9;22764:18;22756:26;;22828:9;22822:4;22818:20;22814:1;22803:9;22799:17;22792:47;22856:131;22982:4;22856:131;:::i;:::-;22848:139;;22575:419;;;:::o;23000:114::-;23067:6;23101:5;23095:12;23085:22;;23000:114;;;:::o;23120:184::-;23219:11;23253:6;23248:3;23241:19;23293:4;23288:3;23284:14;23269:29;;23120:184;;;;:::o;23310:132::-;23377:4;23400:3;23392:11;;23430:4;23425:3;23421:14;23413:22;;23310:132;;;:::o;23448:108::-;23525:24;23543:5;23525:24;:::i;:::-;23520:3;23513:37;23448:108;;:::o;23562:179::-;23631:10;23652:46;23694:3;23686:6;23652:46;:::i;:::-;23730:4;23725:3;23721:14;23707:28;;23562:179;;;;:::o;23747:113::-;23817:4;23849;23844:3;23840:14;23832:22;;23747:113;;;:::o;23896:732::-;24015:3;24044:54;24092:5;24044:54;:::i;:::-;24114:86;24193:6;24188:3;24114:86;:::i;:::-;24107:93;;24224:56;24274:5;24224:56;:::i;:::-;24303:7;24334:1;24319:284;24344:6;24341:1;24338:13;24319:284;;;24420:6;24414:13;24447:63;24506:3;24491:13;24447:63;:::i;:::-;24440:70;;24533:60;24586:6;24533:60;:::i;:::-;24523:70;;24379:224;24366:1;24363;24359:9;24354:14;;24319:284;;;24323:14;24619:3;24612:10;;24020:608;;;23896:732;;;;:::o;24634:831::-;24897:4;24935:3;24924:9;24920:19;24912:27;;24949:71;25017:1;25006:9;25002:17;24993:6;24949:71;:::i;:::-;25030:80;25106:2;25095:9;25091:18;25082:6;25030:80;:::i;:::-;25157:9;25151:4;25147:20;25142:2;25131:9;25127:18;25120:48;25185:108;25288:4;25279:6;25185:108;:::i;:::-;25177:116;;25303:72;25371:2;25360:9;25356:18;25347:6;25303:72;:::i;:::-;25385:73;25453:3;25442:9;25438:19;25429:6;25385:73;:::i;:::-;24634:831;;;;;;;;:::o;25471:177::-;25611:29;25607:1;25599:6;25595:14;25588:53;25471:177;:::o;25654:366::-;25796:3;25817:67;25881:2;25876:3;25817:67;:::i;:::-;25810:74;;25893:93;25982:3;25893:93;:::i;:::-;26011:2;26006:3;26002:12;25995:19;;25654:366;;;:::o;26026:419::-;26192:4;26230:2;26219:9;26215:18;26207:26;;26279:9;26273:4;26269:20;26265:1;26254:9;26250:17;26243:47;26307:131;26433:4;26307:131;:::i;:::-;26299:139;;26026:419;;;:::o;26451:348::-;26491:7;26514:20;26532:1;26514:20;:::i;:::-;26509:25;;26548:20;26566:1;26548:20;:::i;:::-;26543:25;;26736:1;26668:66;26664:74;26661:1;26658:81;26653:1;26646:9;26639:17;26635:105;26632:131;;;26743:18;;:::i;:::-;26632:131;26791:1;26788;26784:9;26773:20;;26451:348;;;;:::o;26805:180::-;26853:77;26850:1;26843:88;26950:4;26947:1;26940:15;26974:4;26971:1;26964:15;26991:185;27031:1;27048:20;27066:1;27048:20;:::i;:::-;27043:25;;27082:20;27100:1;27082:20;:::i;:::-;27077:25;;27121:1;27111:35;;27126:18;;:::i;:::-;27111:35;27168:1;27165;27161:9;27156:14;;26991:185;;;;:::o;27182:220::-;27322:34;27318:1;27310:6;27306:14;27299:58;27391:3;27386:2;27378:6;27374:15;27367:28;27182:220;:::o;27408:366::-;27550:3;27571:67;27635:2;27630:3;27571:67;:::i;:::-;27564:74;;27647:93;27736:3;27647:93;:::i;:::-;27765:2;27760:3;27756:12;27749:19;;27408:366;;;:::o;27780:419::-;27946:4;27984:2;27973:9;27969:18;27961:26;;28033:9;28027:4;28023:20;28019:1;28008:9;28004:17;27997:47;28061:131;28187:4;28061:131;:::i;:::-;28053:139;;27780:419;;;:::o

Swarm Source

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