Contract 0xfdCcf6D49A29f435E509DFFAAFDecB0ADD93f8C0

Txn Hash Method
Block
From
To
Value [Txn Fee]
0x092de5d75657d114c0b8bf1b57f834461aae2a5e3e7d56f09e88c912fbeeb955Execute166443642022-06-28 21:39:06337 days 22 hrs ago0xf5f08ba7f46e2a86b5ef3bfd56c2097c9f4276d7 IN  Snowball: Governance0 AVAX0.0076249336 26.2
0x57bf9a475397744dbed5cab042761a3daa1d7920adb5e1d07af1a2cee7beeecaExecute166443612022-06-28 21:39:00337 days 22 hrs ago0xf5f08ba7f46e2a86b5ef3bfd56c2097c9f4276d7 IN  Snowball: Governance0 AVAX0.0079085748 26.2
0xa18989df4101e2ac1c0c9343670dd50d4060cb214d29082a86fe0345339c62e1Vote161177352022-06-16 17:32:15350 days 2 hrs ago0xbe4feae32210f682a41e1c41e3eaf4f8204cd29e IN  Snowball: Governance0 AVAX0.0025759325 26.5
0x33b5f92142fc64c67169872a3d2740f503184e448f17afc466d065d5e24d8a28Vote161177212022-06-16 17:31:49350 days 2 hrs ago0xbe4feae32210f682a41e1c41e3eaf4f8204cd29e IN  Snowball: Governance0 AVAX0.0025759325 26.5
0xd5dcae426d1ec8448ae80d08afe2735d5355e1414fea759a071a97edf6405490Vote160768052022-06-15 18:59:55351 days 1 hr ago0x6f6fa54d4c680aa40077608592d59dc1a306baf6 IN  Snowball: Governance0 AVAX0.003402175 35
0x126c16c5a4d705c828deacbc1f5c02af094cedc2fa404397f141ddb68ae0ef74Vote160510202022-06-15 5:01:22351 days 15 hrs ago0xa558139e7ed8e2926ca0abe3c84c9506155e7092 IN  Snowball: Governance0 AVAX0.00243012525
0xea39b37b39808c4918cf3c2296a6cccc9a9a03f0726a66d6bc362cb97c0c0cdcVote160283012022-06-14 16:25:40352 days 3 hrs ago0xac9be1372ab5fc54cdf4dd2afe7a678e94706e82 IN  Snowball: Governance0 AVAX0.0025759325 26.5
0xa8ca39825fbee11a27ae21afbe0c50565519fb2c5b2da13a5f269cc8e9e73cf6Vote160282932022-06-14 16:25:24352 days 3 hrs ago0xac9be1372ab5fc54cdf4dd2afe7a678e94706e82 IN  Snowball: Governance0 AVAX0.0025759325 26.5
0x25d8bd882234a9f193d68d17e877e1070d5fedc22ed9f69640ffb82940a188b2Vote160198712022-06-14 11:50:15352 days 8 hrs ago0x483251e8ff51c72078ae97885a203a8e23fd9522 IN  Snowball: Governance0 AVAX0.00267527601 27.522000008
0x458eabc596702826041473f2d6fd24ef9e6ae7c4074b049487f3e7913a450984Vote160072142022-06-14 4:54:32352 days 15 hrs ago0xdd426f2650b357cc337a755debbce82e51917d65 IN  Snowball: Governance0 AVAX0.0025759325 26.5
0xcb79cb4a1c4252f4a29411f8c637da80c2a9fb77114bbad87975f8ac8035ea7eVote160071892022-06-14 4:53:42352 days 15 hrs ago0xdd426f2650b357cc337a755debbce82e51917d65 IN  Snowball: Governance0 AVAX0.002613045369 26.8818
0xce5ee8bb28539ce69120dc0c0677b9de1038f819b87ff8d223b1e1cffa7cb8e6Vote160071512022-06-14 4:52:27352 days 15 hrs ago0xea4ddc1921a322dae69458920e9c6a61d0a4f7aa IN  Snowball: Governance0 AVAX0.002537050526.1
0x6f265252fc861bd7d770d97eae84d69ac9326126b5cf2e95ba6c432e4437507aVote160071352022-06-14 4:51:55352 days 15 hrs ago0xea4ddc1921a322dae69458920e9c6a61d0a4f7aa IN  Snowball: Governance0 AVAX0.002537050526.1
0x262e5e54b23cb2b972d5801adf239d1f500062d0f1c230519b22b46f5541c2b4Vote160069282022-06-14 4:45:08352 days 15 hrs ago0xf5f08ba7f46e2a86b5ef3bfd56c2097c9f4276d7 IN  Snowball: Governance0 AVAX0.002546771 26.2
0x795c194317c7a39e10e2c6def3c075f9e7c5a8bde6cc704f1a78baf0edd929aeVote160069202022-06-14 4:44:52352 days 15 hrs ago0x6f6fa54d4c680aa40077608592d59dc1a306baf6 IN  Snowball: Governance0 AVAX0.002994791 26.2
0xd67e081dabadbc531c42e3644857acdc241b6f3852bda17e56055e77df1faa31Propose160068972022-06-14 4:44:06352 days 15 hrs ago0x6f6fa54d4c680aa40077608592d59dc1a306baf6 IN  Snowball: Governance0 AVAX0.0131591072 26.2
0xe51fa9f9bdf1241943de62d1b6e6716e941ac6d6d7cb95398e3ee9006d4aac90Vote160061262022-06-14 4:18:28352 days 15 hrs ago0xf5f08ba7f46e2a86b5ef3bfd56c2097c9f4276d7 IN  Snowball: Governance0 AVAX0.002994791 26.2
0xe979df7b9eff35f3dce6076102b3434963c42d86ef023b2c82b7a2c391f87bbdPropose160060612022-06-14 4:16:24352 days 15 hrs ago0xf5f08ba7f46e2a86b5ef3bfd56c2097c9f4276d7 IN  Snowball: Governance0 AVAX0.0264370052 26.2
0x0ec60f5694355feba28611b34e6e5816fcee38b064bac02e5142cf6791e26a34Execute141861772022-05-02 17:42:10395 days 2 hrs ago0xf5f08ba7f46e2a86b5ef3bfd56c2097c9f4276d7 IN  Snowball: Governance0 AVAX0.007159462947 93.696757628
0x4b1e210fc28da24c984f99b9e1f360d5d29ec0523d8c434d4d0d4e85ee50d0fcExecute141861452022-05-02 17:41:04395 days 2 hrs ago0xf5f08ba7f46e2a86b5ef3bfd56c2097c9f4276d7 IN  Snowball: Governance0 AVAX0.006925221053 93.696757628
0x3278bb3feff75a5a8f4e102ef5342b2ddf15627d616b3ef9d86f9177370a78f9Vote141021332022-04-30 17:48:16397 days 2 hrs ago0xd96715347688cd58d9075df7199c0e04e7dff234 IN  Snowball: Governance0 AVAX0.006250956116 64.306940139
0x872414f68fb53ace53fd6c1e3dc64b193c3c25fae06fc1022522286adae58af0Vote140671562022-04-29 21:48:18397 days 22 hrs ago0x6e9c24e6c635dcb588236c0e1ff62064fbdd6887 IN  Snowball: Governance0 AVAX0.002806418537 28.871133563
0x8788fb0ce16d7956f8b719d3f1a8db24dfcc5540e71be8c72fd8cc8f1d065a95Vote140606832022-04-29 18:06:36398 days 2 hrs ago0x98625957c6b96eeecd040e5bd26bd42100d124b2 IN  Snowball: Governance0 AVAX0.004377637164 45.035102766
0x0ff78d79f1954ce433b2a0d6d7466952cdba902bdcbb140491e165e79eda6f8bVote140314232022-04-29 1:14:48398 days 19 hrs ago0x85af40cf273ee61eafc35722100fdbb738ebe2be IN  Snowball: Governance0 AVAX0.002758780586 28.381056395
0xaf649e71e9eecd12f0bf3fb5127d3ef72ebe2436edc417035eab63a1ef3a0482Vote140313372022-04-29 1:11:35398 days 19 hrs ago0x0860a74847ec4f3e1dc0cfbab41013eb90f69654 IN  Snowball: Governance0 AVAX0.002652253974 27.285159965
[ Download CSV Export 
Parent Txn Hash Block From To Value
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
Governance

Compiler Version
v0.8.4+commit.c7e474f2

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at snowtrace.io on 2021-11-05
*/

// Sources flattened with hardhat v2.3.0 https://hardhat.org

// File contracts/interface/IxSNOB.sol

pragma solidity 0.8.4;

interface IxSNOB {
  function balanceOf(address addr) external view returns (uint256);
}


// File contracts/DummyXSNOB.sol

pragma solidity 0.8.4;

contract DummyXSNOB is IxSNOB {
    mapping (address => uint256) private _balances;

    uint256 private _totalSupply;

    string private _name;
    string private _symbol;

    /**
     * @dev Sets the values for {name} and {symbol}.
     *
     * All two of these values are immutable: they can only be set once during
     * construction.
     */
    constructor () {
        _name = "Staked SNOB";
        _symbol = "xSNOB";
    }

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

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

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

    /**
     * @dev For ease of testing xSNOB.
     */
    function balanceOf(address account) public view virtual override returns (uint256) {
        return _balances[account];
    }
}


// File @openzeppelin/contracts/utils/[email protected]

pragma solidity ^0.8.0;

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

        uint256 size;
        // solhint-disable-next-line no-inline-assembly
        assembly { size := extcodesize(account) }
        return size > 0;
    }

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

        // 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");
        require(isContract(target), "Address: call to non-contract");

        // solhint-disable-next-line avoid-low-level-calls
        (bool success, bytes memory returndata) = target.call{ value: value }(data);
        return _verifyCallResult(success, returndata, errorMessage);
    }

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

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

        // solhint-disable-next-line avoid-low-level-calls
        (bool success, bytes memory returndata) = target.staticcall(data);
        return _verifyCallResult(success, returndata, errorMessage);
    }

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

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

        // solhint-disable-next-line avoid-low-level-calls
        (bool success, bytes memory returndata) = target.delegatecall(data);
        return _verifyCallResult(success, returndata, errorMessage);
    }

    function _verifyCallResult(bool success, bytes memory returndata, string memory errorMessage) private pure returns(bytes memory) {
        if (success) {
            return returndata;
        } else {
            // Look for revert reason and bubble it up if present
            if (returndata.length > 0) {
                // The easiest way to bubble the revert reason is using memory via assembly

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


// File @openzeppelin/contracts/utils/math/[email protected]

pragma solidity ^0.8.0;

// CAUTION
// This version of SafeMath should only be used with Solidity 0.8 or later,
// because it relies on the compiler's built in overflow checks.

/**
 * @dev Wrappers over Solidity's arithmetic operations.
 *
 * NOTE: `SafeMath` is no longer needed starting with Solidity 0.8. The compiler
 * now has built in overflow checking.
 */
library SafeMath {
    /**
     * @dev Returns the addition of two unsigned integers, with an overflow flag.
     *
     * _Available since v3.4._
     */
    function tryAdd(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            uint256 c = a + b;
            if (c < a) return (false, 0);
            return (true, c);
        }
    }

    /**
     * @dev Returns the substraction of two unsigned integers, with an overflow flag.
     *
     * _Available since v3.4._
     */
    function trySub(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            if (b > a) return (false, 0);
            return (true, a - b);
        }
    }

    /**
     * @dev Returns the multiplication of two unsigned integers, with an overflow flag.
     *
     * _Available since v3.4._
     */
    function tryMul(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            // 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 (true, 0);
            uint256 c = a * b;
            if (c / a != b) return (false, 0);
            return (true, c);
        }
    }

    /**
     * @dev Returns the division of two unsigned integers, with a division by zero flag.
     *
     * _Available since v3.4._
     */
    function tryDiv(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            if (b == 0) return (false, 0);
            return (true, a / b);
        }
    }

    /**
     * @dev Returns the remainder of dividing two unsigned integers, with a division by zero flag.
     *
     * _Available since v3.4._
     */
    function tryMod(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            if (b == 0) return (false, 0);
            return (true, a % b);
        }
    }

    /**
     * @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) {
        return a + b;
    }

    /**
     * @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 a - b;
    }

    /**
     * @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) {
        return a * b;
    }

    /**
     * @dev Returns the integer division of two unsigned integers, reverting on
     * division by zero. The result is rounded towards zero.
     *
     * Counterpart to Solidity's `/` operator.
     *
     * Requirements:
     *
     * - The divisor cannot be zero.
     */
    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return a / b;
    }

    /**
     * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),
     * reverting 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 a % b;
    }

    /**
     * @dev Returns the subtraction of two unsigned integers, reverting with custom message on
     * overflow (when the result is negative).
     *
     * CAUTION: This function is deprecated because it requires allocating memory for the error
     * message unnecessarily. For custom revert reasons use {trySub}.
     *
     * Counterpart to Solidity's `-` operator.
     *
     * Requirements:
     *
     * - Subtraction cannot overflow.
     */
    function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        unchecked {
            require(b <= a, errorMessage);
            return a - b;
        }
    }

    /**
     * @dev Returns the integer division of two unsigned integers, reverting with custom message on
     * division by zero. The result is rounded towards 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).
     *
     * 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) {
        unchecked {
            require(b > 0, errorMessage);
            return a / b;
        }
    }

    /**
     * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),
     * reverting with custom message when dividing by zero.
     *
     * CAUTION: This function is deprecated because it requires allocating memory for the error
     * message unnecessarily. For custom revert reasons use {tryMod}.
     *
     * 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) {
        unchecked {
            require(b > 0, errorMessage);
            return a % b;
        }
    }
}


// File @openzeppelin/contracts/security/[email protected]

pragma solidity ^0.8.0;

/**
 * @dev Contract module that helps prevent reentrant calls to a function.
 *
 * Inheriting from `ReentrancyGuard` will make the {nonReentrant} modifier
 * available, which can be applied to functions to make sure there are no nested
 * (reentrant) calls to them.
 *
 * Note that because there is a single `nonReentrant` guard, functions marked as
 * `nonReentrant` may not call one another. This can be worked around by making
 * those functions `private`, and then adding `external` `nonReentrant` entry
 * points to them.
 *
 * TIP: If you would like to learn more about reentrancy and alternative ways
 * to protect against it, check out our blog post
 * https://blog.openzeppelin.com/reentrancy-after-istanbul/[Reentrancy After Istanbul].
 */
abstract contract ReentrancyGuard {
    // Booleans are more expensive than uint256 or any type that takes up a full
    // word because each write operation emits an extra SLOAD to first read the
    // slot's contents, replace the bits taken up by the boolean, and then write
    // back. This is the compiler's defense against contract upgrades and
    // pointer aliasing, and it cannot be disabled.

    // The values being non-zero value makes deployment a bit more expensive,
    // but in exchange the refund on every call to nonReentrant will be lower in
    // amount. Since refunds are capped to a percentage of the total
    // transaction's gas, it is best to keep them low in cases like this one, to
    // increase the likelihood of the full refund coming into effect.
    uint256 private constant _NOT_ENTERED = 1;
    uint256 private constant _ENTERED = 2;

    uint256 private _status;

    constructor () {
        _status = _NOT_ENTERED;
    }

    /**
     * @dev Prevents a contract from calling itself, directly or indirectly.
     * Calling a `nonReentrant` function from another `nonReentrant`
     * function is not supported. It is possible to prevent this from happening
     * by making the `nonReentrant` function external, and make it call a
     * `private` function that does the actual work.
     */
    modifier nonReentrant() {
        // On the first call to nonReentrant, _notEntered will be true
        require(_status != _ENTERED, "ReentrancyGuard: reentrant call");

        // Any calls to nonReentrant after this point will fail
        _status = _ENTERED;

        _;

        // By storing the original value once again, a refund is triggered (see
        // https://eips.ethereum.org/EIPS/eip-2200)
        _status = _NOT_ENTERED;
    }
}


// File contracts/Governance.sol

pragma solidity 0.8.4;

/// SPDX-License-Identifier: MIT
contract Governance is ReentrancyGuard {
    using SafeMath for uint256;

    /// @notice Lower bound for the voting period
    uint256 public minimumVotingPeriod = 3 days;
    uint256 public constant VOTING_PERIOD_MINIMUM = 1 days;
    uint256 public constant VOTING_PERIOD_MAXIMUM = 30 days;

    /// @notice Seconds since the end of the voting period before the proposal can be executed
    uint256 public executionDelay = 24 hours;
    uint256 public constant EXECUTION_DELAY_MINIMUM = 30 seconds;
    uint256 public constant EXECUTION_DELAY_MAXIMUM = 30 days;

    /// @notice Seconds since the proposal could be executed until it is considered expired
    uint256 public constant EXPIRATION_PERIOD = 14 days;

    /// @notice The required minimum number of votes in support of a proposal for it to succeed
    uint256 public quorumVotes = 300_000e18;
    uint256 public constant QUORUM_VOTES_MINIMUM = 100_000e18;
    uint256 public constant QUORUM_VOTES_MAXIMUM = 18_000_000e18;

    /// @notice The minimum number of votes required for an account to create a proposal
    uint256 public proposalThreshold = 100_000e18;
    uint256 public constant PROPOSAL_THRESHOLD_MINIMUM = 50_000e18;
    uint256 public constant PROPOSAL_THRESHOLD_MAXIMUM = 10_000_000e18;

    /// @notice The total number of proposals
    uint256 public proposalCount;

    /// @notice The record of all proposals ever proposed
    mapping(uint256 => Proposal) public proposals;
    mapping(uint256 => ProposalExecutionContext) public proposalExecutionContexts;
    mapping(uint256 => mapping(address => Receipt)) public receipts;
    mapping(address => uint256) public lastProposalByAddress;

    /// @notice Non-tradeable xSNOB used to represent votes
    IxSNOB public xSNOB;

    struct Proposal {
        string title;
        string metadata;
        address proposer;
        address executor;
        uint256 startTime;
        uint256 votingPeriod;
        uint256 quorumVotes;
        uint256 executionDelay;
        uint256 forVotes;
        uint256 againstVotes;
    }

    struct ProposalExecutionContext {
        address target;
        uint256 value;
        bytes data;
    }

    struct Receipt {
        bool hasVoted;
        bool support;
        uint256 votes;
    }

    enum ProposalState {
        Active,
        Defeated,
        PendingExecution,
        ReadyForExecution,
        Executed,
        Expired
    }

    event NewVote(
        uint256 proposalId,
        address voter,
        bool support,
        uint256 votes
    );
    event ProposalCreated(uint256 proposalId, address proposer, string title);
    event ProposalExecuted(uint256 proposalId, address executor);
    event MinimumVotingPeriodChanged(uint256 newMinimumVotingPeriod);
    event ExecutionDelayChanged(uint256 newExecutionDelay);
    event QuorumVotesChanges(uint256 newQuorumVotes);
    event ProposalThresholdChanged(uint256 newProposalThreshold);

    /// @dev This token must not be tradeable
    constructor(address _xSNOB) {
        xSNOB = IxSNOB(_xSNOB);
    }

    modifier onlyGovernor() {
        require(
            msg.sender == address(this),
            "Governance: insufficient privileges"
        );
        _;
    }

    function state(uint256 _proposalId) public view returns (ProposalState) {
        require(
            _proposalId <= proposalCount && _proposalId != 0,
            "Governance::state: invalid proposal id"
        );

        Proposal storage proposal = proposals[_proposalId];

        if (block.timestamp <= proposal.startTime.add(proposal.votingPeriod)) {
            return ProposalState.Active;
        } else if (proposal.executor != address(0)) {
            return ProposalState.Executed;
        } else if (proposal.forVotes <= proposal.againstVotes || proposal.forVotes < proposal.quorumVotes) {
            return ProposalState.Defeated;
        } else if (block.timestamp < proposal.startTime.add(proposal.votingPeriod).add(proposal.executionDelay)) {
            return ProposalState.PendingExecution;
        } else if (block.timestamp < proposal.startTime.add(proposal.votingPeriod).add(proposal.executionDelay).add(EXPIRATION_PERIOD)) {
            return ProposalState.ReadyForExecution;
        } else {
            return ProposalState.Expired;
        }
    }

    function getReceipt(uint256 _proposalId, address _voter) public view returns (Receipt memory) {
        return receipts[_proposalId][_voter];
    }

    function propose(
        string calldata _title,
        string calldata _metadata,
        uint256 _votingPeriod,
        address _target,
        uint256 _value,
        bytes memory _data
    ) public {
        require(
            _votingPeriod >= minimumVotingPeriod,
            "Governance::propose: voting period too short"
        );

        require(
            _votingPeriod <= VOTING_PERIOD_MAXIMUM,
            "Governance::propose: voting period too long"
        );

        uint256 lastProposalId = lastProposalByAddress[msg.sender];

        if (lastProposalId > 0) {
            ProposalState proposalState = state(lastProposalId);
            require(
                proposalState == ProposalState.Executed ||
                proposalState == ProposalState.Defeated ||
                proposalState == ProposalState.Expired,
                "Governance::propose: proposer already has a proposal in progress"
            );
        }

        uint256 votes = xSNOB.balanceOf(msg.sender);

        require(
            votes > proposalThreshold,
            "Governance::propose: proposer votes below proposal threshold"
        );

        proposalCount++;

        Proposal memory newProposal = Proposal({
            title: _title,
            metadata: _metadata,
            proposer: msg.sender,
            executor: address(0),
            startTime: block.timestamp,
            votingPeriod: _votingPeriod,
            quorumVotes: quorumVotes,
            executionDelay: executionDelay,
            forVotes: 0,
            againstVotes: 0
        });

        proposals[proposalCount] = newProposal;
        lastProposalByAddress[msg.sender] = proposalCount;

        ProposalExecutionContext memory newProposalExecutionContext = ProposalExecutionContext({
            target: _target,
            value: _value,
            data: _data
        });

        proposalExecutionContexts[proposalCount] = newProposalExecutionContext;

        emit ProposalCreated(proposalCount, newProposal.proposer, newProposal.title);
    }

    function vote(uint256 _proposalId, bool _support) public {
        require(
            state(_proposalId) == ProposalState.Active,
            "Governance::vote: voting is closed"
        );

        Proposal storage proposal = proposals[_proposalId];
        Receipt storage receipt = receipts[_proposalId][msg.sender];

        uint256 votes = xSNOB.balanceOf(msg.sender);

        if (receipt.hasVoted) {
            if (receipt.support) {
                proposal.forVotes = proposal.forVotes.sub(receipt.votes);
            } else {
                proposal.againstVotes = proposal.againstVotes.sub(receipt.votes);
            }
        }

        if (_support) {
            proposal.forVotes = proposal.forVotes.add(votes);
        } else {
            proposal.againstVotes = proposal.againstVotes.add(votes);
        }

        receipt.hasVoted = true;
        receipt.support = _support;
        receipt.votes = votes;

        emit NewVote(_proposalId, msg.sender, _support, votes);
    }

    function execute(uint256 _proposalId) public payable nonReentrant returns (bytes memory) {
        require(
            state(_proposalId) == ProposalState.ReadyForExecution,
            "Governance::execute: cannot be executed"
        );

        Proposal storage proposal = proposals[_proposalId];

        ProposalExecutionContext storage proposalExecutionContext = proposalExecutionContexts[_proposalId];

        (bool success, bytes memory returnData) = proposalExecutionContext.target.call{value: proposalExecutionContext.value}(proposalExecutionContext.data);
        require(
            success,
            "Governance::execute: transaction execution reverted."
        );
        proposal.executor = msg.sender;

        emit ProposalExecuted(_proposalId, proposal.executor);

        return returnData;
    }

    // Setters

    function setMinimumVotingPeriod(uint256 _seconds) public onlyGovernor {
        require(
            _seconds >= VOTING_PERIOD_MINIMUM,
            "Governance::setMinimumVotingPeriod: TOO_SMALL"
        );
        require(
            _seconds <= VOTING_PERIOD_MAXIMUM,
            "Governance::setMinimumVotingPeriod: TOO_LARGE"
        );
        minimumVotingPeriod = _seconds;
        emit MinimumVotingPeriodChanged(_seconds);
    }

    function setExecutionDelay(uint256 _seconds) public onlyGovernor {
        require(
            _seconds >= EXECUTION_DELAY_MINIMUM,
            "Governance::setExecutionDelay: TOO_SMALL"
        );
        require(
            _seconds <= EXECUTION_DELAY_MAXIMUM,
            "Governance::setExecutionDelay: TOO_LARGE"
        );
        executionDelay = _seconds;
        emit ExecutionDelayChanged(_seconds);
    }

    function setQuorumVotes(uint256 _votes) public onlyGovernor {
        require(
            _votes >= QUORUM_VOTES_MINIMUM,
            "Governance::setQuorumVotes: TOO_SMALL"
        );
        require(
            _votes <= QUORUM_VOTES_MAXIMUM,
            "Governance::setQuorumVotes: TOO_LARGE"
        );
        quorumVotes = _votes;
        emit QuorumVotesChanges(_votes);
    }

    function setProposalThreshold(uint256 _votes) public onlyGovernor {
        require(
            _votes >= PROPOSAL_THRESHOLD_MINIMUM,
            "Governance::setProposalThreshold: TOO_SMALL"
        );
        require(
            _votes <= PROPOSAL_THRESHOLD_MAXIMUM,
            "Governance::setProposalThreshold: TOO_LARGE"
        );
        proposalThreshold = _votes;
        emit ProposalThresholdChanged(_votes);
    }
}

Contract ABI

[{"inputs":[{"internalType":"address","name":"_xSNOB","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"newExecutionDelay","type":"uint256"}],"name":"ExecutionDelayChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"newMinimumVotingPeriod","type":"uint256"}],"name":"MinimumVotingPeriodChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"proposalId","type":"uint256"},{"indexed":false,"internalType":"address","name":"voter","type":"address"},{"indexed":false,"internalType":"bool","name":"support","type":"bool"},{"indexed":false,"internalType":"uint256","name":"votes","type":"uint256"}],"name":"NewVote","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"proposalId","type":"uint256"},{"indexed":false,"internalType":"address","name":"proposer","type":"address"},{"indexed":false,"internalType":"string","name":"title","type":"string"}],"name":"ProposalCreated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"proposalId","type":"uint256"},{"indexed":false,"internalType":"address","name":"executor","type":"address"}],"name":"ProposalExecuted","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"newProposalThreshold","type":"uint256"}],"name":"ProposalThresholdChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"newQuorumVotes","type":"uint256"}],"name":"QuorumVotesChanges","type":"event"},{"inputs":[],"name":"EXECUTION_DELAY_MAXIMUM","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"EXECUTION_DELAY_MINIMUM","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"EXPIRATION_PERIOD","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"PROPOSAL_THRESHOLD_MAXIMUM","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"PROPOSAL_THRESHOLD_MINIMUM","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"QUORUM_VOTES_MAXIMUM","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"QUORUM_VOTES_MINIMUM","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"VOTING_PERIOD_MAXIMUM","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"VOTING_PERIOD_MINIMUM","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_proposalId","type":"uint256"}],"name":"execute","outputs":[{"internalType":"bytes","name":"","type":"bytes"}],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"executionDelay","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_proposalId","type":"uint256"},{"internalType":"address","name":"_voter","type":"address"}],"name":"getReceipt","outputs":[{"components":[{"internalType":"bool","name":"hasVoted","type":"bool"},{"internalType":"bool","name":"support","type":"bool"},{"internalType":"uint256","name":"votes","type":"uint256"}],"internalType":"struct Governance.Receipt","name":"","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"lastProposalByAddress","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"minimumVotingPeriod","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"proposalCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"proposalExecutionContexts","outputs":[{"internalType":"address","name":"target","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"proposalThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"proposals","outputs":[{"internalType":"string","name":"title","type":"string"},{"internalType":"string","name":"metadata","type":"string"},{"internalType":"address","name":"proposer","type":"address"},{"internalType":"address","name":"executor","type":"address"},{"internalType":"uint256","name":"startTime","type":"uint256"},{"internalType":"uint256","name":"votingPeriod","type":"uint256"},{"internalType":"uint256","name":"quorumVotes","type":"uint256"},{"internalType":"uint256","name":"executionDelay","type":"uint256"},{"internalType":"uint256","name":"forVotes","type":"uint256"},{"internalType":"uint256","name":"againstVotes","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string","name":"_title","type":"string"},{"internalType":"string","name":"_metadata","type":"string"},{"internalType":"uint256","name":"_votingPeriod","type":"uint256"},{"internalType":"address","name":"_target","type":"address"},{"internalType":"uint256","name":"_value","type":"uint256"},{"internalType":"bytes","name":"_data","type":"bytes"}],"name":"propose","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"quorumVotes","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"address","name":"","type":"address"}],"name":"receipts","outputs":[{"internalType":"bool","name":"hasVoted","type":"bool"},{"internalType":"bool","name":"support","type":"bool"},{"internalType":"uint256","name":"votes","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_seconds","type":"uint256"}],"name":"setExecutionDelay","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_seconds","type":"uint256"}],"name":"setMinimumVotingPeriod","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_votes","type":"uint256"}],"name":"setProposalThreshold","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_votes","type":"uint256"}],"name":"setQuorumVotes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_proposalId","type":"uint256"}],"name":"state","outputs":[{"internalType":"enum Governance.ProposalState","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_proposalId","type":"uint256"},{"internalType":"bool","name":"_support","type":"bool"}],"name":"vote","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"xSNOB","outputs":[{"internalType":"contract IxSNOB","name":"","type":"address"}],"stateMutability":"view","type":"function"}]

60806040526203f48060015562015180600255693f870857a3e0e380000060035569152d02c7e14af680000060045534801561003a57600080fd5b50604051611e62380380611e6283398101604081905261005991610083565b6001600055600a80546001600160a01b0319166001600160a01b03929092169190911790556100b1565b600060208284031215610094578081fd5b81516001600160a01b03811681146100aa578182fd5b9392505050565b611da2806100c06000396000f3fe6080604052600436106101b75760003560e01c80638b257989116100ec578063ca75960b1161008a578063e4917d9f11610064578063e4917d9f14610595578063ea014f48146105b5578063ece40cc1146105ca578063fe0d94c1146105ea57600080fd5b8063ca75960b146104b5578063da35c664146104cc578063e23a9a52146104e257600080fd5b8063b1c360ed116100c6578063b1c360ed1461043a578063b58131b014610450578063c647097514610466578063c9d27afe1461049557600080fd5b80638b257989146103e65780638e19855e146103fc578063a48508b81461041a57600080fd5b80635a1daf73116101595780636b1a5847116101335780636b1a5847146103595780636dedc06e146103915780637ba456af146103a85780638ac56a53146103c757600080fd5b80635a1daf7314610241578063645c71511461030e57806368c671431461032c57600080fd5b80632e54929c116101955780632e54929c1461024157806338249a49146102585780633e4f49e6146102785780634178b249146102a557600080fd5b8063013cf08b146101bc57806302ec8f9e146101fb57806324bc1a641461021d575b600080fd5b3480156101c857600080fd5b506101dc6101d7366004611a02565b61060a565b6040516101f29a99989796959493929190611be1565b60405180910390f35b34801561020757600080fd5b5061021b610216366004611a02565b610776565b005b34801561022957600080fd5b5061023360035481565b6040519081526020016101f2565b34801561024d57600080fd5b5061023362278d0081565b34801561026457600080fd5b5061021b610273366004611a02565b6108ab565b34801561028457600080fd5b50610298610293366004611a02565b6109d1565b6040516101f29190611bb9565b3480156102b157600080fd5b506102f16102c0366004611a32565b60086020908152600092835260408084209091529082529020805460019091015460ff808316926101009004169083565b6040805193151584529115156020840152908201526060016101f2565b34801561031a57600080fd5b5061023369152d02c7e14af680000081565b34801561033857600080fd5b506102336103473660046118c3565b60096020526000908152604090205481565b34801561036557600080fd5b50600a54610379906001600160a01b031681565b6040516001600160a01b0390911681526020016101f2565b34801561039d57600080fd5b506102336201518081565b3480156103b457600080fd5b506102336a0ee3a5f48a68b55200000081565b3480156103d357600080fd5b506102336a084595161401484a00000081565b3480156103f257600080fd5b5061023360025481565b34801561040857600080fd5b50610233690a968163f0a57b40000081565b34801561042657600080fd5b5061021b6104353660046118dd565b610b39565b34801561044657600080fd5b5061023360015481565b34801561045c57600080fd5b5061023360045481565b34801561047257600080fd5b50610486610481366004611a02565b61105a565b6040516101f293929190611b76565b3480156104a157600080fd5b5061021b6104b0366004611a5d565b61110f565b3480156104c157600080fd5b506102336212750081565b3480156104d857600080fd5b5061023360055481565b3480156104ee57600080fd5b5061056f6104fd366004611a32565b60408051606081018252600080825260208201819052918101919091525060009182526008602090815260408084206001600160a01b03939093168452918152918190208151606081018352815460ff8082161515835261010090910416151593810193909352600101549082015290565b6040805182511515815260208084015115159082015291810151908201526060016101f2565b3480156105a157600080fd5b5061021b6105b0366004611a02565b611328565b3480156105c157600080fd5b50610233601e81565b3480156105d657600080fd5b5061021b6105e5366004611a02565b611442565b6105fd6105f8366004611a02565b611573565b6040516101f29190611ba6565b60066020526000908152604090208054819061062590611cf0565b80601f016020809104026020016040519081016040528092919081815260200182805461065190611cf0565b801561069e5780601f106106735761010080835404028352916020019161069e565b820191906000526020600020905b81548152906001019060200180831161068157829003601f168201915b5050505050908060010180546106b390611cf0565b80601f01602080910402602001604051908101604052809291908181526020018280546106df90611cf0565b801561072c5780601f106107015761010080835404028352916020019161072c565b820191906000526020600020905b81548152906001019060200180831161070f57829003601f168201915b50505060028401546003850154600486015460058701546006880154600789015460088a01546009909a015498996001600160a01b0396871699959096169750929550909390928a565b33301461079e5760405162461bcd60e51b815260040161079590611c54565b60405180910390fd5b69152d02c7e14af68000008110156108065760405162461bcd60e51b815260206004820152602560248201527f476f7665726e616e63653a3a73657451756f72756d566f7465733a20544f4f5f60448201526414d350531360da1b6064820152608401610795565b6a0ee3a5f48a68b55200000081111561086f5760405162461bcd60e51b815260206004820152602560248201527f476f7665726e616e63653a3a73657451756f72756d566f7465733a20544f4f5f6044820152644c4152474560d81b6064820152608401610795565b60038190556040518181527f4d82feec215c8e1f4d904b7268dd6499d866a96685c31f1e394e6663715f76e1906020015b60405180910390a150565b3330146108ca5760405162461bcd60e51b815260040161079590611c54565b620151808110156109335760405162461bcd60e51b815260206004820152602d60248201527f476f7665726e616e63653a3a7365744d696e696d756d566f74696e675065726960448201526c1bd90e881513d3d7d4d3505313609a1b6064820152608401610795565b62278d0081111561099c5760405162461bcd60e51b815260206004820152602d60248201527f476f7665726e616e63653a3a7365744d696e696d756d566f74696e675065726960448201526c6f643a20544f4f5f4c4152474560981b6064820152608401610795565b60018190556040518181527ff4f36c6d71e6dce23fde1248bfb40024041297ac1665de2840339f8a6b32e545906020016108a0565b600060055482111580156109e457508115155b610a3f5760405162461bcd60e51b815260206004820152602660248201527f476f7665726e616e63653a3a73746174653a20696e76616c69642070726f706f6044820152651cd85b081a5960d21b6064820152608401610795565b600082815260066020526040902060058101546004820154610a60916117a8565b4211610a6f5750600092915050565b60038101546001600160a01b031615610a8b5750600492915050565b80600901548160080154111580610aa9575080600601548160080154105b15610ab75750600192915050565b610ae08160070154610ada836005015484600401546117a890919063ffffffff16565b906117a8565b421015610af05750600292915050565b610b1a62127500610ada8360070154610ada856005015486600401546117a890919063ffffffff16565b421015610b2a5750600392915050565b50600592915050565b50919050565b600154841015610ba05760405162461bcd60e51b815260206004820152602c60248201527f476f7665726e616e63653a3a70726f706f73653a20766f74696e67207065726960448201526b1bd9081d1bdbc81cda1bdc9d60a21b6064820152608401610795565b62278d00841115610c075760405162461bcd60e51b815260206004820152602b60248201527f476f7665726e616e63653a3a70726f706f73653a20766f74696e67207065726960448201526a6f6420746f6f206c6f6e6760a81b6064820152608401610795565b336000908152600960205260409020548015610d17576000610c28826109d1565b90506004816005811115610c4c57634e487b7160e01b600052602160045260246000fd5b1480610c7757506001816005811115610c7557634e487b7160e01b600052602160045260246000fd5b145b80610ca157506005816005811115610c9f57634e487b7160e01b600052602160045260246000fd5b145b610d15576040805162461bcd60e51b81526020600482015260248101919091527f476f7665726e616e63653a3a70726f706f73653a2070726f706f73657220616c60448201527f72656164792068617320612070726f706f73616c20696e2070726f67726573736064820152608401610795565b505b600a546040516370a0823160e01b81523360048201526000916001600160a01b0316906370a082319060240160206040518083038186803b158015610d5b57600080fd5b505afa158015610d6f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d939190611a1a565b90506004548111610e0c5760405162461bcd60e51b815260206004820152603c60248201527f476f7665726e616e63653a3a70726f706f73653a2070726f706f73657220766f60448201527f7465732062656c6f772070726f706f73616c207468726573686f6c64000000006064820152608401610795565b60058054906000610e1c83611d25565b9091555050604080516101606020601f8d01819004028201810190925261014081018b81526000928291908e908e9081908501838280828437600092019190915250505090825250604080516020601f8d018190048102820181019092528b815291810191908c908c908190840183828082843760009201829052509385525050336020808501919091526040808501849052426060860152608085018d905260035460a086015260025460c086015260e08501849052610100909401839052600554835260068152929091208351805194955085949193610f03935084929101906117c7565b506020828101518051610f1c92600185019201906117c7565b50604082810151600283810180546001600160a01b03199081166001600160a01b039485161790915560608087015160038701805484169186169190911790556080870151600487015560a087015160058088019190915560c0880151600688015560e0880151600780890191909155610100890151600889015561012090980151600997880155543360009081526020978852868120829055865192830187528e861683528288018e81528388018e8152928252988852959095208151815490931692909416919091178355945160018301559151805185949293611007939085019201906117c7565b5050600554604080850151855191517f7585f467599d0f008985f231af99293be388626ac16ca59505c2f8f88969cd639450611044939290611c97565b60405180910390a1505050505050505050505050565b6007602052600090815260409020805460018201546002830180546001600160a01b0390931693919261108c90611cf0565b80601f01602080910402602001604051908101604052809291908181526020018280546110b890611cf0565b80156111055780601f106110da57610100808354040283529160200191611105565b820191906000526020600020905b8154815290600101906020018083116110e857829003601f168201915b5050505050905083565b600061111a836109d1565b600581111561113957634e487b7160e01b600052602160045260246000fd5b146111915760405162461bcd60e51b815260206004820152602260248201527f476f7665726e616e63653a3a766f74653a20766f74696e6720697320636c6f73604482015261195960f21b6064820152608401610795565b600082815260066020908152604080832060088352818420338086529352818420600a5492516370a0823160e01b815260048101949094529093909290916001600160a01b0316906370a082319060240160206040518083038186803b1580156111fa57600080fd5b505afa15801561120e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112329190611a1a565b825490915060ff1615611284578154610100900460ff161561126b5760018201546008840154611261916117bb565b6008840155611284565b6001820154600984015461127e916117bb565b60098401555b83156112a357600883015461129990826117a8565b60088401556112b8565b60098301546112b290826117a8565b60098401555b8154841515610100810261ffff19909216919091176001908117845583018290556040805187815233602082015290810191909152606081018290527f06e7cd0c868e7a367f3f3557249599fac0fc8712d4d6220bce69c664b9ccfd4a9060800160405180910390a15050505050565b3330146113475760405162461bcd60e51b815260040161079590611c54565b601e8110156113a95760405162461bcd60e51b815260206004820152602860248201527f476f7665726e616e63653a3a736574457865637574696f6e44656c61793a205460448201526713d3d7d4d350531360c21b6064820152608401610795565b62278d0081111561140d5760405162461bcd60e51b815260206004820152602860248201527f476f7665726e616e63653a3a736574457865637574696f6e44656c61793a20546044820152674f4f5f4c4152474560c01b6064820152608401610795565b60028190556040518181527f193d917ecb8a5c0270b102b28be14cc9ee25763c29c0b87e980a0bc65d485e75906020016108a0565b3330146114615760405162461bcd60e51b815260040161079590611c54565b690a968163f0a57b4000008110156114cf5760405162461bcd60e51b815260206004820152602b60248201527f476f7665726e616e63653a3a73657450726f706f73616c5468726573686f6c6460448201526a0e881513d3d7d4d350531360aa1b6064820152608401610795565b6a084595161401484a00000081111561153e5760405162461bcd60e51b815260206004820152602b60248201527f476f7665726e616e63653a3a73657450726f706f73616c5468726573686f6c6460448201526a3a20544f4f5f4c4152474560a81b6064820152608401610795565b60048190556040518181527f0553c1e1d490599cc62884d38bddf3b538bf26581e3d5a830cb2aa0a54fc5633906020016108a0565b6060600260005414156115c85760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610795565b600260005560036115d8836109d1565b60058111156115f757634e487b7160e01b600052602160045260246000fd5b146116545760405162461bcd60e51b815260206004820152602760248201527f476f7665726e616e63653a3a657865637574653a2063616e6e6f7420626520656044820152661e1958dd5d195960ca1b6064820152608401610795565b6000828152600660209081526040808320600790925280832080546001820154925193949193919283926001600160a01b0390921691611698906002870190611adb565b60006040518083038185875af1925050503d80600081146116d5576040519150601f19603f3d011682016040523d82523d6000602084013e6116da565b606091505b5091509150816117495760405162461bcd60e51b815260206004820152603460248201527f476f7665726e616e63653a3a657865637574653a207472616e73616374696f6e6044820152731032bc32b1baba34b7b7103932bb32b93a32b21760611b6064820152608401610795565b6003840180546001600160a01b031916339081179091556040805188815260208101929092527f9c85b616f29fca57a17eafe71cf9ff82ffef41766e2cf01ea7f8f7878dd3ec24910160405180910390a1600160005595945050505050565b60006117b48284611cc1565b9392505050565b60006117b48284611cd9565b8280546117d390611cf0565b90600052602060002090601f0160209004810192826117f5576000855561183b565b82601f1061180e57805160ff191683800117855561183b565b8280016001018555821561183b579182015b8281111561183b578251825591602001919060010190611820565b5061184792915061184b565b5090565b5b80821115611847576000815560010161184c565b80356001600160a01b038116811461187757600080fd5b919050565b60008083601f84011261188d578182fd5b50813567ffffffffffffffff8111156118a4578182fd5b6020830191508360208285010111156118bc57600080fd5b9250929050565b6000602082840312156118d4578081fd5b6117b482611860565b60008060008060008060008060c0898b0312156118f8578384fd5b883567ffffffffffffffff8082111561190f578586fd5b61191b8c838d0161187c565b909a50985060208b0135915080821115611933578586fd5b61193f8c838d0161187c565b909850965060408b0135955086915061195a60608c01611860565b945060808b0135935060a08b0135915080821115611976578283fd5b818b0191508b601f830112611989578283fd5b81358181111561199b5761199b611d56565b604051601f8201601f19908116603f011681019083821181831017156119c3576119c3611d56565b816040528281528e60208487010111156119db578586fd5b82602086016020830137856020848301015280955050505050509295985092959890939650565b600060208284031215611a13578081fd5b5035919050565b600060208284031215611a2b578081fd5b5051919050565b60008060408385031215611a44578182fd5b82359150611a5460208401611860565b90509250929050565b60008060408385031215611a6f578182fd5b8235915060208301358015158114611a85578182fd5b809150509250929050565b60008151808452815b81811015611ab557602081850181015186830182015201611a99565b81811115611ac65782602083870101525b50601f01601f19169290920160200192915050565b600080835482600182811c915080831680611af757607f831692505b6020808410821415611b1757634e487b7160e01b87526022600452602487fd5b818015611b2b5760018114611b3c57611b68565b60ff19861689528489019650611b68565b60008a815260209020885b86811015611b605781548b820152908501908301611b47565b505084890196505b509498975050505050505050565b60018060a01b0384168152826020820152606060408201526000611b9d6060830184611a90565b95945050505050565b6020815260006117b46020830184611a90565b6020810160068310611bdb57634e487b7160e01b600052602160045260246000fd5b91905290565b6000610140808352611bf58184018e611a90565b90508281036020840152611c09818d611a90565b6001600160a01b039b8c16604085015299909a16606083015250608081019690965260a086019490945260c085019290925260e0840152610100830152610120909101529392505050565b60208082526023908201527f476f7665726e616e63653a20696e73756666696369656e742070726976696c6560408201526267657360e81b606082015260800190565b8381526001600160a01b0383166020820152606060408201819052600090611b9d90830184611a90565b60008219821115611cd457611cd4611d40565b500190565b600082821015611ceb57611ceb611d40565b500390565b600181811c90821680611d0457607f821691505b60208210811415610b3357634e487b7160e01b600052602260045260246000fd5b6000600019821415611d3957611d39611d40565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052604160045260246000fdfea26469706673582212206845c4d8a9bdd0d955becdba3f4f38b291d8adcecb79eb0b26a4527c633867bd64736f6c6343000804003300000000000000000000000083952e7ab4aca74ca96217d6f8f7591bead6d64e

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

00000000000000000000000083952e7ab4aca74ca96217d6f8f7591bead6d64e

-----Decoded View---------------
Arg [0] : _xSNOB (address): 0x83952e7ab4aca74ca96217d6f8f7591bead6d64e

-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 00000000000000000000000083952e7ab4aca74ca96217d6f8f7591bead6d64e


Deployed ByteCode Sourcemap

20114:10365:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21555:45;;;;;;;;;;-1:-1:-1;21555:45:0;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;29632:397;;;;;;;;;;-1:-1:-1;29632:397:0;;;;;:::i;:::-;;:::i;:::-;;20947:39;;;;;;;;;;;;;;;;;;;15855:25:1;;;15843:2;15828:18;20947:39:0;15810:76:1;20631:57:0;;;;;;;;;;;;20681:7;20631:57;;28739:449;;;;;;;;;;-1:-1:-1;28739:449:0;;;;;:::i;:::-;;:::i;23441:1100::-;;;;;;;;;;-1:-1:-1;23441:1100:0;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;21691:63::-;;;;;;;;;;-1:-1:-1;21691:63:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5983:14:1;;5976:22;5958:41;;6042:14;;6035:22;6030:2;6015:18;;6008:50;6074:18;;;6067:34;5946:2;5931:18;21691:63:0;5913:194:1;20993:57:0;;;;;;;;;;;;21040:10;20993:57;;21761:56;;;;;;;;;;-1:-1:-1;21761:56:0;;;;;:::i;:::-;;;;;;;;;;;;;;21887:19;;;;;;;;;;-1:-1:-1;21887:19:0;;;;-1:-1:-1;;;;;21887:19:0;;;;;;-1:-1:-1;;;;;5334:32:1;;;5316:51;;5304:2;5289:18;21887:19:0;5271:102:1;20296:54:0;;;;;;;;;;;;20344:6;20296:54;;21057:60;;;;;;;;;;;;21104:13;21057:60;;21337:66;;;;;;;;;;;;21390:13;21337:66;;20517:40;;;;;;;;;;;;;;;;21268:62;;;;;;;;;;;;21321:9;21268:62;;24706:2119;;;;;;;;;;-1:-1:-1;24706:2119:0;;;;;:::i;:::-;;:::i;20246:43::-;;;;;;;;;;;;;;;;21216:45;;;;;;;;;;;;;;;;21607:77;;;;;;;;;;-1:-1:-1;21607:77:0;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;:::i;26833:1030::-;;;;;;;;;;-1:-1:-1;26833:1030:0;;;;;:::i;:::-;;:::i;20790:51::-;;;;;;;;;;;;20834:7;20790:51;;21459:28;;;;;;;;;;;;;;;;24549:149;;;;;;;;;;-1:-1:-1;24549:149:0;;;;;:::i;:::-;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;24661:21:0;;;;:8;:21;;;;;;;;-1:-1:-1;;;;;24661:29:0;;;;;;;;;;;;;24654:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24549:149;;;;;15540:13:1;;15533:21;15526:29;15508:48;;15626:4;15614:17;;;15608:24;15601:32;15594:40;15572:20;;;15565:70;15679:17;;;15673:24;15651:20;;;15644:54;15496:2;15481:18;24549:149:0;15463:241:1;29196:428:0;;;;;;;;;;-1:-1:-1;29196:428:0;;;;;:::i;:::-;;:::i;20564:60::-;;;;;;;;;;;;20614:10;20564:60;;30037:439;;;;;;;;;;-1:-1:-1;30037:439:0;;;;;:::i;:::-;;:::i;27871:842::-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;21555:45::-;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;21555:45:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;21555:45:0;;;;;;;;;-1:-1:-1;21555:45:0;;-1:-1:-1;21555:45:0;;;;;:::o;29632:397::-;23323:10;23345:4;23323:27;23301:112;;;;-1:-1:-1;;;23301:112:0;;;;;;;:::i;:::-;;;;;;;;;21040:10:::1;29725:6;:30;;29703:117;;;::::0;-1:-1:-1;;;29703:117:0;;12259:2:1;29703:117:0::1;::::0;::::1;12241:21:1::0;12298:2;12278:18;;;12271:30;12337:34;12317:18;;;12310:62;-1:-1:-1;;;12388:18:1;;;12381:35;12433:19;;29703:117:0::1;12231:227:1::0;29703:117:0::1;21104:13;29853:6;:30;;29831:117;;;::::0;-1:-1:-1;;;29831:117:0;;9815:2:1;29831:117:0::1;::::0;::::1;9797:21:1::0;9854:2;9834:18;;;9827:30;9893:34;9873:18;;;9866:62;-1:-1:-1;;;9944:18:1;;;9937:35;9989:19;;29831:117:0::1;9787:227:1::0;29831:117:0::1;29959:11;:20:::0;;;29995:26:::1;::::0;15855:25:1;;;29995:26:0::1;::::0;15843:2:1;15828:18;29995:26:0::1;;;;;;;;29632:397:::0;:::o;28739:449::-;23323:10;23345:4;23323:27;23301:112;;;;-1:-1:-1;;;23301:112:0;;;;;;;:::i;:::-;20344:6:::1;28842:8;:33;;28820:128;;;::::0;-1:-1:-1;;;28820:128:0;;13072:2:1;28820:128:0::1;::::0;::::1;13054:21:1::0;13111:2;13091:18;;;13084:30;13150:34;13130:18;;;13123:62;-1:-1:-1;;;13201:18:1;;;13194:43;13254:19;;28820:128:0::1;13044:235:1::0;28820:128:0::1;20405:7;28981:8;:33;;28959:128;;;::::0;-1:-1:-1;;;28959:128:0;;10629:2:1;28959:128:0::1;::::0;::::1;10611:21:1::0;10668:2;10648:18;;;10641:30;10707:34;10687:18;;;10680:62;-1:-1:-1;;;10758:18:1;;;10751:43;10811:19;;28959:128:0::1;10601:235:1::0;28959:128:0::1;29098:19;:30:::0;;;29144:36:::1;::::0;15855:25:1;;;29144:36:0::1;::::0;15843:2:1;15828:18;29144:36:0::1;15810:76:1::0;23441:1100:0;23498:13;23561;;23546:11;:28;;:48;;;;-1:-1:-1;23578:16:0;;;23546:48;23524:136;;;;-1:-1:-1;;;23524:136:0;;12665:2:1;23524:136:0;;;12647:21:1;12704:2;12684:18;;;12677:30;12743:34;12723:18;;;12716:62;-1:-1:-1;;;12794:18:1;;;12787:36;12840:19;;23524:136:0;12637:228:1;23524:136:0;23673:25;23701:22;;;:9;:22;;;;;23782:21;;;;23759:18;;;;:45;;:22;:45::i;:::-;23740:15;:64;23736:798;;-1:-1:-1;23828:20:0;;23441:1100;-1:-1:-1;;23441:1100:0:o;23736:798::-;23870:17;;;;-1:-1:-1;;;;;23870:17:0;:31;23866:668;;-1:-1:-1;23925:22:0;;23441:1100;-1:-1:-1;;23441:1100:0:o;23866:668::-;23990:8;:21;;;23969:8;:17;;;:42;;:86;;;;24035:8;:20;;;24015:8;:17;;;:40;23969:86;23965:569;;;-1:-1:-1;24079:22:0;;23441:1100;-1:-1:-1;;23441:1100:0:o;23965:569::-;24141:74;24191:8;:23;;;24141:45;24164:8;:21;;;24141:8;:18;;;:22;;:45;;;;:::i;:::-;:49;;:74::i;:::-;24123:15;:92;24119:415;;;-1:-1:-1;24239:30:0;;23441:1100;-1:-1:-1;;23441:1100:0:o;24119:415::-;24309:97;20834:7;24309:74;24359:8;:23;;;24309:45;24332:8;:21;;;24309:8;:18;;;:22;;:45;;;;:::i;:97::-;24291:15;:115;24287:247;;;-1:-1:-1;24430:31:0;;23441:1100;-1:-1:-1;;23441:1100:0:o;24287:247::-;-1:-1:-1;24501:21:0;;23441:1100;-1:-1:-1;;23441:1100:0:o;24287:247::-;23441:1100;;;;:::o;24706:2119::-;24968:19;;24951:13;:36;;24929:130;;;;-1:-1:-1;;;24929:130:0;;13898:2:1;24929:130:0;;;13880:21:1;13937:2;13917:18;;;13910:30;13976:34;13956:18;;;13949:62;-1:-1:-1;;;14027:18:1;;;14020:42;14079:19;;24929:130:0;13870:234:1;24929:130:0;20405:7;25094:13;:38;;25072:131;;;;-1:-1:-1;;;25072:131:0;;13486:2:1;25072:131:0;;;13468:21:1;13525:2;13505:18;;;13498:30;13564:34;13544:18;;;13537:62;-1:-1:-1;;;13615:18:1;;;13608:41;13666:19;;25072:131:0;13458:233:1;25072:131:0;25263:10;25216:22;25241:33;;;:21;:33;;;;;;25291:18;;25287:401;;25326:27;25356:21;25362:14;25356:5;:21::i;:::-;25326:51;-1:-1:-1;25435:22:0;25418:13;:39;;;;;;-1:-1:-1;;;25418:39:0;;;;;;;;;;:99;;;-1:-1:-1;25495:22:0;25478:13;:39;;;;;;-1:-1:-1;;;25478:39:0;;;;;;;;;;25418:99;:158;;;-1:-1:-1;25555:21:0;25538:13;:38;;;;;;-1:-1:-1;;;25538:38:0;;;;;;;;;;25418:158;25392:284;;;;;-1:-1:-1;;;25392:284:0;;14311:2:1;25392:284:0;;;14293:21:1;14330:18;;;14323:30;;;;14389:34;14369:18;;;14362:62;14460:34;14440:18;;;14433:62;14512:19;;25392:284:0;14283:254:1;25392:284:0;25287:401;;25716:5;;:27;;-1:-1:-1;;;25716:27:0;;25732:10;25716:27;;;5316:51:1;25700:13:0;;-1:-1:-1;;;;;25716:5:0;;:15;;5289:18:1;;25716:27:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;25700:43;;25786:17;;25778:5;:25;25756:135;;;;-1:-1:-1;;;25756:135:0;;8965:2:1;25756:135:0;;;8947:21:1;9004:2;8984:18;;;8977:30;9043:34;9023:18;;;9016:62;9114:30;9094:18;;;9087:58;9162:19;;25756:135:0;8937:250:1;25756:135:0;25904:13;:15;;;:13;:15;;;:::i;:::-;;;;-1:-1:-1;;25962:376:0;;;;;;;;;;;;;;;;;;;;;;;;;25932:27;;25962:376;;;25993:6;;;;;;25962:376;;25993:6;;;;25962:376;;;;;;;;;-1:-1:-1;;;25962:376:0;;;-1:-1:-1;25962:376:0;;;;;;;;;;;;;;;;;;;;;;;;;;;26024:9;;;;;;25962:376;;26024:9;;;;25962:376;;;;;;;;-1:-1:-1;25962:376:0;;;-1:-1:-1;;26058:10:0;25962:376;;;;;;;;;;;;;;;26129:15;25962:376;;;;;;;;;;26214:11;;25962:376;;;;26256:14;;25962:376;;;;;;;;;;;;;;;;;26361:13;;26351:24;;:9;:24;;;;;;:38;;;;25932:406;;-1:-1:-1;25932:406:0;;26351:24;;:38;;-1:-1:-1;26351:24:0;;:38;;;;:::i;:::-;-1:-1:-1;26351:38:0;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;26351:38:0;;;;;;;;;;;-1:-1:-1;;;;;;26351:38:0;;;-1:-1:-1;;;;;26351:38:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26436:13;26422:10;-1:-1:-1;26400:33:0;;;;;;;;;;:49;;;26524:121;;;;;;;;;;;;;;;;;;;;;;;;26658:40;;;;;;;;;;:70;;;;;;;;;;;;;;;;;;;-1:-1:-1;26658:70:0;;;;;;;26524:121;;26658:40;;:70;;;;;;;;;:::i;:::-;-1:-1:-1;;26762:13:0;;26777:20;;;;;26799:17;;26746:71;;;;-1:-1:-1;26746:71:0;;26762:13;26799:17;26746:71;:::i;:::-;;;;;;;;24706:2119;;;;;;;;;;;;:::o;21607:77::-;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;21607:77:0;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;26833:1030::-;26945:20;26923:18;26929:11;26923:5;:18::i;:::-;:42;;;;;;-1:-1:-1;;;26923:42:0;;;;;;;;;;26901:126;;;;-1:-1:-1;;;26901:126:0;;11452:2:1;26901:126:0;;;11434:21:1;11491:2;11471:18;;;11464:30;11530:34;11510:18;;;11503:62;-1:-1:-1;;;11581:18:1;;;11574:32;11623:19;;26901:126:0;11424:224:1;26901:126:0;27040:25;27068:22;;;:9;:22;;;;;;;;27127:8;:21;;;;;27149:10;27127:33;;;;;;;;27189:5;;:27;;-1:-1:-1;;;27189:27:0;;;;;5316:51:1;;;;27068:22:0;;27127:33;;27040:25;;-1:-1:-1;;;;;27189:5:0;;:15;;5289:18:1;;27189:27:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;27233:16;;27173:43;;-1:-1:-1;27233:16:0;;27229:265;;;27270:15;;;;;;;27266:217;;;27348:13;;;;27326:17;;;;:36;;:21;:36::i;:::-;27306:17;;;:56;27266:217;;;27453:13;;;;27427:21;;;;:40;;:25;:40::i;:::-;27403:21;;;:64;27266:217;27510:8;27506:178;;;27555:17;;;;:28;;27577:5;27555:21;:28::i;:::-;27535:17;;;:48;27506:178;;;27640:21;;;;:32;;27666:5;27640:25;:32::i;:::-;27616:21;;;:56;27506:178;27696:23;;27730:26;;;27696:23;27730:26;;-1:-1:-1;;27730:26:0;;;;;;;27715:4;27730:26;;;;;27767:13;;:21;;;27806:49;;;16395:25:1;;;27827:10:0;16451:2:1;16436:18;;16429:60;16505:18;;;16498:50;;;;16579:2;16564:18;;16557:34;;;27806:49:0;;16382:3:1;16367:19;27806:49:0;;;;;;;26833:1030;;;;;:::o;29196:428::-;23323:10;23345:4;23323:27;23301:112;;;;-1:-1:-1;;;23301:112:0;;;;;;;:::i;:::-;20614:10:::1;29294:8;:35;;29272:125;;;::::0;-1:-1:-1;;;29272:125:0;;8556:2:1;29272:125:0::1;::::0;::::1;8538:21:1::0;8595:2;8575:18;;;8568:30;8634:34;8614:18;;;8607:62;-1:-1:-1;;;8685:18:1;;;8678:38;8733:19;;29272:125:0::1;8528:230:1::0;29272:125:0::1;20681:7;29430:8;:35;;29408:125;;;::::0;-1:-1:-1;;;29408:125:0;;11043:2:1;29408:125:0::1;::::0;::::1;11025:21:1::0;11082:2;11062:18;;;11055:30;11121:34;11101:18;;;11094:62;-1:-1:-1;;;11172:18:1;;;11165:38;11220:19;;29408:125:0::1;11015:230:1::0;29408:125:0::1;29544:14;:25:::0;;;29585:31:::1;::::0;15855:25:1;;;29585:31:0::1;::::0;15843:2:1;15828:18;29585:31:0::1;15810:76:1::0;30037:439:0;23323:10;23345:4;23323:27;23301:112;;;;-1:-1:-1;;;23301:112:0;;;;;;;:::i;:::-;21321:9:::1;30136:6;:36;;30114:129;;;::::0;-1:-1:-1;;;30114:129:0;;14744:2:1;30114:129:0::1;::::0;::::1;14726:21:1::0;14783:2;14763:18;;;14756:30;14822:34;14802:18;;;14795:62;-1:-1:-1;;;14873:18:1;;;14866:41;14924:19;;30114:129:0::1;14716:233:1::0;30114:129:0::1;21390:13;30276:6;:36;;30254:129;;;::::0;-1:-1:-1;;;30254:129:0;;8144:2:1;30254:129:0::1;::::0;::::1;8126:21:1::0;8183:2;8163:18;;;8156:30;8222:34;8202:18;;;8195:62;-1:-1:-1;;;8273:18:1;;;8266:41;8324:19;;30254:129:0::1;8116:233:1::0;30254:129:0::1;30394:17;:26:::0;;;30436:32:::1;::::0;15855:25:1;;;30436:32:0::1;::::0;15843:2:1;15828:18;30436:32:0::1;15810:76:1::0;27871:842:0;27946:12;19070:1;19667:7;;:19;;19659:63;;;;-1:-1:-1;;;19659:63:0;;15156:2:1;19659:63:0;;;15138:21:1;15195:2;15175:18;;;15168:30;15234:33;15214:18;;;15207:61;15285:18;;19659:63:0;15128:181:1;19659:63:0;19070:1;19800:7;:18;28015:31:::1;27993:18;27999:11;27993:5;:18::i;:::-;:53;;;;;;-1:-1:-1::0;;;27993:53:0::1;;;;;;;;;;27971:142;;;::::0;-1:-1:-1;;;27971:142:0;;10221:2:1;27971:142:0::1;::::0;::::1;10203:21:1::0;10260:2;10240:18;;;10233:30;10299:34;10279:18;;;10272:62;-1:-1:-1;;;10350:18:1;;;10343:37;10397:19;;27971:142:0::1;10193:229:1::0;27971:142:0::1;28126:25;28154:22:::0;;;:9:::1;:22;::::0;;;;;;;28249:25:::1;:38:::0;;;;;;28342:31;;;28386:30;::::1;::::0;28342:106;;28154:22;;28249:38;;28126:25;;;;-1:-1:-1;;;;;28342:31:0;;::::1;::::0;:106:::1;::::0;28418:29:::1;::::0;::::1;::::0;28342:106:::1;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;28300:148;;;;28481:7;28459:109;;;::::0;-1:-1:-1;;;28459:109:0;;9394:2:1;28459:109:0::1;::::0;::::1;9376:21:1::0;9433:2;9413:18;;;9406:30;9472:34;9452:18;;;9445:62;-1:-1:-1;;;9523:18:1;;;9516:50;9583:19;;28459:109:0::1;9366:242:1::0;28459:109:0::1;28579:17;::::0;::::1;:30:::0;;-1:-1:-1;;;;;;28579:30:0::1;28599:10;28579:30:::0;;::::1;::::0;;;28627:48:::1;::::0;;16065:25:1;;;16121:2;16106:18;;16099:60;;;;28627:48:0::1;::::0;16038:18:1;28627:48:0::1;;;;;;;19026:1:::0;19979:7;:22;28695:10;27871:842;-1:-1:-1;;;;;27871:842:0:o;13029:98::-;13087:7;13114:5;13118:1;13114;:5;:::i;:::-;13107:12;13029:98;-1:-1:-1;;;13029:98:0:o;13410:::-;13468:7;13495:5;13499:1;13495;:5;:::i;-1:-1:-1:-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;14:173:1;82:20;;-1:-1:-1;;;;;131:31:1;;121:42;;111:2;;177:1;174;167:12;111:2;63:124;;;:::o;192:376::-;244:8;254:6;308:3;301:4;293:6;289:17;285:27;275:2;;333:8;323;316:26;275:2;-1:-1:-1;363:20:1;;406:18;395:30;;392:2;;;445:8;435;428:26;392:2;489:4;481:6;477:17;465:29;;541:3;534:4;525:6;517;513:19;509:30;506:39;503:2;;;558:1;555;548:12;503:2;265:303;;;;;:::o;573:196::-;632:6;685:2;673:9;664:7;660:23;656:32;653:2;;;706:6;698;691:22;653:2;734:29;753:9;734:29;:::i;774:1777::-;911:6;919;927;935;943;951;959;967;1020:3;1008:9;999:7;995:23;991:33;988:2;;;1042:6;1034;1027:22;988:2;1087:9;1074:23;1116:18;1157:2;1149:6;1146:14;1143:2;;;1178:6;1170;1163:22;1143:2;1222:59;1273:7;1264:6;1253:9;1249:22;1222:59;:::i;:::-;1300:8;;-1:-1:-1;1196:85:1;-1:-1:-1;1388:2:1;1373:18;;1360:32;;-1:-1:-1;1404:16:1;;;1401:2;;;1438:6;1430;1423:22;1401:2;1482:61;1535:7;1524:8;1513:9;1509:24;1482:61;:::i;:::-;1562:8;;-1:-1:-1;1456:87:1;-1:-1:-1;1644:2:1;1629:18;;1616:32;;-1:-1:-1;1456:87:1;;-1:-1:-1;1667:38:1;1701:2;1686:18;;1667:38;:::i;:::-;1657:48;;1752:3;1741:9;1737:19;1724:33;1714:43;;1810:3;1799:9;1795:19;1782:33;1766:49;;1840:2;1830:8;1827:16;1824:2;;;1861:6;1853;1846:22;1824:2;1904:8;1893:9;1889:24;1879:34;;1951:7;1944:4;1940:2;1936:13;1932:27;1922:2;;1978:6;1970;1963:22;1922:2;2019;2006:16;2041:2;2037;2034:10;2031:2;;;2047:18;;:::i;:::-;2122:2;2116:9;2090:2;2176:13;;-1:-1:-1;;2172:22:1;;;2196:2;2168:31;2164:40;2152:53;;;2220:18;;;2240:22;;;2217:46;2214:2;;;2266:18;;:::i;:::-;2306:10;2302:2;2295:22;2341:2;2333:6;2326:18;2381:7;2376:2;2371;2367;2363:11;2359:20;2356:33;2353:2;;;2407:6;2399;2392:22;2353:2;2468;2463;2459;2455:11;2450:2;2442:6;2438:15;2425:46;2513:6;2508:2;2503;2495:6;2491:15;2487:24;2480:40;2539:6;2529:16;;;;;;;978:1573;;;;;;;;;;;:::o;2556:190::-;2615:6;2668:2;2656:9;2647:7;2643:23;2639:32;2636:2;;;2689:6;2681;2674:22;2636:2;-1:-1:-1;2717:23:1;;2626:120;-1:-1:-1;2626:120:1:o;2751:194::-;2821:6;2874:2;2862:9;2853:7;2849:23;2845:32;2842:2;;;2895:6;2887;2880:22;2842:2;-1:-1:-1;2923:16:1;;2832:113;-1:-1:-1;2832:113:1:o;2950:264::-;3018:6;3026;3079:2;3067:9;3058:7;3054:23;3050:32;3047:2;;;3100:6;3092;3085:22;3047:2;3141:9;3128:23;3118:33;;3170:38;3204:2;3193:9;3189:18;3170:38;:::i;:::-;3160:48;;3037:177;;;;;:::o;3219:361::-;3284:6;3292;3345:2;3333:9;3324:7;3320:23;3316:32;3313:2;;;3366:6;3358;3351:22;3313:2;3407:9;3394:23;3384:33;;3467:2;3456:9;3452:18;3439:32;3514:5;3507:13;3500:21;3493:5;3490:32;3480:2;;3541:6;3533;3526:22;3480:2;3569:5;3559:15;;;3303:277;;;;;:::o;3585:475::-;3626:3;3664:5;3658:12;3691:6;3686:3;3679:19;3716:3;3728:162;3742:6;3739:1;3736:13;3728:162;;;3804:4;3860:13;;;3856:22;;3850:29;3832:11;;;3828:20;;3821:59;3757:12;3728:162;;;3908:6;3905:1;3902:13;3899:2;;;3974:3;3967:4;3958:6;3953:3;3949:16;3945:27;3938:40;3899:2;-1:-1:-1;4042:2:1;4021:15;-1:-1:-1;;4017:29:1;4008:39;;;;4049:4;4004:50;;3634:426;-1:-1:-1;;3634:426:1:o;4065:1100::-;4191:3;4220;4255:6;4249:13;4285:3;4307:1;4335:9;4331:2;4327:18;4317:28;;4395:2;4384:9;4380:18;4417;4407:2;;4461:4;4453:6;4449:17;4439:27;;4407:2;4487;4535;4527:6;4524:14;4504:18;4501:38;4498:2;;;-1:-1:-1;;;4562:33:1;;4618:4;4615:1;4608:15;4648:4;4569:3;4636:17;4498:2;4679:18;4706:104;;;;4824:1;4819:321;;;;4672:468;;4706:104;-1:-1:-1;;4739:24:1;;4727:37;;4784:16;;;;-1:-1:-1;4706:104:1;;4819:321;17040:4;17059:17;;;17109:4;17093:21;;4913:3;4929:165;4943:6;4940:1;4937:13;4929:165;;;5021:14;;5008:11;;;5001:35;5064:16;;;;4958:10;;4929:165;;;4933:3;;5123:6;5118:3;5114:16;5107:23;;4672:468;-1:-1:-1;5156:3:1;;4199:966;-1:-1:-1;;;;;;;;4199:966:1:o;5378:385::-;5610:1;5606;5601:3;5597:11;5593:19;5585:6;5581:32;5570:9;5563:51;5650:6;5645:2;5634:9;5630:18;5623:34;5693:2;5688;5677:9;5673:18;5666:30;5544:4;5713:44;5753:2;5742:9;5738:18;5730:6;5713:44;:::i;:::-;5705:52;5553:210;-1:-1:-1;;;;;5553:210:1:o;6112:217::-;6259:2;6248:9;6241:21;6222:4;6279:44;6319:2;6308:9;6304:18;6296:6;6279:44;:::i;6554:345::-;6703:2;6688:18;;6736:1;6725:13;;6715:2;;6781:10;6776:3;6772:20;6769:1;6762:31;6816:4;6813:1;6806:15;6844:4;6841:1;6834:15;6715:2;6868:25;;;6670:229;:::o;6904:1033::-;7288:4;7317:3;7347:2;7336:9;7329:21;7373:44;7413:2;7402:9;7398:18;7390:6;7373:44;:::i;:::-;7359:58;;7465:9;7457:6;7453:22;7448:2;7437:9;7433:18;7426:50;7493:32;7518:6;7510;7493:32;:::i;:::-;-1:-1:-1;;;;;7599:15:1;;;7594:2;7579:18;;7572:43;7651:15;;;;7646:2;7631:18;;7624:43;-1:-1:-1;7698:3:1;7683:19;;7676:35;;;;7552:3;7727:19;;7720:35;;;;7786:3;7771:19;;7764:35;;;;7830:3;7815:19;;7808:35;7874:3;7859:19;;7852:35;7918:3;7903:19;;;7896:35;7485:40;7297:640;-1:-1:-1;;;7297:640:1:o;11653:399::-;11855:2;11837:21;;;11894:2;11874:18;;;11867:30;11933:34;11928:2;11913:18;;11906:62;-1:-1:-1;;;11999:2:1;11984:18;;11977:33;12042:3;12027:19;;11827:225::o;16602:387::-;16789:25;;;-1:-1:-1;;;;;16850:32:1;;16845:2;16830:18;;16823:60;16919:2;16914;16899:18;;16892:30;;;-1:-1:-1;;16939:44:1;;16964:18;;16956:6;16939:44;:::i;17125:128::-;17165:3;17196:1;17192:6;17189:1;17186:13;17183:2;;;17202:18;;:::i;:::-;-1:-1:-1;17238:9:1;;17173:80::o;17258:125::-;17298:4;17326:1;17323;17320:8;17317:2;;;17331:18;;:::i;:::-;-1:-1:-1;17368:9:1;;17307:76::o;17388:380::-;17467:1;17463:12;;;;17510;;;17531:2;;17585:4;17577:6;17573:17;17563:27;;17531:2;17638;17630:6;17627:14;17607:18;17604:38;17601:2;;;17684:10;17679:3;17675:20;17672:1;17665:31;17719:4;17716:1;17709:15;17747:4;17744:1;17737:15;17773:135;17812:3;-1:-1:-1;;17833:17:1;;17830:2;;;17853:18;;:::i;:::-;-1:-1:-1;17900:1:1;17889:13;;17820:88::o;17913:127::-;17974:10;17969:3;17965:20;17962:1;17955:31;18005:4;18002:1;17995:15;18029:4;18026:1;18019:15;18045:127;18106:10;18101:3;18097:20;18094:1;18087:31;18137:4;18134:1;18127:15;18161:4;18158:1;18151:15

Swarm Source

ipfs://6845c4d8a9bdd0d955becdba3f4f38b291d8adcecb79eb0b26a4527c633867bd
Block Transaction Gas Used Reward
Age Block Fee Address BC Fee Address Voting Power Jailed Incoming
Block Uncle Number Difficulty Gas Used Reward
Loading
Make sure to use the "Vote Down" button for any spammy posts, and the "Vote Up" for interesting conversations.