ETH Price: $2,390.26 (+2.79%)

Token

Novak Protocol (NOV)
 

Overview

Max Total Supply

1,000,000 NOV

Holders

14

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
26,190 NOV

Value
$0.00
0x09dbb48a1e7f803a7d028e9d8410848ea4e19ec2
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:
Novak

Compiler Version
v0.8.20+commit.a1b79de6

Optimization Enabled:
No with 200 runs

Other Settings:
paris EvmVersion
File 1 of 2 : Novak.sol
/*

 __    _  _______  __   __  _______  ___   _ 
|  |  | ||       ||  | |  ||   _   ||   | | |
|   |_| ||   _   ||  |_|  ||  |_|  ||   |_| |
|       ||  | |  ||       ||       ||      _|
|  _    ||  |_|  ||       ||       ||     |_ 
| | |   ||       | |     | |   _   ||    _  |
|_|  |__||_______|  |___|  |__| |__||___| |_|

Telegram:   https://t.me/novakprotocol
Docs:       https://docs.novakprotocol.com/
Website:    https://www.novakprotocol.com/
Twitter:    https://twitter.com/NovakProtocol

Contract serves as the Novak Protocol token and
the yield controller module. yieldController is
a variable set in the NMMF.sol, NUSDY.sol, and
NUSG.sol contracts. The yieldController manages
capital trustlessly, efficiently maximizing
yield.

*/

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

import "@openzeppelin/contracts/token/ERC20/IERC20.sol";

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

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

contract Novak is IERC20 {
    string public constant _name = "Novak Protocol";
    string public constant _symbol = "NOV";
    uint8 public constant _decimals = 9;

    uint256 public constant _totalSupply = 1_000_000 * (10 ** _decimals);

    mapping (address => uint256) public _balances;
    mapping (address => mapping (address => uint256)) public _allowances;

    IRouter public constant router = IRouter(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);

    mapping (address => bool) public whitelist;

    mapping (address => bool) public noTax;
    mapping (address => bool) public dexPair;

    uint256 public buyFee = 300;
    uint256 public sellFee = 400;
    bool public halfLiq;

    bool public taxes = true;
    bool public antibot = true;
    bool public swapping;

    uint256 private _tokens = 0;

    uint256 public swapTrigger = 0;
    uint256 public swapThreshold = _totalSupply / 40000;

    bool private _swapping;

    address public owner;

    modifier onlyOwner() {
        require(msg.sender == owner, "Not owner");
        _;
    }

    modifier intraswap() {
        _swapping = true;
        _;
        _swapping = false;
    }

    constructor () {
        owner = 0xF937215B482c90a61A5ac7f16c65Fe35D558F362;

        address _pair = IFactory(router.factory()).createPair(0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2, address(this));

        _allowances[address(this)][address(router)] = _totalSupply;

        whitelist[0xF937215B482c90a61A5ac7f16c65Fe35D558F362] = true;
        whitelist[_pair] = true;

        noTax[0xF937215B482c90a61A5ac7f16c65Fe35D558F362] = true;
        dexPair[_pair] = true;

        approve(address(router), _totalSupply);
        approve(address(_pair), _totalSupply);

        _balances[0xF937215B482c90a61A5ac7f16c65Fe35D558F362] = _totalSupply;
        emit Transfer(address(0), 0xF937215B482c90a61A5ac7f16c65Fe35D558F362, _totalSupply);
    }

    function totalSupply() external pure override returns (uint256) {
        return _totalSupply;
    }

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

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

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

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

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

    function approve(address spender, uint256 amount) public override returns (bool) {
        _allowances[msg.sender][spender] = amount;
        emit Approval(msg.sender, spender, amount);
        return true;
    }

    function approveMax(address spender) external returns (bool) {
        return approve(spender, _totalSupply);
    }

    function transfer(address recipient, uint256 amount) external override returns (bool) {
        return _transferFrom(msg.sender, recipient, amount);
    }

    function transferFrom(address sender, address recipient, uint256 amount) external override returns (bool) {
        if (_allowances[sender][msg.sender] != _totalSupply) {
            require(_allowances[sender][msg.sender] >= amount, "Insufficient allowance");
            _allowances[sender][msg.sender] = _allowances[sender][msg.sender] - amount;
        }

        return _transferFrom(sender, recipient, amount);
    }

    function _transferFrom(address sender, address recipient, uint256 amount) private returns (bool) {
        if (_swapping) return _basicTransfer(sender, recipient, amount);
        require(swapping || sender == owner);
        if (antibot) require(whitelist[sender] || _balances[recipient] + amount < 100_000_000_000_000, "Antibot enabled");

        address routerAddress = address(router);
        bool _sell = dexPair[recipient] || recipient == routerAddress;

        if (_sell && amount >= swapTrigger && _tokens > 0) {
            if (!dexPair[msg.sender] && !_swapping && _balances[address(this)] >= swapThreshold) _sellTaxedTokens();
        }

        require(_balances[sender] >= amount, "Insufficient balance");
        _balances[sender] = _balances[sender] - amount;

        uint256 amountReceived = (((dexPair[sender] || sender == address(router)) || (dexPair[recipient]|| recipient == address(router))) ? !noTax[sender] && !noTax[recipient] : false) ? _collectTaxedTokens(sender, recipient, amount) : amount;

        _balances[recipient] = _balances[recipient] + amountReceived;

        emit Transfer(sender, recipient, amountReceived);
        return true;
    }

    function _basicTransfer(address sender, address recipient, uint256 amount) private returns (bool) {
        require(_balances[sender] >= amount, "Insufficient balance");
        _balances[sender] = _balances[sender] - amount;
        _balances[recipient] = _balances[recipient] + amount;
        return true;
    }

    function _collectTaxedTokens(address sender, address receiver, uint256 amount) private returns (uint256) {
        bool _sell = dexPair[receiver] || receiver == address(router);
        uint256 _fee = _sell ? sellFee : buyFee;
        uint256 _tax = amount * _fee / 10000;

        if (_fee > 0) {
            if (_sell) {
                if (sellFee > 0) _tokens += _tax * sellFee / _fee;
            } else {
                if (buyFee > 0) _tokens += _tax * buyFee / _fee;
            }
        }

        _balances[address(this)] = _balances[address(this)] + _tax;
        emit Transfer(sender, address(this), _tax);

        return amount - _tax;
    }

    function _sellTaxedTokens() private intraswap {
        uint256 _tokensHalf = _tokens / 2;
        uint256 _balanceSnapshot = address(this).balance;

        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = 0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2;
        router.swapExactTokensForETHSupportingFeeOnTransferTokens(balanceOf(address(this)) - _tokensHalf, 0, path, address(this), block.timestamp);

        uint256 _tax = (address(this).balance - _balanceSnapshot);
        if (halfLiq) _tax = _tax / 2;

        if (_tax > 0) router.addLiquidityETH{value: _tax}(address(this), _tokensHalf, 0, 0, 0x000000000000000000000000000000000000dEaD, block.timestamp);

        _tokens = 0;
    }

    function taxesDisabled() external view returns (bool) {
        return !taxes;
    }

    function disableTaxes() external onlyOwner {
        require(taxes);
        taxes = false;
        buyFee = 0;
        sellFee = 0;
    }

    function antibotDisabled() external view returns (bool) {
        return !antibot;
    }

    function disableAntibot() external onlyOwner {
        require(antibot);
        antibot = false;
    }

    function swappingEnabled() external view returns (bool) {
        return swapping;
    }

    function abolishTaxation() external onlyOwner {
        taxes = false;
        buyFee = 0;
        sellFee = 0;
        selfdestruct(payable(address(this)));
    }

    function enableSwapping() external onlyOwner {
        require(!swapping);
        swapping = true;
    }

    function addDexPair(address _pair) external onlyOwner {
        dexPair[_pair] = true;
    }

    function getDexPair(address _pair) external view returns (bool) {
        return dexPair[_pair];
    }

    function removeNoTax(address _wallet) external onlyOwner {
        noTax[_wallet] = false;
    }

    function getNoTax(address _wallet) external view returns (bool) {
        return noTax[_wallet];
    }

    function changeFees(uint256 _buyFee, uint256 _sellFee, bool _halfLiq, uint256 _swapTrigger, uint256 _swapThreshold) external onlyOwner {
        if (taxes) {
            buyFee = _buyFee;
            sellFee = _sellFee;
            halfLiq = _halfLiq;
        }
        swapTrigger = _swapTrigger;
        swapThreshold = _swapThreshold;
    }

    function rescue(address token) external onlyOwner {
        if (token == 0x0000000000000000000000000000000000000000) {
            payable(msg.sender).call{value: address(this).balance}("");
        } else {
            IERC20 Token = IERC20(token);
            Token.transfer(msg.sender, Token.balanceOf(address(this)));
        }
    }

    receive() external payable {}
}

File 2 of 2 : IERC20.sol
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v5.0.0) (token/ERC20/IERC20.sol)

pragma solidity ^0.8.20;

/**
 * @dev Interface of the ERC20 standard as defined in the EIP.
 */
interface IERC20 {
    /**
     * @dev Emitted when `value` tokens are moved from one account (`from`) to
     * another (`to`).
     *
     * Note that `value` may be zero.
     */
    event Transfer(address indexed from, address indexed to, uint256 value);

    /**
     * @dev Emitted when the allowance of a `spender` for an `owner` is set by
     * a call to {approve}. `value` is the new allowance.
     */
    event Approval(address indexed owner, address indexed spender, uint256 value);

    /**
     * @dev Returns the value of tokens in existence.
     */
    function totalSupply() external view returns (uint256);

    /**
     * @dev Returns the value of tokens owned by `account`.
     */
    function balanceOf(address account) external view returns (uint256);

    /**
     * @dev Moves a `value` amount of tokens from the caller's account to `to`.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * Emits a {Transfer} event.
     */
    function transfer(address to, uint256 value) external returns (bool);

    /**
     * @dev Returns the remaining number of tokens that `spender` will be
     * allowed to spend on behalf of `owner` through {transferFrom}. This is
     * zero by default.
     *
     * This value changes when {approve} or {transferFrom} are called.
     */
    function allowance(address owner, address spender) external view returns (uint256);

    /**
     * @dev Sets a `value` amount of tokens as the allowance of `spender` over the
     * caller's tokens.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * IMPORTANT: Beware that changing an allowance with this method brings the risk
     * that someone may use both the old and the new allowance by unfortunate
     * transaction ordering. One possible solution to mitigate this race
     * condition is to first reduce the spender's allowance to 0 and set the
     * desired value afterwards:
     * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729
     *
     * Emits an {Approval} event.
     */
    function approve(address spender, uint256 value) external returns (bool);

    /**
     * @dev Moves a `value` amount of tokens from `from` to `to` using the
     * allowance mechanism. `value` is then deducted from the caller's
     * allowance.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * Emits a {Transfer} event.
     */
    function transferFrom(address from, address to, uint256 value) external returns (bool);
}

Settings
{
  "evmVersion": "paris",
  "optimizer": {
    "enabled": false,
    "runs": 200
  },
  "outputSelection": {
    "*": {
      "*": [
        "evm.bytecode",
        "evm.deployedBytecode",
        "devdoc",
        "userdoc",
        "metadata",
        "abi"
      ]
    }
  },
  "libraries": {}
}

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":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"}],"name":"_allowances","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_balances","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"abolishTaxation","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_pair","type":"address"}],"name":"addDexPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"antibot","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"antibotDisabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"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":"spender","type":"address"}],"name":"approveMax","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_buyFee","type":"uint256"},{"internalType":"uint256","name":"_sellFee","type":"uint256"},{"internalType":"bool","name":"_halfLiq","type":"bool"},{"internalType":"uint256","name":"_swapTrigger","type":"uint256"},{"internalType":"uint256","name":"_swapThreshold","type":"uint256"}],"name":"changeFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"dexPair","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"disableAntibot","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"disableTaxes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"enableSwapping","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_pair","type":"address"}],"name":"getDexPair","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_wallet","type":"address"}],"name":"getNoTax","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"halfLiq","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"noTax","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_wallet","type":"address"}],"name":"removeNoTax","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"}],"name":"rescue","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"router","outputs":[{"internalType":"contract IRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapTrigger","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapping","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swappingEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"taxes","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"taxesDisabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"whitelist","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

608060405261012c6005556101906006556001600760016101000a81548160ff0219169083151502179055506001600760026101000a81548160ff02191690831515021790555060006008556000600955619c406009600a6200006391906200085f565b620f4240620000739190620008b0565b6200007f91906200092a565b600a553480156200008f57600080fd5b5073f937215b482c90a61a5ac7f16c65fe35d558f362600b60016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000147573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200016d9190620009cc565b73ffffffffffffffffffffffffffffffffffffffff1663c9c6539673c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2306040518363ffffffff1660e01b8152600401620001bd92919062000a0f565b6020604051808303816000875af1158015620001dd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002039190620009cc565b90506009600a6200021591906200085f565b620f4240620002259190620008b0565b600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555060016002600073f937215b482c90a61a5ac7f16c65fe35d558f36273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060016003600073f937215b482c90a61a5ac7f16c65fe35d558f36273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555062000486737a250d5630b4cf539739df2c5dacb4c659f2488d6009600a6200046a91906200085f565b620f42406200047a9190620008b0565b620005d160201b60201c565b50620004b8816009600a6200049c91906200085f565b620f4240620004ac9190620008b0565b620005d160201b60201c565b506009600a620004c991906200085f565b620f4240620004d99190620008b0565b60008073f937215b482c90a61a5ac7f16c65fe35d558f36273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555073f937215b482c90a61a5ac7f16c65fe35d558f36273ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6009600a620005a391906200085f565b620f4240620005b39190620008b0565b604051620005c2919062000a4d565b60405180910390a35062000a6a565b600081600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92584604051620006b3919062000a4d565b60405180910390a36001905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b600185111562000753578086048111156200072b576200072a620006c5565b5b60018516156200073b5780820291505b80810290506200074b85620006f4565b94506200070b565b94509492505050565b6000826200076e576001905062000841565b816200077e576000905062000841565b8160018114620007975760028114620007a257620007d8565b600191505062000841565b60ff841115620007b757620007b6620006c5565b5b8360020a915084821115620007d157620007d0620006c5565b5b5062000841565b5060208310610133831016604e8410600b8410161715620008125782820a9050838111156200080c576200080b620006c5565b5b62000841565b62000821848484600162000701565b925090508184048111156200083b576200083a620006c5565b5b81810290505b9392505050565b6000819050919050565b600060ff82169050919050565b60006200086c8262000848565b9150620008798362000852565b9250620008a87fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84846200075c565b905092915050565b6000620008bd8262000848565b9150620008ca8362000848565b9250828202620008da8162000848565b91508282048414831517620008f457620008f3620006c5565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000620009378262000848565b9150620009448362000848565b925082620009575762000956620008fb565b5b828204905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000620009948262000967565b9050919050565b620009a68162000987565b8114620009b257600080fd5b50565b600081519050620009c6816200099b565b92915050565b600060208284031215620009e557620009e462000962565b5b6000620009f584828501620009b5565b91505092915050565b62000a098162000987565b82525050565b600060408201905062000a266000830185620009fe565b62000a356020830184620009fe565b9392505050565b62000a478162000848565b82525050565b600060208201905062000a64600083018462000a3c565b92915050565b61343e8062000a7a6000396000f3fe6080604052600436106102555760003560e01c806370a0823111610139578063a9059cbb116100b6578063dd62ed3e1161007a578063dd62ed3e146108f1578063e6ddf4031461092e578063e7a0699b14610957578063e888d09314610980578063f887ea40146109ab578063fd6d0eb3146109d65761025c565b8063a9059cbb1461081c578063aeb5556914610859578063b09f126614610884578063d28d8852146108af578063d523e092146108da5761025c565b80638b750c56116100fd5780638b750c56146107355780638da5cb5b1461074c57806395d89b41146107775780639b19251a146107a2578063a6a94c01146107df5761025c565b806370a0823114610650578063728f8eea1461068d578063774cb9ff146106b8578063808c405c146106cf578063839006f21461070c5761025c565b80632b14ca56116101d25780634706240211610196578063470624021461051a5780634cf74be514610545578063571ac8b01461057057806361c675c4146105ad5780636ebcf607146105ea5780636fd7cd0b146106275761025c565b80632b14ca5614610443578063305c4c801461046e578063313ce5671461049957806332424aa3146104c45780633eaaf86b146104ef5761025c565b80630bda7cd7116102195780630bda7cd714610348578063151ebae6146103735780631732cded146103b057806318160ddd146103db57806323b872dd146104065761025c565b8063024c2ddd146102615780630445b6671461029e57806306fdde03146102c957806307af33c6146102f4578063095ea7b31461030b5761025c565b3661025c57005b600080fd5b34801561026d57600080fd5b506102886004803603810190610283919061287f565b610a01565b60405161029591906128d8565b60405180910390f35b3480156102aa57600080fd5b506102b3610a26565b6040516102c091906128d8565b60405180910390f35b3480156102d557600080fd5b506102de610a2c565b6040516102eb9190612983565b60405180910390f35b34801561030057600080fd5b50610309610a69565b005b34801561031757600080fd5b50610332600480360381019061032d91906129d1565b610b30565b60405161033f9190612a2c565b60405180910390f35b34801561035457600080fd5b5061035d610c22565b60405161036a91906128d8565b60405180910390f35b34801561037f57600080fd5b5061039a60048036038101906103959190612a47565b610c28565b6040516103a79190612a2c565b60405180910390f35b3480156103bc57600080fd5b506103c5610c48565b6040516103d29190612a2c565b60405180910390f35b3480156103e757600080fd5b506103f0610c5b565b6040516103fd91906128d8565b60405180910390f35b34801561041257600080fd5b5061042d60048036038101906104289190612a74565b610c7e565b60405161043a9190612a2c565b60405180910390f35b34801561044f57600080fd5b50610458610efa565b60405161046591906128d8565b60405180910390f35b34801561047a57600080fd5b50610483610f00565b6040516104909190612a2c565b60405180910390f35b3480156104a557600080fd5b506104ae610f13565b6040516104bb9190612ae3565b60405180910390f35b3480156104d057600080fd5b506104d9610f1c565b6040516104e69190612ae3565b60405180910390f35b3480156104fb57600080fd5b50610504610f21565b60405161051191906128d8565b60405180910390f35b34801561052657600080fd5b5061052f610f40565b60405161053c91906128d8565b60405180910390f35b34801561055157600080fd5b5061055a610f46565b6040516105679190612a2c565b60405180910390f35b34801561057c57600080fd5b5061059760048036038101906105929190612a47565b610f59565b6040516105a49190612a2c565b60405180910390f35b3480156105b957600080fd5b506105d460048036038101906105cf9190612a47565b610f87565b6040516105e19190612a2c565b60405180910390f35b3480156105f657600080fd5b50610611600480360381019061060c9190612a47565b610fdd565b60405161061e91906128d8565b60405180910390f35b34801561063357600080fd5b5061064e60048036038101906106499190612a47565b610ff5565b005b34801561065c57600080fd5b5061067760048036038101906106729190612a47565b6110e0565b60405161068491906128d8565b60405180910390f35b34801561069957600080fd5b506106a2611128565b6040516106af9190612a2c565b60405180910390f35b3480156106c457600080fd5b506106cd61113b565b005b3480156106db57600080fd5b506106f660048036038101906106f19190612a47565b61120f565b6040516107039190612a2c565b60405180910390f35b34801561071857600080fd5b50610733600480360381019061072e9190612a47565b611265565b005b34801561074157600080fd5b5061074a611499565b005b34801561075857600080fd5b5061076161155f565b60405161076e9190612b0d565b60405180910390f35b34801561078357600080fd5b5061078c611585565b6040516107999190612983565b60405180910390f35b3480156107ae57600080fd5b506107c960048036038101906107c49190612a47565b6115c2565b6040516107d69190612a2c565b60405180910390f35b3480156107eb57600080fd5b5061080660048036038101906108019190612a47565b6115e2565b6040516108139190612a2c565b60405180910390f35b34801561082857600080fd5b50610843600480360381019061083e91906129d1565b611602565b6040516108509190612a2c565b60405180910390f35b34801561086557600080fd5b5061086e611617565b60405161087b9190612a2c565b60405180910390f35b34801561089057600080fd5b5061089961162e565b6040516108a69190612983565b60405180910390f35b3480156108bb57600080fd5b506108c4611667565b6040516108d19190612983565b60405180910390f35b3480156108e657600080fd5b506108ef6116a0565b005b3480156108fd57600080fd5b506109186004803603810190610913919061287f565b611776565b60405161092591906128d8565b60405180910390f35b34801561093a57600080fd5b5061095560048036038101906109509190612a47565b6117fd565b005b34801561096357600080fd5b5061097e60048036038101906109799190612b54565b6118e8565b005b34801561098c57600080fd5b506109956119cb565b6040516109a29190612a2c565b60405180910390f35b3480156109b757600080fd5b506109c06119e3565b6040516109cd9190612c2e565b60405180910390f35b3480156109e257600080fd5b506109eb6119fb565b6040516109f89190612a2c565b60405180910390f35b6001602052816000526040600020602052806000526040600020600091509150505481565b600a5481565b60606040518060400160405280600e81526020017f4e6f76616b2050726f746f636f6c000000000000000000000000000000000000815250905090565b600b60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610af9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610af090612c95565b60405180910390fd5b600760039054906101000a900460ff1615610b1357600080fd5b6001600760036101000a81548160ff021916908315150217905550565b600081600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92584604051610c1091906128d8565b60405180910390a36001905092915050565b60095481565b60036020528060005260406000206000915054906101000a900460ff1681565b600760039054906101000a900460ff1681565b60006009600a610c6b9190612e17565b620f4240610c799190612e62565b905090565b60006009600a610c8e9190612e17565b620f4240610c9c9190612e62565b600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414610ee65781600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015610ddd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dd490612ef0565b60405180910390fd5b81600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610e659190612f10565b600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b610ef1848484611a13565b90509392505050565b60065481565b600760029054906101000a900460ff1681565b60006009905090565b600981565b6009600a610f2f9190612e17565b620f4240610f3d9190612e62565b81565b60055481565b600760009054906101000a900460ff1681565b6000610f80826009600a610f6d9190612e17565b620f4240610f7b9190612e62565b610b30565b9050919050565b6000600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b60006020528060005260406000206000915090505481565b600b60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611085576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161107c90612c95565b60405180910390fd5b6000600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600760019054906101000a900460ff1681565b600b60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146111cb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111c290612c95565b60405180910390fd5b6000600760016101000a81548160ff021916908315150217905550600060058190555060006006819055503073ffffffffffffffffffffffffffffffffffffffff16ff5b6000600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b600b60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146112f5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112ec90612c95565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611397573373ffffffffffffffffffffffffffffffffffffffff164760405161134d90612f75565b60006040518083038185875af1925050503d806000811461138a576040519150601f19603f3d011682016040523d82523d6000602084013e61138f565b606091505b505050611496565b60008190508073ffffffffffffffffffffffffffffffffffffffff1663a9059cbb338373ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016113f29190612b0d565b602060405180830381865afa15801561140f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114339190612f9f565b6040518363ffffffff1660e01b8152600401611450929190612fcc565b6020604051808303816000875af115801561146f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611493919061300a565b50505b50565b600b60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611529576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161152090612c95565b60405180910390fd5b600760029054906101000a900460ff1661154257600080fd5b6000600760026101000a81548160ff021916908315150217905550565b600b60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60606040518060400160405280600381526020017f4e4f560000000000000000000000000000000000000000000000000000000000815250905090565b60026020528060005260406000206000915054906101000a900460ff1681565b60046020528060005260406000206000915054906101000a900460ff1681565b600061160f338484611a13565b905092915050565b6000600760039054906101000a900460ff16905090565b6040518060400160405280600381526020017f4e4f56000000000000000000000000000000000000000000000000000000000081525081565b6040518060400160405280600e81526020017f4e6f76616b2050726f746f636f6c00000000000000000000000000000000000081525081565b600b60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611730576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161172790612c95565b60405180910390fd5b600760019054906101000a900460ff1661174957600080fd5b6000600760016101000a81548160ff02191690831515021790555060006005819055506000600681905550565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600b60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461188d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161188490612c95565b60405180910390fd5b6001600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b600b60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611978576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161196f90612c95565b60405180910390fd5b600760019054906101000a900460ff16156119b657846005819055508360068190555082600760006101000a81548160ff0219169083151502179055505b8160098190555080600a819055505050505050565b6000600760029054906101000a900460ff1615905090565b737a250d5630b4cf539739df2c5dacb4c659f2488d81565b6000600760019054906101000a900460ff1615905090565b6000600b60009054906101000a900460ff1615611a3c57611a35848484612138565b9050612131565b600760039054906101000a900460ff1680611aa45750600b60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16145b611aad57600080fd5b600760029054906101000a900460ff1615611ba857600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680611b685750655af3107a4000826000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611b669190613037565b105b611ba7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b9e906130b7565b60405180910390fd5b5b6000737a250d5630b4cf539739df2c5dacb4c659f2488d90506000600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680611c4657508173ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16145b9050808015611c5757506009548410155b8015611c6557506000600854115b15611d2c57600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015611cd15750600b60009054906101000a900460ff16155b8015611d1d5750600a546000803073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410155b15611d2b57611d2a6122de565b5b5b836000808873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015611dad576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611da490613123565b60405180910390fd5b836000808873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611df79190612f10565b6000808873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600460008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680611ed25750737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff16145b80611f705750600460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680611f6f5750737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff16145b5b611f7b576000612020565b600360008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615801561201f5750600360008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b5b61202a5784612036565b6120358787876125b5565b5b9050806000808873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546120829190613037565b6000808873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161212191906128d8565b60405180910390a3600193505050505b9392505050565b6000816000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410156121bb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121b290613123565b60405180910390fd5b816000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546122059190612f10565b6000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546122919190613037565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600190509392505050565b6001600b60006101000a81548160ff0219169083151502179055506000600260085461230a9190613172565b905060004790506000600267ffffffffffffffff81111561232e5761232d6131a3565b5b60405190808252806020026020018201604052801561235c5781602001602082028036833780820191505090505b5090503081600081518110612374576123736131d2565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505073c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2816001815181106123d7576123d66131d2565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663791ac9478461244b306110e0565b6124559190612f10565b60008430426040518663ffffffff1660e01b815260040161247a9594939291906132fa565b600060405180830381600087803b15801561249457600080fd5b505af11580156124a8573d6000803e3d6000fd5b50505050600082476124ba9190612f10565b9050600760009054906101000a900460ff16156124e1576002816124de9190613172565b90505b600081111561258c57737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663f305d71982308760008061dead426040518863ffffffff1660e01b815260040161254596959493929190613354565b60606040518083038185885af1158015612563573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061258891906133b5565b5050505b6000600881905550505050506000600b60006101000a81548160ff021916908315150217905550565b600080600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168061264f5750737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16145b905060008161266057600554612664565b6006545b9050600061271082866126779190612e62565b6126819190613172565b905060008211156127135782156126d457600060065411156126cf5781600654826126ac9190612e62565b6126b69190613172565b600860008282546126c79190613037565b925050819055505b612712565b600060055411156127115781600554826126ee9190612e62565b6126f89190613172565b600860008282546127099190613037565b925050819055505b5b5b806000803073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461275d9190613037565b6000803073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516127fc91906128d8565b60405180910390a380856128109190612f10565b93505050509392505050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061284c82612821565b9050919050565b61285c81612841565b811461286757600080fd5b50565b60008135905061287981612853565b92915050565b600080604083850312156128965761289561281c565b5b60006128a48582860161286a565b92505060206128b58582860161286a565b9150509250929050565b6000819050919050565b6128d2816128bf565b82525050565b60006020820190506128ed60008301846128c9565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561292d578082015181840152602081019050612912565b60008484015250505050565b6000601f19601f8301169050919050565b6000612955826128f3565b61295f81856128fe565b935061296f81856020860161290f565b61297881612939565b840191505092915050565b6000602082019050818103600083015261299d818461294a565b905092915050565b6129ae816128bf565b81146129b957600080fd5b50565b6000813590506129cb816129a5565b92915050565b600080604083850312156129e8576129e761281c565b5b60006129f68582860161286a565b9250506020612a07858286016129bc565b9150509250929050565b60008115159050919050565b612a2681612a11565b82525050565b6000602082019050612a416000830184612a1d565b92915050565b600060208284031215612a5d57612a5c61281c565b5b6000612a6b8482850161286a565b91505092915050565b600080600060608486031215612a8d57612a8c61281c565b5b6000612a9b8682870161286a565b9350506020612aac8682870161286a565b9250506040612abd868287016129bc565b9150509250925092565b600060ff82169050919050565b612add81612ac7565b82525050565b6000602082019050612af86000830184612ad4565b92915050565b612b0781612841565b82525050565b6000602082019050612b226000830184612afe565b92915050565b612b3181612a11565b8114612b3c57600080fd5b50565b600081359050612b4e81612b28565b92915050565b600080600080600060a08688031215612b7057612b6f61281c565b5b6000612b7e888289016129bc565b9550506020612b8f888289016129bc565b9450506040612ba088828901612b3f565b9350506060612bb1888289016129bc565b9250506080612bc2888289016129bc565b9150509295509295909350565b6000819050919050565b6000612bf4612bef612bea84612821565b612bcf565b612821565b9050919050565b6000612c0682612bd9565b9050919050565b6000612c1882612bfb565b9050919050565b612c2881612c0d565b82525050565b6000602082019050612c436000830184612c1f565b92915050565b7f4e6f74206f776e65720000000000000000000000000000000000000000000000600082015250565b6000612c7f6009836128fe565b9150612c8a82612c49565b602082019050919050565b60006020820190508181036000830152612cae81612c72565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b6001851115612d3b57808604811115612d1757612d16612cb5565b5b6001851615612d265780820291505b8081029050612d3485612ce4565b9450612cfb565b94509492505050565b600082612d545760019050612e10565b81612d625760009050612e10565b8160018114612d785760028114612d8257612db1565b6001915050612e10565b60ff841115612d9457612d93612cb5565b5b8360020a915084821115612dab57612daa612cb5565b5b50612e10565b5060208310610133831016604e8410600b8410161715612de65782820a905083811115612de157612de0612cb5565b5b612e10565b612df38484846001612cf1565b92509050818404811115612e0a57612e09612cb5565b5b81810290505b9392505050565b6000612e22826128bf565b9150612e2d83612ac7565b9250612e5a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484612d44565b905092915050565b6000612e6d826128bf565b9150612e78836128bf565b9250828202612e86816128bf565b91508282048414831517612e9d57612e9c612cb5565b5b5092915050565b7f496e73756666696369656e7420616c6c6f77616e636500000000000000000000600082015250565b6000612eda6016836128fe565b9150612ee582612ea4565b602082019050919050565b60006020820190508181036000830152612f0981612ecd565b9050919050565b6000612f1b826128bf565b9150612f26836128bf565b9250828203905081811115612f3e57612f3d612cb5565b5b92915050565b600081905092915050565b50565b6000612f5f600083612f44565b9150612f6a82612f4f565b600082019050919050565b6000612f8082612f52565b9150819050919050565b600081519050612f99816129a5565b92915050565b600060208284031215612fb557612fb461281c565b5b6000612fc384828501612f8a565b91505092915050565b6000604082019050612fe16000830185612afe565b612fee60208301846128c9565b9392505050565b60008151905061300481612b28565b92915050565b6000602082840312156130205761301f61281c565b5b600061302e84828501612ff5565b91505092915050565b6000613042826128bf565b915061304d836128bf565b925082820190508082111561306557613064612cb5565b5b92915050565b7f416e7469626f7420656e61626c65640000000000000000000000000000000000600082015250565b60006130a1600f836128fe565b91506130ac8261306b565b602082019050919050565b600060208201905081810360008301526130d081613094565b9050919050565b7f496e73756666696369656e742062616c616e6365000000000000000000000000600082015250565b600061310d6014836128fe565b9150613118826130d7565b602082019050919050565b6000602082019050818103600083015261313c81613100565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061317d826128bf565b9150613188836128bf565b92508261319857613197613143565b5b828204905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000819050919050565b600061322661322161321c84613201565b612bcf565b6128bf565b9050919050565b6132368161320b565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61327181612841565b82525050565b60006132838383613268565b60208301905092915050565b6000602082019050919050565b60006132a78261323c565b6132b18185613247565b93506132bc83613258565b8060005b838110156132ed5781516132d48882613277565b97506132df8361328f565b9250506001810190506132c0565b5085935050505092915050565b600060a08201905061330f60008301886128c9565b61331c602083018761322d565b818103604083015261332e818661329c565b905061333d6060830185612afe565b61334a60808301846128c9565b9695505050505050565b600060c0820190506133696000830189612afe565b61337660208301886128c9565b613383604083018761322d565b613390606083018661322d565b61339d6080830185612afe565b6133aa60a08301846128c9565b979650505050505050565b6000806000606084860312156133ce576133cd61281c565b5b60006133dc86828701612f8a565b93505060206133ed86828701612f8a565b92505060406133fe86828701612f8a565b915050925092509256fea2646970667358221220078269f236212532029d9f91d6ddc753463515909ed10ccb0d8336343339bfbb64736f6c63430008140033

Deployed Bytecode

0x6080604052600436106102555760003560e01c806370a0823111610139578063a9059cbb116100b6578063dd62ed3e1161007a578063dd62ed3e146108f1578063e6ddf4031461092e578063e7a0699b14610957578063e888d09314610980578063f887ea40146109ab578063fd6d0eb3146109d65761025c565b8063a9059cbb1461081c578063aeb5556914610859578063b09f126614610884578063d28d8852146108af578063d523e092146108da5761025c565b80638b750c56116100fd5780638b750c56146107355780638da5cb5b1461074c57806395d89b41146107775780639b19251a146107a2578063a6a94c01146107df5761025c565b806370a0823114610650578063728f8eea1461068d578063774cb9ff146106b8578063808c405c146106cf578063839006f21461070c5761025c565b80632b14ca56116101d25780634706240211610196578063470624021461051a5780634cf74be514610545578063571ac8b01461057057806361c675c4146105ad5780636ebcf607146105ea5780636fd7cd0b146106275761025c565b80632b14ca5614610443578063305c4c801461046e578063313ce5671461049957806332424aa3146104c45780633eaaf86b146104ef5761025c565b80630bda7cd7116102195780630bda7cd714610348578063151ebae6146103735780631732cded146103b057806318160ddd146103db57806323b872dd146104065761025c565b8063024c2ddd146102615780630445b6671461029e57806306fdde03146102c957806307af33c6146102f4578063095ea7b31461030b5761025c565b3661025c57005b600080fd5b34801561026d57600080fd5b506102886004803603810190610283919061287f565b610a01565b60405161029591906128d8565b60405180910390f35b3480156102aa57600080fd5b506102b3610a26565b6040516102c091906128d8565b60405180910390f35b3480156102d557600080fd5b506102de610a2c565b6040516102eb9190612983565b60405180910390f35b34801561030057600080fd5b50610309610a69565b005b34801561031757600080fd5b50610332600480360381019061032d91906129d1565b610b30565b60405161033f9190612a2c565b60405180910390f35b34801561035457600080fd5b5061035d610c22565b60405161036a91906128d8565b60405180910390f35b34801561037f57600080fd5b5061039a60048036038101906103959190612a47565b610c28565b6040516103a79190612a2c565b60405180910390f35b3480156103bc57600080fd5b506103c5610c48565b6040516103d29190612a2c565b60405180910390f35b3480156103e757600080fd5b506103f0610c5b565b6040516103fd91906128d8565b60405180910390f35b34801561041257600080fd5b5061042d60048036038101906104289190612a74565b610c7e565b60405161043a9190612a2c565b60405180910390f35b34801561044f57600080fd5b50610458610efa565b60405161046591906128d8565b60405180910390f35b34801561047a57600080fd5b50610483610f00565b6040516104909190612a2c565b60405180910390f35b3480156104a557600080fd5b506104ae610f13565b6040516104bb9190612ae3565b60405180910390f35b3480156104d057600080fd5b506104d9610f1c565b6040516104e69190612ae3565b60405180910390f35b3480156104fb57600080fd5b50610504610f21565b60405161051191906128d8565b60405180910390f35b34801561052657600080fd5b5061052f610f40565b60405161053c91906128d8565b60405180910390f35b34801561055157600080fd5b5061055a610f46565b6040516105679190612a2c565b60405180910390f35b34801561057c57600080fd5b5061059760048036038101906105929190612a47565b610f59565b6040516105a49190612a2c565b60405180910390f35b3480156105b957600080fd5b506105d460048036038101906105cf9190612a47565b610f87565b6040516105e19190612a2c565b60405180910390f35b3480156105f657600080fd5b50610611600480360381019061060c9190612a47565b610fdd565b60405161061e91906128d8565b60405180910390f35b34801561063357600080fd5b5061064e60048036038101906106499190612a47565b610ff5565b005b34801561065c57600080fd5b5061067760048036038101906106729190612a47565b6110e0565b60405161068491906128d8565b60405180910390f35b34801561069957600080fd5b506106a2611128565b6040516106af9190612a2c565b60405180910390f35b3480156106c457600080fd5b506106cd61113b565b005b3480156106db57600080fd5b506106f660048036038101906106f19190612a47565b61120f565b6040516107039190612a2c565b60405180910390f35b34801561071857600080fd5b50610733600480360381019061072e9190612a47565b611265565b005b34801561074157600080fd5b5061074a611499565b005b34801561075857600080fd5b5061076161155f565b60405161076e9190612b0d565b60405180910390f35b34801561078357600080fd5b5061078c611585565b6040516107999190612983565b60405180910390f35b3480156107ae57600080fd5b506107c960048036038101906107c49190612a47565b6115c2565b6040516107d69190612a2c565b60405180910390f35b3480156107eb57600080fd5b5061080660048036038101906108019190612a47565b6115e2565b6040516108139190612a2c565b60405180910390f35b34801561082857600080fd5b50610843600480360381019061083e91906129d1565b611602565b6040516108509190612a2c565b60405180910390f35b34801561086557600080fd5b5061086e611617565b60405161087b9190612a2c565b60405180910390f35b34801561089057600080fd5b5061089961162e565b6040516108a69190612983565b60405180910390f35b3480156108bb57600080fd5b506108c4611667565b6040516108d19190612983565b60405180910390f35b3480156108e657600080fd5b506108ef6116a0565b005b3480156108fd57600080fd5b506109186004803603810190610913919061287f565b611776565b60405161092591906128d8565b60405180910390f35b34801561093a57600080fd5b5061095560048036038101906109509190612a47565b6117fd565b005b34801561096357600080fd5b5061097e60048036038101906109799190612b54565b6118e8565b005b34801561098c57600080fd5b506109956119cb565b6040516109a29190612a2c565b60405180910390f35b3480156109b757600080fd5b506109c06119e3565b6040516109cd9190612c2e565b60405180910390f35b3480156109e257600080fd5b506109eb6119fb565b6040516109f89190612a2c565b60405180910390f35b6001602052816000526040600020602052806000526040600020600091509150505481565b600a5481565b60606040518060400160405280600e81526020017f4e6f76616b2050726f746f636f6c000000000000000000000000000000000000815250905090565b600b60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610af9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610af090612c95565b60405180910390fd5b600760039054906101000a900460ff1615610b1357600080fd5b6001600760036101000a81548160ff021916908315150217905550565b600081600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92584604051610c1091906128d8565b60405180910390a36001905092915050565b60095481565b60036020528060005260406000206000915054906101000a900460ff1681565b600760039054906101000a900460ff1681565b60006009600a610c6b9190612e17565b620f4240610c799190612e62565b905090565b60006009600a610c8e9190612e17565b620f4240610c9c9190612e62565b600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414610ee65781600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015610ddd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dd490612ef0565b60405180910390fd5b81600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610e659190612f10565b600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b610ef1848484611a13565b90509392505050565b60065481565b600760029054906101000a900460ff1681565b60006009905090565b600981565b6009600a610f2f9190612e17565b620f4240610f3d9190612e62565b81565b60055481565b600760009054906101000a900460ff1681565b6000610f80826009600a610f6d9190612e17565b620f4240610f7b9190612e62565b610b30565b9050919050565b6000600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b60006020528060005260406000206000915090505481565b600b60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611085576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161107c90612c95565b60405180910390fd5b6000600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600760019054906101000a900460ff1681565b600b60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146111cb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111c290612c95565b60405180910390fd5b6000600760016101000a81548160ff021916908315150217905550600060058190555060006006819055503073ffffffffffffffffffffffffffffffffffffffff16ff5b6000600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b600b60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146112f5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112ec90612c95565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611397573373ffffffffffffffffffffffffffffffffffffffff164760405161134d90612f75565b60006040518083038185875af1925050503d806000811461138a576040519150601f19603f3d011682016040523d82523d6000602084013e61138f565b606091505b505050611496565b60008190508073ffffffffffffffffffffffffffffffffffffffff1663a9059cbb338373ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016113f29190612b0d565b602060405180830381865afa15801561140f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114339190612f9f565b6040518363ffffffff1660e01b8152600401611450929190612fcc565b6020604051808303816000875af115801561146f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611493919061300a565b50505b50565b600b60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611529576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161152090612c95565b60405180910390fd5b600760029054906101000a900460ff1661154257600080fd5b6000600760026101000a81548160ff021916908315150217905550565b600b60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60606040518060400160405280600381526020017f4e4f560000000000000000000000000000000000000000000000000000000000815250905090565b60026020528060005260406000206000915054906101000a900460ff1681565b60046020528060005260406000206000915054906101000a900460ff1681565b600061160f338484611a13565b905092915050565b6000600760039054906101000a900460ff16905090565b6040518060400160405280600381526020017f4e4f56000000000000000000000000000000000000000000000000000000000081525081565b6040518060400160405280600e81526020017f4e6f76616b2050726f746f636f6c00000000000000000000000000000000000081525081565b600b60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611730576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161172790612c95565b60405180910390fd5b600760019054906101000a900460ff1661174957600080fd5b6000600760016101000a81548160ff02191690831515021790555060006005819055506000600681905550565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600b60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461188d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161188490612c95565b60405180910390fd5b6001600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b600b60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611978576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161196f90612c95565b60405180910390fd5b600760019054906101000a900460ff16156119b657846005819055508360068190555082600760006101000a81548160ff0219169083151502179055505b8160098190555080600a819055505050505050565b6000600760029054906101000a900460ff1615905090565b737a250d5630b4cf539739df2c5dacb4c659f2488d81565b6000600760019054906101000a900460ff1615905090565b6000600b60009054906101000a900460ff1615611a3c57611a35848484612138565b9050612131565b600760039054906101000a900460ff1680611aa45750600b60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16145b611aad57600080fd5b600760029054906101000a900460ff1615611ba857600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680611b685750655af3107a4000826000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611b669190613037565b105b611ba7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b9e906130b7565b60405180910390fd5b5b6000737a250d5630b4cf539739df2c5dacb4c659f2488d90506000600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680611c4657508173ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16145b9050808015611c5757506009548410155b8015611c6557506000600854115b15611d2c57600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015611cd15750600b60009054906101000a900460ff16155b8015611d1d5750600a546000803073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410155b15611d2b57611d2a6122de565b5b5b836000808873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015611dad576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611da490613123565b60405180910390fd5b836000808873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611df79190612f10565b6000808873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600460008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680611ed25750737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff16145b80611f705750600460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680611f6f5750737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff16145b5b611f7b576000612020565b600360008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615801561201f5750600360008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b5b61202a5784612036565b6120358787876125b5565b5b9050806000808873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546120829190613037565b6000808873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161212191906128d8565b60405180910390a3600193505050505b9392505050565b6000816000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410156121bb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121b290613123565b60405180910390fd5b816000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546122059190612f10565b6000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546122919190613037565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600190509392505050565b6001600b60006101000a81548160ff0219169083151502179055506000600260085461230a9190613172565b905060004790506000600267ffffffffffffffff81111561232e5761232d6131a3565b5b60405190808252806020026020018201604052801561235c5781602001602082028036833780820191505090505b5090503081600081518110612374576123736131d2565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505073c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2816001815181106123d7576123d66131d2565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663791ac9478461244b306110e0565b6124559190612f10565b60008430426040518663ffffffff1660e01b815260040161247a9594939291906132fa565b600060405180830381600087803b15801561249457600080fd5b505af11580156124a8573d6000803e3d6000fd5b50505050600082476124ba9190612f10565b9050600760009054906101000a900460ff16156124e1576002816124de9190613172565b90505b600081111561258c57737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663f305d71982308760008061dead426040518863ffffffff1660e01b815260040161254596959493929190613354565b60606040518083038185885af1158015612563573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061258891906133b5565b5050505b6000600881905550505050506000600b60006101000a81548160ff021916908315150217905550565b600080600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168061264f5750737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16145b905060008161266057600554612664565b6006545b9050600061271082866126779190612e62565b6126819190613172565b905060008211156127135782156126d457600060065411156126cf5781600654826126ac9190612e62565b6126b69190613172565b600860008282546126c79190613037565b925050819055505b612712565b600060055411156127115781600554826126ee9190612e62565b6126f89190613172565b600860008282546127099190613037565b925050819055505b5b5b806000803073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461275d9190613037565b6000803073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516127fc91906128d8565b60405180910390a380856128109190612f10565b93505050509392505050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061284c82612821565b9050919050565b61285c81612841565b811461286757600080fd5b50565b60008135905061287981612853565b92915050565b600080604083850312156128965761289561281c565b5b60006128a48582860161286a565b92505060206128b58582860161286a565b9150509250929050565b6000819050919050565b6128d2816128bf565b82525050565b60006020820190506128ed60008301846128c9565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561292d578082015181840152602081019050612912565b60008484015250505050565b6000601f19601f8301169050919050565b6000612955826128f3565b61295f81856128fe565b935061296f81856020860161290f565b61297881612939565b840191505092915050565b6000602082019050818103600083015261299d818461294a565b905092915050565b6129ae816128bf565b81146129b957600080fd5b50565b6000813590506129cb816129a5565b92915050565b600080604083850312156129e8576129e761281c565b5b60006129f68582860161286a565b9250506020612a07858286016129bc565b9150509250929050565b60008115159050919050565b612a2681612a11565b82525050565b6000602082019050612a416000830184612a1d565b92915050565b600060208284031215612a5d57612a5c61281c565b5b6000612a6b8482850161286a565b91505092915050565b600080600060608486031215612a8d57612a8c61281c565b5b6000612a9b8682870161286a565b9350506020612aac8682870161286a565b9250506040612abd868287016129bc565b9150509250925092565b600060ff82169050919050565b612add81612ac7565b82525050565b6000602082019050612af86000830184612ad4565b92915050565b612b0781612841565b82525050565b6000602082019050612b226000830184612afe565b92915050565b612b3181612a11565b8114612b3c57600080fd5b50565b600081359050612b4e81612b28565b92915050565b600080600080600060a08688031215612b7057612b6f61281c565b5b6000612b7e888289016129bc565b9550506020612b8f888289016129bc565b9450506040612ba088828901612b3f565b9350506060612bb1888289016129bc565b9250506080612bc2888289016129bc565b9150509295509295909350565b6000819050919050565b6000612bf4612bef612bea84612821565b612bcf565b612821565b9050919050565b6000612c0682612bd9565b9050919050565b6000612c1882612bfb565b9050919050565b612c2881612c0d565b82525050565b6000602082019050612c436000830184612c1f565b92915050565b7f4e6f74206f776e65720000000000000000000000000000000000000000000000600082015250565b6000612c7f6009836128fe565b9150612c8a82612c49565b602082019050919050565b60006020820190508181036000830152612cae81612c72565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b6001851115612d3b57808604811115612d1757612d16612cb5565b5b6001851615612d265780820291505b8081029050612d3485612ce4565b9450612cfb565b94509492505050565b600082612d545760019050612e10565b81612d625760009050612e10565b8160018114612d785760028114612d8257612db1565b6001915050612e10565b60ff841115612d9457612d93612cb5565b5b8360020a915084821115612dab57612daa612cb5565b5b50612e10565b5060208310610133831016604e8410600b8410161715612de65782820a905083811115612de157612de0612cb5565b5b612e10565b612df38484846001612cf1565b92509050818404811115612e0a57612e09612cb5565b5b81810290505b9392505050565b6000612e22826128bf565b9150612e2d83612ac7565b9250612e5a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484612d44565b905092915050565b6000612e6d826128bf565b9150612e78836128bf565b9250828202612e86816128bf565b91508282048414831517612e9d57612e9c612cb5565b5b5092915050565b7f496e73756666696369656e7420616c6c6f77616e636500000000000000000000600082015250565b6000612eda6016836128fe565b9150612ee582612ea4565b602082019050919050565b60006020820190508181036000830152612f0981612ecd565b9050919050565b6000612f1b826128bf565b9150612f26836128bf565b9250828203905081811115612f3e57612f3d612cb5565b5b92915050565b600081905092915050565b50565b6000612f5f600083612f44565b9150612f6a82612f4f565b600082019050919050565b6000612f8082612f52565b9150819050919050565b600081519050612f99816129a5565b92915050565b600060208284031215612fb557612fb461281c565b5b6000612fc384828501612f8a565b91505092915050565b6000604082019050612fe16000830185612afe565b612fee60208301846128c9565b9392505050565b60008151905061300481612b28565b92915050565b6000602082840312156130205761301f61281c565b5b600061302e84828501612ff5565b91505092915050565b6000613042826128bf565b915061304d836128bf565b925082820190508082111561306557613064612cb5565b5b92915050565b7f416e7469626f7420656e61626c65640000000000000000000000000000000000600082015250565b60006130a1600f836128fe565b91506130ac8261306b565b602082019050919050565b600060208201905081810360008301526130d081613094565b9050919050565b7f496e73756666696369656e742062616c616e6365000000000000000000000000600082015250565b600061310d6014836128fe565b9150613118826130d7565b602082019050919050565b6000602082019050818103600083015261313c81613100565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061317d826128bf565b9150613188836128bf565b92508261319857613197613143565b5b828204905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000819050919050565b600061322661322161321c84613201565b612bcf565b6128bf565b9050919050565b6132368161320b565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61327181612841565b82525050565b60006132838383613268565b60208301905092915050565b6000602082019050919050565b60006132a78261323c565b6132b18185613247565b93506132bc83613258565b8060005b838110156132ed5781516132d48882613277565b97506132df8361328f565b9250506001810190506132c0565b5085935050505092915050565b600060a08201905061330f60008301886128c9565b61331c602083018761322d565b818103604083015261332e818661329c565b905061333d6060830185612afe565b61334a60808301846128c9565b9695505050505050565b600060c0820190506133696000830189612afe565b61337660208301886128c9565b613383604083018761322d565b613390606083018661322d565b61339d6080830185612afe565b6133aa60a08301846128c9565b979650505050505050565b6000806000606084860312156133ce576133cd61281c565b5b60006133dc86828701612f8a565b93505060206133ed86828701612f8a565b92505060406133fe86828701612f8a565b915050925092509256fea2646970667358221220078269f236212532029d9f91d6ddc753463515909ed10ccb0d8336343339bfbb64736f6c63430008140033

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.