Contract 0x3d4186902be316b1870e57bf9f4ced37bdd0087a

Txn Hash Method
Block
From
To
Value [Txn Fee]
0x83f72a65301d6c158bce5309987c8173d78039f86a18c78934f9a717eec61ae9Withdraw Usdc178445462022-07-26 22:48:5463 days 11 hrs agoThorus: Deployer IN  0x3d4186902be316b1870e57bf9f4ced37bdd0087a0 AVAX0.001194258 26
0x573ecb72e0c7d78fbe19a77b861cc1ea15873aeadbe6ec36e2ba5b8a4020857eSet Strategist A...178445222022-07-26 22:48:0063 days 11 hrs agoThorus: Deployer IN  0x3d4186902be316b1870e57bf9f4ced37bdd0087a0 AVAX0.000792454 26
0x02dd7c225967b186438f95d7a5f85a251dd168026fb3ae944788c09eb1b3af84Claim Usdc178008312022-07-25 21:27:2764 days 12 hrs ago0x0ce8df46e23e4ec4ffa959af72fac0b6375cd7b5 IN  0x3d4186902be316b1870e57bf9f4ced37bdd0087a0 AVAX0.0056604 26.5
0x288510c6f9c307fe805aaa44055bb56980cf76e9f40c40d00dcb3b75ca332b06Redeem178008202022-07-25 21:26:5964 days 12 hrs ago0x0ce8df46e23e4ec4ffa959af72fac0b6375cd7b5 IN  0x3d4186902be316b1870e57bf9f4ced37bdd0087a0 AVAX0.002429838 26.5
0x01cba352f43c5a510633ee3f058d54dff609065185d449af7b99d252cba75ff8Claim Usdc157770332022-06-08 21:55:20111 days 12 hrs ago0xd0479e9671d185fa737e882e821943a8dc5ae9ea IN  0x3d4186902be316b1870e57bf9f4ced37bdd0087a0 AVAX0.00624075 26.5
0xc1f26242ab71fbfb8a3601fc72026396fd112e7a51b12bde0699961a125a6948Redeem157770232022-06-08 21:55:00111 days 12 hrs ago0xd0479e9671d185fa737e882e821943a8dc5ae9ea IN  0x3d4186902be316b1870e57bf9f4ced37bdd0087a0 AVAX0.00288267 26.5
0x60fd171d77d29ceafa5203ffc89d61843bcd3b24c07decaa235ea00c35d3d33aClaim Usdc154452762022-06-01 4:32:15119 days 5 hrs ago0x02d6a2ffcf5f6455960d9a8854d06f67fb8c11fc IN  0x3d4186902be316b1870e57bf9f4ced37bdd0087a0 AVAX0.0057876 26.5
0x9da07f40c6c32399e67547693bf0e6ebcc79906211d8ab2b511ff52a64460652Redeem154452702022-06-01 4:32:03119 days 5 hrs ago0x02d6a2ffcf5f6455960d9a8854d06f67fb8c11fc IN  0x3d4186902be316b1870e57bf9f4ced37bdd0087a0 AVAX0.002882988 26.5
0x82c693d333c28a23e3de173c17539486c18595ad9f7ac36fcf9968495bf73ceeClaim Usdc154410772022-06-01 2:11:49119 days 8 hrs ago0x306ea8dc846035d773ba86e189b7ba90c405e778 IN  0x3d4186902be316b1870e57bf9f4ced37bdd0087a0 AVAX0.0057876 26.5
0xd12718887663c00bd808f2ac273e92abcb83e141108041bd267fe14292e6c49fRedeem154410702022-06-01 2:11:36119 days 8 hrs ago0x306ea8dc846035d773ba86e189b7ba90c405e778 IN  0x3d4186902be316b1870e57bf9f4ced37bdd0087a0 AVAX0.002882988 26.5
0xd6cc1796bec687f5997b611c8cddc8ec2220d2cb8dc4d653c4bfb0b685f94e73Claim Usdc146525192022-05-13 18:48:28137 days 15 hrs ago0x58fc8a5d2bc89dc1a353537271a217a6f64c92a4 IN  0x3d4186902be316b1870e57bf9f4ced37bdd0087a0 AVAX0.00624075 26.5
0x9db92620d21488d9464a957cec5360c69008aba26edfffc24d213bccfdf1710fRedeem146525002022-05-13 18:47:52137 days 15 hrs ago0x58fc8a5d2bc89dc1a353537271a217a6f64c92a4 IN  0x3d4186902be316b1870e57bf9f4ced37bdd0087a0 AVAX0.00242952 26.5
0xf60d650c48a39ff4799a8895c4939cbd0c4265e0cc99e7a209c0a12db8045ea0Claim Usdc143880832022-05-07 13:20:59143 days 20 hrs ago0xa315e1dd4d89ac9d3b40f0cefa4fa7a1c10c66ba IN  0x3d4186902be316b1870e57bf9f4ced37bdd0087a0 AVAX0.013502333506 61.823871368
0x7f9fb311fe9d2c37d331725dcb28dd3e06da2cf31c7ef2107dcf7a6bf5cca0b8Redeem143880732022-05-07 13:20:39143 days 20 hrs ago0xa315e1dd4d89ac9d3b40f0cefa4fa7a1c10c66ba IN  0x3d4186902be316b1870e57bf9f4ced37bdd0087a0 AVAX0.006695029215 61.539719971
0x77de1ba8fd893bdc08100448044f7cce10af271f9df56fca22151d4add291b34Claim Usdc141731822022-05-02 10:17:20149 days 1 min ago0x24067919e98e37d6af98d747ebafa8aab31db2c8 IN  0x3d4186902be316b1870e57bf9f4ced37bdd0087a0 AVAX0.013221532584 56.142388892
0x03248ec0b5c5286f761a90021a9b827af745f0da521faaa07147925d1c0a8373Claim Usdc140064112022-04-28 10:56:03152 days 23 hrs ago0x905e0f438cc1aae570a84c1a62a156ba5c1bb345 IN  0x3d4186902be316b1870e57bf9f4ced37bdd0087a0 AVAX0.011082764374 50.745258127
0x489b164fec2c7aa0d7f8e919d1c097b543eb3fac87bc67b4ac3d18bfd17fa76dRedeem140064042022-04-28 10:55:49152 days 23 hrs ago0x905e0f438cc1aae570a84c1a62a156ba5c1bb345 IN  0x3d4186902be316b1870e57bf9f4ced37bdd0087a0 AVAX0.004774812171 52.088102409
0x4f1cff7183912533e07b0dbe2201164fe0cedbc471990af9b198dd17e68fe036Claim Usdc139774402022-04-27 18:35:03153 days 15 hrs ago0x1d67b326586a9b1bd46793921c785258eff48ac8 IN  0x3d4186902be316b1870e57bf9f4ced37bdd0087a0 AVAX0.020779094195.142372255
0x97e25ab57b4f3a248157f36e4258ae0c742b51471d4eeb68de82aca8d7134595Redeem139772522022-04-27 18:28:40153 days 15 hrs ago0x1d67b326586a9b1bd46793921c785258eff48ac8 IN  0x3d4186902be316b1870e57bf9f4ced37bdd0087a0 AVAX0.010914172062100.321458034
0xa3199d377e1d297933e28030c498a65421cbec35d2539347e8e7a51ffde9a962Claim Usdc139665402022-04-27 12:29:11153 days 21 hrs ago0x3e868c4c49edc6a14f8f581e20aad5c4ed6bfe62 IN  0x3d4186902be316b1870e57bf9f4ced37bdd0087a0 AVAX0.018687809241 79.353754743
0x08a0b10736496d3b09152cec791a450a5a3146ff50acb86aea36a8d672c09885Redeem139664932022-04-27 12:27:37153 days 21 hrs ago0x3e868c4c49edc6a14f8f581e20aad5c4ed6bfe62 IN  0x3d4186902be316b1870e57bf9f4ced37bdd0087a0 AVAX0.007244537365 78.999142523
0x7a9f1cc91f3e5ffd73e67f040b0cc96610d47ba637627e66ccfb2d7c52edce6bClaim Usdc137979662022-04-23 14:16:46157 days 20 hrs ago0x98cea6ed2cf1047b08942cdeed525dc7eae2e84e IN  0x3d4186902be316b1870e57bf9f4ced37bdd0087a0 AVAX0.018519441433 78.638817127
0x7eb5f3f06172972407f923fcaa0f8d60ff17a360c86f31b8a483ade74e230bddRedeem137979532022-04-23 14:16:20157 days 20 hrs ago0x98cea6ed2cf1047b08942cdeed525dc7eae2e84e IN  0x3d4186902be316b1870e57bf9f4ced37bdd0087a0 AVAX0.007158644002 78.072721747
0xd2d1a00e6f4e6c9f73edfb5965e2e7b0619d7019d436c4b7e08b90ec8f3cb355Claim Usdc137149872022-04-21 15:46:06159 days 18 hrs ago0x53c90e559e405a542ceabf4e08d9df3bf7b80bdb IN  0x3d4186902be316b1870e57bf9f4ced37bdd0087a0 AVAX0.026246700016 111.450955483
0xcefedf86992bda71414b39774afd494cc6a373b095fddd5baf7118c0c4f50c4cRedeem137149732022-04-21 15:45:38159 days 18 hrs ago0x53c90e559e405a542ceabf4e08d9df3bf7b80bdb IN  0x3d4186902be316b1870e57bf9f4ced37bdd0087a0 AVAX0.011860305696 109.018178696
[ Download CSV Export 
Parent Txn Hash Block From To Value
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
StatikMaster

Compiler Version
v0.8.10+commit.fc410830

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at snowtrace.io on 2022-01-03
*/

// SPDX-License-Identifier: MIT

pragma solidity 0.8.10;

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

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

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

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

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

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

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

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

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

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

    /**
     * @dev So here we seperate the rights of the classic ownership into 'owner' and 'withdrawer'
     * this way the developer/owner stays the 'owner' and can make changes at any time
     * but cannot withdraw anymore as soon as the 'withdrawer' gets changes (to the chef contract)
     */
    address private _withdrawer;

    event WithdrawershipTransferred(address indexed previousWithdrawer, address indexed newWithdrawer);

    /**
     * @dev Initializes the contract setting the deployer as the initial withdrawer.
     */
    constructor () {
        address msgSender = _msgSender();
        _withdrawer = msgSender;
        emit WithdrawershipTransferred(address(0), msgSender);
    }

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

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

    /**
     * @dev Transfers withdrawership of the contract to a new account (`newWithdrawer`).
     * Can only be called by the current owner.
     */
    function transferWithdrawership(address newWithdrawer) public virtual onlyOwner {
        require(newWithdrawer != address(0), "Withdrawable: new withdrawer is the zero address");

        emit WithdrawershipTransferred(_withdrawer, newWithdrawer);
        _withdrawer = newWithdrawer;
    }
}

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    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

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

/**
 * @title SafeERC20
 * @dev Wrappers around ERC20 operations that throw on failure (when the token
 * contract returns false). Tokens that return no value (and instead revert or
 * throw on failure) are also supported, non-reverting calls are assumed to be
 * successful.
 * To use this library you can add a `using SafeERC20 for IERC20;` statement to your contract,
 * which allows you to call the safe operations as `token.safeTransfer(...)`, etc.
 */
library SafeERC20 {
    using Address for address;

    function safeTransfer(
        IERC20 token,
        address to,
        uint256 value
    ) internal {
        _callOptionalReturn(token, abi.encodeWithSelector(token.transfer.selector, to, value));
    }

    function safeTransferFrom(
        IERC20 token,
        address from,
        address to,
        uint256 value
    ) internal {
        _callOptionalReturn(token, abi.encodeWithSelector(token.transferFrom.selector, from, to, value));
    }

    /**
     * @dev Deprecated. This function has issues similar to the ones found in
     * {IERC20-approve}, and its usage is discouraged.
     *
     * Whenever possible, use {safeIncreaseAllowance} and
     * {safeDecreaseAllowance} instead.
     */
    function safeApprove(
        IERC20 token,
        address spender,
        uint256 value
    ) internal {
        // safeApprove should only be called when setting an initial allowance,
        // or when resetting it to zero. To increase and decrease it, use
        // 'safeIncreaseAllowance' and 'safeDecreaseAllowance'
        require(
            (value == 0) || (token.allowance(address(this), spender) == 0),
            "SafeERC20: approve from non-zero to non-zero allowance"
        );
        _callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, value));
    }

    function safeIncreaseAllowance(
        IERC20 token,
        address spender,
        uint256 value
    ) internal {
        uint256 newAllowance = token.allowance(address(this), spender) + value;
        _callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, newAllowance));
    }

    function safeDecreaseAllowance(
        IERC20 token,
        address spender,
        uint256 value
    ) internal {
        unchecked {
            uint256 oldAllowance = token.allowance(address(this), spender);
            require(oldAllowance >= value, "SafeERC20: decreased allowance below zero");
            uint256 newAllowance = oldAllowance - value;
            _callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, newAllowance));
        }
    }

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

        bytes memory returndata = address(token).functionCall(data, "SafeERC20: low-level call failed");
        if (returndata.length > 0) {
            // Return data is optional
            require(abi.decode(returndata, (bool)), "SafeERC20: ERC20 operation did not succeed");
        }
    }
}

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

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

    bool private _paused;

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

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

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

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

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

interface IStatikToken is IERC20 {
    function mint(address account, uint256 amount) external;
    function burn(uint256 amount) external;
}

interface IThorusRouter {
    function swapExactTokensForTokensSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
}

contract StatikMaster is Ownable, Withdrawable, ReentrancyGuard, Pausable {
    using SafeERC20 for IERC20;
    using SafeERC20 for IStatikToken;

    IStatikToken public immutable statik;
    IERC20 public immutable usdc;
    IERC20 public immutable thorus;
    IThorusRouter public immutable thorusRouter;
    address public treasury;
    address public strategist;

    address[] public swapPath;
    address[] public swapPathReverse;

    uint public thorusPermille = 200;
    uint public treasuryPermille = 19;
    uint public feePermille = 10;

    uint256 public maxStakeAmount;
    uint256 public maxRedeemAmount;
    uint256 public maxStakePerSecond;
    uint256 internal lastSecond;
    uint256 internal lastSecondUsdcStaked;
    uint256 internal lastSecondThorusPermilleChanged;

    uint256 internal constant decimalDifference = 10 ** 12;
    address private constant dead = 0x000000000000000000000000000000000000dEaD;

    mapping(address => uint256) public statikClaimAmount;
    mapping(address => uint256) public statikClaimSecond;
    mapping(address => uint256) public usdcClaimAmount;
    mapping(address => uint256) public usdcClaimSecond;
    uint256 public totalUsdcClaimAmount;

    event Stake(address indexed user, uint256 amount);
    event StatikClaim(address indexed user, uint256 amount);
    event Redeem(address indexed user, uint256 amount);
    event UsdcClaim(address indexed user, uint256 amount);
    event UsdcWithdrawn(uint256 amount);
    event ThorusWithdrawn(uint256 amount);
    event SwapPathChanged(address[] swapPath);
    event ThorusPermilleChanged(uint256 thorusPermille);
    event TreasuryPermilleChanged(uint256 treasuryPermille);
    event FeePermilleChanged(uint256 feePermille);
    event TreasuryAddressChanged(address treasury);
    event StrategistAddressChanged(address strategist);
    event MaxStakeAmountChanged(uint256 maxStakeAmount);
    event MaxRedeemAmountChanged(uint256 maxRedeemAmount);
    event MaxStakePerSecondChanged(uint256 maxStakePerSecond);

    constructor(IStatikToken _statik, IERC20 _usdc, IERC20 _thorus, IThorusRouter _thorusRouter, address _treasury, uint256 _maxStakeAmount, uint256 _maxRedeemAmount, uint256 _maxStakePerSecond) {
        require(
            address(_statik) != address(0) &&
            address(_usdc) != address(0) &&
            address(_thorus) != address(0) &&
            address(_thorusRouter) != address(0) &&
            _treasury != address(0),
            "zero address in constructor"
        );
        statik = _statik;
        usdc = _usdc;
        thorus = _thorus;
        thorusRouter = _thorusRouter;
        treasury = _treasury;
        swapPath = [address(usdc), address(thorus)];
        swapPathReverse = [address(thorus), address(usdc)];
        maxStakeAmount = _maxStakeAmount;
        maxRedeemAmount = _maxRedeemAmount;
        maxStakePerSecond = _maxStakePerSecond;
    }

    function pause() external onlyOwner {
        _pause();
    }

    function unpause() external onlyOwner {
        _unpause();
    }

    function setSwapPath(address[] calldata _swapPath) external onlyOwner {
        require(_swapPath.length > 1 && _swapPath[0] == address(usdc) && _swapPath[_swapPath.length - 1] == address(thorus), "invalid swap path");
        swapPath = _swapPath;
        swapPathReverse = new address[](_swapPath.length);
        for(uint256 i=0; i<_swapPath.length; i++)
            swapPathReverse[i] = _swapPath[_swapPath.length - 1 - i];

        emit SwapPathChanged(_swapPath);
    }

    function setThorusPermille(uint _thorusPermille) external onlyOwner {
        require(_thorusPermille <= 500, 'thorusPermille too high!');
        thorusPermille = _thorusPermille;
        lastSecondThorusPermilleChanged = block.timestamp;

        emit ThorusPermilleChanged(_thorusPermille);
    }

    function setTreasuryPermille(uint _treasuryPermille) external onlyOwner {
        require(_treasuryPermille <= 50, 'treasuryPermille too high!');
        treasuryPermille = _treasuryPermille;

        emit TreasuryPermilleChanged(_treasuryPermille);
    }

    function setFeePermille(uint _feePermille) external onlyOwner {
        require(_feePermille <= 20, 'feePermille too high!');
        feePermille = _feePermille;

        emit FeePermilleChanged(_feePermille);
    }

    function setTreasuryAddress(address _treasury) external onlyOwner {
        require(_treasury != address(0), 'zero address');
        treasury = _treasury;

        emit TreasuryAddressChanged(_treasury);
    }

    function setStrategistAddress(address _strategist) external onlyOwner {
        strategist = _strategist;

        emit StrategistAddressChanged(_strategist);
    }

    function setMaxStakeAmount(uint256 _maxStakeAmount) external onlyOwner {
        require(maxStakePerSecond >= _maxStakeAmount, 'value not valid');
        maxStakeAmount = _maxStakeAmount;

        emit MaxStakeAmountChanged(_maxStakeAmount);
    }

    function setMaxRedeemAmount(uint256 _maxRedeemAmount) external onlyOwner {
        maxRedeemAmount = _maxRedeemAmount;

        emit MaxRedeemAmountChanged(_maxRedeemAmount);
    }

    function setMaxStakePerSecond(uint256 _maxStakePerSecond) external onlyOwner {
        require(_maxStakePerSecond >= maxStakeAmount, 'value not valid');
        maxStakePerSecond = _maxStakePerSecond;

        emit MaxStakePerSecondChanged(_maxStakePerSecond);
    }

    function stake(uint256 amount, uint256 thorusAmountOutMin, uint256 statikAmountOutMin) external nonReentrant whenNotPaused {
        require(block.timestamp > lastSecondThorusPermilleChanged, 'thorusPermille just changed');
        require(amount > 0, 'amount cannot be zero');
        require(statikClaimAmount[msg.sender] == 0, 'you have to claim first');
        require(amount <= maxStakeAmount, 'amount too high');
        if(lastSecond != block.timestamp) {
            lastSecondUsdcStaked = amount;
            lastSecond = block.timestamp;
        } else {
            lastSecondUsdcStaked += amount;
        }
        require(lastSecondUsdcStaked <= maxStakePerSecond, 'maximum stake per second exceeded');

        usdc.safeTransferFrom(msg.sender, address(this), amount);
        if(feePermille > 0) {
            uint256 feeAmount = amount * feePermille / 1000;
            usdc.safeTransfer(treasury, feeAmount);
            amount = amount - feeAmount;
        }

        uint256 amountWithDecimals = amount * decimalDifference;

        statik.mint(address(this), amountWithDecimals);
        uint256 thorusAmount = amount * thorusPermille / 1000;
        usdc.approve(address(thorusRouter), thorusAmount);
        thorusRouter.swapExactTokensForTokensSupportingFeeOnTransferTokens(
            thorusAmount,
            thorusAmountOutMin,
            swapPath,
            address(this),
            block.timestamp
        );

        require(amountWithDecimals >= statikAmountOutMin, 'statikAmountOutMin not met');
        statikClaimAmount[msg.sender] = amountWithDecimals;
        statikClaimSecond[msg.sender] = block.timestamp;

        emit Stake(msg.sender, amount);
    }

    function claimStatik() external nonReentrant whenNotPaused {
        require(statikClaimAmount[msg.sender] > 0, 'there is nothing to claim');
        require(statikClaimSecond[msg.sender] < block.timestamp, 'you cannnot claim yet');

        uint256 amount = statikClaimAmount[msg.sender];
        statikClaimAmount[msg.sender] = 0;
        statik.safeTransfer(msg.sender, amount);

        emit StatikClaim(msg.sender, amount);
    }

    function redeem(uint256 amount) external nonReentrant whenNotPaused {
        require(amount > 0, 'amount cannot be zero');
        require(usdcClaimAmount[msg.sender] == 0, 'you have to claim first');
        require(amount <= maxRedeemAmount, 'amount too high');

        statik.safeTransferFrom(msg.sender, dead, amount);
        usdcClaimAmount[msg.sender] = amount;
        usdcClaimSecond[msg.sender] = block.timestamp;
        totalUsdcClaimAmount += amount;

        emit Redeem(msg.sender, amount);
    }

    function claimUsdc(uint256 thorusAmountOutMin, uint256 usdcAmountOutMin) external nonReentrant whenNotPaused {
        require(usdcClaimAmount[msg.sender] > 0, 'there is nothing to claim');
        require(usdcClaimSecond[msg.sender] < block.timestamp, 'you cannnot claim yet');
        require(block.timestamp > lastSecondThorusPermilleChanged, 'thorusPermille just changed');

        uint256 amount = usdcClaimAmount[msg.sender];
        usdcClaimAmount[msg.sender] = 0;
        totalUsdcClaimAmount -= amount;

        uint256 amountWithoutDecimals = amount / decimalDifference;

        uint256 usdcTransferAmount = amountWithoutDecimals * (1000 - thorusPermille - treasuryPermille) / 1000;
        require(usdcTransferAmount >= usdcAmountOutMin, 'usdcAmountOutMin not met');
        uint256 usdcTreasuryAmount = amountWithoutDecimals * treasuryPermille / 1000;
        uint256 thorusTransferAmount = thorus.balanceOf(address(this)) * amount / statik.totalSupply();
        statik.burn(amount);
        usdc.safeTransfer(treasury, usdcTreasuryAmount);
        usdc.safeTransfer(msg.sender, usdcTransferAmount);
        thorus.approve(address(thorusRouter), thorusTransferAmount);
        thorusRouter.swapExactTokensForTokensSupportingFeeOnTransferTokens(
            thorusTransferAmount,
            thorusAmountOutMin,
            swapPathReverse,
            msg.sender,
            block.timestamp
        );

        emit UsdcClaim(msg.sender, amount);
    }

    function emergencyRedeemAll() external nonReentrant whenPaused {
        uint256 amount = statik.balanceOf(msg.sender);
        require(amount > 0, 'amount cannot be zero');
        require(usdcClaimAmount[msg.sender] == 0, 'you have to claim first');
        statik.safeTransferFrom(msg.sender, dead, amount);
        usdcClaimAmount[msg.sender] = amount;
        usdcClaimSecond[msg.sender] = block.timestamp;
        totalUsdcClaimAmount += amount;

        emit Redeem(msg.sender, amount);
    }

    function emergencyClaimUsdcAll() external nonReentrant whenPaused {
        require(usdcClaimAmount[msg.sender] > 0, 'there is nothing to claim');
        require(usdcClaimSecond[msg.sender] < block.timestamp, 'you cannot claim yet');

        uint256 amount = usdcClaimAmount[msg.sender];
        usdcClaimAmount[msg.sender] = 0;
        totalUsdcClaimAmount -= amount;

        uint256 amountWithoutDecimals = amount / decimalDifference;

        uint256 usdcTransferAmount = amountWithoutDecimals * (1000 - thorusPermille - treasuryPermille) / 1000;
        uint256 usdcTreasuryAmount = amountWithoutDecimals * treasuryPermille / 1000;
        statik.burn(amount);
        usdc.safeTransfer(treasury, usdcTreasuryAmount);
        usdc.safeTransfer(msg.sender, usdcTransferAmount);

        emit UsdcClaim(msg.sender, amount);
    }

    function withdrawUsdc(uint256 amount) external onlyOwner {
        require(strategist != address(0), 'strategist not set');
        usdc.safeTransfer(strategist, amount);

        emit UsdcWithdrawn(amount);
    }

    function withdrawThorus(uint256 amount) external onlyWithdrawer {
        thorus.safeTransfer(msg.sender, amount);

        emit ThorusWithdrawn(amount);
    }
}

Contract ABI

[{"inputs":[{"internalType":"contract IStatikToken","name":"_statik","type":"address"},{"internalType":"contract IERC20","name":"_usdc","type":"address"},{"internalType":"contract IERC20","name":"_thorus","type":"address"},{"internalType":"contract IThorusRouter","name":"_thorusRouter","type":"address"},{"internalType":"address","name":"_treasury","type":"address"},{"internalType":"uint256","name":"_maxStakeAmount","type":"uint256"},{"internalType":"uint256","name":"_maxRedeemAmount","type":"uint256"},{"internalType":"uint256","name":"_maxStakePerSecond","type":"uint256"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"feePermille","type":"uint256"}],"name":"FeePermilleChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"maxRedeemAmount","type":"uint256"}],"name":"MaxRedeemAmountChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"maxStakeAmount","type":"uint256"}],"name":"MaxStakeAmountChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"maxStakePerSecond","type":"uint256"}],"name":"MaxStakePerSecondChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"}],"name":"Paused","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Redeem","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Stake","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"StatikClaim","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"strategist","type":"address"}],"name":"StrategistAddressChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address[]","name":"swapPath","type":"address[]"}],"name":"SwapPathChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"thorusPermille","type":"uint256"}],"name":"ThorusPermilleChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"ThorusWithdrawn","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"treasury","type":"address"}],"name":"TreasuryAddressChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"treasuryPermille","type":"uint256"}],"name":"TreasuryPermilleChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"}],"name":"Unpaused","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"UsdcClaim","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"UsdcWithdrawn","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousWithdrawer","type":"address"},{"indexed":true,"internalType":"address","name":"newWithdrawer","type":"address"}],"name":"WithdrawershipTransferred","type":"event"},{"inputs":[],"name":"claimStatik","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"thorusAmountOutMin","type":"uint256"},{"internalType":"uint256","name":"usdcAmountOutMin","type":"uint256"}],"name":"claimUsdc","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"emergencyClaimUsdcAll","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"emergencyRedeemAll","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"feePermille","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxRedeemAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxStakeAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxStakePerSecond","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pause","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"paused","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"redeem","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_feePermille","type":"uint256"}],"name":"setFeePermille","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_maxRedeemAmount","type":"uint256"}],"name":"setMaxRedeemAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_maxStakeAmount","type":"uint256"}],"name":"setMaxStakeAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_maxStakePerSecond","type":"uint256"}],"name":"setMaxStakePerSecond","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_strategist","type":"address"}],"name":"setStrategistAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"_swapPath","type":"address[]"}],"name":"setSwapPath","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_thorusPermille","type":"uint256"}],"name":"setThorusPermille","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_treasury","type":"address"}],"name":"setTreasuryAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_treasuryPermille","type":"uint256"}],"name":"setTreasuryPermille","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"thorusAmountOutMin","type":"uint256"},{"internalType":"uint256","name":"statikAmountOutMin","type":"uint256"}],"name":"stake","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"statik","outputs":[{"internalType":"contract IStatikToken","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"statikClaimAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"statikClaimSecond","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"strategist","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"swapPath","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"swapPathReverse","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"thorus","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"thorusPermille","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"thorusRouter","outputs":[{"internalType":"contract IThorusRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalUsdcClaimAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newWithdrawer","type":"address"}],"name":"transferWithdrawership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"treasury","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"treasuryPermille","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"unpause","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"usdc","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"usdcClaimAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"usdcClaimSecond","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"withdrawThorus","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"withdrawUsdc","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"withdrawer","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"}]

61010060405260c86007556013600855600a6009553480156200002157600080fd5b5060405162005deb38038062005deb83398181016040528101906200004791906200079e565b620000676200005b620004b760201b60201c565b620004bf60201b60201c565b600062000079620004b760201b60201c565b905080600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167feb260cacb76ad0f307f85d3c6392e9016fc61903a1e07f111cb2ac060396892860405160405180910390a3506001600281905550600073ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff16141580156200018b5750600073ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff1614155b8015620001c55750600073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff1614155b8015620001ff5750600073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b8015620002395750600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b6200027b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200027290620008c8565b60405180910390fd5b8773ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff16815250508673ffffffffffffffffffffffffffffffffffffffff1660a08173ffffffffffffffffffffffffffffffffffffffff16815250508573ffffffffffffffffffffffffffffffffffffffff1660c08173ffffffffffffffffffffffffffffffffffffffff16815250508473ffffffffffffffffffffffffffffffffffffffff1660e08173ffffffffffffffffffffffffffffffffffffffff168152505083600360016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550604051806040016040528060a05173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200160c05173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681525060059060026200040f9291906200057c565b50604051806040016040528060c05173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200160a05173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152506006906002620004939291906200057c565b5082600a8190555081600b8190555080600c819055505050505050505050620008ea565b600033905090565b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b828054828255906000526020600020908101928215620005f8579160200282015b82811115620005f75782518260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550916020019190600101906200059d565b5b5090506200060791906200060b565b5090565b5b80821115620006265760008160009055506001016200060c565b5090565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006200065c826200062f565b9050919050565b600062000670826200064f565b9050919050565b620006828162000663565b81146200068e57600080fd5b50565b600081519050620006a28162000677565b92915050565b6000620006b5826200064f565b9050919050565b620006c781620006a8565b8114620006d357600080fd5b50565b600081519050620006e781620006bc565b92915050565b6000620006fa826200064f565b9050919050565b6200070c81620006ed565b81146200071857600080fd5b50565b6000815190506200072c8162000701565b92915050565b6200073d816200064f565b81146200074957600080fd5b50565b6000815190506200075d8162000732565b92915050565b6000819050919050565b620007788162000763565b81146200078457600080fd5b50565b60008151905062000798816200076d565b92915050565b600080600080600080600080610100898b031215620007c257620007c16200062a565b5b6000620007d28b828c0162000691565b9850506020620007e58b828c01620006d6565b9750506040620007f88b828c01620006d6565b96505060606200080b8b828c016200071b565b95505060806200081e8b828c016200074c565b94505060a0620008318b828c0162000787565b93505060c0620008448b828c0162000787565b92505060e0620008578b828c0162000787565b9150509295985092959890939650565b600082825260208201905092915050565b7f7a65726f206164647265737320696e20636f6e7374727563746f720000000000600082015250565b6000620008b0601b8362000867565b9150620008bd8262000878565b602082019050919050565b60006020820190508181036000830152620008e381620008a1565b9050919050565b60805160a05160c05160e051615418620009d36000396000818161152c015281816127d70152818161285a0152818161344701526134ca01526000818161076201528181610d4401528181611c1a01528181613218015261340b015260008181610cc50152818161143f0152818161148a0152818161162501528181611924015281816125ec015281816126840152818161279b0152818161337a01526133c5015260008181610b9c0152818161138d01528181611fe60152818161214f015281816126ef01528181612a1601528181612c100152818161318801526132c801526154186000f3fe608060405234801561001057600080fd5b50600436106102695760003560e01c80635d80ca32116101515780639cdac825116100c3578063db006a7511610087578063db006a75146106b4578063dcc2a55e146106d0578063e6937e69146106ec578063f082148a1461070a578063f2458adb14610726578063f2fde38b1461074457610269565b80639cdac82514610622578063a638f2e21461063e578063ba5d3da11461065a578063be36970c14610678578063cdc184241461069657610269565b80636bf5f5a7116101155780636bf5f5a71461059a5780636dc96068146105b85780637912f99f146105d45780638456cb59146105f05780638da5cb5b146105fa5780639b871fcc1461061857610269565b80635d80ca32146104f65780635f784e7a1461051457806361d027b3146105445780636605bfda14610562578063671aec341461057e57610269565b80632eef15dd116101ea57806347559f07116101ae57806347559f0714610422578063513449ae1461043e57806352e382ee1461046e5780635b06dece1461048c5780635c975abb146104a85780635cf9de76146104c657610269565b80632eef15dd146103905780633b864085146103ae5780633d9a09a2146103de5780633e413bee146103fa5780633f4ba83a1461041857610269565b806312ddadbc1161023157806312ddadbc14610300578063147748e11461031c5780631fe4a6861461033857806324cc0766146103565780632bea58af1461038657610269565b8063027651a01461026e578063072110951461028c5780630dc29519146102a85780630fc3d1c6146102c65780630feaa163146102f6575b600080fd5b610276610760565b6040516102839190613e05565b60405180910390f35b6102a660048036038101906102a19190613e68565b610784565b005b6102b0610930565b6040516102bd9190613eae565b60405180910390f35b6102e060048036038101906102db9190613ef5565b610936565b6040516102ed9190613f31565b60405180910390f35b6102fe610975565b005b61031a60048036038101906103159190613fb1565b610c39565b005b61033660048036038101906103319190613ef5565b610f78565b005b610340611081565b60405161034d9190613f31565b60405180910390f35b610370600480360381019061036b9190613ef5565b6110a7565b60405161037d9190613f31565b60405180910390f35b61038e6110e6565b005b61039861152a565b6040516103a5919061401f565b60405180910390f35b6103c860048036038101906103c39190613e68565b61154e565b6040516103d59190613eae565b60405180910390f35b6103f860048036038101906103f39190613ef5565b611566565b005b610402611623565b60405161040f9190613e05565b60405180910390f35b610420611647565b005b61043c60048036038101906104379190613ef5565b6116cd565b005b61045860048036038101906104539190613e68565b6117cf565b6040516104659190613eae565b60405180910390f35b6104766117e7565b6040516104839190613eae565b60405180910390f35b6104a660048036038101906104a19190613ef5565b6117ed565b005b6104b06119a2565b6040516104bd9190614055565b60405180910390f35b6104e060048036038101906104db9190613e68565b6119b9565b6040516104ed9190613eae565b60405180910390f35b6104fe6119d1565b60405161050b9190613eae565b60405180910390f35b61052e60048036038101906105299190613e68565b6119d7565b60405161053b9190613eae565b60405180910390f35b61054c6119ef565b6040516105599190613f31565b60405180910390f35b61057c60048036038101906105779190613e68565b611a15565b005b61059860048036038101906105939190613ef5565b611b7c565b005b6105a2611c98565b6040516105af9190613eae565b60405180910390f35b6105d260048036038101906105cd9190613ef5565b611c9e565b005b6105ee60048036038101906105e99190613ef5565b611d9f565b005b6105f8611ea0565b005b610602611f26565b60405161060f9190613f31565b60405180910390f35b610620611f4f565b005b61063c60048036038101906106379190613e68565b61228e565b005b61065860048036038101906106539190614070565b612385565b005b610662612a14565b60405161066f91906140e4565b60405180910390f35b610680612a38565b60405161068d9190613eae565b60405180910390f35b61069e612a3e565b6040516106ab9190613f31565b60405180910390f35b6106ce60048036038101906106c99190613ef5565b612a68565b005b6106ea60048036038101906106e59190613ef5565b612d4f565b005b6106f4612e51565b6040516107019190613eae565b60405180910390f35b610724600480360381019061071f91906140ff565b612e57565b005b61072e6135bb565b60405161073b9190613eae565b60405180910390f35b61075e60048036038101906107599190613e68565b6135c1565b005b7f000000000000000000000000000000000000000000000000000000000000000081565b61078c6136b9565b73ffffffffffffffffffffffffffffffffffffffff166107aa611f26565b73ffffffffffffffffffffffffffffffffffffffff1614610800576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107f79061419c565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610870576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108679061422e565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167feb260cacb76ad0f307f85d3c6392e9016fc61903a1e07f111cb2ac060396892860405160405180910390a380600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60075481565b6006818154811061094657600080fd5b906000526020600020016000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6002805414156109ba576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109b19061429a565b60405180910390fd5b600280819055506109c96119a2565b15610a09576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a0090614306565b60405180910390fd5b6000601060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205411610a8b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a8290614372565b60405180910390fd5b42601160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410610b0c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b03906143de565b60405180910390fd5b6000601060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490506000601060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610be033827f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166136c19092919063ffffffff16565b3373ffffffffffffffffffffffffffffffffffffffff167f2f6f948db0d77edf3e5aa3b656125d824ebd0b6898d0df4ddcce0e718c64f43e82604051610c269190613eae565b60405180910390a2506001600281905550565b610c416136b9565b73ffffffffffffffffffffffffffffffffffffffff16610c5f611f26565b73ffffffffffffffffffffffffffffffffffffffff1614610cb5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cac9061419c565b60405180910390fd5b600182829050118015610d3b57507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1682826000818110610d0e57610d0d6143fe565b5b9050602002016020810190610d239190613e68565b73ffffffffffffffffffffffffffffffffffffffff16145b8015610dc857507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168282600185859050610d8b919061445c565b818110610d9b57610d9a6143fe565b5b9050602002016020810190610db09190613e68565b73ffffffffffffffffffffffffffffffffffffffff16145b610e07576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dfe906144dc565b60405180910390fd5b818160059190610e18929190613c3f565b508181905067ffffffffffffffff811115610e3657610e356144fc565b5b604051908082528060200260200182016040528015610e645781602001602082028036833780820191505090505b5060069080519060200190610e7a929190613cdf565b5060005b82829050811015610f3a57828282600186869050610e9c919061445c565b610ea6919061445c565b818110610eb657610eb56143fe565b5b9050602002016020810190610ecb9190613e68565b60068281548110610edf57610ede6143fe565b5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508080610f329061452b565b915050610e7e565b507fc188c0915928a2bbdcb4990ece11354efb8410086c92b36e7d4c2594c3f366888282604051610f6c929190614637565b60405180910390a15050565b610f806136b9565b73ffffffffffffffffffffffffffffffffffffffff16610f9e611f26565b73ffffffffffffffffffffffffffffffffffffffff1614610ff4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610feb9061419c565b60405180910390fd5b6101f4811115611039576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611030906146a7565b60405180910390fd5b8060078190555042600f819055507f19f43ea88a09ffc2abf863ed50dc621fe80e6ab7778b1c4b16d34544f7a05fe9816040516110769190613eae565b60405180910390a150565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600581815481106110b757600080fd5b906000526020600020016000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60028054141561112b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111229061429a565b60405180910390fd5b6002808190555061113a6119a2565b611179576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161117090614713565b60405180910390fd5b6000601260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054116111fb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111f290614372565b60405180910390fd5b42601360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541061127c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112739061477f565b60405180910390fd5b6000601260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490506000601260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508060146000828254611317919061445c565b92505081905550600064e8d4a510008261133191906147ce565b905060006103e86008546007546103e861134b919061445c565b611355919061445c565b8361136091906147ff565b61136a91906147ce565b905060006103e86008548461137f91906147ff565b61138991906147ce565b90507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166342966c68856040518263ffffffff1660e01b81526004016113e49190613eae565b600060405180830381600087803b1580156113fe57600080fd5b505af1158015611412573d6000803e3d6000fd5b50505050611483600360019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16827f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166136c19092919063ffffffff16565b6114ce33837f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166136c19092919063ffffffff16565b3373ffffffffffffffffffffffffffffffffffffffff167fa8fc8a92750ba8e2ba168ab548d6b9237ba090df8cfd50a27f8ff461ed584e33856040516115149190613eae565b60405180910390a2505050506001600281905550565b7f000000000000000000000000000000000000000000000000000000000000000081565b60126020528060005260406000206000915090505481565b61156e6136b9565b73ffffffffffffffffffffffffffffffffffffffff1661158c611f26565b73ffffffffffffffffffffffffffffffffffffffff16146115e2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115d99061419c565b60405180910390fd5b80600b819055507f4bbc57e3d66b3f902e2d11faf41b15a62ca184d3a158442ff6851937e3a5c45c816040516116189190613eae565b60405180910390a150565b7f000000000000000000000000000000000000000000000000000000000000000081565b61164f6136b9565b73ffffffffffffffffffffffffffffffffffffffff1661166d611f26565b73ffffffffffffffffffffffffffffffffffffffff16146116c3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116ba9061419c565b60405180910390fd5b6116cb613747565b565b6116d56136b9565b73ffffffffffffffffffffffffffffffffffffffff166116f3611f26565b73ffffffffffffffffffffffffffffffffffffffff1614611749576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117409061419c565b60405180910390fd5b600a5481101561178e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611785906148a5565b60405180910390fd5b80600c819055507ff1890d8fa1de0d9fef99e99ae866974e7bd3af4de07ab57574658ceaa6fb582d816040516117c49190613eae565b60405180910390a150565b60106020528060005260406000206000915090505481565b60085481565b6117f56136b9565b73ffffffffffffffffffffffffffffffffffffffff16611813611f26565b73ffffffffffffffffffffffffffffffffffffffff1614611869576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118609061419c565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614156118fb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118f290614911565b60405180910390fd5b611968600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16827f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166136c19092919063ffffffff16565b7feac1e03b11604905c426e305ea0d0f03a511266c46953ea72307b3d05cfa5546816040516119979190613eae565b60405180910390a150565b6000600360009054906101000a900460ff16905090565b60136020528060005260406000206000915090505481565b600a5481565b60116020528060005260406000206000915090505481565b600360019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b611a1d6136b9565b73ffffffffffffffffffffffffffffffffffffffff16611a3b611f26565b73ffffffffffffffffffffffffffffffffffffffff1614611a91576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a889061419c565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611b01576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611af89061497d565b60405180910390fd5b80600360016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f9073dfac663173e64aa95665faedae52e2246f9bcdd3890fbfaf6733b46bba1381604051611b719190613f31565b60405180910390a150565b611b846136b9565b73ffffffffffffffffffffffffffffffffffffffff16600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611c13576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c0a90614a0f565b60405180910390fd5b611c5e33827f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166136c19092919063ffffffff16565b7f28a16e3423a05dadd0759610017a4e5b4ff7033c1ed7e5c3f1ea5e0acd56fc1881604051611c8d9190613eae565b60405180910390a150565b60095481565b611ca66136b9565b73ffffffffffffffffffffffffffffffffffffffff16611cc4611f26565b73ffffffffffffffffffffffffffffffffffffffff1614611d1a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d119061419c565b60405180910390fd5b6014811115611d5e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d5590614a7b565b60405180910390fd5b806009819055507f33df6c045dd46c630bbd64776a0b88825549977ba9a294d25b020c0b2d3382c281604051611d949190613eae565b60405180910390a150565b611da76136b9565b73ffffffffffffffffffffffffffffffffffffffff16611dc5611f26565b73ffffffffffffffffffffffffffffffffffffffff1614611e1b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e129061419c565b60405180910390fd5b6032811115611e5f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e5690614ae7565b60405180910390fd5b806008819055507f12a5a570422fe04f5451303dbea9ab76414c543f0d93ef34c4352c94ee31ed6f81604051611e959190613eae565b60405180910390a150565b611ea86136b9565b73ffffffffffffffffffffffffffffffffffffffff16611ec6611f26565b73ffffffffffffffffffffffffffffffffffffffff1614611f1c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f139061419c565b60405180910390fd5b611f246137e9565b565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600280541415611f94576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f8b9061429a565b60405180910390fd5b60028081905550611fa36119a2565b611fe2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fd990614713565b60405180910390fd5b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166370a08231336040518263ffffffff1660e01b815260040161203d9190613f31565b602060405180830381865afa15801561205a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061207e9190614b1c565b9050600081116120c3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120ba90614b95565b60405180910390fd5b6000601260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414612145576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161213c90614c01565b60405180910390fd5b6121943361dead837f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1661388c909392919063ffffffff16565b80601260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555042601360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550806014600082825461222e9190614c21565b925050819055503373ffffffffffffffffffffffffffffffffffffffff167f222838db2794d11532d940e8dec38ae307ed0b63cd97c233322e221f998767a68260405161227b9190613eae565b60405180910390a2506001600281905550565b6122966136b9565b73ffffffffffffffffffffffffffffffffffffffff166122b4611f26565b73ffffffffffffffffffffffffffffffffffffffff161461230a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123019061419c565b60405180910390fd5b80600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507fe5e3220233f6a51d177e21aad3808c5a5e98759376cca7b114c804d862388a1e8160405161237a9190613f31565b60405180910390a150565b6002805414156123ca576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123c19061429a565b60405180910390fd5b600280819055506123d96119a2565b15612419576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161241090614306565b60405180910390fd5b600f54421161245d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161245490614cc3565b60405180910390fd5b600083116124a0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161249790614b95565b60405180910390fd5b6000601060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414612522576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161251990614c01565b60405180910390fd5b600a54831115612567576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161255e90614d2f565b60405180910390fd5b42600d54146125835782600e8190555042600d8190555061259d565b82600e60008282546125959190614c21565b925050819055505b600c54600e5411156125e4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125db90614dc1565b60405180910390fd5b6126313330857f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1661388c909392919063ffffffff16565b600060095411156126d85760006103e86009548561264f91906147ff565b61265991906147ce565b90506126c8600360019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16827f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166136c19092919063ffffffff16565b80846126d4919061445c565b9350505b600064e8d4a51000846126eb91906147ff565b90507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166340c10f1930836040518363ffffffff1660e01b8152600401612748929190614de1565b600060405180830381600087803b15801561276257600080fd5b505af1158015612776573d6000803e3d6000fd5b5050505060006103e86007548661278d91906147ff565b61279791906147ce565b90507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663095ea7b37f0000000000000000000000000000000000000000000000000000000000000000836040518363ffffffff1660e01b8152600401612814929190614de1565b6020604051808303816000875af1158015612833573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128579190614e36565b507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16635c11d7958286600530426040518663ffffffff1660e01b81526004016128ba959493929190614f4f565b600060405180830381600087803b1580156128d457600080fd5b505af11580156128e8573d6000803e3d6000fd5b505050508282101561292f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161292690614ff5565b60405180910390fd5b81601060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555042601160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503373ffffffffffffffffffffffffffffffffffffffff167febedb8b3c678666e7f36970bc8f57abf6d8fa2e828c0da91ea5b75bf68ed101a866040516129fd9190613eae565b60405180910390a250506001600281905550505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b600b5481565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600280541415612aad576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612aa49061429a565b60405180910390fd5b60028081905550612abc6119a2565b15612afc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612af390614306565b60405180910390fd5b60008111612b3f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b3690614b95565b60405180910390fd5b6000601260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414612bc1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612bb890614c01565b60405180910390fd5b600b54811115612c06576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612bfd90614d2f565b60405180910390fd5b612c553361dead837f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1661388c909392919063ffffffff16565b80601260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555042601360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508060146000828254612cef9190614c21565b925050819055503373ffffffffffffffffffffffffffffffffffffffff167f222838db2794d11532d940e8dec38ae307ed0b63cd97c233322e221f998767a682604051612d3c9190613eae565b60405180910390a2600160028190555050565b612d576136b9565b73ffffffffffffffffffffffffffffffffffffffff16612d75611f26565b73ffffffffffffffffffffffffffffffffffffffff1614612dcb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612dc29061419c565b60405180910390fd5b80600c541015612e10576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e07906148a5565b60405180910390fd5b80600a819055507f2a2287c1ae72e9a0f67c8510394cc05833cf471b2a06a77b238c37a80391603681604051612e469190613eae565b60405180910390a150565b600c5481565b600280541415612e9c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e939061429a565b60405180910390fd5b60028081905550612eab6119a2565b15612eeb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ee290614306565b60405180910390fd5b6000601260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205411612f6d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f6490614372565b60405180910390fd5b42601360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410612fee576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612fe5906143de565b60405180910390fd5b600f544211613032576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161302990614cc3565b60405180910390fd5b6000601260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490506000601260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555080601460008282546130cd919061445c565b92505081905550600064e8d4a51000826130e791906147ce565b905060006103e86008546007546103e8613101919061445c565b61310b919061445c565b8361311691906147ff565b61312091906147ce565b905083811015613165576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161315c90615061565b60405180910390fd5b60006103e86008548461317891906147ff565b61318291906147ce565b905060007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156131f1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906132159190614b1c565b857f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b815260040161326f9190613f31565b602060405180830381865afa15801561328c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906132b09190614b1c565b6132ba91906147ff565b6132c491906147ce565b90507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166342966c68866040518263ffffffff1660e01b815260040161331f9190613eae565b600060405180830381600087803b15801561333957600080fd5b505af115801561334d573d6000803e3d6000fd5b505050506133be600360019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16837f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166136c19092919063ffffffff16565b61340933847f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166136c19092919063ffffffff16565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663095ea7b37f0000000000000000000000000000000000000000000000000000000000000000836040518363ffffffff1660e01b8152600401613484929190614de1565b6020604051808303816000875af11580156134a3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906134c79190614e36565b507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16635c11d7958289600633426040518663ffffffff1660e01b815260040161352a959493929190614f4f565b600060405180830381600087803b15801561354457600080fd5b505af1158015613558573d6000803e3d6000fd5b505050503373ffffffffffffffffffffffffffffffffffffffff167fa8fc8a92750ba8e2ba168ab548d6b9237ba090df8cfd50a27f8ff461ed584e33866040516135a29190613eae565b60405180910390a2505050505060016002819055505050565b60145481565b6135c96136b9565b73ffffffffffffffffffffffffffffffffffffffff166135e7611f26565b73ffffffffffffffffffffffffffffffffffffffff161461363d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016136349061419c565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156136ad576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016136a4906150f3565b60405180910390fd5b6136b681613915565b50565b600033905090565b6137428363a9059cbb60e01b84846040516024016136e0929190614de1565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506139d2565b505050565b61374f6119a2565b61378e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161378590614713565b60405180910390fd5b6000600360006101000a81548160ff0219169083151502179055507f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa6137d26136b9565b6040516137df9190613f31565b60405180910390a1565b6137f16119a2565b15613831576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161382890614306565b60405180910390fd5b6001600360006101000a81548160ff0219169083151502179055507f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2586138756136b9565b6040516138829190613f31565b60405180910390a1565b61390f846323b872dd60e01b8585856040516024016138ad93929190615113565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506139d2565b50505050565b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000613a34826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff16613a999092919063ffffffff16565b9050600081511115613a945780806020019051810190613a549190614e36565b613a93576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613a8a906151bc565b60405180910390fd5b5b505050565b6060613aa88484600085613ab1565b90509392505050565b606082471015613af6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613aed9061524e565b60405180910390fd5b613aff85613bc5565b613b3e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613b35906152ba565b60405180910390fd5b6000808673ffffffffffffffffffffffffffffffffffffffff168587604051613b679190615354565b60006040518083038185875af1925050503d8060008114613ba4576040519150601f19603f3d011682016040523d82523d6000602084013e613ba9565b606091505b5091509150613bb9828286613bd8565b92505050949350505050565b600080823b905060008111915050919050565b60608315613be857829050613c38565b600083511115613bfb5782518084602001fd5b816040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613c2f91906153c0565b60405180910390fd5b9392505050565b828054828255906000526020600020908101928215613cce579160200282015b82811115613ccd57823573ffffffffffffffffffffffffffffffffffffffff168260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555091602001919060010190613c5f565b5b509050613cdb9190613d69565b5090565b828054828255906000526020600020908101928215613d58579160200282015b82811115613d575782518260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555091602001919060010190613cff565b5b509050613d659190613d69565b5090565b5b80821115613d82576000816000905550600101613d6a565b5090565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b6000613dcb613dc6613dc184613d86565b613da6565b613d86565b9050919050565b6000613ddd82613db0565b9050919050565b6000613def82613dd2565b9050919050565b613dff81613de4565b82525050565b6000602082019050613e1a6000830184613df6565b92915050565b600080fd5b600080fd5b6000613e3582613d86565b9050919050565b613e4581613e2a565b8114613e5057600080fd5b50565b600081359050613e6281613e3c565b92915050565b600060208284031215613e7e57613e7d613e20565b5b6000613e8c84828501613e53565b91505092915050565b6000819050919050565b613ea881613e95565b82525050565b6000602082019050613ec36000830184613e9f565b92915050565b613ed281613e95565b8114613edd57600080fd5b50565b600081359050613eef81613ec9565b92915050565b600060208284031215613f0b57613f0a613e20565b5b6000613f1984828501613ee0565b91505092915050565b613f2b81613e2a565b82525050565b6000602082019050613f466000830184613f22565b92915050565b600080fd5b600080fd5b600080fd5b60008083601f840112613f7157613f70613f4c565b5b8235905067ffffffffffffffff811115613f8e57613f8d613f51565b5b602083019150836020820283011115613faa57613fa9613f56565b5b9250929050565b60008060208385031215613fc857613fc7613e20565b5b600083013567ffffffffffffffff811115613fe657613fe5613e25565b5b613ff285828601613f5b565b92509250509250929050565b600061400982613dd2565b9050919050565b61401981613ffe565b82525050565b60006020820190506140346000830184614010565b92915050565b60008115159050919050565b61404f8161403a565b82525050565b600060208201905061406a6000830184614046565b92915050565b60008060006060848603121561408957614088613e20565b5b600061409786828701613ee0565b93505060206140a886828701613ee0565b92505060406140b986828701613ee0565b9150509250925092565b60006140ce82613dd2565b9050919050565b6140de816140c3565b82525050565b60006020820190506140f960008301846140d5565b92915050565b6000806040838503121561411657614115613e20565b5b600061412485828601613ee0565b925050602061413585828601613ee0565b9150509250929050565b600082825260208201905092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600061418660208361413f565b915061419182614150565b602082019050919050565b600060208201905081810360008301526141b581614179565b9050919050565b7f576974686472617761626c653a206e657720776974686472617765722069732060008201527f746865207a65726f206164647265737300000000000000000000000000000000602082015250565b600061421860308361413f565b9150614223826141bc565b604082019050919050565b600060208201905081810360008301526142478161420b565b9050919050565b7f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00600082015250565b6000614284601f8361413f565b915061428f8261424e565b602082019050919050565b600060208201905081810360008301526142b381614277565b9050919050565b7f5061757361626c653a2070617573656400000000000000000000000000000000600082015250565b60006142f060108361413f565b91506142fb826142ba565b602082019050919050565b6000602082019050818103600083015261431f816142e3565b9050919050565b7f7468657265206973206e6f7468696e6720746f20636c61696d00000000000000600082015250565b600061435c60198361413f565b915061436782614326565b602082019050919050565b6000602082019050818103600083015261438b8161434f565b9050919050565b7f796f752063616e6e6e6f7420636c61696d207965740000000000000000000000600082015250565b60006143c860158361413f565b91506143d382614392565b602082019050919050565b600060208201905081810360008301526143f7816143bb565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061446782613e95565b915061447283613e95565b9250828210156144855761448461442d565b5b828203905092915050565b7f696e76616c696420737761702070617468000000000000000000000000000000600082015250565b60006144c660118361413f565b91506144d182614490565b602082019050919050565b600060208201905081810360008301526144f5816144b9565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600061453682613e95565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156145695761456861442d565b5b600182019050919050565b600082825260208201905092915050565b6000819050919050565b61459881613e2a565b82525050565b60006145aa838361458f565b60208301905092915050565b60006145c56020840184613e53565b905092915050565b6000602082019050919050565b60006145e68385614574565b93506145f182614585565b8060005b8581101561462a5761460782846145b6565b614611888261459e565b975061461c836145cd565b9250506001810190506145f5565b5085925050509392505050565b600060208201905081810360008301526146528184866145da565b90509392505050565b7f74686f7275735065726d696c6c6520746f6f2068696768210000000000000000600082015250565b600061469160188361413f565b915061469c8261465b565b602082019050919050565b600060208201905081810360008301526146c081614684565b9050919050565b7f5061757361626c653a206e6f7420706175736564000000000000000000000000600082015250565b60006146fd60148361413f565b9150614708826146c7565b602082019050919050565b6000602082019050818103600083015261472c816146f0565b9050919050565b7f796f752063616e6e6f7420636c61696d20796574000000000000000000000000600082015250565b600061476960148361413f565b915061477482614733565b602082019050919050565b600060208201905081810360008301526147988161475c565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006147d982613e95565b91506147e483613e95565b9250826147f4576147f361479f565b5b828204905092915050565b600061480a82613e95565b915061481583613e95565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561484e5761484d61442d565b5b828202905092915050565b7f76616c7565206e6f742076616c69640000000000000000000000000000000000600082015250565b600061488f600f8361413f565b915061489a82614859565b602082019050919050565b600060208201905081810360008301526148be81614882565b9050919050565b7f73747261746567697374206e6f74207365740000000000000000000000000000600082015250565b60006148fb60128361413f565b9150614906826148c5565b602082019050919050565b6000602082019050818103600083015261492a816148ee565b9050919050565b7f7a65726f20616464726573730000000000000000000000000000000000000000600082015250565b6000614967600c8361413f565b915061497282614931565b602082019050919050565b600060208201905081810360008301526149968161495a565b9050919050565b7f576974686472617761626c653a2063616c6c6572206973206e6f74207468652060008201527f7769746864726177657200000000000000000000000000000000000000000000602082015250565b60006149f9602a8361413f565b9150614a048261499d565b604082019050919050565b60006020820190508181036000830152614a28816149ec565b9050919050565b7f6665655065726d696c6c6520746f6f2068696768210000000000000000000000600082015250565b6000614a6560158361413f565b9150614a7082614a2f565b602082019050919050565b60006020820190508181036000830152614a9481614a58565b9050919050565b7f74726561737572795065726d696c6c6520746f6f206869676821000000000000600082015250565b6000614ad1601a8361413f565b9150614adc82614a9b565b602082019050919050565b60006020820190508181036000830152614b0081614ac4565b9050919050565b600081519050614b1681613ec9565b92915050565b600060208284031215614b3257614b31613e20565b5b6000614b4084828501614b07565b91505092915050565b7f616d6f756e742063616e6e6f74206265207a65726f0000000000000000000000600082015250565b6000614b7f60158361413f565b9150614b8a82614b49565b602082019050919050565b60006020820190508181036000830152614bae81614b72565b9050919050565b7f796f75206861766520746f20636c61696d206669727374000000000000000000600082015250565b6000614beb60178361413f565b9150614bf682614bb5565b602082019050919050565b60006020820190508181036000830152614c1a81614bde565b9050919050565b6000614c2c82613e95565b9150614c3783613e95565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115614c6c57614c6b61442d565b5b828201905092915050565b7f74686f7275735065726d696c6c65206a757374206368616e6765640000000000600082015250565b6000614cad601b8361413f565b9150614cb882614c77565b602082019050919050565b60006020820190508181036000830152614cdc81614ca0565b9050919050565b7f616d6f756e7420746f6f20686967680000000000000000000000000000000000600082015250565b6000614d19600f8361413f565b9150614d2482614ce3565b602082019050919050565b60006020820190508181036000830152614d4881614d0c565b9050919050565b7f6d6178696d756d207374616b6520706572207365636f6e64206578636565646560008201527f6400000000000000000000000000000000000000000000000000000000000000602082015250565b6000614dab60218361413f565b9150614db682614d4f565b604082019050919050565b60006020820190508181036000830152614dda81614d9e565b9050919050565b6000604082019050614df66000830185613f22565b614e036020830184613e9f565b9392505050565b614e138161403a565b8114614e1e57600080fd5b50565b600081519050614e3081614e0a565b92915050565b600060208284031215614e4c57614e4b613e20565b5b6000614e5a84828501614e21565b91505092915050565b600081549050919050565b60008190508160005260206000209050919050565b60008160001c9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000614ec3614ebe83614e83565b614e90565b9050919050565b6000614ed68254614eb0565b9050919050565b6000600182019050919050565b6000614ef582614e63565b614eff8185614574565b9350614f0a83614e6e565b8060005b83811015614f4257614f1f82614eca565b614f29888261459e565b9750614f3483614edd565b925050600181019050614f0e565b5085935050505092915050565b600060a082019050614f646000830188613e9f565b614f716020830187613e9f565b8181036040830152614f838186614eea565b9050614f926060830185613f22565b614f9f6080830184613e9f565b9695505050505050565b7f73746174696b416d6f756e744f75744d696e206e6f74206d6574000000000000600082015250565b6000614fdf601a8361413f565b9150614fea82614fa9565b602082019050919050565b6000602082019050818103600083015261500e81614fd2565b9050919050565b7f75736463416d6f756e744f75744d696e206e6f74206d65740000000000000000600082015250565b600061504b60188361413f565b915061505682615015565b602082019050919050565b6000602082019050818103600083015261507a8161503e565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006150dd60268361413f565b91506150e882615081565b604082019050919050565b6000602082019050818103600083015261510c816150d0565b9050919050565b60006060820190506151286000830186613f22565b6151356020830185613f22565b6151426040830184613e9f565b949350505050565b7f5361666545524332303a204552433230206f7065726174696f6e20646964206e60008201527f6f74207375636365656400000000000000000000000000000000000000000000602082015250565b60006151a6602a8361413f565b91506151b18261514a565b604082019050919050565b600060208201905081810360008301526151d581615199565b9050919050565b7f416464726573733a20696e73756666696369656e742062616c616e636520666f60008201527f722063616c6c0000000000000000000000000000000000000000000000000000602082015250565b600061523860268361413f565b9150615243826151dc565b604082019050919050565b600060208201905081810360008301526152678161522b565b9050919050565b7f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000600082015250565b60006152a4601d8361413f565b91506152af8261526e565b602082019050919050565b600060208201905081810360008301526152d381615297565b9050919050565b600081519050919050565b600081905092915050565b60005b8381101561530e5780820151818401526020810190506152f3565b8381111561531d576000848401525b50505050565b600061532e826152da565b61533881856152e5565b93506153488185602086016152f0565b80840191505092915050565b60006153608284615323565b915081905092915050565b600081519050919050565b6000601f19601f8301169050919050565b60006153928261536b565b61539c818561413f565b93506153ac8185602086016152f0565b6153b581615376565b840191505092915050565b600060208201905081810360008301526153da8184615387565b90509291505056fea264697066735822122005f78cab241cebe1361b964fe84eb9ba34d50555d40816fb62f97b9c342789fb64736f6c634300080a003300000000000000000000000097d367a5f900f5c9db4370d0d801fc52332244c7000000000000000000000000a7d7079b0fead91f3e65f86e8915cb59c1a4c664000000000000000000000000ae4aa155d2987b454c29450ef4f862cf00907b61000000000000000000000000b5b2444edf79b00d40f463f79158d1187a0d0c250000000000000000000000000ce8df46e23e4ec4ffa959af72fac0b6375cd7b5000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000

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

00000000000000000000000097d367a5f900f5c9db4370d0d801fc52332244c7000000000000000000000000a7d7079b0fead91f3e65f86e8915cb59c1a4c664000000000000000000000000ae4aa155d2987b454c29450ef4f862cf00907b61000000000000000000000000b5b2444edf79b00d40f463f79158d1187a0d0c250000000000000000000000000ce8df46e23e4ec4ffa959af72fac0b6375cd7b5000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000

-----Decoded View---------------
Arg [0] : _statik (address): 0x97d367a5f900f5c9db4370d0d801fc52332244c7
Arg [1] : _usdc (address): 0xa7d7079b0fead91f3e65f86e8915cb59c1a4c664
Arg [2] : _thorus (address): 0xae4aa155d2987b454c29450ef4f862cf00907b61
Arg [3] : _thorusRouter (address): 0xb5b2444edf79b00d40f463f79158d1187a0d0c25
Arg [4] : _treasury (address): 0x0ce8df46e23e4ec4ffa959af72fac0b6375cd7b5
Arg [5] : _maxStakeAmount (uint256): 0
Arg [6] : _maxRedeemAmount (uint256): 0
Arg [7] : _maxStakePerSecond (uint256): 0

-----Encoded View---------------
8 Constructor Arguments found :
Arg [0] : 00000000000000000000000097d367a5f900f5c9db4370d0d801fc52332244c7
Arg [1] : 000000000000000000000000a7d7079b0fead91f3e65f86e8915cb59c1a4c664
Arg [2] : 000000000000000000000000ae4aa155d2987b454c29450ef4f862cf00907b61
Arg [3] : 000000000000000000000000b5b2444edf79b00d40f463f79158d1187a0d0c25
Arg [4] : 0000000000000000000000000ce8df46e23e4ec4ffa959af72fac0b6375cd7b5
Arg [5] : 0000000000000000000000000000000000000000000000000000000000000000
Arg [6] : 0000000000000000000000000000000000000000000000000000000000000000
Arg [7] : 0000000000000000000000000000000000000000000000000000000000000000


Deployed ByteCode Sourcemap

24163:11561:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24396:30;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4466:296;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;24620:32;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24579;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;31468:443;;;:::i;:::-;;27293:483;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;27784:305;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;24513:25;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24547;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;34473:851;;;:::i;:::-;;24433:43;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25245:50;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;29253:184;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;24361:28;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;27218:67;;;:::i;:::-;;29445:271;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;25127:52;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24659:33;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;35332:218;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;22581:86;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25302:50;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24736:29;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25186:52;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24483:23;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;28593:215;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;35558:163;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;24699:28;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;28365:220;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;28097:260;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;27147:63;;;:::i;:::-;;1785:87;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;33956:509;;;:::i;:::-;;28816:168;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;29724:1736;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;24318:36;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24772:30;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3975:89;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;31919:524;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;28992:253;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;24809:32;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;32451:1497;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;25359:35;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2240:192;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;24396:30;;;:::o;4466:296::-;2016:12;:10;:12::i;:::-;2005:23;;:7;:5;:7::i;:::-;:23;;;1997:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;4590:1:::1;4565:27;;:13;:27;;;;4557:88;;;;;;;;;;;;:::i;:::-;;;;;;;;;4702:13;4663:53;;4689:11;;;;;;;;;;;4663:53;;;;;;;;;;;;4741:13;4727:11;;:27;;;;;;;;;;;;;;;;;;4466:296:::0;:::o;24620:32::-;;;;:::o;24579:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;31468:443::-;6420:1;7016:7;;:19;;7008:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;6420:1;7149:7;:18;;;;22907:8:::1;:6;:8::i;:::-;22906:9;22898:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;31578:1:::2;31546:17;:29;31564:10;31546:29;;;;;;;;;;;;;;;;:33;31538:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;31660:15;31628:17;:29;31646:10;31628:29;;;;;;;;;;;;;;;;:47;31620:81;;;;;;;;;;;;:::i;:::-;;;;;;;;;31714:14;31731:17;:29;31749:10;31731:29;;;;;;;;;;;;;;;;31714:46;;31803:1;31771:17;:29;31789:10;31771:29;;;;;;;;;;;;;;;:33;;;;31815:39;31835:10;31847:6;31815;:19;;;;:39;;;;;:::i;:::-;31884:10;31872:31;;;31896:6;31872:31;;;;;;:::i;:::-;;;;;;;;31527:384;6376:1:::0;7328:7;:22;;;;31468:443::o;27293:483::-;2016:12;:10;:12::i;:::-;2005:23;;:7;:5;:7::i;:::-;:23;;;1997:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;27401:1:::1;27382:9;;:16;;:20;:53;;;;;27430:4;27406:29;;:9;;27416:1;27406:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;:29;;;27382:53;:107;;;;;27482:6;27439:50;;:9;;27468:1;27449:9;;:16;;:20;;;;:::i;:::-;27439:31;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;:50;;;27382:107;27374:137;;;;;;;;;;;;:::i;:::-;;;;;;;;;27533:9;;27522:8;:20;;;;;;;:::i;:::-;;27585:9;;:16;;27571:31;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27553:15;:49;;;;;;;;;;;;:::i;:::-;;27617:9;27613:111;27632:9;;:16;;27630:1;:18;27613:111;;;27689:9;;27722:1;27718;27699:9;;:16;;:20;;;;:::i;:::-;:24;;;;:::i;:::-;27689:35;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;27668:15;27684:1;27668:18;;;;;;;;:::i;:::-;;;;;;;;;;:56;;;;;;;;;;;;;;;;;;27650:3;;;;;:::i;:::-;;;;27613:111;;;;27742:26;27758:9;;27742:26;;;;;;;:::i;:::-;;;;;;;;27293:483:::0;;:::o;27784:305::-;2016:12;:10;:12::i;:::-;2005:23;;:7;:5;:7::i;:::-;:23;;;1997:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;27890:3:::1;27871:15;:22;;27863:59;;;;;;;;;;;;:::i;:::-;;;;;;;;;27950:15;27933:14;:32;;;;28010:15;27976:31;:49;;;;28043:38;28065:15;28043:38;;;;;;:::i;:::-;;;;;;;;27784:305:::0;:::o;24513:25::-;;;;;;;;;;;;;:::o;24547:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;34473:851::-;6420:1;7016:7;;:19;;7008:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;6420:1;7149:7;:18;;;;23184:8:::1;:6;:8::i;:::-;23176:41;;;;;;;;;;;;:::i;:::-;;;;;;;;;34588:1:::2;34558:15;:27;34574:10;34558:27;;;;;;;;;;;;;;;;:31;34550:69;;;;;;;;;;;;:::i;:::-;;;;;;;;;34668:15;34638;:27;34654:10;34638:27;;;;;;;;;;;;;;;;:45;34630:78;;;;;;;;;;;;:::i;:::-;;;;;;;;;34721:14;34738:15;:27;34754:10;34738:27;;;;;;;;;;;;;;;;34721:44;;34806:1;34776:15;:27;34792:10;34776:27;;;;;;;;;;;;;;;:31;;;;34842:6;34818:20;;:30;;;;;;;:::i;:::-;;;;;;;;34861:29;25029:8;34893:6;:26;;;;:::i;:::-;34861:58;;34932:26;35030:4;35010:16;;34993:14;;34986:4;:21;;;;:::i;:::-;:40;;;;:::i;:::-;34961:21;:66;;;;:::i;:::-;:73;;;;:::i;:::-;34932:102;;35045:26;35117:4;35098:16;;35074:21;:40;;;;:::i;:::-;:47;;;;:::i;:::-;35045:76;;35132:6;:11;;;35144:6;35132:19;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;;;;;35162:47;35180:8;;;;;;;;;;;35190:18;35162:4;:17;;;;:47;;;;;:::i;:::-;35220:49;35238:10;35250:18;35220:4;:17;;;;:49;;;;;:::i;:::-;35297:10;35287:29;;;35309:6;35287:29;;;;;;:::i;:::-;;;;;;;;34539:785;;;;6376:1:::0;7328:7;:22;;;;34473:851::o;24433:43::-;;;:::o;25245:50::-;;;;;;;;;;;;;;;;;:::o;29253:184::-;2016:12;:10;:12::i;:::-;2005:23;;:7;:5;:7::i;:::-;:23;;;1997:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;29355:16:::1;29337:15;:34;;;;29389:40;29412:16;29389:40;;;;;;:::i;:::-;;;;;;;;29253:184:::0;:::o;24361:28::-;;;:::o;27218:67::-;2016:12;:10;:12::i;:::-;2005:23;;:7;:5;:7::i;:::-;:23;;;1997:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;27267:10:::1;:8;:10::i;:::-;27218:67::o:0;29445:271::-;2016:12;:10;:12::i;:::-;2005:23;;:7;:5;:7::i;:::-;:23;;;1997:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;29563:14:::1;;29541:18;:36;;29533:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;29628:18;29608:17;:38;;;;29664:44;29689:18;29664:44;;;;;;:::i;:::-;;;;;;;;29445:271:::0;:::o;25127:52::-;;;;;;;;;;;;;;;;;:::o;24659:33::-;;;;:::o;35332:218::-;2016:12;:10;:12::i;:::-;2005:23;;:7;:5;:7::i;:::-;:23;;;1997:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;35430:1:::1;35408:24;;:10;;;;;;;;;;;:24;;;;35400:55;;;;;;;;;;;;:::i;:::-;;;;;;;;;35466:37;35484:10;;;;;;;;;;;35496:6;35466:4;:17;;;;:37;;;;;:::i;:::-;35521:21;35535:6;35521:21;;;;;;:::i;:::-;;;;;;;;35332:218:::0;:::o;22581:86::-;22628:4;22652:7;;;;;;;;;;;22645:14;;22581:86;:::o;25302:50::-;;;;;;;;;;;;;;;;;:::o;24736:29::-;;;;:::o;25186:52::-;;;;;;;;;;;;;;;;;:::o;24483:23::-;;;;;;;;;;;;;:::o;28593:215::-;2016:12;:10;:12::i;:::-;2005:23;;:7;:5;:7::i;:::-;:23;;;1997:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;28699:1:::1;28678:23;;:9;:23;;;;28670:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;28740:9;28729:8;;:20;;;;;;;;;;;;;;;;;;28767:33;28790:9;28767:33;;;;;;:::i;:::-;;;;;;;;28593:215:::0;:::o;35558:163::-;4222:12;:10;:12::i;:::-;4207:27;;:11;;;;;;;;;;;:27;;;4199:82;;;;;;;;;;;;:::i;:::-;;;;;;;;;35633:39:::1;35653:10;35665:6;35633;:19;;;;:39;;;;;:::i;:::-;35690:23;35706:6;35690:23;;;;;;:::i;:::-;;;;;;;;35558:163:::0;:::o;24699:28::-;;;;:::o;28365:220::-;2016:12;:10;:12::i;:::-;2005:23;;:7;:5;:7::i;:::-;:23;;;1997:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;28462:2:::1;28446:12;:18;;28438:52;;;;;;;;;;;;:::i;:::-;;;;;;;;;28515:12;28501:11;:26;;;;28545:32;28564:12;28545:32;;;;;;:::i;:::-;;;;;;;;28365:220:::0;:::o;28097:260::-;2016:12;:10;:12::i;:::-;2005:23;;:7;:5;:7::i;:::-;:23;;;1997:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;28209:2:::1;28188:17;:23;;28180:62;;;;;;;;;;;;:::i;:::-;;;;;;;;;28272:17;28253:16;:36;;;;28307:42;28331:17;28307:42;;;;;;:::i;:::-;;;;;;;;28097:260:::0;:::o;27147:63::-;2016:12;:10;:12::i;:::-;2005:23;;:7;:5;:7::i;:::-;:23;;;1997:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;27194:8:::1;:6;:8::i;:::-;27147:63::o:0;1785:87::-;1831:7;1858:6;;;;;;;;;;;1851:13;;1785:87;:::o;33956:509::-;6420:1;7016:7;;:19;;7008:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;6420:1;7149:7;:18;;;;23184:8:::1;:6;:8::i;:::-;23176:41;;;;;;;;;;;;:::i;:::-;;;;;;;;;34030:14:::2;34047:6;:16;;;34064:10;34047:28;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;34030:45;;34103:1;34094:6;:10;34086:44;;;;;;;;;;;;:::i;:::-;;;;;;;;;34180:1;34149:15;:27;34165:10;34149:27;;;;;;;;;;;;;;;;:32;34141:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;34220:49;34244:10;25076:42;34262:6;34220;:23;;;;:49;;;;;;:::i;:::-;34310:6;34280:15;:27;34296:10;34280:27;;;;;;;;;;;;;;;:36;;;;34357:15;34327;:27;34343:10;34327:27;;;;;;;;;;;;;;;:45;;;;34407:6;34383:20;;:30;;;;;;;:::i;:::-;;;;;;;;34438:10;34431:26;;;34450:6;34431:26;;;;;;:::i;:::-;;;;;;;;34019:446;6376:1:::0;7328:7;:22;;;;33956:509::o;28816:168::-;2016:12;:10;:12::i;:::-;2005:23;;:7;:5;:7::i;:::-;:23;;;1997:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;28910:11:::1;28897:10;;:24;;;;;;;;;;;;;;;;;;28939:37;28964:11;28939:37;;;;;;:::i;:::-;;;;;;;;28816:168:::0;:::o;29724:1736::-;6420:1;7016:7;;:19;;7008:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;6420:1;7149:7;:18;;;;22907:8:::1;:6;:8::i;:::-;22906:9;22898:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;29884:31:::2;;29866:15;:49;29858:89;;;;;;;;;;;;:::i;:::-;;;;;;;;;29975:1;29966:6;:10;29958:44;;;;;;;;;;;;:::i;:::-;;;;;;;;;30054:1;30021:17;:29;30039:10;30021:29;;;;;;;;;;;;;;;;:34;30013:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;30112:14;;30102:6;:24;;30094:52;;;;;;;;;;;;:::i;:::-;;;;;;;;;30174:15;30160:10;;:29;30157:196;;30229:6;30206:20;:29;;;;30263:15;30250:10;:28;;;;30157:196;;;30335:6;30311:20;;:30;;;;;;;:::i;:::-;;;;;;;;30157:196;30395:17;;30371:20;;:41;;30363:87;;;;;;;;;;;;:::i;:::-;;;;;;;;;30463:56;30485:10;30505:4;30512:6;30463:4;:21;;;;:56;;;;;;:::i;:::-;30547:1;30533:11;;:15;30530:189;;;30565:17;30608:4;30594:11;;30585:6;:20;;;;:::i;:::-;:27;;;;:::i;:::-;30565:47;;30627:38;30645:8;;;;;;;;;;;30655:9;30627:4;:17;;;;:38;;;;;:::i;:::-;30698:9;30689:6;:18;;;;:::i;:::-;30680:27;;30550:169;30530:189;30731:26;25029:8;30760:6;:26;;;;:::i;:::-;30731:55;;30799:6;:11;;;30819:4;30826:18;30799:46;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;;;;;30856:20;30905:4;30888:14;;30879:6;:23;;;;:::i;:::-;:30;;;;:::i;:::-;30856:53;;30920:4;:12;;;30941;30956;30920:49;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;30980:12;:66;;;31061:12;31088:18;31121:8;31152:4;31172:15;30980:218;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;;;;;31241:18;31219;:40;;31211:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;31333:18;31301:17;:29;31319:10;31301:29;;;;;;;;;;;;;;;:50;;;;31394:15;31362:17;:29;31380:10;31362:29;;;;;;;;;;;;;;;:47;;;;31433:10;31427:25;;;31445:6;31427:25;;;;;;:::i;:::-;;;;;;;;29847:1613;;6376:1:::0;7328:7;:22;;;;29724:1736;;;:::o;24318:36::-;;;:::o;24772:30::-;;;;:::o;3975:89::-;4018:7;4045:11;;;;;;;;;;;4038:18;;3975:89;:::o;31919:524::-;6420:1;7016:7;;:19;;7008:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;6420:1;7149:7;:18;;;;22907:8:::1;:6;:8::i;:::-;22906:9;22898:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;32015:1:::2;32006:6;:10;31998:44;;;;;;;;;;;;:::i;:::-;;;;;;;;;32092:1;32061:15;:27;32077:10;32061:27;;;;;;;;;;;;;;;;:32;32053:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;32150:15;;32140:6;:25;;32132:53;;;;;;;;;;;;:::i;:::-;;;;;;;;;32198:49;32222:10;25076:42;32240:6;32198;:23;;;;:49;;;;;;:::i;:::-;32288:6;32258:15;:27;32274:10;32258:27;;;;;;;;;;;;;;;:36;;;;32335:15;32305;:27;32321:10;32305:27;;;;;;;;;;;;;;;:45;;;;32385:6;32361:20;;:30;;;;;;;:::i;:::-;;;;;;;;32416:10;32409:26;;;32428:6;32409:26;;;;;;:::i;:::-;;;;;;;;6376:1:::0;7328:7;:22;;;;31919:524;:::o;28992:253::-;2016:12;:10;:12::i;:::-;2005:23;;:7;:5;:7::i;:::-;:23;;;1997:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;29103:15:::1;29082:17;;:36;;29074:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;29166:15;29149:14;:32;;;;29199:38;29221:15;29199:38;;;;;;:::i;:::-;;;;;;;;28992:253:::0;:::o;24809:32::-;;;;:::o;32451:1497::-;6420:1;7016:7;;:19;;7008:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;6420:1;7149:7;:18;;;;22907:8:::1;:6;:8::i;:::-;22906:9;22898:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;32609:1:::2;32579:15;:27;32595:10;32579:27;;;;;;;;;;;;;;;;:31;32571:69;;;;;;;;;;;;:::i;:::-;;;;;;;;;32689:15;32659;:27;32675:10;32659:27;;;;;;;;;;;;;;;;:45;32651:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;32767:31;;32749:15;:49;32741:89;;;;;;;;;;;;:::i;:::-;;;;;;;;;32843:14;32860:15;:27;32876:10;32860:27;;;;;;;;;;;;;;;;32843:44;;32928:1;32898:15;:27;32914:10;32898:27;;;;;;;;;;;;;;;:31;;;;32964:6;32940:20;;:30;;;;;;;:::i;:::-;;;;;;;;32983:29;25029:8;33015:6;:26;;;;:::i;:::-;32983:58;;33054:26;33152:4;33132:16;;33115:14;;33108:4;:21;;;;:::i;:::-;:40;;;;:::i;:::-;33083:21;:66;;;;:::i;:::-;:73;;;;:::i;:::-;33054:102;;33197:16;33175:18;:38;;33167:75;;;;;;;;;;;;:::i;:::-;;;;;;;;;33253:26;33325:4;33306:16;;33282:21;:40;;;;:::i;:::-;:47;;;;:::i;:::-;33253:76;;33340:28;33414:6;:18;;;:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;33405:6;33371;:16;;;33396:4;33371:31;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:40;;;;:::i;:::-;:63;;;;:::i;:::-;33340:94;;33445:6;:11;;;33457:6;33445:19;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;;;;;33475:47;33493:8;;;;;;;;;;;33503:18;33475:4;:17;;;;:47;;;;;:::i;:::-;33533:49;33551:10;33563:18;33533:4;:17;;;;:49;;;;;:::i;:::-;33593:6;:14;;;33616:12;33631:20;33593:59;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;33663:12;:66;;;33744:20;33779:18;33812:15;33842:10;33867:15;33663:230;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;;;;;33921:10;33911:29;;;33933:6;33911:29;;;;;;:::i;:::-;;;;;;;;32560:1388;;;;;6376:1:::0;7328:7;:22;;;;32451:1497;;:::o;25359:35::-;;;;:::o;2240:192::-;2016:12;:10;:12::i;:::-;2005:23;;:7;:5;:7::i;:::-;:23;;;1997:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;2349:1:::1;2329:22;;:8;:22;;;;2321:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;2405:19;2415:8;2405:9;:19::i;:::-;2240:192:::0;:::o;601:98::-;654:7;681:10;674:17;;601:98;:::o;18433:211::-;18550:86;18570:5;18600:23;;;18625:2;18629:5;18577:58;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18550:19;:86::i;:::-;18433:211;;;:::o;23640:120::-;23184:8;:6;:8::i;:::-;23176:41;;;;;;;;;;;;:::i;:::-;;;;;;;;;23709:5:::1;23699:7;;:15;;;;;;;;;;;;;;;;;;23730:22;23739:12;:10;:12::i;:::-;23730:22;;;;;;:::i;:::-;;;;;;;;23640:120::o:0;23381:118::-;22907:8;:6;:8::i;:::-;22906:9;22898:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;23451:4:::1;23441:7;;:14;;;;;;;;;;;;;;;;;;23471:20;23478:12;:10;:12::i;:::-;23471:20;;;;;;:::i;:::-;;;;;;;;23381:118::o:0;18652:248::-;18796:96;18816:5;18846:27;;;18875:4;18881:2;18885:5;18823:68;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18796:19;:96::i;:::-;18652:248;;;;:::o;2440:135::-;2530:8;2501:38;;2522:6;;;;;;;;;;2501:38;;;;;;;;;;;;2559:8;2550:6;;:17;;;;;;;;;;;;;;;;;;2440:135;:::o;21006:716::-;21430:23;21456:69;21484:4;21456:69;;;;;;;;;;;;;;;;;21464:5;21456:27;;;;:69;;;;;:::i;:::-;21430:95;;21560:1;21540:10;:17;:21;21536:179;;;21637:10;21626:30;;;;;;;;;;;;:::i;:::-;21618:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;21536:179;21076:646;21006:716;;:::o;13599:229::-;13736:12;13768:52;13790:6;13798:4;13804:1;13807:12;13768:21;:52::i;:::-;13761:59;;13599:229;;;;;:::o;14719:511::-;14889:12;14947:5;14922:21;:30;;14914:81;;;;;;;;;;;;:::i;:::-;;;;;;;;;15014:18;15025:6;15014:10;:18::i;:::-;15006:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;15080:12;15094:23;15121:6;:11;;15140:5;15147:4;15121:31;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15079:73;;;;15170:52;15188:7;15197:10;15209:12;15170:17;:52::i;:::-;15163:59;;;;14719:511;;;;;;:::o;10793:387::-;10853:4;11061:12;11128:7;11116:20;11108:28;;11171:1;11164:4;:8;11157:15;;;10793:387;;;:::o;17188:712::-;17338:12;17367:7;17363:530;;;17398:10;17391:17;;;;17363:530;17532:1;17512:10;:17;:21;17508:374;;;17710:10;17704:17;17771:15;17758:10;17754:2;17750:19;17743:44;17508:374;17853:12;17846:20;;;;;;;;;;;:::i;:::-;;;;;;;;17188:712;;;;;;:::o;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;:::o;7:126:1:-;44:7;84:42;77:5;73:54;62:65;;7:126;;;:::o;139:60::-;167:3;188:5;181:12;;139:60;;;:::o;205:142::-;255:9;288:53;306:34;315:24;333:5;315:24;:::i;:::-;306:34;:::i;:::-;288:53;:::i;:::-;275:66;;205:142;;;:::o;353:126::-;403:9;436:37;467:5;436:37;:::i;:::-;423:50;;353:126;;;:::o;485:140::-;549:9;582:37;613:5;582:37;:::i;:::-;569:50;;485:140;;;:::o;631:159::-;732:51;777:5;732:51;:::i;:::-;727:3;720:64;631:159;;:::o;796:250::-;903:4;941:2;930:9;926:18;918:26;;954:85;1036:1;1025:9;1021:17;1012:6;954:85;:::i;:::-;796:250;;;;:::o;1133:117::-;1242:1;1239;1232:12;1256:117;1365:1;1362;1355:12;1379:96;1416:7;1445:24;1463:5;1445:24;:::i;:::-;1434:35;;1379:96;;;:::o;1481:122::-;1554:24;1572:5;1554:24;:::i;:::-;1547:5;1544:35;1534:63;;1593:1;1590;1583:12;1534:63;1481:122;:::o;1609:139::-;1655:5;1693:6;1680:20;1671:29;;1709:33;1736:5;1709:33;:::i;:::-;1609:139;;;;:::o;1754:329::-;1813:6;1862:2;1850:9;1841:7;1837:23;1833:32;1830:119;;;1868:79;;:::i;:::-;1830:119;1988:1;2013:53;2058:7;2049:6;2038:9;2034:22;2013:53;:::i;:::-;2003:63;;1959:117;1754:329;;;;:::o;2089:77::-;2126:7;2155:5;2144:16;;2089:77;;;:::o;2172:118::-;2259:24;2277:5;2259:24;:::i;:::-;2254:3;2247:37;2172:118;;:::o;2296:222::-;2389:4;2427:2;2416:9;2412:18;2404:26;;2440:71;2508:1;2497:9;2493:17;2484:6;2440:71;:::i;:::-;2296:222;;;;:::o;2524:122::-;2597:24;2615:5;2597:24;:::i;:::-;2590:5;2587:35;2577:63;;2636:1;2633;2626:12;2577:63;2524:122;:::o;2652:139::-;2698:5;2736:6;2723:20;2714:29;;2752:33;2779:5;2752:33;:::i;:::-;2652:139;;;;:::o;2797:329::-;2856:6;2905:2;2893:9;2884:7;2880:23;2876:32;2873:119;;;2911:79;;:::i;:::-;2873:119;3031:1;3056:53;3101:7;3092:6;3081:9;3077:22;3056:53;:::i;:::-;3046:63;;3002:117;2797:329;;;;:::o;3132:118::-;3219:24;3237:5;3219:24;:::i;:::-;3214:3;3207:37;3132:118;;:::o;3256:222::-;3349:4;3387:2;3376:9;3372:18;3364:26;;3400:71;3468:1;3457:9;3453:17;3444:6;3400:71;:::i;:::-;3256:222;;;;:::o;3484:117::-;3593:1;3590;3583:12;3607:117;3716:1;3713;3706:12;3730:117;3839:1;3836;3829:12;3870:568;3943:8;3953:6;4003:3;3996:4;3988:6;3984:17;3980:27;3970:122;;4011:79;;:::i;:::-;3970:122;4124:6;4111:20;4101:30;;4154:18;4146:6;4143:30;4140:117;;;4176:79;;:::i;:::-;4140:117;4290:4;4282:6;4278:17;4266:29;;4344:3;4336:4;4328:6;4324:17;4314:8;4310:32;4307:41;4304:128;;;4351:79;;:::i;:::-;4304:128;3870:568;;;;;:::o;4444:559::-;4530:6;4538;4587:2;4575:9;4566:7;4562:23;4558:32;4555:119;;;4593:79;;:::i;:::-;4555:119;4741:1;4730:9;4726:17;4713:31;4771:18;4763:6;4760:30;4757:117;;;4793:79;;:::i;:::-;4757:117;4906:80;4978:7;4969:6;4958:9;4954:22;4906:80;:::i;:::-;4888:98;;;;4684:312;4444:559;;;;;:::o;5009:147::-;5080:9;5113:37;5144:5;5113:37;:::i;:::-;5100:50;;5009:147;;;:::o;5162:173::-;5270:58;5322:5;5270:58;:::i;:::-;5265:3;5258:71;5162:173;;:::o;5341:264::-;5455:4;5493:2;5482:9;5478:18;5470:26;;5506:92;5595:1;5584:9;5580:17;5571:6;5506:92;:::i;:::-;5341:264;;;;:::o;5611:90::-;5645:7;5688:5;5681:13;5674:21;5663:32;;5611:90;;;:::o;5707:109::-;5788:21;5803:5;5788:21;:::i;:::-;5783:3;5776:34;5707:109;;:::o;5822:210::-;5909:4;5947:2;5936:9;5932:18;5924:26;;5960:65;6022:1;6011:9;6007:17;5998:6;5960:65;:::i;:::-;5822:210;;;;:::o;6038:619::-;6115:6;6123;6131;6180:2;6168:9;6159:7;6155:23;6151:32;6148:119;;;6186:79;;:::i;:::-;6148:119;6306:1;6331:53;6376:7;6367:6;6356:9;6352:22;6331:53;:::i;:::-;6321:63;;6277:117;6433:2;6459:53;6504:7;6495:6;6484:9;6480:22;6459:53;:::i;:::-;6449:63;;6404:118;6561:2;6587:53;6632:7;6623:6;6612:9;6608:22;6587:53;:::i;:::-;6577:63;;6532:118;6038:619;;;;;:::o;6663:146::-;6733:9;6766:37;6797:5;6766:37;:::i;:::-;6753:50;;6663:146;;;:::o;6815:171::-;6922:57;6973:5;6922:57;:::i;:::-;6917:3;6910:70;6815:171;;:::o;6992:262::-;7105:4;7143:2;7132:9;7128:18;7120:26;;7156:91;7244:1;7233:9;7229:17;7220:6;7156:91;:::i;:::-;6992:262;;;;:::o;7260:474::-;7328:6;7336;7385:2;7373:9;7364:7;7360:23;7356:32;7353:119;;;7391:79;;:::i;:::-;7353:119;7511:1;7536:53;7581:7;7572:6;7561:9;7557:22;7536:53;:::i;:::-;7526:63;;7482:117;7638:2;7664:53;7709:7;7700:6;7689:9;7685:22;7664:53;:::i;:::-;7654:63;;7609:118;7260:474;;;;;:::o;7740:169::-;7824:11;7858:6;7853:3;7846:19;7898:4;7893:3;7889:14;7874:29;;7740:169;;;;:::o;7915:182::-;8055:34;8051:1;8043:6;8039:14;8032:58;7915:182;:::o;8103:366::-;8245:3;8266:67;8330:2;8325:3;8266:67;:::i;:::-;8259:74;;8342:93;8431:3;8342:93;:::i;:::-;8460:2;8455:3;8451:12;8444:19;;8103:366;;;:::o;8475:419::-;8641:4;8679:2;8668:9;8664:18;8656:26;;8728:9;8722:4;8718:20;8714:1;8703:9;8699:17;8692:47;8756:131;8882:4;8756:131;:::i;:::-;8748:139;;8475:419;;;:::o;8900:235::-;9040:34;9036:1;9028:6;9024:14;9017:58;9109:18;9104:2;9096:6;9092:15;9085:43;8900:235;:::o;9141:366::-;9283:3;9304:67;9368:2;9363:3;9304:67;:::i;:::-;9297:74;;9380:93;9469:3;9380:93;:::i;:::-;9498:2;9493:3;9489:12;9482:19;;9141:366;;;:::o;9513:419::-;9679:4;9717:2;9706:9;9702:18;9694:26;;9766:9;9760:4;9756:20;9752:1;9741:9;9737:17;9730:47;9794:131;9920:4;9794:131;:::i;:::-;9786:139;;9513:419;;;:::o;9938:181::-;10078:33;10074:1;10066:6;10062:14;10055:57;9938:181;:::o;10125:366::-;10267:3;10288:67;10352:2;10347:3;10288:67;:::i;:::-;10281:74;;10364:93;10453:3;10364:93;:::i;:::-;10482:2;10477:3;10473:12;10466:19;;10125:366;;;:::o;10497:419::-;10663:4;10701:2;10690:9;10686:18;10678:26;;10750:9;10744:4;10740:20;10736:1;10725:9;10721:17;10714:47;10778:131;10904:4;10778:131;:::i;:::-;10770:139;;10497:419;;;:::o;10922:166::-;11062:18;11058:1;11050:6;11046:14;11039:42;10922:166;:::o;11094:366::-;11236:3;11257:67;11321:2;11316:3;11257:67;:::i;:::-;11250:74;;11333:93;11422:3;11333:93;:::i;:::-;11451:2;11446:3;11442:12;11435:19;;11094:366;;;:::o;11466:419::-;11632:4;11670:2;11659:9;11655:18;11647:26;;11719:9;11713:4;11709:20;11705:1;11694:9;11690:17;11683:47;11747:131;11873:4;11747:131;:::i;:::-;11739:139;;11466:419;;;:::o;11891:175::-;12031:27;12027:1;12019:6;12015:14;12008:51;11891:175;:::o;12072:366::-;12214:3;12235:67;12299:2;12294:3;12235:67;:::i;:::-;12228:74;;12311:93;12400:3;12311:93;:::i;:::-;12429:2;12424:3;12420:12;12413:19;;12072:366;;;:::o;12444:419::-;12610:4;12648:2;12637:9;12633:18;12625:26;;12697:9;12691:4;12687:20;12683:1;12672:9;12668:17;12661:47;12725:131;12851:4;12725:131;:::i;:::-;12717:139;;12444:419;;;:::o;12869:171::-;13009:23;13005:1;12997:6;12993:14;12986:47;12869:171;:::o;13046:366::-;13188:3;13209:67;13273:2;13268:3;13209:67;:::i;:::-;13202:74;;13285:93;13374:3;13285:93;:::i;:::-;13403:2;13398:3;13394:12;13387:19;;13046:366;;;:::o;13418:419::-;13584:4;13622:2;13611:9;13607:18;13599:26;;13671:9;13665:4;13661:20;13657:1;13646:9;13642:17;13635:47;13699:131;13825:4;13699:131;:::i;:::-;13691:139;;13418:419;;;:::o;13843:180::-;13891:77;13888:1;13881:88;13988:4;13985:1;13978:15;14012:4;14009:1;14002:15;14029:180;14077:77;14074:1;14067:88;14174:4;14171:1;14164:15;14198:4;14195:1;14188:15;14215:191;14255:4;14275:20;14293:1;14275:20;:::i;:::-;14270:25;;14309:20;14327:1;14309:20;:::i;:::-;14304:25;;14348:1;14345;14342:8;14339:34;;;14353:18;;:::i;:::-;14339:34;14398:1;14395;14391:9;14383:17;;14215:191;;;;:::o;14412:167::-;14552:19;14548:1;14540:6;14536:14;14529:43;14412:167;:::o;14585:366::-;14727:3;14748:67;14812:2;14807:3;14748:67;:::i;:::-;14741:74;;14824:93;14913:3;14824:93;:::i;:::-;14942:2;14937:3;14933:12;14926:19;;14585:366;;;:::o;14957:419::-;15123:4;15161:2;15150:9;15146:18;15138:26;;15210:9;15204:4;15200:20;15196:1;15185:9;15181:17;15174:47;15238:131;15364:4;15238:131;:::i;:::-;15230:139;;14957:419;;;:::o;15382:180::-;15430:77;15427:1;15420:88;15527:4;15524:1;15517:15;15551:4;15548:1;15541:15;15568:233;15607:3;15630:24;15648:5;15630:24;:::i;:::-;15621:33;;15676:66;15669:5;15666:77;15663:103;;;15746:18;;:::i;:::-;15663:103;15793:1;15786:5;15782:13;15775:20;;15568:233;;;:::o;15807:184::-;15906:11;15940:6;15935:3;15928:19;15980:4;15975:3;15971:14;15956:29;;15807:184;;;;:::o;15997:102::-;16066:4;16089:3;16081:11;;15997:102;;;:::o;16105:108::-;16182:24;16200:5;16182:24;:::i;:::-;16177:3;16170:37;16105:108;;:::o;16219:179::-;16288:10;16309:46;16351:3;16343:6;16309:46;:::i;:::-;16387:4;16382:3;16378:14;16364:28;;16219:179;;;;:::o;16404:122::-;16456:5;16481:39;16516:2;16511:3;16507:12;16502:3;16481:39;:::i;:::-;16472:48;;16404:122;;;;:::o;16532:115::-;16604:4;16636;16631:3;16627:14;16619:22;;16532:115;;;:::o;16683:699::-;16812:3;16835:86;16914:6;16909:3;16835:86;:::i;:::-;16828:93;;16945:58;16997:5;16945:58;:::i;:::-;17026:7;17057:1;17042:315;17067:6;17064:1;17061:13;17042:315;;;17137:42;17172:6;17163:7;17137:42;:::i;:::-;17199:63;17258:3;17243:13;17199:63;:::i;:::-;17192:70;;17285:62;17340:6;17285:62;:::i;:::-;17275:72;;17102:255;17089:1;17086;17082:9;17077:14;;17042:315;;;17046:14;17373:3;17366:10;;16817:565;;16683:699;;;;;:::o;17388:393::-;17541:4;17579:2;17568:9;17564:18;17556:26;;17628:9;17622:4;17618:20;17614:1;17603:9;17599:17;17592:47;17656:118;17769:4;17760:6;17752;17656:118;:::i;:::-;17648:126;;17388:393;;;;;:::o;17787:174::-;17927:26;17923:1;17915:6;17911:14;17904:50;17787:174;:::o;17967:366::-;18109:3;18130:67;18194:2;18189:3;18130:67;:::i;:::-;18123:74;;18206:93;18295:3;18206:93;:::i;:::-;18324:2;18319:3;18315:12;18308:19;;17967:366;;;:::o;18339:419::-;18505:4;18543:2;18532:9;18528:18;18520:26;;18592:9;18586:4;18582:20;18578:1;18567:9;18563:17;18556:47;18620:131;18746:4;18620:131;:::i;:::-;18612:139;;18339:419;;;:::o;18764:170::-;18904:22;18900:1;18892:6;18888:14;18881:46;18764:170;:::o;18940:366::-;19082:3;19103:67;19167:2;19162:3;19103:67;:::i;:::-;19096:74;;19179:93;19268:3;19179:93;:::i;:::-;19297:2;19292:3;19288:12;19281:19;;18940:366;;;:::o;19312:419::-;19478:4;19516:2;19505:9;19501:18;19493:26;;19565:9;19559:4;19555:20;19551:1;19540:9;19536:17;19529:47;19593:131;19719:4;19593:131;:::i;:::-;19585:139;;19312:419;;;:::o;19737:170::-;19877:22;19873:1;19865:6;19861:14;19854:46;19737:170;:::o;19913:366::-;20055:3;20076:67;20140:2;20135:3;20076:67;:::i;:::-;20069:74;;20152:93;20241:3;20152:93;:::i;:::-;20270:2;20265:3;20261:12;20254:19;;19913:366;;;:::o;20285:419::-;20451:4;20489:2;20478:9;20474:18;20466:26;;20538:9;20532:4;20528:20;20524:1;20513:9;20509:17;20502:47;20566:131;20692:4;20566:131;:::i;:::-;20558:139;;20285:419;;;:::o;20710:180::-;20758:77;20755:1;20748:88;20855:4;20852:1;20845:15;20879:4;20876:1;20869:15;20896:185;20936:1;20953:20;20971:1;20953:20;:::i;:::-;20948:25;;20987:20;21005:1;20987:20;:::i;:::-;20982:25;;21026:1;21016:35;;21031:18;;:::i;:::-;21016:35;21073:1;21070;21066:9;21061:14;;20896:185;;;;:::o;21087:348::-;21127:7;21150:20;21168:1;21150:20;:::i;:::-;21145:25;;21184:20;21202:1;21184:20;:::i;:::-;21179:25;;21372:1;21304:66;21300:74;21297:1;21294:81;21289:1;21282:9;21275:17;21271:105;21268:131;;;21379:18;;:::i;:::-;21268:131;21427:1;21424;21420:9;21409:20;;21087:348;;;;:::o;21441:165::-;21581:17;21577:1;21569:6;21565:14;21558:41;21441:165;:::o;21612:366::-;21754:3;21775:67;21839:2;21834:3;21775:67;:::i;:::-;21768:74;;21851:93;21940:3;21851:93;:::i;:::-;21969:2;21964:3;21960:12;21953:19;;21612:366;;;:::o;21984:419::-;22150:4;22188:2;22177:9;22173:18;22165:26;;22237:9;22231:4;22227:20;22223:1;22212:9;22208:17;22201:47;22265:131;22391:4;22265:131;:::i;:::-;22257:139;;21984:419;;;:::o;22409:168::-;22549:20;22545:1;22537:6;22533:14;22526:44;22409:168;:::o;22583:366::-;22725:3;22746:67;22810:2;22805:3;22746:67;:::i;:::-;22739:74;;22822:93;22911:3;22822:93;:::i;:::-;22940:2;22935:3;22931:12;22924:19;;22583:366;;;:::o;22955:419::-;23121:4;23159:2;23148:9;23144:18;23136:26;;23208:9;23202:4;23198:20;23194:1;23183:9;23179:17;23172:47;23236:131;23362:4;23236:131;:::i;:::-;23228:139;;22955:419;;;:::o;23380:162::-;23520:14;23516:1;23508:6;23504:14;23497:38;23380:162;:::o;23548:366::-;23690:3;23711:67;23775:2;23770:3;23711:67;:::i;:::-;23704:74;;23787:93;23876:3;23787:93;:::i;:::-;23905:2;23900:3;23896:12;23889:19;;23548:366;;;:::o;23920:419::-;24086:4;24124:2;24113:9;24109:18;24101:26;;24173:9;24167:4;24163:20;24159:1;24148:9;24144:17;24137:47;24201:131;24327:4;24201:131;:::i;:::-;24193:139;;23920:419;;;:::o;24345:229::-;24485:34;24481:1;24473:6;24469:14;24462:58;24554:12;24549:2;24541:6;24537:15;24530:37;24345:229;:::o;24580:366::-;24722:3;24743:67;24807:2;24802:3;24743:67;:::i;:::-;24736:74;;24819:93;24908:3;24819:93;:::i;:::-;24937:2;24932:3;24928:12;24921:19;;24580:366;;;:::o;24952:419::-;25118:4;25156:2;25145:9;25141:18;25133:26;;25205:9;25199:4;25195:20;25191:1;25180:9;25176:17;25169:47;25233:131;25359:4;25233:131;:::i;:::-;25225:139;;24952:419;;;:::o;25377:171::-;25517:23;25513:1;25505:6;25501:14;25494:47;25377:171;:::o;25554:366::-;25696:3;25717:67;25781:2;25776:3;25717:67;:::i;:::-;25710:74;;25793:93;25882:3;25793:93;:::i;:::-;25911:2;25906:3;25902:12;25895:19;;25554:366;;;:::o;25926:419::-;26092:4;26130:2;26119:9;26115:18;26107:26;;26179:9;26173:4;26169:20;26165:1;26154:9;26150:17;26143:47;26207:131;26333:4;26207:131;:::i;:::-;26199:139;;25926:419;;;:::o;26351:176::-;26491:28;26487:1;26479:6;26475:14;26468:52;26351:176;:::o;26533:366::-;26675:3;26696:67;26760:2;26755:3;26696:67;:::i;:::-;26689:74;;26772:93;26861:3;26772:93;:::i;:::-;26890:2;26885:3;26881:12;26874:19;;26533:366;;;:::o;26905:419::-;27071:4;27109:2;27098:9;27094:18;27086:26;;27158:9;27152:4;27148:20;27144:1;27133:9;27129:17;27122:47;27186:131;27312:4;27186:131;:::i;:::-;27178:139;;26905:419;;;:::o;27330:143::-;27387:5;27418:6;27412:13;27403:22;;27434:33;27461:5;27434:33;:::i;:::-;27330:143;;;;:::o;27479:351::-;27549:6;27598:2;27586:9;27577:7;27573:23;27569:32;27566:119;;;27604:79;;:::i;:::-;27566:119;27724:1;27749:64;27805:7;27796:6;27785:9;27781:22;27749:64;:::i;:::-;27739:74;;27695:128;27479:351;;;;:::o;27836:171::-;27976:23;27972:1;27964:6;27960:14;27953:47;27836:171;:::o;28013:366::-;28155:3;28176:67;28240:2;28235:3;28176:67;:::i;:::-;28169:74;;28252:93;28341:3;28252:93;:::i;:::-;28370:2;28365:3;28361:12;28354:19;;28013:366;;;:::o;28385:419::-;28551:4;28589:2;28578:9;28574:18;28566:26;;28638:9;28632:4;28628:20;28624:1;28613:9;28609:17;28602:47;28666:131;28792:4;28666:131;:::i;:::-;28658:139;;28385:419;;;:::o;28810:173::-;28950:25;28946:1;28938:6;28934:14;28927:49;28810:173;:::o;28989:366::-;29131:3;29152:67;29216:2;29211:3;29152:67;:::i;:::-;29145:74;;29228:93;29317:3;29228:93;:::i;:::-;29346:2;29341:3;29337:12;29330:19;;28989:366;;;:::o;29361:419::-;29527:4;29565:2;29554:9;29550:18;29542:26;;29614:9;29608:4;29604:20;29600:1;29589:9;29585:17;29578:47;29642:131;29768:4;29642:131;:::i;:::-;29634:139;;29361:419;;;:::o;29786:305::-;29826:3;29845:20;29863:1;29845:20;:::i;:::-;29840:25;;29879:20;29897:1;29879:20;:::i;:::-;29874:25;;30033:1;29965:66;29961:74;29958:1;29955:81;29952:107;;;30039:18;;:::i;:::-;29952:107;30083:1;30080;30076:9;30069:16;;29786:305;;;;:::o;30097:177::-;30237:29;30233:1;30225:6;30221:14;30214:53;30097:177;:::o;30280:366::-;30422:3;30443:67;30507:2;30502:3;30443:67;:::i;:::-;30436:74;;30519:93;30608:3;30519:93;:::i;:::-;30637:2;30632:3;30628:12;30621:19;;30280:366;;;:::o;30652:419::-;30818:4;30856:2;30845:9;30841:18;30833:26;;30905:9;30899:4;30895:20;30891:1;30880:9;30876:17;30869:47;30933:131;31059:4;30933:131;:::i;:::-;30925:139;;30652:419;;;:::o;31077:165::-;31217:17;31213:1;31205:6;31201:14;31194:41;31077:165;:::o;31248:366::-;31390:3;31411:67;31475:2;31470:3;31411:67;:::i;:::-;31404:74;;31487:93;31576:3;31487:93;:::i;:::-;31605:2;31600:3;31596:12;31589:19;;31248:366;;;:::o;31620:419::-;31786:4;31824:2;31813:9;31809:18;31801:26;;31873:9;31867:4;31863:20;31859:1;31848:9;31844:17;31837:47;31901:131;32027:4;31901:131;:::i;:::-;31893:139;;31620:419;;;:::o;32045:220::-;32185:34;32181:1;32173:6;32169:14;32162:58;32254:3;32249:2;32241:6;32237:15;32230:28;32045:220;:::o;32271:366::-;32413:3;32434:67;32498:2;32493:3;32434:67;:::i;:::-;32427:74;;32510:93;32599:3;32510:93;:::i;:::-;32628:2;32623:3;32619:12;32612:19;;32271:366;;;:::o;32643:419::-;32809:4;32847:2;32836:9;32832:18;32824:26;;32896:9;32890:4;32886:20;32882:1;32871:9;32867:17;32860:47;32924:131;33050:4;32924:131;:::i;:::-;32916:139;;32643:419;;;:::o;33068:332::-;33189:4;33227:2;33216:9;33212:18;33204:26;;33240:71;33308:1;33297:9;33293:17;33284:6;33240:71;:::i;:::-;33321:72;33389:2;33378:9;33374:18;33365:6;33321:72;:::i;:::-;33068:332;;;;;:::o;33406:116::-;33476:21;33491:5;33476:21;:::i;:::-;33469:5;33466:32;33456:60;;33512:1;33509;33502:12;33456:60;33406:116;:::o;33528:137::-;33582:5;33613:6;33607:13;33598:22;;33629:30;33653:5;33629:30;:::i;:::-;33528:137;;;;:::o;33671:345::-;33738:6;33787:2;33775:9;33766:7;33762:23;33758:32;33755:119;;;33793:79;;:::i;:::-;33755:119;33913:1;33938:61;33991:7;33982:6;33971:9;33967:22;33938:61;:::i;:::-;33928:71;;33884:125;33671:345;;;;:::o;34022:111::-;34086:6;34120:5;34114:12;34104:22;;34022:111;;;:::o;34139:156::-;34203:4;34226:3;34218:11;;34249:3;34246:1;34239:14;34283:4;34280:1;34270:18;34262:26;;34139:156;;;:::o;34301:102::-;34343:8;34390:5;34387:1;34383:13;34362:34;;34301:102;;;:::o;34409:139::-;34459:7;34499:42;34492:5;34488:54;34477:65;;34409:139;;;:::o;34554:166::-;34623:5;34648:66;34679:34;34702:10;34679:34;:::i;:::-;34648:66;:::i;:::-;34639:75;;34554:166;;;:::o;34726:144::-;34781:5;34806:57;34857:4;34851:11;34806:57;:::i;:::-;34797:66;;34726:144;;;:::o;34876:110::-;34943:4;34975;34970:3;34966:14;34958:22;;34876:110;;;:::o;35022:751::-;35138:3;35167:51;35212:5;35167:51;:::i;:::-;35234:86;35313:6;35308:3;35234:86;:::i;:::-;35227:93;;35344:53;35391:5;35344:53;:::i;:::-;35420:7;35451:1;35436:312;35461:6;35458:1;35455:13;35436:312;;;35531:44;35568:6;35531:44;:::i;:::-;35595:63;35654:3;35639:13;35595:63;:::i;:::-;35588:70;;35681:57;35731:6;35681:57;:::i;:::-;35671:67;;35496:252;35483:1;35480;35476:9;35471:14;;35436:312;;;35440:14;35764:3;35757:10;;35143:630;;;35022:751;;;;:::o;35779:809::-;36031:4;36069:3;36058:9;36054:19;36046:27;;36083:71;36151:1;36140:9;36136:17;36127:6;36083:71;:::i;:::-;36164:72;36232:2;36221:9;36217:18;36208:6;36164:72;:::i;:::-;36283:9;36277:4;36273:20;36268:2;36257:9;36253:18;36246:48;36311:105;36411:4;36402:6;36311:105;:::i;:::-;36303:113;;36426:72;36494:2;36483:9;36479:18;36470:6;36426:72;:::i;:::-;36508:73;36576:3;36565:9;36561:19;36552:6;36508:73;:::i;:::-;35779:809;;;;;;;;:::o;36594:176::-;36734:28;36730:1;36722:6;36718:14;36711:52;36594:176;:::o;36776:366::-;36918:3;36939:67;37003:2;36998:3;36939:67;:::i;:::-;36932:74;;37015:93;37104:3;37015:93;:::i;:::-;37133:2;37128:3;37124:12;37117:19;;36776:366;;;:::o;37148:419::-;37314:4;37352:2;37341:9;37337:18;37329:26;;37401:9;37395:4;37391:20;37387:1;37376:9;37372:17;37365:47;37429:131;37555:4;37429:131;:::i;:::-;37421:139;;37148:419;;;:::o;37573:174::-;37713:26;37709:1;37701:6;37697:14;37690:50;37573:174;:::o;37753:366::-;37895:3;37916:67;37980:2;37975:3;37916:67;:::i;:::-;37909:74;;37992:93;38081:3;37992:93;:::i;:::-;38110:2;38105:3;38101:12;38094:19;;37753:366;;;:::o;38125:419::-;38291:4;38329:2;38318:9;38314:18;38306:26;;38378:9;38372:4;38368:20;38364:1;38353:9;38349:17;38342:47;38406:131;38532:4;38406:131;:::i;:::-;38398:139;;38125:419;;;:::o;38550:225::-;38690:34;38686:1;38678:6;38674:14;38667:58;38759:8;38754:2;38746:6;38742:15;38735:33;38550:225;:::o;38781:366::-;38923:3;38944:67;39008:2;39003:3;38944:67;:::i;:::-;38937:74;;39020:93;39109:3;39020:93;:::i;:::-;39138:2;39133:3;39129:12;39122:19;;38781:366;;;:::o;39153:419::-;39319:4;39357:2;39346:9;39342:18;39334:26;;39406:9;39400:4;39396:20;39392:1;39381:9;39377:17;39370:47;39434:131;39560:4;39434:131;:::i;:::-;39426:139;;39153:419;;;:::o;39578:442::-;39727:4;39765:2;39754:9;39750:18;39742:26;;39778:71;39846:1;39835:9;39831:17;39822:6;39778:71;:::i;:::-;39859:72;39927:2;39916:9;39912:18;39903:6;39859:72;:::i;:::-;39941;40009:2;39998:9;39994:18;39985:6;39941:72;:::i;:::-;39578:442;;;;;;:::o;40026:229::-;40166:34;40162:1;40154:6;40150:14;40143:58;40235:12;40230:2;40222:6;40218:15;40211:37;40026:229;:::o;40261:366::-;40403:3;40424:67;40488:2;40483:3;40424:67;:::i;:::-;40417:74;;40500:93;40589:3;40500:93;:::i;:::-;40618:2;40613:3;40609:12;40602:19;;40261:366;;;:::o;40633:419::-;40799:4;40837:2;40826:9;40822:18;40814:26;;40886:9;40880:4;40876:20;40872:1;40861:9;40857:17;40850:47;40914:131;41040:4;40914:131;:::i;:::-;40906:139;;40633:419;;;:::o;41058:225::-;41198:34;41194:1;41186:6;41182:14;41175:58;41267:8;41262:2;41254:6;41250:15;41243:33;41058:225;:::o;41289:366::-;41431:3;41452:67;41516:2;41511:3;41452:67;:::i;:::-;41445:74;;41528:93;41617:3;41528:93;:::i;:::-;41646:2;41641:3;41637:12;41630:19;;41289:366;;;:::o;41661:419::-;41827:4;41865:2;41854:9;41850:18;41842:26;;41914:9;41908:4;41904:20;41900:1;41889:9;41885:17;41878:47;41942:131;42068:4;41942:131;:::i;:::-;41934:139;;41661:419;;;:::o;42086:179::-;42226:31;42222:1;42214:6;42210:14;42203:55;42086:179;:::o;42271:366::-;42413:3;42434:67;42498:2;42493:3;42434:67;:::i;:::-;42427:74;;42510:93;42599:3;42510:93;:::i;:::-;42628:2;42623:3;42619:12;42612:19;;42271:366;;;:::o;42643:419::-;42809:4;42847:2;42836:9;42832:18;42824:26;;42896:9;42890:4;42886:20;42882:1;42871:9;42867:17;42860:47;42924:131;43050:4;42924:131;:::i;:::-;42916:139;;42643:419;;;:::o;43068:98::-;43119:6;43153:5;43147:12;43137:22;;43068:98;;;:::o;43172:147::-;43273:11;43310:3;43295:18;;43172:147;;;;:::o;43325:307::-;43393:1;43403:113;43417:6;43414:1;43411:13;43403:113;;;43502:1;43497:3;43493:11;43487:18;43483:1;43478:3;43474:11;43467:39;43439:2;43436:1;43432:10;43427:15;;43403:113;;;43534:6;43531:1;43528:13;43525:101;;;43614:1;43605:6;43600:3;43596:16;43589:27;43525:101;43374:258;43325:307;;;:::o;43638:373::-;43742:3;43770:38;43802:5;43770:38;:::i;:::-;43824:88;43905:6;43900:3;43824:88;:::i;:::-;43817:95;;43921:52;43966:6;43961:3;43954:4;43947:5;43943:16;43921:52;:::i;:::-;43998:6;43993:3;43989:16;43982:23;;43746:265;43638:373;;;;:::o;44017:271::-;44147:3;44169:93;44258:3;44249:6;44169:93;:::i;:::-;44162:100;;44279:3;44272:10;;44017:271;;;;:::o;44294:99::-;44346:6;44380:5;44374:12;44364:22;;44294:99;;;:::o;44399:102::-;44440:6;44491:2;44487:7;44482:2;44475:5;44471:14;44467:28;44457:38;;44399:102;;;:::o;44507:364::-;44595:3;44623:39;44656:5;44623:39;:::i;:::-;44678:71;44742:6;44737:3;44678:71;:::i;:::-;44671:78;;44758:52;44803:6;44798:3;44791:4;44784:5;44780:16;44758:52;:::i;:::-;44835:29;44857:6;44835:29;:::i;:::-;44830:3;44826:39;44819:46;;44599:272;44507:364;;;;:::o;44877:313::-;44990:4;45028:2;45017:9;45013:18;45005:26;;45077:9;45071:4;45067:20;45063:1;45052:9;45048:17;45041:47;45105:78;45178:4;45169:6;45105:78;:::i;:::-;45097:86;;44877:313;;;;:::o

Swarm Source

ipfs://05f78cab241cebe1361b964fe84eb9ba34d50555d40816fb62f97b9c342789fb
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.