ETH Price: $2,423.46 (+3.10%)

Contract

0xEFc94f5254Fc2c5bB49318DD8CEaD8aB4ad99f2b
 

Overview

ETH Balance

0.97385 ETH

Eth Value

$2,360.09 (@ $2,423.46/ETH)

Token Holdings

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Buy Token USDT194264032024-03-13 13:18:35205 days ago1710335915IN
0xEFc94f52...B4ad99f2b
0 ETH0.0160560878.44713574
Buy Token194250062024-03-13 8:37:35205 days ago1710319055IN
0xEFc94f52...B4ad99f2b
0.09525 ETH0.0088646355.15507793
Buy Token194066552024-03-10 19:02:23208 days ago1710097343IN
0xEFc94f52...B4ad99f2b
0.052 ETH0.0110347268.65721644
Buy Token193644402024-03-04 21:18:23214 days ago1709587103IN
0xEFc94f52...B4ad99f2b
0.2081 ETH0.014137487.96187636
Buy Token193505332024-03-02 22:42:23215 days ago1709419343IN
0xEFc94f52...B4ad99f2b
0.03 ETH0.0060233337.47670281
Buy Token193425572024-03-01 19:56:35217 days ago1709322995IN
0xEFc94f52...B4ad99f2b
0.033 ETH0.0073540945.75662078
Buy Token193094052024-02-26 4:37:23221 days ago1708922243IN
0xEFc94f52...B4ad99f2b
0.0005 ETH0.0042033426.15286417
Buy Token193066842024-02-25 19:28:23222 days ago1708889303IN
0xEFc94f52...B4ad99f2b
0.07 ETH0.005621834.97847143
Buy Token192992282024-02-24 18:27:35223 days ago1708799255IN
0xEFc94f52...B4ad99f2b
0.45 ETH0.0056616135.22616439
Buy Token192588552024-02-19 2:34:35228 days ago1708310075IN
0xEFc94f52...B4ad99f2b
0.035 ETH0.0041410218.07344398
0x60806040192313782024-02-15 5:55:11232 days ago1707976511IN
 Create: Presale
0 ETH0.0407220716.23737789

View more zero value Internal Transactions in Advanced View mode

Advanced mode:
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
Presale

Compiler Version
v0.8.18+commit.87f61d96

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2024-02-15
*/

//SPDX-License-Identifier: MIT Licensed
pragma solidity ^0.8.10;

interface IERC20 {
    function name() external view returns (string memory);

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

    function decimals() external view returns (uint8);

    function totalSupply() external view returns (uint256);

    function balanceOf(address owner) external view returns (uint256);

    function allowance(
        address owner,
        address spender
    ) external view returns (uint256);

    function approve(address spender, uint256 value) external;

    function transfer(address to, uint256 value) external;

    function transferFrom(address from, address to, uint256 value) external;

    event Approval(
        address indexed owner,
        address indexed spender,
        uint256 value
    );
    event Transfer(address indexed from, address indexed to, uint256 value);
}

interface AggregatorV3Interface {
    function decimals() external view returns (uint8);

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

    function version() external view returns (uint256);

    function getRoundData(
        uint80 _roundId
    )
        external
        view
        returns (
            uint80 roundId,
            int256 answer,
            uint256 startedAt,
            uint256 updatedAt,
            uint80 answeredInRound
        );

    function latestRoundData()
        external
        view
        returns (
            uint80 roundId,
            int256 answer,
            uint256 startedAt,
            uint256 updatedAt,
            uint80 answeredInRound
        );
}

contract Presale {
    using SafeERC20 for IERC20;
    IERC20 public Token;
    IERC20 public usdt;

    AggregatorV3Interface public priceFeeD;

    address payable public owner;

    uint256 public tokenPerUsd = 1000 ether;
    uint256 public totalUsers;
    uint256 public soldToken;
    uint256 public totalSupply = 400_000_000 ether;
    uint256 public tokenForSell = 1000000000 ether;
    uint256 public nextPrice;
    uint256 public StageCount = 1;
    uint256 public amountRaised;
    uint256 public amountRaisedUSDT;
    address payable public fundReceiver;

    uint256 public constant divider = 100;

    address[] public UsersAddresses;

    bool public presaleStatus;
    mapping(address => bool) public oldBuyer;

    struct user {
        uint256 native_balance;
        uint256 usdt_balance;
        uint256 token_balance;
    }

    mapping(address => user) public users;
    mapping(address => uint256) public wallets;

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

    event BuyToken(address indexed _user, uint256 indexed _amount);
    event UpdatePrice(uint256 _oldPrice, uint256 _newPrice);
    event OwnershipTransferred(
        address indexed previousOwner,
        address indexed newOwner
    );

    constructor() {
        fundReceiver = payable(0x677E58583e8c4ae0366BFb3B3872bf6A26e308Fe);
        Token = IERC20(0x819902f6DbBD6B5F78737Dc4b481d5DfC0143E7e);
        usdt = IERC20(0xdAC17F958D2ee523a2206206994597C13D831ec7);
        owner = payable(0xb29Fd0af7f3A3561F7209524A46642Af99367baa);
        priceFeeD = AggregatorV3Interface(
            0x5f4eC3Df9cbd43714FE2740f5E3616155c5b8419
        );
        presaleStatus = true;
    }

    receive() external payable {}

    // to get real time price of Eth
    function getLatestPrice() public view returns (uint256) {
        (, int256 price, , , ) = priceFeeD.latestRoundData();
        return uint256(price);
    }

    // to buy token during preSale time with Eth => for web3 use

    function buyToken() public payable {
        require(
            presaleStatus == true,
            "Presale : Presale is paused, check back later"
        );
        if (oldBuyer[msg.sender] != true) {
            totalUsers += 1;
        }

        uint256 numberOfTokens;
        numberOfTokens = NativeToToken(msg.value);
        soldToken = soldToken + (numberOfTokens);
        require(
            soldToken <= tokenForSell,
            "Low Token in pool, Try less amount or wait for next stage"
        );
        amountRaised = amountRaised + (msg.value);
        users[msg.sender].native_balance =
            users[msg.sender].native_balance +
            (msg.value);
        users[msg.sender].token_balance =
            users[msg.sender].token_balance +
            (numberOfTokens);
        oldBuyer[msg.sender] = true;

        UsersAddresses.push(msg.sender);
    }

    function buyTokenUSDT(uint256 usdtAmount) public {
        require(
            presaleStatus == true,
            "Presale : Presale is paused, check back later"
        );
        if (oldBuyer[msg.sender] != true) {
            totalUsers += 1;
        }
        usdt.safeTransferFrom(msg.sender, address(this), usdtAmount);

        uint256 numberOfTokens;
        numberOfTokens = usdtToToken(usdtAmount);
        soldToken = soldToken + (numberOfTokens);
        require(
            soldToken <= tokenForSell,
            "Low Token in pool, Try less amount or wait for next stage"
        );
        amountRaisedUSDT += usdtAmount;
        users[msg.sender].usdt_balance += usdtAmount;
        users[msg.sender].token_balance += numberOfTokens;
        oldBuyer[msg.sender] = true;

        UsersAddresses.push(msg.sender);
    }

    function PresaleStatus(bool _off) external onlyOwner {
        presaleStatus = _off;
    }

    // to check number of token for given Eth
    function NativeToToken(uint256 _amount) public view returns (uint256) {
        uint256 EthToUsd = (_amount * (getLatestPrice())) / (1 ether);
        uint256 numberOfTokens = (EthToUsd * (tokenPerUsd)) / (1e8);
        return numberOfTokens;
    }

    // to check number of token for given usdt
    function usdtToToken(uint256 _amount) public view returns (uint256) {
        return (_amount * tokenPerUsd) / (1e6);
    }

    // to change Price of the token
    function changePrice(
        uint256 _price,
        uint256 _nextPrice,
        uint256 _tokenForSell,
        uint256 _StageCount
    ) external onlyOwner {
        uint256 oldPrice = tokenPerUsd;
        tokenPerUsd = _price;
        nextPrice = _nextPrice;

        tokenForSell = soldToken + _tokenForSell;
        StageCount = _StageCount;

        emit UpdatePrice(oldPrice, _price);
    }

    function ChangeSupply(
        uint256 _supply,
        uint256 _sold,
        uint256 _raised
    ) external onlyOwner {
        totalSupply = _supply;
        soldToken = _sold;
        amountRaised = _raised;
    }

    // transfer ownership
    function changeOwner(address payable _newOwner) external onlyOwner {
        require(
            _newOwner != address(0),
            "Ownable: new owner is the zero address"
        );
        address _oldOwner = owner;
        owner = _newOwner;

        emit OwnershipTransferred(_oldOwner, _newOwner);
    }

    // change tokens
    function changeToken(address _token) external onlyOwner {
        Token = IERC20(_token);
    }

    //change USDT
    function changeUSDT(address _USDT) external onlyOwner {
        usdt = IERC20(_USDT);
    }

    // to draw funds for liquidity
    function initiateTransfer(uint256 _value) external onlyOwner {
        fundReceiver.transfer(_value);
    }

    // to draw funds for liquidity
    function initiateTokenTransfer(uint256 _value) external onlyOwner {
        usdt.safeTransfer(fundReceiver, _value);
    }

    // to draw funds for liquidity
    function changeFundReciever(address _addr) external onlyOwner {
        fundReceiver = payable(_addr);
    }

    // to draw out tokens
    function transferTokens(IERC20 token, uint256 _value) external onlyOwner {
        token.transfer(msg.sender, _value);
    }
}

library Address {
    /**
     * @dev The ETH balance of the account is not enough to perform the operation.
     */
    error AddressInsufficientBalance(address account);

    /**
     * @dev There's no code at `target` (it is not a contract).
     */
    error AddressEmptyCode(address target);

    /**
     * @dev A call to an address target failed. The target may have reverted.
     */
    error FailedInnerCall();

    /**
     * @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://consensys.net/diligence/blog/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.8.20/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].
     */
    function sendValue(address payable recipient, uint256 amount) internal {
        if (address(this).balance < amount) {
            revert AddressInsufficientBalance(address(this));
        }

        (bool success, ) = recipient.call{value: amount}("");
        if (!success) {
            revert FailedInnerCall();
        }
    }

    /**
     * @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 or custom error, it is bubbled
     * up by this function (like regular Solidity function calls). However, if
     * the call reverted with no returned reason, this function reverts with a
     * {FailedInnerCall} error.
     *
     * 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.
     */
    function functionCall(
        address target,
        bytes memory data
    ) internal returns (bytes memory) {
        return functionCallWithValue(target, data, 0);
    }

    /**
     * @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`.
     */
    function functionCallWithValue(
        address target,
        bytes memory data,
        uint256 value
    ) internal returns (bytes memory) {
        if (address(this).balance < value) {
            revert AddressInsufficientBalance(address(this));
        }
        (bool success, bytes memory returndata) = target.call{value: value}(
            data
        );
        return verifyCallResultFromTarget(target, success, returndata);
    }

    /**
     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],
     * but performing a static call.
     */
    function functionStaticCall(
        address target,
        bytes memory data
    ) internal view returns (bytes memory) {
        (bool success, bytes memory returndata) = target.staticcall(data);
        return verifyCallResultFromTarget(target, success, returndata);
    }

    /**
     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],
     * but performing a delegate call.
     */
    function functionDelegateCall(
        address target,
        bytes memory data
    ) internal returns (bytes memory) {
        (bool success, bytes memory returndata) = target.delegatecall(data);
        return verifyCallResultFromTarget(target, success, returndata);
    }

    /**
     * @dev Tool to verify that a low level call to smart-contract was successful, and reverts if the target
     * was not a contract or bubbling up the revert reason (falling back to {FailedInnerCall}) in case of an
     * unsuccessful call.
     */
    function verifyCallResultFromTarget(
        address target,
        bool success,
        bytes memory returndata
    ) internal view returns (bytes memory) {
        if (!success) {
            _revert(returndata);
        } else {
            // only check if target is a contract if the call was successful and the return data is empty
            // otherwise we already know that it was a contract
            if (returndata.length == 0 && target.code.length == 0) {
                revert AddressEmptyCode(target);
            }
            return returndata;
        }
    }

    /**
     * @dev Tool to verify that a low level call was successful, and reverts if it wasn't, either by bubbling the
     * revert reason or with a default {FailedInnerCall} error.
     */
    function verifyCallResult(
        bool success,
        bytes memory returndata
    ) internal pure returns (bytes memory) {
        if (!success) {
            _revert(returndata);
        } else {
            return returndata;
        }
    }

    /**
     * @dev Reverts with returndata if present. Otherwise reverts with {FailedInnerCall}.
     */
    function _revert(bytes memory returndata) private pure {
        // 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
            /// @solidity memory-safe-assembly
            assembly {
                let returndata_size := mload(returndata)
                revert(add(32, returndata), returndata_size)
            }
        } else {
            revert FailedInnerCall();
        }
    }
}

library SafeERC20 {
    using Address for address;

    /**
     * @dev An operation with an ERC20 token failed.
     */
    error SafeERC20FailedOperation(address token);

    /**
     * @dev Indicates a failed `decreaseAllowance` request.
     */
    error SafeERC20FailedDecreaseAllowance(
        address spender,
        uint256 currentAllowance,
        uint256 requestedDecrease
    );

    /**
     * @dev Transfer `value` amount of `token` from the calling contract to `to`. If `token` returns no value,
     * non-reverting calls are assumed to be successful.
     */
    function safeTransfer(IERC20 token, address to, uint256 value) internal {
        _callOptionalReturn(token, abi.encodeCall(token.transfer, (to, value)));
    }

    /**
     * @dev Transfer `value` amount of `token` from `from` to `to`, spending the approval given by `from` to the
     * calling contract. If `token` returns no value, non-reverting calls are assumed to be successful.
     */
    function safeTransferFrom(
        IERC20 token,
        address from,
        address to,
        uint256 value
    ) internal {
        _callOptionalReturn(
            token,
            abi.encodeCall(token.transferFrom, (from, to, value))
        );
    }

    /**
     * @dev Increase the calling contract's allowance toward `spender` by `value`. If `token` returns no value,
     * non-reverting calls are assumed to be successful.
     */
    function safeIncreaseAllowance(
        IERC20 token,
        address spender,
        uint256 value
    ) internal {
        uint256 oldAllowance = token.allowance(address(this), spender);
        forceApprove(token, spender, oldAllowance + value);
    }

    /**
     * @dev Decrease the calling contract's allowance toward `spender` by `requestedDecrease`. If `token` returns no
     * value, non-reverting calls are assumed to be successful.
     */
    function safeDecreaseAllowance(
        IERC20 token,
        address spender,
        uint256 requestedDecrease
    ) internal {
        unchecked {
            uint256 currentAllowance = token.allowance(address(this), spender);
            if (currentAllowance < requestedDecrease) {
                revert SafeERC20FailedDecreaseAllowance(
                    spender,
                    currentAllowance,
                    requestedDecrease
                );
            }
            forceApprove(token, spender, currentAllowance - requestedDecrease);
        }
    }

    /**
     * @dev Set the calling contract's allowance toward `spender` to `value`. If `token` returns no value,
     * non-reverting calls are assumed to be successful. Meant to be used with tokens that require the approval
     * to be set to zero before setting it to a non-zero value, such as USDT.
     */
    function forceApprove(
        IERC20 token,
        address spender,
        uint256 value
    ) internal {
        bytes memory approvalCall = abi.encodeCall(
            token.approve,
            (spender, value)
        );

        if (!_callOptionalReturnBool(token, approvalCall)) {
            _callOptionalReturn(
                token,
                abi.encodeCall(token.approve, (spender, 0))
            );
            _callOptionalReturn(token, approvalCall);
        }
    }

    /**
     * @dev Imitates a Solidity high-level call (i.e. a regular function call to a contract), relaxing the requirement
     * on the return value: the return value is optional (but if data is returned, it must not be false).
     * @param token The token targeted by the call.
     * @param data The call data (encoded using abi.encode or one of its variants).
     */
    function _callOptionalReturn(IERC20 token, bytes memory data) private {
        // We need to perform a low level call here, to bypass Solidity's return data size checking mechanism, since
        // we're implementing it ourselves. We use {Address-functionCall} to perform this call, which verifies that
        // the target address contains contract code and also asserts for success in the low-level call.

        bytes memory returndata = address(token).functionCall(data);
        if (returndata.length != 0 && !abi.decode(returndata, (bool))) {
            revert SafeERC20FailedOperation(address(token));
        }
    }

    /**
     * @dev Imitates a Solidity high-level call (i.e. a regular function call to a contract), relaxing the requirement
     * on the return value: the return value is optional (but if data is returned, it must not be false).
     * @param token The token targeted by the call.
     * @param data The call data (encoded using abi.encode or one of its variants).
     *
     * This is a variant of {_callOptionalReturn} that silents catches all reverts and returns a bool instead.
     */
    function _callOptionalReturnBool(
        IERC20 token,
        bytes memory data
    ) private returns (bool) {
        // We need to perform a low level call here, to bypass Solidity's return data size checking mechanism, since
        // we're implementing it ourselves. We cannot use {Address-functionCall} here since this should return false
        // and not revert is the subcall reverts.

        (bool success, bytes memory returndata) = address(token).call(data);
        return
            success &&
            (returndata.length == 0 || abi.decode(returndata, (bool))) &&
            address(token).code.length > 0;
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"address","name":"target","type":"address"}],"name":"AddressEmptyCode","type":"error"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"AddressInsufficientBalance","type":"error"},{"inputs":[],"name":"FailedInnerCall","type":"error"},{"inputs":[{"internalType":"address","name":"token","type":"address"}],"name":"SafeERC20FailedOperation","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_user","type":"address"},{"indexed":true,"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"BuyToken","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":false,"internalType":"uint256","name":"_oldPrice","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"_newPrice","type":"uint256"}],"name":"UpdatePrice","type":"event"},{"inputs":[{"internalType":"uint256","name":"_supply","type":"uint256"},{"internalType":"uint256","name":"_sold","type":"uint256"},{"internalType":"uint256","name":"_raised","type":"uint256"}],"name":"ChangeSupply","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"NativeToToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"_off","type":"bool"}],"name":"PresaleStatus","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"StageCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"Token","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"UsersAddresses","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"amountRaised","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"amountRaisedUSDT","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyToken","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"uint256","name":"usdtAmount","type":"uint256"}],"name":"buyTokenUSDT","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_addr","type":"address"}],"name":"changeFundReciever","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"_newOwner","type":"address"}],"name":"changeOwner","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_price","type":"uint256"},{"internalType":"uint256","name":"_nextPrice","type":"uint256"},{"internalType":"uint256","name":"_tokenForSell","type":"uint256"},{"internalType":"uint256","name":"_StageCount","type":"uint256"}],"name":"changePrice","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_token","type":"address"}],"name":"changeToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_USDT","type":"address"}],"name":"changeUSDT","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"divider","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"fundReceiver","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getLatestPrice","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_value","type":"uint256"}],"name":"initiateTokenTransfer","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_value","type":"uint256"}],"name":"initiateTransfer","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"nextPrice","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"oldBuyer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"presaleStatus","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"priceFeeD","outputs":[{"internalType":"contract AggregatorV3Interface","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"soldToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokenForSell","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokenPerUsd","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalUsers","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"contract IERC20","name":"token","type":"address"},{"internalType":"uint256","name":"_value","type":"uint256"}],"name":"transferTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"usdt","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"usdtToToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"users","outputs":[{"internalType":"uint256","name":"native_balance","type":"uint256"},{"internalType":"uint256","name":"usdt_balance","type":"uint256"},{"internalType":"uint256","name":"token_balance","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"wallets","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

6080604052683635c9adc5dea000006004556b014adf4b7320334b900000006007556b033b2e3c9fd0803ce80000006008556001600a5534801561004257600080fd5b5073677e58583e8c4ae0366bfb3b3872bf6a26e308fe600d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073819902f6dbbd6b5f78737dc4b481d5dfc0143e7e6000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073dac17f958d2ee523a2206206994597c13d831ec7600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073b29fd0af7f3a3561f7209524a46642af99367baa600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550735f4ec3df9cbd43714fe2740f5e3616155c5b8419600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600f60006101000a81548160ff021916908315150217905550612866806102156000396000f3fe6080604052600436106102085760003560e01c80637e2ffbcb11610118578063b5e75e1c116100a0578063dec11f6e1161006f578063dec11f6e14610731578063e00e06121461076e578063e703667e146107ab578063ef9089d6146107d6578063fb4aa0a1146108015761020f565b8063b5e75e1c14610689578063bec3fa17146106b2578063bff1f9e1146106db578063c2412676146107065761020f565b8063a1e98a6d116100e7578063a1e98a6d146105c1578063a4821719146105ec578063a6f9dae1146105f6578063a87430ba1461061f578063acfb23551461065e5761020f565b80637e2ffbcb1461050357806389b08f111461052e5780638da5cb5b1461056b5780638e15f473146105965761020f565b80634782e4071161019b57806366829b161161016a57806366829b16146104325780636769d1f91461045b5780637043bbe41461048657806371405928146104af5780637b3e5e7b146104d85761020f565b80634782e4071461037a578063486047dc146103a357806353a29ad2146103e057806361a31e00146104095761020f565b806318160ddd116101d757806318160ddd146102ce5780632f48ab7d146102f9578063378efa3714610324578063405fb9441461034f5761020f565b806305ae7136146102145780630f9d4469146102515780630faa9d881461027c578063153345ce146102a55761020f565b3661020f57005b600080fd5b34801561022057600080fd5b5061023b60048036038101906102369190611e48565b61082c565b6040516102489190611e84565b60405180910390f35b34801561025d57600080fd5b50610266610882565b6040516102739190611e84565b60405180910390f35b34801561028857600080fd5b506102a3600480360381019061029e9190611e48565b610888565b005b3480156102b157600080fd5b506102cc60048036038101906102c79190611e9f565b61098a565b005b3480156102da57600080fd5b506102e3610a8a565b6040516102f09190611e84565b60405180910390f35b34801561030557600080fd5b5061030e610a90565b60405161031b9190611f85565b60405180910390f35b34801561033057600080fd5b50610339610ab6565b6040516103469190611e84565b60405180910390f35b34801561035b57600080fd5b50610364610abb565b6040516103719190611e84565b60405180910390f35b34801561038657600080fd5b506103a1600480360381019061039c9190611fde565b610ac1565b005b3480156103af57600080fd5b506103ca60048036038101906103c59190611e48565b610b95565b6040516103d79190611e84565b60405180910390f35b3480156103ec57600080fd5b5061040760048036038101906104029190611fde565b610bba565b005b34801561041557600080fd5b50610430600480360381019061042b9190611e48565b610c8e565b005b34801561043e57600080fd5b5061045960048036038101906104549190611fde565b610d8a565b005b34801561046757600080fd5b50610470610e5d565b60405161047d9190611e84565b60405180910390f35b34801561049257600080fd5b506104ad60048036038101906104a89190612043565b610e63565b005b3480156104bb57600080fd5b506104d660048036038101906104d19190612070565b610f10565b005b3480156104e457600080fd5b506104ed610fba565b6040516104fa9190611e84565b60405180910390f35b34801561050f57600080fd5b50610518610fc0565b60405161052591906120e4565b60405180910390f35b34801561053a57600080fd5b5061055560048036038101906105509190611fde565b610fe6565b6040516105629190611e84565b60405180910390f35b34801561057757600080fd5b50610580610ffe565b60405161058d9190612120565b60405180910390f35b3480156105a257600080fd5b506105ab611024565b6040516105b89190611e84565b60405180910390f35b3480156105cd57600080fd5b506105d66110c5565b6040516105e39190611e84565b60405180910390f35b6105f46110cb565b005b34801561060257600080fd5b5061061d60048036038101906106189190612167565b6113f6565b005b34801561062b57600080fd5b5061064660048036038101906106419190611fde565b6115bb565b60405161065593929190612194565b60405180910390f35b34801561066a57600080fd5b506106736115e5565b60405161068091906121da565b60405180910390f35b34801561069557600080fd5b506106b060048036038101906106ab9190611e48565b6115f8565b005b3480156106be57600080fd5b506106d960048036038101906106d49190612233565b611902565b005b3480156106e757600080fd5b506106f0611a03565b6040516106fd9190611e84565b60405180910390f35b34801561071257600080fd5b5061071b611a09565b6040516107289190611f85565b60405180910390f35b34801561073d57600080fd5b5061075860048036038101906107539190611fde565b611a2d565b60405161076591906121da565b60405180910390f35b34801561077a57600080fd5b5061079560048036038101906107909190611e48565b611a4d565b6040516107a29190612282565b60405180910390f35b3480156107b757600080fd5b506107c0611a8c565b6040516107cd9190611e84565b60405180910390f35b3480156107e257600080fd5b506107eb611a92565b6040516107f89190611e84565b60405180910390f35b34801561080d57600080fd5b50610816611a98565b6040516108239190612120565b60405180910390f35b600080670de0b6b3a7640000610840611024565b8461084b91906122cc565b610855919061233d565b905060006305f5e1006004548361086c91906122cc565b610876919061233d565b90508092505050919050565b60085481565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610918576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161090f906123cb565b60405180910390fd5b610987600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1682600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16611abe9092919063ffffffff16565b50565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610a1a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a11906123cb565b60405180910390fd5b60006004549050846004819055508360098190555082600654610a3d91906123eb565b60088190555081600a819055507f8b49109cd5767f43f65aaaae99075135a684e87312ed89a5e0d69e96bed715cb8186604051610a7b92919061241f565b60405180910390a15050505050565b60075481565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b606481565b600c5481565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610b51576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b48906123cb565b60405180910390fd5b80600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000620f424060045483610ba991906122cc565b610bb3919061233d565b9050919050565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610c4a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c41906123cb565b60405180910390fd5b80600d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610d1e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d15906123cb565b60405180910390fd5b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015610d86573d6000803e3d6000fd5b5050565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610e1a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e11906123cb565b60405180910390fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60065481565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610ef3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610eea906123cb565b60405180910390fd5b80600f60006101000a81548160ff02191690831515021790555050565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610fa0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f97906123cb565b60405180910390fd5b826007819055508160068190555080600b81905550505050565b600b5481565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60126020528060005260406000206000915090505481565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600080600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663feaf968c6040518163ffffffff1660e01b815260040160a060405180830381865afa158015611094573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110b891906124d5565b5050509150508091505090565b60045481565b60011515600f60009054906101000a900460ff16151514611121576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611118906125c2565b60405180910390fd5b60011515601060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515146111945760016005600082825461118c91906123eb565b925050819055505b600061119f3461082c565b9050806006546111af91906123eb565b60068190555060085460065411156111fc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111f390612654565b60405180910390fd5b34600b5461120a91906123eb565b600b8190555034601160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000015461125e91906123eb565b601160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000018190555080601160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600201546112f291906123eb565b601160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600201819055506001601060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600e339080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611486576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161147d906123cb565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036114f5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114ec906126e6565b60405180910390fd5b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b60116020528060005260406000206000915090508060000154908060010154908060020154905083565b600f60009054906101000a900460ff1681565b60011515600f60009054906101000a900460ff1615151461164e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611645906125c2565b60405180910390fd5b60011515601060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515146116c1576001600560008282546116b991906123eb565b925050819055505b611710333083600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16611b3d909392919063ffffffff16565b600061171b82610b95565b90508060065461172b91906123eb565b6006819055506008546006541115611778576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161176f90612654565b60405180910390fd5b81600c600082825461178a91906123eb565b9250508190555081601160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160008282546117e391906123eb565b9250508190555080601160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600201600082825461183c91906123eb565b925050819055506001601060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600e339080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611992576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611989906123cb565b60405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33836040518363ffffffff1660e01b81526004016119cd929190612706565b600060405180830381600087803b1580156119e757600080fd5b505af11580156119fb573d6000803e3d6000fd5b505050505050565b60055481565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60106020528060005260406000206000915054906101000a900460ff1681565b600e8181548110611a5d57600080fd5b906000526020600020016000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600a5481565b60095481565b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b611b38838473ffffffffffffffffffffffffffffffffffffffff1663a9059cbb8585604051602401611af1929190612706565b604051602081830303815290604052915060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050611bbf565b505050565b611bb9848573ffffffffffffffffffffffffffffffffffffffff166323b872dd868686604051602401611b729392919061272f565b604051602081830303815290604052915060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050611bbf565b50505050565b6000611bea828473ffffffffffffffffffffffffffffffffffffffff16611c5690919063ffffffff16565b90506000815114158015611c0f575080806020019051810190611c0d919061277b565b155b15611c5157826040517f5274afe7000000000000000000000000000000000000000000000000000000008152600401611c489190612282565b60405180910390fd5b505050565b6060611c6483836000611c6c565b905092915050565b606081471015611cb357306040517fcd786059000000000000000000000000000000000000000000000000000000008152600401611caa9190612282565b60405180910390fd5b6000808573ffffffffffffffffffffffffffffffffffffffff168486604051611cdc9190612819565b60006040518083038185875af1925050503d8060008114611d19576040519150601f19603f3d011682016040523d82523d6000602084013e611d1e565b606091505b5091509150611d2e868383611d39565b925050509392505050565b606082611d4e57611d4982611dc8565b611dc0565b60008251148015611d76575060008473ffffffffffffffffffffffffffffffffffffffff163b145b15611db857836040517f9996b315000000000000000000000000000000000000000000000000000000008152600401611daf9190612282565b60405180910390fd5b819050611dc1565b5b9392505050565b600081511115611ddb5780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080fd5b6000819050919050565b611e2581611e12565b8114611e3057600080fd5b50565b600081359050611e4281611e1c565b92915050565b600060208284031215611e5e57611e5d611e0d565b5b6000611e6c84828501611e33565b91505092915050565b611e7e81611e12565b82525050565b6000602082019050611e996000830184611e75565b92915050565b60008060008060808587031215611eb957611eb8611e0d565b5b6000611ec787828801611e33565b9450506020611ed887828801611e33565b9350506040611ee987828801611e33565b9250506060611efa87828801611e33565b91505092959194509250565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b6000611f4b611f46611f4184611f06565b611f26565b611f06565b9050919050565b6000611f5d82611f30565b9050919050565b6000611f6f82611f52565b9050919050565b611f7f81611f64565b82525050565b6000602082019050611f9a6000830184611f76565b92915050565b6000611fab82611f06565b9050919050565b611fbb81611fa0565b8114611fc657600080fd5b50565b600081359050611fd881611fb2565b92915050565b600060208284031215611ff457611ff3611e0d565b5b600061200284828501611fc9565b91505092915050565b60008115159050919050565b6120208161200b565b811461202b57600080fd5b50565b60008135905061203d81612017565b92915050565b60006020828403121561205957612058611e0d565b5b60006120678482850161202e565b91505092915050565b60008060006060848603121561208957612088611e0d565b5b600061209786828701611e33565b93505060206120a886828701611e33565b92505060406120b986828701611e33565b9150509250925092565b60006120ce82611f52565b9050919050565b6120de816120c3565b82525050565b60006020820190506120f960008301846120d5565b92915050565b600061210a82611f06565b9050919050565b61211a816120ff565b82525050565b60006020820190506121356000830184612111565b92915050565b612144816120ff565b811461214f57600080fd5b50565b6000813590506121618161213b565b92915050565b60006020828403121561217d5761217c611e0d565b5b600061218b84828501612152565b91505092915050565b60006060820190506121a96000830186611e75565b6121b66020830185611e75565b6121c36040830184611e75565b949350505050565b6121d48161200b565b82525050565b60006020820190506121ef60008301846121cb565b92915050565b600061220082611fa0565b9050919050565b612210816121f5565b811461221b57600080fd5b50565b60008135905061222d81612207565b92915050565b6000806040838503121561224a57612249611e0d565b5b60006122588582860161221e565b925050602061226985828601611e33565b9150509250929050565b61227c81611fa0565b82525050565b60006020820190506122976000830184612273565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006122d782611e12565b91506122e283611e12565b92508282026122f081611e12565b915082820484148315176123075761230661229d565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061234882611e12565b915061235383611e12565b9250826123635761236261230e565b5b828204905092915050565b600082825260208201905092915050565b7f50524553414c453a204e6f7420616e206f776e65720000000000000000000000600082015250565b60006123b560158361236e565b91506123c08261237f565b602082019050919050565b600060208201905081810360008301526123e4816123a8565b9050919050565b60006123f682611e12565b915061240183611e12565b92508282019050808211156124195761241861229d565b5b92915050565b60006040820190506124346000830185611e75565b6124416020830184611e75565b9392505050565b600069ffffffffffffffffffff82169050919050565b61246781612448565b811461247257600080fd5b50565b6000815190506124848161245e565b92915050565b6000819050919050565b61249d8161248a565b81146124a857600080fd5b50565b6000815190506124ba81612494565b92915050565b6000815190506124cf81611e1c565b92915050565b600080600080600060a086880312156124f1576124f0611e0d565b5b60006124ff88828901612475565b9550506020612510888289016124ab565b9450506040612521888289016124c0565b9350506060612532888289016124c0565b925050608061254388828901612475565b9150509295509295909350565b7f50726573616c65203a2050726573616c65206973207061757365642c2063686560008201527f636b206261636b206c6174657200000000000000000000000000000000000000602082015250565b60006125ac602d8361236e565b91506125b782612550565b604082019050919050565b600060208201905081810360008301526125db8161259f565b9050919050565b7f4c6f7720546f6b656e20696e20706f6f6c2c20547279206c65737320616d6f7560008201527f6e74206f72207761697420666f72206e65787420737461676500000000000000602082015250565b600061263e60398361236e565b9150612649826125e2565b604082019050919050565b6000602082019050818103600083015261266d81612631565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006126d060268361236e565b91506126db82612674565b604082019050919050565b600060208201905081810360008301526126ff816126c3565b9050919050565b600060408201905061271b6000830185612273565b6127286020830184611e75565b9392505050565b60006060820190506127446000830186612273565b6127516020830185612273565b61275e6040830184611e75565b949350505050565b60008151905061277581612017565b92915050565b60006020828403121561279157612790611e0d565b5b600061279f84828501612766565b91505092915050565b600081519050919050565b600081905092915050565b60005b838110156127dc5780820151818401526020810190506127c1565b60008484015250505050565b60006127f3826127a8565b6127fd81856127b3565b935061280d8185602086016127be565b80840191505092915050565b600061282582846127e8565b91508190509291505056fea26469706673582212202d95c422e1045a541c0a03b3b0b5884f9a0f4210f4e6a20bd8dbad543fcaf0f564736f6c63430008120033

Deployed Bytecode

0x6080604052600436106102085760003560e01c80637e2ffbcb11610118578063b5e75e1c116100a0578063dec11f6e1161006f578063dec11f6e14610731578063e00e06121461076e578063e703667e146107ab578063ef9089d6146107d6578063fb4aa0a1146108015761020f565b8063b5e75e1c14610689578063bec3fa17146106b2578063bff1f9e1146106db578063c2412676146107065761020f565b8063a1e98a6d116100e7578063a1e98a6d146105c1578063a4821719146105ec578063a6f9dae1146105f6578063a87430ba1461061f578063acfb23551461065e5761020f565b80637e2ffbcb1461050357806389b08f111461052e5780638da5cb5b1461056b5780638e15f473146105965761020f565b80634782e4071161019b57806366829b161161016a57806366829b16146104325780636769d1f91461045b5780637043bbe41461048657806371405928146104af5780637b3e5e7b146104d85761020f565b80634782e4071461037a578063486047dc146103a357806353a29ad2146103e057806361a31e00146104095761020f565b806318160ddd116101d757806318160ddd146102ce5780632f48ab7d146102f9578063378efa3714610324578063405fb9441461034f5761020f565b806305ae7136146102145780630f9d4469146102515780630faa9d881461027c578063153345ce146102a55761020f565b3661020f57005b600080fd5b34801561022057600080fd5b5061023b60048036038101906102369190611e48565b61082c565b6040516102489190611e84565b60405180910390f35b34801561025d57600080fd5b50610266610882565b6040516102739190611e84565b60405180910390f35b34801561028857600080fd5b506102a3600480360381019061029e9190611e48565b610888565b005b3480156102b157600080fd5b506102cc60048036038101906102c79190611e9f565b61098a565b005b3480156102da57600080fd5b506102e3610a8a565b6040516102f09190611e84565b60405180910390f35b34801561030557600080fd5b5061030e610a90565b60405161031b9190611f85565b60405180910390f35b34801561033057600080fd5b50610339610ab6565b6040516103469190611e84565b60405180910390f35b34801561035b57600080fd5b50610364610abb565b6040516103719190611e84565b60405180910390f35b34801561038657600080fd5b506103a1600480360381019061039c9190611fde565b610ac1565b005b3480156103af57600080fd5b506103ca60048036038101906103c59190611e48565b610b95565b6040516103d79190611e84565b60405180910390f35b3480156103ec57600080fd5b5061040760048036038101906104029190611fde565b610bba565b005b34801561041557600080fd5b50610430600480360381019061042b9190611e48565b610c8e565b005b34801561043e57600080fd5b5061045960048036038101906104549190611fde565b610d8a565b005b34801561046757600080fd5b50610470610e5d565b60405161047d9190611e84565b60405180910390f35b34801561049257600080fd5b506104ad60048036038101906104a89190612043565b610e63565b005b3480156104bb57600080fd5b506104d660048036038101906104d19190612070565b610f10565b005b3480156104e457600080fd5b506104ed610fba565b6040516104fa9190611e84565b60405180910390f35b34801561050f57600080fd5b50610518610fc0565b60405161052591906120e4565b60405180910390f35b34801561053a57600080fd5b5061055560048036038101906105509190611fde565b610fe6565b6040516105629190611e84565b60405180910390f35b34801561057757600080fd5b50610580610ffe565b60405161058d9190612120565b60405180910390f35b3480156105a257600080fd5b506105ab611024565b6040516105b89190611e84565b60405180910390f35b3480156105cd57600080fd5b506105d66110c5565b6040516105e39190611e84565b60405180910390f35b6105f46110cb565b005b34801561060257600080fd5b5061061d60048036038101906106189190612167565b6113f6565b005b34801561062b57600080fd5b5061064660048036038101906106419190611fde565b6115bb565b60405161065593929190612194565b60405180910390f35b34801561066a57600080fd5b506106736115e5565b60405161068091906121da565b60405180910390f35b34801561069557600080fd5b506106b060048036038101906106ab9190611e48565b6115f8565b005b3480156106be57600080fd5b506106d960048036038101906106d49190612233565b611902565b005b3480156106e757600080fd5b506106f0611a03565b6040516106fd9190611e84565b60405180910390f35b34801561071257600080fd5b5061071b611a09565b6040516107289190611f85565b60405180910390f35b34801561073d57600080fd5b5061075860048036038101906107539190611fde565b611a2d565b60405161076591906121da565b60405180910390f35b34801561077a57600080fd5b5061079560048036038101906107909190611e48565b611a4d565b6040516107a29190612282565b60405180910390f35b3480156107b757600080fd5b506107c0611a8c565b6040516107cd9190611e84565b60405180910390f35b3480156107e257600080fd5b506107eb611a92565b6040516107f89190611e84565b60405180910390f35b34801561080d57600080fd5b50610816611a98565b6040516108239190612120565b60405180910390f35b600080670de0b6b3a7640000610840611024565b8461084b91906122cc565b610855919061233d565b905060006305f5e1006004548361086c91906122cc565b610876919061233d565b90508092505050919050565b60085481565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610918576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161090f906123cb565b60405180910390fd5b610987600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1682600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16611abe9092919063ffffffff16565b50565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610a1a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a11906123cb565b60405180910390fd5b60006004549050846004819055508360098190555082600654610a3d91906123eb565b60088190555081600a819055507f8b49109cd5767f43f65aaaae99075135a684e87312ed89a5e0d69e96bed715cb8186604051610a7b92919061241f565b60405180910390a15050505050565b60075481565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b606481565b600c5481565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610b51576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b48906123cb565b60405180910390fd5b80600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000620f424060045483610ba991906122cc565b610bb3919061233d565b9050919050565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610c4a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c41906123cb565b60405180910390fd5b80600d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610d1e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d15906123cb565b60405180910390fd5b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015610d86573d6000803e3d6000fd5b5050565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610e1a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e11906123cb565b60405180910390fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60065481565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610ef3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610eea906123cb565b60405180910390fd5b80600f60006101000a81548160ff02191690831515021790555050565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610fa0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f97906123cb565b60405180910390fd5b826007819055508160068190555080600b81905550505050565b600b5481565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60126020528060005260406000206000915090505481565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600080600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663feaf968c6040518163ffffffff1660e01b815260040160a060405180830381865afa158015611094573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110b891906124d5565b5050509150508091505090565b60045481565b60011515600f60009054906101000a900460ff16151514611121576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611118906125c2565b60405180910390fd5b60011515601060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515146111945760016005600082825461118c91906123eb565b925050819055505b600061119f3461082c565b9050806006546111af91906123eb565b60068190555060085460065411156111fc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111f390612654565b60405180910390fd5b34600b5461120a91906123eb565b600b8190555034601160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000015461125e91906123eb565b601160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000018190555080601160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600201546112f291906123eb565b601160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600201819055506001601060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600e339080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611486576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161147d906123cb565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036114f5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114ec906126e6565b60405180910390fd5b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b60116020528060005260406000206000915090508060000154908060010154908060020154905083565b600f60009054906101000a900460ff1681565b60011515600f60009054906101000a900460ff1615151461164e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611645906125c2565b60405180910390fd5b60011515601060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515146116c1576001600560008282546116b991906123eb565b925050819055505b611710333083600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16611b3d909392919063ffffffff16565b600061171b82610b95565b90508060065461172b91906123eb565b6006819055506008546006541115611778576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161176f90612654565b60405180910390fd5b81600c600082825461178a91906123eb565b9250508190555081601160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160008282546117e391906123eb565b9250508190555080601160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600201600082825461183c91906123eb565b925050819055506001601060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600e339080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611992576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611989906123cb565b60405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33836040518363ffffffff1660e01b81526004016119cd929190612706565b600060405180830381600087803b1580156119e757600080fd5b505af11580156119fb573d6000803e3d6000fd5b505050505050565b60055481565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60106020528060005260406000206000915054906101000a900460ff1681565b600e8181548110611a5d57600080fd5b906000526020600020016000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600a5481565b60095481565b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b611b38838473ffffffffffffffffffffffffffffffffffffffff1663a9059cbb8585604051602401611af1929190612706565b604051602081830303815290604052915060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050611bbf565b505050565b611bb9848573ffffffffffffffffffffffffffffffffffffffff166323b872dd868686604051602401611b729392919061272f565b604051602081830303815290604052915060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050611bbf565b50505050565b6000611bea828473ffffffffffffffffffffffffffffffffffffffff16611c5690919063ffffffff16565b90506000815114158015611c0f575080806020019051810190611c0d919061277b565b155b15611c5157826040517f5274afe7000000000000000000000000000000000000000000000000000000008152600401611c489190612282565b60405180910390fd5b505050565b6060611c6483836000611c6c565b905092915050565b606081471015611cb357306040517fcd786059000000000000000000000000000000000000000000000000000000008152600401611caa9190612282565b60405180910390fd5b6000808573ffffffffffffffffffffffffffffffffffffffff168486604051611cdc9190612819565b60006040518083038185875af1925050503d8060008114611d19576040519150601f19603f3d011682016040523d82523d6000602084013e611d1e565b606091505b5091509150611d2e868383611d39565b925050509392505050565b606082611d4e57611d4982611dc8565b611dc0565b60008251148015611d76575060008473ffffffffffffffffffffffffffffffffffffffff163b145b15611db857836040517f9996b315000000000000000000000000000000000000000000000000000000008152600401611daf9190612282565b60405180910390fd5b819050611dc1565b5b9392505050565b600081511115611ddb5780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080fd5b6000819050919050565b611e2581611e12565b8114611e3057600080fd5b50565b600081359050611e4281611e1c565b92915050565b600060208284031215611e5e57611e5d611e0d565b5b6000611e6c84828501611e33565b91505092915050565b611e7e81611e12565b82525050565b6000602082019050611e996000830184611e75565b92915050565b60008060008060808587031215611eb957611eb8611e0d565b5b6000611ec787828801611e33565b9450506020611ed887828801611e33565b9350506040611ee987828801611e33565b9250506060611efa87828801611e33565b91505092959194509250565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b6000611f4b611f46611f4184611f06565b611f26565b611f06565b9050919050565b6000611f5d82611f30565b9050919050565b6000611f6f82611f52565b9050919050565b611f7f81611f64565b82525050565b6000602082019050611f9a6000830184611f76565b92915050565b6000611fab82611f06565b9050919050565b611fbb81611fa0565b8114611fc657600080fd5b50565b600081359050611fd881611fb2565b92915050565b600060208284031215611ff457611ff3611e0d565b5b600061200284828501611fc9565b91505092915050565b60008115159050919050565b6120208161200b565b811461202b57600080fd5b50565b60008135905061203d81612017565b92915050565b60006020828403121561205957612058611e0d565b5b60006120678482850161202e565b91505092915050565b60008060006060848603121561208957612088611e0d565b5b600061209786828701611e33565b93505060206120a886828701611e33565b92505060406120b986828701611e33565b9150509250925092565b60006120ce82611f52565b9050919050565b6120de816120c3565b82525050565b60006020820190506120f960008301846120d5565b92915050565b600061210a82611f06565b9050919050565b61211a816120ff565b82525050565b60006020820190506121356000830184612111565b92915050565b612144816120ff565b811461214f57600080fd5b50565b6000813590506121618161213b565b92915050565b60006020828403121561217d5761217c611e0d565b5b600061218b84828501612152565b91505092915050565b60006060820190506121a96000830186611e75565b6121b66020830185611e75565b6121c36040830184611e75565b949350505050565b6121d48161200b565b82525050565b60006020820190506121ef60008301846121cb565b92915050565b600061220082611fa0565b9050919050565b612210816121f5565b811461221b57600080fd5b50565b60008135905061222d81612207565b92915050565b6000806040838503121561224a57612249611e0d565b5b60006122588582860161221e565b925050602061226985828601611e33565b9150509250929050565b61227c81611fa0565b82525050565b60006020820190506122976000830184612273565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006122d782611e12565b91506122e283611e12565b92508282026122f081611e12565b915082820484148315176123075761230661229d565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061234882611e12565b915061235383611e12565b9250826123635761236261230e565b5b828204905092915050565b600082825260208201905092915050565b7f50524553414c453a204e6f7420616e206f776e65720000000000000000000000600082015250565b60006123b560158361236e565b91506123c08261237f565b602082019050919050565b600060208201905081810360008301526123e4816123a8565b9050919050565b60006123f682611e12565b915061240183611e12565b92508282019050808211156124195761241861229d565b5b92915050565b60006040820190506124346000830185611e75565b6124416020830184611e75565b9392505050565b600069ffffffffffffffffffff82169050919050565b61246781612448565b811461247257600080fd5b50565b6000815190506124848161245e565b92915050565b6000819050919050565b61249d8161248a565b81146124a857600080fd5b50565b6000815190506124ba81612494565b92915050565b6000815190506124cf81611e1c565b92915050565b600080600080600060a086880312156124f1576124f0611e0d565b5b60006124ff88828901612475565b9550506020612510888289016124ab565b9450506040612521888289016124c0565b9350506060612532888289016124c0565b925050608061254388828901612475565b9150509295509295909350565b7f50726573616c65203a2050726573616c65206973207061757365642c2063686560008201527f636b206261636b206c6174657200000000000000000000000000000000000000602082015250565b60006125ac602d8361236e565b91506125b782612550565b604082019050919050565b600060208201905081810360008301526125db8161259f565b9050919050565b7f4c6f7720546f6b656e20696e20706f6f6c2c20547279206c65737320616d6f7560008201527f6e74206f72207761697420666f72206e65787420737461676500000000000000602082015250565b600061263e60398361236e565b9150612649826125e2565b604082019050919050565b6000602082019050818103600083015261266d81612631565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006126d060268361236e565b91506126db82612674565b604082019050919050565b600060208201905081810360008301526126ff816126c3565b9050919050565b600060408201905061271b6000830185612273565b6127286020830184611e75565b9392505050565b60006060820190506127446000830186612273565b6127516020830185612273565b61275e6040830184611e75565b949350505050565b60008151905061277581612017565b92915050565b60006020828403121561279157612790611e0d565b5b600061279f84828501612766565b91505092915050565b600081519050919050565b600081905092915050565b60005b838110156127dc5780820151818401526020810190506127c1565b60008484015250505050565b60006127f3826127a8565b6127fd81856127b3565b935061280d8185602086016127be565b80840191505092915050565b600061282582846127e8565b91508190509291505056fea26469706673582212202d95c422e1045a541c0a03b3b0b5884f9a0f4210f4e6a20bd8dbad543fcaf0f564736f6c63430008120033

Deployed Bytecode Sourcemap

1695:6402:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5733:252;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2051:46;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7655:124;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6211:411;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1998:46;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1778:18;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2287:37;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2205:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7365:93;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6041:125;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7823:110;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7502:109;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7241:97;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1967:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5586:92;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6630:225;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2171:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1805:38;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2622:42;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1852:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3566:159;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1889:39;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3801:910;;;:::i;:::-;;6890:321;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2578:37;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;2373:25;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4719:859;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7968:126;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1935:25;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1752:19;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2405:40;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2333:31;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2135:29;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2104:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2243:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5733:252;5794:7;5814:16;5867:7;5845:16;:14;:16::i;:::-;5834:7;:28;;;;:::i;:::-;5833:42;;;;:::i;:::-;5814:61;;5886:22;5941:3;5924:11;;5912:8;:24;;;;:::i;:::-;5911:34;;;;:::i;:::-;5886:59;;5963:14;5956:21;;;;5733:252;;;:::o;2051:46::-;;;;:::o;7655:124::-;2727:5;;;;;;;;;;;2713:19;;:10;:19;;;2705:53;;;;;;;;;;;;:::i;:::-;;;;;;;;;7732:39:::1;7750:12;;;;;;;;;;;7764:6;7732:4;;;;;;;;;;;:17;;;;:39;;;;;:::i;:::-;7655:124:::0;:::o;6211:411::-;2727:5;;;;;;;;;;;2713:19;;:10;:19;;;2705:53;;;;;;;;;;;;:::i;:::-;;;;;;;;;6385:16:::1;6404:11;;6385:30;;6440:6;6426:11;:20;;;;6469:10;6457:9;:22;;;;6519:13;6507:9;;:25;;;;:::i;:::-;6492:12;:40;;;;6556:11;6543:10;:24;;;;6585:29;6597:8;6607:6;6585:29;;;;;;;:::i;:::-;;;;;;;;6374:248;6211:411:::0;;;;:::o;1998:46::-;;;;:::o;1778:18::-;;;;;;;;;;;;;:::o;2287:37::-;2321:3;2287:37;:::o;2205:31::-;;;;:::o;7365:93::-;2727:5;;;;;;;;;;;2713:19;;:10;:19;;;2705:53;;;;;;;;;;;;:::i;:::-;;;;;;;;;7444:5:::1;7430:4;;:20;;;;;;;;;;;;;;;;;;7365:93:::0;:::o;6041:125::-;6100:7;6154:3;6138:11;;6128:7;:21;;;;:::i;:::-;6127:31;;;;:::i;:::-;6120:38;;6041:125;;;:::o;7823:110::-;2727:5;;;;;;;;;;;2713:19;;:10;:19;;;2705:53;;;;;;;;;;;;:::i;:::-;;;;;;;;;7919:5:::1;7896:12;;:29;;;;;;;;;;;;;;;;;;7823:110:::0;:::o;7502:109::-;2727:5;;;;;;;;;;;2713:19;;:10;:19;;;2705:53;;;;;;;;;;;;:::i;:::-;;;;;;;;;7574:12:::1;;;;;;;;;;;:21;;:29;7596:6;7574:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;7502:109:::0;:::o;7241:97::-;2727:5;;;;;;;;;;;2713:19;;:10;:19;;;2705:53;;;;;;;;;;;;:::i;:::-;;;;;;;;;7323:6:::1;7308:5;::::0;:22:::1;;;;;;;;;;;;;;;;;;7241:97:::0;:::o;1967:24::-;;;;:::o;5586:92::-;2727:5;;;;;;;;;;;2713:19;;:10;:19;;;2705:53;;;;;;;;;;;;:::i;:::-;;;;;;;;;5666:4:::1;5650:13;;:20;;;;;;;;;;;;;;;;;;5586:92:::0;:::o;6630:225::-;2727:5;;;;;;;;;;;2713:19;;:10;:19;;;2705:53;;;;;;;;;;;;:::i;:::-;;;;;;;;;6779:7:::1;6765:11;:21;;;;6809:5;6797:9;:17;;;;6840:7;6825:12;:22;;;;6630:225:::0;;;:::o;2171:27::-;;;;:::o;1805:38::-;;;;;;;;;;;;;:::o;2622:42::-;;;;;;;;;;;;;;;;;:::o;1852:28::-;;;;;;;;;;;;;:::o;3566:159::-;3613:7;3636:12;3658:9;;;;;;;;;;;:25;;;:27;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3633:52;;;;;;3711:5;3696:21;;;3566:159;:::o;1889:39::-;;;;:::o;3801:910::-;3886:4;3869:21;;:13;;;;;;;;;;;:21;;;3847:116;;;;;;;;;;;;:::i;:::-;;;;;;;;;4002:4;3978:28;;:8;:20;3987:10;3978:20;;;;;;;;;;;;;;;;;;;;;;;;;:28;;;3974:76;;4037:1;4023:10;;:15;;;;;;;:::i;:::-;;;;;;;;3974:76;4062:22;4112:24;4126:9;4112:13;:24::i;:::-;4095:41;;4172:14;4159:9;;:28;;;;:::i;:::-;4147:9;:40;;;;4233:12;;4220:9;;:25;;4198:132;;;;;;;;;;;;:::i;:::-;;;;;;;;;4372:9;4356:12;;:26;;;;:::i;:::-;4341:12;:41;;;;4490:9;4441:5;:17;4447:10;4441:17;;;;;;;;;;;;;;;:32;;;:59;;;;:::i;:::-;4393:5;:17;4399:10;4393:17;;;;;;;;;;;;;;;:32;;:107;;;;4606:14;4558:5;:17;4564:10;4558:17;;;;;;;;;;;;;;;:31;;;:63;;;;:::i;:::-;4511:5;:17;4517:10;4511:17;;;;;;;;;;;;;;;:31;;:110;;;;4655:4;4632:8;:20;4641:10;4632:20;;;;;;;;;;;;;;;;:27;;;;;;;;;;;;;;;;;;4672:14;4692:10;4672:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3836:875;3801:910::o;6890:321::-;2727:5;;;;;;;;;;;2713:19;;:10;:19;;;2705:53;;;;;;;;;;;;:::i;:::-;;;;;;;;;7011:1:::1;6990:23;;:9;:23;;::::0;6968:111:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;7090:17;7110:5;;;;;;;;;;;7090:25;;7134:9;7126:5;;:17;;;;;;;;;;;;;;;;;;7193:9;7161:42;;7182:9;7161:42;;;;;;;;;;;;6957:254;6890:321:::0;:::o;2578:37::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;2373:25::-;;;;;;;;;;;;;:::o;4719:859::-;4818:4;4801:21;;:13;;;;;;;;;;;:21;;;4779:116;;;;;;;;;;;;:::i;:::-;;;;;;;;;4934:4;4910:28;;:8;:20;4919:10;4910:20;;;;;;;;;;;;;;;;;;;;;;;;;:28;;;4906:76;;4969:1;4955:10;;:15;;;;;;;:::i;:::-;;;;;;;;4906:76;4992:60;5014:10;5034:4;5041:10;4992:4;;;;;;;;;;;:21;;;;:60;;;;;;:::i;:::-;5065:22;5115:23;5127:10;5115:11;:23::i;:::-;5098:40;;5174:14;5161:9;;:28;;;;:::i;:::-;5149:9;:40;;;;5235:12;;5222:9;;:25;;5200:132;;;;;;;;;;;;:::i;:::-;;;;;;;;;5363:10;5343:16;;:30;;;;;;;:::i;:::-;;;;;;;;5418:10;5384:5;:17;5390:10;5384:17;;;;;;;;;;;;;;;:30;;;:44;;;;;;;:::i;:::-;;;;;;;;5474:14;5439:5;:17;5445:10;5439:17;;;;;;;;;;;;;;;:31;;;:49;;;;;;;:::i;:::-;;;;;;;;5522:4;5499:8;:20;5508:10;5499:20;;;;;;;;;;;;;;;;:27;;;;;;;;;;;;;;;;;;5539:14;5559:10;5539:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4768:810;4719:859;:::o;7968:126::-;2727:5;;;;;;;;;;;2713:19;;:10;:19;;;2705:53;;;;;;;;;;;;:::i;:::-;;;;;;;;;8052:5:::1;:14;;;8067:10;8079:6;8052:34;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;7968:126:::0;;:::o;1935:25::-;;;;:::o;1752:19::-;;;;;;;;;;;;:::o;2405:40::-;;;;;;;;;;;;;;;;;;;;;;:::o;2333:31::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;2135:29::-;;;;:::o;2104:24::-;;;;:::o;2243:35::-;;;;;;;;;;;;;:::o;15082:162::-;15165:71;15185:5;15207;:14;;;15224:2;15228:5;15192:43;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15165:19;:71::i;:::-;15082:162;;;:::o;15489:270::-;15633:118;15667:5;15702;:18;;;15723:4;15729:2;15733:5;15687:53;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15633:19;:118::i;:::-;15489:270;;;;:::o;18243:638::-;18667:23;18693:33;18721:4;18701:5;18693:27;;;;:33;;;;:::i;:::-;18667:59;;18762:1;18741:10;:17;:22;;:57;;;;;18779:10;18768:30;;;;;;;;;;;;:::i;:::-;18767:31;18741:57;18737:137;;;18855:5;18822:40;;;;;;;;;;;:::i;:::-;;;;;;;;18737:137;18313:568;18243:638;;:::o;10672:178::-;10772:12;10804:38;10826:6;10834:4;10840:1;10804:21;:38::i;:::-;10797:45;;10672:178;;;;:::o;11185:456::-;11318:12;11371:5;11347:21;:29;11343:110;;;11435:4;11400:41;;;;;;;;;;;:::i;:::-;;;;;;;;11343:110;11464:12;11478:23;11505:6;:11;;11524:5;11545:4;11505:55;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11463:97;;;;11578:55;11605:6;11613:7;11622:10;11578:26;:55::i;:::-;11571:62;;;;11185:456;;;;;:::o;12769:597::-;12917:12;12947:7;12942:417;;12971:19;12979:10;12971:7;:19::i;:::-;12942:417;;;13220:1;13199:10;:17;:22;:49;;;;;13247:1;13225:6;:18;;;:23;13199:49;13195:121;;;13293:6;13276:24;;;;;;;;;;;:::i;:::-;;;;;;;;13195:121;13337:10;13330:17;;;;12942:417;12769:597;;;;;;:::o;13944:528::-;14097:1;14077:10;:17;:21;14073:392;;;14309:10;14303:17;14366:15;14353:10;14349:2;14345:19;14338:44;14073:392;14436:17;;;;;;;;;;;;;;88:117:1;197:1;194;187:12;334:77;371:7;400:5;389:16;;334:77;;;:::o;417:122::-;490:24;508:5;490:24;:::i;:::-;483:5;480:35;470:63;;529:1;526;519:12;470:63;417:122;:::o;545:139::-;591:5;629:6;616:20;607:29;;645:33;672:5;645:33;:::i;:::-;545:139;;;;:::o;690:329::-;749:6;798:2;786:9;777:7;773:23;769:32;766:119;;;804:79;;:::i;:::-;766:119;924:1;949:53;994:7;985:6;974:9;970:22;949:53;:::i;:::-;939:63;;895:117;690:329;;;;:::o;1025:118::-;1112:24;1130:5;1112:24;:::i;:::-;1107:3;1100:37;1025:118;;:::o;1149:222::-;1242:4;1280:2;1269:9;1265:18;1257:26;;1293:71;1361:1;1350:9;1346:17;1337:6;1293:71;:::i;:::-;1149:222;;;;:::o;1377:765::-;1463:6;1471;1479;1487;1536:3;1524:9;1515:7;1511:23;1507:33;1504:120;;;1543:79;;:::i;:::-;1504:120;1663:1;1688:53;1733:7;1724:6;1713:9;1709:22;1688:53;:::i;:::-;1678:63;;1634:117;1790:2;1816:53;1861:7;1852:6;1841:9;1837:22;1816:53;:::i;:::-;1806:63;;1761:118;1918:2;1944:53;1989:7;1980:6;1969:9;1965:22;1944:53;:::i;:::-;1934:63;;1889:118;2046:2;2072:53;2117:7;2108:6;2097:9;2093:22;2072:53;:::i;:::-;2062:63;;2017:118;1377:765;;;;;;;:::o;2148:126::-;2185:7;2225:42;2218:5;2214:54;2203:65;;2148:126;;;:::o;2280:60::-;2308:3;2329:5;2322:12;;2280:60;;;:::o;2346:142::-;2396:9;2429:53;2447:34;2456:24;2474:5;2456:24;:::i;:::-;2447:34;:::i;:::-;2429:53;:::i;:::-;2416:66;;2346:142;;;:::o;2494:126::-;2544:9;2577:37;2608:5;2577:37;:::i;:::-;2564:50;;2494:126;;;:::o;2626:139::-;2689:9;2722:37;2753:5;2722:37;:::i;:::-;2709:50;;2626:139;;;:::o;2771:157::-;2871:50;2915:5;2871:50;:::i;:::-;2866:3;2859:63;2771:157;;:::o;2934:248::-;3040:4;3078:2;3067:9;3063:18;3055:26;;3091:84;3172:1;3161:9;3157:17;3148:6;3091:84;:::i;:::-;2934:248;;;;:::o;3188:96::-;3225:7;3254:24;3272:5;3254:24;:::i;:::-;3243:35;;3188:96;;;:::o;3290:122::-;3363:24;3381:5;3363:24;:::i;:::-;3356:5;3353:35;3343:63;;3402:1;3399;3392:12;3343:63;3290:122;:::o;3418:139::-;3464:5;3502:6;3489:20;3480:29;;3518:33;3545:5;3518:33;:::i;:::-;3418:139;;;;:::o;3563:329::-;3622:6;3671:2;3659:9;3650:7;3646:23;3642:32;3639:119;;;3677:79;;:::i;:::-;3639:119;3797:1;3822:53;3867:7;3858:6;3847:9;3843:22;3822:53;:::i;:::-;3812:63;;3768:117;3563:329;;;;:::o;3898:90::-;3932:7;3975:5;3968:13;3961:21;3950:32;;3898:90;;;:::o;3994:116::-;4064:21;4079:5;4064:21;:::i;:::-;4057:5;4054:32;4044:60;;4100:1;4097;4090:12;4044:60;3994:116;:::o;4116:133::-;4159:5;4197:6;4184:20;4175:29;;4213:30;4237:5;4213:30;:::i;:::-;4116:133;;;;:::o;4255:323::-;4311:6;4360:2;4348:9;4339:7;4335:23;4331:32;4328:119;;;4366:79;;:::i;:::-;4328:119;4486:1;4511:50;4553:7;4544:6;4533:9;4529:22;4511:50;:::i;:::-;4501:60;;4457:114;4255:323;;;;:::o;4584:619::-;4661:6;4669;4677;4726:2;4714:9;4705:7;4701:23;4697:32;4694:119;;;4732:79;;:::i;:::-;4694:119;4852:1;4877:53;4922:7;4913:6;4902:9;4898:22;4877:53;:::i;:::-;4867:63;;4823:117;4979:2;5005:53;5050:7;5041:6;5030:9;5026:22;5005:53;:::i;:::-;4995:63;;4950:118;5107:2;5133:53;5178:7;5169:6;5158:9;5154:22;5133:53;:::i;:::-;5123:63;;5078:118;4584:619;;;;;:::o;5209:155::-;5288:9;5321:37;5352:5;5321:37;:::i;:::-;5308:50;;5209:155;;;:::o;5370:189::-;5486:66;5546:5;5486:66;:::i;:::-;5481:3;5474:79;5370:189;;:::o;5565:280::-;5687:4;5725:2;5714:9;5710:18;5702:26;;5738:100;5835:1;5824:9;5820:17;5811:6;5738:100;:::i;:::-;5565:280;;;;:::o;5851:104::-;5896:7;5925:24;5943:5;5925:24;:::i;:::-;5914:35;;5851:104;;;:::o;5961:142::-;6064:32;6090:5;6064:32;:::i;:::-;6059:3;6052:45;5961:142;;:::o;6109:254::-;6218:4;6256:2;6245:9;6241:18;6233:26;;6269:87;6353:1;6342:9;6338:17;6329:6;6269:87;:::i;:::-;6109:254;;;;:::o;6369:138::-;6450:32;6476:5;6450:32;:::i;:::-;6443:5;6440:43;6430:71;;6497:1;6494;6487:12;6430:71;6369:138;:::o;6513:155::-;6567:5;6605:6;6592:20;6583:29;;6621:41;6656:5;6621:41;:::i;:::-;6513:155;;;;:::o;6674:345::-;6741:6;6790:2;6778:9;6769:7;6765:23;6761:32;6758:119;;;6796:79;;:::i;:::-;6758:119;6916:1;6941:61;6994:7;6985:6;6974:9;6970:22;6941:61;:::i;:::-;6931:71;;6887:125;6674:345;;;;:::o;7025:442::-;7174:4;7212:2;7201:9;7197:18;7189:26;;7225:71;7293:1;7282:9;7278:17;7269:6;7225:71;:::i;:::-;7306:72;7374:2;7363:9;7359:18;7350:6;7306:72;:::i;:::-;7388;7456:2;7445:9;7441:18;7432:6;7388:72;:::i;:::-;7025:442;;;;;;:::o;7473:109::-;7554:21;7569:5;7554:21;:::i;:::-;7549:3;7542:34;7473:109;;:::o;7588:210::-;7675:4;7713:2;7702:9;7698:18;7690:26;;7726:65;7788:1;7777:9;7773:17;7764:6;7726:65;:::i;:::-;7588:210;;;;:::o;7804:109::-;7854:7;7883:24;7901:5;7883:24;:::i;:::-;7872:35;;7804:109;;;:::o;7919:148::-;8005:37;8036:5;8005:37;:::i;:::-;7998:5;7995:48;7985:76;;8057:1;8054;8047:12;7985:76;7919:148;:::o;8073:165::-;8132:5;8170:6;8157:20;8148:29;;8186:46;8226:5;8186:46;:::i;:::-;8073:165;;;;:::o;8244:500::-;8325:6;8333;8382:2;8370:9;8361:7;8357:23;8353:32;8350:119;;;8388:79;;:::i;:::-;8350:119;8508:1;8533:66;8591:7;8582:6;8571:9;8567:22;8533:66;:::i;:::-;8523:76;;8479:130;8648:2;8674:53;8719:7;8710:6;8699:9;8695:22;8674:53;:::i;:::-;8664:63;;8619:118;8244:500;;;;;:::o;8750:118::-;8837:24;8855:5;8837:24;:::i;:::-;8832:3;8825:37;8750:118;;:::o;8874:222::-;8967:4;9005:2;8994:9;8990:18;8982:26;;9018:71;9086:1;9075:9;9071:17;9062:6;9018:71;:::i;:::-;8874:222;;;;:::o;9102:180::-;9150:77;9147:1;9140:88;9247:4;9244:1;9237:15;9271:4;9268:1;9261:15;9288:410;9328:7;9351:20;9369:1;9351:20;:::i;:::-;9346:25;;9385:20;9403:1;9385:20;:::i;:::-;9380:25;;9440:1;9437;9433:9;9462:30;9480:11;9462:30;:::i;:::-;9451:41;;9641:1;9632:7;9628:15;9625:1;9622:22;9602:1;9595:9;9575:83;9552:139;;9671:18;;:::i;:::-;9552:139;9336:362;9288:410;;;;:::o;9704:180::-;9752:77;9749:1;9742:88;9849:4;9846:1;9839:15;9873:4;9870:1;9863:15;9890:185;9930:1;9947:20;9965:1;9947:20;:::i;:::-;9942:25;;9981:20;9999:1;9981:20;:::i;:::-;9976:25;;10020:1;10010:35;;10025:18;;:::i;:::-;10010:35;10067:1;10064;10060:9;10055:14;;9890:185;;;;:::o;10081:169::-;10165:11;10199:6;10194:3;10187:19;10239:4;10234:3;10230:14;10215:29;;10081:169;;;;:::o;10256:171::-;10396:23;10392:1;10384:6;10380:14;10373:47;10256:171;:::o;10433:366::-;10575:3;10596:67;10660:2;10655:3;10596:67;:::i;:::-;10589:74;;10672:93;10761:3;10672:93;:::i;:::-;10790:2;10785:3;10781:12;10774:19;;10433:366;;;:::o;10805:419::-;10971:4;11009:2;10998:9;10994:18;10986:26;;11058:9;11052:4;11048:20;11044:1;11033:9;11029:17;11022:47;11086:131;11212:4;11086:131;:::i;:::-;11078:139;;10805:419;;;:::o;11230:191::-;11270:3;11289:20;11307:1;11289:20;:::i;:::-;11284:25;;11323:20;11341:1;11323:20;:::i;:::-;11318:25;;11366:1;11363;11359:9;11352:16;;11387:3;11384:1;11381:10;11378:36;;;11394:18;;:::i;:::-;11378:36;11230:191;;;;:::o;11427:332::-;11548:4;11586:2;11575:9;11571:18;11563:26;;11599:71;11667:1;11656:9;11652:17;11643:6;11599:71;:::i;:::-;11680:72;11748:2;11737:9;11733:18;11724:6;11680:72;:::i;:::-;11427:332;;;;;:::o;11765:105::-;11801:7;11841:22;11834:5;11830:34;11819:45;;11765:105;;;:::o;11876:120::-;11948:23;11965:5;11948:23;:::i;:::-;11941:5;11938:34;11928:62;;11986:1;11983;11976:12;11928:62;11876:120;:::o;12002:141::-;12058:5;12089:6;12083:13;12074:22;;12105:32;12131:5;12105:32;:::i;:::-;12002:141;;;;:::o;12149:76::-;12185:7;12214:5;12203:16;;12149:76;;;:::o;12231:120::-;12303:23;12320:5;12303:23;:::i;:::-;12296:5;12293:34;12283:62;;12341:1;12338;12331:12;12283:62;12231:120;:::o;12357:141::-;12413:5;12444:6;12438:13;12429:22;;12460:32;12486:5;12460:32;:::i;:::-;12357:141;;;;:::o;12504:143::-;12561:5;12592:6;12586:13;12577:22;;12608:33;12635:5;12608:33;:::i;:::-;12504:143;;;;:::o;12653:971::-;12756:6;12764;12772;12780;12788;12837:3;12825:9;12816:7;12812:23;12808:33;12805:120;;;12844:79;;:::i;:::-;12805:120;12964:1;12989:63;13044:7;13035:6;13024:9;13020:22;12989:63;:::i;:::-;12979:73;;12935:127;13101:2;13127:63;13182:7;13173:6;13162:9;13158:22;13127:63;:::i;:::-;13117:73;;13072:128;13239:2;13265:64;13321:7;13312:6;13301:9;13297:22;13265:64;:::i;:::-;13255:74;;13210:129;13378:2;13404:64;13460:7;13451:6;13440:9;13436:22;13404:64;:::i;:::-;13394:74;;13349:129;13517:3;13544:63;13599:7;13590:6;13579:9;13575:22;13544:63;:::i;:::-;13534:73;;13488:129;12653:971;;;;;;;;:::o;13630:232::-;13770:34;13766:1;13758:6;13754:14;13747:58;13839:15;13834:2;13826:6;13822:15;13815:40;13630:232;:::o;13868:366::-;14010:3;14031:67;14095:2;14090:3;14031:67;:::i;:::-;14024:74;;14107:93;14196:3;14107:93;:::i;:::-;14225:2;14220:3;14216:12;14209:19;;13868:366;;;:::o;14240:419::-;14406:4;14444:2;14433:9;14429:18;14421:26;;14493:9;14487:4;14483:20;14479:1;14468:9;14464:17;14457:47;14521:131;14647:4;14521:131;:::i;:::-;14513:139;;14240:419;;;:::o;14665:244::-;14805:34;14801:1;14793:6;14789:14;14782:58;14874:27;14869:2;14861:6;14857:15;14850:52;14665:244;:::o;14915:366::-;15057:3;15078:67;15142:2;15137:3;15078:67;:::i;:::-;15071:74;;15154:93;15243:3;15154:93;:::i;:::-;15272:2;15267:3;15263:12;15256:19;;14915:366;;;:::o;15287:419::-;15453:4;15491:2;15480:9;15476:18;15468:26;;15540:9;15534:4;15530:20;15526:1;15515:9;15511:17;15504:47;15568:131;15694:4;15568:131;:::i;:::-;15560:139;;15287:419;;;:::o;15712:225::-;15852:34;15848:1;15840:6;15836:14;15829:58;15921:8;15916:2;15908:6;15904:15;15897:33;15712:225;:::o;15943:366::-;16085:3;16106:67;16170:2;16165:3;16106:67;:::i;:::-;16099:74;;16182:93;16271:3;16182:93;:::i;:::-;16300:2;16295:3;16291:12;16284:19;;15943:366;;;:::o;16315:419::-;16481:4;16519:2;16508:9;16504:18;16496:26;;16568:9;16562:4;16558:20;16554:1;16543:9;16539:17;16532:47;16596:131;16722:4;16596:131;:::i;:::-;16588:139;;16315:419;;;:::o;16740:332::-;16861:4;16899:2;16888:9;16884:18;16876:26;;16912:71;16980:1;16969:9;16965:17;16956:6;16912:71;:::i;:::-;16993:72;17061:2;17050:9;17046:18;17037:6;16993:72;:::i;:::-;16740:332;;;;;:::o;17078:442::-;17227:4;17265:2;17254:9;17250:18;17242:26;;17278:71;17346:1;17335:9;17331:17;17322:6;17278:71;:::i;:::-;17359:72;17427:2;17416:9;17412:18;17403:6;17359:72;:::i;:::-;17441;17509:2;17498:9;17494:18;17485:6;17441:72;:::i;:::-;17078:442;;;;;;:::o;17526:137::-;17580:5;17611:6;17605:13;17596:22;;17627:30;17651:5;17627:30;:::i;:::-;17526:137;;;;:::o;17669:345::-;17736:6;17785:2;17773:9;17764:7;17760:23;17756:32;17753:119;;;17791:79;;:::i;:::-;17753:119;17911:1;17936:61;17989:7;17980:6;17969:9;17965:22;17936:61;:::i;:::-;17926:71;;17882:125;17669:345;;;;:::o;18020:98::-;18071:6;18105:5;18099:12;18089:22;;18020:98;;;:::o;18124:147::-;18225:11;18262:3;18247:18;;18124:147;;;;:::o;18277:246::-;18358:1;18368:113;18382:6;18379:1;18376:13;18368:113;;;18467:1;18462:3;18458:11;18452:18;18448:1;18443:3;18439:11;18432:39;18404:2;18401:1;18397:10;18392:15;;18368:113;;;18515:1;18506:6;18501:3;18497:16;18490:27;18339:184;18277:246;;;:::o;18529:386::-;18633:3;18661:38;18693:5;18661:38;:::i;:::-;18715:88;18796:6;18791:3;18715:88;:::i;:::-;18708:95;;18812:65;18870:6;18865:3;18858:4;18851:5;18847:16;18812:65;:::i;:::-;18902:6;18897:3;18893:16;18886:23;;18637:278;18529:386;;;;:::o;18921:271::-;19051:3;19073:93;19162:3;19153:6;19073:93;:::i;:::-;19066:100;;19183:3;19176:10;;18921:271;;;;:::o

Swarm Source

ipfs://2d95c422e1045a541c0a03b3b0b5884f9a0f4210f4e6a20bd8dbad543fcaf0f5

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

Block Uncle Number Difficulty Gas Used Reward
View All Uncles
Loading...
Loading
Loading...
Loading

Validator Index Block Amount
View All Withdrawals

Transaction Hash Block Value Eth2 PubKey Valid
View All Deposits
Loading...
Loading
[ Download: CSV Export  ]

A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.