ETH Price: $3,340.59 (-1.40%)
Gas: 20 Gwei

Contract

0x41933422DC4a1cb8C822e06f12f7b52fA5E7E094
 

Multichain Info

Transaction Hash
Method
Block
From
To
Value
Approve200791582024-06-12 23:54:3513 days ago1718236475IN
SPACE HOGE: SOGE Token
0 ETH0.000376628.1175224
Transfer200791522024-06-12 23:53:2313 days ago1718236403IN
SPACE HOGE: SOGE Token
0 ETH0.0019384523.88765014
Approve197572922024-04-29 0:08:2358 days ago1714349303IN
SPACE HOGE: SOGE Token
0 ETH0.000201614.32317184
Approve197190752024-04-23 15:46:2364 days ago1713887183IN
SPACE HOGE: SOGE Token
0 ETH0.0005113520.94703686
Approve197027472024-04-21 9:00:1166 days ago1713690011IN
SPACE HOGE: SOGE Token
0 ETH0.000312036.71672129
Approve195990922024-04-06 20:34:4780 days ago1712435687IN
SPACE HOGE: SOGE Token
0 ETH0.0002781311.39335629
Approve195989712024-04-06 20:09:5980 days ago1712434199IN
SPACE HOGE: SOGE Token
0 ETH0.0002589810.60874864
Transfer195293302024-03-28 1:25:3590 days ago1711589135IN
SPACE HOGE: SOGE Token
0 ETH0.0013706830.13953083
Transfer195293302024-03-28 1:25:3590 days ago1711589135IN
SPACE HOGE: SOGE Token
0 ETH0.0018890429.49367173
Transfer195293152024-03-28 1:22:3590 days ago1711588955IN
SPACE HOGE: SOGE Token
0 ETH0.0021533426.55931633
Approve195116452024-03-25 12:58:4793 days ago1711371527IN
SPACE HOGE: SOGE Token
0 ETH0.0012310126.39625625
Transfer195114792024-03-25 12:25:2393 days ago1711369523IN
SPACE HOGE: SOGE Token
0 ETH0.0017774121.90314447
Approve195017402024-03-24 3:27:4794 days ago1711250867IN
SPACE HOGE: SOGE Token
0 ETH0.000730815.73108278
Approve193876612024-03-08 3:06:35110 days ago1709867195IN
SPACE HOGE: SOGE Token
0 ETH0.0020999644.97093686
Approve193682012024-03-05 9:55:11113 days ago1709632511IN
SPACE HOGE: SOGE Token
0 ETH0.0015417563.1558124
Increase Allowan...192943902024-02-24 2:13:59123 days ago1708740839IN
SPACE HOGE: SOGE Token
0 ETH0.0011186523.81490635
Transfer192626162024-02-19 15:17:35128 days ago1708355855IN
SPACE HOGE: SOGE Token
0 ETH0.0028767944.95758942
Transfer192625922024-02-19 15:12:47128 days ago1708355567IN
SPACE HOGE: SOGE Token
0 ETH0.0029267845.73887895
Transfer192625452024-02-19 15:03:23128 days ago1708355003IN
SPACE HOGE: SOGE Token
0 ETH0.003576344.10345852
Transfer192427142024-02-16 20:04:47130 days ago1708113887IN
SPACE HOGE: SOGE Token
0 ETH0.0016925926.43639406
Approve192426712024-02-16 19:56:11130 days ago1708113371IN
SPACE HOGE: SOGE Token
0 ETH0.0011610924.89706676
Transfer192426482024-02-16 19:51:35130 days ago1708113095IN
SPACE HOGE: SOGE Token
0 ETH0.0020925125.79376143
Approve191833752024-02-08 12:13:35139 days ago1707394415IN
SPACE HOGE: SOGE Token
0 ETH0.0026553856.9384575
Approve191387532024-02-02 5:51:35145 days ago1706853095IN
SPACE HOGE: SOGE Token
0 ETH0.0007663816.51835328
Approve191137372024-01-29 17:41:23148 days ago1706550083IN
SPACE HOGE: SOGE Token
0 ETH0.0005260621.54925923
View all transactions

View more zero value Internal Transactions in Advanced View mode

Advanced mode:
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
SOGE

Compiler Version
v0.8.0+commit.c7dfd78e

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

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

// SPDX-License-Identifier: Unlicensed

pragma solidity ^0.8.0;

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

    function _msgData() internal view virtual returns (bytes memory) {
        this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691
        return msg.data;
    }
}

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

library SafeMath {
    /**
     * @dev Returns the addition of two unsigned integers, reverting on
     * overflow.
     *
     * Counterpart to Solidity's `+` operator.
     *
     * Requirements:
     *
     * - Addition cannot overflow.
     */
    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        require(c >= a, "SafeMath: addition overflow");

        return c;
    }

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

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

        return c;
    }

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

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

        return c;
    }

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

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

        return c;
    }

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

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

library Address {
    /**
     * @dev Returns true if `account` is a contract.
     *
     * [IMPORTANT]
     * ====
     * It is unsafe to assume that an address for which this function returns
     * false is an externally-owned account (EOA) and not a contract.
     *
     * Among others, `isContract` will return false for the following
     * types of addresses:
     *
     *  - an externally-owned account
     *  - a contract in construction
     *  - an address where a contract will be created
     *  - an address where a contract lived, but was destroyed
     * ====
     */
    function isContract(address account) internal view returns (bool) {
        // According to EIP-1052, 0x0 is the value returned for not-yet created accounts
        // and 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470 is returned
        // for accounts without code, i.e. `keccak256('')`
        bytes32 codehash;
        bytes32 accountHash = 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470;
        // solhint-disable-next-line no-inline-assembly
        assembly { codehash := extcodehash(account) }
        return (codehash != accountHash && codehash != 0x0);
    }

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

        // solhint-disable-next-line avoid-low-level-calls, avoid-call-value
        (bool success, ) = recipient.call{ value: amount }("");
        require(success, "Address: unable to send value, recipient may have reverted");
    }

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

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

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

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

    function _functionCallWithValue(address target, bytes memory data, uint256 weiValue, string memory errorMessage) private returns (bytes memory) {
        require(isContract(target), "Address: call to non-contract");

        // solhint-disable-next-line avoid-low-level-calls
        (bool success, bytes memory returndata) = target.call{ value: weiValue }(data);
        if (success) {
            return returndata;
        } else {
            // Look for revert reason and bubble it up if present
            if (returndata.length > 0) {
                // The easiest way to bubble the revert reason is using memory via assembly

                // solhint-disable-next-line no-inline-assembly
                assembly {
                    let returndata_size := mload(returndata)
                    revert(add(32, returndata), returndata_size)
                }
            } else {
                revert(errorMessage);
            }
        }
    }
}

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



contract SOGE is Context, IERC20, Ownable {
    using SafeMath for uint256;
    using Address for address;

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

    mapping (address => bool) private _isExcluded;
    address[] private _excluded;
   
    uint256 private constant MAX = ~uint256(0);
    uint256 private constant _tTotal = 100000000 * 10**6 * 10**18;
    uint256 private _rTotal = (MAX - (MAX % _tTotal));
    uint256 private _tFeeTotal;

    string private _name = ' SPACE HOGE';
    string private _symbol = 'SOGE';
    uint8 private _decimals = 18;

    constructor () public {
        _rOwned[_msgSender()] = _rTotal;
        emit Transfer(address(0), _msgSender(), _tTotal);
    }

    function name() public view returns (string memory) {
        return _name;
    }

    function symbol() public view returns (string memory) {
        return _symbol;
    }

    function decimals() public view returns (uint8) {
        return _decimals;
    }

    function totalSupply() public view override returns (uint256) {
        return _tTotal;
    }

    function balanceOf(address account) public view override returns (uint256) {
        if (_isExcluded[account]) return _tOwned[account];
        return tokenFromReflection(_rOwned[account]);
    }

    function transfer(address recipient, uint256 amount) public override returns (bool) {
        _transfer(_msgSender(), recipient, amount);
        return true;
    }

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

    function approve(address spender, uint256 amount) public override returns (bool) {
        _approve(_msgSender(), spender, amount);
        return true;
    }

    function transferFrom(address sender, address recipient, uint256 amount) public override returns (bool) {
        _transfer(sender, recipient, amount);
        _approve(sender, _msgSender(), _allowances[sender][_msgSender()].sub(amount, "ERC20: transfer amount exceeds allowance"));
        return true;
    }

    function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) {
        _approve(_msgSender(), spender, _allowances[_msgSender()][spender].add(addedValue));
        return true;
    }

    function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) {
        _approve(_msgSender(), spender, _allowances[_msgSender()][spender].sub(subtractedValue, "ERC20: decreased allowance below zero"));
        return true;
    }

    function isExcluded(address account) public view returns (bool) {
        return _isExcluded[account];
    }

    function totalFees() public view returns (uint256) {
        return _tFeeTotal;
    }

    function reflect(uint256 tAmount) public {
        address sender = _msgSender();
        require(!_isExcluded[sender], "Excluded addresses cannot call this function");
        (uint256 rAmount,,,,) = _getValues(tAmount);
        _rOwned[sender] = _rOwned[sender].sub(rAmount);
        _rTotal = _rTotal.sub(rAmount);
        _tFeeTotal = _tFeeTotal.add(tAmount);
    }

    function reflectionFromToken(uint256 tAmount, bool deductTransferFee) public view returns(uint256) {
        require(tAmount <= _tTotal, "Amount must be less than supply");
        if (!deductTransferFee) {
            (uint256 rAmount,,,,) = _getValues(tAmount);
            return rAmount;
        } else {
            (,uint256 rTransferAmount,,,) = _getValues(tAmount);
            return rTransferAmount;
        }
    }

    function tokenFromReflection(uint256 rAmount) public view returns(uint256) {
        require(rAmount <= _rTotal, "Amount must be less than total reflections");
        uint256 currentRate =  _getRate();
        return rAmount.div(currentRate);
    }

    function excludeAccount(address account) external onlyOwner() {
        require(!_isExcluded[account], "Account is already excluded");
        if(_rOwned[account] > 0) {
            _tOwned[account] = tokenFromReflection(_rOwned[account]);
        }
        _isExcluded[account] = true;
        _excluded.push(account);
    }

    function includeAccount(address account) external onlyOwner() {
        require(_isExcluded[account], "Account is already excluded");
        for (uint256 i = 0; i < _excluded.length; i++) {
            if (_excluded[i] == account) {
                _excluded[i] = _excluded[_excluded.length - 1];
                _tOwned[account] = 0;
                _isExcluded[account] = false;
                _excluded.pop();
                break;
            }
        }
    }

    function _approve(address owner, address spender, uint256 amount) private {
        require(owner != address(0), "ERC20: approve from the zero address");
        require(spender != address(0), "ERC20: approve to the zero address");

        _allowances[owner][spender] = amount;
        emit Approval(owner, spender, amount);
    }

    function _transfer(address sender, address recipient, uint256 amount) private {
        require(sender != address(0), "ERC20: transfer from the zero address");
        require(recipient != address(0), "ERC20: transfer to the zero address");
        require(amount > 0, "Transfer amount must be greater than zero");
        if (_isExcluded[sender] && !_isExcluded[recipient]) {
            _transferFromExcluded(sender, recipient, amount);
        } else if (!_isExcluded[sender] && _isExcluded[recipient]) {
            _transferToExcluded(sender, recipient, amount);
        } else if (!_isExcluded[sender] && !_isExcluded[recipient]) {
            _transferStandard(sender, recipient, amount);
        } else if (_isExcluded[sender] && _isExcluded[recipient]) {
            _transferBothExcluded(sender, recipient, amount);
        } else {
            _transferStandard(sender, recipient, amount);
        }
    }

    function _transferStandard(address sender, address recipient, uint256 tAmount) private {
        (uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee) = _getValues(tAmount);
        _rOwned[sender] = _rOwned[sender].sub(rAmount);
        _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount);       
        _reflectFee(rFee, tFee);
        emit Transfer(sender, recipient, tTransferAmount);
    }

    function _transferToExcluded(address sender, address recipient, uint256 tAmount) private {
        (uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee) = _getValues(tAmount);
        _rOwned[sender] = _rOwned[sender].sub(rAmount);
        _tOwned[recipient] = _tOwned[recipient].add(tTransferAmount);
        _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount);           
        _reflectFee(rFee, tFee);
        emit Transfer(sender, recipient, tTransferAmount);
    }

    function _transferFromExcluded(address sender, address recipient, uint256 tAmount) private {
        (uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee) = _getValues(tAmount);
        _tOwned[sender] = _tOwned[sender].sub(tAmount);
        _rOwned[sender] = _rOwned[sender].sub(rAmount);
        _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount);   
        _reflectFee(rFee, tFee);
        emit Transfer(sender, recipient, tTransferAmount);
    }

    function _transferBothExcluded(address sender, address recipient, uint256 tAmount) private {
        (uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee) = _getValues(tAmount);
        _tOwned[sender] = _tOwned[sender].sub(tAmount);
        _rOwned[sender] = _rOwned[sender].sub(rAmount);
        _tOwned[recipient] = _tOwned[recipient].add(tTransferAmount);
        _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount);        
        _reflectFee(rFee, tFee);
        emit Transfer(sender, recipient, tTransferAmount);
    }

    function _reflectFee(uint256 rFee, uint256 tFee) private {
       
        _rTotal = _rTotal.sub(rFee);
        _tFeeTotal = _tFeeTotal.add(tFee);
    }

    function _getValues(uint256 tAmount) private view returns (uint256, uint256, uint256, uint256, uint256) {
        (uint256 tTransferAmount, uint256 tFee) = _getTValues(tAmount);
        uint256 currentRate =  _getRate();
        (uint256 rAmount, uint256 rTransferAmount, uint256 rFee) = _getRValues(tAmount, tFee, currentRate);
        return (rAmount, rTransferAmount, rFee, tTransferAmount, tFee);
    }

    function _getTValues(uint256 tAmount) private view returns (uint256, uint256) {
       
        uint256 tFee;
        if(_tTotal >= 30000000 * (10**6) * (10**18))
        {
        tFee = tAmount.div(100).mul(5);
        }
        else
        {
        tFee = 0;
        }
        uint256 tTransferAmount = tAmount.sub(tFee);
        return (tTransferAmount, tFee);
    }

    function _getRValues(uint256 tAmount, uint256 tFee, uint256 currentRate) private pure returns (uint256, uint256, uint256) {
        uint256 rAmount = tAmount.mul(currentRate);
        uint256 rFee = tFee.mul(currentRate);
        uint256 rTransferAmount = rAmount.sub(rFee);
        return (rAmount, rTransferAmount, rFee);
    }

    function _getRate() private view returns(uint256) {
        (uint256 rSupply, uint256 tSupply) = _getCurrentSupply();
        return rSupply.div(tSupply);
    }
    uint256 public rSupply;
    uint256 public tSupply; 
    function _getCurrentSupply() private view returns(uint256, uint256) {
        uint256 rSupply = _rTotal;
        uint256 tSupply = _tTotal;      
        for (uint256 i = 0; i < _excluded.length; i++) {
            if (_rOwned[_excluded[i]] > rSupply || _tOwned[_excluded[i]] > tSupply) return (_rTotal, _tTotal);
            rSupply = rSupply.sub(_rOwned[_excluded[i]]);
            tSupply = tSupply.sub(_tOwned[_excluded[i]]);
        }
        if (rSupply < _rTotal.div(_tTotal)) return (_rTotal, _tTotal);
        return (rSupply, tSupply);
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"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":[],"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":"account","type":"address"}],"name":"excludeAccount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"includeAccount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcluded","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","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":"rSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tAmount","type":"uint256"}],"name":"reflect","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tAmount","type":"uint256"},{"internalType":"bool","name":"deductTransferFee","type":"bool"}],"name":"reflectionFromToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"rAmount","type":"uint256"}],"name":"tokenFromReflection","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalFees","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"}]

6080604052620000206d04ee2d6d415b85acef8100000000600019620002af565b6200002e906000196200024e565b60065560408051808201909152600b8082526a20535041434520484f474560a81b602090920191825262000065916008916200019f565b5060408051808201909152600480825263534f474560e01b602090920191825262000093916009916200019f565b50600a805460ff19166012179055348015620000ae57600080fd5b506000620000bb6200019b565b600080546001600160a01b0319166001600160a01b0383169081178255604051929350917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a35060065460016000620001166200019b565b6001600160a01b031681526020810191909152604001600020556200013a6200019b565b6001600160a01b031660006001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6d04ee2d6d415b85acef81000000006040516200018d919062000245565b60405180910390a3620002d0565b3390565b828054620001ad9062000272565b90600052602060002090601f016020900481019282620001d157600085556200021c565b82601f10620001ec57805160ff19168380011785556200021c565b828001600101855582156200021c579182015b828111156200021c578251825591602001919060010190620001ff565b506200022a9291506200022e565b5090565b5b808211156200022a57600081556001016200022f565b90815260200190565b6000828210156200026d57634e487b7160e01b81526011600452602481fd5b500390565b6002810460018216806200028757607f821691505b60208210811415620002a957634e487b7160e01b600052602260045260246000fd5b50919050565b600082620002cb57634e487b7160e01b81526012600452602481fd5b500690565b611b0880620002e06000396000f3fe608060405234801561001057600080fd5b506004361061014d5760003560e01c8063715018a6116100c3578063a9059cbb1161007c578063a9059cbb1461027e578063cba0e99614610291578063dd62ed3e146102a4578063f2cc0c18146102b7578063f2fde38b146102ca578063f84354f1146102dd5761014d565b8063715018a61461023657806384a3f5c01461023e5780638da5cb5b1461024657806393ea49831461025b57806395d89b4114610263578063a457c2d71461026b5761014d565b806323b872dd1161011557806323b872dd146101c25780632d838119146101d5578063313ce567146101e857806339509351146101fd5780634549b0391461021057806370a08231146102235761014d565b8063053ab1821461015257806306fdde0314610167578063095ea7b31461018557806313114a9d146101a557806318160ddd146101ba575b600080fd5b610165610160366004611589565b6102f0565b005b61016f6103b2565b60405161017c91906115f3565b60405180910390f35b610198610193366004611560565b610444565b60405161017c91906115e8565b6101ad610462565b60405161017c9190611994565b6101ad610468565b6101986101d0366004611525565b61047a565b6101ad6101e3366004611589565b610501565b6101f0610544565b60405161017c919061199d565b61019861020b366004611560565b61054d565b6101ad61021e3660046115a1565b61059b565b6101ad6102313660046114d9565b610602565b610165610664565b6101ad6106e3565b61024e6106e9565b60405161017c91906115d4565b6101ad6106f8565b61016f6106fe565b610198610279366004611560565b61070d565b61019861028c366004611560565b610775565b61019861029f3660046114d9565b610789565b6101ad6102b23660046114f3565b6107a7565b6101656102c53660046114d9565b6107d2565b6101656102d83660046114d9565b610900565b6101656102eb3660046114d9565b6109b6565b60006102fa610b81565b6001600160a01b03811660009081526004602052604090205490915060ff161561033f5760405162461bcd60e51b815260040161033690611948565b60405180910390fd5b600061034a83610b85565b505050506001600160a01b0383166000908152600160205260409020549091506103749082610bd1565b6001600160a01b03831660009081526001602052604090205560065461039a9082610bd1565b6006556007546103aa9084610c1a565b600755505050565b6060600880546103c190611a19565b80601f01602080910402602001604051908101604052809291908181526020018280546103ed90611a19565b801561043a5780601f1061040f5761010080835404028352916020019161043a565b820191906000526020600020905b81548152906001019060200180831161041d57829003601f168201915b5050505050905090565b6000610458610451610b81565b8484610c49565b5060015b92915050565b60075490565b6d04ee2d6d415b85acef810000000090565b6000610487848484610cfd565b6104f784610493610b81565b6104f285604051806060016040528060288152602001611a86602891396001600160a01b038a166000908152600360205260408120906104d1610b81565b6001600160a01b031681526020810191909152604001600020549190610ec2565b610c49565b5060019392505050565b60006006548211156105255760405162461bcd60e51b815260040161033690611689565b600061052f610efc565b905061053b8382610f1f565b9150505b919050565b600a5460ff1690565b600061045861055a610b81565b846104f2856003600061056b610b81565b6001600160a01b03908116825260208083019390935260409182016000908120918c168152925290205490610c1a565b60006d04ee2d6d415b85acef81000000008311156105cb5760405162461bcd60e51b8152600401610336906117c9565b816105e95760006105db84610b85565b5092945061045c9350505050565b60006105f484610b85565b5091945061045c9350505050565b6001600160a01b03811660009081526004602052604081205460ff161561064257506001600160a01b03811660009081526002602052604090205461053f565b6001600160a01b03821660009081526001602052604090205461045c90610501565b61066c610b81565b6000546001600160a01b039081169116146106995760405162461bcd60e51b815260040161033690611841565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b600b5481565b6000546001600160a01b031690565b600c5481565b6060600980546103c190611a19565b600061045861071a610b81565b846104f285604051806060016040528060258152602001611aae6025913960036000610744610b81565b6001600160a01b03908116825260208083019390935260409182016000908120918d16815292529020549190610ec2565b6000610458610782610b81565b8484610cfd565b6001600160a01b031660009081526004602052604090205460ff1690565b6001600160a01b03918216600090815260036020908152604080832093909416825291909152205490565b6107da610b81565b6000546001600160a01b039081169116146108075760405162461bcd60e51b815260040161033690611841565b6001600160a01b03811660009081526004602052604090205460ff16156108405760405162461bcd60e51b815260040161033690611792565b6001600160a01b0381166000908152600160205260409020541561089a576001600160a01b03811660009081526001602052604090205461088090610501565b6001600160a01b0382166000908152600260205260409020555b6001600160a01b03166000818152600460205260408120805460ff191660019081179091556005805491820181559091527f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db00180546001600160a01b0319169091179055565b610908610b81565b6000546001600160a01b039081169116146109355760405162461bcd60e51b815260040161033690611841565b6001600160a01b03811661095b5760405162461bcd60e51b8152600401610336906116d3565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6109be610b81565b6000546001600160a01b039081169116146109eb5760405162461bcd60e51b815260040161033690611841565b6001600160a01b03811660009081526004602052604090205460ff16610a235760405162461bcd60e51b815260040161033690611792565b60005b600554811015610b7d57816001600160a01b031660058281548110610a5b57634e487b7160e01b600052603260045260246000fd5b6000918252602090912001546001600160a01b03161415610b6b5760058054610a8690600190611a02565b81548110610aa457634e487b7160e01b600052603260045260246000fd5b600091825260209091200154600580546001600160a01b039092169183908110610ade57634e487b7160e01b600052603260045260246000fd5b600091825260208083209190910180546001600160a01b0319166001600160a01b039485161790559184168152600282526040808220829055600490925220805460ff191690556005805480610b4457634e487b7160e01b600052603160045260246000fd5b600082815260209020810160001990810180546001600160a01b0319169055019055610b7d565b80610b7581611a54565b915050610a26565b5050565b3390565b6000806000806000806000610b9988610f61565b915091506000610ba7610efc565b90506000806000610bb98c8686610f94565b919e909d50909b509599509397509395505050505050565b6000610c1383836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250610ec2565b9392505050565b600080610c2783856119ab565b905083811015610c135760405162461bcd60e51b81526004016103369061175b565b6001600160a01b038316610c6f5760405162461bcd60e51b815260040161033690611904565b6001600160a01b038216610c955760405162461bcd60e51b815260040161033690611719565b6001600160a01b0380841660008181526003602090815260408083209487168084529490915290819020849055517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92590610cf0908590611994565b60405180910390a3505050565b6001600160a01b038316610d235760405162461bcd60e51b8152600401610336906118bf565b6001600160a01b038216610d495760405162461bcd60e51b815260040161033690611646565b60008111610d695760405162461bcd60e51b815260040161033690611876565b6001600160a01b03831660009081526004602052604090205460ff168015610daa57506001600160a01b03821660009081526004602052604090205460ff16155b15610dbf57610dba838383610fd0565b610ebd565b6001600160a01b03831660009081526004602052604090205460ff16158015610e0057506001600160a01b03821660009081526004602052604090205460ff165b15610e1057610dba8383836110e7565b6001600160a01b03831660009081526004602052604090205460ff16158015610e5257506001600160a01b03821660009081526004602052604090205460ff16155b15610e6257610dba83838361118d565b6001600160a01b03831660009081526004602052604090205460ff168015610ea257506001600160a01b03821660009081526004602052604090205460ff165b15610eb257610dba8383836111ce565b610ebd83838361118d565b505050565b60008184841115610ee65760405162461bcd60e51b815260040161033691906115f3565b506000610ef38486611a02565b95945050505050565b6000806000610f0961123e565b9092509050610f188282610f1f565b9250505090565b6000610c1383836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061142b565b60008080610f7b6005610f75866064610f1f565b90611459565b90506000610f898583610bd1565b935090915050915091565b6000808080610fa38786611459565b90506000610fb18787611459565b90506000610fbf8383610bd1565b929992985090965090945050505050565b6000806000806000610fe186610b85565b6001600160a01b038d16600090815260026020526040902054949950929750909550935091506110119087610bd1565b6001600160a01b0389166000908152600260209081526040808320939093556001905220546110409086610bd1565b6001600160a01b03808a16600090815260016020526040808220939093559089168152205461106f9085610c1a565b6001600160a01b038816600090815260016020526040902055611092838261149e565b866001600160a01b0316886001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516110d59190611994565b60405180910390a35050505050505050565b60008060008060006110f886610b85565b6001600160a01b038d16600090815260016020526040902054949950929750909550935091506111289086610bd1565b6001600160a01b03808a16600090815260016020908152604080832094909455918a1681526002909152205461115e9083610c1a565b6001600160a01b03881660009081526002602090815260408083209390935560019052205461106f9085610c1a565b600080600080600061119e86610b85565b6001600160a01b038d16600090815260016020526040902054949950929750909550935091506110409086610bd1565b60008060008060006111df86610b85565b6001600160a01b038d166000908152600260205260409020549499509297509095509350915061120f9087610bd1565b6001600160a01b0389166000908152600260209081526040808320939093556001905220546111289086610bd1565b60065460009081906d04ee2d6d415b85acef8100000000825b6005548110156113e15782600160006005848154811061128757634e487b7160e01b600052603260045260246000fd5b60009182526020808320909101546001600160a01b03168352820192909252604001902054118061130057508160026000600584815481106112d957634e487b7160e01b600052603260045260246000fd5b60009182526020808320909101546001600160a01b03168352820192909252604001902054115b15611323576006546d04ee2d6d415b85acef810000000094509450505050611427565b611377600160006005848154811061134b57634e487b7160e01b600052603260045260246000fd5b60009182526020808320909101546001600160a01b031683528201929092526040019020548490610bd1565b92506113cd60026000600584815481106113a157634e487b7160e01b600052603260045260246000fd5b60009182526020808320909101546001600160a01b031683528201929092526040019020548390610bd1565b9150806113d981611a54565b915050611257565b506006546113fd906d04ee2d6d415b85acef8100000000610f1f565b821015611421576006546d04ee2d6d415b85acef8100000000935093505050611427565b90925090505b9091565b6000818361144c5760405162461bcd60e51b815260040161033691906115f3565b506000610ef384866119c3565b6000826114685750600061045c565b600061147483856119e3565b90508261148185836119c3565b14610c135760405162461bcd60e51b815260040161033690611800565b6006546114ab9083610bd1565b6006556007546114bb9082610c1a565b6007555050565b80356001600160a01b038116811461053f57600080fd5b6000602082840312156114ea578081fd5b610c13826114c2565b60008060408385031215611505578081fd5b61150e836114c2565b915061151c602084016114c2565b90509250929050565b600080600060608486031215611539578081fd5b611542846114c2565b9250611550602085016114c2565b9150604084013590509250925092565b60008060408385031215611572578182fd5b61157b836114c2565b946020939093013593505050565b60006020828403121561159a578081fd5b5035919050565b600080604083850312156115b3578182fd5b82359150602083013580151581146115c9578182fd5b809150509250929050565b6001600160a01b0391909116815260200190565b901515815260200190565b6000602080835283518082850152825b8181101561161f57858101830151858201604001528201611603565b818111156116305783604083870101525b50601f01601f1916929092016040019392505050565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b6020808252602a908201527f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260408201526965666c656374696f6e7360b01b606082015260800190565b60208082526026908201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160408201526564647265737360d01b606082015260800190565b60208082526022908201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604082015261737360f01b606082015260800190565b6020808252601b908201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604082015260600190565b6020808252601b908201527f4163636f756e7420697320616c7265616479206578636c756465640000000000604082015260600190565b6020808252601f908201527f416d6f756e74206d757374206265206c657373207468616e20737570706c7900604082015260600190565b60208082526021908201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6040820152607760f81b606082015260800190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b60208082526029908201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206040820152687468616e207a65726f60b81b606082015260800190565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60208082526024908201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646040820152637265737360e01b606082015260800190565b6020808252602c908201527f4578636c75646564206164647265737365732063616e6e6f742063616c6c207460408201526b3434b990333ab731ba34b7b760a11b606082015260800190565b90815260200190565b60ff91909116815260200190565b600082198211156119be576119be611a6f565b500190565b6000826119de57634e487b7160e01b81526012600452602481fd5b500490565b60008160001904831182151516156119fd576119fd611a6f565b500290565b600082821015611a1457611a14611a6f565b500390565b600281046001821680611a2d57607f821691505b60208210811415611a4e57634e487b7160e01b600052602260045260246000fd5b50919050565b6000600019821415611a6857611a68611a6f565b5060010190565b634e487b7160e01b600052601160045260246000fdfe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa264697066735822122072225e01312743a49470beba70c7d1e32354a935956f86d373bd5c62317d4e2664736f6c63430008000033

Deployed Bytecode

0x608060405234801561001057600080fd5b506004361061014d5760003560e01c8063715018a6116100c3578063a9059cbb1161007c578063a9059cbb1461027e578063cba0e99614610291578063dd62ed3e146102a4578063f2cc0c18146102b7578063f2fde38b146102ca578063f84354f1146102dd5761014d565b8063715018a61461023657806384a3f5c01461023e5780638da5cb5b1461024657806393ea49831461025b57806395d89b4114610263578063a457c2d71461026b5761014d565b806323b872dd1161011557806323b872dd146101c25780632d838119146101d5578063313ce567146101e857806339509351146101fd5780634549b0391461021057806370a08231146102235761014d565b8063053ab1821461015257806306fdde0314610167578063095ea7b31461018557806313114a9d146101a557806318160ddd146101ba575b600080fd5b610165610160366004611589565b6102f0565b005b61016f6103b2565b60405161017c91906115f3565b60405180910390f35b610198610193366004611560565b610444565b60405161017c91906115e8565b6101ad610462565b60405161017c9190611994565b6101ad610468565b6101986101d0366004611525565b61047a565b6101ad6101e3366004611589565b610501565b6101f0610544565b60405161017c919061199d565b61019861020b366004611560565b61054d565b6101ad61021e3660046115a1565b61059b565b6101ad6102313660046114d9565b610602565b610165610664565b6101ad6106e3565b61024e6106e9565b60405161017c91906115d4565b6101ad6106f8565b61016f6106fe565b610198610279366004611560565b61070d565b61019861028c366004611560565b610775565b61019861029f3660046114d9565b610789565b6101ad6102b23660046114f3565b6107a7565b6101656102c53660046114d9565b6107d2565b6101656102d83660046114d9565b610900565b6101656102eb3660046114d9565b6109b6565b60006102fa610b81565b6001600160a01b03811660009081526004602052604090205490915060ff161561033f5760405162461bcd60e51b815260040161033690611948565b60405180910390fd5b600061034a83610b85565b505050506001600160a01b0383166000908152600160205260409020549091506103749082610bd1565b6001600160a01b03831660009081526001602052604090205560065461039a9082610bd1565b6006556007546103aa9084610c1a565b600755505050565b6060600880546103c190611a19565b80601f01602080910402602001604051908101604052809291908181526020018280546103ed90611a19565b801561043a5780601f1061040f5761010080835404028352916020019161043a565b820191906000526020600020905b81548152906001019060200180831161041d57829003601f168201915b5050505050905090565b6000610458610451610b81565b8484610c49565b5060015b92915050565b60075490565b6d04ee2d6d415b85acef810000000090565b6000610487848484610cfd565b6104f784610493610b81565b6104f285604051806060016040528060288152602001611a86602891396001600160a01b038a166000908152600360205260408120906104d1610b81565b6001600160a01b031681526020810191909152604001600020549190610ec2565b610c49565b5060019392505050565b60006006548211156105255760405162461bcd60e51b815260040161033690611689565b600061052f610efc565b905061053b8382610f1f565b9150505b919050565b600a5460ff1690565b600061045861055a610b81565b846104f2856003600061056b610b81565b6001600160a01b03908116825260208083019390935260409182016000908120918c168152925290205490610c1a565b60006d04ee2d6d415b85acef81000000008311156105cb5760405162461bcd60e51b8152600401610336906117c9565b816105e95760006105db84610b85565b5092945061045c9350505050565b60006105f484610b85565b5091945061045c9350505050565b6001600160a01b03811660009081526004602052604081205460ff161561064257506001600160a01b03811660009081526002602052604090205461053f565b6001600160a01b03821660009081526001602052604090205461045c90610501565b61066c610b81565b6000546001600160a01b039081169116146106995760405162461bcd60e51b815260040161033690611841565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b600b5481565b6000546001600160a01b031690565b600c5481565b6060600980546103c190611a19565b600061045861071a610b81565b846104f285604051806060016040528060258152602001611aae6025913960036000610744610b81565b6001600160a01b03908116825260208083019390935260409182016000908120918d16815292529020549190610ec2565b6000610458610782610b81565b8484610cfd565b6001600160a01b031660009081526004602052604090205460ff1690565b6001600160a01b03918216600090815260036020908152604080832093909416825291909152205490565b6107da610b81565b6000546001600160a01b039081169116146108075760405162461bcd60e51b815260040161033690611841565b6001600160a01b03811660009081526004602052604090205460ff16156108405760405162461bcd60e51b815260040161033690611792565b6001600160a01b0381166000908152600160205260409020541561089a576001600160a01b03811660009081526001602052604090205461088090610501565b6001600160a01b0382166000908152600260205260409020555b6001600160a01b03166000818152600460205260408120805460ff191660019081179091556005805491820181559091527f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db00180546001600160a01b0319169091179055565b610908610b81565b6000546001600160a01b039081169116146109355760405162461bcd60e51b815260040161033690611841565b6001600160a01b03811661095b5760405162461bcd60e51b8152600401610336906116d3565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6109be610b81565b6000546001600160a01b039081169116146109eb5760405162461bcd60e51b815260040161033690611841565b6001600160a01b03811660009081526004602052604090205460ff16610a235760405162461bcd60e51b815260040161033690611792565b60005b600554811015610b7d57816001600160a01b031660058281548110610a5b57634e487b7160e01b600052603260045260246000fd5b6000918252602090912001546001600160a01b03161415610b6b5760058054610a8690600190611a02565b81548110610aa457634e487b7160e01b600052603260045260246000fd5b600091825260209091200154600580546001600160a01b039092169183908110610ade57634e487b7160e01b600052603260045260246000fd5b600091825260208083209190910180546001600160a01b0319166001600160a01b039485161790559184168152600282526040808220829055600490925220805460ff191690556005805480610b4457634e487b7160e01b600052603160045260246000fd5b600082815260209020810160001990810180546001600160a01b0319169055019055610b7d565b80610b7581611a54565b915050610a26565b5050565b3390565b6000806000806000806000610b9988610f61565b915091506000610ba7610efc565b90506000806000610bb98c8686610f94565b919e909d50909b509599509397509395505050505050565b6000610c1383836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250610ec2565b9392505050565b600080610c2783856119ab565b905083811015610c135760405162461bcd60e51b81526004016103369061175b565b6001600160a01b038316610c6f5760405162461bcd60e51b815260040161033690611904565b6001600160a01b038216610c955760405162461bcd60e51b815260040161033690611719565b6001600160a01b0380841660008181526003602090815260408083209487168084529490915290819020849055517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92590610cf0908590611994565b60405180910390a3505050565b6001600160a01b038316610d235760405162461bcd60e51b8152600401610336906118bf565b6001600160a01b038216610d495760405162461bcd60e51b815260040161033690611646565b60008111610d695760405162461bcd60e51b815260040161033690611876565b6001600160a01b03831660009081526004602052604090205460ff168015610daa57506001600160a01b03821660009081526004602052604090205460ff16155b15610dbf57610dba838383610fd0565b610ebd565b6001600160a01b03831660009081526004602052604090205460ff16158015610e0057506001600160a01b03821660009081526004602052604090205460ff165b15610e1057610dba8383836110e7565b6001600160a01b03831660009081526004602052604090205460ff16158015610e5257506001600160a01b03821660009081526004602052604090205460ff16155b15610e6257610dba83838361118d565b6001600160a01b03831660009081526004602052604090205460ff168015610ea257506001600160a01b03821660009081526004602052604090205460ff165b15610eb257610dba8383836111ce565b610ebd83838361118d565b505050565b60008184841115610ee65760405162461bcd60e51b815260040161033691906115f3565b506000610ef38486611a02565b95945050505050565b6000806000610f0961123e565b9092509050610f188282610f1f565b9250505090565b6000610c1383836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061142b565b60008080610f7b6005610f75866064610f1f565b90611459565b90506000610f898583610bd1565b935090915050915091565b6000808080610fa38786611459565b90506000610fb18787611459565b90506000610fbf8383610bd1565b929992985090965090945050505050565b6000806000806000610fe186610b85565b6001600160a01b038d16600090815260026020526040902054949950929750909550935091506110119087610bd1565b6001600160a01b0389166000908152600260209081526040808320939093556001905220546110409086610bd1565b6001600160a01b03808a16600090815260016020526040808220939093559089168152205461106f9085610c1a565b6001600160a01b038816600090815260016020526040902055611092838261149e565b866001600160a01b0316886001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516110d59190611994565b60405180910390a35050505050505050565b60008060008060006110f886610b85565b6001600160a01b038d16600090815260016020526040902054949950929750909550935091506111289086610bd1565b6001600160a01b03808a16600090815260016020908152604080832094909455918a1681526002909152205461115e9083610c1a565b6001600160a01b03881660009081526002602090815260408083209390935560019052205461106f9085610c1a565b600080600080600061119e86610b85565b6001600160a01b038d16600090815260016020526040902054949950929750909550935091506110409086610bd1565b60008060008060006111df86610b85565b6001600160a01b038d166000908152600260205260409020549499509297509095509350915061120f9087610bd1565b6001600160a01b0389166000908152600260209081526040808320939093556001905220546111289086610bd1565b60065460009081906d04ee2d6d415b85acef8100000000825b6005548110156113e15782600160006005848154811061128757634e487b7160e01b600052603260045260246000fd5b60009182526020808320909101546001600160a01b03168352820192909252604001902054118061130057508160026000600584815481106112d957634e487b7160e01b600052603260045260246000fd5b60009182526020808320909101546001600160a01b03168352820192909252604001902054115b15611323576006546d04ee2d6d415b85acef810000000094509450505050611427565b611377600160006005848154811061134b57634e487b7160e01b600052603260045260246000fd5b60009182526020808320909101546001600160a01b031683528201929092526040019020548490610bd1565b92506113cd60026000600584815481106113a157634e487b7160e01b600052603260045260246000fd5b60009182526020808320909101546001600160a01b031683528201929092526040019020548390610bd1565b9150806113d981611a54565b915050611257565b506006546113fd906d04ee2d6d415b85acef8100000000610f1f565b821015611421576006546d04ee2d6d415b85acef8100000000935093505050611427565b90925090505b9091565b6000818361144c5760405162461bcd60e51b815260040161033691906115f3565b506000610ef384866119c3565b6000826114685750600061045c565b600061147483856119e3565b90508261148185836119c3565b14610c135760405162461bcd60e51b815260040161033690611800565b6006546114ab9083610bd1565b6006556007546114bb9082610c1a565b6007555050565b80356001600160a01b038116811461053f57600080fd5b6000602082840312156114ea578081fd5b610c13826114c2565b60008060408385031215611505578081fd5b61150e836114c2565b915061151c602084016114c2565b90509250929050565b600080600060608486031215611539578081fd5b611542846114c2565b9250611550602085016114c2565b9150604084013590509250925092565b60008060408385031215611572578182fd5b61157b836114c2565b946020939093013593505050565b60006020828403121561159a578081fd5b5035919050565b600080604083850312156115b3578182fd5b82359150602083013580151581146115c9578182fd5b809150509250929050565b6001600160a01b0391909116815260200190565b901515815260200190565b6000602080835283518082850152825b8181101561161f57858101830151858201604001528201611603565b818111156116305783604083870101525b50601f01601f1916929092016040019392505050565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b6020808252602a908201527f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260408201526965666c656374696f6e7360b01b606082015260800190565b60208082526026908201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160408201526564647265737360d01b606082015260800190565b60208082526022908201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604082015261737360f01b606082015260800190565b6020808252601b908201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604082015260600190565b6020808252601b908201527f4163636f756e7420697320616c7265616479206578636c756465640000000000604082015260600190565b6020808252601f908201527f416d6f756e74206d757374206265206c657373207468616e20737570706c7900604082015260600190565b60208082526021908201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6040820152607760f81b606082015260800190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b60208082526029908201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206040820152687468616e207a65726f60b81b606082015260800190565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60208082526024908201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646040820152637265737360e01b606082015260800190565b6020808252602c908201527f4578636c75646564206164647265737365732063616e6e6f742063616c6c207460408201526b3434b990333ab731ba34b7b760a11b606082015260800190565b90815260200190565b60ff91909116815260200190565b600082198211156119be576119be611a6f565b500190565b6000826119de57634e487b7160e01b81526012600452602481fd5b500490565b60008160001904831182151516156119fd576119fd611a6f565b500290565b600082821015611a1457611a14611a6f565b500390565b600281046001821680611a2d57607f821691505b60208210811415611a4e57634e487b7160e01b600052602260045260246000fd5b50919050565b6000600019821415611a6857611a68611a6f565b5060010190565b634e487b7160e01b600052601160045260246000fdfe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa264697066735822122072225e01312743a49470beba70c7d1e32354a935956f86d373bd5c62317d4e2664736f6c63430008000033

Deployed Bytecode Sourcemap

15590:10384:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18560:376;;;;;;:::i;:::-;;:::i;:::-;;16442:83;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17354:161;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;18465:87::-;;;:::i;:::-;;;;;;;:::i;16719:95::-;;;:::i;17523:313::-;;;;;;:::i;:::-;;:::i;19386:253::-;;;;;;:::i;:::-;;:::i;16628:83::-;;;:::i;:::-;;;;;;;:::i;17844:218::-;;;;;;:::i;:::-;;:::i;18944:434::-;;;;;;:::i;:::-;;:::i;16822:198::-;;;;;;:::i;:::-;;:::i;15032:148::-;;;:::i;25351:22::-;;;:::i;14390:79::-;;;:::i;:::-;;;;;;;:::i;25380:22::-;;;:::i;16533:87::-;;;:::i;18070:269::-;;;;;;:::i;:::-;;:::i;17028:167::-;;;;;;:::i;:::-;;:::i;18347:110::-;;;;;;:::i;:::-;;:::i;17203:143::-;;;;;;:::i;:::-;;:::i;19647:332::-;;;;;;:::i;:::-;;:::i;15335:244::-;;;;;;:::i;:::-;;:::i;19987:478::-;;;;;;:::i;:::-;;:::i;18560:376::-;18612:14;18629:12;:10;:12::i;:::-;-1:-1:-1;;;;;18661:19:0;;;;;;:11;:19;;;;;;18612:29;;-1:-1:-1;18661:19:0;;18660:20;18652:77;;;;-1:-1:-1;;;18652:77:0;;;;;;;:::i;:::-;;;;;;;;;18741:15;18764:19;18775:7;18764:10;:19::i;:::-;-1:-1:-1;;;;;;;;;18812:15:0;;;;;;:7;:15;;;;;;18740:43;;-1:-1:-1;18812:28:0;;18740:43;18812:19;:28::i;:::-;-1:-1:-1;;;;;18794:15:0;;;;;;:7;:15;;;;;:46;18861:7;;:20;;18873:7;18861:11;:20::i;:::-;18851:7;:30;18905:10;;:23;;18920:7;18905:14;:23::i;:::-;18892:10;:36;-1:-1:-1;;;18560:376:0:o;16442:83::-;16479:13;16512:5;16505:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16442:83;:::o;17354:161::-;17429:4;17446:39;17455:12;:10;:12::i;:::-;17469:7;17478:6;17446:8;:39::i;:::-;-1:-1:-1;17503:4:0;17354:161;;;;;:::o;18465:87::-;18534:10;;18465:87;:::o;16719:95::-;16061:26;16719:95;:::o;17523:313::-;17621:4;17638:36;17648:6;17656:9;17667:6;17638:9;:36::i;:::-;17685:121;17694:6;17702:12;:10;:12::i;:::-;17716:89;17754:6;17716:89;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;17716:19:0;;;;;;:11;:19;;;;;;17736:12;:10;:12::i;:::-;-1:-1:-1;;;;;17716:33:0;;;;;;;;;;;;-1:-1:-1;17716:33:0;;;:89;:37;:89::i;:::-;17685:8;:121::i;:::-;-1:-1:-1;17824:4:0;17523:313;;;;;:::o;19386:253::-;19452:7;19491;;19480;:18;;19472:73;;;;-1:-1:-1;;;19472:73:0;;;;;;;:::i;:::-;19556:19;19579:10;:8;:10::i;:::-;19556:33;-1:-1:-1;19607:24:0;:7;19556:33;19607:11;:24::i;:::-;19600:31;;;19386:253;;;;:::o;16628:83::-;16694:9;;;;16628:83;:::o;17844:218::-;17932:4;17949:83;17958:12;:10;:12::i;:::-;17972:7;17981:50;18020:10;17981:11;:25;17993:12;:10;:12::i;:::-;-1:-1:-1;;;;;17981:25:0;;;;;;;;;;;;;;;;;-1:-1:-1;17981:25:0;;;:34;;;;;;;;;;;:38;:50::i;18944:434::-;19034:7;16061:26;19062:7;:18;;19054:62;;;;-1:-1:-1;;;19054:62:0;;;;;;;:::i;:::-;19132:17;19127:244;;19167:15;19190:19;19201:7;19190:10;:19::i;:::-;-1:-1:-1;19166:43:0;;-1:-1:-1;19224:14:0;;-1:-1:-1;;;;19224:14:0;19127:244;19273:23;19303:19;19314:7;19303:10;:19::i;:::-;-1:-1:-1;19271:51:0;;-1:-1:-1;19337:22:0;;-1:-1:-1;;;;19337:22:0;16822:198;-1:-1:-1;;;;;16912:20:0;;16888:7;16912:20;;;:11;:20;;;;;;;;16908:49;;;-1:-1:-1;;;;;;16941:16:0;;;;;;:7;:16;;;;;;16934:23;;16908:49;-1:-1:-1;;;;;16995:16:0;;;;;;:7;:16;;;;;;16975:37;;:19;:37::i;15032:148::-;14612:12;:10;:12::i;:::-;14602:6;;-1:-1:-1;;;;;14602:6:0;;;:22;;;14594:67;;;;-1:-1:-1;;;14594:67:0;;;;;;;:::i;:::-;15139:1:::1;15123:6:::0;;15102:40:::1;::::0;-1:-1:-1;;;;;15123:6:0;;::::1;::::0;15102:40:::1;::::0;15139:1;;15102:40:::1;15170:1;15153:19:::0;;-1:-1:-1;;;;;;15153:19:0::1;::::0;;15032:148::o;25351:22::-;;;;:::o;14390:79::-;14428:7;14455:6;-1:-1:-1;;;;;14455:6:0;14390:79;:::o;25380:22::-;;;;:::o;16533:87::-;16572:13;16605:7;16598:14;;;;;:::i;18070:269::-;18163:4;18180:129;18189:12;:10;:12::i;:::-;18203:7;18212:96;18251:15;18212:96;;;;;;;;;;;;;;;;;:11;:25;18224:12;:10;:12::i;:::-;-1:-1:-1;;;;;18212:25:0;;;;;;;;;;;;;;;;;-1:-1:-1;18212:25:0;;;:34;;;;;;;;;;;:96;:38;:96::i;17028:167::-;17106:4;17123:42;17133:12;:10;:12::i;:::-;17147:9;17158:6;17123:9;:42::i;18347:110::-;-1:-1:-1;;;;;18429:20:0;18405:4;18429:20;;;:11;:20;;;;;;;;;18347:110::o;17203:143::-;-1:-1:-1;;;;;17311:18:0;;;17284:7;17311:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;17203:143::o;19647:332::-;14612:12;:10;:12::i;:::-;14602:6;;-1:-1:-1;;;;;14602:6:0;;;:22;;;14594:67;;;;-1:-1:-1;;;14594:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;19729:20:0;::::1;;::::0;;;:11:::1;:20;::::0;;;;;::::1;;19728:21;19720:61;;;;-1:-1:-1::0;;;19720:61:0::1;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;19795:16:0;::::1;19814:1;19795:16:::0;;;:7:::1;:16;::::0;;;;;:20;19792:108:::1;;-1:-1:-1::0;;;;;19871:16:0;::::1;;::::0;;;:7:::1;:16;::::0;;;;;19851:37:::1;::::0;:19:::1;:37::i;:::-;-1:-1:-1::0;;;;;19832:16:0;::::1;;::::0;;;:7:::1;:16;::::0;;;;:56;19792:108:::1;-1:-1:-1::0;;;;;19910:20:0::1;;::::0;;;:11:::1;:20;::::0;;;;:27;;-1:-1:-1;;19910:27:0::1;19933:4;19910:27:::0;;::::1;::::0;;;19948:9:::1;:23:::0;;;;::::1;::::0;;;;;;::::1;::::0;;-1:-1:-1;;;;;;19948:23:0::1;::::0;;::::1;::::0;;19647:332::o;15335:244::-;14612:12;:10;:12::i;:::-;14602:6;;-1:-1:-1;;;;;14602:6:0;;;:22;;;14594:67;;;;-1:-1:-1;;;14594:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;15424:22:0;::::1;15416:73;;;;-1:-1:-1::0;;;15416:73:0::1;;;;;;;:::i;:::-;15526:6;::::0;;15505:38:::1;::::0;-1:-1:-1;;;;;15505:38:0;;::::1;::::0;15526:6;::::1;::::0;15505:38:::1;::::0;::::1;15554:6;:17:::0;;-1:-1:-1;;;;;;15554:17:0::1;-1:-1:-1::0;;;;;15554:17:0;;;::::1;::::0;;;::::1;::::0;;15335:244::o;19987:478::-;14612:12;:10;:12::i;:::-;14602:6;;-1:-1:-1;;;;;14602:6:0;;;:22;;;14594:67;;;;-1:-1:-1;;;14594:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;20068:20:0;::::1;;::::0;;;:11:::1;:20;::::0;;;;;::::1;;20060:60;;;;-1:-1:-1::0;;;20060:60:0::1;;;;;;;:::i;:::-;20136:9;20131:327;20155:9;:16:::0;20151:20;::::1;20131:327;;;20213:7;-1:-1:-1::0;;;;;20197:23:0::1;:9;20207:1;20197:12;;;;;;-1:-1:-1::0;;;20197:12:0::1;;;;;;;;;;::::0;;;::::1;::::0;;;::::1;::::0;-1:-1:-1;;;;;20197:12:0::1;:23;20193:254;;;20256:9;20266:16:::0;;:20:::1;::::0;20285:1:::1;::::0;20266:20:::1;:::i;:::-;20256:31;;;;;;-1:-1:-1::0;;;20256:31:0::1;;;;;;;;;;::::0;;;::::1;::::0;;;::::1;::::0;20241:9:::1;:12:::0;;-1:-1:-1;;;;;20256:31:0;;::::1;::::0;20251:1;;20241:12;::::1;;;-1:-1:-1::0;;;20241:12:0::1;;;;;;;;;;::::0;;;::::1;::::0;;;;;;::::1;:46:::0;;-1:-1:-1;;;;;;20241:46:0::1;-1:-1:-1::0;;;;;20241:46:0;;::::1;;::::0;;20306:16;;::::1;::::0;;:7:::1;:16:::0;;;;;;:20;;;20345:11:::1;:20:::0;;;;:28;;-1:-1:-1;;20345:28:0::1;::::0;;20392:9:::1;:15:::0;;;::::1;;-1:-1:-1::0;;;20392:15:0::1;;;;;;;;;;::::0;;;::::1;::::0;;;;-1:-1:-1;;20392:15:0;;;;;-1:-1:-1;;;;;;20392:15:0::1;::::0;;;;;20426:5:::1;;20193:254;20173:3:::0;::::1;::::0;::::1;:::i;:::-;;;;20131:327;;;;19987:478:::0;:::o;102:98::-;182:10;102:98;:::o;24028:411::-;24087:7;24096;24105;24114;24123;24144:23;24169:12;24185:20;24197:7;24185:11;:20::i;:::-;24143:62;;;;24216:19;24239:10;:8;:10::i;:::-;24216:33;;24261:15;24278:23;24303:12;24319:39;24331:7;24340:4;24346:11;24319;:39::i;:::-;24260:98;;;;-1:-1:-1;24260:98:0;;-1:-1:-1;24409:15:0;;-1:-1:-1;24426:4:0;;-1:-1:-1;24028:411:0;;-1:-1:-1;;;;;;24028:411:0:o;3814:136::-;3872:7;3899:43;3903:1;3906;3899:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;3892:50;3814:136;-1:-1:-1;;;3814:136:0:o;3350:181::-;3408:7;;3440:5;3444:1;3440;:5;:::i;:::-;3428:17;;3469:1;3464;:6;;3456:46;;;;-1:-1:-1;;;3456:46:0;;;;;;;:::i;20473:337::-;-1:-1:-1;;;;;20566:19:0;;20558:68;;;;-1:-1:-1;;;20558:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;20645:21:0;;20637:68;;;;-1:-1:-1;;;20637:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;20718:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;;:36;;;20770:32;;;;;20748:6;;20770:32;:::i;:::-;;;;;;;;20473:337;;;:::o;20818:931::-;-1:-1:-1;;;;;20915:20:0;;20907:70;;;;-1:-1:-1;;;20907:70:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;20996:23:0;;20988:71;;;;-1:-1:-1;;;20988:71:0;;;;;;;:::i;:::-;21087:1;21078:6;:10;21070:64;;;;-1:-1:-1;;;21070:64:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;21149:19:0;;;;;;:11;:19;;;;;;;;:46;;;;-1:-1:-1;;;;;;21173:22:0;;;;;;:11;:22;;;;;;;;21172:23;21149:46;21145:597;;;21212:48;21234:6;21242:9;21253:6;21212:21;:48::i;:::-;21145:597;;;-1:-1:-1;;;;;21283:19:0;;;;;;:11;:19;;;;;;;;21282:20;:46;;;;-1:-1:-1;;;;;;21306:22:0;;;;;;:11;:22;;;;;;;;21282:46;21278:464;;;21345:46;21365:6;21373:9;21384:6;21345:19;:46::i;21278:464::-;-1:-1:-1;;;;;21414:19:0;;;;;;:11;:19;;;;;;;;21413:20;:47;;;;-1:-1:-1;;;;;;21438:22:0;;;;;;:11;:22;;;;;;;;21437:23;21413:47;21409:333;;;21477:44;21495:6;21503:9;21514:6;21477:17;:44::i;21409:333::-;-1:-1:-1;;;;;21543:19:0;;;;;;:11;:19;;;;;;;;:45;;;;-1:-1:-1;;;;;;21566:22:0;;;;;;:11;:22;;;;;;;;21543:45;21539:203;;;21605:48;21627:6;21635:9;21646:6;21605:21;:48::i;21539:203::-;21686:44;21704:6;21712:9;21723:6;21686:17;:44::i;:::-;20818:931;;;:::o;4253:192::-;4339:7;4375:12;4367:6;;;;4359:29;;;;-1:-1:-1;;;4359:29:0;;;;;;;;:::i;:::-;-1:-1:-1;4399:9:0;4411:5;4415:1;4411;:5;:::i;:::-;4399:17;4253:192;-1:-1:-1;;;;;4253:192:0:o;25182:163::-;25223:7;25244:15;25261;25280:19;:17;:19::i;:::-;25243:56;;-1:-1:-1;25243:56:0;-1:-1:-1;25317:20:0;25243:56;;25317:11;:20::i;:::-;25310:27;;;;25182:163;:::o;5651:132::-;5709:7;5736:39;5740:1;5743;5736:39;;;;;;;;;;;;;;;;;:3;:39::i;24447:385::-;24507:7;;;24640:23;24661:1;24640:16;:7;24652:3;24640:11;:16::i;:::-;:20;;:23::i;:::-;24633:30;;24740:23;24766:17;:7;24778:4;24766:11;:17::i;:::-;24740:43;-1:-1:-1;24819:4:0;;-1:-1:-1;;24447:385:0;;;:::o;24840:334::-;24935:7;;;;24991:24;:7;25003:11;24991;:24::i;:::-;24973:42;-1:-1:-1;25026:12:0;25041:21;:4;25050:11;25041:8;:21::i;:::-;25026:36;-1:-1:-1;25073:23:0;25099:17;:7;25026:36;25099:11;:17::i;:::-;25135:7;;;;-1:-1:-1;25161:4:0;;-1:-1:-1;24840:334:0;;-1:-1:-1;;;;;24840:334:0:o;22754:509::-;22857:15;22874:23;22899:12;22913:23;22938:12;22954:19;22965:7;22954:10;:19::i;:::-;-1:-1:-1;;;;;23002:15:0;;;;;;:7;:15;;;;;;22856:117;;-1:-1:-1;22856:117:0;;-1:-1:-1;22856:117:0;;-1:-1:-1;22856:117:0;-1:-1:-1;22856:117:0;-1:-1:-1;23002:28:0;;23022:7;23002:19;:28::i;:::-;-1:-1:-1;;;;;22984:15:0;;;;;;:7;:15;;;;;;;;:46;;;;23059:7;:15;;;;:28;;23079:7;23059:19;:28::i;:::-;-1:-1:-1;;;;;23041:15:0;;;;;;;:7;:15;;;;;;:46;;;;23119:18;;;;;;;:39;;23142:15;23119:22;:39::i;:::-;-1:-1:-1;;;;;23098:18:0;;;;;;:7;:18;;;;;:60;23172:23;23184:4;23190;23172:11;:23::i;:::-;23228:9;-1:-1:-1;;;;;23211:44:0;23220:6;-1:-1:-1;;;;;23211:44:0;;23239:15;23211:44;;;;;;:::i;:::-;;;;;;;;22754:509;;;;;;;;:::o;22217:529::-;22318:15;22335:23;22360:12;22374:23;22399:12;22415:19;22426:7;22415:10;:19::i;:::-;-1:-1:-1;;;;;22463:15:0;;;;;;:7;:15;;;;;;22317:117;;-1:-1:-1;22317:117:0;;-1:-1:-1;22317:117:0;;-1:-1:-1;22317:117:0;-1:-1:-1;22317:117:0;-1:-1:-1;22463:28:0;;22317:117;22463:19;:28::i;:::-;-1:-1:-1;;;;;22445:15:0;;;;;;;:7;:15;;;;;;;;:46;;;;22523:18;;;;;:7;:18;;;;;:39;;22546:15;22523:22;:39::i;:::-;-1:-1:-1;;;;;22502:18:0;;;;;;:7;:18;;;;;;;;:60;;;;22594:7;:18;;;;:39;;22617:15;22594:22;:39::i;21757:452::-;21856:15;21873:23;21898:12;21912:23;21937:12;21953:19;21964:7;21953:10;:19::i;:::-;-1:-1:-1;;;;;22001:15:0;;;;;;:7;:15;;;;;;21855:117;;-1:-1:-1;21855:117:0;;-1:-1:-1;21855:117:0;;-1:-1:-1;21855:117:0;-1:-1:-1;21855:117:0;-1:-1:-1;22001:28:0;;21855:117;22001:19;:28::i;23271:585::-;23374:15;23391:23;23416:12;23430:23;23455:12;23471:19;23482:7;23471:10;:19::i;:::-;-1:-1:-1;;;;;23519:15:0;;;;;;:7;:15;;;;;;23373:117;;-1:-1:-1;23373:117:0;;-1:-1:-1;23373:117:0;;-1:-1:-1;23373:117:0;-1:-1:-1;23373:117:0;-1:-1:-1;23519:28:0;;23539:7;23519:19;:28::i;:::-;-1:-1:-1;;;;;23501:15:0;;;;;;:7;:15;;;;;;;;:46;;;;23576:7;:15;;;;:28;;23596:7;23576:19;:28::i;25410:561::-;25507:7;;25460;;;;16061:26;25460:7;25567:289;25591:9;:16;25587:20;;25567:289;;;25657:7;25633;:21;25641:9;25651:1;25641:12;;;;;;-1:-1:-1;;;25641:12:0;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;25641:12:0;25633:21;;;;;;;;;;;;;:31;;:66;;;25692:7;25668;:21;25676:9;25686:1;25676:12;;;;;;-1:-1:-1;;;25676:12:0;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;25676:12:0;25668:21;;;;;;;;;;;;;:31;25633:66;25629:97;;;25709:7;;16061:26;25701:25;;;;;;;;;25629:97;25751:34;25763:7;:21;25771:9;25781:1;25771:12;;;;;;-1:-1:-1;;;25771:12:0;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;25771:12:0;25763:21;;;;;;;;;;;;;25751:7;;:11;:34::i;:::-;25741:44;;25810:34;25822:7;:21;25830:9;25840:1;25830:12;;;;;;-1:-1:-1;;;25830:12:0;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;25830:12:0;25822:21;;;;;;;;;;;;;25810:7;;:11;:34::i;:::-;25800:44;-1:-1:-1;25609:3:0;;;;:::i;:::-;;;;25567:289;;;-1:-1:-1;25880:7:0;;:20;;16061:26;25880:11;:20::i;:::-;25870:7;:30;25866:61;;;25910:7;;16061:26;25902:25;;;;;;;;25866:61;25946:7;;-1:-1:-1;25955:7:0;-1:-1:-1;25410:561:0;;;:::o;6279:278::-;6365:7;6400:12;6393:5;6385:28;;;;-1:-1:-1;;;6385:28:0;;;;;;;;:::i;:::-;-1:-1:-1;6424:9:0;6436:5;6440:1;6436;:5;:::i;4704:471::-;4762:7;5007:6;5003:47;;-1:-1:-1;5037:1:0;5030:8;;5003:47;5062:9;5074:5;5078:1;5074;:5;:::i;:::-;5062:17;-1:-1:-1;5107:1:0;5098:5;5102:1;5062:17;5098:5;:::i;:::-;:10;5090:56;;;;-1:-1:-1;;;5090:56:0;;;;;;;:::i;23864:156::-;23951:7;;:17;;23963:4;23951:11;:17::i;:::-;23941:7;:27;23992:10;;:20;;24007:4;23992:14;:20::i;:::-;23979:10;:33;-1:-1:-1;;23864:156:0:o;14:175:1:-;84:20;;-1:-1:-1;;;;;133:31:1;;123:42;;113:2;;179:1;176;169:12;194:198;;306:2;294:9;285:7;281:23;277:32;274:2;;;327:6;319;312:22;274:2;355:31;376:9;355:31;:::i;397:274::-;;;526:2;514:9;505:7;501:23;497:32;494:2;;;547:6;539;532:22;494:2;575:31;596:9;575:31;:::i;:::-;565:41;;625:40;661:2;650:9;646:18;625:40;:::i;:::-;615:50;;484:187;;;;;:::o;676:342::-;;;;822:2;810:9;801:7;797:23;793:32;790:2;;;843:6;835;828:22;790:2;871:31;892:9;871:31;:::i;:::-;861:41;;921:40;957:2;946:9;942:18;921:40;:::i;:::-;911:50;;1008:2;997:9;993:18;980:32;970:42;;780:238;;;;;:::o;1023:266::-;;;1152:2;1140:9;1131:7;1127:23;1123:32;1120:2;;;1173:6;1165;1158:22;1120:2;1201:31;1222:9;1201:31;:::i;:::-;1191:41;1279:2;1264:18;;;;1251:32;;-1:-1:-1;;;1110:179:1:o;1294:190::-;;1406:2;1394:9;1385:7;1381:23;1377:32;1374:2;;;1427:6;1419;1412:22;1374:2;-1:-1:-1;1455:23:1;;1364:120;-1:-1:-1;1364:120:1:o;1489:361::-;;;1615:2;1603:9;1594:7;1590:23;1586:32;1583:2;;;1636:6;1628;1621:22;1583:2;1677:9;1664:23;1654:33;;1737:2;1726:9;1722:18;1709:32;1784:5;1777:13;1770:21;1763:5;1760:32;1750:2;;1811:6;1803;1796:22;1750:2;1839:5;1829:15;;;1573:277;;;;;:::o;1855:203::-;-1:-1:-1;;;;;2019:32:1;;;;2001:51;;1989:2;1974:18;;1956:102::o;2063:187::-;2228:14;;2221:22;2203:41;;2191:2;2176:18;;2158:92::o;2255:603::-;;2396:2;2425;2414:9;2407:21;2457:6;2451:13;2500:6;2495:2;2484:9;2480:18;2473:34;2525:4;2538:140;2552:6;2549:1;2546:13;2538:140;;;2647:14;;;2643:23;;2637:30;2613:17;;;2632:2;2609:26;2602:66;2567:10;;2538:140;;;2696:6;2693:1;2690:13;2687:2;;;2766:4;2761:2;2752:6;2741:9;2737:22;2733:31;2726:45;2687:2;-1:-1:-1;2842:2:1;2821:15;-1:-1:-1;;2817:29:1;2802:45;;;;2849:2;2798:54;;2376:482;-1:-1:-1;;;2376:482:1:o;2863:399::-;3065:2;3047:21;;;3104:2;3084:18;;;3077:30;3143:34;3138:2;3123:18;;3116:62;-1:-1:-1;;;3209:2:1;3194:18;;3187:33;3252:3;3237:19;;3037:225::o;3267:406::-;3469:2;3451:21;;;3508:2;3488:18;;;3481:30;3547:34;3542:2;3527:18;;3520:62;-1:-1:-1;;;3613:2:1;3598:18;;3591:40;3663:3;3648:19;;3441:232::o;3678:402::-;3880:2;3862:21;;;3919:2;3899:18;;;3892:30;3958:34;3953:2;3938:18;;3931:62;-1:-1:-1;;;4024:2:1;4009:18;;4002:36;4070:3;4055:19;;3852:228::o;4085:398::-;4287:2;4269:21;;;4326:2;4306:18;;;4299:30;4365:34;4360:2;4345:18;;4338:62;-1:-1:-1;;;4431:2:1;4416:18;;4409:32;4473:3;4458:19;;4259:224::o;4488:351::-;4690:2;4672:21;;;4729:2;4709:18;;;4702:30;4768:29;4763:2;4748:18;;4741:57;4830:2;4815:18;;4662:177::o;4844:351::-;5046:2;5028:21;;;5085:2;5065:18;;;5058:30;5124:29;5119:2;5104:18;;5097:57;5186:2;5171:18;;5018:177::o;5200:355::-;5402:2;5384:21;;;5441:2;5421:18;;;5414:30;5480:33;5475:2;5460:18;;5453:61;5546:2;5531:18;;5374:181::o;5560:397::-;5762:2;5744:21;;;5801:2;5781:18;;;5774:30;5840:34;5835:2;5820:18;;5813:62;-1:-1:-1;;;5906:2:1;5891:18;;5884:31;5947:3;5932:19;;5734:223::o;5962:356::-;6164:2;6146:21;;;6183:18;;;6176:30;6242:34;6237:2;6222:18;;6215:62;6309:2;6294:18;;6136:182::o;6323:405::-;6525:2;6507:21;;;6564:2;6544:18;;;6537:30;6603:34;6598:2;6583:18;;6576:62;-1:-1:-1;;;6669:2:1;6654:18;;6647:39;6718:3;6703:19;;6497:231::o;6733:401::-;6935:2;6917:21;;;6974:2;6954:18;;;6947:30;7013:34;7008:2;6993:18;;6986:62;-1:-1:-1;;;7079:2:1;7064:18;;7057:35;7124:3;7109:19;;6907:227::o;7139:400::-;7341:2;7323:21;;;7380:2;7360:18;;;7353:30;7419:34;7414:2;7399:18;;7392:62;-1:-1:-1;;;7485:2:1;7470:18;;7463:34;7529:3;7514:19;;7313:226::o;7544:408::-;7746:2;7728:21;;;7785:2;7765:18;;;7758:30;7824:34;7819:2;7804:18;;7797:62;-1:-1:-1;;;7890:2:1;7875:18;;7868:42;7942:3;7927:19;;7718:234::o;7957:177::-;8103:25;;;8091:2;8076:18;;8058:76::o;8139:184::-;8311:4;8299:17;;;;8281:36;;8269:2;8254:18;;8236:87::o;8328:128::-;;8399:1;8395:6;8392:1;8389:13;8386:2;;;8405:18;;:::i;:::-;-1:-1:-1;8441:9:1;;8376:80::o;8461:217::-;;8527:1;8517:2;;-1:-1:-1;;;8552:31:1;;8606:4;8603:1;8596:15;8634:4;8559:1;8624:15;8517:2;-1:-1:-1;8663:9:1;;8507:171::o;8683:168::-;;8789:1;8785;8781:6;8777:14;8774:1;8771:21;8766:1;8759:9;8752:17;8748:45;8745:2;;;8796:18;;:::i;:::-;-1:-1:-1;8836:9:1;;8735:116::o;8856:125::-;;8924:1;8921;8918:8;8915:2;;;8929:18;;:::i;:::-;-1:-1:-1;8966:9:1;;8905:76::o;8986:380::-;9071:1;9061:12;;9118:1;9108:12;;;9129:2;;9183:4;9175:6;9171:17;9161:27;;9129:2;9236;9228:6;9225:14;9205:18;9202:38;9199:2;;;9282:10;9277:3;9273:20;9270:1;9263:31;9317:4;9314:1;9307:15;9345:4;9342:1;9335:15;9199:2;;9041:325;;;:::o;9371:135::-;;-1:-1:-1;;9431:17:1;;9428:2;;;9451:18;;:::i;:::-;-1:-1:-1;9498:1:1;9487:13;;9418:88::o;9511:127::-;9572:10;9567:3;9563:20;9560:1;9553:31;9603:4;9600:1;9593:15;9627:4;9624:1;9617:15

Swarm Source

ipfs://72225e01312743a49470beba70c7d1e32354a935956f86d373bd5c62317d4e26

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

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

OVERVIEW

$SOGE is a revolutionary & deflationary foundational token that supports the development and implementation of a NFT platform for the space community.

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.