ETH Price: $3,386.02 (-1.50%)
Gas: 2 Gwei

Token

Stobox Token v.2 (STBU)
 

Overview

Max Total Supply

50,000,000 STBU

Holders

1,373 (0.00%)

Market

Price

$0.13 @ 0.000039 ETH (-1.99%)

Onchain Market Cap

$6,644,900.00

Circulating Supply Market Cap

$12,721,757.00

Other Info

Token Contract (WITH 18 Decimals)

Balance
0.947232 STBU

Value
$0.13 ( ~3.83931326021499E-05 Eth) [0.0000%]
0xe7136a139a73208673fab61963f0e334abcb1ac6
Loading...
Loading
Loading...
Loading
Loading...
Loading

OVERVIEW

Stobox is a leading global tokenization provider. Stobox launched a series of decentralized web products to issue and manage security tokens. Stobox Token is a utility token used within Stobox ecosystem.

Market

Volume (24H):$105,433.00
Market Capitalization:$12,721,757.00
Circulating Supply:95,718,503.00 STBU
Market Data Source: Coinmarketcap

# Exchange Pair Price  24H Volume % Volume

Contract Source Code Verified (Exact Match)

Contract Name:
STBU

Compiler Version
v0.8.4+commit.c7e474f2

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, Unlicense license

Contract Source Code (Solidity Multiple files format)

File 7 of 7: STBU.sol
pragma solidity ^0.8.0;

import "./ERC20.sol";
import "./Address.sol";
import "./SafeMath.sol";
import "./Ownable.sol";

contract STBU is ERC20, Ownable {
    using SafeMath for uint;
    using Address for address;

    mapping(address => bool) public allowedContracts;
    mapping(address => Manager) public managers;

    uint256 private _maxSupply;
    uint256 private _minSupply;
    address public treasury;

    struct Manager {
        bool active;
        Limits burn;
        Limits mint;
    }

    struct Limits {
        uint256 max;
        uint256 actual;
    }

    modifier onlyAllowedContracts() {
        require(address(msg.sender).isContract() && allowedContracts[msg.sender] || !address(msg.sender).isContract(),
            "Address: should be allowed");
        _;
    }

    modifier onlyManager() {
        require(managers[msg.sender].active, "Address is not manager");
        _;
    }

    constructor (string memory name, string memory symbol, uint256 maxSupply, uint256 minSupply) ERC20(name, symbol) public {
        _maxSupply = maxSupply;
        _minSupply = minSupply;
    }

    function addManager(uint256 maxBurn, uint256 maxMint, address manager) public onlyOwner returns(bool) {
        require(!managers[manager].active, "Manager already exists");
        managers[manager].active = true;
        managers[manager].mint.max = maxMint;
        managers[manager].burn.max = maxBurn;
        return true;
    }

    function removeManager(address manager) public onlyOwner returns(bool) {
        require(managers[manager].active, "Manager not exists");
        managers[manager].active = false;
        managers[manager].mint.max = 0;
        managers[manager].burn.max = 0;
        return true;
    }

    function addAllowedContract(address _contract) external onlyOwner returns (bool) {
        require(_contract.isContract(), "Address: is not contract or not deployed");
        allowedContracts[_contract] = true;
        return true;
    }

    function removeAllowedContract(address _contract) external onlyOwner returns (bool) {
        require(_contract.isContract(), "Address: is not contract or not deployed");
        allowedContracts[_contract] = false;
        return true;
    }

    function changeTreasury(address _treasury) public onlyOwner returns(bool) {
        treasury = _treasury;
        return true;
    }

    function transfer(address recipient, uint256 amount) override public onlyAllowedContracts returns (bool) {
        return super.transfer(recipient, amount);
    }

    function transferFrom(address sender, address recipient, uint256 amount) override public onlyAllowedContracts returns (bool) {
        return super.transferFrom(sender, recipient, amount);
    }

    function mint(uint256 amount) onlyManager public returns(bool) {
        require(managers[msg.sender].mint.max >= managers[msg.sender].mint.actual.add(amount), "Limit exceeded");
        uint256 supply = totalSupply();
        require(_maxSupply >= supply.add(amount), "Supply exceeded cap");
        managers[msg.sender].mint.actual = managers[msg.sender].mint.actual.add(amount);
        _mint(treasury, amount);
        return true;
    }

    function burn(uint256 amount) onlyManager public returns(bool) {
        require(managers[msg.sender].burn.max >= managers[msg.sender].burn.actual.add(amount), "Limit exceeded");
        uint256 supply = totalSupply();
        require(_minSupply >= supply.sub(amount), "Supply exceeded cap");
        managers[msg.sender].burn.actual = managers[msg.sender].burn.actual.add(amount);
        _burn(treasury, amount);
        return true;
    }

    function receiveStuckTokens(address token) public onlyOwner returns(bool) {
        IERC20 coin = IERC20(token);
        require(coin.balanceOf(address(this)) > 0, "Zero balance");
        require(coin.transfer(treasury, coin.balanceOf(address(this))), "Transfer: error");
        return true;
    }

}

File 1 of 7: Address.sol
pragma solidity ^0.8.0;

/**
 * @dev Collection of functions related to the address type
 */
library Address {
    /**
     * @dev Returns true if `account` is a contract.
     *
     * [IMPORTANT]
     * ====
     * It is unsafe to assume that an address for which this function returns
     * false is an externally-owned account (EOA) and not a contract.
     *
     * Among others, `isContract` will return false for the following
     * types of addresses:
     *
     *  - an externally-owned account
     *  - a contract in construction
     *  - an address where a contract will be created
     *  - an address where a contract lived, but was destroyed
     * ====
     */
    function isContract(address account) internal view returns (bool) {
        // This method relies on extcodesize, which returns 0 for contracts in
        // construction, since the code is only stored at the end of the
        // constructor execution.

        uint256 size;
        assembly {
            size := extcodesize(account)
        }
        return size > 0;
    }

    /**
     * @dev Replacement for Solidity's `transfer`: sends `amount` wei to
     * `recipient`, forwarding all available gas and reverting on errors.
     *
     * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost
     * of certain opcodes, possibly making contracts go over the 2300 gas limit
     * imposed by `transfer`, making them unable to receive funds via
     * `transfer`. {sendValue} removes this limitation.
     *
     * https://diligence.consensys.net/posts/2019/09/stop-using-soliditys-transfer-now/[Learn more].
     *
     * IMPORTANT: because control is transferred to `recipient`, care must be
     * taken to not create reentrancy vulnerabilities. Consider using
     * {ReentrancyGuard} or the
     * https://solidity.readthedocs.io/en/v0.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].
     */
    function sendValue(address payable recipient, uint256 amount) internal {
        require(address(this).balance >= amount, "Address: insufficient balance");

        (bool success, ) = recipient.call{value: amount}("");
        require(success, "Address: unable to send value, recipient may have reverted");
    }

    /**
     * @dev Performs a Solidity function call using a low level `call`. A
     * plain `call` is an unsafe replacement for a function call: use this
     * function instead.
     *
     * If `target` reverts with a revert reason, it is bubbled up by this
     * function (like regular Solidity function calls).
     *
     * Returns the raw returned data. To convert to the expected return value,
     * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].
     *
     * Requirements:
     *
     * - `target` must be a contract.
     * - calling `target` with `data` must not revert.
     *
     * _Available since v3.1._
     */
    function functionCall(address target, bytes memory data) internal returns (bytes memory) {
        return functionCall(target, data, "Address: low-level call failed");
    }

    /**
     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with
     * `errorMessage` as a fallback revert reason when `target` reverts.
     *
     * _Available since v3.1._
     */
    function functionCall(
        address target,
        bytes memory data,
        string memory errorMessage
    ) internal returns (bytes memory) {
        return functionCallWithValue(target, data, 0, errorMessage);
    }

    /**
     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],
     * but also transferring `value` wei to `target`.
     *
     * Requirements:
     *
     * - the calling contract must have an ETH balance of at least `value`.
     * - the called Solidity function must be `payable`.
     *
     * _Available since v3.1._
     */
    function functionCallWithValue(
        address target,
        bytes memory data,
        uint256 value
    ) internal returns (bytes memory) {
        return functionCallWithValue(target, data, value, "Address: low-level call with value failed");
    }

    /**
     * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but
     * with `errorMessage` as a fallback revert reason when `target` reverts.
     *
     * _Available since v3.1._
     */
    function functionCallWithValue(
        address target,
        bytes memory data,
        uint256 value,
        string memory errorMessage
    ) internal returns (bytes memory) {
        require(address(this).balance >= value, "Address: insufficient balance for call");
        require(isContract(target), "Address: call to non-contract");

        (bool success, bytes memory returndata) = target.call{value: value}(data);
        return verifyCallResult(success, returndata, errorMessage);
    }

    /**
     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],
     * but performing a static call.
     *
     * _Available since v3.3._
     */
    function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {
        return functionStaticCall(target, data, "Address: low-level static call failed");
    }

    /**
     * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],
     * but performing a static call.
     *
     * _Available since v3.3._
     */
    function functionStaticCall(
        address target,
        bytes memory data,
        string memory errorMessage
    ) internal view returns (bytes memory) {
        require(isContract(target), "Address: static call to non-contract");

        (bool success, bytes memory returndata) = target.staticcall(data);
        return verifyCallResult(success, returndata, errorMessage);
    }

    /**
     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],
     * but performing a delegate call.
     *
     * _Available since v3.4._
     */
    function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {
        return functionDelegateCall(target, data, "Address: low-level delegate call failed");
    }

    /**
     * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],
     * but performing a delegate call.
     *
     * _Available since v3.4._
     */
    function functionDelegateCall(
        address target,
        bytes memory data,
        string memory errorMessage
    ) internal returns (bytes memory) {
        require(isContract(target), "Address: delegate call to non-contract");

        (bool success, bytes memory returndata) = target.delegatecall(data);
        return verifyCallResult(success, returndata, errorMessage);
    }

    /**
     * @dev Tool to verifies that a low level call was successful, and revert if it wasn't, either by bubbling the
     * revert reason using the provided one.
     *
     * _Available since v4.3._
     */
    function verifyCallResult(
        bool success,
        bytes memory returndata,
        string memory errorMessage
    ) internal pure returns (bytes memory) {
        if (success) {
            return returndata;
        } else {
            // Look for revert reason and bubble it up if present
            if (returndata.length > 0) {
                // The easiest way to bubble the revert reason is using memory via assembly

                assembly {
                    let returndata_size := mload(returndata)
                    revert(add(32, returndata), returndata_size)
                }
            } else {
                revert(errorMessage);
            }
        }
    }
}

File 2 of 7: Context.sol
pragma solidity ^0.8.0;

/*
 * @dev Provides information about the current execution context, including the
 * sender of the transaction and its data. While these are generally available
 * via msg.sender and msg.data, they should not be accessed in such a direct
 * manner, since when dealing with GSN meta-transactions the account sending and
 * paying for execution may not be the actual sender (as far as an application
 * is concerned).
 *
 * This contract is only required for intermediate, library-like contracts.
 */
abstract contract Context {
    function _msgSender() internal view virtual returns (address) {
        return msg.sender;
    }

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

File 3 of 7: ERC20.sol
pragma solidity ^0.8.0;

import "./Context.sol";
import "./IERC20.sol";
import "./SafeMath.sol";
import "./Address.sol";

/**
 * @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 guidelines: functions revert instead
 * of 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 ERC20 is Context, IERC20 {
    using SafeMath for uint256;
    using Address for address;

    mapping (address => uint256) private _balances;

    mapping (address => mapping (address => uint256)) private _allowances;

    uint256 private _totalSupply;

    string private _name;
    string private _symbol;
    uint8 private _decimals;

    /**
     * @dev Sets the values for {name} and {symbol}, initializes {decimals} with
     * a default value of 18.
     *
     * To select a different value for {decimals}, use {_setupDecimals}.
     *
     * All three of these values are immutable: they can only be set once during
     * construction.
     */
    constructor (string memory name, string memory symbol) public {
        _name = name;
        _symbol = symbol;
        _decimals = 18;
    }

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

    /**
     * @dev Returns the symbol of the token, usually a shorter version of the
     * name.
     */
    function symbol() public view 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 {_setupDecimals} is
     * called.
     *
     * 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 returns (uint8) {
        return _decimals;
    }

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

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

    /**
     * @dev See {IERC20-transfer}.
     *
     * Requirements:
     *
     * - `recipient` cannot be the zero address.
     * - the caller must have a balance of at least `amount`.
     */
    function transfer(address recipient, uint256 amount) public virtual override returns (bool) {
        _transfer(_msgSender(), recipient, 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}.
     *
     * Requirements:
     *
     * - `spender` cannot be the zero address.
     */
    function approve(address spender, uint256 amount) public virtual override returns (bool) {
        _approve(_msgSender(), 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};
     *
     * Requirements:
     * - `sender` and `recipient` cannot be the zero address.
     * - `sender` must have a balance of at least `amount`.
     * - the caller must have allowance for ``sender``'s tokens of at least
     * `amount`.
     */
    function transferFrom(address sender, address recipient, uint256 amount) public virtual override returns (bool) {
        _transfer(sender, recipient, amount);
        _approve(sender, _msgSender(), _allowances[sender][_msgSender()].sub(amount, "ERC20: transfer amount exceeds allowance"));
        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) {
        _approve(_msgSender(), spender, _allowances[_msgSender()][spender].add(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) {
        _approve(_msgSender(), spender, _allowances[_msgSender()][spender].sub(subtractedValue, "ERC20: decreased allowance below zero"));
        return true;
    }

    /**
     * @dev Moves tokens `amount` from `sender` to `recipient`.
     *
     * This is 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:
     *
     * - `sender` cannot be the zero address.
     * - `recipient` cannot be the zero address.
     * - `sender` must have a balance of at least `amount`.
     */
    function _transfer(address sender, address recipient, uint256 amount) internal virtual {
        require(sender != address(0), "ERC20: transfer from the zero address");
        require(recipient != address(0), "ERC20: transfer to the zero address");

        _beforeTokenTransfer(sender, recipient, amount);

        _balances[sender] = _balances[sender].sub(amount, "ERC20: transfer amount exceeds balance");
        _balances[recipient] = _balances[recipient].add(amount);
        emit Transfer(sender, recipient, amount);
    }

    /** @dev Creates `amount` tokens and assigns them to `account`, increasing
     * the total supply.
     *
     * Emits a {Transfer} event with `from` set to the zero address.
     *
     * Requirements
     *
     * - `to` cannot be the zero address.
     */
    function _mint(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: mint to the zero address");

        _beforeTokenTransfer(address(0), account, amount);

        _totalSupply = _totalSupply.add(amount);
        _balances[account] = _balances[account].add(amount);
        emit Transfer(address(0), account, 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 _burn(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: burn from the zero address");

        _beforeTokenTransfer(account, address(0), amount);

        _balances[account] = _balances[account].sub(amount, "ERC20: burn amount exceeds balance");
        _totalSupply = _totalSupply.sub(amount);
        emit Transfer(account, address(0), amount);
    }

    /**
     * @dev Sets `amount` as the allowance of `spender` over the `owner`s tokens.
     *
     * This is 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.
     */
    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);
    }

    /**
     * @dev Sets {decimals} to a value other than the default one of 18.
     *
     * WARNING: This function should only be called from the constructor. Most
     * applications that interact with token contracts will not expect
     * {decimals} to ever change, and may work incorrectly if it does.
     */
    function _setupDecimals(uint8 decimals_) internal {
        _decimals = decimals_;
    }

    /**
     * @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 to 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, address to, uint256 amount) internal virtual { }
}

File 4 of 7: IERC20.sol
pragma solidity ^0.8.0;

/**
 * @dev Interface of the ERC20 standard as defined in the EIP.
 */
interface IERC20 {
    /**
     * @dev Returns the amount of tokens in existence.
     */
    function totalSupply() external view returns (uint256);

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

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

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

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

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

    /**
     * @dev Emitted when `value` tokens are moved from one account (`from`) to
     * another (`to`).
     *
     * Note that `value` may be zero.
     */
    event Transfer(address indexed from, address indexed to, uint256 value);

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

File 5 of 7: Ownable.sol
// SPDX-License-Identifier: MIT

pragma solidity ^0.8.0;

import "./Context.sol";
/**
 * @dev Contract module which provides a basic access control mechanism, where
 * there is an account (an owner) that can be granted exclusive access to
 * specific functions.
 *
 * By default, the owner account will be the one that deploys the contract. This
 * can later be changed with {transferOwnership}.
 *
 * This module is used through inheritance. It will make available the modifier
 * `onlyOwner`, which can be applied to your functions to restrict their use to
 * the owner.
 */
abstract contract Ownable is Context {
    address private _owner;

    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);

    /**
     * @dev Initializes the contract setting the deployer as the initial owner.
     */
    constructor() {
        _setOwner(_msgSender());
    }

    /**
     * @dev Returns the address of the current owner.
     */
    function owner() public view virtual returns (address) {
        return _owner;
    }

    /**
     * @dev Throws if called by any account other than the owner.
     */
    modifier onlyOwner() {
        require(owner() == _msgSender(), "Ownable: caller is not the owner");
        _;
    }

    /**
     * @dev Leaves the contract without owner. It will not be possible to call
     * `onlyOwner` functions anymore. Can only be called by the current owner.
     *
     * NOTE: Renouncing ownership will leave the contract without an owner,
     * thereby removing any functionality that is only available to the owner.
     */
    function renounceOwnership() public virtual onlyOwner {
        _setOwner(address(0));
    }

    /**
     * @dev Transfers ownership of the contract to a new account (`newOwner`).
     * Can only be called by the current owner.
     */
    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(newOwner != address(0), "Ownable: new owner is the zero address");
        _setOwner(newOwner);
    }

    function _setOwner(address newOwner) private {
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
    }
}

File 6 of 7: SafeMath.sol
pragma solidity ^0.8.0;

/**
 * @dev Wrappers over Solidity's arithmetic operations with added overflow
 * checks.
 *
 * Arithmetic operations in Solidity wrap on overflow. This can easily result
 * in bugs, because programmers usually assume that an overflow raises an
 * error, which is the standard behavior in high level programming languages.
 * `SafeMath` restores this intuition by reverting the transaction when an
 * operation overflows.
 *
 * Using this library instead of the unchecked operations eliminates an entire
 * class of bugs, so it's recommended to use it always.
 */
library SafeMath {
    /**
     * @dev Returns the addition of two unsigned integers, reverting on
     * overflow.
     *
     * Counterpart to Solidity's `+` operator.
     *
     * Requirements:
     *
     * - Addition cannot overflow.
     */
    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        require(c >= a, "SafeMath: addition overflow");

        return c;
    }

    /**
     * @dev Returns the subtraction of two unsigned integers, reverting on
     * overflow (when the result is negative).
     *
     * Counterpart to Solidity's `-` operator.
     *
     * Requirements:
     *
     * - Subtraction cannot overflow.
     */
    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return sub(a, b, "SafeMath: subtraction overflow");
    }

    /**
     * @dev Returns the subtraction of two unsigned integers, reverting with custom message on
     * overflow (when the result is negative).
     *
     * Counterpart to Solidity's `-` operator.
     *
     * Requirements:
     *
     * - Subtraction cannot overflow.
     */
    function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b <= a, errorMessage);
        uint256 c = a - b;

        return c;
    }

    /**
     * @dev Returns the multiplication of two unsigned integers, reverting on
     * overflow.
     *
     * Counterpart to Solidity's `*` operator.
     *
     * Requirements:
     *
     * - Multiplication cannot overflow.
     */
    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        // Gas optimization: this is cheaper than requiring 'a' not being zero, but the
        // benefit is lost if 'b' is also tested.
        // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522
        if (a == 0) {
            return 0;
        }

        uint256 c = a * b;
        require(c / a == b, "SafeMath: multiplication overflow");

        return c;
    }

    /**
     * @dev Returns the integer division of two unsigned integers. Reverts on
     * division by zero. The result is rounded towards zero.
     *
     * Counterpart to Solidity's `/` operator. Note: this function uses a
     * `revert` opcode (which leaves remaining gas untouched) while Solidity
     * uses an invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     *
     * - The divisor cannot be zero.
     */
    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return div(a, b, "SafeMath: division by zero");
    }

    /**
     * @dev Returns the integer division of two unsigned integers. Reverts with custom message on
     * division by zero. The result is rounded towards zero.
     *
     * Counterpart to Solidity's `/` operator. Note: this function uses a
     * `revert` opcode (which leaves remaining gas untouched) while Solidity
     * uses an invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     *
     * - The divisor cannot be zero.
     */
    function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b > 0, errorMessage);
        uint256 c = a / b;
        // assert(a == b * c + a % b); // There is no case in which this doesn't hold

        return c;
    }

    /**
     * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),
     * Reverts when dividing by zero.
     *
     * Counterpart to Solidity's `%` operator. This function uses a `revert`
     * opcode (which leaves remaining gas untouched) while Solidity uses an
     * invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     *
     * - The divisor cannot be zero.
     */
    function mod(uint256 a, uint256 b) internal pure returns (uint256) {
        return mod(a, b, "SafeMath: modulo by zero");
    }

    /**
     * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),
     * Reverts with custom message when dividing by zero.
     *
     * Counterpart to Solidity's `%` operator. This function uses a `revert`
     * opcode (which leaves remaining gas untouched) while Solidity uses an
     * invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     *
     * - The divisor cannot be zero.
     */
    function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b != 0, errorMessage);
        return a % b;
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"symbol","type":"string"},{"internalType":"uint256","name":"maxSupply","type":"uint256"},{"internalType":"uint256","name":"minSupply","type":"uint256"}],"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":"_contract","type":"address"}],"name":"addAllowedContract","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxBurn","type":"uint256"},{"internalType":"uint256","name":"maxMint","type":"uint256"},{"internalType":"address","name":"manager","type":"address"}],"name":"addManager","outputs":[{"internalType":"bool","name":"","type":"bool"}],"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":"","type":"address"}],"name":"allowedContracts","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burn","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_treasury","type":"address"}],"name":"changeTreasury","outputs":[{"internalType":"bool","name":"","type":"bool"}],"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":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"managers","outputs":[{"internalType":"bool","name":"active","type":"bool"},{"components":[{"internalType":"uint256","name":"max","type":"uint256"},{"internalType":"uint256","name":"actual","type":"uint256"}],"internalType":"struct STBU.Limits","name":"burn","type":"tuple"},{"components":[{"internalType":"uint256","name":"max","type":"uint256"},{"internalType":"uint256","name":"actual","type":"uint256"}],"internalType":"struct STBU.Limits","name":"mint","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"mint","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"}],"name":"receiveStuckTokens","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_contract","type":"address"}],"name":"removeAllowedContract","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"manager","type":"address"}],"name":"removeManager","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"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":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"treasury","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"}]

60806040523480156200001157600080fd5b5060405162003baf38038062003baf8339818101604052810190620000379190620002c8565b83838160039080519060200190620000519291906200018f565b5080600490805190602001906200006a9291906200018f565b506012600560006101000a81548160ff021916908360ff1602179055505050620000a96200009d620000c160201b60201c565b620000c960201b60201c565b816008819055508060098190555050505050620004fa565b600033905090565b6000600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b8280546200019d9062000405565b90600052602060002090601f016020900481019282620001c157600085556200020d565b82601f10620001dc57805160ff19168380011785556200020d565b828001600101855582156200020d579182015b828111156200020c578251825591602001919060010190620001ef565b5b5090506200021c919062000220565b5090565b5b808211156200023b57600081600090555060010162000221565b5090565b60006200025662000250846200038f565b62000366565b9050828152602081018484840111156200026f57600080fd5b6200027c848285620003cf565b509392505050565b600082601f8301126200029657600080fd5b8151620002a88482602086016200023f565b91505092915050565b600081519050620002c281620004e0565b92915050565b60008060008060808587031215620002df57600080fd5b600085015167ffffffffffffffff811115620002fa57600080fd5b620003088782880162000284565b945050602085015167ffffffffffffffff8111156200032657600080fd5b620003348782880162000284565b93505060406200034787828801620002b1565b92505060606200035a87828801620002b1565b91505092959194509250565b60006200037262000385565b90506200038082826200043b565b919050565b6000604051905090565b600067ffffffffffffffff821115620003ad57620003ac620004a0565b5b620003b882620004cf565b9050602081019050919050565b6000819050919050565b60005b83811015620003ef578082015181840152602081019050620003d2565b83811115620003ff576000848401525b50505050565b600060028204905060018216806200041e57607f821691505b6020821081141562000435576200043462000471565b5b50919050565b6200044682620004cf565b810181811067ffffffffffffffff82111715620004685762000467620004a0565b5b80604052505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000601f19601f8301169050919050565b620004eb81620003c5565b8114620004f757600080fd5b50565b6136a5806200050a6000396000f3fe608060405234801561001057600080fd5b50600436106101735760003560e01c80637ccf946d116100de578063a9059cbb11610097578063ce52ee8111610071578063ce52ee81146104d6578063dd62ed3e14610506578063f2fde38b14610536578063fdff9b4d1461055257610173565b8063a9059cbb14610446578063ac18de4314610476578063b14f2a39146104a657610173565b80637ccf946d1461034a5780638da5cb5b1461037a57806395d89b41146103985780639800fc16146103b6578063a0712d68146103e6578063a457c2d71461041657610173565b80633950935111610130578063395093511461026257806342966c681461029257806351e0e26b146102c257806361d027b3146102f257806370a0823114610310578063715018a61461034057610173565b806306fdde0314610178578063095ea7b31461019657806318160ddd146101c657806323b872dd146101e45780632c56462f14610214578063313ce56714610244575b600080fd5b610180610584565b60405161018d9190612d42565b60405180910390f35b6101b060048036038101906101ab919061287d565b610616565b6040516101bd9190612cf0565b60405180910390f35b6101ce610634565b6040516101db9190612fa4565b60405180910390f35b6101fe60048036038101906101f9919061282e565b61063e565b60405161020b9190612cf0565b60405180910390f35b61022e600480360381019061022991906127c9565b61072e565b60405161023b9190612cf0565b60405180910390f35b61024c61086b565b6040516102599190612fbf565b60405180910390f35b61027c6004803603810190610277919061287d565b610882565b6040516102899190612cf0565b60405180910390f35b6102ac60048036038101906102a791906128e2565b610935565b6040516102b99190612cf0565b60405180910390f35b6102dc60048036038101906102d791906127c9565b610bdf565b6040516102e99190612cf0565b60405180910390f35b6102fa610bff565b6040516103079190612cac565b60405180910390f35b61032a600480360381019061032591906127c9565b610c25565b6040516103379190612fa4565b60405180910390f35b610348610c6d565b005b610364600480360381019061035f9190612934565b610cf5565b6040516103719190612cf0565b60405180910390f35b610382610efd565b60405161038f9190612cac565b60405180910390f35b6103a0610f27565b6040516103ad9190612d42565b60405180910390f35b6103d060048036038101906103cb91906127c9565b610fb9565b6040516103dd9190612cf0565b60405180910390f35b61040060048036038101906103fb91906128e2565b6110f6565b60405161040d9190612cf0565b60405180910390f35b610430600480360381019061042b919061287d565b6113a0565b60405161043d9190612cf0565b60405180910390f35b610460600480360381019061045b919061287d565b61146d565b60405161046d9190612cf0565b60405180910390f35b610490600480360381019061048b91906127c9565b61155b565b60405161049d9190612cf0565b60405180910390f35b6104c060048036038101906104bb91906127c9565b611762565b6040516104cd9190612cf0565b60405180910390f35b6104f060048036038101906104eb91906127c9565b61182a565b6040516104fd9190612cf0565b60405180910390f35b610520600480360381019061051b91906127f2565b611af8565b60405161052d9190612fa4565b60405180910390f35b610550600480360381019061054b91906127c9565b611b7f565b005b61056c600480360381019061056791906127c9565b611c77565b60405161057b93929190612d0b565b60405180910390f35b60606003805461059390613108565b80601f01602080910402602001604051908101604052809291908181526020018280546105bf90613108565b801561060c5780601f106105e15761010080835404028352916020019161060c565b820191906000526020600020905b8154815290600101906020018083116105ef57829003601f168201915b5050505050905090565b600061062a610623611cea565b8484611cf2565b6001905092915050565b6000600254905090565b600061065f3373ffffffffffffffffffffffffffffffffffffffff16611ebd565b80156106b45750600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b806106db57506106d93373ffffffffffffffffffffffffffffffffffffffff16611ebd565b155b61071a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161071190612de4565b60405180910390fd5b610725848484611ed0565b90509392505050565b6000610738611cea565b73ffffffffffffffffffffffffffffffffffffffff16610756610efd565b73ffffffffffffffffffffffffffffffffffffffff16146107ac576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107a390612e64565b60405180910390fd5b6107cb8273ffffffffffffffffffffffffffffffffffffffff16611ebd565b61080a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161080190612d84565b60405180910390fd5b6001600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060019050919050565b6000600560009054906101000a900460ff16905090565b600061092b61088f611cea565b8461092685600160006108a0611cea565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611fa990919063ffffffff16565b611cf2565b6001905092915050565b6000600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a900460ff166109c6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109bd90612ec4565b60405180910390fd5b610a1e82600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160010154611fa990919063ffffffff16565b600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101600001541015610aa5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a9c90612e24565b60405180910390fd5b6000610aaf610634565b9050610ac4838261200790919063ffffffff16565b6009541015610b08576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610aff90612f04565b60405180910390fd5b610b6083600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160010154611fa990919063ffffffff16565b600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160010181905550610bd5600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684612051565b6001915050919050565b60066020528060005260406000206000915054906101000a900460ff1681565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610c75611cea565b73ffffffffffffffffffffffffffffffffffffffff16610c93610efd565b73ffffffffffffffffffffffffffffffffffffffff1614610ce9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ce090612e64565b60405180910390fd5b610cf360006121ff565b565b6000610cff611cea565b73ffffffffffffffffffffffffffffffffffffffff16610d1d610efd565b73ffffffffffffffffffffffffffffffffffffffff1614610d73576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d6a90612e64565b60405180910390fd5b600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a900460ff1615610e03576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dfa90612e84565b60405180910390fd5b6001600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160006101000a81548160ff02191690831515021790555082600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206003016000018190555083600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160000181905550600190509392505050565b6000600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060048054610f3690613108565b80601f0160208091040260200160405190810160405280929190818152602001828054610f6290613108565b8015610faf5780601f10610f8457610100808354040283529160200191610faf565b820191906000526020600020905b815481529060010190602001808311610f9257829003601f168201915b5050505050905090565b6000610fc3611cea565b73ffffffffffffffffffffffffffffffffffffffff16610fe1610efd565b73ffffffffffffffffffffffffffffffffffffffff1614611037576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161102e90612e64565b60405180910390fd5b6110568273ffffffffffffffffffffffffffffffffffffffff16611ebd565b611095576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161108c90612d84565b60405180910390fd5b6000600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060019050919050565b6000600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a900460ff16611187576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161117e90612ec4565b60405180910390fd5b6111df82600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060030160010154611fa990919063ffffffff16565b600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600301600001541015611266576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161125d90612e24565b60405180910390fd5b6000611270610634565b90506112858382611fa990919063ffffffff16565b60085410156112c9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112c090612f04565b60405180910390fd5b61132183600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060030160010154611fa990919063ffffffff16565b600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060030160010181905550611396600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846122c5565b6001915050919050565b60006114636113ad611cea565b8461145e8560405180606001604052806025815260200161364b60259139600160006113d7611cea565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546124599092919063ffffffff16565b611cf2565b6001905092915050565b600061148e3373ffffffffffffffffffffffffffffffffffffffff16611ebd565b80156114e35750600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b8061150a57506115083373ffffffffffffffffffffffffffffffffffffffff16611ebd565b155b611549576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161154090612de4565b60405180910390fd5b61155383836124bd565b905092915050565b6000611565611cea565b73ffffffffffffffffffffffffffffffffffffffff16611583610efd565b73ffffffffffffffffffffffffffffffffffffffff16146115d9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115d090612e64565b60405180910390fd5b600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a900460ff16611668576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161165f90612e44565b60405180910390fd5b6000600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160006101000a81548160ff0219169083151502179055506000600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600301600001819055506000600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001016000018190555060019050919050565b600061176c611cea565b73ffffffffffffffffffffffffffffffffffffffff1661178a610efd565b73ffffffffffffffffffffffffffffffffffffffff16146117e0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117d790612e64565b60405180910390fd5b81600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060019050919050565b6000611834611cea565b73ffffffffffffffffffffffffffffffffffffffff16611852610efd565b73ffffffffffffffffffffffffffffffffffffffff16146118a8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161189f90612e64565b60405180910390fd5b600082905060008173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016118e89190612cac565b60206040518083038186803b15801561190057600080fd5b505afa158015611914573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611938919061290b565b11611978576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161196f90612f44565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1663a9059cbb600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016119f09190612cac565b60206040518083038186803b158015611a0857600080fd5b505afa158015611a1c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a40919061290b565b6040518363ffffffff1660e01b8152600401611a5d929190612cc7565b602060405180830381600087803b158015611a7757600080fd5b505af1158015611a8b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611aaf91906128b9565b611aee576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ae590612f64565b60405180910390fd5b6001915050919050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b611b87611cea565b73ffffffffffffffffffffffffffffffffffffffff16611ba5610efd565b73ffffffffffffffffffffffffffffffffffffffff1614611bfb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bf290612e64565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611c6b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c6290612da4565b60405180910390fd5b611c74816121ff565b50565b60076020528060005260406000206000915090508060000160009054906101000a900460ff16908060010160405180604001604052908160008201548152602001600182015481525050908060030160405180604001604052908160008201548152602001600182015481525050905083565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611d62576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d5990612f24565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611dd2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dc990612dc4565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611eb09190612fa4565b60405180910390a3505050565b600080823b905060008111915050919050565b6000611edd8484846124db565b611f9e84611ee9611cea565b611f998560405180606001604052806028815260200161362360289139600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000611f4f611cea565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546124599092919063ffffffff16565b611cf2565b600190509392505050565b6000808284611fb89190612ff6565b905083811015611ffd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ff490612e04565b60405180910390fd5b8091505092915050565b600061204983836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612459565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156120c1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120b890612ea4565b60405180910390fd5b6120cd82600083612770565b612138816040518060600160405280602281526020016135db602291396000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546124599092919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061218f8160025461200790919063ffffffff16565b600281905550600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516121f39190612fa4565b60405180910390a35050565b6000600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612335576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161232c90612f84565b60405180910390fd5b61234160008383612770565b61235681600254611fa990919063ffffffff16565b6002819055506123ad816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611fa990919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161244d9190612fa4565b60405180910390a35050565b60008383111582906124a1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124989190612d42565b60405180910390fd5b50600083856124b0919061304c565b9050809150509392505050565b60006124d16124ca611cea565b84846124db565b6001905092915050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561254b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161254290612ee4565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156125bb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125b290612d64565b60405180910390fd5b6125c6838383612770565b612631816040518060600160405280602681526020016135fd602691396000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546124599092919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506126c4816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611fa990919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516127639190612fa4565b60405180910390a3505050565b505050565b60008135905061278481613595565b92915050565b600081519050612799816135ac565b92915050565b6000813590506127ae816135c3565b92915050565b6000815190506127c3816135c3565b92915050565b6000602082840312156127db57600080fd5b60006127e984828501612775565b91505092915050565b6000806040838503121561280557600080fd5b600061281385828601612775565b925050602061282485828601612775565b9150509250929050565b60008060006060848603121561284357600080fd5b600061285186828701612775565b935050602061286286828701612775565b92505060406128738682870161279f565b9150509250925092565b6000806040838503121561289057600080fd5b600061289e85828601612775565b92505060206128af8582860161279f565b9150509250929050565b6000602082840312156128cb57600080fd5b60006128d98482850161278a565b91505092915050565b6000602082840312156128f457600080fd5b60006129028482850161279f565b91505092915050565b60006020828403121561291d57600080fd5b600061292b848285016127b4565b91505092915050565b60008060006060848603121561294957600080fd5b60006129578682870161279f565b93505060206129688682870161279f565b925050604061297986828701612775565b9150509250925092565b61298c81613080565b82525050565b61299b81613092565b82525050565b60006129ac82612fda565b6129b68185612fe5565b93506129c68185602086016130d5565b6129cf81613198565b840191505092915050565b60006129e7602383612fe5565b91506129f2826131a9565b604082019050919050565b6000612a0a602883612fe5565b9150612a15826131f8565b604082019050919050565b6000612a2d602683612fe5565b9150612a3882613247565b604082019050919050565b6000612a50602283612fe5565b9150612a5b82613296565b604082019050919050565b6000612a73601a83612fe5565b9150612a7e826132e5565b602082019050919050565b6000612a96601b83612fe5565b9150612aa18261330e565b602082019050919050565b6000612ab9600e83612fe5565b9150612ac482613337565b602082019050919050565b6000612adc601283612fe5565b9150612ae782613360565b602082019050919050565b6000612aff602083612fe5565b9150612b0a82613389565b602082019050919050565b6000612b22601683612fe5565b9150612b2d826133b2565b602082019050919050565b6000612b45602183612fe5565b9150612b50826133db565b604082019050919050565b6000612b68601683612fe5565b9150612b738261342a565b602082019050919050565b6000612b8b602583612fe5565b9150612b9682613453565b604082019050919050565b6000612bae601383612fe5565b9150612bb9826134a2565b602082019050919050565b6000612bd1602483612fe5565b9150612bdc826134cb565b604082019050919050565b6000612bf4600c83612fe5565b9150612bff8261351a565b602082019050919050565b6000612c17600f83612fe5565b9150612c2282613543565b602082019050919050565b6000612c3a601f83612fe5565b9150612c458261356c565b602082019050919050565b604082016000820151612c666000850182612c7f565b506020820151612c796020850182612c7f565b50505050565b612c88816130be565b82525050565b612c97816130be565b82525050565b612ca6816130c8565b82525050565b6000602082019050612cc16000830184612983565b92915050565b6000604082019050612cdc6000830185612983565b612ce96020830184612c8e565b9392505050565b6000602082019050612d056000830184612992565b92915050565b600060a082019050612d206000830186612992565b612d2d6020830185612c50565b612d3a6060830184612c50565b949350505050565b60006020820190508181036000830152612d5c81846129a1565b905092915050565b60006020820190508181036000830152612d7d816129da565b9050919050565b60006020820190508181036000830152612d9d816129fd565b9050919050565b60006020820190508181036000830152612dbd81612a20565b9050919050565b60006020820190508181036000830152612ddd81612a43565b9050919050565b60006020820190508181036000830152612dfd81612a66565b9050919050565b60006020820190508181036000830152612e1d81612a89565b9050919050565b60006020820190508181036000830152612e3d81612aac565b9050919050565b60006020820190508181036000830152612e5d81612acf565b9050919050565b60006020820190508181036000830152612e7d81612af2565b9050919050565b60006020820190508181036000830152612e9d81612b15565b9050919050565b60006020820190508181036000830152612ebd81612b38565b9050919050565b60006020820190508181036000830152612edd81612b5b565b9050919050565b60006020820190508181036000830152612efd81612b7e565b9050919050565b60006020820190508181036000830152612f1d81612ba1565b9050919050565b60006020820190508181036000830152612f3d81612bc4565b9050919050565b60006020820190508181036000830152612f5d81612be7565b9050919050565b60006020820190508181036000830152612f7d81612c0a565b9050919050565b60006020820190508181036000830152612f9d81612c2d565b9050919050565b6000602082019050612fb96000830184612c8e565b92915050565b6000602082019050612fd46000830184612c9d565b92915050565b600081519050919050565b600082825260208201905092915050565b6000613001826130be565b915061300c836130be565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156130415761304061313a565b5b828201905092915050565b6000613057826130be565b9150613062836130be565b9250828210156130755761307461313a565b5b828203905092915050565b600061308b8261309e565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60005b838110156130f35780820151818401526020810190506130d8565b83811115613102576000848401525b50505050565b6000600282049050600182168061312057607f821691505b6020821081141561313457613133613169565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000601f19601f8301169050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b7f416464726573733a206973206e6f7420636f6e7472616374206f72206e6f742060008201527f6465706c6f796564000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b7f416464726573733a2073686f756c6420626520616c6c6f776564000000000000600082015250565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b7f4c696d6974206578636565646564000000000000000000000000000000000000600082015250565b7f4d616e61676572206e6f74206578697374730000000000000000000000000000600082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f4d616e6167657220616c72656164792065786973747300000000000000000000600082015250565b7f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360008201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b7f41646472657373206973206e6f74206d616e6167657200000000000000000000600082015250565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f537570706c792065786365656465642063617000000000000000000000000000600082015250565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f5a65726f2062616c616e63650000000000000000000000000000000000000000600082015250565b7f5472616e736665723a206572726f720000000000000000000000000000000000600082015250565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b61359e81613080565b81146135a957600080fd5b50565b6135b581613092565b81146135c057600080fd5b50565b6135cc816130be565b81146135d757600080fd5b5056fe45524332303a206275726e20616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa264697066735822122087a6112305cd2118511f4c021e7df75e3c93530d764f85397fe302b47b08e14164736f6c63430008040033000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000c000000000000000000000000000000000000000000052b7d2dcc80cd2e400000000000000000000000000000000000000000000000014adf4b7320334b9000000000000000000000000000000000000000000000000000000000000000000001053746f626f7820546f6b656e20762e320000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000045354425500000000000000000000000000000000000000000000000000000000

Deployed Bytecode

0x608060405234801561001057600080fd5b50600436106101735760003560e01c80637ccf946d116100de578063a9059cbb11610097578063ce52ee8111610071578063ce52ee81146104d6578063dd62ed3e14610506578063f2fde38b14610536578063fdff9b4d1461055257610173565b8063a9059cbb14610446578063ac18de4314610476578063b14f2a39146104a657610173565b80637ccf946d1461034a5780638da5cb5b1461037a57806395d89b41146103985780639800fc16146103b6578063a0712d68146103e6578063a457c2d71461041657610173565b80633950935111610130578063395093511461026257806342966c681461029257806351e0e26b146102c257806361d027b3146102f257806370a0823114610310578063715018a61461034057610173565b806306fdde0314610178578063095ea7b31461019657806318160ddd146101c657806323b872dd146101e45780632c56462f14610214578063313ce56714610244575b600080fd5b610180610584565b60405161018d9190612d42565b60405180910390f35b6101b060048036038101906101ab919061287d565b610616565b6040516101bd9190612cf0565b60405180910390f35b6101ce610634565b6040516101db9190612fa4565b60405180910390f35b6101fe60048036038101906101f9919061282e565b61063e565b60405161020b9190612cf0565b60405180910390f35b61022e600480360381019061022991906127c9565b61072e565b60405161023b9190612cf0565b60405180910390f35b61024c61086b565b6040516102599190612fbf565b60405180910390f35b61027c6004803603810190610277919061287d565b610882565b6040516102899190612cf0565b60405180910390f35b6102ac60048036038101906102a791906128e2565b610935565b6040516102b99190612cf0565b60405180910390f35b6102dc60048036038101906102d791906127c9565b610bdf565b6040516102e99190612cf0565b60405180910390f35b6102fa610bff565b6040516103079190612cac565b60405180910390f35b61032a600480360381019061032591906127c9565b610c25565b6040516103379190612fa4565b60405180910390f35b610348610c6d565b005b610364600480360381019061035f9190612934565b610cf5565b6040516103719190612cf0565b60405180910390f35b610382610efd565b60405161038f9190612cac565b60405180910390f35b6103a0610f27565b6040516103ad9190612d42565b60405180910390f35b6103d060048036038101906103cb91906127c9565b610fb9565b6040516103dd9190612cf0565b60405180910390f35b61040060048036038101906103fb91906128e2565b6110f6565b60405161040d9190612cf0565b60405180910390f35b610430600480360381019061042b919061287d565b6113a0565b60405161043d9190612cf0565b60405180910390f35b610460600480360381019061045b919061287d565b61146d565b60405161046d9190612cf0565b60405180910390f35b610490600480360381019061048b91906127c9565b61155b565b60405161049d9190612cf0565b60405180910390f35b6104c060048036038101906104bb91906127c9565b611762565b6040516104cd9190612cf0565b60405180910390f35b6104f060048036038101906104eb91906127c9565b61182a565b6040516104fd9190612cf0565b60405180910390f35b610520600480360381019061051b91906127f2565b611af8565b60405161052d9190612fa4565b60405180910390f35b610550600480360381019061054b91906127c9565b611b7f565b005b61056c600480360381019061056791906127c9565b611c77565b60405161057b93929190612d0b565b60405180910390f35b60606003805461059390613108565b80601f01602080910402602001604051908101604052809291908181526020018280546105bf90613108565b801561060c5780601f106105e15761010080835404028352916020019161060c565b820191906000526020600020905b8154815290600101906020018083116105ef57829003601f168201915b5050505050905090565b600061062a610623611cea565b8484611cf2565b6001905092915050565b6000600254905090565b600061065f3373ffffffffffffffffffffffffffffffffffffffff16611ebd565b80156106b45750600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b806106db57506106d93373ffffffffffffffffffffffffffffffffffffffff16611ebd565b155b61071a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161071190612de4565b60405180910390fd5b610725848484611ed0565b90509392505050565b6000610738611cea565b73ffffffffffffffffffffffffffffffffffffffff16610756610efd565b73ffffffffffffffffffffffffffffffffffffffff16146107ac576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107a390612e64565b60405180910390fd5b6107cb8273ffffffffffffffffffffffffffffffffffffffff16611ebd565b61080a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161080190612d84565b60405180910390fd5b6001600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060019050919050565b6000600560009054906101000a900460ff16905090565b600061092b61088f611cea565b8461092685600160006108a0611cea565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611fa990919063ffffffff16565b611cf2565b6001905092915050565b6000600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a900460ff166109c6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109bd90612ec4565b60405180910390fd5b610a1e82600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160010154611fa990919063ffffffff16565b600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101600001541015610aa5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a9c90612e24565b60405180910390fd5b6000610aaf610634565b9050610ac4838261200790919063ffffffff16565b6009541015610b08576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610aff90612f04565b60405180910390fd5b610b6083600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160010154611fa990919063ffffffff16565b600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160010181905550610bd5600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684612051565b6001915050919050565b60066020528060005260406000206000915054906101000a900460ff1681565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610c75611cea565b73ffffffffffffffffffffffffffffffffffffffff16610c93610efd565b73ffffffffffffffffffffffffffffffffffffffff1614610ce9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ce090612e64565b60405180910390fd5b610cf360006121ff565b565b6000610cff611cea565b73ffffffffffffffffffffffffffffffffffffffff16610d1d610efd565b73ffffffffffffffffffffffffffffffffffffffff1614610d73576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d6a90612e64565b60405180910390fd5b600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a900460ff1615610e03576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dfa90612e84565b60405180910390fd5b6001600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160006101000a81548160ff02191690831515021790555082600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206003016000018190555083600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160000181905550600190509392505050565b6000600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060048054610f3690613108565b80601f0160208091040260200160405190810160405280929190818152602001828054610f6290613108565b8015610faf5780601f10610f8457610100808354040283529160200191610faf565b820191906000526020600020905b815481529060010190602001808311610f9257829003601f168201915b5050505050905090565b6000610fc3611cea565b73ffffffffffffffffffffffffffffffffffffffff16610fe1610efd565b73ffffffffffffffffffffffffffffffffffffffff1614611037576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161102e90612e64565b60405180910390fd5b6110568273ffffffffffffffffffffffffffffffffffffffff16611ebd565b611095576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161108c90612d84565b60405180910390fd5b6000600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060019050919050565b6000600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a900460ff16611187576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161117e90612ec4565b60405180910390fd5b6111df82600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060030160010154611fa990919063ffffffff16565b600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600301600001541015611266576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161125d90612e24565b60405180910390fd5b6000611270610634565b90506112858382611fa990919063ffffffff16565b60085410156112c9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112c090612f04565b60405180910390fd5b61132183600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060030160010154611fa990919063ffffffff16565b600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060030160010181905550611396600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846122c5565b6001915050919050565b60006114636113ad611cea565b8461145e8560405180606001604052806025815260200161364b60259139600160006113d7611cea565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546124599092919063ffffffff16565b611cf2565b6001905092915050565b600061148e3373ffffffffffffffffffffffffffffffffffffffff16611ebd565b80156114e35750600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b8061150a57506115083373ffffffffffffffffffffffffffffffffffffffff16611ebd565b155b611549576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161154090612de4565b60405180910390fd5b61155383836124bd565b905092915050565b6000611565611cea565b73ffffffffffffffffffffffffffffffffffffffff16611583610efd565b73ffffffffffffffffffffffffffffffffffffffff16146115d9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115d090612e64565b60405180910390fd5b600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a900460ff16611668576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161165f90612e44565b60405180910390fd5b6000600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160006101000a81548160ff0219169083151502179055506000600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600301600001819055506000600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001016000018190555060019050919050565b600061176c611cea565b73ffffffffffffffffffffffffffffffffffffffff1661178a610efd565b73ffffffffffffffffffffffffffffffffffffffff16146117e0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117d790612e64565b60405180910390fd5b81600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060019050919050565b6000611834611cea565b73ffffffffffffffffffffffffffffffffffffffff16611852610efd565b73ffffffffffffffffffffffffffffffffffffffff16146118a8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161189f90612e64565b60405180910390fd5b600082905060008173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016118e89190612cac565b60206040518083038186803b15801561190057600080fd5b505afa158015611914573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611938919061290b565b11611978576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161196f90612f44565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1663a9059cbb600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016119f09190612cac565b60206040518083038186803b158015611a0857600080fd5b505afa158015611a1c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a40919061290b565b6040518363ffffffff1660e01b8152600401611a5d929190612cc7565b602060405180830381600087803b158015611a7757600080fd5b505af1158015611a8b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611aaf91906128b9565b611aee576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ae590612f64565b60405180910390fd5b6001915050919050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b611b87611cea565b73ffffffffffffffffffffffffffffffffffffffff16611ba5610efd565b73ffffffffffffffffffffffffffffffffffffffff1614611bfb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bf290612e64565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611c6b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c6290612da4565b60405180910390fd5b611c74816121ff565b50565b60076020528060005260406000206000915090508060000160009054906101000a900460ff16908060010160405180604001604052908160008201548152602001600182015481525050908060030160405180604001604052908160008201548152602001600182015481525050905083565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611d62576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d5990612f24565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611dd2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dc990612dc4565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611eb09190612fa4565b60405180910390a3505050565b600080823b905060008111915050919050565b6000611edd8484846124db565b611f9e84611ee9611cea565b611f998560405180606001604052806028815260200161362360289139600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000611f4f611cea565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546124599092919063ffffffff16565b611cf2565b600190509392505050565b6000808284611fb89190612ff6565b905083811015611ffd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ff490612e04565b60405180910390fd5b8091505092915050565b600061204983836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612459565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156120c1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120b890612ea4565b60405180910390fd5b6120cd82600083612770565b612138816040518060600160405280602281526020016135db602291396000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546124599092919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061218f8160025461200790919063ffffffff16565b600281905550600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516121f39190612fa4565b60405180910390a35050565b6000600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612335576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161232c90612f84565b60405180910390fd5b61234160008383612770565b61235681600254611fa990919063ffffffff16565b6002819055506123ad816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611fa990919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161244d9190612fa4565b60405180910390a35050565b60008383111582906124a1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124989190612d42565b60405180910390fd5b50600083856124b0919061304c565b9050809150509392505050565b60006124d16124ca611cea565b84846124db565b6001905092915050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561254b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161254290612ee4565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156125bb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125b290612d64565b60405180910390fd5b6125c6838383612770565b612631816040518060600160405280602681526020016135fd602691396000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546124599092919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506126c4816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611fa990919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516127639190612fa4565b60405180910390a3505050565b505050565b60008135905061278481613595565b92915050565b600081519050612799816135ac565b92915050565b6000813590506127ae816135c3565b92915050565b6000815190506127c3816135c3565b92915050565b6000602082840312156127db57600080fd5b60006127e984828501612775565b91505092915050565b6000806040838503121561280557600080fd5b600061281385828601612775565b925050602061282485828601612775565b9150509250929050565b60008060006060848603121561284357600080fd5b600061285186828701612775565b935050602061286286828701612775565b92505060406128738682870161279f565b9150509250925092565b6000806040838503121561289057600080fd5b600061289e85828601612775565b92505060206128af8582860161279f565b9150509250929050565b6000602082840312156128cb57600080fd5b60006128d98482850161278a565b91505092915050565b6000602082840312156128f457600080fd5b60006129028482850161279f565b91505092915050565b60006020828403121561291d57600080fd5b600061292b848285016127b4565b91505092915050565b60008060006060848603121561294957600080fd5b60006129578682870161279f565b93505060206129688682870161279f565b925050604061297986828701612775565b9150509250925092565b61298c81613080565b82525050565b61299b81613092565b82525050565b60006129ac82612fda565b6129b68185612fe5565b93506129c68185602086016130d5565b6129cf81613198565b840191505092915050565b60006129e7602383612fe5565b91506129f2826131a9565b604082019050919050565b6000612a0a602883612fe5565b9150612a15826131f8565b604082019050919050565b6000612a2d602683612fe5565b9150612a3882613247565b604082019050919050565b6000612a50602283612fe5565b9150612a5b82613296565b604082019050919050565b6000612a73601a83612fe5565b9150612a7e826132e5565b602082019050919050565b6000612a96601b83612fe5565b9150612aa18261330e565b602082019050919050565b6000612ab9600e83612fe5565b9150612ac482613337565b602082019050919050565b6000612adc601283612fe5565b9150612ae782613360565b602082019050919050565b6000612aff602083612fe5565b9150612b0a82613389565b602082019050919050565b6000612b22601683612fe5565b9150612b2d826133b2565b602082019050919050565b6000612b45602183612fe5565b9150612b50826133db565b604082019050919050565b6000612b68601683612fe5565b9150612b738261342a565b602082019050919050565b6000612b8b602583612fe5565b9150612b9682613453565b604082019050919050565b6000612bae601383612fe5565b9150612bb9826134a2565b602082019050919050565b6000612bd1602483612fe5565b9150612bdc826134cb565b604082019050919050565b6000612bf4600c83612fe5565b9150612bff8261351a565b602082019050919050565b6000612c17600f83612fe5565b9150612c2282613543565b602082019050919050565b6000612c3a601f83612fe5565b9150612c458261356c565b602082019050919050565b604082016000820151612c666000850182612c7f565b506020820151612c796020850182612c7f565b50505050565b612c88816130be565b82525050565b612c97816130be565b82525050565b612ca6816130c8565b82525050565b6000602082019050612cc16000830184612983565b92915050565b6000604082019050612cdc6000830185612983565b612ce96020830184612c8e565b9392505050565b6000602082019050612d056000830184612992565b92915050565b600060a082019050612d206000830186612992565b612d2d6020830185612c50565b612d3a6060830184612c50565b949350505050565b60006020820190508181036000830152612d5c81846129a1565b905092915050565b60006020820190508181036000830152612d7d816129da565b9050919050565b60006020820190508181036000830152612d9d816129fd565b9050919050565b60006020820190508181036000830152612dbd81612a20565b9050919050565b60006020820190508181036000830152612ddd81612a43565b9050919050565b60006020820190508181036000830152612dfd81612a66565b9050919050565b60006020820190508181036000830152612e1d81612a89565b9050919050565b60006020820190508181036000830152612e3d81612aac565b9050919050565b60006020820190508181036000830152612e5d81612acf565b9050919050565b60006020820190508181036000830152612e7d81612af2565b9050919050565b60006020820190508181036000830152612e9d81612b15565b9050919050565b60006020820190508181036000830152612ebd81612b38565b9050919050565b60006020820190508181036000830152612edd81612b5b565b9050919050565b60006020820190508181036000830152612efd81612b7e565b9050919050565b60006020820190508181036000830152612f1d81612ba1565b9050919050565b60006020820190508181036000830152612f3d81612bc4565b9050919050565b60006020820190508181036000830152612f5d81612be7565b9050919050565b60006020820190508181036000830152612f7d81612c0a565b9050919050565b60006020820190508181036000830152612f9d81612c2d565b9050919050565b6000602082019050612fb96000830184612c8e565b92915050565b6000602082019050612fd46000830184612c9d565b92915050565b600081519050919050565b600082825260208201905092915050565b6000613001826130be565b915061300c836130be565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156130415761304061313a565b5b828201905092915050565b6000613057826130be565b9150613062836130be565b9250828210156130755761307461313a565b5b828203905092915050565b600061308b8261309e565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60005b838110156130f35780820151818401526020810190506130d8565b83811115613102576000848401525b50505050565b6000600282049050600182168061312057607f821691505b6020821081141561313457613133613169565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000601f19601f8301169050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b7f416464726573733a206973206e6f7420636f6e7472616374206f72206e6f742060008201527f6465706c6f796564000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b7f416464726573733a2073686f756c6420626520616c6c6f776564000000000000600082015250565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b7f4c696d6974206578636565646564000000000000000000000000000000000000600082015250565b7f4d616e61676572206e6f74206578697374730000000000000000000000000000600082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f4d616e6167657220616c72656164792065786973747300000000000000000000600082015250565b7f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360008201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b7f41646472657373206973206e6f74206d616e6167657200000000000000000000600082015250565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f537570706c792065786365656465642063617000000000000000000000000000600082015250565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f5a65726f2062616c616e63650000000000000000000000000000000000000000600082015250565b7f5472616e736665723a206572726f720000000000000000000000000000000000600082015250565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b61359e81613080565b81146135a957600080fd5b50565b6135b581613092565b81146135c057600080fd5b50565b6135cc816130be565b81146135d757600080fd5b5056fe45524332303a206275726e20616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa264697066735822122087a6112305cd2118511f4c021e7df75e3c93530d764f85397fe302b47b08e14164736f6c63430008040033

Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)

000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000c000000000000000000000000000000000000000000052b7d2dcc80cd2e400000000000000000000000000000000000000000000000014adf4b7320334b9000000000000000000000000000000000000000000000000000000000000000000001053746f626f7820546f6b656e20762e320000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000045354425500000000000000000000000000000000000000000000000000000000

-----Decoded View---------------
Arg [0] : name (string): Stobox Token v.2
Arg [1] : symbol (string): STBU
Arg [2] : maxSupply (uint256): 100000000000000000000000000
Arg [3] : minSupply (uint256): 25000000000000000000000000

-----Encoded View---------------
8 Constructor Arguments found :
Arg [0] : 0000000000000000000000000000000000000000000000000000000000000080
Arg [1] : 00000000000000000000000000000000000000000000000000000000000000c0
Arg [2] : 00000000000000000000000000000000000000000052b7d2dcc80cd2e4000000
Arg [3] : 00000000000000000000000000000000000000000014adf4b7320334b9000000
Arg [4] : 0000000000000000000000000000000000000000000000000000000000000010
Arg [5] : 53746f626f7820546f6b656e20762e3200000000000000000000000000000000
Arg [6] : 0000000000000000000000000000000000000000000000000000000000000004
Arg [7] : 5354425500000000000000000000000000000000000000000000000000000000


Deployed Bytecode Sourcemap

121:3819:5:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2159:81:2;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4195:166;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3202:98;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2544:194:5;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1746:238;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3061:81:2;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5533:215;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3191:441:5;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;220:48;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;388:23;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3358:117:2;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1597:92:4;;;:::i;:::-;;1115:333:5;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;965:85:4;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2353::2;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1990:242:5;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2744:441;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6235:266:2;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2376:162:5;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1454:286;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2238:132;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3638:299;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3908:149:2;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1838:189:4;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;274:43:5;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;2159:81:2;2196:13;2228:5;2221:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2159:81;:::o;4195:166::-;4278:4;4294:39;4303:12;:10;:12::i;:::-;4317:7;4326:6;4294:8;:39::i;:::-;4350:4;4343:11;;4195:166;;;;:::o;3202:98::-;3255:7;3281:12;;3274:19;;3202:98;:::o;2544:194:5:-;2663:4;631:32;639:10;631:30;;;:32::i;:::-;:64;;;;;667:16;:28;684:10;667:28;;;;;;;;;;;;;;;;;;;;;;;;;631:64;:101;;;;700:32;708:10;700:30;;;:32::i;:::-;699:33;631:101;623:152;;;;;;;;;;;;:::i;:::-;;;;;;;;;2686:45:::1;2705:6;2713:9;2724:6;2686:18;:45::i;:::-;2679:52;;2544:194:::0;;;;;:::o;1746:238::-;1821:4;1188:12:4;:10;:12::i;:::-;1177:23;;:7;:5;:7::i;:::-;:23;;;1169:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;1845:22:5::1;:9;:20;;;:22::i;:::-;1837:75;;;;;;;;;;;;:::i;:::-;;;;;;;;;1952:4;1922:16;:27;1939:9;1922:27;;;;;;;;;;;;;;;;:34;;;;;;;;;;;;;;;;;;1973:4;1966:11;;1746:238:::0;;;:::o;3061:81:2:-;3102:5;3126:9;;;;;;;;;;;3119:16;;3061:81;:::o;5533:215::-;5621:4;5637:83;5646:12;:10;:12::i;:::-;5660:7;5669:50;5708:10;5669:11;:25;5681:12;:10;:12::i;:::-;5669:25;;;;;;;;;;;;;;;:34;5695:7;5669:34;;;;;;;;;;;;;;;;:38;;:50;;;;:::i;:::-;5637:8;:83::i;:::-;5737:4;5730:11;;5533:215;;;;:::o;3191:441:5:-;3248:4;840:8;:20;849:10;840:20;;;;;;;;;;;;;;;:27;;;;;;;;;;;;832:62;;;;;;;;;;;;:::i;:::-;;;;;;;;;3305:44:::1;3342:6;3305:8;:20;3314:10;3305:20;;;;;;;;;;;;;;;:25;;:32;;;:36;;:44;;;;:::i;:::-;3272:8;:20;3281:10;3272:20;;;;;;;;;;;;;;;:25;;:29;;;:77;;3264:104;;;;;;;;;;;;:::i;:::-;;;;;;;;;3378:14;3395:13;:11;:13::i;:::-;3378:30;;3440:18;3451:6;3440;:10;;:18;;;;:::i;:::-;3426:10;;:32;;3418:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;3527:44;3564:6;3527:8;:20;3536:10;3527:20;;;;;;;;;;;;;;;:25;;:32;;;:36;;:44;;;;:::i;:::-;3492:8;:20;3501:10;3492:20;;;;;;;;;;;;;;;:25;;:32;;:79;;;;3581:23;3587:8;;;;;;;;;;;3597:6;3581:5;:23::i;:::-;3621:4;3614:11;;;3191:441:::0;;;:::o;220:48::-;;;;;;;;;;;;;;;;;;;;;;:::o;388:23::-;;;;;;;;;;;;;:::o;3358:117:2:-;3424:7;3450:9;:18;3460:7;3450:18;;;;;;;;;;;;;;;;3443:25;;3358:117;;;:::o;1597:92:4:-;1188:12;:10;:12::i;:::-;1177:23;;:7;:5;:7::i;:::-;:23;;;1169:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;1661:21:::1;1679:1;1661:9;:21::i;:::-;1597:92::o:0;1115:333:5:-;1211:4;1188:12:4;:10;:12::i;:::-;1177:23;;:7;:5;:7::i;:::-;:23;;;1169:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;1236:8:5::1;:17;1245:7;1236:17;;;;;;;;;;;;;;;:24;;;;;;;;;;;;1235:25;1227:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;1324:4;1297:8;:17;1306:7;1297:17;;;;;;;;;;;;;;;:24;;;:31;;;;;;;;;;;;;;;;;;1367:7;1338:8;:17;1347:7;1338:17;;;;;;;;;;;;;;;:22;;:26;;:36;;;;1413:7;1384:8;:17;1393:7;1384:17;;;;;;;;;;;;;;;:22;;:26;;:36;;;;1437:4;1430:11;;1115:333:::0;;;;;:::o;965:85:4:-;1011:7;1037:6;;;;;;;;;;;1030:13;;965:85;:::o;2353::2:-;2392:13;2424:7;2417:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2353:85;:::o;1990:242:5:-;2068:4;1188:12:4;:10;:12::i;:::-;1177:23;;:7;:5;:7::i;:::-;:23;;;1169:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;2092:22:5::1;:9;:20;;;:22::i;:::-;2084:75;;;;;;;;;;;;:::i;:::-;;;;;;;;;2199:5;2169:16;:27;2186:9;2169:27;;;;;;;;;;;;;;;;:35;;;;;;;;;;;;;;;;;;2221:4;2214:11;;1990:242:::0;;;:::o;2744:441::-;2801:4;840:8;:20;849:10;840:20;;;;;;;;;;;;;;;:27;;;;;;;;;;;;832:62;;;;;;;;;;;;:::i;:::-;;;;;;;;;2858:44:::1;2895:6;2858:8;:20;2867:10;2858:20;;;;;;;;;;;;;;;:25;;:32;;;:36;;:44;;;;:::i;:::-;2825:8;:20;2834:10;2825:20;;;;;;;;;;;;;;;:25;;:29;;;:77;;2817:104;;;;;;;;;;;;:::i;:::-;;;;;;;;;2931:14;2948:13;:11;:13::i;:::-;2931:30;;2993:18;3004:6;2993;:10;;:18;;;;:::i;:::-;2979:10;;:32;;2971:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;3080:44;3117:6;3080:8;:20;3089:10;3080:20;;;;;;;;;;;;;;;:25;;:32;;;:36;;:44;;;;:::i;:::-;3045:8;:20;3054:10;3045:20;;;;;;;;;;;;;;;:25;;:32;;:79;;;;3134:23;3140:8;;;;;;;;;;;3150:6;3134:5;:23::i;:::-;3174:4;3167:11;;;2744:441:::0;;;:::o;6235:266:2:-;6328:4;6344:129;6353:12;:10;:12::i;:::-;6367:7;6376:96;6415:15;6376:96;;;;;;;;;;;;;;;;;:11;:25;6388:12;:10;:12::i;:::-;6376:25;;;;;;;;;;;;;;;:34;6402:7;6376:34;;;;;;;;;;;;;;;;:38;;:96;;;;;:::i;:::-;6344:8;:129::i;:::-;6490:4;6483:11;;6235:266;;;;:::o;2376:162:5:-;2475:4;631:32;639:10;631:30;;;:32::i;:::-;:64;;;;;667:16;:28;684:10;667:28;;;;;;;;;;;;;;;;;;;;;;;;;631:64;:101;;;;700:32;708:10;700:30;;;:32::i;:::-;699:33;631:101;623:152;;;;;;;;;;;;:::i;:::-;;;;;;;;;2498:33:::1;2513:9;2524:6;2498:14;:33::i;:::-;2491:40;;2376:162:::0;;;;:::o;1454:286::-;1519:4;1188:12:4;:10;:12::i;:::-;1177:23;;:7;:5;:7::i;:::-;:23;;;1169:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;1543:8:5::1;:17;1552:7;1543:17;;;;;;;;;;;;;;;:24;;;;;;;;;;;;1535:55;;;;;;;;;;;;:::i;:::-;;;;;;;;;1627:5;1600:8;:17;1609:7;1600:17;;;;;;;;;;;;;;;:24;;;:32;;;;;;;;;;;;;;;;;;1671:1;1642:8;:17;1651:7;1642:17;;;;;;;;;;;;;;;:22;;:26;;:30;;;;1711:1;1682:8;:17;1691:7;1682:17;;;;;;;;;;;;;;;:22;;:26;;:30;;;;1729:4;1722:11;;1454:286:::0;;;:::o;2238:132::-;2306:4;1188:12:4;:10;:12::i;:::-;1177:23;;:7;:5;:7::i;:::-;:23;;;1169:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;2333:9:5::1;2322:8;;:20;;;;;;;;;;;;;;;;;;2359:4;2352:11;;2238:132:::0;;;:::o;3638:299::-;3706:4;1188:12:4;:10;:12::i;:::-;1177:23;;:7;:5;:7::i;:::-;:23;;;1169:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;3722:11:5::1;3743:5;3722:27;;3799:1;3767:4;:14;;;3790:4;3767:29;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:33;3759:58;;;;;;;;;;;;:::i;:::-;;;;;;;;;3835:4;:13;;;3849:8;;;;;;;;;;;3859:4;:14;;;3882:4;3859:29;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3835:54;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3827:82;;;;;;;;;;;;:::i;:::-;;;;;;;;;3926:4;3919:11;;;3638:299:::0;;;:::o;3908:149:2:-;3997:7;4023:11;:18;4035:5;4023:18;;;;;;;;;;;;;;;:27;4042:7;4023:27;;;;;;;;;;;;;;;;4016:34;;3908:149;;;;:::o;1838:189:4:-;1188:12;:10;:12::i;:::-;1177:23;;:7;:5;:7::i;:::-;:23;;;1169:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;1946:1:::1;1926:22;;:8;:22;;;;1918:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;2001:19;2011:8;2001:9;:19::i;:::-;1838:189:::0;:::o;274:43:5:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;557:96:1:-;610:7;636:10;629:17;;557:96;:::o;9299:340:2:-;9417:1;9400:19;;:5;:19;;;;9392:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9497:1;9478:21;;:7;:21;;;;9470:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9579:6;9549:11;:18;9561:5;9549:18;;;;;;;;;;;;;;;:27;9568:7;9549:27;;;;;;;;;;;;;;;:36;;;;9616:7;9600:32;;9609:5;9600:32;;;9625:6;9600:32;;;;;;:::i;:::-;;;;;;;;9299:340;;;:::o;685:377:0:-;745:4;948:12;1013:7;1001:20;993:28;;1054:1;1047:4;:8;1040:15;;;685:377;;;:::o;4821:317:2:-;4927:4;4943:36;4953:6;4961:9;4972:6;4943:9;:36::i;:::-;4989:121;4998:6;5006:12;:10;:12::i;:::-;5020:89;5058:6;5020:89;;;;;;;;;;;;;;;;;:11;:19;5032:6;5020:19;;;;;;;;;;;;;;;:33;5040:12;:10;:12::i;:::-;5020:33;;;;;;;;;;;;;;;;:37;;:89;;;;;:::i;:::-;4989:8;:121::i;:::-;5127:4;5120:11;;4821:317;;;;;:::o;841:176:6:-;899:7;918:9;934:1;930;:5;;;;:::i;:::-;918:17;;958:1;953;:6;;945:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;1009:1;1002:8;;;841:176;;;;:::o;1288:134::-;1346:7;1372:43;1376:1;1379;1372:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;1365:50;;1288:134;;;;:::o;8464:410:2:-;8566:1;8547:21;;:7;:21;;;;8539:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;8617:49;8638:7;8655:1;8659:6;8617:20;:49::i;:::-;8698:68;8721:6;8698:68;;;;;;;;;;;;;;;;;:9;:18;8708:7;8698:18;;;;;;;;;;;;;;;;:22;;:68;;;;;:::i;:::-;8677:9;:18;8687:7;8677:18;;;;;;;;;;;;;;;:89;;;;8791:24;8808:6;8791:12;;:16;;:24;;;;:::i;:::-;8776:12;:39;;;;8856:1;8830:37;;8839:7;8830:37;;;8860:6;8830:37;;;;;;:::i;:::-;;;;;;;;8464:410;;:::o;2033:169:4:-;2088:16;2107:6;;;;;;;;;;;2088:25;;2132:8;2123:6;;:17;;;;;;;;;;;;;;;;;;2186:8;2155:40;;2176:8;2155:40;;;;;;;;;;;;2033:169;;:::o;7775:370:2:-;7877:1;7858:21;;:7;:21;;;;7850:65;;;;;;;;;;;;:::i;:::-;;;;;;;;;7926:49;7955:1;7959:7;7968:6;7926:20;:49::i;:::-;8001:24;8018:6;8001:12;;:16;;:24;;;;:::i;:::-;7986:12;:39;;;;8056:30;8079:6;8056:9;:18;8066:7;8056:18;;;;;;;;;;;;;;;;:22;;:30;;;;:::i;:::-;8035:9;:18;8045:7;8035:18;;;;;;;;;;;;;;;:51;;;;8122:7;8101:37;;8118:1;8101:37;;;8131:6;8101:37;;;;;;:::i;:::-;;;;;;;;7775:370;;:::o;1713:187:6:-;1799:7;1831:1;1826;:6;;1834:12;1818:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;1857:9;1873:1;1869;:5;;;;:::i;:::-;1857:17;;1892:1;1885:8;;;1713:187;;;;;:::o;3678:172:2:-;3764:4;3780:42;3790:12;:10;:12::i;:::-;3804:9;3815:6;3780:9;:42::i;:::-;3839:4;3832:11;;3678:172;;;;:::o;6975:530::-;7098:1;7080:20;;:6;:20;;;;7072:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;7181:1;7160:23;;:9;:23;;;;7152:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;7234:47;7255:6;7263:9;7274:6;7234:20;:47::i;:::-;7312:71;7334:6;7312:71;;;;;;;;;;;;;;;;;:9;:17;7322:6;7312:17;;;;;;;;;;;;;;;;:21;;:71;;;;;:::i;:::-;7292:9;:17;7302:6;7292:17;;;;;;;;;;;;;;;:91;;;;7416:32;7441:6;7416:9;:20;7426:9;7416:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;7393:9;:20;7403:9;7393:20;;;;;;;;;;;;;;;:55;;;;7480:9;7463:35;;7472:6;7463:35;;;7491:6;7463:35;;;;;;:::i;:::-;;;;;;;;6975:530;;;:::o;10637:92::-;;;;:::o;7:139:7:-;53:5;91:6;78:20;69:29;;107:33;134:5;107:33;:::i;:::-;59:87;;;;:::o;152:137::-;206:5;237:6;231:13;222:22;;253:30;277:5;253:30;:::i;:::-;212:77;;;;:::o;295:139::-;341:5;379:6;366:20;357:29;;395:33;422:5;395:33;:::i;:::-;347:87;;;;:::o;440:143::-;497:5;528:6;522:13;513:22;;544:33;571:5;544:33;:::i;:::-;503:80;;;;:::o;589:262::-;648:6;697:2;685:9;676:7;672:23;668:32;665:2;;;713:1;710;703:12;665:2;756:1;781:53;826:7;817:6;806:9;802:22;781:53;:::i;:::-;771:63;;727:117;655:196;;;;:::o;857:407::-;925:6;933;982:2;970:9;961:7;957:23;953:32;950:2;;;998:1;995;988:12;950:2;1041:1;1066:53;1111:7;1102:6;1091:9;1087:22;1066:53;:::i;:::-;1056:63;;1012:117;1168:2;1194:53;1239:7;1230:6;1219:9;1215:22;1194:53;:::i;:::-;1184:63;;1139:118;940:324;;;;;:::o;1270:552::-;1347:6;1355;1363;1412:2;1400:9;1391:7;1387:23;1383:32;1380:2;;;1428:1;1425;1418:12;1380:2;1471:1;1496:53;1541:7;1532:6;1521:9;1517:22;1496:53;:::i;:::-;1486:63;;1442:117;1598:2;1624:53;1669:7;1660:6;1649:9;1645:22;1624:53;:::i;:::-;1614:63;;1569:118;1726:2;1752:53;1797:7;1788:6;1777:9;1773:22;1752:53;:::i;:::-;1742:63;;1697:118;1370:452;;;;;:::o;1828:407::-;1896:6;1904;1953:2;1941:9;1932:7;1928:23;1924:32;1921:2;;;1969:1;1966;1959:12;1921:2;2012:1;2037:53;2082:7;2073:6;2062:9;2058:22;2037:53;:::i;:::-;2027:63;;1983:117;2139:2;2165:53;2210:7;2201:6;2190:9;2186:22;2165:53;:::i;:::-;2155:63;;2110:118;1911:324;;;;;:::o;2241:278::-;2308:6;2357:2;2345:9;2336:7;2332:23;2328:32;2325:2;;;2373:1;2370;2363:12;2325:2;2416:1;2441:61;2494:7;2485:6;2474:9;2470:22;2441:61;:::i;:::-;2431:71;;2387:125;2315:204;;;;:::o;2525:262::-;2584:6;2633:2;2621:9;2612:7;2608:23;2604:32;2601:2;;;2649:1;2646;2639:12;2601:2;2692:1;2717:53;2762:7;2753:6;2742:9;2738:22;2717:53;:::i;:::-;2707:63;;2663:117;2591:196;;;;:::o;2793:284::-;2863:6;2912:2;2900:9;2891:7;2887:23;2883:32;2880:2;;;2928:1;2925;2918:12;2880:2;2971:1;2996:64;3052:7;3043:6;3032:9;3028:22;2996:64;:::i;:::-;2986:74;;2942:128;2870:207;;;;:::o;3083:552::-;3160:6;3168;3176;3225:2;3213:9;3204:7;3200:23;3196:32;3193:2;;;3241:1;3238;3231:12;3193:2;3284:1;3309:53;3354:7;3345:6;3334:9;3330:22;3309:53;:::i;:::-;3299:63;;3255:117;3411:2;3437:53;3482:7;3473:6;3462:9;3458:22;3437:53;:::i;:::-;3427:63;;3382:118;3539:2;3565:53;3610:7;3601:6;3590:9;3586:22;3565:53;:::i;:::-;3555:63;;3510:118;3183:452;;;;;:::o;3641:118::-;3728:24;3746:5;3728:24;:::i;:::-;3723:3;3716:37;3706:53;;:::o;3765:109::-;3846:21;3861:5;3846:21;:::i;:::-;3841:3;3834:34;3824:50;;:::o;3880:364::-;3968:3;3996:39;4029:5;3996:39;:::i;:::-;4051:71;4115:6;4110:3;4051:71;:::i;:::-;4044:78;;4131:52;4176:6;4171:3;4164:4;4157:5;4153:16;4131:52;:::i;:::-;4208:29;4230:6;4208:29;:::i;:::-;4203:3;4199:39;4192:46;;3972:272;;;;;:::o;4250:366::-;4392:3;4413:67;4477:2;4472:3;4413:67;:::i;:::-;4406:74;;4489:93;4578:3;4489:93;:::i;:::-;4607:2;4602:3;4598:12;4591:19;;4396:220;;;:::o;4622:366::-;4764:3;4785:67;4849:2;4844:3;4785:67;:::i;:::-;4778:74;;4861:93;4950:3;4861:93;:::i;:::-;4979:2;4974:3;4970:12;4963:19;;4768:220;;;:::o;4994:366::-;5136:3;5157:67;5221:2;5216:3;5157:67;:::i;:::-;5150:74;;5233:93;5322:3;5233:93;:::i;:::-;5351:2;5346:3;5342:12;5335:19;;5140:220;;;:::o;5366:366::-;5508:3;5529:67;5593:2;5588:3;5529:67;:::i;:::-;5522:74;;5605:93;5694:3;5605:93;:::i;:::-;5723:2;5718:3;5714:12;5707:19;;5512:220;;;:::o;5738:366::-;5880:3;5901:67;5965:2;5960:3;5901:67;:::i;:::-;5894:74;;5977:93;6066:3;5977:93;:::i;:::-;6095:2;6090:3;6086:12;6079:19;;5884:220;;;:::o;6110:366::-;6252:3;6273:67;6337:2;6332:3;6273:67;:::i;:::-;6266:74;;6349:93;6438:3;6349:93;:::i;:::-;6467:2;6462:3;6458:12;6451:19;;6256:220;;;:::o;6482:366::-;6624:3;6645:67;6709:2;6704:3;6645:67;:::i;:::-;6638:74;;6721:93;6810:3;6721:93;:::i;:::-;6839:2;6834:3;6830:12;6823:19;;6628:220;;;:::o;6854:366::-;6996:3;7017:67;7081:2;7076:3;7017:67;:::i;:::-;7010:74;;7093:93;7182:3;7093:93;:::i;:::-;7211:2;7206:3;7202:12;7195:19;;7000:220;;;:::o;7226:366::-;7368:3;7389:67;7453:2;7448:3;7389:67;:::i;:::-;7382:74;;7465:93;7554:3;7465:93;:::i;:::-;7583:2;7578:3;7574:12;7567:19;;7372:220;;;:::o;7598:366::-;7740:3;7761:67;7825:2;7820:3;7761:67;:::i;:::-;7754:74;;7837:93;7926:3;7837:93;:::i;:::-;7955:2;7950:3;7946:12;7939:19;;7744:220;;;:::o;7970:366::-;8112:3;8133:67;8197:2;8192:3;8133:67;:::i;:::-;8126:74;;8209:93;8298:3;8209:93;:::i;:::-;8327:2;8322:3;8318:12;8311:19;;8116:220;;;:::o;8342:366::-;8484:3;8505:67;8569:2;8564:3;8505:67;:::i;:::-;8498:74;;8581:93;8670:3;8581:93;:::i;:::-;8699:2;8694:3;8690:12;8683:19;;8488:220;;;:::o;8714:366::-;8856:3;8877:67;8941:2;8936:3;8877:67;:::i;:::-;8870:74;;8953:93;9042:3;8953:93;:::i;:::-;9071:2;9066:3;9062:12;9055:19;;8860:220;;;:::o;9086:366::-;9228:3;9249:67;9313:2;9308:3;9249:67;:::i;:::-;9242:74;;9325:93;9414:3;9325:93;:::i;:::-;9443:2;9438:3;9434:12;9427:19;;9232:220;;;:::o;9458:366::-;9600:3;9621:67;9685:2;9680:3;9621:67;:::i;:::-;9614:74;;9697:93;9786:3;9697:93;:::i;:::-;9815:2;9810:3;9806:12;9799:19;;9604:220;;;:::o;9830:366::-;9972:3;9993:67;10057:2;10052:3;9993:67;:::i;:::-;9986:74;;10069:93;10158:3;10069:93;:::i;:::-;10187:2;10182:3;10178:12;10171:19;;9976:220;;;:::o;10202:366::-;10344:3;10365:67;10429:2;10424:3;10365:67;:::i;:::-;10358:74;;10441:93;10530:3;10441:93;:::i;:::-;10559:2;10554:3;10550:12;10543:19;;10348:220;;;:::o;10574:366::-;10716:3;10737:67;10801:2;10796:3;10737:67;:::i;:::-;10730:74;;10813:93;10902:3;10813:93;:::i;:::-;10931:2;10926:3;10922:12;10915:19;;10720:220;;;:::o;10994:506::-;11139:4;11134:3;11130:14;11225:4;11218:5;11214:16;11208:23;11244:63;11301:4;11296:3;11292:14;11278:12;11244:63;:::i;:::-;11154:163;11401:4;11394:5;11390:16;11384:23;11420:63;11477:4;11472:3;11468:14;11454:12;11420:63;:::i;:::-;11327:166;11108:392;;;:::o;11506:108::-;11583:24;11601:5;11583:24;:::i;:::-;11578:3;11571:37;11561:53;;:::o;11620:118::-;11707:24;11725:5;11707:24;:::i;:::-;11702:3;11695:37;11685:53;;:::o;11744:112::-;11827:22;11843:5;11827:22;:::i;:::-;11822:3;11815:35;11805:51;;:::o;11862:222::-;11955:4;11993:2;11982:9;11978:18;11970:26;;12006:71;12074:1;12063:9;12059:17;12050:6;12006:71;:::i;:::-;11960:124;;;;:::o;12090:332::-;12211:4;12249:2;12238:9;12234:18;12226:26;;12262:71;12330:1;12319:9;12315:17;12306:6;12262:71;:::i;:::-;12343:72;12411:2;12400:9;12396:18;12387:6;12343:72;:::i;:::-;12216:206;;;;;:::o;12428:210::-;12515:4;12553:2;12542:9;12538:18;12530:26;;12566:65;12628:1;12617:9;12613:17;12604:6;12566:65;:::i;:::-;12520:118;;;;:::o;12644:623::-;12883:4;12921:3;12910:9;12906:19;12898:27;;12935:65;12997:1;12986:9;12982:17;12973:6;12935:65;:::i;:::-;13010:120;13126:2;13115:9;13111:18;13102:6;13010:120;:::i;:::-;13140;13256:2;13245:9;13241:18;13232:6;13140:120;:::i;:::-;12888:379;;;;;;:::o;13273:313::-;13386:4;13424:2;13413:9;13409:18;13401:26;;13473:9;13467:4;13463:20;13459:1;13448:9;13444:17;13437:47;13501:78;13574:4;13565:6;13501:78;:::i;:::-;13493:86;;13391:195;;;;:::o;13592:419::-;13758:4;13796:2;13785:9;13781:18;13773:26;;13845:9;13839:4;13835:20;13831:1;13820:9;13816:17;13809:47;13873:131;13999:4;13873:131;:::i;:::-;13865:139;;13763:248;;;:::o;14017:419::-;14183:4;14221:2;14210:9;14206:18;14198:26;;14270:9;14264:4;14260:20;14256:1;14245:9;14241:17;14234:47;14298:131;14424:4;14298:131;:::i;:::-;14290:139;;14188:248;;;:::o;14442:419::-;14608:4;14646:2;14635:9;14631:18;14623:26;;14695:9;14689:4;14685:20;14681:1;14670:9;14666:17;14659:47;14723:131;14849:4;14723:131;:::i;:::-;14715:139;;14613:248;;;:::o;14867:419::-;15033:4;15071:2;15060:9;15056:18;15048:26;;15120:9;15114:4;15110:20;15106:1;15095:9;15091:17;15084:47;15148:131;15274:4;15148:131;:::i;:::-;15140:139;;15038:248;;;:::o;15292:419::-;15458:4;15496:2;15485:9;15481:18;15473:26;;15545:9;15539:4;15535:20;15531:1;15520:9;15516:17;15509:47;15573:131;15699:4;15573:131;:::i;:::-;15565:139;;15463:248;;;:::o;15717:419::-;15883:4;15921:2;15910:9;15906:18;15898:26;;15970:9;15964:4;15960:20;15956:1;15945:9;15941:17;15934:47;15998:131;16124:4;15998:131;:::i;:::-;15990:139;;15888:248;;;:::o;16142:419::-;16308:4;16346:2;16335:9;16331:18;16323:26;;16395:9;16389:4;16385:20;16381:1;16370:9;16366:17;16359:47;16423:131;16549:4;16423:131;:::i;:::-;16415:139;;16313:248;;;:::o;16567:419::-;16733:4;16771:2;16760:9;16756:18;16748:26;;16820:9;16814:4;16810:20;16806:1;16795:9;16791:17;16784:47;16848:131;16974:4;16848:131;:::i;:::-;16840:139;;16738:248;;;:::o;16992:419::-;17158:4;17196:2;17185:9;17181:18;17173:26;;17245:9;17239:4;17235:20;17231:1;17220:9;17216:17;17209:47;17273:131;17399:4;17273:131;:::i;:::-;17265:139;;17163:248;;;:::o;17417:419::-;17583:4;17621:2;17610:9;17606:18;17598:26;;17670:9;17664:4;17660:20;17656:1;17645:9;17641:17;17634:47;17698:131;17824:4;17698:131;:::i;:::-;17690:139;;17588:248;;;:::o;17842:419::-;18008:4;18046:2;18035:9;18031:18;18023:26;;18095:9;18089:4;18085:20;18081:1;18070:9;18066:17;18059:47;18123:131;18249:4;18123:131;:::i;:::-;18115:139;;18013:248;;;:::o;18267:419::-;18433:4;18471:2;18460:9;18456:18;18448:26;;18520:9;18514:4;18510:20;18506:1;18495:9;18491:17;18484:47;18548:131;18674:4;18548:131;:::i;:::-;18540:139;;18438:248;;;:::o;18692:419::-;18858:4;18896:2;18885:9;18881:18;18873:26;;18945:9;18939:4;18935:20;18931:1;18920:9;18916:17;18909:47;18973:131;19099:4;18973:131;:::i;:::-;18965:139;;18863:248;;;:::o;19117:419::-;19283:4;19321:2;19310:9;19306:18;19298:26;;19370:9;19364:4;19360:20;19356:1;19345:9;19341:17;19334:47;19398:131;19524:4;19398:131;:::i;:::-;19390:139;;19288:248;;;:::o;19542:419::-;19708:4;19746:2;19735:9;19731:18;19723:26;;19795:9;19789:4;19785:20;19781:1;19770:9;19766:17;19759:47;19823:131;19949:4;19823:131;:::i;:::-;19815:139;;19713:248;;;:::o;19967:419::-;20133:4;20171:2;20160:9;20156:18;20148:26;;20220:9;20214:4;20210:20;20206:1;20195:9;20191:17;20184:47;20248:131;20374:4;20248:131;:::i;:::-;20240:139;;20138:248;;;:::o;20392:419::-;20558:4;20596:2;20585:9;20581:18;20573:26;;20645:9;20639:4;20635:20;20631:1;20620:9;20616:17;20609:47;20673:131;20799:4;20673:131;:::i;:::-;20665:139;;20563:248;;;:::o;20817:419::-;20983:4;21021:2;21010:9;21006:18;20998:26;;21070:9;21064:4;21060:20;21056:1;21045:9;21041:17;21034:47;21098:131;21224:4;21098:131;:::i;:::-;21090:139;;20988:248;;;:::o;21242:222::-;21335:4;21373:2;21362:9;21358:18;21350:26;;21386:71;21454:1;21443:9;21439:17;21430:6;21386:71;:::i;:::-;21340:124;;;;:::o;21470:214::-;21559:4;21597:2;21586:9;21582:18;21574:26;;21610:67;21674:1;21663:9;21659:17;21650:6;21610:67;:::i;:::-;21564:120;;;;:::o;21690:99::-;21742:6;21776:5;21770:12;21760:22;;21749:40;;;:::o;21795:169::-;21879:11;21913:6;21908:3;21901:19;21953:4;21948:3;21944:14;21929:29;;21891:73;;;;:::o;21970:305::-;22010:3;22029:20;22047:1;22029:20;:::i;:::-;22024:25;;22063:20;22081:1;22063:20;:::i;:::-;22058:25;;22217:1;22149:66;22145:74;22142:1;22139:81;22136:2;;;22223:18;;:::i;:::-;22136:2;22267:1;22264;22260:9;22253:16;;22014:261;;;;:::o;22281:191::-;22321:4;22341:20;22359:1;22341:20;:::i;:::-;22336:25;;22375:20;22393:1;22375:20;:::i;:::-;22370:25;;22414:1;22411;22408:8;22405:2;;;22419:18;;:::i;:::-;22405:2;22464:1;22461;22457:9;22449:17;;22326:146;;;;:::o;22478:96::-;22515:7;22544:24;22562:5;22544:24;:::i;:::-;22533:35;;22523:51;;;:::o;22580:90::-;22614:7;22657:5;22650:13;22643:21;22632:32;;22622:48;;;:::o;22676:126::-;22713:7;22753:42;22746:5;22742:54;22731:65;;22721:81;;;:::o;22808:77::-;22845:7;22874:5;22863:16;;22853:32;;;:::o;22891:86::-;22926:7;22966:4;22959:5;22955:16;22944:27;;22934:43;;;:::o;22983:307::-;23051:1;23061:113;23075:6;23072:1;23069:13;23061:113;;;23160:1;23155:3;23151:11;23145:18;23141:1;23136:3;23132:11;23125:39;23097:2;23094:1;23090:10;23085:15;;23061:113;;;23192:6;23189:1;23186:13;23183:2;;;23272:1;23263:6;23258:3;23254:16;23247:27;23183:2;23032:258;;;;:::o;23296:320::-;23340:6;23377:1;23371:4;23367:12;23357:22;;23424:1;23418:4;23414:12;23445:18;23435:2;;23501:4;23493:6;23489:17;23479:27;;23435:2;23563;23555:6;23552:14;23532:18;23529:38;23526:2;;;23582:18;;:::i;:::-;23526:2;23347:269;;;;:::o;23622:180::-;23670:77;23667:1;23660:88;23767:4;23764:1;23757:15;23791:4;23788:1;23781:15;23808:180;23856:77;23853:1;23846:88;23953:4;23950:1;23943:15;23977:4;23974:1;23967:15;23994:102;24035:6;24086:2;24082:7;24077:2;24070:5;24066:14;24062:28;24052:38;;24042:54;;;:::o;24102:222::-;24242:34;24238:1;24230:6;24226:14;24219:58;24311:5;24306:2;24298:6;24294:15;24287:30;24208:116;:::o;24330:227::-;24470:34;24466:1;24458:6;24454:14;24447:58;24539:10;24534:2;24526:6;24522:15;24515:35;24436:121;:::o;24563:225::-;24703:34;24699:1;24691:6;24687:14;24680:58;24772:8;24767:2;24759:6;24755:15;24748:33;24669:119;:::o;24794:221::-;24934:34;24930:1;24922:6;24918:14;24911:58;25003:4;24998:2;24990:6;24986:15;24979:29;24900:115;:::o;25021:176::-;25161:28;25157:1;25149:6;25145:14;25138:52;25127:70;:::o;25203:177::-;25343:29;25339:1;25331:6;25327:14;25320:53;25309:71;:::o;25386:164::-;25526:16;25522:1;25514:6;25510:14;25503:40;25492:58;:::o;25556:168::-;25696:20;25692:1;25684:6;25680:14;25673:44;25662:62;:::o;25730:182::-;25870:34;25866:1;25858:6;25854:14;25847:58;25836:76;:::o;25918:172::-;26058:24;26054:1;26046:6;26042:14;26035:48;26024:66;:::o;26096:220::-;26236:34;26232:1;26224:6;26220:14;26213:58;26305:3;26300:2;26292:6;26288:15;26281:28;26202:114;:::o;26322:172::-;26462:24;26458:1;26450:6;26446:14;26439:48;26428:66;:::o;26500:224::-;26640:34;26636:1;26628:6;26624:14;26617:58;26709:7;26704:2;26696:6;26692:15;26685:32;26606:118;:::o;26730:169::-;26870:21;26866:1;26858:6;26854:14;26847:45;26836:63;:::o;26905:223::-;27045:34;27041:1;27033:6;27029:14;27022:58;27114:6;27109:2;27101:6;27097:15;27090:31;27011:117;:::o;27134:162::-;27274:14;27270:1;27262:6;27258:14;27251:38;27240:56;:::o;27302:165::-;27442:17;27438:1;27430:6;27426:14;27419:41;27408:59;:::o;27473:181::-;27613:33;27609:1;27601:6;27597:14;27590:57;27579:75;:::o;27660:122::-;27733:24;27751:5;27733:24;:::i;:::-;27726:5;27723:35;27713:2;;27772:1;27769;27762:12;27713:2;27703:79;:::o;27788:116::-;27858:21;27873:5;27858:21;:::i;:::-;27851:5;27848:32;27838:2;;27894:1;27891;27884:12;27838:2;27828:76;:::o;27910:122::-;27983:24;28001:5;27983:24;:::i;:::-;27976:5;27973:35;27963:2;;28022:1;28019;28012:12;27963:2;27953:79;:::o

Swarm Source

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