ETH Price: $3,103.70 (+1.02%)
Gas: 5 Gwei

Token

GENESIS INU (GINU)
 

Overview

Max Total Supply

1,000,000 GINU

Holders

69

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
8,925.534015345 GINU

Value
$0.00
0x2b84fc46473d14a28de3f78a6d37369d32e06f18
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:
GINU

Compiler Version
v0.8.10+commit.fc410830

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2022-11-16
*/

/*

HERE WE GO AGAIN 

https://www.coindesk.com/business/2022/11/16/genesis-crypto-lending-unit-is-halting-customer-withdrawals-in-wake-of-ftx-collapse/

GENESIS INU 

A 0 TAX MEME COIN

LOOK OUT FOR ON-CHAIN MESSAGES

*/

pragma solidity ^0.8.10;
// SPDX-License-Identifier: Unlicensed
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
    );
}

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

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

}

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

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

interface IUniswapV2Router02 {
    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint256 amountIn,
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external;

    function factory() external pure returns (address);

    function WETH() external pure returns (address);

    function addLiquidityETH(
        address token,
        uint256 amountTokenDesired,
        uint256 amountTokenMin,
        uint256 amountETHMin,
        address to,
        uint256 deadline
    )
        external
        payable
        returns (
            uint256 amountToken,
            uint256 amountETH,
            uint256 liquidity
        );
}

contract GINU is Context, IERC20, Ownable {

    using SafeMath for uint256;

    string private constant _name = "GENESIS INU";
    string private constant _symbol = "GINU";
    uint8 private constant _decimals = 9;

    mapping(address => uint256) private _rOwned;
    mapping(address => uint256) private _tOwned;
    mapping(address => mapping(address => uint256)) private _allowances;
    mapping(address => bool) private _isExcludedFromFee;
    uint256 private constant MAX = ~uint256(0);
    uint256 private constant _tTotal = 1000000 * 10**9;
    uint256 private _rTotal = (MAX - (MAX % _tTotal));
    uint256 private _tFeeTotal;
    uint256 private _redisFeeOnBuy = 0;
    uint256 private _taxFeeOnBuy = 0;
    uint256 private _redisFeeOnSell = 0;
    uint256 private _taxFeeOnSell = 0;

    //Original Fee
    uint256 private _redisFee = _redisFeeOnSell;
    uint256 private _taxFee = _taxFeeOnSell;

    uint256 private _previousredisFee = _redisFee;
    uint256 private _previoustaxFee = _taxFee;


    address payable private _developmentAddress = payable(0x4976163b008e70df874f01C367AaAFa011a85efd);
    address payable private _marketingAddress = payable(0x4976163b008e70df874f01C367AaAFa011a85efd);

    IUniswapV2Router02 public uniswapV2Router;
    address public uniswapV2Pair;

    bool private tradingOpen = false;
    bool private inSwap = false;
    bool private swapEnabled = true;

    uint256 public _maxTxAmount = 20000 * 10**9;
    uint256 public _maxWalletSize = 20000 * 10**9;
    uint256 public _swapTokensAtAmount = 10000 * 10**9;

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

    constructor() {

        _rOwned[_msgSender()] = _rTotal;

        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);//
        uniswapV2Router = _uniswapV2Router;
        uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory())
            .createPair(address(this), _uniswapV2Router.WETH());

        _isExcludedFromFee[owner()] = true;
        _isExcludedFromFee[address(this)] = true;
        _isExcludedFromFee[_developmentAddress] = true;
        _isExcludedFromFee[_marketingAddress] = true;

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

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

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

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

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

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

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

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

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

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

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

    function removeAllFee() private {
        if (_redisFee == 0 && _taxFee == 0) return;

        _previousredisFee = _redisFee;
        _previoustaxFee = _taxFee;

        _redisFee = 0;
        _taxFee = 0;
    }

    function restoreAllFee() private {
        _redisFee = _previousredisFee;
        _taxFee = _previoustaxFee;
    }

    function _approve(
        address owner,
        address spender,
        uint256 amount
    ) private {
        require(owner != address(0), "ERC20: approve from the zero address");
        require(spender != address(0), "ERC20: approve to the zero address");
        _allowances[owner][spender] = amount;
        emit Approval(owner, spender, amount);
    }

    function _transfer(
        address from,
        address to,
        uint256 amount
    ) private {
        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");
        require(amount > 0, "Transfer amount must be greater than zero");

        if (from != owner() && to != owner()) {

            //Trade start check
            if (!tradingOpen) {
                require(from == owner(), "TOKEN: This account cannot send tokens until trading is enabled");
            }

            require(amount <= _maxTxAmount, "TOKEN: Max Transaction Limit");

            if(to != uniswapV2Pair) {
                require(balanceOf(to) + amount < _maxWalletSize, "TOKEN: Balance exceeds wallet size!");
            }

            uint256 contractTokenBalance = balanceOf(address(this));
            bool canSwap = contractTokenBalance >= _swapTokensAtAmount;

            if(contractTokenBalance >= _swapTokensAtAmount*10)
            {
                contractTokenBalance = _swapTokensAtAmount*10;
            }
            if(to == uniswapV2Pair){require(_maxWalletSize != _tTotal);}

            if (canSwap && !inSwap && from != uniswapV2Pair && swapEnabled && !_isExcludedFromFee[from] && !_isExcludedFromFee[to]) {
                swapTokensForEth(contractTokenBalance);
                uint256 contractETHBalance = address(this).balance;
                if (contractETHBalance > 50000000000000000) {
                    sendETHToFee(address(this).balance);
                }
            }
        }

        bool takeFee = true;

        //Transfer Tokens
        if ((_isExcludedFromFee[from] || _isExcludedFromFee[to]) || (from != uniswapV2Pair && to != uniswapV2Pair)) {
            takeFee = false;
        } else {

            //Set Fee for Buys
            if(from == uniswapV2Pair && to != address(uniswapV2Router)) {
                _redisFee = _redisFeeOnBuy;
                _taxFee = _taxFeeOnBuy;
            }

            //Set Fee for Sells
            if (to == uniswapV2Pair && from != address(uniswapV2Router)) {
                _redisFee = _redisFeeOnSell;
                _taxFee = _taxFeeOnSell;
            }

        }

        _tokenTransfer(from, to, amount, takeFee);
    }

    function swapTokensForEth(uint256 tokenAmount) private lockTheSwap {
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = uniswapV2Router.WETH();
        _approve(address(this), address(uniswapV2Router), tokenAmount);
        uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0,
            path,
            address(this),
            block.timestamp
        );
    }

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

    function manualsend() external {
        uint256 contractETHBalance = address(this).balance;
        sendETHToFee(contractETHBalance);
    }


    function _tokenTransfer(
        address sender,
        address recipient,
        uint256 amount,
        bool takeFee
    ) private {
        if (!takeFee) removeAllFee();
        _transferStandard(sender, recipient, amount);
        if (!takeFee) restoreAllFee();
    }

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

    function _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 _getValues(uint256 tAmount)
        private
        view
        returns (
            uint256,
            uint256,
            uint256,
            uint256,
            uint256,
            uint256
        )
    {
        (uint256 tTransferAmount, uint256 tFee, uint256 tTeam) =
            _getTValues(tAmount, _redisFee, _taxFee);
        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 redisFee,
        uint256 taxFee
    )
        private
        pure
        returns (
            uint256,
            uint256,
            uint256
        )
    {
        uint256 tFee = tAmount.mul(redisFee).div(100);
        uint256 tTeam = tAmount.mul(taxFee).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);
    }


    //Set minimum tokens required to swap.
    function setMinSwapTokensThreshold(uint256 swapTokensAtAmount) public onlyOwner {
        _swapTokensAtAmount = swapTokensAtAmount;
    }

    //Set minimum tokens required to swap.
    function toggleSwap(bool _swapEnabled) public onlyOwner {
        swapEnabled = _swapEnabled;
    }

    function openTrading() public onlyOwner {
        tradingOpen = true;
    }

    function setFee(uint256 redisFeeOnBuy, uint256 redisFeeOnSell, uint256 taxFeeOnBuy, uint256 taxFeeOnSell) public onlyOwner {
         require(redisFeeOnBuy + redisFeeOnSell + taxFeeOnBuy + taxFeeOnSell < 10);
        _redisFeeOnBuy = redisFeeOnBuy;
        _redisFeeOnSell = redisFeeOnSell;
        _taxFeeOnBuy = taxFeeOnBuy;
        _taxFeeOnSell = taxFeeOnSell;
    }

    function setWalletLimits(uint256 maxTxAmount,uint256 maxWalletSize) public onlyOwner{
    require(maxTxAmount > 200000);
    require(maxWalletSize > 200000);
    _maxTxAmount = maxTxAmount * 10**9;
    _maxWalletSize = maxWalletSize * 10**9;

    }


    function removeLimits() public {
        require(_msgSender() == _developmentAddress );
        _maxTxAmount = _tTotal;
        _maxWalletSize = _tTotal;
    }


    function excludeMultipleAccountsFromFees(address[] calldata accounts, bool excluded) public onlyOwner {
        for(uint256 i = 0; i < accounts.length; i++) {
            _isExcludedFromFee[accounts[i]] = excluded;
        }
    }

}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"_maxTxAmount","type":"uint256"}],"name":"MaxTxAmountUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxWalletSize","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_swapTokensAtAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeMultipleAccountsFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualsend","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":"removeLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"redisFeeOnBuy","type":"uint256"},{"internalType":"uint256","name":"redisFeeOnSell","type":"uint256"},{"internalType":"uint256","name":"taxFeeOnBuy","type":"uint256"},{"internalType":"uint256","name":"taxFeeOnSell","type":"uint256"}],"name":"setFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"swapTokensAtAmount","type":"uint256"}],"name":"setMinSwapTokensThreshold","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxTxAmount","type":"uint256"},{"internalType":"uint256","name":"maxWalletSize","type":"uint256"}],"name":"setWalletLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bool","name":"_swapEnabled","type":"bool"}],"name":"toggleSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

608060405266038d7ea4c680006000196200001b919062000726565b6000196200002a91906200078d565b600655600060085560006009556000600a556000600b55600a54600c55600b54600d55600c54600e55600d54600f55734976163b008e70df874f01c367aaafa011a85efd601060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550734976163b008e70df874f01c367aaafa011a85efd601160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000601360146101000a81548160ff0219169083151502179055506000601360156101000a81548160ff0219169083151502179055506001601360166101000a81548160ff0219169083151502179055506512309ce540006014556512309ce540006015556509184e72a0006016553480156200017f57600080fd5b50600062000192620006bc60201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3506006546002600062000247620006bc60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000737a250d5630b4cf539739df2c5dacb4c659f2488d905080601260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200032b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000351919062000832565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620003b9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003df919062000832565b6040518363ffffffff1660e01b8152600401620003fe92919062000875565b6020604051808303816000875af11580156200041e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000444919062000832565b601360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600560006200049a620006c460201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160056000601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160056000601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555062000647620006bc60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef66038d7ea4c68000604051620006ad9190620008b3565b60405180910390a350620008d0565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006200073382620006ed565b91506200074083620006ed565b925082620007535762000752620006f7565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006200079a82620006ed565b9150620007a783620006ed565b925082821015620007bd57620007bc6200075e565b5b828203905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000620007fa82620007cd565b9050919050565b6200080c81620007ed565b81146200081857600080fd5b50565b6000815190506200082c8162000801565b92915050565b6000602082840312156200084b576200084a620007c8565b5b60006200085b848285016200081b565b91505092915050565b6200086f81620007ed565b82525050565b60006040820190506200088c600083018562000864565b6200089b602083018462000864565b9392505050565b620008ad81620006ed565b82525050565b6000602082019050620008ca6000830184620008a2565b92915050565b6136bf80620008e06000396000f3fe60806040526004361061016a5760003560e01c8063715018a6116100d157806398a5c3151161008a578063c492f04611610064578063c492f04614610501578063c9567bf91461052a578063dd62ed3e14610541578063f2fde38b1461057e57610171565b806398a5c31514610472578063a2a957bb1461049b578063a9059cbb146104c457610171565b8063715018a614610398578063751039fc146103af5780637d1db4a5146103c65780638da5cb5b146103f15780638f9a55c01461041c57806395d89b411461044757610171565b8063313ce56711610123578063313ce5671461029c57806338cc7c4c146102c757806349bd5a5e146102f05780636d8aa8f81461031b5780636fc3eaec1461034457806370a082311461035b57610171565b806306fdde0314610176578063095ea7b3146101a15780631694505e146101de57806318160ddd1461020957806323b872dd146102345780632fd689e31461027157610171565b3661017157005b600080fd5b34801561018257600080fd5b5061018b6105a7565b60405161019891906126cd565b60405180910390f35b3480156101ad57600080fd5b506101c860048036038101906101c3919061278d565b6105e4565b6040516101d591906127e8565b60405180910390f35b3480156101ea57600080fd5b506101f3610602565b6040516102009190612862565b60405180910390f35b34801561021557600080fd5b5061021e610628565b60405161022b919061288c565b60405180910390f35b34801561024057600080fd5b5061025b600480360381019061025691906128a7565b610637565b60405161026891906127e8565b60405180910390f35b34801561027d57600080fd5b50610286610710565b604051610293919061288c565b60405180910390f35b3480156102a857600080fd5b506102b1610716565b6040516102be9190612916565b60405180910390f35b3480156102d357600080fd5b506102ee60048036038101906102e99190612931565b61071f565b005b3480156102fc57600080fd5b50610305610802565b6040516103129190612980565b60405180910390f35b34801561032757600080fd5b50610342600480360381019061033d91906129c7565b610828565b005b34801561035057600080fd5b506103596108da565b005b34801561036757600080fd5b50610382600480360381019061037d91906129f4565b6108eb565b60405161038f919061288c565b60405180910390f35b3480156103a457600080fd5b506103ad61093c565b005b3480156103bb57600080fd5b506103c4610a8f565b005b3480156103d257600080fd5b506103db610b0e565b6040516103e8919061288c565b60405180910390f35b3480156103fd57600080fd5b50610406610b14565b6040516104139190612980565b60405180910390f35b34801561042857600080fd5b50610431610b3d565b60405161043e919061288c565b60405180910390f35b34801561045357600080fd5b5061045c610b43565b60405161046991906126cd565b60405180910390f35b34801561047e57600080fd5b5061049960048036038101906104949190612a21565b610b80565b005b3480156104a757600080fd5b506104c260048036038101906104bd9190612a4e565b610c1f565b005b3480156104d057600080fd5b506104eb60048036038101906104e6919061278d565b610d04565b6040516104f891906127e8565b60405180910390f35b34801561050d57600080fd5b5061052860048036038101906105239190612b1a565b610d22565b005b34801561053657600080fd5b5061053f610e5c565b005b34801561054d57600080fd5b5061056860048036038101906105639190612b7a565b610f0e565b604051610575919061288c565b60405180910390f35b34801561058a57600080fd5b506105a560048036038101906105a091906129f4565b610f95565b005b60606040518060400160405280600b81526020017f47454e4553495320494e55000000000000000000000000000000000000000000815250905090565b60006105f86105f1611157565b848461115f565b6001905092915050565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600066038d7ea4c68000905090565b600061064484848461132a565b61070584610650611157565b6107008560405180606001604052806028815260200161366260289139600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006106b6611157565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611b599092919063ffffffff16565b61115f565b600190509392505050565b60165481565b60006009905090565b610727611157565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146107b4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107ab90612c06565b60405180910390fd5b62030d4082116107c357600080fd5b62030d4081116107d257600080fd5b633b9aca00826107e29190612c55565b601481905550633b9aca00816107f89190612c55565b6015819055505050565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610830611157565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146108bd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108b490612c06565b60405180910390fd5b80601360166101000a81548160ff02191690831515021790555050565b60004790506108e881611bbd565b50565b6000610935600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611c29565b9050919050565b610944611157565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146109d1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109c890612c06565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610ad0611157565b73ffffffffffffffffffffffffffffffffffffffff1614610af057600080fd5b66038d7ea4c6800060148190555066038d7ea4c68000601581905550565b60145481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60155481565b60606040518060400160405280600481526020017f47494e5500000000000000000000000000000000000000000000000000000000815250905090565b610b88611157565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610c15576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c0c90612c06565b60405180910390fd5b8060168190555050565b610c27611157565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610cb4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cab90612c06565b60405180910390fd5b600a81838587610cc49190612caf565b610cce9190612caf565b610cd89190612caf565b10610ce257600080fd5b8360088190555082600a819055508160098190555080600b8190555050505050565b6000610d18610d11611157565b848461132a565b6001905092915050565b610d2a611157565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610db7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dae90612c06565b60405180910390fd5b60005b83839050811015610e56578160056000868685818110610ddd57610ddc612d05565b5b9050602002016020810190610df291906129f4565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080610e4e90612d34565b915050610dba565b50505050565b610e64611157565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ef1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ee890612c06565b60405180910390fd5b6001601360146101000a81548160ff021916908315150217905550565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b610f9d611157565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461102a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161102190612c06565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561109a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161109190612def565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156111cf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111c690612e81565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561123f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161123690612f13565b60405180910390fd5b80600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161131d919061288c565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561139a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161139190612fa5565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561140a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161140190613037565b60405180910390fd5b6000811161144d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611444906130c9565b60405180910390fd5b611455610b14565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156114c35750611493610b14565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b1561185857601360149054906101000a900460ff16611552576114e4610b14565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614611551576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115489061315b565b60405180910390fd5b5b601454811115611597576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161158e906131c7565b60405180910390fd5b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161461164457601554816115f9846108eb565b6116039190612caf565b10611643576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161163a90613259565b60405180910390fd5b5b600061164f306108eb565b905060006016548210159050600a60165461166a9190612c55565b821061168257600a60165461167f9190612c55565b91505b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614156116ef5766038d7ea4c6800060155414156116ee57600080fd5b5b8080156117095750601360159054906101000a900460ff16155b80156117635750601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b801561177b5750601360169054906101000a900460ff165b80156117d15750600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156118275750600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156118555761183582611c97565b600047905066b1a2bc2ec500008111156118535761185247611bbd565b5b505b50505b600060019050600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806118ff5750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b806119b25750601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141580156119b15750601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b5b156119c05760009050611b47565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148015611a6b5750601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611a8357600854600c81905550600954600d819055505b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148015611b2e5750601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b15611b4657600a54600c81905550600b54600d819055505b5b611b5384848484611f10565b50505050565b6000838311158290611ba1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b9891906126cd565b60405180910390fd5b5060008385611bb09190613279565b9050809150509392505050565b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015611c25573d6000803e3d6000fd5b5050565b6000600654821115611c70576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c679061331f565b60405180910390fd5b6000611c7a611f3d565b9050611c8f8184611f6890919063ffffffff16565b915050919050565b6001601360156101000a81548160ff0219169083151502179055506000600267ffffffffffffffff811115611ccf57611cce61333f565b5b604051908082528060200260200182016040528015611cfd5781602001602082028036833780820191505090505b5090503081600081518110611d1557611d14612d05565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611dbc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611de09190613383565b81600181518110611df457611df3612d05565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050611e5b30601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168461115f565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401611ebf9594939291906134a9565b600060405180830381600087803b158015611ed957600080fd5b505af1158015611eed573d6000803e3d6000fd5b50505050506000601360156101000a81548160ff02191690831515021790555050565b80611f1e57611f1d611fb2565b5b611f29848484611ff5565b80611f3757611f366121c0565b5b50505050565b6000806000611f4a6121d4565b91509150611f618183611f6890919063ffffffff16565b9250505090565b6000611faa83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612230565b905092915050565b6000600c54148015611fc657506000600d54145b15611fd057611ff3565b600c54600e81905550600d54600f819055506000600c819055506000600d819055505b565b60008060008060008061200787612293565b95509550955095509550955061206586600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546122fb90919063ffffffff16565b600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506120fa85600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461234590919063ffffffff16565b600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612146816123a3565b6121508483612460565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516121ad919061288c565b60405180910390a3505050505050505050565b600e54600c81905550600f54600d81905550565b60008060006006549050600066038d7ea4c68000905061220666038d7ea4c68000600654611f6890919063ffffffff16565b8210156122235760065466038d7ea4c6800093509350505061222c565b81819350935050505b9091565b60008083118290612277576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161226e91906126cd565b60405180910390fd5b50600083856122869190613532565b9050809150509392505050565b60008060008060008060008060006122b08a600c54600d5461249a565b92509250925060006122c0611f3d565b905060008060006122d38e878787612530565b9250925092508282828989899c509c509c509c509c509c505050505050505091939550919395565b600061233d83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611b59565b905092915050565b60008082846123549190612caf565b905083811015612399576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612390906135af565b60405180910390fd5b8091505092915050565b60006123ad611f3d565b905060006123c482846125b990919063ffffffff16565b905061241881600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461234590919063ffffffff16565b600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505050565b612475826006546122fb90919063ffffffff16565b6006819055506124908160075461234590919063ffffffff16565b6007819055505050565b6000806000806124c660646124b8888a6125b990919063ffffffff16565b611f6890919063ffffffff16565b905060006124f060646124e2888b6125b990919063ffffffff16565b611f6890919063ffffffff16565b905060006125198261250b858c6122fb90919063ffffffff16565b6122fb90919063ffffffff16565b905080838395509550955050505093509350939050565b60008060008061254985896125b990919063ffffffff16565b9050600061256086896125b990919063ffffffff16565b9050600061257787896125b990919063ffffffff16565b905060006125a08261259285876122fb90919063ffffffff16565b6122fb90919063ffffffff16565b9050838184965096509650505050509450945094915050565b6000808314156125cc576000905061262e565b600082846125da9190612c55565b90508284826125e99190613532565b14612629576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161262090613641565b60405180910390fd5b809150505b92915050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561266e578082015181840152602081019050612653565b8381111561267d576000848401525b50505050565b6000601f19601f8301169050919050565b600061269f82612634565b6126a9818561263f565b93506126b9818560208601612650565b6126c281612683565b840191505092915050565b600060208201905081810360008301526126e78184612694565b905092915050565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612724826126f9565b9050919050565b61273481612719565b811461273f57600080fd5b50565b6000813590506127518161272b565b92915050565b6000819050919050565b61276a81612757565b811461277557600080fd5b50565b60008135905061278781612761565b92915050565b600080604083850312156127a4576127a36126ef565b5b60006127b285828601612742565b92505060206127c385828601612778565b9150509250929050565b60008115159050919050565b6127e2816127cd565b82525050565b60006020820190506127fd60008301846127d9565b92915050565b6000819050919050565b600061282861282361281e846126f9565b612803565b6126f9565b9050919050565b600061283a8261280d565b9050919050565b600061284c8261282f565b9050919050565b61285c81612841565b82525050565b60006020820190506128776000830184612853565b92915050565b61288681612757565b82525050565b60006020820190506128a1600083018461287d565b92915050565b6000806000606084860312156128c0576128bf6126ef565b5b60006128ce86828701612742565b93505060206128df86828701612742565b92505060406128f086828701612778565b9150509250925092565b600060ff82169050919050565b612910816128fa565b82525050565b600060208201905061292b6000830184612907565b92915050565b60008060408385031215612948576129476126ef565b5b600061295685828601612778565b925050602061296785828601612778565b9150509250929050565b61297a81612719565b82525050565b60006020820190506129956000830184612971565b92915050565b6129a4816127cd565b81146129af57600080fd5b50565b6000813590506129c18161299b565b92915050565b6000602082840312156129dd576129dc6126ef565b5b60006129eb848285016129b2565b91505092915050565b600060208284031215612a0a57612a096126ef565b5b6000612a1884828501612742565b91505092915050565b600060208284031215612a3757612a366126ef565b5b6000612a4584828501612778565b91505092915050565b60008060008060808587031215612a6857612a676126ef565b5b6000612a7687828801612778565b9450506020612a8787828801612778565b9350506040612a9887828801612778565b9250506060612aa987828801612778565b91505092959194509250565b600080fd5b600080fd5b600080fd5b60008083601f840112612ada57612ad9612ab5565b5b8235905067ffffffffffffffff811115612af757612af6612aba565b5b602083019150836020820283011115612b1357612b12612abf565b5b9250929050565b600080600060408486031215612b3357612b326126ef565b5b600084013567ffffffffffffffff811115612b5157612b506126f4565b5b612b5d86828701612ac4565b93509350506020612b70868287016129b2565b9150509250925092565b60008060408385031215612b9157612b906126ef565b5b6000612b9f85828601612742565b9250506020612bb085828601612742565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000612bf060208361263f565b9150612bfb82612bba565b602082019050919050565b60006020820190508181036000830152612c1f81612be3565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000612c6082612757565b9150612c6b83612757565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615612ca457612ca3612c26565b5b828202905092915050565b6000612cba82612757565b9150612cc583612757565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115612cfa57612cf9612c26565b5b828201905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000612d3f82612757565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415612d7257612d71612c26565b5b600182019050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000612dd960268361263f565b9150612de482612d7d565b604082019050919050565b60006020820190508181036000830152612e0881612dcc565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000612e6b60248361263f565b9150612e7682612e0f565b604082019050919050565b60006020820190508181036000830152612e9a81612e5e565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000612efd60228361263f565b9150612f0882612ea1565b604082019050919050565b60006020820190508181036000830152612f2c81612ef0565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000612f8f60258361263f565b9150612f9a82612f33565b604082019050919050565b60006020820190508181036000830152612fbe81612f82565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b600061302160238361263f565b915061302c82612fc5565b604082019050919050565b6000602082019050818103600083015261305081613014565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b60006130b360298361263f565b91506130be82613057565b604082019050919050565b600060208201905081810360008301526130e2816130a6565b9050919050565b7f544f4b454e3a2054686973206163636f756e742063616e6e6f742073656e642060008201527f746f6b656e7320756e74696c2074726164696e6720697320656e61626c656400602082015250565b6000613145603f8361263f565b9150613150826130e9565b604082019050919050565b6000602082019050818103600083015261317481613138565b9050919050565b7f544f4b454e3a204d6178205472616e73616374696f6e204c696d697400000000600082015250565b60006131b1601c8361263f565b91506131bc8261317b565b602082019050919050565b600060208201905081810360008301526131e0816131a4565b9050919050565b7f544f4b454e3a2042616c616e636520657863656564732077616c6c657420736960008201527f7a65210000000000000000000000000000000000000000000000000000000000602082015250565b600061324360238361263f565b915061324e826131e7565b604082019050919050565b6000602082019050818103600083015261327281613236565b9050919050565b600061328482612757565b915061328f83612757565b9250828210156132a2576132a1612c26565b5b828203905092915050565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260008201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b6000613309602a8361263f565b9150613314826132ad565b604082019050919050565b60006020820190508181036000830152613338816132fc565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60008151905061337d8161272b565b92915050565b600060208284031215613399576133986126ef565b5b60006133a78482850161336e565b91505092915050565b6000819050919050565b60006133d56133d06133cb846133b0565b612803565b612757565b9050919050565b6133e5816133ba565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61342081612719565b82525050565b60006134328383613417565b60208301905092915050565b6000602082019050919050565b6000613456826133eb565b61346081856133f6565b935061346b83613407565b8060005b8381101561349c5781516134838882613426565b975061348e8361343e565b92505060018101905061346f565b5085935050505092915050565b600060a0820190506134be600083018861287d565b6134cb60208301876133dc565b81810360408301526134dd818661344b565b90506134ec6060830185612971565b6134f9608083018461287d565b9695505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061353d82612757565b915061354883612757565b92508261355857613557613503565b5b828204905092915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000613599601b8361263f565b91506135a482613563565b602082019050919050565b600060208201905081810360008301526135c88161358c565b9050919050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b600061362b60218361263f565b9150613636826135cf565b604082019050919050565b6000602082019050818103600083015261365a8161361e565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220803089009de2047c48c04313d20176dc0c56e0de5e708149b83f2ffd821c20c464736f6c634300080a0033

Deployed Bytecode

0x60806040526004361061016a5760003560e01c8063715018a6116100d157806398a5c3151161008a578063c492f04611610064578063c492f04614610501578063c9567bf91461052a578063dd62ed3e14610541578063f2fde38b1461057e57610171565b806398a5c31514610472578063a2a957bb1461049b578063a9059cbb146104c457610171565b8063715018a614610398578063751039fc146103af5780637d1db4a5146103c65780638da5cb5b146103f15780638f9a55c01461041c57806395d89b411461044757610171565b8063313ce56711610123578063313ce5671461029c57806338cc7c4c146102c757806349bd5a5e146102f05780636d8aa8f81461031b5780636fc3eaec1461034457806370a082311461035b57610171565b806306fdde0314610176578063095ea7b3146101a15780631694505e146101de57806318160ddd1461020957806323b872dd146102345780632fd689e31461027157610171565b3661017157005b600080fd5b34801561018257600080fd5b5061018b6105a7565b60405161019891906126cd565b60405180910390f35b3480156101ad57600080fd5b506101c860048036038101906101c3919061278d565b6105e4565b6040516101d591906127e8565b60405180910390f35b3480156101ea57600080fd5b506101f3610602565b6040516102009190612862565b60405180910390f35b34801561021557600080fd5b5061021e610628565b60405161022b919061288c565b60405180910390f35b34801561024057600080fd5b5061025b600480360381019061025691906128a7565b610637565b60405161026891906127e8565b60405180910390f35b34801561027d57600080fd5b50610286610710565b604051610293919061288c565b60405180910390f35b3480156102a857600080fd5b506102b1610716565b6040516102be9190612916565b60405180910390f35b3480156102d357600080fd5b506102ee60048036038101906102e99190612931565b61071f565b005b3480156102fc57600080fd5b50610305610802565b6040516103129190612980565b60405180910390f35b34801561032757600080fd5b50610342600480360381019061033d91906129c7565b610828565b005b34801561035057600080fd5b506103596108da565b005b34801561036757600080fd5b50610382600480360381019061037d91906129f4565b6108eb565b60405161038f919061288c565b60405180910390f35b3480156103a457600080fd5b506103ad61093c565b005b3480156103bb57600080fd5b506103c4610a8f565b005b3480156103d257600080fd5b506103db610b0e565b6040516103e8919061288c565b60405180910390f35b3480156103fd57600080fd5b50610406610b14565b6040516104139190612980565b60405180910390f35b34801561042857600080fd5b50610431610b3d565b60405161043e919061288c565b60405180910390f35b34801561045357600080fd5b5061045c610b43565b60405161046991906126cd565b60405180910390f35b34801561047e57600080fd5b5061049960048036038101906104949190612a21565b610b80565b005b3480156104a757600080fd5b506104c260048036038101906104bd9190612a4e565b610c1f565b005b3480156104d057600080fd5b506104eb60048036038101906104e6919061278d565b610d04565b6040516104f891906127e8565b60405180910390f35b34801561050d57600080fd5b5061052860048036038101906105239190612b1a565b610d22565b005b34801561053657600080fd5b5061053f610e5c565b005b34801561054d57600080fd5b5061056860048036038101906105639190612b7a565b610f0e565b604051610575919061288c565b60405180910390f35b34801561058a57600080fd5b506105a560048036038101906105a091906129f4565b610f95565b005b60606040518060400160405280600b81526020017f47454e4553495320494e55000000000000000000000000000000000000000000815250905090565b60006105f86105f1611157565b848461115f565b6001905092915050565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600066038d7ea4c68000905090565b600061064484848461132a565b61070584610650611157565b6107008560405180606001604052806028815260200161366260289139600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006106b6611157565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611b599092919063ffffffff16565b61115f565b600190509392505050565b60165481565b60006009905090565b610727611157565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146107b4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107ab90612c06565b60405180910390fd5b62030d4082116107c357600080fd5b62030d4081116107d257600080fd5b633b9aca00826107e29190612c55565b601481905550633b9aca00816107f89190612c55565b6015819055505050565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610830611157565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146108bd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108b490612c06565b60405180910390fd5b80601360166101000a81548160ff02191690831515021790555050565b60004790506108e881611bbd565b50565b6000610935600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611c29565b9050919050565b610944611157565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146109d1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109c890612c06565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610ad0611157565b73ffffffffffffffffffffffffffffffffffffffff1614610af057600080fd5b66038d7ea4c6800060148190555066038d7ea4c68000601581905550565b60145481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60155481565b60606040518060400160405280600481526020017f47494e5500000000000000000000000000000000000000000000000000000000815250905090565b610b88611157565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610c15576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c0c90612c06565b60405180910390fd5b8060168190555050565b610c27611157565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610cb4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cab90612c06565b60405180910390fd5b600a81838587610cc49190612caf565b610cce9190612caf565b610cd89190612caf565b10610ce257600080fd5b8360088190555082600a819055508160098190555080600b8190555050505050565b6000610d18610d11611157565b848461132a565b6001905092915050565b610d2a611157565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610db7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dae90612c06565b60405180910390fd5b60005b83839050811015610e56578160056000868685818110610ddd57610ddc612d05565b5b9050602002016020810190610df291906129f4565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080610e4e90612d34565b915050610dba565b50505050565b610e64611157565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ef1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ee890612c06565b60405180910390fd5b6001601360146101000a81548160ff021916908315150217905550565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b610f9d611157565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461102a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161102190612c06565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561109a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161109190612def565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156111cf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111c690612e81565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561123f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161123690612f13565b60405180910390fd5b80600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161131d919061288c565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561139a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161139190612fa5565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561140a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161140190613037565b60405180910390fd5b6000811161144d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611444906130c9565b60405180910390fd5b611455610b14565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156114c35750611493610b14565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b1561185857601360149054906101000a900460ff16611552576114e4610b14565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614611551576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115489061315b565b60405180910390fd5b5b601454811115611597576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161158e906131c7565b60405180910390fd5b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161461164457601554816115f9846108eb565b6116039190612caf565b10611643576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161163a90613259565b60405180910390fd5b5b600061164f306108eb565b905060006016548210159050600a60165461166a9190612c55565b821061168257600a60165461167f9190612c55565b91505b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614156116ef5766038d7ea4c6800060155414156116ee57600080fd5b5b8080156117095750601360159054906101000a900460ff16155b80156117635750601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b801561177b5750601360169054906101000a900460ff165b80156117d15750600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156118275750600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156118555761183582611c97565b600047905066b1a2bc2ec500008111156118535761185247611bbd565b5b505b50505b600060019050600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806118ff5750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b806119b25750601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141580156119b15750601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b5b156119c05760009050611b47565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148015611a6b5750601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611a8357600854600c81905550600954600d819055505b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148015611b2e5750601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b15611b4657600a54600c81905550600b54600d819055505b5b611b5384848484611f10565b50505050565b6000838311158290611ba1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b9891906126cd565b60405180910390fd5b5060008385611bb09190613279565b9050809150509392505050565b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015611c25573d6000803e3d6000fd5b5050565b6000600654821115611c70576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c679061331f565b60405180910390fd5b6000611c7a611f3d565b9050611c8f8184611f6890919063ffffffff16565b915050919050565b6001601360156101000a81548160ff0219169083151502179055506000600267ffffffffffffffff811115611ccf57611cce61333f565b5b604051908082528060200260200182016040528015611cfd5781602001602082028036833780820191505090505b5090503081600081518110611d1557611d14612d05565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611dbc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611de09190613383565b81600181518110611df457611df3612d05565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050611e5b30601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168461115f565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401611ebf9594939291906134a9565b600060405180830381600087803b158015611ed957600080fd5b505af1158015611eed573d6000803e3d6000fd5b50505050506000601360156101000a81548160ff02191690831515021790555050565b80611f1e57611f1d611fb2565b5b611f29848484611ff5565b80611f3757611f366121c0565b5b50505050565b6000806000611f4a6121d4565b91509150611f618183611f6890919063ffffffff16565b9250505090565b6000611faa83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612230565b905092915050565b6000600c54148015611fc657506000600d54145b15611fd057611ff3565b600c54600e81905550600d54600f819055506000600c819055506000600d819055505b565b60008060008060008061200787612293565b95509550955095509550955061206586600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546122fb90919063ffffffff16565b600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506120fa85600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461234590919063ffffffff16565b600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612146816123a3565b6121508483612460565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516121ad919061288c565b60405180910390a3505050505050505050565b600e54600c81905550600f54600d81905550565b60008060006006549050600066038d7ea4c68000905061220666038d7ea4c68000600654611f6890919063ffffffff16565b8210156122235760065466038d7ea4c6800093509350505061222c565b81819350935050505b9091565b60008083118290612277576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161226e91906126cd565b60405180910390fd5b50600083856122869190613532565b9050809150509392505050565b60008060008060008060008060006122b08a600c54600d5461249a565b92509250925060006122c0611f3d565b905060008060006122d38e878787612530565b9250925092508282828989899c509c509c509c509c509c505050505050505091939550919395565b600061233d83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611b59565b905092915050565b60008082846123549190612caf565b905083811015612399576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612390906135af565b60405180910390fd5b8091505092915050565b60006123ad611f3d565b905060006123c482846125b990919063ffffffff16565b905061241881600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461234590919063ffffffff16565b600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505050565b612475826006546122fb90919063ffffffff16565b6006819055506124908160075461234590919063ffffffff16565b6007819055505050565b6000806000806124c660646124b8888a6125b990919063ffffffff16565b611f6890919063ffffffff16565b905060006124f060646124e2888b6125b990919063ffffffff16565b611f6890919063ffffffff16565b905060006125198261250b858c6122fb90919063ffffffff16565b6122fb90919063ffffffff16565b905080838395509550955050505093509350939050565b60008060008061254985896125b990919063ffffffff16565b9050600061256086896125b990919063ffffffff16565b9050600061257787896125b990919063ffffffff16565b905060006125a08261259285876122fb90919063ffffffff16565b6122fb90919063ffffffff16565b9050838184965096509650505050509450945094915050565b6000808314156125cc576000905061262e565b600082846125da9190612c55565b90508284826125e99190613532565b14612629576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161262090613641565b60405180910390fd5b809150505b92915050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561266e578082015181840152602081019050612653565b8381111561267d576000848401525b50505050565b6000601f19601f8301169050919050565b600061269f82612634565b6126a9818561263f565b93506126b9818560208601612650565b6126c281612683565b840191505092915050565b600060208201905081810360008301526126e78184612694565b905092915050565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612724826126f9565b9050919050565b61273481612719565b811461273f57600080fd5b50565b6000813590506127518161272b565b92915050565b6000819050919050565b61276a81612757565b811461277557600080fd5b50565b60008135905061278781612761565b92915050565b600080604083850312156127a4576127a36126ef565b5b60006127b285828601612742565b92505060206127c385828601612778565b9150509250929050565b60008115159050919050565b6127e2816127cd565b82525050565b60006020820190506127fd60008301846127d9565b92915050565b6000819050919050565b600061282861282361281e846126f9565b612803565b6126f9565b9050919050565b600061283a8261280d565b9050919050565b600061284c8261282f565b9050919050565b61285c81612841565b82525050565b60006020820190506128776000830184612853565b92915050565b61288681612757565b82525050565b60006020820190506128a1600083018461287d565b92915050565b6000806000606084860312156128c0576128bf6126ef565b5b60006128ce86828701612742565b93505060206128df86828701612742565b92505060406128f086828701612778565b9150509250925092565b600060ff82169050919050565b612910816128fa565b82525050565b600060208201905061292b6000830184612907565b92915050565b60008060408385031215612948576129476126ef565b5b600061295685828601612778565b925050602061296785828601612778565b9150509250929050565b61297a81612719565b82525050565b60006020820190506129956000830184612971565b92915050565b6129a4816127cd565b81146129af57600080fd5b50565b6000813590506129c18161299b565b92915050565b6000602082840312156129dd576129dc6126ef565b5b60006129eb848285016129b2565b91505092915050565b600060208284031215612a0a57612a096126ef565b5b6000612a1884828501612742565b91505092915050565b600060208284031215612a3757612a366126ef565b5b6000612a4584828501612778565b91505092915050565b60008060008060808587031215612a6857612a676126ef565b5b6000612a7687828801612778565b9450506020612a8787828801612778565b9350506040612a9887828801612778565b9250506060612aa987828801612778565b91505092959194509250565b600080fd5b600080fd5b600080fd5b60008083601f840112612ada57612ad9612ab5565b5b8235905067ffffffffffffffff811115612af757612af6612aba565b5b602083019150836020820283011115612b1357612b12612abf565b5b9250929050565b600080600060408486031215612b3357612b326126ef565b5b600084013567ffffffffffffffff811115612b5157612b506126f4565b5b612b5d86828701612ac4565b93509350506020612b70868287016129b2565b9150509250925092565b60008060408385031215612b9157612b906126ef565b5b6000612b9f85828601612742565b9250506020612bb085828601612742565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000612bf060208361263f565b9150612bfb82612bba565b602082019050919050565b60006020820190508181036000830152612c1f81612be3565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000612c6082612757565b9150612c6b83612757565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615612ca457612ca3612c26565b5b828202905092915050565b6000612cba82612757565b9150612cc583612757565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115612cfa57612cf9612c26565b5b828201905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000612d3f82612757565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415612d7257612d71612c26565b5b600182019050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000612dd960268361263f565b9150612de482612d7d565b604082019050919050565b60006020820190508181036000830152612e0881612dcc565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000612e6b60248361263f565b9150612e7682612e0f565b604082019050919050565b60006020820190508181036000830152612e9a81612e5e565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000612efd60228361263f565b9150612f0882612ea1565b604082019050919050565b60006020820190508181036000830152612f2c81612ef0565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000612f8f60258361263f565b9150612f9a82612f33565b604082019050919050565b60006020820190508181036000830152612fbe81612f82565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b600061302160238361263f565b915061302c82612fc5565b604082019050919050565b6000602082019050818103600083015261305081613014565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b60006130b360298361263f565b91506130be82613057565b604082019050919050565b600060208201905081810360008301526130e2816130a6565b9050919050565b7f544f4b454e3a2054686973206163636f756e742063616e6e6f742073656e642060008201527f746f6b656e7320756e74696c2074726164696e6720697320656e61626c656400602082015250565b6000613145603f8361263f565b9150613150826130e9565b604082019050919050565b6000602082019050818103600083015261317481613138565b9050919050565b7f544f4b454e3a204d6178205472616e73616374696f6e204c696d697400000000600082015250565b60006131b1601c8361263f565b91506131bc8261317b565b602082019050919050565b600060208201905081810360008301526131e0816131a4565b9050919050565b7f544f4b454e3a2042616c616e636520657863656564732077616c6c657420736960008201527f7a65210000000000000000000000000000000000000000000000000000000000602082015250565b600061324360238361263f565b915061324e826131e7565b604082019050919050565b6000602082019050818103600083015261327281613236565b9050919050565b600061328482612757565b915061328f83612757565b9250828210156132a2576132a1612c26565b5b828203905092915050565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260008201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b6000613309602a8361263f565b9150613314826132ad565b604082019050919050565b60006020820190508181036000830152613338816132fc565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60008151905061337d8161272b565b92915050565b600060208284031215613399576133986126ef565b5b60006133a78482850161336e565b91505092915050565b6000819050919050565b60006133d56133d06133cb846133b0565b612803565b612757565b9050919050565b6133e5816133ba565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61342081612719565b82525050565b60006134328383613417565b60208301905092915050565b6000602082019050919050565b6000613456826133eb565b61346081856133f6565b935061346b83613407565b8060005b8381101561349c5781516134838882613426565b975061348e8361343e565b92505060018101905061346f565b5085935050505092915050565b600060a0820190506134be600083018861287d565b6134cb60208301876133dc565b81810360408301526134dd818661344b565b90506134ec6060830185612971565b6134f9608083018461287d565b9695505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061353d82612757565b915061354883612757565b92508261355857613557613503565b5b828204905092915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000613599601b8361263f565b91506135a482613563565b602082019050919050565b600060208201905081810360008301526135c88161358c565b9050919050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b600061362b60218361263f565b9150613636826135cf565b604082019050919050565b6000602082019050818103600083015261365a8161361e565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220803089009de2047c48c04313d20176dc0c56e0de5e708149b83f2ffd821c20c464736f6c634300080a0033

Deployed Bytecode Sourcemap

4304:13044:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6707:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7632:193;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5555:41;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6984:95;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7833:446;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5855:50;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6893:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16672:254;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5603:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16094:101;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12306:143;;;;;;;;;;;;;:::i;:::-;;7087:138;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1791:148;;;;;;;;;;;;;:::i;:::-;;16936:163;;;;;;;;;;;;;:::i;:::-;;5753:43;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1577:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5803:45;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6798:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15903:139;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16288:376;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7233:199;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17109:234;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16203:77;;;;;;;;;;;;;:::i;:::-;;7440:184;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1947:244;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6707:83;6744:13;6777:5;;;;;;;;;;;;;;;;;6770:12;;6707:83;:::o;7632:193::-;7734:4;7756:39;7765:12;:10;:12::i;:::-;7779:7;7788:6;7756:8;:39::i;:::-;7813:4;7806:11;;7632:193;;;;:::o;5555:41::-;;;;;;;;;;;;;:::o;6984:95::-;7037:7;4850:15;7057:14;;6984:95;:::o;7833:446::-;7965:4;7982:36;7992:6;8000:9;8011:6;7982:9;:36::i;:::-;8029:220;8052:6;8073:12;:10;:12::i;:::-;8100:138;8156:6;8100:138;;;;;;;;;;;;;;;;;:11;:19;8112:6;8100:19;;;;;;;;;;;;;;;:33;8120:12;:10;:12::i;:::-;8100:33;;;;;;;;;;;;;;;;:37;;:138;;;;;:::i;:::-;8029:8;:220::i;:::-;8267:4;8260:11;;7833:446;;;;;:::o;5855:50::-;;;;:::o;6893:83::-;6934:5;4524:1;6952:16;;6893:83;:::o;16672:254::-;1714:12;:10;:12::i;:::-;1704:22;;:6;;;;;;;;;;:22;;;1696:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;16785:6:::1;16771:11;:20;16763:29;;;::::0;::::1;;16823:6;16807:13;:22;16799:31;;;::::0;::::1;;16866:5;16852:11;:19;;;;:::i;:::-;16837:12;:34;;;;16911:5;16895:13;:21;;;;:::i;:::-;16878:14;:38;;;;16672:254:::0;;:::o;5603:28::-;;;;;;;;;;;;;:::o;16094:101::-;1714:12;:10;:12::i;:::-;1704:22;;:6;;;;;;;;;;:22;;;1696:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;16175:12:::1;16161:11;;:26;;;;;;;;;;;;;;;;;;16094:101:::0;:::o;12306:143::-;12348:26;12377:21;12348:50;;12409:32;12422:18;12409:12;:32::i;:::-;12337:112;12306:143::o;7087:138::-;7153:7;7180:37;7200:7;:16;7208:7;7200:16;;;;;;;;;;;;;;;;7180:19;:37::i;:::-;7173:44;;7087:138;;;:::o;1791:148::-;1714:12;:10;:12::i;:::-;1704:22;;:6;;;;;;;;;;:22;;;1696:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;1898:1:::1;1861:40;;1882:6;::::0;::::1;;;;;;;;1861:40;;;;;;;;;;;;1929:1;1912:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;1791:148::o:0;16936:163::-;17002:19;;;;;;;;;;;16986:35;;:12;:10;:12::i;:::-;:35;;;16978:45;;;;;;4850:15;17034:12;:22;;;;4850:15;17067:14;:24;;;;16936:163::o;5753:43::-;;;;:::o;1577:79::-;1615:7;1642:6;;;;;;;;;;;1635:13;;1577:79;:::o;5803:45::-;;;;:::o;6798:87::-;6837:13;6870:7;;;;;;;;;;;;;;;;;6863:14;;6798:87;:::o;15903:139::-;1714:12;:10;:12::i;:::-;1704:22;;:6;;;;;;;;;;:22;;;1696:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;16016:18:::1;15994:19;:40;;;;15903:139:::0;:::o;16288:376::-;1714:12;:10;:12::i;:::-;1704:22;;:6;;;;;;;;;;:22;;;1696:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;16493:2:::1;16478:12;16464:11;16447:14;16431:13;:30;;;;:::i;:::-;:44;;;;:::i;:::-;:59;;;;:::i;:::-;:64;16423:73;;;::::0;::::1;;16524:13;16507:14;:30;;;;16566:14;16548:15;:32;;;;16606:11;16591:12;:26;;;;16644:12;16628:13;:28;;;;16288:376:::0;;;;:::o;7233:199::-;7338:4;7360:42;7370:12;:10;:12::i;:::-;7384:9;7395:6;7360:9;:42::i;:::-;7420:4;7413:11;;7233:199;;;;:::o;17109:234::-;1714:12;:10;:12::i;:::-;1704:22;;:6;;;;;;;;;;:22;;;1696:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17226:9:::1;17222:114;17245:8;;:15;;17241:1;:19;17222:114;;;17316:8;17282:18;:31;17301:8;;17310:1;17301:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;17282:31;;;;;;;;;;;;;;;;:42;;;;;;;;;;;;;;;;;;17262:3;;;;;:::i;:::-;;;;17222:114;;;;17109:234:::0;;;:::o;16203:77::-;1714:12;:10;:12::i;:::-;1704:22;;:6;;;;;;;;;;:22;;;1696:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;16268:4:::1;16254:11;;:18;;;;;;;;;;;;;;;;;;16203:77::o:0;7440:184::-;7557:7;7589:11;:18;7601:5;7589:18;;;;;;;;;;;;;;;:27;7608:7;7589:27;;;;;;;;;;;;;;;;7582:34;;7440:184;;;;:::o;1947:244::-;1714:12;:10;:12::i;:::-;1704:22;;:6;;;;;;;;;;:22;;;1696:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;2056:1:::1;2036:22;;:8;:22;;;;2028:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;2146:8;2117:38;;2138:6;::::0;::::1;;;;;;;;2117:38;;;;;;;;;;;;2175:8;2166:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;1947:244:::0;:::o;336:98::-;389:7;416:10;409:17;;336:98;:::o;8970:369::-;9114:1;9097:19;;:5;:19;;;;9089:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9195:1;9176:21;;:7;:21;;;;9168:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9277:6;9247:11;:18;9259:5;9247:18;;;;;;;;;;;;;;;:27;9266:7;9247:27;;;;;;;;;;;;;;;:36;;;;9315:7;9299:32;;9308:5;9299:32;;;9324:6;9299:32;;;;;;:::i;:::-;;;;;;;;8970:369;;;:::o;9347:2353::-;9485:1;9469:18;;:4;:18;;;;9461:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9562:1;9548:16;;:2;:16;;;;9540:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;9632:1;9623:6;:10;9615:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;9704:7;:5;:7::i;:::-;9696:15;;:4;:15;;;;:32;;;;;9721:7;:5;:7::i;:::-;9715:13;;:2;:13;;;;9696:32;9692:1282;;;9785:11;;;;;;;;;;;9780:144;;9833:7;:5;:7::i;:::-;9825:15;;:4;:15;;;9817:91;;;;;;;;;;;;:::i;:::-;;;;;;;;;9780:144;9958:12;;9948:6;:22;;9940:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;10029:13;;;;;;;;;;;10023:19;;:2;:19;;;10020:146;;10096:14;;10087:6;10071:13;10081:2;10071:9;:13::i;:::-;:22;;;;:::i;:::-;:39;10063:87;;;;;;;;;;;;:::i;:::-;;;;;;;;;10020:146;10182:28;10213:24;10231:4;10213:9;:24::i;:::-;10182:55;;10252:12;10291:19;;10267:20;:43;;10252:58;;10374:2;10354:19;;:22;;;;:::i;:::-;10330:20;:46;10327:144;;10453:2;10433:19;;:22;;;;:::i;:::-;10410:45;;10327:144;10494:13;;;;;;;;;;;10488:19;;:2;:19;;;10485:60;;;4850:15;10517:14;;:25;;10509:34;;;;;;10485:60;10565:7;:18;;;;;10577:6;;;;;;;;;;;10576:7;10565:18;:43;;;;;10595:13;;;;;;;;;;;10587:21;;:4;:21;;;;10565:43;:58;;;;;10612:11;;;;;;;;;;;10565:58;:87;;;;;10628:18;:24;10647:4;10628:24;;;;;;;;;;;;;;;;;;;;;;;;;10627:25;10565:87;:114;;;;;10657:18;:22;10676:2;10657:22;;;;;;;;;;;;;;;;;;;;;;;;;10656:23;10565:114;10561:402;;;10700:38;10717:20;10700:16;:38::i;:::-;10757:26;10786:21;10757:50;;10851:17;10830:18;:38;10826:122;;;10893:35;10906:21;10893:12;:35::i;:::-;10826:122;10681:282;10561:402;9730:1244;;9692:1282;10986:12;11001:4;10986:19;;11050:18;:24;11069:4;11050:24;;;;;;;;;;;;;;;;;;;;;;;;;:50;;;;11078:18;:22;11097:2;11078:22;;;;;;;;;;;;;;;;;;;;;;;;;11050:50;11049:102;;;;11114:13;;;;;;;;;;;11106:21;;:4;:21;;;;:44;;;;;11137:13;;;;;;;;;;;11131:19;;:2;:19;;;;11106:44;11049:102;11045:594;;;11178:5;11168:15;;11045:594;;;11261:13;;;;;;;;;;;11253:21;;:4;:21;;;:55;;;;;11292:15;;;;;;;;;;;11278:30;;:2;:30;;;;11253:55;11250:162;;;11341:14;;11329:9;:26;;;;11384:12;;11374:7;:22;;;;11250:162;11471:13;;;;;;;;;;;11465:19;;:2;:19;;;:55;;;;;11504:15;;;;;;;;;;;11488:32;;:4;:32;;;;11465:55;11461:165;;;11553:15;;11541:9;:27;;;;11597:13;;11587:7;:23;;;;11461:165;11045:594;11651:41;11666:4;11672:2;11676:6;11684:7;11651:14;:41::i;:::-;9450:2250;9347:2353;;;:::o;2555:224::-;2675:7;2708:1;2703;:6;;2711:12;2695:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;2735:9;2751:1;2747;:5;;;;:::i;:::-;2735:17;;2770:1;2763:8;;;2555:224;;;;;:::o;12199:99::-;12256:17;;;;;;;;;;;:26;;:34;12283:6;12256:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12199:99;:::o;8287:323::-;8382:7;8440;;8429;:18;;8407:110;;;;;;;;;;;;:::i;:::-;;;;;;;;;8528:19;8550:10;:8;:10::i;:::-;8528:32;;8578:24;8590:11;8578:7;:11;;:24;;;;:::i;:::-;8571:31;;;8287:323;;;:::o;11708:483::-;6008:4;5999:6;;:13;;;;;;;;;;;;;;;;;;11786:21:::1;11824:1;11810:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11786:40;;11855:4;11837;11842:1;11837:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;11881:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11871:4;11876:1;11871:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;::::0;::::1;11914:62;11931:4;11946:15;;;;;;;;;;;11964:11;11914:8;:62::i;:::-;11987:15;;;;;;;;;;;:66;;;12068:11;12094:1;12110:4;12137;12157:15;11987:196;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;11775:416;6044:5:::0;6035:6;;:14;;;;;;;;;;;;;;;;;;11708:483;:::o;12459:282::-;12615:7;12610:28;;12624:14;:12;:14::i;:::-;12610:28;12649:44;12667:6;12675:9;12686:6;12649:17;:44::i;:::-;12709:7;12704:29;;12718:15;:13;:15::i;:::-;12704:29;12459:282;;;;:::o;15420:164::-;15462:7;15483:15;15500;15519:19;:17;:19::i;:::-;15482:56;;;;15556:20;15568:7;15556;:11;;:20;;;;:::i;:::-;15549:27;;;;15420:164;:::o;3041:132::-;3099:7;3126:39;3130:1;3133;3126:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;3119:46;;3041:132;;;;:::o;8618:219::-;8678:1;8665:9;;:14;:30;;;;;8694:1;8683:7;;:12;8665:30;8661:43;;;8697:7;;8661:43;8736:9;;8716:17;:29;;;;8774:7;;8756:15;:25;;;;8806:1;8794:9;:13;;;;8828:1;8818:7;:11;;;;8618:219;:::o;12749:610::-;12896:15;12926:23;12964:12;12991:23;13029:12;13056:13;13083:19;13094:7;13083:10;:19::i;:::-;12881:221;;;;;;;;;;;;13131:28;13151:7;13131;:15;13139:6;13131:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;13113:7;:15;13121:6;13113:15;;;;;;;;;;;;;;;:46;;;;13191:39;13214:15;13191:7;:18;13199:9;13191:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;13170:7;:18;13178:9;13170:18;;;;;;;;;;;;;;;:60;;;;13241:16;13251:5;13241:9;:16::i;:::-;13268:23;13280:4;13286;13268:11;:23::i;:::-;13324:9;13307:44;;13316:6;13307:44;;;13335:15;13307:44;;;;;;:::i;:::-;;;;;;;;12870:489;;;;;;12749:610;;;:::o;8845:117::-;8901:17;;8889:9;:29;;;;8939:15;;8929:7;:25;;;;8845:117::o;15592:257::-;15643:7;15652;15672:15;15690:7;;15672:25;;15708:15;4850;15708:25;;15758:20;4850:15;15758:7;;:11;;:20;;;;:::i;:::-;15748:7;:30;15744:61;;;15788:7;;4850:15;15780:25;;;;;;;;15744:61;15824:7;15833;15816:25;;;;;;15592:257;;;:::o;3181:223::-;3301:7;3333:1;3329;:5;3336:12;3321:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;3360:9;3376:1;3372;:5;;;;:::i;:::-;3360:17;;3395:1;3388:8;;;3181:223;;;;;:::o;13778:615::-;13878:7;13900;13922;13944;13966;13988;14024:23;14049:12;14063:13;14093:40;14105:7;14114:9;;14125:7;;14093:11;:40::i;:::-;14023:110;;;;;;14144:19;14166:10;:8;:10::i;:::-;14144:32;;14188:15;14205:23;14230:12;14259:46;14271:7;14280:4;14286:5;14293:11;14259;:46::i;:::-;14187:118;;;;;;14324:7;14333:15;14350:4;14356:15;14373:4;14379:5;14316:69;;;;;;;;;;;;;;;;;;;13778:615;;;;;;;:::o;2411:136::-;2469:7;2496:43;2500:1;2503;2496:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;2489:50;;2411:136;;;;:::o;2224:179::-;2282:7;2302:9;2318:1;2314;:5;;;;:::i;:::-;2302:17;;2343:1;2338;:6;;2330:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;2394:1;2387:8;;;2224:179;;;;:::o;13367:211::-;13420:19;13442:10;:8;:10::i;:::-;13420:32;;13463:13;13479:22;13489:11;13479:5;:9;;:22;;;;:::i;:::-;13463:38;;13537:33;13564:5;13537:7;:22;13553:4;13537:22;;;;;;;;;;;;;;;;:26;;:33;;;;:::i;:::-;13512:7;:22;13528:4;13512:22;;;;;;;;;;;;;;;:58;;;;13409:169;;13367:211;:::o;13586:147::-;13664:17;13676:4;13664:7;;:11;;:17;;;;:::i;:::-;13654:7;:27;;;;13705:20;13720:4;13705:10;;:14;;:20;;;;:::i;:::-;13692:10;:33;;;;13586:147;;:::o;14401:469::-;14570:7;14592;14614;14649:12;14664:30;14690:3;14664:21;14676:8;14664:7;:11;;:21;;;;:::i;:::-;:25;;:30;;;;:::i;:::-;14649:45;;14705:13;14721:28;14745:3;14721:19;14733:6;14721:7;:11;;:19;;;;:::i;:::-;:23;;:28;;;;:::i;:::-;14705:44;;14760:23;14786:28;14808:5;14786:17;14798:4;14786:7;:11;;:17;;;;:::i;:::-;:21;;:28;;;;:::i;:::-;14760:54;;14833:15;14850:4;14856:5;14825:37;;;;;;;;;14401:469;;;;;;;:::o;14878:534::-;15072:7;15094;15116;15151:15;15169:24;15181:11;15169:7;:11;;:24;;;;:::i;:::-;15151:42;;15204:12;15219:21;15228:11;15219:4;:8;;:21;;;;:::i;:::-;15204:36;;15251:13;15267:22;15277:11;15267:5;:9;;:22;;;;:::i;:::-;15251:38;;15300:23;15326:28;15348:5;15326:17;15338:4;15326:7;:11;;:17;;;;:::i;:::-;:21;;:28;;;;:::i;:::-;15300:54;;15373:7;15382:15;15399:4;15365:39;;;;;;;;;;14878:534;;;;;;;;:::o;2787:246::-;2845:7;2874:1;2869;:6;2865:47;;;2899:1;2892:8;;;;2865:47;2922:9;2938:1;2934;:5;;;;:::i;:::-;2922:17;;2967:1;2962;2958;:5;;;;:::i;:::-;:10;2950:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;3024:1;3017:8;;;2787:246;;;;;:::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;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:60::-;3522:3;3543:5;3536:12;;3494:60;;;:::o;3560:142::-;3610:9;3643:53;3661:34;3670:24;3688:5;3670:24;:::i;:::-;3661:34;:::i;:::-;3643:53;:::i;:::-;3630:66;;3560:142;;;:::o;3708:126::-;3758:9;3791:37;3822:5;3791:37;:::i;:::-;3778:50;;3708:126;;;:::o;3840:152::-;3916:9;3949:37;3980:5;3949:37;:::i;:::-;3936:50;;3840:152;;;:::o;3998:183::-;4111:63;4168:5;4111:63;:::i;:::-;4106:3;4099:76;3998:183;;:::o;4187:274::-;4306:4;4344:2;4333:9;4329:18;4321:26;;4357:97;4451:1;4440:9;4436:17;4427:6;4357:97;:::i;:::-;4187:274;;;;:::o;4467:118::-;4554:24;4572:5;4554:24;:::i;:::-;4549:3;4542:37;4467:118;;:::o;4591:222::-;4684:4;4722:2;4711:9;4707:18;4699:26;;4735:71;4803:1;4792:9;4788:17;4779:6;4735:71;:::i;:::-;4591:222;;;;:::o;4819:619::-;4896:6;4904;4912;4961:2;4949:9;4940:7;4936:23;4932:32;4929:119;;;4967:79;;:::i;:::-;4929:119;5087:1;5112:53;5157:7;5148:6;5137:9;5133:22;5112:53;:::i;:::-;5102:63;;5058:117;5214:2;5240:53;5285:7;5276:6;5265:9;5261:22;5240:53;:::i;:::-;5230:63;;5185:118;5342:2;5368:53;5413:7;5404:6;5393:9;5389:22;5368:53;:::i;:::-;5358:63;;5313:118;4819:619;;;;;:::o;5444:86::-;5479:7;5519:4;5512:5;5508:16;5497:27;;5444:86;;;:::o;5536:112::-;5619:22;5635:5;5619:22;:::i;:::-;5614:3;5607:35;5536:112;;:::o;5654:214::-;5743:4;5781:2;5770:9;5766:18;5758:26;;5794:67;5858:1;5847:9;5843:17;5834:6;5794:67;:::i;:::-;5654:214;;;;:::o;5874:474::-;5942:6;5950;5999:2;5987:9;5978:7;5974:23;5970:32;5967:119;;;6005:79;;:::i;:::-;5967:119;6125:1;6150:53;6195:7;6186:6;6175:9;6171:22;6150:53;:::i;:::-;6140:63;;6096:117;6252:2;6278:53;6323:7;6314:6;6303:9;6299:22;6278:53;:::i;:::-;6268:63;;6223:118;5874:474;;;;;:::o;6354:118::-;6441:24;6459:5;6441:24;:::i;:::-;6436:3;6429:37;6354:118;;:::o;6478:222::-;6571:4;6609:2;6598:9;6594:18;6586:26;;6622:71;6690:1;6679:9;6675:17;6666:6;6622:71;:::i;:::-;6478:222;;;;:::o;6706:116::-;6776:21;6791:5;6776:21;:::i;:::-;6769:5;6766:32;6756:60;;6812:1;6809;6802:12;6756:60;6706:116;:::o;6828:133::-;6871:5;6909:6;6896:20;6887:29;;6925:30;6949:5;6925:30;:::i;:::-;6828:133;;;;:::o;6967:323::-;7023:6;7072:2;7060:9;7051:7;7047:23;7043:32;7040:119;;;7078:79;;:::i;:::-;7040:119;7198:1;7223:50;7265:7;7256:6;7245:9;7241:22;7223:50;:::i;:::-;7213:60;;7169:114;6967:323;;;;:::o;7296:329::-;7355:6;7404:2;7392:9;7383:7;7379:23;7375:32;7372:119;;;7410:79;;:::i;:::-;7372:119;7530:1;7555:53;7600:7;7591:6;7580:9;7576:22;7555:53;:::i;:::-;7545:63;;7501:117;7296:329;;;;:::o;7631:::-;7690:6;7739:2;7727:9;7718:7;7714:23;7710:32;7707:119;;;7745:79;;:::i;:::-;7707:119;7865:1;7890:53;7935:7;7926:6;7915:9;7911:22;7890:53;:::i;:::-;7880:63;;7836:117;7631:329;;;;:::o;7966:765::-;8052:6;8060;8068;8076;8125:3;8113:9;8104:7;8100:23;8096:33;8093:120;;;8132:79;;:::i;:::-;8093:120;8252:1;8277:53;8322:7;8313:6;8302:9;8298:22;8277:53;:::i;:::-;8267:63;;8223:117;8379:2;8405:53;8450:7;8441:6;8430:9;8426:22;8405:53;:::i;:::-;8395:63;;8350:118;8507:2;8533:53;8578:7;8569:6;8558:9;8554:22;8533:53;:::i;:::-;8523:63;;8478:118;8635:2;8661:53;8706:7;8697:6;8686:9;8682:22;8661:53;:::i;:::-;8651:63;;8606:118;7966:765;;;;;;;:::o;8737:117::-;8846:1;8843;8836:12;8860:117;8969:1;8966;8959:12;8983:117;9092:1;9089;9082:12;9123:568;9196:8;9206:6;9256:3;9249:4;9241:6;9237:17;9233:27;9223:122;;9264:79;;:::i;:::-;9223:122;9377:6;9364:20;9354:30;;9407:18;9399:6;9396:30;9393:117;;;9429:79;;:::i;:::-;9393:117;9543:4;9535:6;9531:17;9519:29;;9597:3;9589:4;9581:6;9577:17;9567:8;9563:32;9560:41;9557:128;;;9604:79;;:::i;:::-;9557:128;9123:568;;;;;:::o;9697:698::-;9789:6;9797;9805;9854:2;9842:9;9833:7;9829:23;9825:32;9822:119;;;9860:79;;:::i;:::-;9822:119;10008:1;9997:9;9993:17;9980:31;10038:18;10030:6;10027:30;10024:117;;;10060:79;;:::i;:::-;10024:117;10173:80;10245:7;10236:6;10225:9;10221:22;10173:80;:::i;:::-;10155:98;;;;9951:312;10302:2;10328:50;10370:7;10361:6;10350:9;10346:22;10328:50;:::i;:::-;10318:60;;10273:115;9697:698;;;;;:::o;10401:474::-;10469:6;10477;10526:2;10514:9;10505:7;10501:23;10497:32;10494:119;;;10532:79;;:::i;:::-;10494:119;10652:1;10677:53;10722:7;10713:6;10702:9;10698:22;10677:53;:::i;:::-;10667:63;;10623:117;10779:2;10805:53;10850:7;10841:6;10830:9;10826:22;10805:53;:::i;:::-;10795:63;;10750:118;10401:474;;;;;:::o;10881:182::-;11021:34;11017:1;11009:6;11005:14;10998:58;10881:182;:::o;11069:366::-;11211:3;11232:67;11296:2;11291:3;11232:67;:::i;:::-;11225:74;;11308:93;11397:3;11308:93;:::i;:::-;11426:2;11421:3;11417:12;11410:19;;11069:366;;;:::o;11441:419::-;11607:4;11645:2;11634:9;11630:18;11622:26;;11694:9;11688:4;11684:20;11680:1;11669:9;11665:17;11658:47;11722:131;11848:4;11722:131;:::i;:::-;11714:139;;11441:419;;;:::o;11866:180::-;11914:77;11911:1;11904:88;12011:4;12008:1;12001:15;12035:4;12032:1;12025:15;12052:348;12092:7;12115:20;12133:1;12115:20;:::i;:::-;12110:25;;12149:20;12167:1;12149:20;:::i;:::-;12144:25;;12337:1;12269:66;12265:74;12262:1;12259:81;12254:1;12247:9;12240:17;12236:105;12233:131;;;12344:18;;:::i;:::-;12233:131;12392:1;12389;12385:9;12374:20;;12052:348;;;;:::o;12406:305::-;12446:3;12465:20;12483:1;12465:20;:::i;:::-;12460:25;;12499:20;12517:1;12499:20;:::i;:::-;12494:25;;12653:1;12585:66;12581:74;12578:1;12575:81;12572:107;;;12659:18;;:::i;:::-;12572:107;12703:1;12700;12696:9;12689:16;;12406:305;;;;:::o;12717:180::-;12765:77;12762:1;12755:88;12862:4;12859:1;12852:15;12886:4;12883:1;12876:15;12903:233;12942:3;12965:24;12983:5;12965:24;:::i;:::-;12956:33;;13011:66;13004:5;13001:77;12998:103;;;13081:18;;:::i;:::-;12998:103;13128:1;13121:5;13117:13;13110:20;;12903:233;;;:::o;13142:225::-;13282:34;13278:1;13270:6;13266:14;13259:58;13351:8;13346:2;13338:6;13334:15;13327:33;13142:225;:::o;13373:366::-;13515:3;13536:67;13600:2;13595:3;13536:67;:::i;:::-;13529:74;;13612:93;13701:3;13612:93;:::i;:::-;13730:2;13725:3;13721:12;13714:19;;13373:366;;;:::o;13745:419::-;13911:4;13949:2;13938:9;13934:18;13926:26;;13998:9;13992:4;13988:20;13984:1;13973:9;13969:17;13962:47;14026:131;14152:4;14026:131;:::i;:::-;14018:139;;13745:419;;;:::o;14170:223::-;14310:34;14306:1;14298:6;14294:14;14287:58;14379:6;14374:2;14366:6;14362:15;14355:31;14170:223;:::o;14399:366::-;14541:3;14562:67;14626:2;14621:3;14562:67;:::i;:::-;14555:74;;14638:93;14727:3;14638:93;:::i;:::-;14756:2;14751:3;14747:12;14740:19;;14399:366;;;:::o;14771:419::-;14937:4;14975:2;14964:9;14960:18;14952:26;;15024:9;15018:4;15014:20;15010:1;14999:9;14995:17;14988:47;15052:131;15178:4;15052:131;:::i;:::-;15044:139;;14771:419;;;:::o;15196:221::-;15336:34;15332:1;15324:6;15320:14;15313:58;15405:4;15400:2;15392:6;15388:15;15381:29;15196:221;:::o;15423:366::-;15565:3;15586:67;15650:2;15645:3;15586:67;:::i;:::-;15579:74;;15662:93;15751:3;15662:93;:::i;:::-;15780:2;15775:3;15771:12;15764:19;;15423:366;;;:::o;15795:419::-;15961:4;15999:2;15988:9;15984:18;15976:26;;16048:9;16042:4;16038:20;16034:1;16023:9;16019:17;16012:47;16076:131;16202:4;16076:131;:::i;:::-;16068:139;;15795:419;;;:::o;16220:224::-;16360:34;16356:1;16348:6;16344:14;16337:58;16429:7;16424:2;16416:6;16412:15;16405:32;16220:224;:::o;16450:366::-;16592:3;16613:67;16677:2;16672:3;16613:67;:::i;:::-;16606:74;;16689:93;16778:3;16689:93;:::i;:::-;16807:2;16802:3;16798:12;16791:19;;16450:366;;;:::o;16822:419::-;16988:4;17026:2;17015:9;17011:18;17003:26;;17075:9;17069:4;17065:20;17061:1;17050:9;17046:17;17039:47;17103:131;17229:4;17103:131;:::i;:::-;17095:139;;16822:419;;;:::o;17247:222::-;17387:34;17383:1;17375:6;17371:14;17364:58;17456:5;17451:2;17443:6;17439:15;17432:30;17247:222;:::o;17475:366::-;17617:3;17638:67;17702:2;17697:3;17638:67;:::i;:::-;17631:74;;17714:93;17803:3;17714:93;:::i;:::-;17832:2;17827:3;17823:12;17816:19;;17475:366;;;:::o;17847:419::-;18013:4;18051:2;18040:9;18036:18;18028:26;;18100:9;18094:4;18090:20;18086:1;18075:9;18071:17;18064:47;18128:131;18254:4;18128:131;:::i;:::-;18120:139;;17847:419;;;:::o;18272:228::-;18412:34;18408:1;18400:6;18396:14;18389:58;18481:11;18476:2;18468:6;18464:15;18457:36;18272:228;:::o;18506:366::-;18648:3;18669:67;18733:2;18728:3;18669:67;:::i;:::-;18662:74;;18745:93;18834:3;18745:93;:::i;:::-;18863:2;18858:3;18854:12;18847:19;;18506:366;;;:::o;18878:419::-;19044:4;19082:2;19071:9;19067:18;19059:26;;19131:9;19125:4;19121:20;19117:1;19106:9;19102:17;19095:47;19159:131;19285:4;19159:131;:::i;:::-;19151:139;;18878:419;;;:::o;19303:250::-;19443:34;19439:1;19431:6;19427:14;19420:58;19512:33;19507:2;19499:6;19495:15;19488:58;19303:250;:::o;19559:366::-;19701:3;19722:67;19786:2;19781:3;19722:67;:::i;:::-;19715:74;;19798:93;19887:3;19798:93;:::i;:::-;19916:2;19911:3;19907:12;19900:19;;19559:366;;;:::o;19931:419::-;20097:4;20135:2;20124:9;20120:18;20112:26;;20184:9;20178:4;20174:20;20170:1;20159:9;20155:17;20148:47;20212:131;20338:4;20212:131;:::i;:::-;20204:139;;19931:419;;;:::o;20356:178::-;20496:30;20492:1;20484:6;20480:14;20473:54;20356:178;:::o;20540:366::-;20682:3;20703:67;20767:2;20762:3;20703:67;:::i;:::-;20696:74;;20779:93;20868:3;20779:93;:::i;:::-;20897:2;20892:3;20888:12;20881:19;;20540:366;;;:::o;20912:419::-;21078:4;21116:2;21105:9;21101:18;21093:26;;21165:9;21159:4;21155:20;21151:1;21140:9;21136:17;21129:47;21193:131;21319:4;21193:131;:::i;:::-;21185:139;;20912:419;;;:::o;21337:222::-;21477:34;21473:1;21465:6;21461:14;21454:58;21546:5;21541:2;21533:6;21529:15;21522:30;21337:222;:::o;21565:366::-;21707:3;21728:67;21792:2;21787:3;21728:67;:::i;:::-;21721:74;;21804:93;21893:3;21804:93;:::i;:::-;21922:2;21917:3;21913:12;21906:19;;21565:366;;;:::o;21937:419::-;22103:4;22141:2;22130:9;22126:18;22118:26;;22190:9;22184:4;22180:20;22176:1;22165:9;22161:17;22154:47;22218:131;22344:4;22218:131;:::i;:::-;22210:139;;21937:419;;;:::o;22362:191::-;22402:4;22422:20;22440:1;22422:20;:::i;:::-;22417:25;;22456:20;22474:1;22456:20;:::i;:::-;22451:25;;22495:1;22492;22489:8;22486:34;;;22500:18;;:::i;:::-;22486:34;22545:1;22542;22538:9;22530:17;;22362:191;;;;:::o;22559:229::-;22699:34;22695:1;22687:6;22683:14;22676:58;22768:12;22763:2;22755:6;22751:15;22744:37;22559:229;:::o;22794:366::-;22936:3;22957:67;23021:2;23016:3;22957:67;:::i;:::-;22950:74;;23033:93;23122:3;23033:93;:::i;:::-;23151:2;23146:3;23142:12;23135:19;;22794:366;;;:::o;23166:419::-;23332:4;23370:2;23359:9;23355:18;23347:26;;23419:9;23413:4;23409:20;23405:1;23394:9;23390:17;23383:47;23447:131;23573:4;23447:131;:::i;:::-;23439:139;;23166:419;;;:::o;23591:180::-;23639:77;23636:1;23629:88;23736:4;23733:1;23726:15;23760:4;23757:1;23750:15;23777:143;23834:5;23865:6;23859:13;23850:22;;23881:33;23908:5;23881:33;:::i;:::-;23777:143;;;;:::o;23926:351::-;23996:6;24045:2;24033:9;24024:7;24020:23;24016:32;24013:119;;;24051:79;;:::i;:::-;24013:119;24171:1;24196:64;24252:7;24243:6;24232:9;24228:22;24196:64;:::i;:::-;24186:74;;24142:128;23926:351;;;;:::o;24283:85::-;24328:7;24357:5;24346:16;;24283:85;;;:::o;24374:158::-;24432:9;24465:61;24483:42;24492:32;24518:5;24492:32;:::i;:::-;24483:42;:::i;:::-;24465:61;:::i;:::-;24452:74;;24374:158;;;:::o;24538:147::-;24633:45;24672:5;24633:45;:::i;:::-;24628:3;24621:58;24538:147;;:::o;24691:114::-;24758:6;24792:5;24786:12;24776:22;;24691:114;;;:::o;24811:184::-;24910:11;24944:6;24939:3;24932:19;24984:4;24979:3;24975:14;24960:29;;24811:184;;;;:::o;25001:132::-;25068:4;25091:3;25083:11;;25121:4;25116:3;25112:14;25104:22;;25001:132;;;:::o;25139:108::-;25216:24;25234:5;25216:24;:::i;:::-;25211:3;25204:37;25139:108;;:::o;25253:179::-;25322:10;25343:46;25385:3;25377:6;25343:46;:::i;:::-;25421:4;25416:3;25412:14;25398:28;;25253:179;;;;:::o;25438:113::-;25508:4;25540;25535:3;25531:14;25523:22;;25438:113;;;:::o;25587:732::-;25706:3;25735:54;25783:5;25735:54;:::i;:::-;25805:86;25884:6;25879:3;25805:86;:::i;:::-;25798:93;;25915:56;25965:5;25915:56;:::i;:::-;25994:7;26025:1;26010:284;26035:6;26032:1;26029:13;26010:284;;;26111:6;26105:13;26138:63;26197:3;26182:13;26138:63;:::i;:::-;26131:70;;26224:60;26277:6;26224:60;:::i;:::-;26214:70;;26070:224;26057:1;26054;26050:9;26045:14;;26010:284;;;26014:14;26310:3;26303:10;;25711:608;;;25587:732;;;;:::o;26325:831::-;26588:4;26626:3;26615:9;26611:19;26603:27;;26640:71;26708:1;26697:9;26693:17;26684:6;26640:71;:::i;:::-;26721:80;26797:2;26786:9;26782:18;26773:6;26721:80;:::i;:::-;26848:9;26842:4;26838:20;26833:2;26822:9;26818:18;26811:48;26876:108;26979:4;26970:6;26876:108;:::i;:::-;26868:116;;26994:72;27062:2;27051:9;27047:18;27038:6;26994:72;:::i;:::-;27076:73;27144:3;27133:9;27129:19;27120:6;27076:73;:::i;:::-;26325:831;;;;;;;;:::o;27162:180::-;27210:77;27207:1;27200:88;27307:4;27304:1;27297:15;27331:4;27328:1;27321:15;27348:185;27388:1;27405:20;27423:1;27405:20;:::i;:::-;27400:25;;27439:20;27457:1;27439:20;:::i;:::-;27434:25;;27478:1;27468:35;;27483:18;;:::i;:::-;27468:35;27525:1;27522;27518:9;27513:14;;27348:185;;;;:::o;27539:177::-;27679:29;27675:1;27667:6;27663:14;27656:53;27539:177;:::o;27722:366::-;27864:3;27885:67;27949:2;27944:3;27885:67;:::i;:::-;27878:74;;27961:93;28050:3;27961:93;:::i;:::-;28079:2;28074:3;28070:12;28063:19;;27722:366;;;:::o;28094:419::-;28260:4;28298:2;28287:9;28283:18;28275:26;;28347:9;28341:4;28337:20;28333:1;28322:9;28318:17;28311:47;28375:131;28501:4;28375:131;:::i;:::-;28367:139;;28094:419;;;:::o;28519:220::-;28659:34;28655:1;28647:6;28643:14;28636:58;28728:3;28723:2;28715:6;28711:15;28704:28;28519:220;:::o;28745:366::-;28887:3;28908:67;28972:2;28967:3;28908:67;:::i;:::-;28901:74;;28984:93;29073:3;28984:93;:::i;:::-;29102:2;29097:3;29093:12;29086:19;;28745:366;;;:::o;29117:419::-;29283:4;29321:2;29310:9;29306:18;29298:26;;29370:9;29364:4;29360:20;29356:1;29345:9;29341:17;29334:47;29398:131;29524:4;29398:131;:::i;:::-;29390:139;;29117:419;;;:::o

Swarm Source

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