ETH Price: $2,358.76 (+0.76%)

Token

Ruler of the World (IMU)
 

Overview

Max Total Supply

7,000,000,000 IMU

Holders

90

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
28,120.641026196 IMU

Value
$0.00
0x65dbE5eF037efee8f4A39403337aB8FEa3a0Ae5e
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:
RulerOfTheWorld

Compiler Version
v0.8.9+commit.e5eed63a

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2022-12-02
*/

/*
     _____ __  __ _    _ 
    |_   _|  \/  | |  | |
      | | | \  / | |  | |
      | | | |\/| | |  | |
     _| |_| |  | | |__| |
    |_____|_|  |_|\____/ 

    https://t.me/imutoken

    Imu is the ruler of the world and holder of the Empty Throne, bearing the highest sovereignty within the World Government that even the Five Elders bow down to. However, Im's existence is kept a secret within the government and from the rest of the world.
*/

// SPDX-License-Identifier: Unlicensed
pragma solidity ^0.8.9;

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 RulerOfTheWorld is Context, IERC20, Ownable {

    using SafeMath for uint256;

    string private constant _name = "Ruler of the World";
    string private constant _symbol = "IMU";
    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 = 7000000000 * 10**9;
    uint256 private _rTotal = (MAX - (MAX % _tTotal));
    uint256 private _tFeeTotal;

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

    mapping(address => bool) public bots; 
    address payable private _developmentAddress = payable(0x167a8787AD3c58fDF4F3c7F3EE036A6D16C3d033);
    address payable private _marketingAddress = payable(0x58c14726aedFd12dB77F7ee7a013c6C3C344fF8d);

    IUniswapV2Router02 public uniswapV2Router;
    address public uniswapV2Pair;

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

    uint256 public _maxTxAmount = 140000000 * 10**9; 
    uint256 public _maxWalletSize = 210000000 * 10**9; 
    uint256 public _swapTokensAtAmount = 10000000 * 10**9; 

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

    constructor() {
        _rOwned[_msgSender()] = _rTotal;
        
        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);//swap
        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 removeLimits() external onlyOwner{
        _maxTxAmount = _tTotal;
        _maxWalletSize = _tTotal;
    }
    
    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");
            require(!bots[from] && !bots[to], "TOKEN: Your account is blacklisted!");

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

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

            if(contractTokenBalance >= _maxTxAmount)
            {
                contractTokenBalance = _maxTxAmount;
            }

            if (canSwap && !inSwap && from != uniswapV2Pair && swapEnabled && !_isExcludedFromFee[from] && !_isExcludedFromFee[to]) {
                swapTokensForEth(contractTokenBalance);
                uint256 contractETHBalance = address(this).balance;
                if (contractETHBalance > 0) {
                    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 setTrading(bool _tradingOpen) public onlyOwner {
        tradingOpen = _tradingOpen;
    }

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

    function unblockBot(address notbot) public onlyOwner {
        bots[notbot] = false;
    }

    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);
        if(_isExcludedFromFee[address(this)])
         _tOwned[address(this)] = _tOwned[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, 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(taxFee).div(100);
        uint256 tTeam = tAmount.mul(redisFee).div(100);
        uint256 tTransferAmount = tAmount.sub(tFee).sub(tTeam);
        return (tTransferAmount, tFee, tTeam);
    }

    function _getRValues(
        uint256 tAmount,
        uint256 tFee,
        uint256 currentRate
    )
        private
        pure
        returns (
            uint256,
            uint256,
            uint256
        )
    {
        uint256 rAmount = tAmount.mul(currentRate);
        uint256 rFee = tFee.mul(currentRate);
        uint256 rTransferAmount = rAmount.sub(rFee);
        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);
    }

    function setFee(uint256 taxFeeOnBuy, uint256 taxFeeOnSell) public onlyOwner {
        _redisFeeOnBuy = 0;
        _redisFeeOnSell = 0;
        _taxFeeOnBuy = taxFeeOnBuy;
        _taxFeeOnSell = taxFeeOnSell;
    }

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

    //Set maximum transaction
    function setMaxTxnAmount(uint256 maxTxAmount) public onlyOwner {
        _maxTxAmount = maxTxAmount;
    }

    function setMaxWalletSize(uint256 maxWalletSize) public onlyOwner {
        _maxWalletSize = maxWalletSize;
    }

}

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":[{"internalType":"address[]","name":"bots_","type":"address[]"}],"name":"blockBots","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"bots","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"taxFeeOnBuy","type":"uint256"},{"internalType":"uint256","name":"taxFeeOnSell","type":"uint256"}],"name":"setFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxTxAmount","type":"uint256"}],"name":"setMaxTxnAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxWalletSize","type":"uint256"}],"name":"setMaxWalletSize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"swapTokensAtAmount","type":"uint256"}],"name":"setMinSwapTokensThreshold","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_tradingOpen","type":"bool"}],"name":"setTrading","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":[{"internalType":"address","name":"notbot","type":"address"}],"name":"unblockBot","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"}]

6080604052676124fee993bc00006000196200001c91906200075c565b6000196200002b9190620007c3565b600655600060085560006009556000600a556000600b55600a54600c55600b54600d55600c54600e55600d54600f5573167a8787ad3c58fdf4f3c7f3ee036a6d16c3d033601160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507358c14726aedfd12db77f7ee7a013c6c3c344ff8d601260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060016014806101000a81548160ff0219169083151502179055506000601460156101000a81548160ff0219169083151502179055506001601460166101000a81548160ff0219169083151502179055506701f161421c8e00006015556702ea11e32ad50000601655662386f26fc100006017553480156200018457600080fd5b50600062000197620006f260201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a350600654600260006200024c620006f260201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000737a250d5630b4cf539739df2c5dacb4c659f2488d905080601360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b1580156200032b57600080fd5b505afa15801562000340573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000366919062000868565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015620003c957600080fd5b505afa158015620003de573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000404919062000868565b6040518363ffffffff1660e01b815260040162000423929190620008ab565b602060405180830381600087803b1580156200043e57600080fd5b505af115801562000453573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000479919062000868565b601460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160056000620004cf620006fa60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160056000601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160056000601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506200067c620006f260201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef676124fee993bc0000604051620006e39190620008e9565b60405180910390a35062000906565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000620007698262000723565b9150620007768362000723565b9250826200078957620007886200072d565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000620007d08262000723565b9150620007dd8362000723565b925082821015620007f357620007f262000794565b5b828203905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000620008308262000803565b9050919050565b620008428162000823565b81146200084e57600080fd5b50565b600081519050620008628162000837565b92915050565b600060208284031215620008815762000880620007fe565b5b6000620008918482850162000851565b91505092915050565b620008a58162000823565b82525050565b6000604082019050620008c260008301856200089a565b620008d160208301846200089a565b9392505050565b620008e38162000723565b82525050565b6000602082019050620009006000830184620008d8565b92915050565b613ac680620009166000396000f3fe60806040526004361061019f5760003560e01c8063715018a6116100ec57806395d89b411161008a578063bfd7928411610064578063bfd792841461059a578063dd62ed3e146105d7578063ea1644d514610614578063f2fde38b1461063d576101a6565b806395d89b411461050957806398a5c31514610534578063a9059cbb1461055d576101a6565b80637d1db4a5116100c65780637d1db4a51461045f5780638da5cb5b1461048a5780638f70ccf7146104b55780638f9a55c0146104de576101a6565b8063715018a61461040857806374010ece1461041f578063751039fc14610448576101a6565b80632fd689e31161015957806352f7c9881161013357806352f7c988146103505780636b999053146103795780636d8aa8f8146103a257806370a08231146103cb576101a6565b80632fd689e3146102cf578063313ce567146102fa57806349bd5a5e14610325576101a6565b8062b8cf2a146101ab57806306fdde03146101d4578063095ea7b3146101ff5780631694505e1461023c57806318160ddd1461026757806323b872dd14610292576101a6565b366101a657005b600080fd5b3480156101b757600080fd5b506101d260048036038101906101cd9190612b34565b610666565b005b3480156101e057600080fd5b506101e9610790565b6040516101f69190612c05565b60405180910390f35b34801561020b57600080fd5b5061022660048036038101906102219190612c5d565b6107cd565b6040516102339190612cb8565b60405180910390f35b34801561024857600080fd5b506102516107eb565b60405161025e9190612d32565b60405180910390f35b34801561027357600080fd5b5061027c610811565b6040516102899190612d5c565b60405180910390f35b34801561029e57600080fd5b506102b960048036038101906102b49190612d77565b610821565b6040516102c69190612cb8565b60405180910390f35b3480156102db57600080fd5b506102e46108fa565b6040516102f19190612d5c565b60405180910390f35b34801561030657600080fd5b5061030f610900565b60405161031c9190612de6565b60405180910390f35b34801561033157600080fd5b5061033a610909565b6040516103479190612e10565b60405180910390f35b34801561035c57600080fd5b5061037760048036038101906103729190612e2b565b61092f565b005b34801561038557600080fd5b506103a0600480360381019061039b9190612e6b565b6109e6565b005b3480156103ae57600080fd5b506103c960048036038101906103c49190612ec4565b610ad6565b005b3480156103d757600080fd5b506103f260048036038101906103ed9190612e6b565b610b88565b6040516103ff9190612d5c565b60405180910390f35b34801561041457600080fd5b5061041d610bd9565b005b34801561042b57600080fd5b5061044660048036038101906104419190612ef1565b610d2c565b005b34801561045457600080fd5b5061045d610dcb565b005b34801561046b57600080fd5b50610474610e80565b6040516104819190612d5c565b60405180910390f35b34801561049657600080fd5b5061049f610e86565b6040516104ac9190612e10565b60405180910390f35b3480156104c157600080fd5b506104dc60048036038101906104d79190612ec4565b610eaf565b005b3480156104ea57600080fd5b506104f3610f60565b6040516105009190612d5c565b60405180910390f35b34801561051557600080fd5b5061051e610f66565b60405161052b9190612c05565b60405180910390f35b34801561054057600080fd5b5061055b60048036038101906105569190612ef1565b610fa3565b005b34801561056957600080fd5b50610584600480360381019061057f9190612c5d565b611042565b6040516105919190612cb8565b60405180910390f35b3480156105a657600080fd5b506105c160048036038101906105bc9190612e6b565b611060565b6040516105ce9190612cb8565b60405180910390f35b3480156105e357600080fd5b506105fe60048036038101906105f99190612f1e565b611080565b60405161060b9190612d5c565b60405180910390f35b34801561062057600080fd5b5061063b60048036038101906106369190612ef1565b611107565b005b34801561064957600080fd5b50610664600480360381019061065f9190612e6b565b6111a6565b005b61066e611368565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146106fb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106f290612faa565b60405180910390fd5b60005b815181101561078c576001601060008484815181106107205761071f612fca565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550808061078490613028565b9150506106fe565b5050565b60606040518060400160405280601281526020017f52756c6572206f662074686520576f726c640000000000000000000000000000815250905090565b60006107e16107da611368565b8484611370565b6001905092915050565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000676124fee993bc0000905090565b600061082e84848461153b565b6108ef8461083a611368565b6108ea85604051806060016040528060288152602001613a6960289139600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006108a0611368565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611dc09092919063ffffffff16565b611370565b600190509392505050565b60175481565b60006009905090565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610937611368565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146109c4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109bb90612faa565b60405180910390fd5b60006008819055506000600a819055508160098190555080600b819055505050565b6109ee611368565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610a7b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a7290612faa565b60405180910390fd5b6000601060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b610ade611368565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b6b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b6290612faa565b60405180910390fd5b80601460166101000a81548160ff02191690831515021790555050565b6000610bd2600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611e24565b9050919050565b610be1611368565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610c6e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c6590612faa565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b610d34611368565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610dc1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610db890612faa565b60405180910390fd5b8060158190555050565b610dd3611368565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e60576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e5790612faa565b60405180910390fd5b676124fee993bc0000601581905550676124fee993bc0000601681905550565b60155481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b610eb7611368565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f44576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f3b90612faa565b60405180910390fd5b806014806101000a81548160ff02191690831515021790555050565b60165481565b60606040518060400160405280600381526020017f494d550000000000000000000000000000000000000000000000000000000000815250905090565b610fab611368565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611038576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161102f90612faa565b60405180910390fd5b8060178190555050565b600061105661104f611368565b848461153b565b6001905092915050565b60106020528060005260406000206000915054906101000a900460ff1681565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b61110f611368565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461119c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161119390612faa565b60405180910390fd5b8060168190555050565b6111ae611368565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461123b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161123290612faa565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156112ab576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112a2906130e3565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156113e0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113d790613175565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611450576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161144790613207565b60405180910390fd5b80600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161152e9190612d5c565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156115ab576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115a290613299565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561161b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116129061332b565b60405180910390fd5b6000811161165e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611655906133bd565b60405180910390fd5b611666610e86565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156116d457506116a4610e86565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15611abf5760148054906101000a900460ff16611761576116f3610e86565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614611760576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117579061344f565b60405180910390fd5b5b6015548111156117a6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161179d906134bb565b60405180910390fd5b601060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615801561184a5750601060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b611889576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118809061354d565b60405180910390fd5b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161461193657601654816118eb84610b88565b6118f5919061356d565b10611935576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161192c90613635565b60405180910390fd5b5b600061194130610b88565b905060006017548210159050601554821061195c5760155491505b8080156119765750601460159054906101000a900460ff16155b80156119d05750601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b80156119e85750601460169054906101000a900460ff165b8015611a3e5750600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015611a945750600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611abc57611aa282611e92565b60004790506000811115611aba57611ab94761211a565b5b505b50505b600060019050600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680611b665750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b80611c195750601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614158015611c185750601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b5b15611c275760009050611dae565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148015611cd25750601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611cea57600854600c81905550600954600d819055505b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148015611d955750601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b15611dad57600a54600c81905550600b54600d819055505b5b611dba84848484612186565b50505050565b6000838311158290611e08576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dff9190612c05565b60405180910390fd5b5060008385611e179190613655565b9050809150509392505050565b6000600654821115611e6b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e62906136fb565b60405180910390fd5b6000611e756121b3565b9050611e8a81846121de90919063ffffffff16565b915050919050565b6001601460156101000a81548160ff0219169083151502179055506000600267ffffffffffffffff811115611eca57611ec9612993565b5b604051908082528060200260200182016040528015611ef85781602001602082028036833780820191505090505b5090503081600081518110611f1057611f0f612fca565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015611fb257600080fd5b505afa158015611fc6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611fea9190613730565b81600181518110611ffe57611ffd612fca565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061206530601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611370565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b81526004016120c9959493929190613856565b600060405180830381600087803b1580156120e357600080fd5b505af11580156120f7573d6000803e3d6000fd5b50505050506000601460156101000a81548160ff02191690831515021790555050565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015612182573d6000803e3d6000fd5b5050565b8061219457612193612228565b5b61219f84848461226b565b806121ad576121ac612436565b5b50505050565b60008060006121c061244a565b915091506121d781836121de90919063ffffffff16565b9250505090565b600061222083836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506124a9565b905092915050565b6000600c5414801561223c57506000600d54145b1561224657612269565b600c54600e81905550600d54600f819055506000600c819055506000600d819055505b565b60008060008060008061227d8761250c565b9550955095509550955095506122db86600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461257390919063ffffffff16565b600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061237085600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546125bd90919063ffffffff16565b600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506123bc8161261b565b6123c684836127c0565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516124239190612d5c565b60405180910390a3505050505050505050565b600e54600c81905550600f54600d81905550565b600080600060065490506000676124fee993bc0000905061247e676124fee993bc00006006546121de90919063ffffffff16565b82101561249c57600654676124fee993bc00009350935050506124a5565b81819350935050505b9091565b600080831182906124f0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124e79190612c05565b60405180910390fd5b50600083856124ff91906138df565b9050809150509392505050565b60008060008060008060008060006125298a600c54600d546127fa565b92509250925060006125396121b3565b9050600080600061254b8e8786612890565b9250925092508282828989899c509c509c509c509c509c505050505050505091939550919395565b60006125b583836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611dc0565b905092915050565b60008082846125cc919061356d565b905083811015612611576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126089061395c565b60405180910390fd5b8091505092915050565b60006126256121b3565b9050600061263c82846128ee90919063ffffffff16565b905061269081600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546125bd90919063ffffffff16565b600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156127bb5761277781600360003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546125bd90919063ffffffff16565b600360003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b505050565b6127d58260065461257390919063ffffffff16565b6006819055506127f0816007546125bd90919063ffffffff16565b6007819055505050565b6000806000806128266064612818878a6128ee90919063ffffffff16565b6121de90919063ffffffff16565b905060006128506064612842898b6128ee90919063ffffffff16565b6121de90919063ffffffff16565b905060006128798261286b858c61257390919063ffffffff16565b61257390919063ffffffff16565b905080838395509550955050505093509350939050565b6000806000806128a985886128ee90919063ffffffff16565b905060006128c086886128ee90919063ffffffff16565b905060006128d7828461257390919063ffffffff16565b905082818395509550955050505093509350939050565b6000808314156129015760009050612963565b6000828461290f919061397c565b905082848261291e91906138df565b1461295e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161295590613a48565b60405180910390fd5b809150505b92915050565b6000604051905090565b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6129cb82612982565b810181811067ffffffffffffffff821117156129ea576129e9612993565b5b80604052505050565b60006129fd612969565b9050612a0982826129c2565b919050565b600067ffffffffffffffff821115612a2957612a28612993565b5b602082029050602081019050919050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612a6a82612a3f565b9050919050565b612a7a81612a5f565b8114612a8557600080fd5b50565b600081359050612a9781612a71565b92915050565b6000612ab0612aab84612a0e565b6129f3565b90508083825260208201905060208402830185811115612ad357612ad2612a3a565b5b835b81811015612afc5780612ae88882612a88565b845260208401935050602081019050612ad5565b5050509392505050565b600082601f830112612b1b57612b1a61297d565b5b8135612b2b848260208601612a9d565b91505092915050565b600060208284031215612b4a57612b49612973565b5b600082013567ffffffffffffffff811115612b6857612b67612978565b5b612b7484828501612b06565b91505092915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612bb7578082015181840152602081019050612b9c565b83811115612bc6576000848401525b50505050565b6000612bd782612b7d565b612be18185612b88565b9350612bf1818560208601612b99565b612bfa81612982565b840191505092915050565b60006020820190508181036000830152612c1f8184612bcc565b905092915050565b6000819050919050565b612c3a81612c27565b8114612c4557600080fd5b50565b600081359050612c5781612c31565b92915050565b60008060408385031215612c7457612c73612973565b5b6000612c8285828601612a88565b9250506020612c9385828601612c48565b9150509250929050565b60008115159050919050565b612cb281612c9d565b82525050565b6000602082019050612ccd6000830184612ca9565b92915050565b6000819050919050565b6000612cf8612cf3612cee84612a3f565b612cd3565b612a3f565b9050919050565b6000612d0a82612cdd565b9050919050565b6000612d1c82612cff565b9050919050565b612d2c81612d11565b82525050565b6000602082019050612d476000830184612d23565b92915050565b612d5681612c27565b82525050565b6000602082019050612d716000830184612d4d565b92915050565b600080600060608486031215612d9057612d8f612973565b5b6000612d9e86828701612a88565b9350506020612daf86828701612a88565b9250506040612dc086828701612c48565b9150509250925092565b600060ff82169050919050565b612de081612dca565b82525050565b6000602082019050612dfb6000830184612dd7565b92915050565b612e0a81612a5f565b82525050565b6000602082019050612e256000830184612e01565b92915050565b60008060408385031215612e4257612e41612973565b5b6000612e5085828601612c48565b9250506020612e6185828601612c48565b9150509250929050565b600060208284031215612e8157612e80612973565b5b6000612e8f84828501612a88565b91505092915050565b612ea181612c9d565b8114612eac57600080fd5b50565b600081359050612ebe81612e98565b92915050565b600060208284031215612eda57612ed9612973565b5b6000612ee884828501612eaf565b91505092915050565b600060208284031215612f0757612f06612973565b5b6000612f1584828501612c48565b91505092915050565b60008060408385031215612f3557612f34612973565b5b6000612f4385828601612a88565b9250506020612f5485828601612a88565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000612f94602083612b88565b9150612f9f82612f5e565b602082019050919050565b60006020820190508181036000830152612fc381612f87565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061303382612c27565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141561306657613065612ff9565b5b600182019050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006130cd602683612b88565b91506130d882613071565b604082019050919050565b600060208201905081810360008301526130fc816130c0565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b600061315f602483612b88565b915061316a82613103565b604082019050919050565b6000602082019050818103600083015261318e81613152565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b60006131f1602283612b88565b91506131fc82613195565b604082019050919050565b60006020820190508181036000830152613220816131e4565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000613283602583612b88565b915061328e82613227565b604082019050919050565b600060208201905081810360008301526132b281613276565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000613315602383612b88565b9150613320826132b9565b604082019050919050565b6000602082019050818103600083015261334481613308565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b60006133a7602983612b88565b91506133b28261334b565b604082019050919050565b600060208201905081810360008301526133d68161339a565b9050919050565b7f544f4b454e3a2054686973206163636f756e742063616e6e6f742073656e642060008201527f746f6b656e7320756e74696c2074726164696e6720697320656e61626c656400602082015250565b6000613439603f83612b88565b9150613444826133dd565b604082019050919050565b600060208201905081810360008301526134688161342c565b9050919050565b7f544f4b454e3a204d6178205472616e73616374696f6e204c696d697400000000600082015250565b60006134a5601c83612b88565b91506134b08261346f565b602082019050919050565b600060208201905081810360008301526134d481613498565b9050919050565b7f544f4b454e3a20596f7572206163636f756e7420697320626c61636b6c69737460008201527f6564210000000000000000000000000000000000000000000000000000000000602082015250565b6000613537602383612b88565b9150613542826134db565b604082019050919050565b600060208201905081810360008301526135668161352a565b9050919050565b600061357882612c27565b915061358383612c27565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156135b8576135b7612ff9565b5b828201905092915050565b7f544f4b454e3a2042616c616e636520657863656564732077616c6c657420736960008201527f7a65210000000000000000000000000000000000000000000000000000000000602082015250565b600061361f602383612b88565b915061362a826135c3565b604082019050919050565b6000602082019050818103600083015261364e81613612565b9050919050565b600061366082612c27565b915061366b83612c27565b92508282101561367e5761367d612ff9565b5b828203905092915050565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260008201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b60006136e5602a83612b88565b91506136f082613689565b604082019050919050565b60006020820190508181036000830152613714816136d8565b9050919050565b60008151905061372a81612a71565b92915050565b60006020828403121561374657613745612973565b5b60006137548482850161371b565b91505092915050565b6000819050919050565b600061378261377d6137788461375d565b612cd3565b612c27565b9050919050565b61379281613767565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6137cd81612a5f565b82525050565b60006137df83836137c4565b60208301905092915050565b6000602082019050919050565b600061380382613798565b61380d81856137a3565b9350613818836137b4565b8060005b8381101561384957815161383088826137d3565b975061383b836137eb565b92505060018101905061381c565b5085935050505092915050565b600060a08201905061386b6000830188612d4d565b6138786020830187613789565b818103604083015261388a81866137f8565b90506138996060830185612e01565b6138a66080830184612d4d565b9695505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006138ea82612c27565b91506138f583612c27565b925082613905576139046138b0565b5b828204905092915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000613946601b83612b88565b915061395182613910565b602082019050919050565b6000602082019050818103600083015261397581613939565b9050919050565b600061398782612c27565b915061399283612c27565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156139cb576139ca612ff9565b5b828202905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b6000613a32602183612b88565b9150613a3d826139d6565b604082019050919050565b60006020820190508181036000830152613a6181613a25565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220d6485f229d0b2be299ce8cc48de34819eda7f098c062583ef0f44c8e3df0b85064736f6c63430008090033

Deployed Bytecode

0x60806040526004361061019f5760003560e01c8063715018a6116100ec57806395d89b411161008a578063bfd7928411610064578063bfd792841461059a578063dd62ed3e146105d7578063ea1644d514610614578063f2fde38b1461063d576101a6565b806395d89b411461050957806398a5c31514610534578063a9059cbb1461055d576101a6565b80637d1db4a5116100c65780637d1db4a51461045f5780638da5cb5b1461048a5780638f70ccf7146104b55780638f9a55c0146104de576101a6565b8063715018a61461040857806374010ece1461041f578063751039fc14610448576101a6565b80632fd689e31161015957806352f7c9881161013357806352f7c988146103505780636b999053146103795780636d8aa8f8146103a257806370a08231146103cb576101a6565b80632fd689e3146102cf578063313ce567146102fa57806349bd5a5e14610325576101a6565b8062b8cf2a146101ab57806306fdde03146101d4578063095ea7b3146101ff5780631694505e1461023c57806318160ddd1461026757806323b872dd14610292576101a6565b366101a657005b600080fd5b3480156101b757600080fd5b506101d260048036038101906101cd9190612b34565b610666565b005b3480156101e057600080fd5b506101e9610790565b6040516101f69190612c05565b60405180910390f35b34801561020b57600080fd5b5061022660048036038101906102219190612c5d565b6107cd565b6040516102339190612cb8565b60405180910390f35b34801561024857600080fd5b506102516107eb565b60405161025e9190612d32565b60405180910390f35b34801561027357600080fd5b5061027c610811565b6040516102899190612d5c565b60405180910390f35b34801561029e57600080fd5b506102b960048036038101906102b49190612d77565b610821565b6040516102c69190612cb8565b60405180910390f35b3480156102db57600080fd5b506102e46108fa565b6040516102f19190612d5c565b60405180910390f35b34801561030657600080fd5b5061030f610900565b60405161031c9190612de6565b60405180910390f35b34801561033157600080fd5b5061033a610909565b6040516103479190612e10565b60405180910390f35b34801561035c57600080fd5b5061037760048036038101906103729190612e2b565b61092f565b005b34801561038557600080fd5b506103a0600480360381019061039b9190612e6b565b6109e6565b005b3480156103ae57600080fd5b506103c960048036038101906103c49190612ec4565b610ad6565b005b3480156103d757600080fd5b506103f260048036038101906103ed9190612e6b565b610b88565b6040516103ff9190612d5c565b60405180910390f35b34801561041457600080fd5b5061041d610bd9565b005b34801561042b57600080fd5b5061044660048036038101906104419190612ef1565b610d2c565b005b34801561045457600080fd5b5061045d610dcb565b005b34801561046b57600080fd5b50610474610e80565b6040516104819190612d5c565b60405180910390f35b34801561049657600080fd5b5061049f610e86565b6040516104ac9190612e10565b60405180910390f35b3480156104c157600080fd5b506104dc60048036038101906104d79190612ec4565b610eaf565b005b3480156104ea57600080fd5b506104f3610f60565b6040516105009190612d5c565b60405180910390f35b34801561051557600080fd5b5061051e610f66565b60405161052b9190612c05565b60405180910390f35b34801561054057600080fd5b5061055b60048036038101906105569190612ef1565b610fa3565b005b34801561056957600080fd5b50610584600480360381019061057f9190612c5d565b611042565b6040516105919190612cb8565b60405180910390f35b3480156105a657600080fd5b506105c160048036038101906105bc9190612e6b565b611060565b6040516105ce9190612cb8565b60405180910390f35b3480156105e357600080fd5b506105fe60048036038101906105f99190612f1e565b611080565b60405161060b9190612d5c565b60405180910390f35b34801561062057600080fd5b5061063b60048036038101906106369190612ef1565b611107565b005b34801561064957600080fd5b50610664600480360381019061065f9190612e6b565b6111a6565b005b61066e611368565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146106fb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106f290612faa565b60405180910390fd5b60005b815181101561078c576001601060008484815181106107205761071f612fca565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550808061078490613028565b9150506106fe565b5050565b60606040518060400160405280601281526020017f52756c6572206f662074686520576f726c640000000000000000000000000000815250905090565b60006107e16107da611368565b8484611370565b6001905092915050565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000676124fee993bc0000905090565b600061082e84848461153b565b6108ef8461083a611368565b6108ea85604051806060016040528060288152602001613a6960289139600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006108a0611368565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611dc09092919063ffffffff16565b611370565b600190509392505050565b60175481565b60006009905090565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610937611368565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146109c4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109bb90612faa565b60405180910390fd5b60006008819055506000600a819055508160098190555080600b819055505050565b6109ee611368565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610a7b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a7290612faa565b60405180910390fd5b6000601060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b610ade611368565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b6b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b6290612faa565b60405180910390fd5b80601460166101000a81548160ff02191690831515021790555050565b6000610bd2600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611e24565b9050919050565b610be1611368565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610c6e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c6590612faa565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b610d34611368565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610dc1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610db890612faa565b60405180910390fd5b8060158190555050565b610dd3611368565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e60576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e5790612faa565b60405180910390fd5b676124fee993bc0000601581905550676124fee993bc0000601681905550565b60155481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b610eb7611368565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f44576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f3b90612faa565b60405180910390fd5b806014806101000a81548160ff02191690831515021790555050565b60165481565b60606040518060400160405280600381526020017f494d550000000000000000000000000000000000000000000000000000000000815250905090565b610fab611368565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611038576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161102f90612faa565b60405180910390fd5b8060178190555050565b600061105661104f611368565b848461153b565b6001905092915050565b60106020528060005260406000206000915054906101000a900460ff1681565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b61110f611368565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461119c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161119390612faa565b60405180910390fd5b8060168190555050565b6111ae611368565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461123b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161123290612faa565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156112ab576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112a2906130e3565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156113e0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113d790613175565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611450576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161144790613207565b60405180910390fd5b80600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161152e9190612d5c565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156115ab576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115a290613299565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561161b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116129061332b565b60405180910390fd5b6000811161165e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611655906133bd565b60405180910390fd5b611666610e86565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156116d457506116a4610e86565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15611abf5760148054906101000a900460ff16611761576116f3610e86565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614611760576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117579061344f565b60405180910390fd5b5b6015548111156117a6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161179d906134bb565b60405180910390fd5b601060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615801561184a5750601060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b611889576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118809061354d565b60405180910390fd5b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161461193657601654816118eb84610b88565b6118f5919061356d565b10611935576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161192c90613635565b60405180910390fd5b5b600061194130610b88565b905060006017548210159050601554821061195c5760155491505b8080156119765750601460159054906101000a900460ff16155b80156119d05750601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b80156119e85750601460169054906101000a900460ff165b8015611a3e5750600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015611a945750600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611abc57611aa282611e92565b60004790506000811115611aba57611ab94761211a565b5b505b50505b600060019050600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680611b665750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b80611c195750601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614158015611c185750601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b5b15611c275760009050611dae565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148015611cd25750601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611cea57600854600c81905550600954600d819055505b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148015611d955750601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b15611dad57600a54600c81905550600b54600d819055505b5b611dba84848484612186565b50505050565b6000838311158290611e08576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dff9190612c05565b60405180910390fd5b5060008385611e179190613655565b9050809150509392505050565b6000600654821115611e6b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e62906136fb565b60405180910390fd5b6000611e756121b3565b9050611e8a81846121de90919063ffffffff16565b915050919050565b6001601460156101000a81548160ff0219169083151502179055506000600267ffffffffffffffff811115611eca57611ec9612993565b5b604051908082528060200260200182016040528015611ef85781602001602082028036833780820191505090505b5090503081600081518110611f1057611f0f612fca565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015611fb257600080fd5b505afa158015611fc6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611fea9190613730565b81600181518110611ffe57611ffd612fca565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061206530601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611370565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b81526004016120c9959493929190613856565b600060405180830381600087803b1580156120e357600080fd5b505af11580156120f7573d6000803e3d6000fd5b50505050506000601460156101000a81548160ff02191690831515021790555050565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015612182573d6000803e3d6000fd5b5050565b8061219457612193612228565b5b61219f84848461226b565b806121ad576121ac612436565b5b50505050565b60008060006121c061244a565b915091506121d781836121de90919063ffffffff16565b9250505090565b600061222083836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506124a9565b905092915050565b6000600c5414801561223c57506000600d54145b1561224657612269565b600c54600e81905550600d54600f819055506000600c819055506000600d819055505b565b60008060008060008061227d8761250c565b9550955095509550955095506122db86600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461257390919063ffffffff16565b600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061237085600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546125bd90919063ffffffff16565b600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506123bc8161261b565b6123c684836127c0565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516124239190612d5c565b60405180910390a3505050505050505050565b600e54600c81905550600f54600d81905550565b600080600060065490506000676124fee993bc0000905061247e676124fee993bc00006006546121de90919063ffffffff16565b82101561249c57600654676124fee993bc00009350935050506124a5565b81819350935050505b9091565b600080831182906124f0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124e79190612c05565b60405180910390fd5b50600083856124ff91906138df565b9050809150509392505050565b60008060008060008060008060006125298a600c54600d546127fa565b92509250925060006125396121b3565b9050600080600061254b8e8786612890565b9250925092508282828989899c509c509c509c509c509c505050505050505091939550919395565b60006125b583836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611dc0565b905092915050565b60008082846125cc919061356d565b905083811015612611576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126089061395c565b60405180910390fd5b8091505092915050565b60006126256121b3565b9050600061263c82846128ee90919063ffffffff16565b905061269081600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546125bd90919063ffffffff16565b600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156127bb5761277781600360003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546125bd90919063ffffffff16565b600360003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b505050565b6127d58260065461257390919063ffffffff16565b6006819055506127f0816007546125bd90919063ffffffff16565b6007819055505050565b6000806000806128266064612818878a6128ee90919063ffffffff16565b6121de90919063ffffffff16565b905060006128506064612842898b6128ee90919063ffffffff16565b6121de90919063ffffffff16565b905060006128798261286b858c61257390919063ffffffff16565b61257390919063ffffffff16565b905080838395509550955050505093509350939050565b6000806000806128a985886128ee90919063ffffffff16565b905060006128c086886128ee90919063ffffffff16565b905060006128d7828461257390919063ffffffff16565b905082818395509550955050505093509350939050565b6000808314156129015760009050612963565b6000828461290f919061397c565b905082848261291e91906138df565b1461295e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161295590613a48565b60405180910390fd5b809150505b92915050565b6000604051905090565b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6129cb82612982565b810181811067ffffffffffffffff821117156129ea576129e9612993565b5b80604052505050565b60006129fd612969565b9050612a0982826129c2565b919050565b600067ffffffffffffffff821115612a2957612a28612993565b5b602082029050602081019050919050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612a6a82612a3f565b9050919050565b612a7a81612a5f565b8114612a8557600080fd5b50565b600081359050612a9781612a71565b92915050565b6000612ab0612aab84612a0e565b6129f3565b90508083825260208201905060208402830185811115612ad357612ad2612a3a565b5b835b81811015612afc5780612ae88882612a88565b845260208401935050602081019050612ad5565b5050509392505050565b600082601f830112612b1b57612b1a61297d565b5b8135612b2b848260208601612a9d565b91505092915050565b600060208284031215612b4a57612b49612973565b5b600082013567ffffffffffffffff811115612b6857612b67612978565b5b612b7484828501612b06565b91505092915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612bb7578082015181840152602081019050612b9c565b83811115612bc6576000848401525b50505050565b6000612bd782612b7d565b612be18185612b88565b9350612bf1818560208601612b99565b612bfa81612982565b840191505092915050565b60006020820190508181036000830152612c1f8184612bcc565b905092915050565b6000819050919050565b612c3a81612c27565b8114612c4557600080fd5b50565b600081359050612c5781612c31565b92915050565b60008060408385031215612c7457612c73612973565b5b6000612c8285828601612a88565b9250506020612c9385828601612c48565b9150509250929050565b60008115159050919050565b612cb281612c9d565b82525050565b6000602082019050612ccd6000830184612ca9565b92915050565b6000819050919050565b6000612cf8612cf3612cee84612a3f565b612cd3565b612a3f565b9050919050565b6000612d0a82612cdd565b9050919050565b6000612d1c82612cff565b9050919050565b612d2c81612d11565b82525050565b6000602082019050612d476000830184612d23565b92915050565b612d5681612c27565b82525050565b6000602082019050612d716000830184612d4d565b92915050565b600080600060608486031215612d9057612d8f612973565b5b6000612d9e86828701612a88565b9350506020612daf86828701612a88565b9250506040612dc086828701612c48565b9150509250925092565b600060ff82169050919050565b612de081612dca565b82525050565b6000602082019050612dfb6000830184612dd7565b92915050565b612e0a81612a5f565b82525050565b6000602082019050612e256000830184612e01565b92915050565b60008060408385031215612e4257612e41612973565b5b6000612e5085828601612c48565b9250506020612e6185828601612c48565b9150509250929050565b600060208284031215612e8157612e80612973565b5b6000612e8f84828501612a88565b91505092915050565b612ea181612c9d565b8114612eac57600080fd5b50565b600081359050612ebe81612e98565b92915050565b600060208284031215612eda57612ed9612973565b5b6000612ee884828501612eaf565b91505092915050565b600060208284031215612f0757612f06612973565b5b6000612f1584828501612c48565b91505092915050565b60008060408385031215612f3557612f34612973565b5b6000612f4385828601612a88565b9250506020612f5485828601612a88565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000612f94602083612b88565b9150612f9f82612f5e565b602082019050919050565b60006020820190508181036000830152612fc381612f87565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061303382612c27565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141561306657613065612ff9565b5b600182019050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006130cd602683612b88565b91506130d882613071565b604082019050919050565b600060208201905081810360008301526130fc816130c0565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b600061315f602483612b88565b915061316a82613103565b604082019050919050565b6000602082019050818103600083015261318e81613152565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b60006131f1602283612b88565b91506131fc82613195565b604082019050919050565b60006020820190508181036000830152613220816131e4565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000613283602583612b88565b915061328e82613227565b604082019050919050565b600060208201905081810360008301526132b281613276565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000613315602383612b88565b9150613320826132b9565b604082019050919050565b6000602082019050818103600083015261334481613308565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b60006133a7602983612b88565b91506133b28261334b565b604082019050919050565b600060208201905081810360008301526133d68161339a565b9050919050565b7f544f4b454e3a2054686973206163636f756e742063616e6e6f742073656e642060008201527f746f6b656e7320756e74696c2074726164696e6720697320656e61626c656400602082015250565b6000613439603f83612b88565b9150613444826133dd565b604082019050919050565b600060208201905081810360008301526134688161342c565b9050919050565b7f544f4b454e3a204d6178205472616e73616374696f6e204c696d697400000000600082015250565b60006134a5601c83612b88565b91506134b08261346f565b602082019050919050565b600060208201905081810360008301526134d481613498565b9050919050565b7f544f4b454e3a20596f7572206163636f756e7420697320626c61636b6c69737460008201527f6564210000000000000000000000000000000000000000000000000000000000602082015250565b6000613537602383612b88565b9150613542826134db565b604082019050919050565b600060208201905081810360008301526135668161352a565b9050919050565b600061357882612c27565b915061358383612c27565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156135b8576135b7612ff9565b5b828201905092915050565b7f544f4b454e3a2042616c616e636520657863656564732077616c6c657420736960008201527f7a65210000000000000000000000000000000000000000000000000000000000602082015250565b600061361f602383612b88565b915061362a826135c3565b604082019050919050565b6000602082019050818103600083015261364e81613612565b9050919050565b600061366082612c27565b915061366b83612c27565b92508282101561367e5761367d612ff9565b5b828203905092915050565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260008201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b60006136e5602a83612b88565b91506136f082613689565b604082019050919050565b60006020820190508181036000830152613714816136d8565b9050919050565b60008151905061372a81612a71565b92915050565b60006020828403121561374657613745612973565b5b60006137548482850161371b565b91505092915050565b6000819050919050565b600061378261377d6137788461375d565b612cd3565b612c27565b9050919050565b61379281613767565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6137cd81612a5f565b82525050565b60006137df83836137c4565b60208301905092915050565b6000602082019050919050565b600061380382613798565b61380d81856137a3565b9350613818836137b4565b8060005b8381101561384957815161383088826137d3565b975061383b836137eb565b92505060018101905061381c565b5085935050505092915050565b600060a08201905061386b6000830188612d4d565b6138786020830187613789565b818103604083015261388a81866137f8565b90506138996060830185612e01565b6138a66080830184612d4d565b9695505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006138ea82612c27565b91506138f583612c27565b925082613905576139046138b0565b5b828204905092915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000613946601b83612b88565b915061395182613910565b602082019050919050565b6000602082019050818103600083015261397581613939565b9050919050565b600061398782612c27565b915061399283612c27565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156139cb576139ca612ff9565b5b828202905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b6000613a32602183612b88565b9150613a3d826139d6565b604082019050919050565b60006020820190508181036000830152613a6181613a25565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220d6485f229d0b2be299ce8cc48de34819eda7f098c062583ef0f44c8e3df0b85064736f6c63430008090033

Deployed Bytecode Sourcemap

4532:12856:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12849:169;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7034:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7959:193;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5859:41;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7311:95;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8160:446;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6168:53;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7220:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5907:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16550:219;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13026:92;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17012:101;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7414:138;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2019:148;;;;;;;;;;;;;:::i;:::-;;17152:108;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;9172:118;;;;;;;;;;;;;:::i;:::-;;6056:47;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1805:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12740:101;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6111:49;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7125:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16821:139;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7560:199;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5607:36;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7767:184;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17268:115;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2175:244;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12849:169;1942:12;:10;:12::i;:::-;1932:22;;:6;;;;;;;;;;:22;;;1924:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;12925:9:::1;12920:91;12944:5;:12;12940:1;:16;12920:91;;;12995:4;12978;:14;12983:5;12989:1;12983:8;;;;;;;;:::i;:::-;;;;;;;;12978:14;;;;;;;;;;;;;;;;:21;;;;;;;;;;;;;;;;;;12958:3;;;;;:::i;:::-;;;;12920:91;;;;12849:169:::0;:::o;7034:83::-;7071:13;7104:5;;;;;;;;;;;;;;;;;7097:12;;7034:83;:::o;7959:193::-;8061:4;8083:39;8092:12;:10;:12::i;:::-;8106:7;8115:6;8083:8;:39::i;:::-;8140:4;8133:11;;7959:193;;;;:::o;5859:41::-;;;;;;;;;;;;;:::o;7311:95::-;7364:7;5093:18;7384:14;;7311:95;:::o;8160:446::-;8292:4;8309:36;8319:6;8327:9;8338:6;8309:9;:36::i;:::-;8356:220;8379:6;8400:12;:10;:12::i;:::-;8427:138;8483:6;8427:138;;;;;;;;;;;;;;;;;:11;:19;8439:6;8427:19;;;;;;;;;;;;;;;:33;8447:12;:10;:12::i;:::-;8427:33;;;;;;;;;;;;;;;;:37;;:138;;;;;:::i;:::-;8356:8;:220::i;:::-;8594:4;8587:11;;8160:446;;;;;:::o;6168:53::-;;;;:::o;7220:83::-;7261:5;4769:1;7279:16;;7220:83;:::o;5907:28::-;;;;;;;;;;;;;:::o;16550:219::-;1942:12;:10;:12::i;:::-;1932:22;;:6;;;;;;;;;;:22;;;1924:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;16654:1:::1;16637:14;:18;;;;16684:1;16666:15;:19;;;;16711:11;16696:12;:26;;;;16749:12;16733:13;:28;;;;16550:219:::0;;:::o;13026:92::-;1942:12;:10;:12::i;:::-;1932:22;;:6;;;;;;;;;;:22;;;1924:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;13105:5:::1;13090:4;:12;13095:6;13090:12;;;;;;;;;;;;;;;;:20;;;;;;;;;;;;;;;;;;13026:92:::0;:::o;17012:101::-;1942:12;:10;:12::i;:::-;1932:22;;:6;;;;;;;;;;:22;;;1924:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17093:12:::1;17079:11;;:26;;;;;;;;;;;;;;;;;;17012:101:::0;:::o;7414:138::-;7480:7;7507:37;7527:7;:16;7535:7;7527:16;;;;;;;;;;;;;;;;7507:19;:37::i;:::-;7500:44;;7414:138;;;:::o;2019:148::-;1942:12;:10;:12::i;:::-;1932:22;;:6;;;;;;;;;;:22;;;1924:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;2126:1:::1;2089:40;;2110:6;::::0;::::1;;;;;;;;2089:40;;;;;;;;;;;;2157:1;2140:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;2019:148::o:0;17152:108::-;1942:12;:10;:12::i;:::-;1932:22;;:6;;;;;;;;;;:22;;;1924:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17241:11:::1;17226:12;:26;;;;17152:108:::0;:::o;9172:118::-;1942:12;:10;:12::i;:::-;1932:22;;:6;;;;;;;;;;:22;;;1924:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;5093:18:::1;9225:12;:22;;;;5093:18;9258:14;:24;;;;9172:118::o:0;6056:47::-;;;;:::o;1805:79::-;1843:7;1870:6;;;;;;;;;;;1863:13;;1805:79;:::o;12740:101::-;1942:12;:10;:12::i;:::-;1932:22;;:6;;;;;;;;;;:22;;;1924:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;12821:12:::1;12807:11;::::0;:26:::1;;;;;;;;;;;;;;;;;;12740:101:::0;:::o;6111:49::-;;;;:::o;7125:87::-;7164:13;7197:7;;;;;;;;;;;;;;;;;7190:14;;7125:87;:::o;16821:139::-;1942:12;:10;:12::i;:::-;1932:22;;:6;;;;;;;;;;:22;;;1924:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;16934:18:::1;16912:19;:40;;;;16821:139:::0;:::o;7560:199::-;7665:4;7687:42;7697:12;:10;:12::i;:::-;7711:9;7722:6;7687:9;:42::i;:::-;7747:4;7740:11;;7560:199;;;;:::o;5607:36::-;;;;;;;;;;;;;;;;;;;;;;:::o;7767:184::-;7884:7;7916:11;:18;7928:5;7916:18;;;;;;;;;;;;;;;:27;7935:7;7916:27;;;;;;;;;;;;;;;;7909:34;;7767:184;;;;:::o;17268:115::-;1942:12;:10;:12::i;:::-;1932:22;;:6;;;;;;;;;;:22;;;1924:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17362:13:::1;17345:14;:30;;;;17268:115:::0;:::o;2175:244::-;1942:12;:10;:12::i;:::-;1932:22;;:6;;;;;;;;;;:22;;;1924:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;2284:1:::1;2264:22;;:8;:22;;;;2256:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;2374:8;2345:38;;2366:6;::::0;::::1;;;;;;;;2345:38;;;;;;;;;;;;2403:8;2394:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;2175:244:::0;:::o;564:98::-;617:7;644:10;637:17;;564:98;:::o;9427:369::-;9571:1;9554:19;;:5;:19;;;;9546:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9652:1;9633:21;;:7;:21;;;;9625:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9734:6;9704:11;:18;9716:5;9704:18;;;;;;;;;;;;;;;:27;9723:7;9704:27;;;;;;;;;;;;;;;:36;;;;9772:7;9756:32;;9765:5;9756:32;;;9781:6;9756:32;;;;;;:::i;:::-;;;;;;;;9427:369;;;:::o;9804:2330::-;9942:1;9926:18;;:4;:18;;;;9918:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;10019:1;10005:16;;:2;:16;;;;9997:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;10089:1;10080:6;:10;10072:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;10161:7;:5;:7::i;:::-;10153:15;;:4;:15;;;;:32;;;;;10178:7;:5;:7::i;:::-;10172:13;;:2;:13;;;;10153:32;10149:1259;;;10242:11;;;;;;;;;;10237:144;;10290:7;:5;:7::i;:::-;10282:15;;:4;:15;;;10274:91;;;;;;;;;;;;:::i;:::-;;;;;;;;;10237:144;10415:12;;10405:6;:22;;10397:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;10484:4;:10;10489:4;10484:10;;;;;;;;;;;;;;;;;;;;;;;;;10483:11;:24;;;;;10499:4;:8;10504:2;10499:8;;;;;;;;;;;;;;;;;;;;;;;;;10498:9;10483:24;10475:72;;;;;;;;;;;;:::i;:::-;;;;;;;;;10573:13;;;;;;;;;;;10567:19;;:2;:19;;;10564:146;;10640:14;;10631:6;10615:13;10625:2;10615:9;:13::i;:::-;:22;;;;:::i;:::-;:39;10607:87;;;;;;;;;;;;:::i;:::-;;;;;;;;;10564:146;10726:28;10757:24;10775:4;10757:9;:24::i;:::-;10726:55;;10796:12;10835:19;;10811:20;:43;;10796:58;;10898:12;;10874:20;:36;10871:124;;10967:12;;10944:35;;10871:124;11015:7;:18;;;;;11027:6;;;;;;;;;;;11026:7;11015:18;:43;;;;;11045:13;;;;;;;;;;;11037:21;;:4;:21;;;;11015:43;:58;;;;;11062:11;;;;;;;;;;;11015:58;:87;;;;;11078:18;:24;11097:4;11078:24;;;;;;;;;;;;;;;;;;;;;;;;;11077:25;11015:87;:114;;;;;11107:18;:22;11126:2;11107:22;;;;;;;;;;;;;;;;;;;;;;;;;11106:23;11015:114;11011:386;;;11150:38;11167:20;11150:16;:38::i;:::-;11207:26;11236:21;11207:50;;11301:1;11280:18;:22;11276:106;;;11327:35;11340:21;11327:12;:35::i;:::-;11276:106;11131:266;11011:386;10187:1221;;10149:1259;11420:12;11435:4;11420:19;;11484:18;:24;11503:4;11484:24;;;;;;;;;;;;;;;;;;;;;;;;;:50;;;;11512:18;:22;11531:2;11512:22;;;;;;;;;;;;;;;;;;;;;;;;;11484:50;11483:102;;;;11548:13;;;;;;;;;;;11540:21;;:4;:21;;;;:44;;;;;11571:13;;;;;;;;;;;11565:19;;:2;:19;;;;11540:44;11483:102;11479:594;;;11612:5;11602:15;;11479:594;;;11695:13;;;;;;;;;;;11687:21;;:4;:21;;;:55;;;;;11726:15;;;;;;;;;;;11712:30;;:2;:30;;;;11687:55;11684:162;;;11775:14;;11763:9;:26;;;;11818:12;;11808:7;:22;;;;11684:162;11905:13;;;;;;;;;;;11899:19;;:2;:19;;;:55;;;;;11938:15;;;;;;;;;;;11922:32;;:4;:32;;;;11899:55;11895:165;;;11987:15;;11975:9;:27;;;;12031:13;;12021:7;:23;;;;11895:165;11479:594;12085:41;12100:4;12106:2;12110:6;12118:7;12085:14;:41::i;:::-;9907:2227;9804:2330;;;:::o;2783:224::-;2903:7;2936:1;2931;:6;;2939:12;2923:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;2963:9;2979:1;2975;:5;;;;:::i;:::-;2963:17;;2998:1;2991:8;;;2783:224;;;;;:::o;8614:323::-;8709:7;8767;;8756;:18;;8734:110;;;;;;;;;;;;:::i;:::-;;;;;;;;;8855:19;8877:10;:8;:10::i;:::-;8855:32;;8905:24;8917:11;8905:7;:11;;:24;;;;:::i;:::-;8898:31;;;8614:323;;;:::o;12142:483::-;6325:4;6316:6;;:13;;;;;;;;;;;;;;;;;;12220:21:::1;12258:1;12244:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12220:40;;12289:4;12271;12276:1;12271:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;12315:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12305:4;12310:1;12305:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;::::0;::::1;12348:62;12365:4;12380:15;;;;;;;;;;;12398:11;12348:8;:62::i;:::-;12421:15;;;;;;;;;;;:66;;;12502:11;12528:1;12544:4;12571;12591:15;12421:196;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;12209:416;6361:5:::0;6352:6;;:14;;;;;;;;;;;;;;;;;;12142:483;:::o;12633:99::-;12690:17;;;;;;;;;;;:26;;:34;12717:6;12690:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12633:99;:::o;13126:282::-;13282:7;13277:28;;13291:14;:12;:14::i;:::-;13277:28;13316:44;13334:6;13342:9;13353:6;13316:17;:44::i;:::-;13376:7;13371:29;;13385:15;:13;:15::i;:::-;13371:29;13126:282;;;;:::o;16113:164::-;16155:7;16176:15;16193;16212:19;:17;:19::i;:::-;16175:56;;;;16249:20;16261:7;16249;:11;;:20;;;;:::i;:::-;16242:27;;;;16113:164;:::o;3269:132::-;3327:7;3354:39;3358:1;3361;3354:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;3347:46;;3269:132;;;;:::o;8945:219::-;9005:1;8992:9;;:14;:30;;;;;9021:1;9010:7;;:12;8992:30;8988:43;;;9024:7;;8988:43;9063:9;;9043:17;:29;;;;9101:7;;9083:15;:25;;;;9133:1;9121:9;:13;;;;9155:1;9145:7;:11;;;;8945:219;:::o;13416:610::-;13563:15;13593:23;13631:12;13658:23;13696:12;13723:13;13750:19;13761:7;13750:10;:19::i;:::-;13548:221;;;;;;;;;;;;13798:28;13818:7;13798;:15;13806:6;13798:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;13780:7;:15;13788:6;13780:15;;;;;;;;;;;;;;;:46;;;;13858:39;13881:15;13858:7;:18;13866:9;13858:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;13837:7;:18;13845:9;13837:18;;;;;;;;;;;;;;;:60;;;;13908:16;13918:5;13908:9;:16::i;:::-;13935:23;13947:4;13953;13935:11;:23::i;:::-;13991:9;13974:44;;13983:6;13974:44;;;14002:15;13974:44;;;;;;:::i;:::-;;;;;;;;13537:489;;;;;;13416:610;;;:::o;9302:117::-;9358:17;;9346:9;:29;;;;9396:15;;9386:7;:25;;;;9302:117::o;16285:257::-;16336:7;16345;16365:15;16383:7;;16365:25;;16401:15;5093:18;16401:25;;16451:20;5093:18;16451:7;;:11;;:20;;;;:::i;:::-;16441:7;:30;16437:61;;;16481:7;;5093:18;16473:25;;;;;;;;16437:61;16517:7;16526;16509:25;;;;;;16285:257;;;:::o;3409:223::-;3529:7;3561:1;3557;:5;3564:12;3549:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;3588:9;3604:1;3600;:5;;;;:::i;:::-;3588:17;;3623:1;3616:8;;;3409:223;;;;;:::o;14562:608::-;14662:7;14684;14706;14728;14750;14772;14808:23;14833:12;14847:13;14877:40;14889:7;14898:9;;14909:7;;14877:11;:40::i;:::-;14807:110;;;;;;14928:19;14950:10;:8;:10::i;:::-;14928:32;;14972:15;14989:23;15014:12;15043:39;15055:7;15064:4;15070:11;15043;:39::i;:::-;14971:111;;;;;;15101:7;15110:15;15127:4;15133:15;15150:4;15156:5;15093:69;;;;;;;;;;;;;;;;;;;14562:608;;;;;;;:::o;2639:136::-;2697:7;2724:43;2728:1;2731;2724:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;2717:50;;2639:136;;;;:::o;2452:179::-;2510:7;2530:9;2546:1;2542;:5;;;;:::i;:::-;2530:17;;2571:1;2566;:6;;2558:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;2622:1;2615:8;;;2452:179;;;;:::o;14034:328::-;14087:19;14109:10;:8;:10::i;:::-;14087:32;;14130:13;14146:22;14156:11;14146:5;:9;;:22;;;;:::i;:::-;14130:38;;14204:33;14231:5;14204:7;:22;14220:4;14204:22;;;;;;;;;;;;;;;;:26;;:33;;;;:::i;:::-;14179:7;:22;14195:4;14179:22;;;;;;;;;;;;;;;:58;;;;14251:18;:33;14278:4;14251:33;;;;;;;;;;;;;;;;;;;;;;;;;14248:106;;;14321:33;14348:5;14321:7;:22;14337:4;14321:22;;;;;;;;;;;;;;;;:26;;:33;;;;:::i;:::-;14296:7;:22;14312:4;14296:22;;;;;;;;;;;;;;;:58;;;;14248:106;14076:286;;14034:328;:::o;14370:147::-;14448:17;14460:4;14448:7;;:11;;:17;;;;:::i;:::-;14438:7;:27;;;;14489:20;14504:4;14489:10;;:14;;:20;;;;:::i;:::-;14476:10;:33;;;;14370:147;;:::o;15178:469::-;15347:7;15369;15391;15426:12;15441:28;15465:3;15441:19;15453:6;15441:7;:11;;:19;;;;:::i;:::-;:23;;:28;;;;:::i;:::-;15426:43;;15480:13;15496:30;15522:3;15496:21;15508:8;15496:7;:11;;:21;;;;:::i;:::-;:25;;:30;;;;:::i;:::-;15480:46;;15537:23;15563:28;15585:5;15563:17;15575:4;15563:7;:11;;:17;;;;:::i;:::-;:21;;:28;;;;:::i;:::-;15537:54;;15610:15;15627:4;15633:5;15602:37;;;;;;;;;15178:469;;;;;;;:::o;15655:450::-;15825:7;15847;15869;15904:15;15922:24;15934:11;15922:7;:11;;:24;;;;:::i;:::-;15904:42;;15957:12;15972:21;15981:11;15972:4;:8;;:21;;;;:::i;:::-;15957:36;;16004:23;16030:17;16042:4;16030:7;:11;;:17;;;;:::i;:::-;16004:43;;16066:7;16075:15;16092:4;16058:39;;;;;;;;;15655:450;;;;;;;:::o;3015:246::-;3073:7;3102:1;3097;:6;3093:47;;;3127:1;3120:8;;;;3093:47;3150:9;3166:1;3162;:5;;;;:::i;:::-;3150:17;;3195:1;3190;3186;:5;;;;:::i;:::-;:10;3178:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;3252:1;3245:8;;;3015:246;;;;;:::o;7:75:1:-;40:6;73:2;67:9;57:19;;7:75;:::o;88:117::-;197:1;194;187:12;211:117;320:1;317;310:12;334:117;443:1;440;433:12;457:102;498:6;549:2;545:7;540:2;533:5;529:14;525:28;515:38;;457:102;;;:::o;565:180::-;613:77;610:1;603:88;710:4;707:1;700:15;734:4;731:1;724:15;751:281;834:27;856:4;834:27;:::i;:::-;826:6;822:40;964:6;952:10;949:22;928:18;916:10;913:34;910:62;907:88;;;975:18;;:::i;:::-;907:88;1015:10;1011:2;1004:22;794:238;751:281;;:::o;1038:129::-;1072:6;1099:20;;:::i;:::-;1089:30;;1128:33;1156:4;1148:6;1128:33;:::i;:::-;1038:129;;;:::o;1173:311::-;1250:4;1340:18;1332:6;1329:30;1326:56;;;1362:18;;:::i;:::-;1326:56;1412:4;1404:6;1400:17;1392:25;;1472:4;1466;1462:15;1454:23;;1173:311;;;:::o;1490:117::-;1599:1;1596;1589:12;1613:126;1650:7;1690:42;1683:5;1679:54;1668:65;;1613:126;;;:::o;1745:96::-;1782:7;1811:24;1829:5;1811:24;:::i;:::-;1800:35;;1745:96;;;:::o;1847:122::-;1920:24;1938:5;1920:24;:::i;:::-;1913:5;1910:35;1900:63;;1959:1;1956;1949:12;1900:63;1847:122;:::o;1975:139::-;2021:5;2059:6;2046:20;2037:29;;2075:33;2102:5;2075:33;:::i;:::-;1975:139;;;;:::o;2137:710::-;2233:5;2258:81;2274:64;2331:6;2274:64;:::i;:::-;2258:81;:::i;:::-;2249:90;;2359:5;2388:6;2381:5;2374:21;2422:4;2415:5;2411:16;2404:23;;2475:4;2467:6;2463:17;2455:6;2451:30;2504:3;2496:6;2493:15;2490:122;;;2523:79;;:::i;:::-;2490:122;2638:6;2621:220;2655:6;2650:3;2647:15;2621:220;;;2730:3;2759:37;2792:3;2780:10;2759:37;:::i;:::-;2754:3;2747:50;2826:4;2821:3;2817:14;2810:21;;2697:144;2681:4;2676:3;2672:14;2665:21;;2621:220;;;2625:21;2239:608;;2137:710;;;;;:::o;2870:370::-;2941:5;2990:3;2983:4;2975:6;2971:17;2967:27;2957:122;;2998:79;;:::i;:::-;2957:122;3115:6;3102:20;3140:94;3230:3;3222:6;3215:4;3207:6;3203:17;3140:94;:::i;:::-;3131:103;;2947:293;2870:370;;;;:::o;3246:539::-;3330:6;3379:2;3367:9;3358:7;3354:23;3350:32;3347:119;;;3385:79;;:::i;:::-;3347:119;3533:1;3522:9;3518:17;3505:31;3563:18;3555:6;3552:30;3549:117;;;3585:79;;:::i;:::-;3549:117;3690:78;3760:7;3751:6;3740:9;3736:22;3690:78;:::i;:::-;3680:88;;3476:302;3246:539;;;;:::o;3791:99::-;3843:6;3877:5;3871:12;3861:22;;3791:99;;;:::o;3896:169::-;3980:11;4014:6;4009:3;4002:19;4054:4;4049:3;4045:14;4030:29;;3896:169;;;;:::o;4071:307::-;4139:1;4149:113;4163:6;4160:1;4157:13;4149:113;;;4248:1;4243:3;4239:11;4233:18;4229:1;4224:3;4220:11;4213:39;4185:2;4182:1;4178:10;4173:15;;4149:113;;;4280:6;4277:1;4274:13;4271:101;;;4360:1;4351:6;4346:3;4342:16;4335:27;4271:101;4120:258;4071:307;;;:::o;4384:364::-;4472:3;4500:39;4533:5;4500:39;:::i;:::-;4555:71;4619:6;4614:3;4555:71;:::i;:::-;4548:78;;4635:52;4680:6;4675:3;4668:4;4661:5;4657:16;4635:52;:::i;:::-;4712:29;4734:6;4712:29;:::i;:::-;4707:3;4703:39;4696:46;;4476:272;4384:364;;;;:::o;4754:313::-;4867:4;4905:2;4894:9;4890:18;4882:26;;4954:9;4948:4;4944:20;4940:1;4929:9;4925:17;4918:47;4982:78;5055:4;5046:6;4982:78;:::i;:::-;4974:86;;4754:313;;;;:::o;5073:77::-;5110:7;5139:5;5128:16;;5073:77;;;:::o;5156:122::-;5229:24;5247:5;5229:24;:::i;:::-;5222:5;5219:35;5209:63;;5268:1;5265;5258:12;5209:63;5156:122;:::o;5284:139::-;5330:5;5368:6;5355:20;5346:29;;5384:33;5411:5;5384:33;:::i;:::-;5284:139;;;;:::o;5429:474::-;5497:6;5505;5554:2;5542:9;5533:7;5529:23;5525:32;5522:119;;;5560:79;;:::i;:::-;5522:119;5680:1;5705:53;5750:7;5741:6;5730:9;5726:22;5705:53;:::i;:::-;5695:63;;5651:117;5807:2;5833:53;5878:7;5869:6;5858:9;5854:22;5833:53;:::i;:::-;5823:63;;5778:118;5429:474;;;;;:::o;5909:90::-;5943:7;5986:5;5979:13;5972:21;5961:32;;5909:90;;;:::o;6005:109::-;6086:21;6101:5;6086:21;:::i;:::-;6081:3;6074:34;6005:109;;:::o;6120:210::-;6207:4;6245:2;6234:9;6230:18;6222:26;;6258:65;6320:1;6309:9;6305:17;6296:6;6258:65;:::i;:::-;6120:210;;;;:::o;6336:60::-;6364:3;6385:5;6378:12;;6336:60;;;:::o;6402:142::-;6452:9;6485:53;6503:34;6512:24;6530:5;6512:24;:::i;:::-;6503:34;:::i;:::-;6485:53;:::i;:::-;6472:66;;6402:142;;;:::o;6550:126::-;6600:9;6633:37;6664:5;6633:37;:::i;:::-;6620:50;;6550:126;;;:::o;6682:152::-;6758:9;6791:37;6822:5;6791:37;:::i;:::-;6778:50;;6682:152;;;:::o;6840:183::-;6953:63;7010:5;6953:63;:::i;:::-;6948:3;6941:76;6840:183;;:::o;7029:274::-;7148:4;7186:2;7175:9;7171:18;7163:26;;7199:97;7293:1;7282:9;7278:17;7269:6;7199:97;:::i;:::-;7029:274;;;;:::o;7309:118::-;7396:24;7414:5;7396:24;:::i;:::-;7391:3;7384:37;7309:118;;:::o;7433:222::-;7526:4;7564:2;7553:9;7549:18;7541:26;;7577:71;7645:1;7634:9;7630:17;7621:6;7577:71;:::i;:::-;7433:222;;;;:::o;7661:619::-;7738:6;7746;7754;7803:2;7791:9;7782:7;7778:23;7774:32;7771:119;;;7809:79;;:::i;:::-;7771:119;7929:1;7954:53;7999:7;7990:6;7979:9;7975:22;7954:53;:::i;:::-;7944:63;;7900:117;8056:2;8082:53;8127:7;8118:6;8107:9;8103:22;8082:53;:::i;:::-;8072:63;;8027:118;8184:2;8210:53;8255:7;8246:6;8235:9;8231:22;8210:53;:::i;:::-;8200:63;;8155:118;7661:619;;;;;:::o;8286:86::-;8321:7;8361:4;8354:5;8350:16;8339:27;;8286:86;;;:::o;8378:112::-;8461:22;8477:5;8461:22;:::i;:::-;8456:3;8449:35;8378:112;;:::o;8496:214::-;8585:4;8623:2;8612:9;8608:18;8600:26;;8636:67;8700:1;8689:9;8685:17;8676:6;8636:67;:::i;:::-;8496:214;;;;:::o;8716:118::-;8803:24;8821:5;8803:24;:::i;:::-;8798:3;8791:37;8716:118;;:::o;8840:222::-;8933:4;8971:2;8960:9;8956:18;8948:26;;8984:71;9052:1;9041:9;9037:17;9028:6;8984:71;:::i;:::-;8840:222;;;;:::o;9068:474::-;9136:6;9144;9193:2;9181:9;9172:7;9168:23;9164:32;9161:119;;;9199:79;;:::i;:::-;9161:119;9319:1;9344:53;9389:7;9380:6;9369:9;9365:22;9344:53;:::i;:::-;9334:63;;9290:117;9446:2;9472:53;9517:7;9508:6;9497:9;9493:22;9472:53;:::i;:::-;9462:63;;9417:118;9068:474;;;;;:::o;9548:329::-;9607:6;9656:2;9644:9;9635:7;9631:23;9627:32;9624:119;;;9662:79;;:::i;:::-;9624:119;9782:1;9807:53;9852:7;9843:6;9832:9;9828:22;9807:53;:::i;:::-;9797:63;;9753:117;9548:329;;;;:::o;9883:116::-;9953:21;9968:5;9953:21;:::i;:::-;9946:5;9943:32;9933:60;;9989:1;9986;9979:12;9933:60;9883:116;:::o;10005:133::-;10048:5;10086:6;10073:20;10064:29;;10102:30;10126:5;10102:30;:::i;:::-;10005:133;;;;:::o;10144:323::-;10200:6;10249:2;10237:9;10228:7;10224:23;10220:32;10217:119;;;10255:79;;:::i;:::-;10217:119;10375:1;10400:50;10442:7;10433:6;10422:9;10418:22;10400:50;:::i;:::-;10390:60;;10346:114;10144:323;;;;:::o;10473:329::-;10532:6;10581:2;10569:9;10560:7;10556:23;10552:32;10549:119;;;10587:79;;:::i;:::-;10549:119;10707:1;10732:53;10777:7;10768:6;10757:9;10753:22;10732:53;:::i;:::-;10722:63;;10678:117;10473:329;;;;:::o;10808:474::-;10876:6;10884;10933:2;10921:9;10912:7;10908:23;10904:32;10901:119;;;10939:79;;:::i;:::-;10901:119;11059:1;11084:53;11129:7;11120:6;11109:9;11105:22;11084:53;:::i;:::-;11074:63;;11030:117;11186:2;11212:53;11257:7;11248:6;11237:9;11233:22;11212:53;:::i;:::-;11202:63;;11157:118;10808:474;;;;;:::o;11288:182::-;11428:34;11424:1;11416:6;11412:14;11405:58;11288:182;:::o;11476:366::-;11618:3;11639:67;11703:2;11698:3;11639:67;:::i;:::-;11632:74;;11715:93;11804:3;11715:93;:::i;:::-;11833:2;11828:3;11824:12;11817:19;;11476:366;;;:::o;11848:419::-;12014:4;12052:2;12041:9;12037:18;12029:26;;12101:9;12095:4;12091:20;12087:1;12076:9;12072:17;12065:47;12129:131;12255:4;12129:131;:::i;:::-;12121:139;;11848:419;;;:::o;12273:180::-;12321:77;12318:1;12311:88;12418:4;12415:1;12408:15;12442:4;12439:1;12432:15;12459:180;12507:77;12504:1;12497:88;12604:4;12601:1;12594:15;12628:4;12625:1;12618:15;12645:233;12684:3;12707:24;12725:5;12707:24;:::i;:::-;12698:33;;12753:66;12746:5;12743:77;12740:103;;;12823:18;;:::i;:::-;12740:103;12870:1;12863:5;12859:13;12852:20;;12645:233;;;:::o;12884:225::-;13024:34;13020:1;13012:6;13008:14;13001:58;13093:8;13088:2;13080:6;13076:15;13069:33;12884:225;:::o;13115:366::-;13257:3;13278:67;13342:2;13337:3;13278:67;:::i;:::-;13271:74;;13354:93;13443:3;13354:93;:::i;:::-;13472:2;13467:3;13463:12;13456:19;;13115:366;;;:::o;13487:419::-;13653:4;13691:2;13680:9;13676:18;13668:26;;13740:9;13734:4;13730:20;13726:1;13715:9;13711:17;13704:47;13768:131;13894:4;13768:131;:::i;:::-;13760:139;;13487:419;;;:::o;13912:223::-;14052:34;14048:1;14040:6;14036:14;14029:58;14121:6;14116:2;14108:6;14104:15;14097:31;13912:223;:::o;14141:366::-;14283:3;14304:67;14368:2;14363:3;14304:67;:::i;:::-;14297:74;;14380:93;14469:3;14380:93;:::i;:::-;14498:2;14493:3;14489:12;14482:19;;14141:366;;;:::o;14513:419::-;14679:4;14717:2;14706:9;14702:18;14694:26;;14766:9;14760:4;14756:20;14752:1;14741:9;14737:17;14730:47;14794:131;14920:4;14794:131;:::i;:::-;14786:139;;14513:419;;;:::o;14938:221::-;15078:34;15074:1;15066:6;15062:14;15055:58;15147:4;15142:2;15134:6;15130:15;15123:29;14938:221;:::o;15165:366::-;15307:3;15328:67;15392:2;15387:3;15328:67;:::i;:::-;15321:74;;15404:93;15493:3;15404:93;:::i;:::-;15522:2;15517:3;15513:12;15506:19;;15165:366;;;:::o;15537:419::-;15703:4;15741:2;15730:9;15726:18;15718:26;;15790:9;15784:4;15780:20;15776:1;15765:9;15761:17;15754:47;15818:131;15944:4;15818:131;:::i;:::-;15810:139;;15537:419;;;:::o;15962:224::-;16102:34;16098:1;16090:6;16086:14;16079:58;16171:7;16166:2;16158:6;16154:15;16147:32;15962:224;:::o;16192:366::-;16334:3;16355:67;16419:2;16414:3;16355:67;:::i;:::-;16348:74;;16431:93;16520:3;16431:93;:::i;:::-;16549:2;16544:3;16540:12;16533:19;;16192:366;;;:::o;16564:419::-;16730:4;16768:2;16757:9;16753:18;16745:26;;16817:9;16811:4;16807:20;16803:1;16792:9;16788:17;16781:47;16845:131;16971:4;16845:131;:::i;:::-;16837:139;;16564:419;;;:::o;16989:222::-;17129:34;17125:1;17117:6;17113:14;17106:58;17198:5;17193:2;17185:6;17181:15;17174:30;16989:222;:::o;17217:366::-;17359:3;17380:67;17444:2;17439:3;17380:67;:::i;:::-;17373:74;;17456:93;17545:3;17456:93;:::i;:::-;17574:2;17569:3;17565:12;17558:19;;17217:366;;;:::o;17589:419::-;17755:4;17793:2;17782:9;17778:18;17770:26;;17842:9;17836:4;17832:20;17828:1;17817:9;17813:17;17806:47;17870:131;17996:4;17870:131;:::i;:::-;17862:139;;17589:419;;;:::o;18014:228::-;18154:34;18150:1;18142:6;18138:14;18131:58;18223:11;18218:2;18210:6;18206:15;18199:36;18014:228;:::o;18248:366::-;18390:3;18411:67;18475:2;18470:3;18411:67;:::i;:::-;18404:74;;18487:93;18576:3;18487:93;:::i;:::-;18605:2;18600:3;18596:12;18589:19;;18248:366;;;:::o;18620:419::-;18786:4;18824:2;18813:9;18809:18;18801:26;;18873:9;18867:4;18863:20;18859:1;18848:9;18844:17;18837:47;18901:131;19027:4;18901:131;:::i;:::-;18893:139;;18620:419;;;:::o;19045:250::-;19185:34;19181:1;19173:6;19169:14;19162:58;19254:33;19249:2;19241:6;19237:15;19230:58;19045:250;:::o;19301:366::-;19443:3;19464:67;19528:2;19523:3;19464:67;:::i;:::-;19457:74;;19540:93;19629:3;19540:93;:::i;:::-;19658:2;19653:3;19649:12;19642:19;;19301:366;;;:::o;19673:419::-;19839:4;19877:2;19866:9;19862:18;19854:26;;19926:9;19920:4;19916:20;19912:1;19901:9;19897:17;19890:47;19954:131;20080:4;19954:131;:::i;:::-;19946:139;;19673:419;;;:::o;20098:178::-;20238:30;20234:1;20226:6;20222:14;20215:54;20098:178;:::o;20282:366::-;20424:3;20445:67;20509:2;20504:3;20445:67;:::i;:::-;20438:74;;20521:93;20610:3;20521:93;:::i;:::-;20639:2;20634:3;20630:12;20623:19;;20282:366;;;:::o;20654:419::-;20820:4;20858:2;20847:9;20843:18;20835:26;;20907:9;20901:4;20897:20;20893:1;20882:9;20878:17;20871:47;20935:131;21061:4;20935:131;:::i;:::-;20927:139;;20654:419;;;:::o;21079:222::-;21219:34;21215:1;21207:6;21203:14;21196:58;21288:5;21283:2;21275:6;21271:15;21264:30;21079:222;:::o;21307:366::-;21449:3;21470:67;21534:2;21529:3;21470:67;:::i;:::-;21463:74;;21546:93;21635:3;21546:93;:::i;:::-;21664:2;21659:3;21655:12;21648:19;;21307:366;;;:::o;21679:419::-;21845:4;21883:2;21872:9;21868:18;21860:26;;21932:9;21926:4;21922:20;21918:1;21907:9;21903:17;21896:47;21960:131;22086:4;21960:131;:::i;:::-;21952:139;;21679:419;;;:::o;22104:305::-;22144:3;22163:20;22181:1;22163:20;:::i;:::-;22158:25;;22197:20;22215:1;22197:20;:::i;:::-;22192:25;;22351:1;22283:66;22279:74;22276:1;22273:81;22270:107;;;22357:18;;:::i;:::-;22270:107;22401:1;22398;22394:9;22387:16;;22104:305;;;;:::o;22415:222::-;22555:34;22551:1;22543:6;22539:14;22532:58;22624:5;22619:2;22611:6;22607:15;22600:30;22415:222;:::o;22643:366::-;22785:3;22806:67;22870:2;22865:3;22806:67;:::i;:::-;22799:74;;22882:93;22971:3;22882:93;:::i;:::-;23000:2;22995:3;22991:12;22984:19;;22643:366;;;:::o;23015:419::-;23181:4;23219:2;23208:9;23204:18;23196:26;;23268:9;23262:4;23258:20;23254:1;23243:9;23239:17;23232:47;23296:131;23422:4;23296:131;:::i;:::-;23288:139;;23015:419;;;:::o;23440:191::-;23480:4;23500:20;23518:1;23500:20;:::i;:::-;23495:25;;23534:20;23552:1;23534:20;:::i;:::-;23529:25;;23573:1;23570;23567:8;23564:34;;;23578:18;;:::i;:::-;23564:34;23623:1;23620;23616:9;23608:17;;23440:191;;;;:::o;23637:229::-;23777:34;23773:1;23765:6;23761:14;23754:58;23846:12;23841:2;23833:6;23829:15;23822:37;23637:229;:::o;23872:366::-;24014:3;24035:67;24099:2;24094:3;24035:67;:::i;:::-;24028:74;;24111:93;24200:3;24111:93;:::i;:::-;24229:2;24224:3;24220:12;24213:19;;23872:366;;;:::o;24244:419::-;24410:4;24448:2;24437:9;24433:18;24425:26;;24497:9;24491:4;24487:20;24483:1;24472:9;24468:17;24461:47;24525:131;24651:4;24525:131;:::i;:::-;24517:139;;24244:419;;;:::o;24669:143::-;24726:5;24757:6;24751:13;24742:22;;24773:33;24800:5;24773:33;:::i;:::-;24669:143;;;;:::o;24818:351::-;24888:6;24937:2;24925:9;24916:7;24912:23;24908:32;24905:119;;;24943:79;;:::i;:::-;24905:119;25063:1;25088:64;25144:7;25135:6;25124:9;25120:22;25088:64;:::i;:::-;25078:74;;25034:128;24818:351;;;;:::o;25175:85::-;25220:7;25249:5;25238:16;;25175:85;;;:::o;25266:158::-;25324:9;25357:61;25375:42;25384:32;25410:5;25384:32;:::i;:::-;25375:42;:::i;:::-;25357:61;:::i;:::-;25344:74;;25266:158;;;:::o;25430:147::-;25525:45;25564:5;25525:45;:::i;:::-;25520:3;25513:58;25430:147;;:::o;25583:114::-;25650:6;25684:5;25678:12;25668:22;;25583:114;;;:::o;25703:184::-;25802:11;25836:6;25831:3;25824:19;25876:4;25871:3;25867:14;25852:29;;25703:184;;;;:::o;25893:132::-;25960:4;25983:3;25975:11;;26013:4;26008:3;26004:14;25996:22;;25893:132;;;:::o;26031:108::-;26108:24;26126:5;26108:24;:::i;:::-;26103:3;26096:37;26031:108;;:::o;26145:179::-;26214:10;26235:46;26277:3;26269:6;26235:46;:::i;:::-;26313:4;26308:3;26304:14;26290:28;;26145:179;;;;:::o;26330:113::-;26400:4;26432;26427:3;26423:14;26415:22;;26330:113;;;:::o;26479:732::-;26598:3;26627:54;26675:5;26627:54;:::i;:::-;26697:86;26776:6;26771:3;26697:86;:::i;:::-;26690:93;;26807:56;26857:5;26807:56;:::i;:::-;26886:7;26917:1;26902:284;26927:6;26924:1;26921:13;26902:284;;;27003:6;26997:13;27030:63;27089:3;27074:13;27030:63;:::i;:::-;27023:70;;27116:60;27169:6;27116:60;:::i;:::-;27106:70;;26962:224;26949:1;26946;26942:9;26937:14;;26902:284;;;26906:14;27202:3;27195:10;;26603:608;;;26479:732;;;;:::o;27217:831::-;27480:4;27518:3;27507:9;27503:19;27495:27;;27532:71;27600:1;27589:9;27585:17;27576:6;27532:71;:::i;:::-;27613:80;27689:2;27678:9;27674:18;27665:6;27613:80;:::i;:::-;27740:9;27734:4;27730:20;27725:2;27714:9;27710:18;27703:48;27768:108;27871:4;27862:6;27768:108;:::i;:::-;27760:116;;27886:72;27954:2;27943:9;27939:18;27930:6;27886:72;:::i;:::-;27968:73;28036:3;28025:9;28021:19;28012:6;27968:73;:::i;:::-;27217:831;;;;;;;;:::o;28054:180::-;28102:77;28099:1;28092:88;28199:4;28196:1;28189:15;28223:4;28220:1;28213:15;28240:185;28280:1;28297:20;28315:1;28297:20;:::i;:::-;28292:25;;28331:20;28349:1;28331:20;:::i;:::-;28326:25;;28370:1;28360:35;;28375:18;;:::i;:::-;28360:35;28417:1;28414;28410:9;28405:14;;28240:185;;;;:::o;28431:177::-;28571:29;28567:1;28559:6;28555:14;28548:53;28431:177;:::o;28614:366::-;28756:3;28777:67;28841:2;28836:3;28777:67;:::i;:::-;28770:74;;28853:93;28942:3;28853:93;:::i;:::-;28971:2;28966:3;28962:12;28955:19;;28614:366;;;:::o;28986:419::-;29152:4;29190:2;29179:9;29175:18;29167:26;;29239:9;29233:4;29229:20;29225:1;29214:9;29210:17;29203:47;29267:131;29393:4;29267:131;:::i;:::-;29259:139;;28986:419;;;:::o;29411:348::-;29451:7;29474:20;29492:1;29474:20;:::i;:::-;29469:25;;29508:20;29526:1;29508:20;:::i;:::-;29503:25;;29696:1;29628:66;29624:74;29621:1;29618:81;29613:1;29606:9;29599:17;29595:105;29592:131;;;29703:18;;:::i;:::-;29592:131;29751:1;29748;29744:9;29733:20;;29411:348;;;;:::o;29765:220::-;29905:34;29901:1;29893:6;29889:14;29882:58;29974:3;29969:2;29961:6;29957:15;29950:28;29765:220;:::o;29991:366::-;30133:3;30154:67;30218:2;30213:3;30154:67;:::i;:::-;30147:74;;30230:93;30319:3;30230:93;:::i;:::-;30348:2;30343:3;30339:12;30332:19;;29991:366;;;:::o;30363:419::-;30529:4;30567:2;30556:9;30552:18;30544:26;;30616:9;30610:4;30606:20;30602:1;30591:9;30587:17;30580:47;30644:131;30770:4;30644:131;:::i;:::-;30636:139;;30363:419;;;:::o

Swarm Source

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