POL Price: $0.126892 (-4.10%)
 

More Info

Private Name Tags

Multichain Info

No addresses found
Transaction Hash
Block
From
To
Transfer633575332024-10-22 16:16:59458 days ago1729613819IN
0x60a89229...8De1F3ebC
0 POL0.001009433.92143197
Transfer509734122023-12-10 15:31:04775 days ago1702222264IN
0x60a89229...8De1F3ebC
0 POL0.00534408113.99264947
Transfer478820912023-09-23 8:27:14854 days ago1695457634IN
0x60a89229...8De1F3ebC
0 POL0.00304225112.90594062
Transfer478820382023-09-23 8:24:46854 days ago1695457486IN
0x60a89229...8De1F3ebC
0 POL0.00270652100.44642246
Transfer476768642023-09-18 4:04:05859 days ago1695009845IN
0x60a89229...8De1F3ebC
0 POL0.0021336479.14991815
Transfer474424802023-09-12 6:35:43865 days ago1694500543IN
0x60a89229...8De1F3ebC
0 POL0.00637313236.5238247
Transfer474424552023-09-12 6:33:45865 days ago1694500425IN
0x60a89229...8De1F3ebC
0 POL0.00437154162.23974266
Transfer474424112023-09-12 6:31:39865 days ago1694500299IN
0x60a89229...8De1F3ebC
0 POL0.00345975128.40049119
Transfer462874722023-08-14 7:24:38894 days ago1691997878IN
0x60a89229...8De1F3ebC
0 POL0.0025737895.47748164
Transfer441971212023-06-22 7:01:09947 days ago1687417269IN
0x60a89229...8De1F3ebC
0 POL0.00564011189.61565847
Transfer439019072023-06-14 12:10:11954 days ago1686744611IN
0x60a89229...8De1F3ebC
0 POL0.00751631278.95017717
Transfer437415962023-06-10 6:47:18959 days ago1686379638IN
0x60a89229...8De1F3ebC
0 POL0.03638272704.31347186
Transfer432766402023-05-29 5:25:32971 days ago1685337932IN
0x60a89229...8De1F3ebC
0 POL0.00979334209.05848086
Transfer432757282023-05-29 4:51:17971 days ago1685335877IN
0x60a89229...8De1F3ebC
0 POL0.0054027156.39619857
Transfer432099112023-05-27 12:41:13972 days ago1685191273IN
0x60a89229...8De1F3ebC
0 POL0.00791447168.90693544
Transfer430555682023-05-23 15:13:27976 days ago1684854807IN
0x60a89229...8De1F3ebC
0 POL0.00966168206.24804512
Approve430009082023-05-22 4:32:05978 days ago1684729925IN
0x60a89229...8De1F3ebC
0 POL0.0075042160.94119456
Sell_Tokens426962772023-05-14 13:42:12985 days ago1684071732IN
0x60a89229...8De1F3ebC
0 POL0.00897723162
Buy_Tokens424407852023-05-08 5:02:00992 days ago1683522120IN
0x60a89229...8De1F3ebC
0.5 POL0.0064706168.32549991
Sell_Tokens420600072023-04-28 13:54:031001 days ago1682690043IN
0x60a89229...8De1F3ebC
0 POL0.01068106405
Sell_Tokens420599982023-04-28 13:53:431001 days ago1682690023IN
0x60a89229...8De1F3ebC
0 POL0.01068106405
Sell_Tokens420599912023-04-28 13:53:291001 days ago1682690009IN
0x60a89229...8De1F3ebC
0 POL0.02272015410
Buy_Tokens420327042023-04-27 21:06:451002 days ago1682629605IN
0x60a89229...8De1F3ebC
0.5 POL0.01460348379.89346108
Sell_Tokens418952322023-04-24 8:16:401006 days ago1682324200IN
0x60a89229...8De1F3ebC
0 POL0.01463701555
Sell_Tokens418952282023-04-24 8:16:241006 days ago1682324184IN
0x60a89229...8De1F3ebC
0 POL0.01564661593.28166061
View all transactions

Latest 25 internal transactions (View All)

Parent Transaction Hash Block From To
426962772023-05-14 13:42:12985 days ago1684071732
0x60a89229...8De1F3ebC
0.6 POL
420599912023-04-28 13:53:291001 days ago1682690009
0x60a89229...8De1F3ebC
0.6 POL
418952252023-04-24 8:16:121006 days ago1682324172
0x60a89229...8De1F3ebC
0.6 POL
418527652023-04-23 5:19:451007 days ago1682227185
0x60a89229...8De1F3ebC
0.6 POL
417941072023-04-21 17:29:151008 days ago1682098155
0x60a89229...8De1F3ebC
0.6 POL
417940972023-04-21 17:28:551008 days ago1682098135
0x60a89229...8De1F3ebC
0.6 POL
417940892023-04-21 17:28:371008 days ago1682098117
0x60a89229...8De1F3ebC
0.6 POL
417940812023-04-21 17:28:211008 days ago1682098101
0x60a89229...8De1F3ebC
0.6 POL
417940322023-04-21 17:26:371008 days ago1682097997
0x60a89229...8De1F3ebC
0.6 POL
417940322023-04-21 17:26:371008 days ago1682097997
0x60a89229...8De1F3ebC
0.6 POL
416062662023-04-16 17:58:431013 days ago1681667923
0x60a89229...8De1F3ebC
0.6 POL
415187512023-04-14 10:37:181016 days ago1681468638
0x60a89229...8De1F3ebC
9.9 POL
415172042023-04-14 9:41:451016 days ago1681465305
0x60a89229...8De1F3ebC
17.52 POL
415163772023-04-14 9:11:031016 days ago1681463463
0x60a89229...8De1F3ebC
18.9 POL
415155272023-04-14 8:38:531016 days ago1681461533
0x60a89229...8De1F3ebC
6 POL
415020172023-04-14 0:14:381016 days ago1681431278
0x60a89229...8De1F3ebC
18 POL
414321922023-04-12 4:25:061018 days ago1681273506
0x60a89229...8De1F3ebC
1.32 POL
414249482023-04-12 0:01:521018 days ago1681257712
0x60a89229...8De1F3ebC
0.6 POL
413913082023-04-11 3:09:291019 days ago1681182569
0x60a89229...8De1F3ebC
0.6 POL
413603002023-04-10 7:58:341020 days ago1681113514
0x60a89229...8De1F3ebC
1.92 POL
413446542023-04-09 22:23:141020 days ago1681078994
0x60a89229...8De1F3ebC
14.1 POL
413445542023-04-09 22:19:421020 days ago1681078782
0x60a89229...8De1F3ebC
0.6 POL
413444652023-04-09 22:16:341020 days ago1681078594
0x60a89229...8De1F3ebC
0.6 POL
412799682023-04-08 6:30:541022 days ago1680935454
0x60a89229...8De1F3ebC
1.2 POL
410516812023-04-02 9:33:351028 days ago1680428015
0x60a89229...8De1F3ebC
0.6 POL
View All Internal Transactions
Cross-Chain Transactions
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
GpowerToken

Compiler Version
v0.8.7+commit.e28d00a7

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at polygonscan.com on 2023-03-16
*/

/**
 *Submitted for verification at BscScan.com on 2022-10-09
*/

/*                            
 \\\\\\\@*@*@*@*@*@ GpowerToken @*@*@*@*@*@*@/////// 
We will Burn Until there is nothing left to burn!  
*/

// File: @openzeppelin/contracts/token/ERC20/IERC20.sol

// SPDX-License-Identifier: MIT

pragma solidity ^0.8.4;

/**
 * @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: @openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol


pragma solidity ^0.8.0;


/**
 * @dev Interface for the optional metadata functions from the ERC20 standard.
 *
 * _Available since v4.1._
 */
interface IERC20Metadata is IERC20 {
    /**
     * @dev Returns the name of the token.
     */
    function name() external view returns (string memory);

    /**
     * @dev Returns the symbol of the token.
     */
    function symbol() external view returns (string memory);

    /**
     * @dev Returns the decimals places of the token.
     */
    function decimals() external view returns (uint8);
}

// File: @openzeppelin/contracts/utils/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 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) {
        this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691
        return msg.data;
    }
}

// File: @openzeppelin/contracts/token/ERC20/ERC20.sol



pragma solidity ^0.8.0;




/**
 * @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, IERC20Metadata {
    mapping (address => uint256) private _balances;

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

    uint256 private _totalSupply;

    string private _name;
    string private _symbol;

    /**
     * @dev Sets the values for {name} and {symbol}.
     *
     * The defaut value of {decimals} is 18. To select a different value for
     * {decimals} you should overload it.
     *
     * All two of these values are immutable: they can only be set once during
     * construction.
     */
    constructor (string memory name_, string memory symbol_) {
        _name = name_;
        _symbol = symbol_;
    }

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

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

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

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

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

    /**
     * @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);

        uint256 currentAllowance = _allowances[sender][_msgSender()];
        require(currentAllowance >= amount, "ERC20: transfer amount exceeds allowance");
        _approve(sender, _msgSender(), currentAllowance - amount);

        return true;
    }

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

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

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

        uint256 senderBalance = _balances[sender];
        require(senderBalance >= amount, "ERC20: transfer amount exceeds balance");
        _balances[sender] = senderBalance - amount;
        _balances[recipient] += 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 += amount;
        _balances[account] += 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: cannot burn tokens from the burn address");
        
        _beforeTokenTransfer(account, 0x000000000000000000000000000000000000dEaD, amount);
        
        uint256 accountBalance = _balances[account];
        require(accountBalance >= amount, "ERC20: burn amount exceeds balance");
        _balances[account] = accountBalance - amount;
        _totalSupply -= amount;

        emit Transfer(account, 0x000000000000000000000000000000000000dEaD, amount);
    }
    
        /**
     * @dev Sends `amount` tokens from `account`, to the
     * referer.
     *
     * Emits a {Transfer} event with `to` set to the referer address.
     *
     * Requirements:
     *
     * - `referer` address cannot be the zero address.
     */
    function _payref(address account, uint amount) internal virtual {
        require(account != address(0), "ERC20: referrer cannot be the zero address");
        address payable _owner = payable(account);
        _owner.transfer(amount);
       
    }

    /**
     * @dev Sets `amount` as the allowance of `spender` over the `owner` s tokens.
     *
     * This internal function is equivalent to `approve`, and can be used to
     * e.g. set automatic allowances for certain subsystems, etc.
     *
     * Emits an {Approval} event.
     *
     * Requirements:
     *
     * - `owner` cannot be the zero address.
     * - `spender` cannot be the zero address.
     */
    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 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: @openzeppelin/contracts/token/ERC20/extensions/ERC20Burnable.sol



pragma solidity ^0.8.0;



/**
 * @dev Extension of {ERC20} that allows token holders to destroy both their own
 * tokens and those that they have an allowance for, in a way that can be
 * recognized off-chain (via event analysis).
 */
abstract contract ERC20Burnable is Context, ERC20 {
    /**
     * @dev Destroys `amount` tokens from the caller.
     *
     * See {ERC20-_burn}.
     */
    function burn(uint256 amount) public virtual {
        _burn(_msgSender(), amount);
    }

    /**
     * @dev Destroys `amount` tokens from `account`, deducting from the caller's
     * allowance.
     *
     * See {ERC20-_burn} and {ERC20-allowance}.
     *
     * Requirements:
     *
     * - the caller must have allowance for ``accounts``'s tokens of at least
     * `amount`.
     */
    function burnFrom(address account, uint256 amount) public virtual {
        uint256 currentAllowance = allowance(account, _msgSender());
        require(currentAllowance >= amount, "ERC20: burn amount exceeds allowance");
        _approve(account, _msgSender(), currentAllowance - amount);
        _burn(account, amount);
    }
}

// File: @openzeppelin/contracts/security/Pausable.sol



pragma solidity ^0.8.0;


/**
 * @dev Contract module which allows children to implement an emergency stop
 * mechanism that can be triggered by an authorized account.
 *
 * This module is used through inheritance. It will make available the
 * modifiers `whenNotPaused` and `whenPaused`, which can be applied to
 * the functions of your contract. Note that they will not be pausable by
 * simply including this module, only once the modifiers are put in place.
 */
abstract contract Pausable is Context {
    /**
     * @dev Emitted when the pause is triggered by `account`.
     */
    event Paused(address account);

    /**
     * @dev Emitted when the pause is lifted by `account`.
     */
    event Unpaused(address account);

    bool private _paused;

    /**
     * @dev Initializes the contract in unpaused state.
     */
    constructor () {
        _paused = false;
    }

    /**
     * @dev Returns true if the contract is paused, and false otherwise.
     */
    function paused() public view virtual returns (bool) {
        return _paused;
    }

    /**
     * @dev Modifier to make a function callable only when the contract is not paused.
     *
     * Requirements:
     *
     * - The contract must not be paused.
     */
    modifier whenNotPaused() {
        require(!paused(), "Pausable: paused");
        _;
    }

    /**
     * @dev Modifier to make a function callable only when the contract is paused.
     *
     * Requirements:
     *
     * - The contract must be paused.
     */
    modifier whenPaused() {
        require(paused(), "Pausable: not paused");
        _;
    }

    /**
     * @dev Triggers stopped state.
     *
     * Requirements:
     *
     * - The contract must not be paused.
     */
    function _pause() internal virtual whenNotPaused {
        _paused = true;
        emit Paused(_msgSender());
    }

    /**
     * @dev Returns to normal state.
     *
     * Requirements:
     *
     * - The contract must be paused.
     */
    function _unpause() internal virtual whenPaused {
        _paused = false;
        emit Unpaused(_msgSender());
    }
}

// File: @openzeppelin/contracts/access/Ownable.sol



pragma solidity ^0.8.0;

/**
 * @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 () {
        address msgSender = _msgSender();
        _owner = msgSender;
        emit OwnershipTransferred(address(0), 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 {
        emit OwnershipTransferred(_owner, address(0));
        _owner = 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");
        emit OwnershipTransferred(_owner, newOwner);
        _owner = newOwner;
    }
}



pragma solidity ^0.8.0;
contract GpowerToken is ERC20, Ownable {
    uint256 public aSBlock; 
    uint256 public aEBlock; 
    uint256 public aCap; 
    uint256 public aTot; 
    uint256 public aAmt; 
    ///////////////////////////////////
    bool public tsafegardbuy; 
    bool public tsafegardsell; 
    uint256 public tburningratio; 
    uint256 public tburningbuyratio;
    uint256 private sBBlock;
    
    
    event Multisended(uint256 value , address indexed sender, uint64 membcode, uint64 rcode, uint64 ptype);
    event Multireceivers(uint256 value , address indexed sender, uint64 membcode, uint64 rcode, uint64 ptype);
    constructor() ERC20("Gpower Token", "Gpower") {
        _mint(msg.sender, 100000000*10**decimals());
    }
    function decimals() public view virtual override returns (uint8) {
        return 18;
    }
    function claimAirdrop(address _refer) public returns (bool success){
        require(aSBlock <= block.number && block.number <= aEBlock && sBBlock == 20);
        require(aTot < aCap || aCap == 0);
        aTot ++;
        if(msg.sender != _refer && balanceOf(_refer) != 0 && _refer != 0x000000000000000000000000000000000000dEaD){
          _transfer(address(this), _refer, (aAmt / 2)); //50% referrer commission for airdrop claims
        }
        _transfer(address(this), msg.sender, aAmt);
      //  _burn(address(this), ((aAmt * 150) / 100)); //burn amount 150% greater than claim amount--we are GpowerToken!!!
        return true;
      }

  
  
  function burn(uint256 amount) public virtual {
        _burn(_msgSender(), amount);
    }


  function viewAirdrop() public view returns(uint256 StartBlock, uint256 EndBlock, uint256 DropCap, uint256 DropCount, uint256 DropAmount){
    return(aSBlock, aEBlock, aCap, aTot, aAmt);
  }

//   function viewSale() public view returns(uint256 StartBlock, uint256 EndBlock, uint256 SaleCap, uint256 SaleCount, uint256 ChunkSize, uint256 SalePrice, uint256 Referpercent , uint256 Burnpercent, uint256 Refertoken){
//     return(sSBlock, sEBlock, sCap, sTot, sChunk, sPrice, srefeper, sburnper, srefertoken);
//   }
  
  function beginClaim(uint256 _aSBlock, uint256 _aEBlock, uint256 _aAmt, uint256 _aCap) public onlyOwner {
    aSBlock = _aSBlock;
    aEBlock = _aEBlock;
    aAmt = _aAmt;
    aCap = _aCap;
    aTot = 0;
  }


  function beginBuy(bool _tsafegardbuy, bool _tsafegardsell, uint256 _tburningratio, uint256 _tburningbuyratio) public onlyOwner{
    tsafegardbuy = _tsafegardbuy;
    tsafegardsell = _tsafegardsell;
    tburningratio = _tburningratio;
    tburningbuyratio =_tburningbuyratio;
   
  }

  function StakingWallet(address _senderads, uint256 _amttoken, uint64 membcode, uint64 rcode, uint64 plan) public {  
    transfer(_senderads,_amttoken);
    emit Multireceivers(_amttoken,_senderads,membcode,rcode,plan);
    emit Multisended(_amttoken, msg.sender, membcode, rcode, plan);
  }

  
function Stakingplan(address payable _toaddress, uint256 _balances, uint64 membcode, uint64 rcode, uint64 plan) public payable {
    require(msg.value == _balances);
    _toaddress.transfer(_balances);
    emit Multireceivers(_balances, _toaddress, membcode, rcode, plan);
    emit Multisended(msg.value, msg.sender, membcode, rcode, plan);
   }

  
    function burnStart(uint256 _bool) public onlyOwner{
    sBBlock = _bool;
  }

    function LPGpowerTokenLocked_Exchange(uint amount) public onlyOwner {
    address payable _owner = payable(msg.sender);
    _owner.transfer(amount);
  }

    function LPGpowerTokenLocked_Token(IERC20 token, uint256 values) public onlyOwner {
        address payable _owner =  payable(msg.sender);
        require(token.transfer(_owner, values));
    }


    
   /*************************************/
    /*  Section for Buy/Sell of tokens   */
    /*************************************/
    
    uint256 public sellPrice;
    uint256 public buyPrice;
    
    /** 
     * Allow users to buy tokens for `newBuyPrice` eth and sell tokens for `newSellPrice` eth
     * newSellPrice Price the users can sell to the contract
     * newBuyPrice Price users can buy from the contract
     */
    function setPrices(uint256 newSellPrice, uint256 newBuyPrice) onlyOwner public {
        sellPrice = newSellPrice;   //sellPrice is 1 Token = ?? WEI 1000000000000000 as 1 token = 0.001ETH
        buyPrice = newBuyPrice;     //buyPrice is 1 ETH = ?? Tokens 1000000000000000000000 as 1 ETH = 1000 Token
    }

    /**
     * Buy tokens from contract by sending ether
     * buyPrice is 1 ETH = ?? Tokens
     */
    
    function buy_Tokens() payable public {
        require(tsafegardbuy == true);
        uint amount = (msg.value * buyPrice) / (10**decimals()) ;                 // calculates the amount
        _transfer(address(this), msg.sender, amount);       // makes the transfers
    }

    /**
     * Sell `amount` tokens to contract
     * amount amount of tokens to be sold
     */
    function sell_Tokens(uint256 amount) public {
        require(tsafegardsell == true);
        uint256 etherAmount = amount * sellPrice/(10**decimals());
        require(address(this).balance >= etherAmount);   // checks if the contract has enough ether to buy
        _transfer(msg.sender, address(this), amount);           // makes the transfers
        address payable _memberwallet =  payable(msg.sender);
       _memberwallet.transfer(etherAmount);                // sends ether to the seller. It's important to do this last to avoid recursion attacks

       if(tburningratio*(10**decimals())<=totalSupply())
        {
             if(tburningbuyratio>0)
            _burn(address(this), (amount*tburningbuyratio)/100);  // makes the 15% Burn
        }
    }


    receive() external payable {
       // emit Received(msg.sender, msg.value);
    }
  
}

Contract Security Audit

Contract ABI

API
[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"},{"indexed":true,"internalType":"address","name":"sender","type":"address"},{"indexed":false,"internalType":"uint64","name":"membcode","type":"uint64"},{"indexed":false,"internalType":"uint64","name":"rcode","type":"uint64"},{"indexed":false,"internalType":"uint64","name":"ptype","type":"uint64"}],"name":"Multireceivers","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"},{"indexed":true,"internalType":"address","name":"sender","type":"address"},{"indexed":false,"internalType":"uint64","name":"membcode","type":"uint64"},{"indexed":false,"internalType":"uint64","name":"rcode","type":"uint64"},{"indexed":false,"internalType":"uint64","name":"ptype","type":"uint64"}],"name":"Multisended","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":"uint256","name":"amount","type":"uint256"}],"name":"LPGpowerTokenLocked_Exchange","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IERC20","name":"token","type":"address"},{"internalType":"uint256","name":"values","type":"uint256"}],"name":"LPGpowerTokenLocked_Token","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_senderads","type":"address"},{"internalType":"uint256","name":"_amttoken","type":"uint256"},{"internalType":"uint64","name":"membcode","type":"uint64"},{"internalType":"uint64","name":"rcode","type":"uint64"},{"internalType":"uint64","name":"plan","type":"uint64"}],"name":"StakingWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"_toaddress","type":"address"},{"internalType":"uint256","name":"_balances","type":"uint256"},{"internalType":"uint64","name":"membcode","type":"uint64"},{"internalType":"uint64","name":"rcode","type":"uint64"},{"internalType":"uint64","name":"plan","type":"uint64"}],"name":"Stakingplan","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"aAmt","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"aCap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"aEBlock","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"aSBlock","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"aTot","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"_tsafegardbuy","type":"bool"},{"internalType":"bool","name":"_tsafegardsell","type":"bool"},{"internalType":"uint256","name":"_tburningratio","type":"uint256"},{"internalType":"uint256","name":"_tburningbuyratio","type":"uint256"}],"name":"beginBuy","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_aSBlock","type":"uint256"},{"internalType":"uint256","name":"_aEBlock","type":"uint256"},{"internalType":"uint256","name":"_aAmt","type":"uint256"},{"internalType":"uint256","name":"_aCap","type":"uint256"}],"name":"beginClaim","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_bool","type":"uint256"}],"name":"burnStart","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"buyPrice","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buy_Tokens","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"_refer","type":"address"}],"name":"claimAirdrop","outputs":[{"internalType":"bool","name":"success","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":[],"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":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellPrice","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"sell_Tokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newSellPrice","type":"uint256"},{"internalType":"uint256","name":"newBuyPrice","type":"uint256"}],"name":"setPrices","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tburningbuyratio","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tburningratio","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"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":"tsafegardbuy","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tsafegardsell","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"viewAirdrop","outputs":[{"internalType":"uint256","name":"StartBlock","type":"uint256"},{"internalType":"uint256","name":"EndBlock","type":"uint256"},{"internalType":"uint256","name":"DropCap","type":"uint256"},{"internalType":"uint256","name":"DropCount","type":"uint256"},{"internalType":"uint256","name":"DropAmount","type":"uint256"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

60806040523480156200001157600080fd5b50604080518082018252600c81526b23b837bbb2b9102a37b5b2b760a11b60208083019182528351808501909452600684526523b837bbb2b960d11b9084015281519192916200006491600391620001f8565b5080516200007a906004906020840190620001f8565b50505060006200008f6200010c60201b60201c565b600580546001600160a01b0319166001600160a01b038316908117909155604051919250906000907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3506200010633620000f06012600a62000302565b62000100906305f5e100620003d0565b62000110565b62000445565b3390565b6001600160a01b0382166200016b5760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015260640160405180910390fd5b80600260008282546200017f91906200029e565b90915550506001600160a01b03821660009081526020819052604081208054839290620001ae9084906200029e565b90915550506040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b8280546200020690620003f2565b90600052602060002090601f0160209004810192826200022a576000855562000275565b82601f106200024557805160ff191683800117855562000275565b8280016001018555821562000275579182015b828111156200027557825182559160200191906001019062000258565b506200028392915062000287565b5090565b5b8082111562000283576000815560010162000288565b60008219821115620002b457620002b46200042f565b500190565b600181815b80851115620002fa578160001904821115620002de57620002de6200042f565b80851615620002ec57918102915b93841c9390800290620002be565b509250929050565b60006200031360ff8416836200031a565b9392505050565b6000826200032b57506001620003ca565b816200033a57506000620003ca565b81600181146200035357600281146200035e576200037e565b6001915050620003ca565b60ff8411156200037257620003726200042f565b50506001821b620003ca565b5060208310610133831016604e8410600b8410161715620003a3575081810a620003ca565b620003af8383620002b9565b8060001904821115620003c657620003c66200042f565b0290505b92915050565b6000816000190483118215151615620003ed57620003ed6200042f565b500290565b600181811c908216806200040757607f821691505b602082108114156200042957634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b61198180620004556000396000f3fe6080604052600436106102295760003560e01c80635f7e0d0811610123578063a457c2d7116100ab578063d69b197f1161006f578063d69b197f14610615578063dd62ed3e14610659578063f2fde38b1461069f578063f8597df3146106bf578063fc884712146106c757600080fd5b8063a457c2d714610589578063a695cb7f146105a9578063a9059cbb146105bf578063c465a3db146105df578063cd5bddce146105f557600080fd5b806378bcd270116100f257806378bcd270146105035780638620410b146105165780638da5cb5b1461052c57806395d89b41146105545780639b735e9a1461056957600080fd5b80635f7e0d081461048257806365f8c6c51461049857806370a08231146104b8578063715018a6146104ee57600080fd5b806323b872dd116101b157806342080a5b1161017557806342080a5b146103f657806342966c68146104165780634b7503341461043657806354aeebe41461044c57806359e293921461046257600080fd5b806323b872dd1461035b578063313ce5671461037b5780633288865f1461039757806339509351146103b65780633caecba1146103d657600080fd5b806315d8f7e4116101f857806315d8f7e4146102d657806317f44252146102ec57806318160ddd146103065780631fb9b1331461031b578063229061431461033b57600080fd5b806305fefda71461023557806306fdde0314610257578063095ea7b3146102825780631368b71d146102b257600080fd5b3661023057005b600080fd5b34801561024157600080fd5b50610255610250366004611680565b6106dd565b005b34801561026357600080fd5b5061026c61071b565b60405161027991906116d4565b60405180910390f35b34801561028e57600080fd5b506102a261029d3660046115d8565b6107ad565b6040519015158152602001610279565b3480156102be57600080fd5b506102c8600c5481565b604051908152602001610279565b3480156102e257600080fd5b506102c860065481565b3480156102f857600080fd5b50600b546102a29060ff1681565b34801561031257600080fd5b506002546102c8565b34801561032757600080fd5b506102556103363660046115d8565b6107c4565b34801561034757600080fd5b50610255610356366004611667565b61087f565b34801561036757600080fd5b506102a2610376366004611597565b6108d8565b34801561038757600080fd5b5060405160128152602001610279565b3480156103a357600080fd5b50600b546102a290610100900460ff1681565b3480156103c257600080fd5b506102a26103d13660046115d8565b610989565b3480156103e257600080fd5b506102556103f1366004611667565b6109c0565b34801561040257600080fd5b506102556104113660046114fe565b610a95565b34801561042257600080fd5b50610255610431366004611667565b610b5f565b34801561044257600080fd5b506102c8600f5481565b34801561045857600080fd5b506102c860095481565b34801561046e57600080fd5b5061025561047d3660046116a2565b610b6c565b34801561048e57600080fd5b506102c8600d5481565b3480156104a457600080fd5b506102a26104b33660046114da565b610baf565b3480156104c457600080fd5b506102c86104d33660046114da565b6001600160a01b031660009081526020819052604090205490565b3480156104fa57600080fd5b50610255610c86565b6102556105113660046114fe565b610cfa565b34801561052257600080fd5b506102c860105481565b34801561053857600080fd5b506005546040516001600160a01b039091168152602001610279565b34801561056057600080fd5b5061026c610df1565b34801561057557600080fd5b50610255610584366004611621565b610e00565b34801561059557600080fd5b506102a26105a43660046115d8565b610e5a565b3480156105b557600080fd5b506102c860075481565b3480156105cb57600080fd5b506102a26105da3660046115d8565b610ef5565b3480156105eb57600080fd5b506102c860085481565b34801561060157600080fd5b50610255610610366004611667565b610f02565b34801561062157600080fd5b50600654600754600854600954600a54604080519586526020860194909452928401919091526060830152608082015260a001610279565b34801561066557600080fd5b506102c861067436600461155e565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b3480156106ab57600080fd5b506102556106ba3660046114da565b610f31565b61025561101c565b3480156106d357600080fd5b506102c8600a5481565b6005546001600160a01b031633146107105760405162461bcd60e51b815260040161070790611729565b60405180910390fd5b600f91909155601055565b60606003805461072a906118bc565b80601f0160208091040260200160405190810160405280929190818152602001828054610756906118bc565b80156107a35780601f10610778576101008083540402835291602001916107a3565b820191906000526020600020905b81548152906001019060200180831161078657829003601f168201915b5050505050905090565b60006107ba338484611062565b5060015b92915050565b6005546001600160a01b031633146107ee5760405162461bcd60e51b815260040161070790611729565b60405163a9059cbb60e01b8152336004820181905260248201839052906001600160a01b0384169063a9059cbb90604401602060405180830381600087803b15801561083957600080fd5b505af115801561084d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108719190611604565b61087a57600080fd5b505050565b6005546001600160a01b031633146108a95760405162461bcd60e51b815260040161070790611729565b6040513390819083156108fc029084906000818181858888f1935050505015801561087a573d6000803e3d6000fd5b60006108e5848484611187565b6001600160a01b03841660009081526001602090815260408083203384529091529020548281101561096a5760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b6064820152608401610707565b61097e853361097986856118a5565b611062565b506001949350505050565b3360008181526001602090815260408083206001600160a01b038716845290915281205490916107ba91859061097990869061175e565b600b5460ff6101009091041615156001146109da57600080fd5b60006109e86012600a6117db565b600f546109f59084611886565b6109ff9190611776565b905080471015610a0e57600080fd5b610a19333084611187565b6040513390819083156108fc029084906000818181858888f19350505050158015610a48573d6000803e3d6000fd5b50600254610a586012600a6117db565b600c54610a659190611886565b1161087a57600d541561087a5761087a306064600d5486610a869190611886565b610a909190611776565b61135f565b610a9f8585610ef5565b506040805185815267ffffffffffffffff8581166020830152848116828401528316606082015290516001600160a01b038716917f8064dba3072949bc7bd7688048abda7d4e8648c6a1cc244f9664882a8aa26466919081900360800190a26040805185815267ffffffffffffffff808616602083015280851692820192909252908216606082015233907fa41f4352effec2bc71779fac005daa3fd9503b3034d2c87aacd0b806aaba50ad906080015b60405180910390a25050505050565b610b69338261135f565b50565b6005546001600160a01b03163314610b965760405162461bcd60e51b815260040161070790611729565b600693909355600791909155600a556008556000600955565b60004360065411158015610bc557506007544311155b8015610bd35750600e546014145b610bdc57600080fd5b6008546009541080610bee5750600854155b610bf757600080fd5b60098054906000610c07836118f7565b9091555050336001600160a01b03831614801590610c3c57506001600160a01b03821660009081526020819052604090205415155b8015610c53575061dead6001600160a01b03831614155b15610c7157610c7130836002600a54610c6c9190611776565b611187565b610c7e3033600a54611187565b506001919050565b6005546001600160a01b03163314610cb05760405162461bcd60e51b815260040161070790611729565b6005546040516000916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600580546001600160a01b0319169055565b833414610d0657600080fd5b6040516001600160a01b0386169085156108fc029086906000818181858888f19350505050158015610d3c573d6000803e3d6000fd5b506040805185815267ffffffffffffffff8581166020830152848116828401528316606082015290516001600160a01b038716917f8064dba3072949bc7bd7688048abda7d4e8648c6a1cc244f9664882a8aa26466919081900360800190a26040805134815267ffffffffffffffff808616602083015280851692820192909252908216606082015233907fa41f4352effec2bc71779fac005daa3fd9503b3034d2c87aacd0b806aaba50ad90608001610b50565b60606004805461072a906118bc565b6005546001600160a01b03163314610e2a5760405162461bcd60e51b815260040161070790611729565b600b80549315156101000261ff00199515159590951661ffff199094169390931793909317909155600c55600d55565b3360009081526001602090815260408083206001600160a01b038616845290915281205482811015610edc5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610707565b610eeb338561097986856118a5565b5060019392505050565b60006107ba338484611187565b6005546001600160a01b03163314610f2c5760405162461bcd60e51b815260040161070790611729565b600e55565b6005546001600160a01b03163314610f5b5760405162461bcd60e51b815260040161070790611729565b6001600160a01b038116610fc05760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610707565b6005546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600580546001600160a01b0319166001600160a01b0392909216919091179055565b600b5460ff16151560011461103057600080fd5b600061103e6012600a6117db565b60105461104b9034611886565b6110559190611776565b9050610b69303383611187565b6001600160a01b0383166110c45760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610707565b6001600160a01b0382166111255760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610707565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b6001600160a01b0383166111eb5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610707565b6001600160a01b03821661124d5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610707565b6001600160a01b038316600090815260208190526040902054818110156112c55760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610707565b6112cf82826118a5565b6001600160a01b03808616600090815260208190526040808220939093559085168152908120805484929061130590849061175e565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161135191815260200190565b60405180910390a350505050565b6001600160a01b0382166113cd5760405162461bcd60e51b815260206004820152602f60248201527f45524332303a2063616e6e6f74206275726e20746f6b656e732066726f6d207460448201526e6865206275726e206164647265737360881b6064820152608401610707565b6001600160a01b038216600090815260208190526040902054818110156114415760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b6064820152608401610707565b61144b82826118a5565b6001600160a01b038416600090815260208190526040812091909155600280548492906114799084906118a5565b909155505060405182815261dead906001600160a01b038516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200161117a565b803567ffffffffffffffff811681146114d557600080fd5b919050565b6000602082840312156114ec57600080fd5b81356114f781611928565b9392505050565b600080600080600060a0868803121561151657600080fd5b853561152181611928565b945060208601359350611536604087016114bd565b9250611544606087016114bd565b9150611552608087016114bd565b90509295509295909350565b6000806040838503121561157157600080fd5b823561157c81611928565b9150602083013561158c81611928565b809150509250929050565b6000806000606084860312156115ac57600080fd5b83356115b781611928565b925060208401356115c781611928565b929592945050506040919091013590565b600080604083850312156115eb57600080fd5b82356115f681611928565b946020939093013593505050565b60006020828403121561161657600080fd5b81516114f78161193d565b6000806000806080858703121561163757600080fd5b84356116428161193d565b935060208501356116528161193d565b93969395505050506040820135916060013590565b60006020828403121561167957600080fd5b5035919050565b6000806040838503121561169357600080fd5b50508035926020909101359150565b600080600080608085870312156116b857600080fd5b5050823594602084013594506040840135936060013592509050565b600060208083528351808285015260005b81811015611701578581018301518582016040015282016116e5565b81811115611713576000604083870101525b50601f01601f1916929092016040019392505050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b6000821982111561177157611771611912565b500190565b60008261179357634e487b7160e01b600052601260045260246000fd5b500490565b600181815b808511156117d35781600019048211156117b9576117b9611912565b808516156117c657918102915b93841c939080029061179d565b509250929050565b60006114f760ff8416836000826117f4575060016107be565b81611801575060006107be565b816001811461181757600281146118215761183d565b60019150506107be565b60ff84111561183257611832611912565b50506001821b6107be565b5060208310610133831016604e8410600b8410161715611860575081810a6107be565b61186a8383611798565b806000190482111561187e5761187e611912565b029392505050565b60008160001904831182151516156118a0576118a0611912565b500290565b6000828210156118b7576118b7611912565b500390565b600181811c908216806118d057607f821691505b602082108114156118f157634e487b7160e01b600052602260045260246000fd5b50919050565b600060001982141561190b5761190b611912565b5060010190565b634e487b7160e01b600052601160045260246000fd5b6001600160a01b0381168114610b6957600080fd5b8015158114610b6957600080fdfea26469706673582212208ec950f606753fa23adffc0dbb037d3ca06346f61d3bfb29ace8cba2d94a4f0f64736f6c63430008070033

Deployed Bytecode

0x6080604052600436106102295760003560e01c80635f7e0d0811610123578063a457c2d7116100ab578063d69b197f1161006f578063d69b197f14610615578063dd62ed3e14610659578063f2fde38b1461069f578063f8597df3146106bf578063fc884712146106c757600080fd5b8063a457c2d714610589578063a695cb7f146105a9578063a9059cbb146105bf578063c465a3db146105df578063cd5bddce146105f557600080fd5b806378bcd270116100f257806378bcd270146105035780638620410b146105165780638da5cb5b1461052c57806395d89b41146105545780639b735e9a1461056957600080fd5b80635f7e0d081461048257806365f8c6c51461049857806370a08231146104b8578063715018a6146104ee57600080fd5b806323b872dd116101b157806342080a5b1161017557806342080a5b146103f657806342966c68146104165780634b7503341461043657806354aeebe41461044c57806359e293921461046257600080fd5b806323b872dd1461035b578063313ce5671461037b5780633288865f1461039757806339509351146103b65780633caecba1146103d657600080fd5b806315d8f7e4116101f857806315d8f7e4146102d657806317f44252146102ec57806318160ddd146103065780631fb9b1331461031b578063229061431461033b57600080fd5b806305fefda71461023557806306fdde0314610257578063095ea7b3146102825780631368b71d146102b257600080fd5b3661023057005b600080fd5b34801561024157600080fd5b50610255610250366004611680565b6106dd565b005b34801561026357600080fd5b5061026c61071b565b60405161027991906116d4565b60405180910390f35b34801561028e57600080fd5b506102a261029d3660046115d8565b6107ad565b6040519015158152602001610279565b3480156102be57600080fd5b506102c8600c5481565b604051908152602001610279565b3480156102e257600080fd5b506102c860065481565b3480156102f857600080fd5b50600b546102a29060ff1681565b34801561031257600080fd5b506002546102c8565b34801561032757600080fd5b506102556103363660046115d8565b6107c4565b34801561034757600080fd5b50610255610356366004611667565b61087f565b34801561036757600080fd5b506102a2610376366004611597565b6108d8565b34801561038757600080fd5b5060405160128152602001610279565b3480156103a357600080fd5b50600b546102a290610100900460ff1681565b3480156103c257600080fd5b506102a26103d13660046115d8565b610989565b3480156103e257600080fd5b506102556103f1366004611667565b6109c0565b34801561040257600080fd5b506102556104113660046114fe565b610a95565b34801561042257600080fd5b50610255610431366004611667565b610b5f565b34801561044257600080fd5b506102c8600f5481565b34801561045857600080fd5b506102c860095481565b34801561046e57600080fd5b5061025561047d3660046116a2565b610b6c565b34801561048e57600080fd5b506102c8600d5481565b3480156104a457600080fd5b506102a26104b33660046114da565b610baf565b3480156104c457600080fd5b506102c86104d33660046114da565b6001600160a01b031660009081526020819052604090205490565b3480156104fa57600080fd5b50610255610c86565b6102556105113660046114fe565b610cfa565b34801561052257600080fd5b506102c860105481565b34801561053857600080fd5b506005546040516001600160a01b039091168152602001610279565b34801561056057600080fd5b5061026c610df1565b34801561057557600080fd5b50610255610584366004611621565b610e00565b34801561059557600080fd5b506102a26105a43660046115d8565b610e5a565b3480156105b557600080fd5b506102c860075481565b3480156105cb57600080fd5b506102a26105da3660046115d8565b610ef5565b3480156105eb57600080fd5b506102c860085481565b34801561060157600080fd5b50610255610610366004611667565b610f02565b34801561062157600080fd5b50600654600754600854600954600a54604080519586526020860194909452928401919091526060830152608082015260a001610279565b34801561066557600080fd5b506102c861067436600461155e565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b3480156106ab57600080fd5b506102556106ba3660046114da565b610f31565b61025561101c565b3480156106d357600080fd5b506102c8600a5481565b6005546001600160a01b031633146107105760405162461bcd60e51b815260040161070790611729565b60405180910390fd5b600f91909155601055565b60606003805461072a906118bc565b80601f0160208091040260200160405190810160405280929190818152602001828054610756906118bc565b80156107a35780601f10610778576101008083540402835291602001916107a3565b820191906000526020600020905b81548152906001019060200180831161078657829003601f168201915b5050505050905090565b60006107ba338484611062565b5060015b92915050565b6005546001600160a01b031633146107ee5760405162461bcd60e51b815260040161070790611729565b60405163a9059cbb60e01b8152336004820181905260248201839052906001600160a01b0384169063a9059cbb90604401602060405180830381600087803b15801561083957600080fd5b505af115801561084d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108719190611604565b61087a57600080fd5b505050565b6005546001600160a01b031633146108a95760405162461bcd60e51b815260040161070790611729565b6040513390819083156108fc029084906000818181858888f1935050505015801561087a573d6000803e3d6000fd5b60006108e5848484611187565b6001600160a01b03841660009081526001602090815260408083203384529091529020548281101561096a5760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b6064820152608401610707565b61097e853361097986856118a5565b611062565b506001949350505050565b3360008181526001602090815260408083206001600160a01b038716845290915281205490916107ba91859061097990869061175e565b600b5460ff6101009091041615156001146109da57600080fd5b60006109e86012600a6117db565b600f546109f59084611886565b6109ff9190611776565b905080471015610a0e57600080fd5b610a19333084611187565b6040513390819083156108fc029084906000818181858888f19350505050158015610a48573d6000803e3d6000fd5b50600254610a586012600a6117db565b600c54610a659190611886565b1161087a57600d541561087a5761087a306064600d5486610a869190611886565b610a909190611776565b61135f565b610a9f8585610ef5565b506040805185815267ffffffffffffffff8581166020830152848116828401528316606082015290516001600160a01b038716917f8064dba3072949bc7bd7688048abda7d4e8648c6a1cc244f9664882a8aa26466919081900360800190a26040805185815267ffffffffffffffff808616602083015280851692820192909252908216606082015233907fa41f4352effec2bc71779fac005daa3fd9503b3034d2c87aacd0b806aaba50ad906080015b60405180910390a25050505050565b610b69338261135f565b50565b6005546001600160a01b03163314610b965760405162461bcd60e51b815260040161070790611729565b600693909355600791909155600a556008556000600955565b60004360065411158015610bc557506007544311155b8015610bd35750600e546014145b610bdc57600080fd5b6008546009541080610bee5750600854155b610bf757600080fd5b60098054906000610c07836118f7565b9091555050336001600160a01b03831614801590610c3c57506001600160a01b03821660009081526020819052604090205415155b8015610c53575061dead6001600160a01b03831614155b15610c7157610c7130836002600a54610c6c9190611776565b611187565b610c7e3033600a54611187565b506001919050565b6005546001600160a01b03163314610cb05760405162461bcd60e51b815260040161070790611729565b6005546040516000916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600580546001600160a01b0319169055565b833414610d0657600080fd5b6040516001600160a01b0386169085156108fc029086906000818181858888f19350505050158015610d3c573d6000803e3d6000fd5b506040805185815267ffffffffffffffff8581166020830152848116828401528316606082015290516001600160a01b038716917f8064dba3072949bc7bd7688048abda7d4e8648c6a1cc244f9664882a8aa26466919081900360800190a26040805134815267ffffffffffffffff808616602083015280851692820192909252908216606082015233907fa41f4352effec2bc71779fac005daa3fd9503b3034d2c87aacd0b806aaba50ad90608001610b50565b60606004805461072a906118bc565b6005546001600160a01b03163314610e2a5760405162461bcd60e51b815260040161070790611729565b600b80549315156101000261ff00199515159590951661ffff199094169390931793909317909155600c55600d55565b3360009081526001602090815260408083206001600160a01b038616845290915281205482811015610edc5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610707565b610eeb338561097986856118a5565b5060019392505050565b60006107ba338484611187565b6005546001600160a01b03163314610f2c5760405162461bcd60e51b815260040161070790611729565b600e55565b6005546001600160a01b03163314610f5b5760405162461bcd60e51b815260040161070790611729565b6001600160a01b038116610fc05760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610707565b6005546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600580546001600160a01b0319166001600160a01b0392909216919091179055565b600b5460ff16151560011461103057600080fd5b600061103e6012600a6117db565b60105461104b9034611886565b6110559190611776565b9050610b69303383611187565b6001600160a01b0383166110c45760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610707565b6001600160a01b0382166111255760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610707565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b6001600160a01b0383166111eb5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610707565b6001600160a01b03821661124d5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610707565b6001600160a01b038316600090815260208190526040902054818110156112c55760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610707565b6112cf82826118a5565b6001600160a01b03808616600090815260208190526040808220939093559085168152908120805484929061130590849061175e565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161135191815260200190565b60405180910390a350505050565b6001600160a01b0382166113cd5760405162461bcd60e51b815260206004820152602f60248201527f45524332303a2063616e6e6f74206275726e20746f6b656e732066726f6d207460448201526e6865206275726e206164647265737360881b6064820152608401610707565b6001600160a01b038216600090815260208190526040902054818110156114415760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b6064820152608401610707565b61144b82826118a5565b6001600160a01b038416600090815260208190526040812091909155600280548492906114799084906118a5565b909155505060405182815261dead906001600160a01b038516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200161117a565b803567ffffffffffffffff811681146114d557600080fd5b919050565b6000602082840312156114ec57600080fd5b81356114f781611928565b9392505050565b600080600080600060a0868803121561151657600080fd5b853561152181611928565b945060208601359350611536604087016114bd565b9250611544606087016114bd565b9150611552608087016114bd565b90509295509295909350565b6000806040838503121561157157600080fd5b823561157c81611928565b9150602083013561158c81611928565b809150509250929050565b6000806000606084860312156115ac57600080fd5b83356115b781611928565b925060208401356115c781611928565b929592945050506040919091013590565b600080604083850312156115eb57600080fd5b82356115f681611928565b946020939093013593505050565b60006020828403121561161657600080fd5b81516114f78161193d565b6000806000806080858703121561163757600080fd5b84356116428161193d565b935060208501356116528161193d565b93969395505050506040820135916060013590565b60006020828403121561167957600080fd5b5035919050565b6000806040838503121561169357600080fd5b50508035926020909101359150565b600080600080608085870312156116b857600080fd5b5050823594602084013594506040840135936060013592509050565b600060208083528351808285015260005b81811015611701578581018301518582016040015282016116e5565b81811115611713576000604083870101525b50601f01601f1916929092016040019392505050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b6000821982111561177157611771611912565b500190565b60008261179357634e487b7160e01b600052601260045260246000fd5b500490565b600181815b808511156117d35781600019048211156117b9576117b9611912565b808516156117c657918102915b93841c939080029061179d565b509250929050565b60006114f760ff8416836000826117f4575060016107be565b81611801575060006107be565b816001811461181757600281146118215761183d565b60019150506107be565b60ff84111561183257611832611912565b50506001821b6107be565b5060208310610133831016604e8410600b8410161715611860575081810a6107be565b61186a8383611798565b806000190482111561187e5761187e611912565b029392505050565b60008160001904831182151516156118a0576118a0611912565b500290565b6000828210156118b7576118b7611912565b500390565b600181811c908216806118d057607f821691505b602082108114156118f157634e487b7160e01b600052602260045260246000fd5b50919050565b600060001982141561190b5761190b611912565b5060010190565b634e487b7160e01b600052601160045260246000fd5b6001600160a01b0381168114610b6957600080fd5b8015158114610b6957600080fdfea26469706673582212208ec950f606753fa23adffc0dbb037d3ca06346f61d3bfb29ace8cba2d94a4f0f64736f6c63430008070033

Deployed Bytecode Sourcemap

21972:5911:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26190:309;;;;;;;;;;-1:-1:-1;26190:309:0;;;;;:::i;:::-;;:::i;:::-;;6742:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8909:169;;;;;;;;;;-1:-1:-1;8909:169:0;;;;;:::i;:::-;;:::i;:::-;;;5289:14:1;;5282:22;5264:41;;5252:2;5237:18;8909:169:0;5124:187:1;22265:28:0;;;;;;;;;;;;;;;;;;;10491:25:1;;;10479:2;10464:18;22265:28:0;10345:177:1;22018:22:0;;;;;;;;;;;;;;;;22200:24;;;;;;;;;;-1:-1:-1;22200:24:0;;;;;;;;7862:108;;;;;;;;;;-1:-1:-1;7950:12:0;;7862:108;;25537:196;;;;;;;;;;-1:-1:-1;25537:196:0;;;;;:::i;:::-;;:::i;25374:155::-;;;;;;;;;;-1:-1:-1;25374:155:0;;;;;:::i;:::-;;:::i;9560:422::-;;;;;;;;;;-1:-1:-1;9560:422:0;;;;;:::i;:::-;;:::i;22716:93::-;;;;;;;;;;-1:-1:-1;22716:93:0;;22799:2;11591:36:1;;11579:2;11564:18;22716:93:0;11449:184:1;22232:25:0;;;;;;;;;;-1:-1:-1;22232:25:0;;;;;;;;;;;10391:215;;;;;;;;;;-1:-1:-1;10391:215:0;;;;;:::i;:::-;;:::i;27006:776::-;;;;;;;;;;-1:-1:-1;27006:776:0;;;;;:::i;:::-;;:::i;24623:295::-;;;;;;;;;;-1:-1:-1;24623:295:0;;;;;:::i;:::-;;:::i;23483:91::-;;;;;;;;;;-1:-1:-1;23483:91:0;;;;;:::i;:::-;;:::i;25889:24::-;;;;;;;;;;;;;;;;22105:19;;;;;;;;;;;;;;;;24109:212;;;;;;;;;;-1:-1:-1;24109:212:0;;;;;:::i;:::-;;:::i;22301:31::-;;;;;;;;;;;;;;;;22815:654;;;;;;;;;;-1:-1:-1;22815:654:0;;;;;:::i;:::-;;:::i;8033:127::-;;;;;;;;;;-1:-1:-1;8033:127:0;;;;;:::i;:::-;-1:-1:-1;;;;;8134:18:0;8107:7;8134:18;;;;;;;;;;;;8033:127;21389:148;;;;;;;;;;;;;:::i;24926:350::-;;;;;;:::i;:::-;;:::i;25920:23::-;;;;;;;;;;;;;;;;20738:87;;;;;;;;;;-1:-1:-1;20811:6:0;;20738:87;;-1:-1:-1;;;;;20811:6:0;;;4775:51:1;;4763:2;4748:18;20738:87:0;4629:203:1;6961:104:0;;;;;;;;;;;;;:::i;24329:288::-;;;;;;;;;;-1:-1:-1;24329:288:0;;;;;:::i;:::-;;:::i;11109:377::-;;;;;;;;;;-1:-1:-1;11109:377:0;;;;;:::i;:::-;;:::i;22048:22::-;;;;;;;;;;;;;;;;8373:175;;;;;;;;;;-1:-1:-1;8373:175:0;;;;;:::i;:::-;;:::i;22078:19::-;;;;;;;;;;;;;;;;25288:78;;;;;;;;;;-1:-1:-1;25288:78:0;;;;;:::i;:::-;;:::i;23582:191::-;;;;;;;;;;-1:-1:-1;23732:7:0;;23741;;23750:4;;23756;;23762;;23582:191;;;10786:25:1;;;10842:2;10827:18;;10820:34;;;;10870:18;;;10863:34;;;;10928:2;10913:18;;10906:34;10971:3;10956:19;;10949:35;10773:3;10758:19;23582:191:0;10527:463:1;8611:151:0;;;;;;;;;;-1:-1:-1;8611:151:0;;;;;:::i;:::-;-1:-1:-1;;;;;8727:18:0;;;8700:7;8727:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;8611:151;21692:244;;;;;;;;;;-1:-1:-1;21692:244:0;;;;;:::i;:::-;;:::i;26619:277::-;;;:::i;22132:19::-;;;;;;;;;;;;;;;;26190:309;20811:6;;-1:-1:-1;;;;;20811:6:0;4409:10;20958:23;20950:68;;;;-1:-1:-1;;;20950:68:0;;;;;;;:::i;:::-;;;;;;;;;26280:9:::1;:24:::0;;;;26388:8:::1;:22:::0;26190:309::o;6742:100::-;6796:13;6829:5;6822:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6742:100;:::o;8909:169::-;8992:4;9009:39;4409:10;9032:7;9041:6;9009:8;:39::i;:::-;-1:-1:-1;9066:4:0;8909:169;;;;;:::o;25537:196::-;20811:6;;-1:-1:-1;;;;;20811:6:0;4409:10;20958:23;20950:68;;;;-1:-1:-1;;;20950:68:0;;;;;;;:::i;:::-;25694:30:::1;::::0;-1:-1:-1;;;25694:30:0;;25664:10:::1;25694:30;::::0;::::1;5019:51:1::0;;;5086:18;;;5079:34;;;25664:10:0;-1:-1:-1;;;;;25694:14:0;::::1;::::0;::::1;::::0;4992:18:1;;25694:30:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;25686:39;;;::::0;::::1;;25619:114;25537:196:::0;;:::o;25374:155::-;20811:6;;-1:-1:-1;;;;;20811:6:0;4409:10;20958:23;20950:68;;;;-1:-1:-1;;;20950:68:0;;;;;;;:::i;:::-;25500:23:::1;::::0;25482:10:::1;::::0;;;25500:23;::::1;;;::::0;25516:6;;25449:22:::1;25500:23:::0;25449:22;25500:23;25516:6;25482:10;25500:23;::::1;;;;;;;;;;;;;::::0;::::1;;;;9560:422:::0;9666:4;9683:36;9693:6;9701:9;9712:6;9683:9;:36::i;:::-;-1:-1:-1;;;;;9759:19:0;;9732:24;9759:19;;;:11;:19;;;;;;;;4409:10;9759:33;;;;;;;;9811:26;;;;9803:79;;;;-1:-1:-1;;;9803:79:0;;8144:2:1;9803:79:0;;;8126:21:1;8183:2;8163:18;;;8156:30;8222:34;8202:18;;;8195:62;-1:-1:-1;;;8273:18:1;;;8266:38;8321:19;;9803:79:0;7942:404:1;9803:79:0;9893:57;9902:6;4409:10;9924:25;9943:6;9924:16;:25;:::i;:::-;9893:8;:57::i;:::-;-1:-1:-1;9970:4:0;;9560:422;-1:-1:-1;;;;9560:422:0:o;10391:215::-;4409:10;10479:4;10528:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;10528:34:0;;;;;;;;;;10479:4;;10496:80;;10519:7;;10528:47;;10565:10;;10528:47;:::i;27006:776::-;27069:13;;;;;;;;:21;;:13;:21;27061:30;;;;;;27102:19;27144:14;22799:2;27144;:14;:::i;:::-;27133:9;;27124:18;;:6;:18;:::i;:::-;:35;;;;:::i;:::-;27102:57;;27203:11;27178:21;:36;;27170:45;;;;;;27278:44;27288:10;27308:4;27315:6;27278:9;:44::i;:::-;27428:35;;27407:10;;;;27428:35;;;;;27451:11;;27366:29;27428:35;27366:29;27428:35;27451:11;27407:10;27428:35;;;;;;;;;;;;;;;;;;;;-1:-1:-1;7950:12:0;;27596:14;22799:2;27596;:14;:::i;:::-;27581:13;;:30;;;;:::i;:::-;:45;27578:197;;27656:16;;:18;27653:87;;27689:51;27703:4;27736:3;27718:16;;27711:6;:23;;;;:::i;:::-;27710:29;;;;:::i;:::-;27689:5;:51::i;24623:295::-;24745:30;24754:10;24765:9;24745:8;:30::i;:::-;-1:-1:-1;24787:56:0;;;11220:25:1;;;11264:18;11318:15;;;11313:2;11298:18;;11291:43;11370:15;;;11350:18;;;11343:43;11422:15;;11417:2;11402:18;;11395:43;24787:56:0;;-1:-1:-1;;;;;24787:56:0;;;;;;;;;11207:3:1;24787:56:0;;;24855:57;;;11220:25:1;;;11264:18;11318:15;;;11313:2;11298:18;;11291:43;11370:15;;;11350:18;;;11343:43;;;;11422:15;;;11417:2;11402:18;;11395:43;24878:10:0;;24855:57;;11207:3:1;11192:19;24855:57:0;;;;;;;;24623:295;;;;;:::o;23483:91::-;23539:27;4409:10;23559:6;23539:5;:27::i;:::-;23483:91;:::o;24109:212::-;20811:6;;-1:-1:-1;;;;;20811:6:0;4409:10;20958:23;20950:68;;;;-1:-1:-1;;;20950:68:0;;;;;;;:::i;:::-;24219:7:::1;:18:::0;;;;24244:7:::1;:18:::0;;;;24269:4:::1;:12:::0;24288:4:::1;:12:::0;-1:-1:-1;24307:4:0::1;:8:::0;24109:212::o;22815:654::-;22869:12;22912;22901:7;;:23;;:50;;;;;22944:7;;22928:12;:23;;22901:50;:67;;;;;22955:7;;22966:2;22955:13;22901:67;22893:76;;;;;;22995:4;;22988;;:11;:24;;;-1:-1:-1;23003:4:0;;:9;22988:24;22980:33;;;;;;23024:4;:7;;;:4;:7;;;:::i;:::-;;;;-1:-1:-1;;23045:10:0;-1:-1:-1;;;;;23045:20:0;;;;;;:46;;-1:-1:-1;;;;;;8134:18:0;;8107:7;8134:18;;;;;;;;;;;23069:22;;23045:46;:102;;;;-1:-1:-1;23105:42:0;-1:-1:-1;;;;;23095:52:0;;;;23045:102;23042:220;;;23161:44;23179:4;23186:6;23202:1;23195:4;;:8;;;;:::i;:::-;23161:9;:44::i;:::-;23272:42;23290:4;23297:10;23309:4;;23272:9;:42::i;:::-;-1:-1:-1;23455:4:0;;22815:654;-1:-1:-1;22815:654:0:o;21389:148::-;20811:6;;-1:-1:-1;;;;;20811:6:0;4409:10;20958:23;20950:68;;;;-1:-1:-1;;;20950:68:0;;;;;;;:::i;:::-;21480:6:::1;::::0;21459:40:::1;::::0;21496:1:::1;::::0;-1:-1:-1;;;;;21480:6:0::1;::::0;21459:40:::1;::::0;21496:1;;21459:40:::1;21510:6;:19:::0;;-1:-1:-1;;;;;;21510:19:0::1;::::0;;21389:148::o;24926:350::-;25081:9;25068;:22;25060:31;;;;;;25098:30;;-1:-1:-1;;;;;25098:19:0;;;:30;;;;;25118:9;;25098:30;;;;25118:9;25098:19;:30;;;;;;;;;;;;;;;;;;;;-1:-1:-1;25140:60:0;;;11220:25:1;;;11264:18;11318:15;;;11313:2;11298:18;;11291:43;11370:15;;;11350:18;;;11343:43;11422:15;;11417:2;11402:18;;11395:43;25140:60:0;;-1:-1:-1;;;;;25140:60:0;;;;;;;;;11207:3:1;25140:60:0;;;25212:57;;;25224:9;11220:25:1;;11264:18;11318:15;;;11313:2;11298:18;;11291:43;11370:15;;;11350:18;;;11343:43;;;;11422:15;;;11417:2;11402:18;;11395:43;25235:10:0;;25212:57;;11207:3:1;11192:19;25212:57:0;10995:449:1;6961:104:0;7017:13;7050:7;7043:14;;;;;:::i;24329:288::-;20811:6;;-1:-1:-1;;;;;20811:6:0;4409:10;20958:23;20950:68;;;;-1:-1:-1;;;20950:68:0;;;;;;;:::i;:::-;24462:12:::1;:28:::0;;24497:30;::::1;;24462:28;24497:30;-1:-1:-1::0;;24462:28:0;::::1;;24497:30:::0;;;;-1:-1:-1;;24497:30:0;;;;;;;;;;::::1;::::0;;;24534:13:::1;:30:::0;24571:16:::1;:35:::0;24329:288::o;11109:377::-;4409:10;11202:4;11246:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;11246:34:0;;;;;;;;;;11299:35;;;;11291:85;;;;-1:-1:-1;;;11291:85:0;;10141:2:1;11291:85:0;;;10123:21:1;10180:2;10160:18;;;10153:30;10219:34;10199:18;;;10192:62;-1:-1:-1;;;10270:18:1;;;10263:35;10315:19;;11291:85:0;9939:401:1;11291:85:0;11387:67;4409:10;11410:7;11419:34;11438:15;11419:16;:34;:::i;11387:67::-;-1:-1:-1;11474:4:0;;11109:377;-1:-1:-1;;;11109:377:0:o;8373:175::-;8459:4;8476:42;4409:10;8500:9;8511:6;8476:9;:42::i;25288:78::-;20811:6;;-1:-1:-1;;;;;20811:6:0;4409:10;20958:23;20950:68;;;;-1:-1:-1;;;20950:68:0;;;;;;;:::i;:::-;25345:7:::1;:15:::0;25288:78::o;21692:244::-;20811:6;;-1:-1:-1;;;;;20811:6:0;4409:10;20958:23;20950:68;;;;-1:-1:-1;;;20950:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;21781:22:0;::::1;21773:73;;;::::0;-1:-1:-1;;;21773:73:0;;6927:2:1;21773:73:0::1;::::0;::::1;6909:21:1::0;6966:2;6946:18;;;6939:30;7005:34;6985:18;;;6978:62;-1:-1:-1;;;7056:18:1;;;7049:36;7102:19;;21773:73:0::1;6725:402:1::0;21773:73:0::1;21883:6;::::0;21862:38:::1;::::0;-1:-1:-1;;;;;21862:38:0;;::::1;::::0;21883:6:::1;::::0;21862:38:::1;::::0;21883:6:::1;::::0;21862:38:::1;21911:6;:17:::0;;-1:-1:-1;;;;;;21911:17:0::1;-1:-1:-1::0;;;;;21911:17:0;;;::::1;::::0;;;::::1;::::0;;21692:244::o;26619:277::-;26675:12;;;;:20;;:12;:20;26667:29;;;;;;26707:11;26747:14;22799:2;26747;:14;:::i;:::-;26734:8;;26722:20;;:9;:20;:::i;:::-;26721:41;;;;:::i;:::-;26707:55;;26815:44;26833:4;26840:10;26852:6;26815:9;:44::i;15095:346::-;-1:-1:-1;;;;;15197:19:0;;15189:68;;;;-1:-1:-1;;;15189:68:0;;9736:2:1;15189:68:0;;;9718:21:1;9775:2;9755:18;;;9748:30;9814:34;9794:18;;;9787:62;-1:-1:-1;;;9865:18:1;;;9858:34;9909:19;;15189:68:0;9534:400:1;15189:68:0;-1:-1:-1;;;;;15276:21:0;;15268:68;;;;-1:-1:-1;;;15268:68:0;;7334:2:1;15268:68:0;;;7316:21:1;7373:2;7353:18;;;7346:30;7412:34;7392:18;;;7385:62;-1:-1:-1;;;7463:18:1;;;7456:32;7505:19;;15268:68:0;7132:398:1;15268:68:0;-1:-1:-1;;;;;15349:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;15401:32;;10491:25:1;;;15401:32:0;;10464:18:1;15401:32:0;;;;;;;;15095:346;;;:::o;11976:604::-;-1:-1:-1;;;;;12082:20:0;;12074:70;;;;-1:-1:-1;;;12074:70:0;;9330:2:1;12074:70:0;;;9312:21:1;9369:2;9349:18;;;9342:30;9408:34;9388:18;;;9381:62;-1:-1:-1;;;9459:18:1;;;9452:35;9504:19;;12074:70:0;9128:401:1;12074:70:0;-1:-1:-1;;;;;12163:23:0;;12155:71;;;;-1:-1:-1;;;12155:71:0;;6120:2:1;12155:71:0;;;6102:21:1;6159:2;6139:18;;;6132:30;6198:34;6178:18;;;6171:62;-1:-1:-1;;;6249:18:1;;;6242:33;6292:19;;12155:71:0;5918:399:1;12155:71:0;-1:-1:-1;;;;;12323:17:0;;12299:21;12323:17;;;;;;;;;;;12359:23;;;;12351:74;;;;-1:-1:-1;;;12351:74:0;;7737:2:1;12351:74:0;;;7719:21:1;7776:2;7756:18;;;7749:30;7815:34;7795:18;;;7788:62;-1:-1:-1;;;7866:18:1;;;7859:36;7912:19;;12351:74:0;7535:402:1;12351:74:0;12456:22;12472:6;12456:13;:22;:::i;:::-;-1:-1:-1;;;;;12436:17:0;;;:9;:17;;;;;;;;;;;:42;;;;12489:20;;;;;;;;:30;;12513:6;;12436:9;12489:30;;12513:6;;12489:30;:::i;:::-;;;;;;;;12554:9;-1:-1:-1;;;;;12537:35:0;12546:6;-1:-1:-1;;;;;12537:35:0;;12565:6;12537:35;;;;10491:25:1;;10479:2;10464:18;;10345:177;12537:35:0;;;;;;;;12063:517;11976:604;;;:::o;13533:588::-;-1:-1:-1;;;;;13617:21:0;;13609:81;;;;-1:-1:-1;;;13609:81:0;;8914:2:1;13609:81:0;;;8896:21:1;8953:2;8933:18;;;8926:30;8992:34;8972:18;;;8965:62;-1:-1:-1;;;9043:18:1;;;9036:45;9098:19;;13609:81:0;8712:411:1;13609:81:0;-1:-1:-1;;;;;13838:18:0;;13813:22;13838:18;;;;;;;;;;;13875:24;;;;13867:71;;;;-1:-1:-1;;;13867:71:0;;6524:2:1;13867:71:0;;;6506:21:1;6563:2;6543:18;;;6536:30;6602:34;6582:18;;;6575:62;-1:-1:-1;;;6653:18:1;;;6646:32;6695:19;;13867:71:0;6322:398:1;13867:71:0;13970:23;13987:6;13970:14;:23;:::i;:::-;-1:-1:-1;;;;;13949:18:0;;:9;:18;;;;;;;;;;:44;;;;14004:12;:22;;14020:6;;13949:9;14004:22;;14020:6;;14004:22;:::i;:::-;;;;-1:-1:-1;;14044:69:0;;10491:25:1;;;14062:42:0;;-1:-1:-1;;;;;14044:69:0;;;;;10479:2:1;10464:18;14044:69:0;10345:177:1;14:171;81:20;;141:18;130:30;;120:41;;110:69;;175:1;172;165:12;110:69;14:171;;;:::o;190:247::-;249:6;302:2;290:9;281:7;277:23;273:32;270:52;;;318:1;315;308:12;270:52;357:9;344:23;376:31;401:5;376:31;:::i;:::-;426:5;190:247;-1:-1:-1;;;190:247:1:o;442:541::-;542:6;550;558;566;574;627:3;615:9;606:7;602:23;598:33;595:53;;;644:1;641;634:12;595:53;683:9;670:23;702:31;727:5;702:31;:::i;:::-;752:5;-1:-1:-1;804:2:1;789:18;;776:32;;-1:-1:-1;827:37:1;860:2;845:18;;827:37;:::i;:::-;817:47;;883:37;916:2;905:9;901:18;883:37;:::i;:::-;873:47;;939:38;972:3;961:9;957:19;939:38;:::i;:::-;929:48;;442:541;;;;;;;;:::o;988:388::-;1056:6;1064;1117:2;1105:9;1096:7;1092:23;1088:32;1085:52;;;1133:1;1130;1123:12;1085:52;1172:9;1159:23;1191:31;1216:5;1191:31;:::i;:::-;1241:5;-1:-1:-1;1298:2:1;1283:18;;1270:32;1311:33;1270:32;1311:33;:::i;:::-;1363:7;1353:17;;;988:388;;;;;:::o;1381:456::-;1458:6;1466;1474;1527:2;1515:9;1506:7;1502:23;1498:32;1495:52;;;1543:1;1540;1533:12;1495:52;1582:9;1569:23;1601:31;1626:5;1601:31;:::i;:::-;1651:5;-1:-1:-1;1708:2:1;1693:18;;1680:32;1721:33;1680:32;1721:33;:::i;:::-;1381:456;;1773:7;;-1:-1:-1;;;1827:2:1;1812:18;;;;1799:32;;1381:456::o;1842:315::-;1910:6;1918;1971:2;1959:9;1950:7;1946:23;1942:32;1939:52;;;1987:1;1984;1977:12;1939:52;2026:9;2013:23;2045:31;2070:5;2045:31;:::i;:::-;2095:5;2147:2;2132:18;;;;2119:32;;-1:-1:-1;;;1842:315:1:o;2700:245::-;2767:6;2820:2;2808:9;2799:7;2795:23;2791:32;2788:52;;;2836:1;2833;2826:12;2788:52;2868:9;2862:16;2887:28;2909:5;2887:28;:::i;2950:513::-;3030:6;3038;3046;3054;3107:3;3095:9;3086:7;3082:23;3078:33;3075:53;;;3124:1;3121;3114:12;3075:53;3163:9;3150:23;3182:28;3204:5;3182:28;:::i;:::-;3229:5;-1:-1:-1;3286:2:1;3271:18;;3258:32;3299:30;3258:32;3299:30;:::i;:::-;2950:513;;3348:7;;-1:-1:-1;;;;3402:2:1;3387:18;;3374:32;;3453:2;3438:18;3425:32;;2950:513::o;3801:180::-;3860:6;3913:2;3901:9;3892:7;3888:23;3884:32;3881:52;;;3929:1;3926;3919:12;3881:52;-1:-1:-1;3952:23:1;;3801:180;-1:-1:-1;3801:180:1:o;3986:248::-;4054:6;4062;4115:2;4103:9;4094:7;4090:23;4086:32;4083:52;;;4131:1;4128;4121:12;4083:52;-1:-1:-1;;4154:23:1;;;4224:2;4209:18;;;4196:32;;-1:-1:-1;3986:248:1:o;4239:385::-;4325:6;4333;4341;4349;4402:3;4390:9;4381:7;4377:23;4373:33;4370:53;;;4419:1;4416;4409:12;4370:53;-1:-1:-1;;4442:23:1;;;4512:2;4497:18;;4484:32;;-1:-1:-1;4563:2:1;4548:18;;4535:32;;4614:2;4599:18;4586:32;;-1:-1:-1;4239:385:1;-1:-1:-1;4239:385:1:o;5316:597::-;5428:4;5457:2;5486;5475:9;5468:21;5518:6;5512:13;5561:6;5556:2;5545:9;5541:18;5534:34;5586:1;5596:140;5610:6;5607:1;5604:13;5596:140;;;5705:14;;;5701:23;;5695:30;5671:17;;;5690:2;5667:26;5660:66;5625:10;;5596:140;;;5754:6;5751:1;5748:13;5745:91;;;5824:1;5819:2;5810:6;5799:9;5795:22;5791:31;5784:42;5745:91;-1:-1:-1;5897:2:1;5876:15;-1:-1:-1;;5872:29:1;5857:45;;;;5904:2;5853:54;;5316:597;-1:-1:-1;;;5316:597:1:o;8351:356::-;8553:2;8535:21;;;8572:18;;;8565:30;8631:34;8626:2;8611:18;;8604:62;8698:2;8683:18;;8351:356::o;11638:128::-;11678:3;11709:1;11705:6;11702:1;11699:13;11696:39;;;11715:18;;:::i;:::-;-1:-1:-1;11751:9:1;;11638:128::o;11771:217::-;11811:1;11837;11827:132;;11881:10;11876:3;11872:20;11869:1;11862:31;11916:4;11913:1;11906:15;11944:4;11941:1;11934:15;11827:132;-1:-1:-1;11973:9:1;;11771:217::o;11993:422::-;12082:1;12125:5;12082:1;12139:270;12160:7;12150:8;12147:21;12139:270;;;12219:4;12215:1;12211:6;12207:17;12201:4;12198:27;12195:53;;;12228:18;;:::i;:::-;12278:7;12268:8;12264:22;12261:55;;;12298:16;;;;12261:55;12377:22;;;;12337:15;;;;12139:270;;;12143:3;11993:422;;;;;:::o;12420:140::-;12478:5;12507:47;12548:4;12538:8;12534:19;12528:4;12614:5;12644:8;12634:80;;-1:-1:-1;12685:1:1;12699:5;;12634:80;12733:4;12723:76;;-1:-1:-1;12770:1:1;12784:5;;12723:76;12815:4;12833:1;12828:59;;;;12901:1;12896:130;;;;12808:218;;12828:59;12858:1;12849:10;;12872:5;;;12896:130;12933:3;12923:8;12920:17;12917:43;;;12940:18;;:::i;:::-;-1:-1:-1;;12996:1:1;12982:16;;13011:5;;12808:218;;13110:2;13100:8;13097:16;13091:3;13085:4;13082:13;13078:36;13072:2;13062:8;13059:16;13054:2;13048:4;13045:12;13041:35;13038:77;13035:159;;;-1:-1:-1;13147:19:1;;;13179:5;;13035:159;13226:34;13251:8;13245:4;13226:34;:::i;:::-;13296:6;13292:1;13288:6;13284:19;13275:7;13272:32;13269:58;;;13307:18;;:::i;:::-;13345:20;;12565:806;-1:-1:-1;;;12565:806:1:o;13376:168::-;13416:7;13482:1;13478;13474:6;13470:14;13467:1;13464:21;13459:1;13452:9;13445:17;13441:45;13438:71;;;13489:18;;:::i;:::-;-1:-1:-1;13529:9:1;;13376:168::o;13549:125::-;13589:4;13617:1;13614;13611:8;13608:34;;;13622:18;;:::i;:::-;-1:-1:-1;13659:9:1;;13549:125::o;13679:380::-;13758:1;13754:12;;;;13801;;;13822:61;;13876:4;13868:6;13864:17;13854:27;;13822:61;13929:2;13921:6;13918:14;13898:18;13895:38;13892:161;;;13975:10;13970:3;13966:20;13963:1;13956:31;14010:4;14007:1;14000:15;14038:4;14035:1;14028:15;13892:161;;13679:380;;;:::o;14064:135::-;14103:3;-1:-1:-1;;14124:17:1;;14121:43;;;14144:18;;:::i;:::-;-1:-1:-1;14191:1:1;14180:13;;14064:135::o;14204:127::-;14265:10;14260:3;14256:20;14253:1;14246:31;14296:4;14293:1;14286:15;14320:4;14317:1;14310:15;14336:131;-1:-1:-1;;;;;14411:31:1;;14401:42;;14391:70;;14457:1;14454;14447:12;14472:118;14558:5;14551:13;14544:21;14537:5;14534:32;14524:60;;14580:1;14577;14570:12

Swarm Source

ipfs://8ec950f606753fa23adffc0dbb037d3ca06346f61d3bfb29ace8cba2d94a4f0f

Block Transaction Gas Used Reward
view all blocks produced

Block Uncle Number Difficulty Gas Used Reward
View All Uncles
Loading...
Loading
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  ]
[ 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.