More Info
Private Name Tags
ContractCreator
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Loading...
Loading
Contract Name:
MasterFarmer
Compiler Version
v0.8.20+commit.a1b79de6
Optimization Enabled:
Yes with 9999 runs
Other Settings:
paris EvmVersion
Contract Source Code (Solidity Standard Json-Input format)
1234567891011121314151617181920212223242526// SPDX-License-Identifier: MITpragma solidity 0.8.20;import "@openzeppelin/contracts/token/ERC20/IERC20.sol";import "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol";import "@openzeppelin/contracts/access/Ownable.sol";import "@openzeppelin/contracts/utils/ReentrancyGuard.sol";import "prb-math/contracts/PRBMathUD60x18.sol";import "./Five.sol";// MasterFarmer is the master of FIVE. He can make FIVE and he is a fair guy.contract MasterFarmer is Ownable, ReentrancyGuard {using SafeERC20 for IERC20;// Info of each pool.struct PoolInfo {IERC20 lpToken; // Address of LP token contract.uint256 allocPoint; // How many allocation points assigned to this pool.uint256 lastRewardBlockTime; // Last block time that FIVE distributions occur.uint256 accFivePerShare; // Accumulated FIVE per share, times 1e12.}// Info of each user.struct UserInfo {uint256 amount; // How many LP tokens the user has provided.
1234567891011121314151617181920212223242526// SPDX-License-Identifier: MIT// OpenZeppelin Contracts (last updated v5.0.0) (access/Ownable.sol)pragma solidity ^0.8.20;import {Context} from "../utils/Context.sol";/*** @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.** The initial owner is set to the address provided by the deployer. This can* later be changed with {transferOwnership}.** This module is used through inheritance. It will make available the modifier* `onlyOwner`, which can be applied to your functions to restrict their use to* the owner.*/abstract contract Ownable is Context {address private _owner;/*** @dev The caller account is not authorized to perform an operation.*/error OwnableUnauthorizedAccount(address account);
1234567891011121314151617181920212223242526// SPDX-License-Identifier: MIT// OpenZeppelin Contracts (last updated v5.1.0) (interfaces/draft-IERC6093.sol)pragma solidity ^0.8.20;/*** @dev Standard ERC-20 Errors* Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC-20 tokens.*/interface IERC20Errors {/*** @dev Indicates an error related to the current `balance` of a `sender`. Used in transfers.* @param sender Address whose tokens are being transferred.* @param balance Current balance for the interacting account.* @param needed Minimum amount required to perform a transfer.*/error ERC20InsufficientBalance(address sender, uint256 balance, uint256 needed);/*** @dev Indicates a failure with the token `sender`. Used in transfers.* @param sender Address whose tokens are being transferred.*/error ERC20InvalidSender(address sender);/*** @dev Indicates a failure with the token `receiver`. Used in transfers.* @param receiver Address to which tokens are being transferred.
1234567891011121314151617181920212223242526// SPDX-License-Identifier: MIT// OpenZeppelin Contracts (last updated v5.1.0) (interfaces/IERC1363.sol)pragma solidity ^0.8.20;import {IERC20} from "./IERC20.sol";import {IERC165} from "./IERC165.sol";/*** @title IERC1363* @dev Interface of the ERC-1363 standard as defined in the https://eips.ethereum.org/EIPS/eip-1363[ERC-1363].** Defines an extension interface for ERC-20 tokens that supports executing code on a recipient contract* after `transfer` or `transferFrom`, or code on a spender contract after `approve`, in a single transaction.*/interface IERC1363 is IERC20, IERC165 {/** Note: the ERC-165 identifier for this interface is 0xb0202a11.* 0xb0202a11 ===* bytes4(keccak256('transferAndCall(address,uint256)')) ^* bytes4(keccak256('transferAndCall(address,uint256,bytes)')) ^* bytes4(keccak256('transferFromAndCall(address,address,uint256)')) ^* bytes4(keccak256('transferFromAndCall(address,address,uint256,bytes)')) ^* bytes4(keccak256('approveAndCall(address,uint256)')) ^* bytes4(keccak256('approveAndCall(address,uint256,bytes)'))*/
123456// SPDX-License-Identifier: MIT// OpenZeppelin Contracts (last updated v5.0.0) (interfaces/IERC165.sol)pragma solidity ^0.8.20;import {IERC165} from "../utils/introspection/IERC165.sol";
123456// SPDX-License-Identifier: MIT// OpenZeppelin Contracts (last updated v5.0.0) (interfaces/IERC20.sol)pragma solidity ^0.8.20;import {IERC20} from "../token/ERC20/IERC20.sol";
1234567891011121314151617181920212223242526// SPDX-License-Identifier: MIT// OpenZeppelin Contracts (last updated v5.0.0) (interfaces/IERC5267.sol)pragma solidity ^0.8.20;interface IERC5267 {/*** @dev MAY be emitted to signal that the domain could have changed.*/event EIP712DomainChanged();/*** @dev returns the fields and values that describe the domain separator used by this contract for EIP-712* signature.*/function eip712Domain()externalviewreturns (bytes1 fields,string memory name,string memory version,uint256 chainId,address verifyingContract,bytes32 salt,uint256[] memory extensions
1234567891011121314151617181920212223242526// SPDX-License-Identifier: MIT// OpenZeppelin Contracts (last updated v5.2.0) (token/ERC20/ERC20.sol)pragma solidity ^0.8.20;import {IERC20} from "./IERC20.sol";import {IERC20Metadata} from "./extensions/IERC20Metadata.sol";import {Context} from "../../utils/Context.sol";import {IERC20Errors} from "../../interfaces/draft-IERC6093.sol";/*** @dev Implementation of the {IERC20} interface.** This implementation is agnostic to the way tokens are created. This means* that a supply mechanism has to be added in a derived contract using {_mint}.** TIP: For a detailed writeup see our guide* https://forum.openzeppelin.com/t/how-to-implement-erc20-supply-mechanisms/226[How* to implement supply mechanisms].** The default value of {decimals} is 18. To change this, you should override* this function so it returns a different value.** We have followed general OpenZeppelin Contracts guidelines: functions revert* instead returning `false` on failure. This behavior is nonetheless* conventional and does not conflict with the expectations of ERC-20
1234567891011121314151617181920212223242526// SPDX-License-Identifier: MIT// OpenZeppelin Contracts (last updated v5.1.0) (token/ERC20/extensions/ERC20Permit.sol)pragma solidity ^0.8.20;import {IERC20Permit} from "./IERC20Permit.sol";import {ERC20} from "../ERC20.sol";import {ECDSA} from "../../../utils/cryptography/ECDSA.sol";import {EIP712} from "../../../utils/cryptography/EIP712.sol";import {Nonces} from "../../../utils/Nonces.sol";/*** @dev Implementation of the ERC-20 Permit extension allowing approvals to be made via signatures, as defined in* https://eips.ethereum.org/EIPS/eip-2612[ERC-2612].** Adds the {permit} method, which can be used to change an account's ERC-20 allowance (see {IERC20-allowance}) by* presenting a message signed by the account. By not relying on `{IERC20-approve}`, the token holder account doesn't* need to send a transaction, and thus is not required to hold Ether at all.*/abstract contract ERC20Permit is ERC20, IERC20Permit, EIP712, Nonces {bytes32 private constant PERMIT_TYPEHASH =keccak256("Permit(address owner,address spender,uint256 value,uint256 nonce,uint256 deadline)");/*** @dev Permit deadline has expired.*/
1234567891011121314151617181920212223242526// SPDX-License-Identifier: MIT// OpenZeppelin Contracts (last updated v5.1.0) (token/ERC20/extensions/IERC20Metadata.sol)pragma solidity ^0.8.20;import {IERC20} from "../IERC20.sol";/*** @dev Interface for the optional metadata functions from the ERC-20 standard.*/interface IERC20Metadata is IERC20 {/*** @dev Returns the name of the token.*/function name() external view returns (string memory);/*** @dev Returns the symbol of the token.*/function symbol() external view returns (string memory);/*** @dev Returns the decimals places of the token.*/function decimals() external view returns (uint8);}
1234567891011121314151617181920212223242526// SPDX-License-Identifier: MIT// OpenZeppelin Contracts (last updated v5.1.0) (token/ERC20/extensions/IERC20Permit.sol)pragma solidity ^0.8.20;/*** @dev Interface of the ERC-20 Permit extension allowing approvals to be made via signatures, as defined in* https://eips.ethereum.org/EIPS/eip-2612[ERC-2612].** Adds the {permit} method, which can be used to change an account's ERC-20 allowance (see {IERC20-allowance}) by* presenting a message signed by the account. By not relying on {IERC20-approve}, the token holder account doesn't* need to send a transaction, and thus is not required to hold Ether at all.** ==== Security Considerations** There are two important considerations concerning the use of `permit`. The first is that a valid permit signature* expresses an allowance, and it should not be assumed to convey additional meaning. In particular, it should not be* considered as an intention to spend the allowance in any specific way. The second is that because permits have* built-in replay protection and can be submitted by anyone, they can be frontrun. A protocol that uses permits should* take this into consideration and allow a `permit` call to fail. Combining these two aspects, a pattern that may be* generally recommended is:** ```solidity* function doThingWithPermit(..., uint256 value, uint256 deadline, uint8 v, bytes32 r, bytes32 s) public {* try token.permit(msg.sender, address(this), value, deadline, v, r, s) {} catch {}* doThing(..., value);
1234567891011121314151617181920212223242526// SPDX-License-Identifier: MIT// OpenZeppelin Contracts (last updated v5.1.0) (token/ERC20/IERC20.sol)pragma solidity ^0.8.20;/*** @dev Interface of the ERC-20 standard as defined in the ERC.*/interface IERC20 {/*** @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 Returns the value of tokens in existence.*/
1234567891011121314151617181920212223242526// SPDX-License-Identifier: MIT// OpenZeppelin Contracts (last updated v5.2.0) (token/ERC20/utils/SafeERC20.sol)pragma solidity ^0.8.20;import {IERC20} from "../IERC20.sol";import {IERC1363} from "../../../interfaces/IERC1363.sol";/*** @title SafeERC20* @dev Wrappers around ERC-20 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 {/*** @dev An operation with an ERC-20 token failed.*/error SafeERC20FailedOperation(address token);/*** @dev Indicates a failed `decreaseAllowance` request.*/
1234567891011121314151617181920212223242526// SPDX-License-Identifier: MIT// OpenZeppelin Contracts (last updated v5.0.1) (utils/Context.sol)pragma solidity ^0.8.20;/*** @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;}function _contextSuffixLength() internal view virtual returns (uint256) {return 0;
1234567891011121314151617181920212223242526// SPDX-License-Identifier: MIT// OpenZeppelin Contracts (last updated v5.1.0) (utils/cryptography/ECDSA.sol)pragma solidity ^0.8.20;/*** @dev Elliptic Curve Digital Signature Algorithm (ECDSA) operations.** These functions can be used to verify that a message was signed by the holder* of the private keys of a given address.*/library ECDSA {enum RecoverError {NoError,InvalidSignature,InvalidSignatureLength,InvalidSignatureS}/*** @dev The signature derives the `address(0)`.*/error ECDSAInvalidSignature();/*** @dev The signature has an invalid length.
1234567891011121314151617181920212223242526// SPDX-License-Identifier: MIT// OpenZeppelin Contracts (last updated v5.1.0) (utils/cryptography/EIP712.sol)pragma solidity ^0.8.20;import {MessageHashUtils} from "./MessageHashUtils.sol";import {ShortStrings, ShortString} from "../ShortStrings.sol";import {IERC5267} from "../../interfaces/IERC5267.sol";/*** @dev https://eips.ethereum.org/EIPS/eip-712[EIP-712] is a standard for hashing and signing of typed structured data.** The encoding scheme specified in the EIP requires a domain separator and a hash of the typed structured data, whose* encoding is very generic and therefore its implementation in Solidity is not feasible, thus this contract* does not implement the encoding itself. Protocols need to implement the type-specific encoding they need in order to* produce the hash of their typed data using a combination of `abi.encode` and `keccak256`.** This contract implements the EIP-712 domain separator ({_domainSeparatorV4}) that is used as part of the encoding* scheme, and the final step of the encoding to obtain the message digest that is then signed via ECDSA* ({_hashTypedDataV4}).** The implementation of the domain separator was designed to be as efficient as possible while still properly updating* the chain id to protect against replay attacks on an eventual fork of the chain.** NOTE: This contract implements the version of the encoding known as "v4", as implemented by the JSON RPC method* https://docs.metamask.io/guide/signing-data.html[`eth_signTypedDataV4` in MetaMask].
1234567891011121314151617181920212223242526// SPDX-License-Identifier: MIT// OpenZeppelin Contracts (last updated v5.1.0) (utils/cryptography/MessageHashUtils.sol)pragma solidity ^0.8.20;import {Strings} from "../Strings.sol";/*** @dev Signature message hash utilities for producing digests to be consumed by {ECDSA} recovery or signing.** The library provides methods for generating a hash of a message that conforms to the* https://eips.ethereum.org/EIPS/eip-191[ERC-191] and https://eips.ethereum.org/EIPS/eip-712[EIP 712]* specifications.*/library MessageHashUtils {/*** @dev Returns the keccak256 digest of an ERC-191 signed data with version* `0x45` (`personal_sign` messages).** The digest is calculated by prefixing a bytes32 `messageHash` with* `"\x19Ethereum Signed Message:\n32"` and hashing the result. It corresponds with the* hash signed when using the https://eth.wiki/json-rpc/API#eth_sign[`eth_sign`] JSON-RPC method.** NOTE: The `messageHash` parameter is intended to be the result of hashing a raw message with* keccak256, although any bytes32 value can be safely used because the final digest will* be re-hashed.
12345678910111213141516171819202122232425// SPDX-License-Identifier: MIT// OpenZeppelin Contracts (last updated v5.1.0) (utils/introspection/IERC165.sol)pragma solidity ^0.8.20;/*** @dev Interface of the ERC-165 standard, as defined in the* https://eips.ethereum.org/EIPS/eip-165[ERC].** Implementers can declare support of contract interfaces, which can then be* queried by others ({ERC165Checker}).** For an implementation, see {ERC165}.*/interface IERC165 {/*** @dev Returns true if this contract implements the interface defined by* `interfaceId`. See the corresponding* https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[ERC section]* to learn more about how these ids are created.** This function call must use less than 30 000 gas.*/function supportsInterface(bytes4 interfaceId) external view returns (bool);}
1234567891011121314151617181920212223242526// SPDX-License-Identifier: MIT// OpenZeppelin Contracts (last updated v5.1.0) (utils/math/Math.sol)pragma solidity ^0.8.20;import {Panic} from "../Panic.sol";import {SafeCast} from "./SafeCast.sol";/*** @dev Standard math utilities missing in the Solidity language.*/library Math {enum Rounding {Floor, // Toward negative infinityCeil, // Toward positive infinityTrunc, // Toward zeroExpand // Away from zero}/*** @dev Returns the addition of two unsigned integers, with an success flag (no overflow).*/function tryAdd(uint256 a, uint256 b) internal pure returns (bool success, uint256 result) {unchecked {uint256 c = a + b;if (c < a) return (false, 0);
1234567891011121314151617181920212223242526// SPDX-License-Identifier: MIT// OpenZeppelin Contracts (last updated v5.1.0) (utils/math/SafeCast.sol)// This file was procedurally generated from scripts/generate/templates/SafeCast.js.pragma solidity ^0.8.20;/*** @dev Wrappers over Solidity's uintXX/intXX/bool casting operators with added overflow* checks.** Downcasting from uint256/int256 in Solidity does not revert on overflow. This can* easily result in undesired exploitation or bugs, since developers usually* assume that overflows raise errors. `SafeCast` restores this intuition by* reverting the transaction when such an operation overflows.** Using this library instead of the unchecked operations eliminates an entire* class of bugs, so it's recommended to use it always.*/library SafeCast {/*** @dev Value doesn't fit in an uint of `bits` size.*/error SafeCastOverflowedUintDowncast(uint8 bits, uint256 value);/*** @dev An int value doesn't fit in an uint of `bits` size.
1234567891011121314151617181920212223242526// SPDX-License-Identifier: MIT// OpenZeppelin Contracts (last updated v5.1.0) (utils/math/SignedMath.sol)pragma solidity ^0.8.20;import {SafeCast} from "./SafeCast.sol";/*** @dev Standard signed math utilities missing in the Solidity language.*/library SignedMath {/*** @dev Branchless ternary evaluation for `a ? b : c`. Gas costs are constant.** IMPORTANT: This function may reduce bytecode size and consume less gas when used standalone.* However, the compiler may optimize Solidity ternary operations (i.e. `a ? b : c`) to only compute* one branch when needed, making this function more expensive.*/function ternary(bool condition, int256 a, int256 b) internal pure returns (int256) {unchecked {// branchless ternary works because:// b ^ (a ^ b) == a// b ^ 0 == breturn b ^ ((a ^ b) * int256(SafeCast.toUint(condition)));}}
1234567891011121314151617181920212223242526// SPDX-License-Identifier: MIT// OpenZeppelin Contracts (last updated v5.0.0) (utils/Nonces.sol)pragma solidity ^0.8.20;/*** @dev Provides tracking nonces for addresses. Nonces will only increment.*/abstract contract Nonces {/*** @dev The nonce used for an `account` is not the expected current nonce.*/error InvalidAccountNonce(address account, uint256 currentNonce);mapping(address account => uint256) private _nonces;/*** @dev Returns the next unused nonce for an address.*/function nonces(address owner) public view virtual returns (uint256) {return _nonces[owner];}/*** @dev Consumes a nonce.** Returns the current value and increments nonce.
1234567891011121314151617181920212223242526// SPDX-License-Identifier: MIT// OpenZeppelin Contracts (last updated v5.1.0) (utils/Panic.sol)pragma solidity ^0.8.20;/*** @dev Helper library for emitting standardized panic codes.** ```solidity* contract Example {* using Panic for uint256;** // Use any of the declared internal constants* function foo() { Panic.GENERIC.panic(); }** // Alternatively* function foo() { Panic.panic(Panic.GENERIC); }* }* ```** Follows the list from https://github.com/ethereum/solidity/blob/v0.8.24/libsolutil/ErrorCodes.h[libsolutil].** _Available since v5.1._*/// slither-disable-next-line unused-statelibrary Panic {
1234567891011121314151617181920212223242526// SPDX-License-Identifier: MIT// OpenZeppelin Contracts (last updated v5.1.0) (utils/ReentrancyGuard.sol)pragma solidity ^0.8.20;/*** @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 EIP-1153 (transient storage) is available on the chain you're deploying at,* consider using {ReentrancyGuardTransient} instead.** 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
1234567891011121314151617181920212223242526// SPDX-License-Identifier: MIT// OpenZeppelin Contracts (last updated v5.1.0) (utils/ShortStrings.sol)pragma solidity ^0.8.20;import {StorageSlot} from "./StorageSlot.sol";// | string | 0xAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA |// | length | 0x BB |type ShortString is bytes32;/*** @dev This library provides functions to convert short memory strings* into a `ShortString` type that can be used as an immutable variable.** Strings of arbitrary length can be optimized using this library if* they are short enough (up to 31 bytes) by packing them with their* length (1 byte) in a single EVM word (32 bytes). Additionally, a* fallback mechanism can be used for every other case.** Usage example:** ```solidity* contract Named {* using ShortStrings for *;*
1234567891011121314151617181920212223242526// SPDX-License-Identifier: MIT// OpenZeppelin Contracts (last updated v5.1.0) (utils/StorageSlot.sol)// This file was procedurally generated from scripts/generate/templates/StorageSlot.js.pragma solidity ^0.8.20;/*** @dev Library for reading and writing primitive types to specific storage slots.** Storage slots are often used to avoid storage conflict when dealing with upgradeable contracts.* This library helps with reading and writing to such slots without the need for inline assembly.** The functions in this library return Slot structs that contain a `value` member that can be used to read or write.** Example usage to set ERC-1967 implementation slot:* ```solidity* contract ERC1967 {* // Define the slot. Alternatively, use the SlotDerivation library to derive the slot.* bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;** function _getImplementation() internal view returns (address) {* return StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value;* }** function _setImplementation(address newImplementation) internal {* require(newImplementation.code.length > 0);
1234567891011121314151617181920212223242526// SPDX-License-Identifier: MIT// OpenZeppelin Contracts (last updated v5.2.0) (utils/Strings.sol)pragma solidity ^0.8.20;import {Math} from "./math/Math.sol";import {SafeCast} from "./math/SafeCast.sol";import {SignedMath} from "./math/SignedMath.sol";/*** @dev String operations.*/library Strings {using SafeCast for *;bytes16 private constant HEX_DIGITS = "0123456789abcdef";uint8 private constant ADDRESS_LENGTH = 20;/*** @dev The `value` string doesn't fit in the specified `length`.*/error StringsInsufficientHexLength(uint256 value, uint256 length);/*** @dev The string being parsed contains characters that are not in scope of the given base.*/
1234567891011121314151617181920212223242526// SPDX-License-Identifier: MITpragma solidity 0.8.20;import "@openzeppelin/contracts/token/ERC20/ERC20.sol";import "@openzeppelin/contracts/access/Ownable.sol";import "@openzeppelin/contracts/token/ERC20/extensions/ERC20Permit.sol";/// @title FIVE Token Contract/// @notice ERC20 token with a capped supply, minting, burning, and gasless approvals using EIP-2612./// @dev Inherits from OpenZeppelin's ERC20, ERC20Permit, and Ownable contracts.contract FIVE is ERC20, Ownable, ERC20Permit {uint256 private _maxSupply;uint256 public totalMinted;uint256 public totalBurned;address public treasuryAddr;/// @notice Event emitted when tokens are minted.event Mint(address indexed minter, address indexed recipient, uint256 amount);/// @notice Event emitted when tokens are burned.event Burn(address indexed burner, uint256 amount);/// @notice Event emitted when the max supply is decreased.event MaxSupplyDecreased(uint256 oldMaxSupply, uint256 newMaxSupply);/// @dev Constructor to initialize the token with its name, symbol, and treasury address./// @param initialOwner The address of the treasury to receive the initial minted tokens.constructor(
1234567891011121314151617181920212223242526// SPDX-License-Identifier: Unlicensepragma solidity >=0.8.4;/// @notice Emitted when the result overflows uint256.error PRBMath__MulDivFixedPointOverflow(uint256 prod1);/// @notice Emitted when the result overflows uint256.error PRBMath__MulDivOverflow(uint256 prod1, uint256 denominator);/// @notice Emitted when one of the inputs is type(int256).min.error PRBMath__MulDivSignedInputTooSmall();/// @notice Emitted when the intermediary absolute result overflows int256.error PRBMath__MulDivSignedOverflow(uint256 rAbs);/// @notice Emitted when the input is MIN_SD59x18.error PRBMathSD59x18__AbsInputTooSmall();/// @notice Emitted when ceiling a number overflows SD59x18.error PRBMathSD59x18__CeilOverflow(int256 x);/// @notice Emitted when one of the inputs is MIN_SD59x18.error PRBMathSD59x18__DivInputTooSmall();/// @notice Emitted when one of the intermediary unsigned results overflows SD59x18.error PRBMathSD59x18__DivOverflow(uint256 rAbs);
1234567891011121314151617181920212223242526// SPDX-License-Identifier: Unlicensepragma solidity >=0.8.4;import "./PRBMath.sol";/// @title PRBMathUD60x18/// @author Paul Razvan Berg/// @notice Smart contract library for advanced fixed-point math that works with uint256 numbers considered to have 18/// trailing decimals. We call this number representation unsigned 60.18-decimal fixed-point, since there can be up to 60/// digits in the integer part and up to 18 decimals in the fractional part. The numbers are bound by the minimum and the/// maximum values permitted by the Solidity type uint256.library PRBMathUD60x18 {/// @dev Half the SCALE number.uint256 internal constant HALF_SCALE = 5e17;/// @dev log2(e) as an unsigned 60.18-decimal fixed-point number.uint256 internal constant LOG2_E = 1_442695040888963407;/// @dev The maximum value an unsigned 60.18-decimal fixed-point number can have.uint256 internal constant MAX_UD60x18 =115792089237316195423570985008687907853269984665640564039457_584007913129639935;/// @dev The maximum whole value an unsigned 60.18-decimal fixed-point number can have.uint256 internal constant MAX_WHOLE_UD60x18 =115792089237316195423570985008687907853269984665640564039457_000000000000000000;
123456789101112131415161718192021222324{"optimizer": {"enabled": true,"runs": 9999},"metadata": {"bytecodeHash": "none","useLiteralContent": true},"evmVersion": "paris","outputSelection": {"*": {"*": ["evm.bytecode","evm.deployedBytecode","devdoc","userdoc","metadata","abi"]}},"libraries": {}}
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"inputs":[{"internalType":"address","name":"initialOwner","type":"address"},{"internalType":"contract FIVE","name":"_five","type":"address"},{"internalType":"uint256","name":"_startBlockTime","type":"uint256"},{"internalType":"uint256","name":"initialK","type":"uint256"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"OwnableInvalidOwner","type":"error"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"OwnableUnauthorizedAccount","type":"error"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"PRBMathUD60x18__Exp2InputTooBig","type":"error"},{"inputs":[{"internalType":"uint256","name":"x","type":"uint256"}],"name":"PRBMathUD60x18__ExpInputTooBig","type":"error"},{"inputs":[{"internalType":"uint256","name":"prod1","type":"uint256"}],"name":"PRBMath__MulDivFixedPointOverflow","type":"error"},{"inputs":[{"internalType":"uint256","name":"prod1","type":"uint256"},{"internalType":"uint256","name":"denominator","type":"uint256"}],"name":"PRBMath__MulDivOverflow","type":"error"},{"inputs":[],"name":"ReentrancyGuardReentrantCall","type":"error"},{"inputs":[{"internalType":"address","name":"token","type":"address"}],"name":"SafeERC20FailedOperation","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":true,"internalType":"contract IERC20","name":"pair","type":"address"},{"indexed":true,"internalType":"uint256","name":"point","type":"uint256"}],"name":"Add","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":true,"internalType":"uint256","name":"pid","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Deposit","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":true,"internalType":"uint256","name":"pid","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"EmergencyWithdraw","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"newRate","type":"uint256"}],"name":"EmissionUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"lockTime","type":"uint256"}],"name":"EnterStaking","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"oldK","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"newK","type":"uint256"}],"name":"KUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"LeaveStaking","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":false,"internalType":"uint256","name":"extraLockTime","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"newUnlockTime","type":"uint256"}],"name":"LockTimeExtended","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":true,"internalType":"uint256","name":"pid","type":"uint256"},{"indexed":true,"internalType":"uint256","name":"point","type":"uint256"}],"name":"Set","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":true,"internalType":"address","name":"newDev","type":"address"}],"name":"SetDev","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":true,"internalType":"address","name":"newTreasury","type":"address"}],"name":"SetTreasury","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"newPercentage","type":"uint256"}],"name":"StakingPercentageUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":true,"internalType":"uint256","name":"pid","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Withdraw","type":"event"},{"inputs":[],"name":"MAX_EMISSION","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"MAX_LOCK_TIME","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"MAX_STAKING_PERCENTAGE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"MIN_LOCK_TIME","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_allocPoint","type":"uint256"},{"internalType":"contract IERC20","name":"_lpToken","type":"address"},{"internalType":"bool","name":"_withUpdate","type":"bool"}],"name":"add","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_user","type":"address"}],"name":"decayedPendingFive","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"newMaxSupply","type":"uint256"}],"name":"decreaseFiveMaxSupply","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_pid","type":"uint256"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"deposit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_pid","type":"uint256"}],"name":"emergencyWithdraw","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"emission","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"},{"internalType":"uint256","name":"_lockDuration","type":"uint256"}],"name":"enterStaking","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_extraLockDuration","type":"uint256"}],"name":"extendLockTime","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"five","outputs":[{"internalType":"contract FIVE","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_user","type":"address"}],"name":"getVeFIVE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"k","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"leaveStaking","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"lockInfo","outputs":[{"internalType":"uint256","name":"lockAmount","type":"uint256"},{"internalType":"uint256","name":"unlockTime","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"massUpdatePools","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_pid","type":"uint256"},{"internalType":"address","name":"_user","type":"address"}],"name":"pendingFive","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"poolInfo","outputs":[{"internalType":"contract IERC20","name":"lpToken","type":"address"},{"internalType":"uint256","name":"allocPoint","type":"uint256"},{"internalType":"uint256","name":"lastRewardBlockTime","type":"uint256"},{"internalType":"uint256","name":"accFivePerShare","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"poolLength","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_pid","type":"uint256"},{"internalType":"uint256","name":"_allocPoint","type":"uint256"},{"internalType":"bool","name":"_withUpdate","type":"bool"}],"name":"set","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_emission","type":"uint256"}],"name":"setEmission","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_percentage","type":"uint256"}],"name":"setStakingPercentage","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"stakingPercentage","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"startBlockTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalAllocPoint","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalLockedAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalLockedUsers","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":"uint256","name":"newK","type":"uint256"}],"name":"updateK","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_pid","type":"uint256"}],"name":"updatePool","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"address","name":"","type":"address"}],"name":"userInfo","outputs":[{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"rewardDebt","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_pid","type":"uint256"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"}]
Contract Creation Code
6080604052674563918244f40000600755601e60085560006009553480156200002757600080fd5b5060405162003aa638038062003aa68339810160408190526200004a916200030c565b836001600160a01b0381166200007b57604051631e4fbdf760e01b8152600060048201526024015b60405180910390fd5b6200008681620002a3565b5060018055670de0b6b3a76400008110801590620000ac57506753444835ec5800008111155b620001145760405162461bcd60e51b815260206004820152603160248201527f696e697469616c4b206d757374206265206265747765656e203120616e64203660448201527020287363616c656420627920316531382960781b606482015260840162000072565b428211620001735760405162461bcd60e51b815260206004820152602560248201527f5f7374617274426c6f636b54696d65206d75737420626520696e207468652066604482015264757475726560d81b606482015260840162000072565b600680546001600160a01b03199081166001600160a01b03958616908117909255600a849055600d92909255604080516080810182528281526103e86020808301828152838501978852600060608501818152600280546001818101835591845296517f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ace60049098029788018054909b169c169b909b1790985590517f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5acf85015596517f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ad084015594517f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ad19092019190915591845260039092529120805460ff19169092179091556009555062000359565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b03811681146200030957600080fd5b50565b600080600080608085870312156200032357600080fd5b84516200033081620002f3565b60208601519094506200034381620002f3565b6040860151606090960151949790965092505050565b61373d80620003696000396000f3fe608060405234801561001057600080fd5b506004361061025c5760003560e01c8063715018a611610145578063af11c34c116100bd578063e0395c1e1161008c578063f2fde38b11610071578063f2fde38b14610521578063fa78668f14610534578063fde042811461053e57600080fd5b8063e0395c1e14610505578063e2bbb1581461050e57600080fd5b8063af11c34c146104b6578063b4f40c61146104d6578063dc6fe235146104df578063ddce102f146104f257600080fd5b80638da5cb5b1161011457806394e382c0116100f957806394e382c01461048c57806399fcfccb1461049b578063a81d4658146104a357600080fd5b80638da5cb5b1461041b57806393f1a40b1461045a57600080fd5b8063715018a6146103ee57806381e1ccba146103f6578063827c049e146103ff578063828047a51461040857600080fd5b80632ab97b9d116101d85780635312ea8e116101a757806364482f791161018c57806364482f791461038c5780636552374a1461039f5780636bd3b87c146103b257600080fd5b80635312ea8e14610371578063630b5ba11461038457600080fd5b80632ab97b9d1461032f5780633ff0320714610342578063441a3e701461034b57806351eb05a61461035e57600080fd5b80630f44b5a91161022f57806316a6d94a1161021457806316a6d94a1461030057806317caf6f1146103135780631eaaa0451461031c57600080fd5b80630f44b5a9146102a35780631526fe27146102b657600080fd5b806305a9f27414610261578063081e3eda1461027d5780630c18d4ce146102855780630e38c32b1461028e575b600080fd5b61026a600b5481565b6040519081526020015b60405180910390f35b60025461026a565b61026a600a5481565b6102a161029c366004613460565b610546565b005b61026a6102b136600461349b565b610615565b6102c96102c4366004613460565b6106ba565b6040805173ffffffffffffffffffffffffffffffffffffffff90951685526020850193909352918301526060820152608001610274565b6102a161030e3660046134b8565b61070b565b61026a60095481565b6102a161032a3660046134e8565b610ad6565b6102a161033d366004613460565b610d30565b61026a61012c81565b6102a16103593660046134b8565b610e13565b6102a161036c366004613460565b611075565b6102a161037f366004613460565b6112de565b6102a161148e565b6102a161039a36600461352a565b6114bf565b61026a6103ad36600461349b565b611622565b6103d96103c036600461349b565b6005602052600090815260409020805460019091015482565b60408051928352602083019190915201610274565b6102a161172e565b61026a60085481565b61026a60075481565b6102a1610416366004613460565b611742565b60005473ffffffffffffffffffffffffffffffffffffffff165b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610274565b6103d9610468366004613558565b60046020908152600092835260408084209091529082529020805460019091015482565b61026a674563918244f4000081565b6102a16118be565b61026a6104b1366004613558565b611c44565b6006546104359073ffffffffffffffffffffffffffffffffffffffff1681565b61026a600d5481565b6102a16104ed366004613460565b611e61565b6102a1610500366004613460565b612110565b61026a600c5481565b6102a161051c3660046134b8565b6121b3565b6102a161052f36600461349b565b6123a6565b61026a62ed4e0081565b61026a601e81565b61054e612407565b601e8111156105ca5760405162461bcd60e51b815260206004820152602760248201527f7365745374616b696e6750657263656e746167653a2065786365656473206d6160448201527f78206c696d69740000000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b6105d261148e565b60088190556040518181527fe85e3e0b319540f3d1e14a6900e5f1005bf953ea549c6c41e3428224d8898de69060200160405180910390a161061261245a565b50565b73ffffffffffffffffffffffffffffffffffffffff811660009081527f17ef568e3e12ab5b9c7254a8d58478811de00f9e6eb34345acd53bf8fd09d3ec60205260408120816106648185611c44565b90506000826000015461067686611622565b61068890670de0b6b3a76400006135b7565b61069291906135fd565b9050670de0b6b3a76400006106a782846135b7565b6106b191906135fd565b95945050505050565b600281815481106106ca57600080fd5b6000918252602090912060049091020180546001820154600283015460039093015473ffffffffffffffffffffffffffffffffffffffff9092169350919084565b610713612584565b6000600260008154811061072957610729613638565b600091825260208083203384527f17ef568e3e12ab5b9c7254a8d58478811de00f9e6eb34345acd53bf8fd09d3ec8252604080852060059093529093206004909202909201925061012c8410801590610785575062ed4e008411155b6107f75760405162461bcd60e51b815260206004820152602360248201527f5374616b65206661696c65643a20496e76616c6964204c6f636b20447572617460448201527f696f6e000000000000000000000000000000000000000000000000000000000060648201526084016105c1565b6108016000611075565b815415801590610815575080600101544211155b15610930576000826001015464e8d4a510008560030154856000015461083b91906135b7565b61084591906135fd565b61084f9190613667565b90506000670de0b6b3a7640000846000015461086a33611622565b61087c90670de0b6b3a76400006135b7565b61088691906135fd565b61089090846135b7565b61089a91906135fd565b9050801561092d576108ac33826125c7565b8082111561092d5760065473ffffffffffffffffffffffffffffffffffffffff166342966c686108dc8385613667565b6040518263ffffffff1660e01b81526004016108fa91815260200190565b600060405180830381600087803b15801561091457600080fd5b505af1158015610928573d6000803e3d6000fd5b505050505b50505b8415610a65576006546040517f23b872dd0000000000000000000000000000000000000000000000000000000081523360048201523060248201526044810187905273ffffffffffffffffffffffffffffffffffffffff909116906323b872dd906064016020604051808303816000875af11580156109b3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109d7919061367a565b50848260000160008282546109ec9190613697565b9091555050805485908290600090610a05908490613697565b9091555060009050610a178542613697565b90508160010154811115610a2d57600182018190555b85600b6000828254610a3f9190613697565b90915550508154869003610a6357600c8054906000610a5d836136aa565b91905055505b505b6003830154825464e8d4a5100091610a7c916135b7565b610a8691906135fd565b6001830155604080518681526020810186905233917f8022d0cd856e916e535bdaaf7c0674e7b2e2f0231ffef91f47d0214b8b801579910160405180910390a2505050610ad260018055565b5050565b610ade612407565b73ffffffffffffffffffffffffffffffffffffffff8216600090815260036020526040902054829060ff1615610b565760405162461bcd60e51b815260206004820152601960248201527f4164643a20706f6f6c20616c726561647920657869737473210000000000000060448201526064016105c1565b8115610b6457610b6461148e565b6000600a544211610b7757600a54610b79565b425b90508460096000828254610b8d9190613697565b90915550506040805160808101825273ffffffffffffffffffffffffffffffffffffffff86811680835260208084018a8152848601878152600060608701818152600280546001808201835591845298517f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ace6004909a02998a0180547fffffffffffffffffffffffff000000000000000000000000000000000000000016919099161790975592517f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5acf88015590517f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ad087015590517f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ad1909501949094559083526003905291902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169091179055610ce461245a565b604051859073ffffffffffffffffffffffffffffffffffffffff86169033907f5f43b6be860b00b28d44981331005a0503e6b566155ca1423af4299a6bde1f4690600090a45050505050565b610d38612407565b670de0b6b3a76400008110158015610d5857506753444835ec5800008111155b610dca5760405162461bcd60e51b815260206004820152603360248201527f7570646174654b3a206b206d757374206265206265747765656e203120616e6460448201527f203620287363616c65642062792031653138290000000000000000000000000060648201526084016105c1565b610dd261148e565b600d5460408051918252602082018390527fbd75af1b16e208f9d05e71a979a9d85e61791ef6537c46f819b0b443ab8baa38910160405180910390a1600d55565b610e1b612584565b81610e2560025490565b8110610e735760405162461bcd60e51b815260206004820152600f60248201527f496e76616c696420706f6f6c204944000000000000000000000000000000000060448201526064016105c1565b82600003610ec35760405162461bcd60e51b815260206004820152601a60248201527f5769746864726177204649564520627920756e7374616b696e6700000000000060448201526064016105c1565b600060028481548110610ed857610ed8613638565b6000918252602080832087845260048083526040808620338752909352919093208054929091029092019250841115610f795760405162461bcd60e51b815260206004820152602260248201527f5769746864726177206661696c65643a20496e76616c6964206f70657261746960448201527f6f6e00000000000000000000000000000000000000000000000000000000000060648201526084016105c1565b610f8285611075565b6000816001015464e8d4a5100084600301548460000154610fa391906135b7565b610fad91906135fd565b610fb79190613667565b90508015610fc957610fc933826125c7565b841561100b5784826000016000828254610fe39190613667565b9091555050825461100b9073ffffffffffffffffffffffffffffffffffffffff163387612713565b6003830154825464e8d4a5100091611022916135b7565b61102c91906135fd565b6001830155604051858152869033907ff279e6a1f5e320cca91135676d9cb6e44ca8a08c0b88342bcdb1144f6511b5689060200160405180910390a350505050610ad260018055565b8061107f60025490565b81106110cd5760405162461bcd60e51b815260206004820152600f60248201527f496e76616c696420706f6f6c204944000000000000000000000000000000000060448201526064016105c1565b6000600283815481106110e2576110e2613638565b906000526020600020906004020190508060020154421161110257505050565b600080841161111357600b546111a4565b81546040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff909116906370a0823190602401602060405180830381865afa158015611180573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111a491906136e2565b9050806000036111ba5750426002909101555050565b60008260020154426111cc9190613667565b905060006009548460010154600754846111e691906135b7565b6111f091906135b7565b6111fa91906135fd565b9050600061120782612794565b9050801561129a576006546040517f40c10f190000000000000000000000000000000000000000000000000000000081523060048201526024810183905273ffffffffffffffffffffffffffffffffffffffff909116906340c10f1990604401600060405180830381600087803b15801561128157600080fd5b505af1158015611295573d6000803e3d6000fd5b505050505b836112aa8264e8d4a510006135b7565b6112b491906135fd565b8560030160008282546112c79190613697565b909155505042600290950194909455505050505050565b6112e6612584565b806112f060025490565b811061133e5760405162461bcd60e51b815260206004820152600f60248201527f496e76616c696420706f6f6c204944000000000000000000000000000000000060448201526064016105c1565b8160000361138e5760405162461bcd60e51b815260206004820152601c60248201527f556e617661696c61626c6520666f72207374616b696e6720706f6f6c0000000060448201526064016105c1565b6000600283815481106113a3576113a3613638565b600091825260208083208684526004808352604080862033875290935291909320805492909102909201925061141b5760405162461bcd60e51b815260206004820152601560248201527f4e6f20746f6b656e7320746f207769746864726177000000000000000000000060448201526064016105c1565b805460008083556001830155825461144a9073ffffffffffffffffffffffffffffffffffffffff163383612713565b604051818152859033907fbb757047c2b5f3974fe26b7c10f732e7bce710b0952a71082702781e62ae05959060200160405180910390a35050505061061260018055565b600061149960025490565b905060005b81811015610ad2576114af81611075565b6114b8816136aa565b905061149e565b6114c7612407565b8260000361153d5760405162461bcd60e51b815260206004820152602a60248201527f596f752063616e27742073657420616c6c6f63506f696e7420666f722073746160448201527f6b696e6720706f6f6c2e0000000000000000000000000000000000000000000060648201526084016105c1565b801561154b5761154b61148e565b816002848154811061155f5761155f613638565b9060005260206000209060040201600101541461161d5760006002848154811061158b5761158b613638565b906000526020600020906004020160010154905082600285815481106115b3576115b3613638565b90600052602060002090600402016001018190555082816009546115d79190613667565b6115e19190613697565b6009556115ec61245a565b6040518390859033907f9eca8f7bcfb868d72b4ed95b71c627c194ab6bcb9b83adb2280e8a0320bb847690600090a4505b505050565b73ffffffffffffffffffffffffffffffffffffffff81166000908152600560205260408120600181015442118061165857508054155b156116665750600092915050565b60004282600101546116789190613667565b8254909150600061169d61169484670de0b6b3a76400006128df565b62ed4e006128f2565b905060006116ad600d54836128df565b905060006116cb670de0b6b3a76400006116c684612907565b6128f2565b905060006116e6670de0b6b3a76400006116c6600d54612907565b6116f890670de0b6b3a7640000613667565b905060006117208661171b61171586670de0b6b3a7640000613667565b856128f2565b6128df565b9a9950505050505050505050565b611736612407565b6117406000612976565b565b61174a612584565b33600090815260056020526040902080546117a75760405162461bcd60e51b815260206004820152601860248201527f4e6f20616374697665206c6f636b20746f20657874656e64000000000000000060448201526064016105c1565b60008282600101546117b99190613697565b90506117c862ed4e0042613697565b8111156118175760405162461bcd60e51b815260206004820152601d60248201527f45786365656473206d6178696d756d206c6f636b206475726174696f6e00000060448201526064016105c1565b61182361012c42613697565b8110156118725760405162461bcd60e51b815260206004820152601560248201527f556e6c6f636b2074696d6520746f6f2073686f7274000000000000000000000060448201526064016105c1565b60018201819055604080518481526020810183905233917e3b7d2ad3b9d4b540c9231c2d2302e09268ce8fbb59d4005bf049893beffa2e910160405180910390a2505061061260018055565b6118c6612584565b600060026000815481106118dc576118dc613638565b600091825260208083203384527f17ef568e3e12ab5b9c7254a8d58478811de00f9e6eb34345acd53bf8fd09d3ec8252604080852060059093529093208154600490930290930193509190158015906119355750805415155b6119a75760405162461bcd60e51b815260206004820152602160248201527f556e7374616b65206661696c65643a20496e76616c6964206f7065726174696f60448201527f6e0000000000000000000000000000000000000000000000000000000000000060648201526084016105c1565b6119b16000611075565b80600101544211611ad6576000826001015464e8d4a51000856003015485600001546119dd91906135b7565b6119e791906135fd565b6119f19190613667565b90506000670de0b6b3a76400008460000154611a0c33611622565b611a1e90670de0b6b3a76400006135b7565b611a2891906135fd565b611a3290846135b7565b611a3c91906135fd565b90508015611acf57611a4e33826125c7565b80821115611acf5760065473ffffffffffffffffffffffffffffffffffffffff166342966c68611a7e8385613667565b6040518263ffffffff1660e01b8152600401611a9c91815260200190565b600060405180830381600087803b158015611ab657600080fd5b505af1158015611aca573d6000803e3d6000fd5b505050505b5050611c17565b6000826001015464e8d4a5100085600301548560000154611af791906135b7565b611b0191906135fd565b611b0b9190613667565b90508015611b98576006546040517f42966c680000000000000000000000000000000000000000000000000000000081526004810183905273ffffffffffffffffffffffffffffffffffffffff909116906342966c6890602401600060405180830381600087803b158015611b7f57600080fd5b505af1158015611b93573d6000803e3d6000fd5b505050505b8254600080855580845560018401819055600b8054839290611bbb908490613667565b9091555050600c8054906000611bd0836136fb565b9190505550611bdf33826125c7565b60405181815233907fbeeac20c93f16ecc5d2707dffeb3263a7f99053ac0aa548803e9e8b5a00074389060200160405180910390a250505b6003830154825464e8d4a5100091611c2e916135b7565b611c3891906135fd565b60019283015550805550565b600082611c5060025490565b8110611c9e5760405162461bcd60e51b815260206004820152600f60248201527f496e76616c696420706f6f6c204944000000000000000000000000000000000060448201526064016105c1565b600060028581548110611cb357611cb3613638565b600091825260208083208884526004808352604080862073ffffffffffffffffffffffffffffffffffffffff8b16875290935291842092909102016003810154909350909187611d0557600b54611d96565b83546040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff909116906370a0823190602401602060405180830381865afa158015611d72573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d9691906136e2565b9050836002015442118015611daa57508015155b15611e28576000846002015442611dc19190613667565b90506000600954866001015460075484611ddb91906135b7565b611de591906135b7565b611def91906135fd565b90506000611dfc82612794565b905083611e0e8264e8d4a510006135b7565b611e1891906135fd565b611e229086613697565b94505050505b6001830154835464e8d4a5100090611e419085906135b7565b611e4b91906135fd565b611e559190613667565b98975050505050505050565b611e69612407565b611e7161148e565b600654604080517fd5abeb01000000000000000000000000000000000000000000000000000000008152905160009273ffffffffffffffffffffffffffffffffffffffff169163d5abeb019160048083019260209291908290030181865afa158015611ee1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f0591906136e2565b90506000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611f76573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f9a91906136e2565b90508183106120115760405162461bcd60e51b815260206004820152603760248201527f4e6577206d617820737570706c79206d757374206265206c657373207468616e60448201527f207468652063757272656e74206d617820737570706c7900000000000000000060648201526084016105c1565b808310156120875760405162461bcd60e51b815260206004820152603d60248201527f4e6577206d617820737570706c79206d757374206e6f74206265206c6573732060448201527f7468616e207468652063757272656e7420746f74616c20737570706c7900000060648201526084016105c1565b6006546040517f91ff4a730000000000000000000000000000000000000000000000000000000081526004810185905273ffffffffffffffffffffffffffffffffffffffff909116906391ff4a7390602401600060405180830381600087803b1580156120f357600080fd5b505af1158015612107573d6000803e3d6000fd5b50505050505050565b612118612407565b674563918244f400008111156121705760405162461bcd60e51b815260206004820152601e60248201527f736574456d697373696f6e3a2065786365656473206d6178206c696d6974000060448201526064016105c1565b61217861148e565b60078190556040518181527fb114240d54ce08081cbd18870dc3b6cd4091bb86ff29d2ad41906c2a2d6723d49060200160405180910390a150565b6121bb612584565b816121c560025490565b81106122135760405162461bcd60e51b815260206004820152600f60248201527f496e76616c696420706f6f6c204944000000000000000000000000000000000060448201526064016105c1565b826000036122635760405162461bcd60e51b815260206004820152601760248201527f4465706f7369742046495645206279207374616b696e6700000000000000000060448201526064016105c1565b60006002848154811061227857612278613638565b600091825260208083208784526004808352604080862033875290935291909320910290910191506122a985611075565b8054156122f9576000816001015464e8d4a51000846003015484600001546122d191906135b7565b6122db91906135fd565b6122e59190613667565b905080156122f7576122f733826125c7565b505b831561233d5781546123239073ffffffffffffffffffffffffffffffffffffffff163330876129eb565b838160000160008282546123379190613697565b90915550505b6003820154815464e8d4a5100091612354916135b7565b61235e91906135fd565b6001820155604051848152859033907f90890809c654f11d6e72a28fa60149770a0d11ec6c92319d6ceb2bb0a4ea1a159060200160405180910390a3505050610ad260018055565b6123ae612407565b73ffffffffffffffffffffffffffffffffffffffff81166123fe576040517f1e4fbdf7000000000000000000000000000000000000000000000000000000008152600060048201526024016105c1565b61061281612976565b60005473ffffffffffffffffffffffffffffffffffffffff163314611740576040517f118cdaa70000000000000000000000000000000000000000000000000000000081523360048201526024016105c1565b600061246560025490565b9050600060015b828110156124b6576002818154811061248757612487613638565b906000526020600020906004020160010154826124a49190613697565b91506124af816136aa565b905061246c565b508015610ad2576000600854826124cd91906135b7565b6124dc9064e8d4a510006135b7565b9050600060085460646124ef9190613667565b9050600064e8d4a5100061250383856135fd565b61250d91906135fd565b905080600260008154811061252457612524613638565b9060005260206000209060040201600101546009546125439190613667565b61254d9190613697565b60098190555080600260008154811061256857612568613638565b9060005260206000209060040201600101819055505050505050565b6002600154036125c0576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600155565b6006546040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015260009173ffffffffffffffffffffffffffffffffffffffff16906370a0823190602401602060405180830381865afa158015612636573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061265a91906136e2565b9050600081831161266b578261266d565b815b6006546040517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff87811660048301526024820184905292935091169063a9059cbb906044016020604051808303816000875af11580156126e8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061270c919061367a565b5050505050565b60405173ffffffffffffffffffffffffffffffffffffffff83811660248301526044820183905261161d91859182169063a9059cbb906064015b604051602081830303815290604052915060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050612a37565b600080600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612804573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061282891906136e2565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d5abeb016040518163ffffffff1660e01b8152600401602060405180830381865afa158015612895573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128b991906136e2565b6128c39190613667565b9050828110156128d5578091506128d9565b8291505b50919050565b60006128eb8383612adb565b9392505050565b60006128eb83670de0b6b3a764000084612bf3565b6000680736ea4425c11ac631821061294e576040517f315da068000000000000000000000000000000000000000000000000000000008152600481018390526024016105c1565b6714057b7ef767814f82026128eb670de0b6b3a76400006706f05b59d3b20000830104612cf6565b6000805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60405173ffffffffffffffffffffffffffffffffffffffff8481166024830152838116604483015260648201839052612a319186918216906323b872dd9060840161274d565b50505050565b600080602060008451602086016000885af180612a5a576040513d6000823e3d81fd5b50506000513d91508115612a72578060011415612a8c565b73ffffffffffffffffffffffffffffffffffffffff84163b155b15612a31576040517f5274afe700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff851660048201526024016105c1565b600080807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848609848602925082811083820303915050670de0b6b3a76400008110612b56576040517fd31b3402000000000000000000000000000000000000000000000000000000008152600481018290526024016105c1565b600080670de0b6b3a764000086880991506706f05b59d3b1ffff8211905082600003612b945780670de0b6b3a7640000850401945050505050612bed565b6204000082850304939091119091037d40000000000000000000000000000000000000000000000000000000000002919091177faccb18165bd6fe31ae1cf318dc5b51eee0e1ba569b88cd74c1773b91fac10669020190505b92915050565b600080807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff85870985870292508281108382030391505080600003612c4b57838281612c4157612c416135ce565b04925050506128eb565b838110612c8e576040517f773cc18c00000000000000000000000000000000000000000000000000000000815260048101829052602481018590526044016105c1565b600084868809600260036001881981018916988990049182028318808302840302808302840302808302840302808302840302808302840302918202909203026000889003889004909101858311909403939093029303949094049190911702949350505050565b6000680a688906bd8b0000008210612d3d576040517f4a4f26f1000000000000000000000000000000000000000000000000000000008152600481018390526024016105c1565b670de0b6b3a7640000604083901b046128eb8177800000000000000000000000000000000000000000000000678000000000000000821615612d885768016a09e667f3bcc9090260401c5b674000000000000000821615612da7576801306fe0a31b7152df0260401c5b672000000000000000821615612dc6576801172b83c7d517adce0260401c5b671000000000000000821615612de55768010b5586cf9890f62a0260401c5b670800000000000000821615612e04576801059b0d31585743ae0260401c5b670400000000000000821615612e2357680102c9a3e778060ee70260401c5b670200000000000000821615612e425768010163da9fb33356d80260401c5b670100000000000000821615612e6157680100b1afa5abcbed610260401c5b6680000000000000821615612e7f5768010058c86da1c09ea20260401c5b6640000000000000821615612e9d576801002c605e2e8cec500260401c5b6620000000000000821615612ebb57680100162f3904051fa10260401c5b6610000000000000821615612ed9576801000b175effdc76ba0260401c5b6608000000000000821615612ef757680100058ba01fb9f96d0260401c5b6604000000000000821615612f155768010002c5cc37da94920260401c5b6602000000000000821615612f33576801000162e525ee05470260401c5b6601000000000000821615612f515768010000b17255775c040260401c5b65800000000000821615612f6e576801000058b91b5bc9ae0260401c5b65400000000000821615612f8b57680100002c5c89d5ec6d0260401c5b65200000000000821615612fa85768010000162e43f4f8310260401c5b65100000000000821615612fc557680100000b1721bcfc9a0260401c5b65080000000000821615612fe25768010000058b90cf1e6e0260401c5b65040000000000821615612fff576801000002c5c863b73f0260401c5b6502000000000082161561301c57680100000162e430e5a20260401c5b65010000000000821615613039576801000000b1721835510260401c5b64800000000082161561305557680100000058b90c0b490260401c5b6440000000008216156130715768010000002c5c8601cc0260401c5b64200000000082161561308d576801000000162e42fff00260401c5b6410000000008216156130a95768010000000b17217fbb0260401c5b6408000000008216156130c5576801000000058b90bfce0260401c5b6404000000008216156130e157680100000002c5c85fe30260401c5b6402000000008216156130fd5768010000000162e42ff10260401c5b64010000000082161561311957680100000000b17217f80260401c5b63800000008216156131345768010000000058b90bfc0260401c5b634000000082161561314f576801000000002c5c85fe0260401c5b632000000082161561316a57680100000000162e42ff0260401c5b6310000000821615613185576801000000000b17217f0260401c5b63080000008216156131a057680100000000058b90c00260401c5b63040000008216156131bb5768010000000002c5c8600260401c5b63020000008216156131d6576801000000000162e4300260401c5b63010000008216156131f15768010000000000b172180260401c5b6280000082161561320b576801000000000058b90c0260401c5b6240000082161561322557680100000000002c5c860260401c5b6220000082161561323f5768010000000000162e430260401c5b6210000082161561325957680100000000000b17210260401c5b620800008216156132735768010000000000058b910260401c5b6204000082161561328d576801000000000002c5c80260401c5b620200008216156132a757680100000000000162e40260401c5b620100008216156132c1576801000000000000b1720260401c5b6180008216156132da57680100000000000058b90260401c5b6140008216156132f35768010000000000002c5d0260401c5b61200082161561330c576801000000000000162e0260401c5b6110008216156133255768010000000000000b170260401c5b61080082161561333e576801000000000000058c0260401c5b61040082161561335757680100000000000002c60260401c5b61020082161561337057680100000000000001630260401c5b61010082161561338957680100000000000000b10260401c5b60808216156133a157680100000000000000590260401c5b60408216156133b9576801000000000000002c0260401c5b60208216156133d157680100000000000000160260401c5b60108216156133e9576801000000000000000b0260401c5b600882161561340157680100000000000000060260401c5b600482161561341957680100000000000000030260401c5b600282161561343157680100000000000000010260401c5b600182161561344957680100000000000000010260401c5b670de0b6b3a76400000260409190911c60bf031c90565b60006020828403121561347257600080fd5b5035919050565b73ffffffffffffffffffffffffffffffffffffffff8116811461061257600080fd5b6000602082840312156134ad57600080fd5b81356128eb81613479565b600080604083850312156134cb57600080fd5b50508035926020909101359150565b801515811461061257600080fd5b6000806000606084860312156134fd57600080fd5b83359250602084013561350f81613479565b9150604084013561351f816134da565b809150509250925092565b60008060006060848603121561353f57600080fd5b8335925060208401359150604084013561351f816134da565b6000806040838503121561356b57600080fd5b82359150602083013561357d81613479565b809150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b8082028115828204841417612bed57612bed613588565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600082613633577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b81810381811115612bed57612bed613588565b60006020828403121561368c57600080fd5b81516128eb816134da565b80820180821115612bed57612bed613588565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036136db576136db613588565b5060010190565b6000602082840312156136f457600080fd5b5051919050565b60008161370a5761370a613588565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff019056fea164736f6c6343000814000a0000000000000000000000006571c18ddea876ce67932be7115a4e2d11b5d943000000000000000000000000528a2209c4f19d4488ddb4d17ff709e562e02974000000000000000000000000000000000000000000000000000000006794f78a00000000000000000000000000000000000000000000000029a2241af62c0000
Deployed Bytecode
0x608060405234801561001057600080fd5b506004361061025c5760003560e01c8063715018a611610145578063af11c34c116100bd578063e0395c1e1161008c578063f2fde38b11610071578063f2fde38b14610521578063fa78668f14610534578063fde042811461053e57600080fd5b8063e0395c1e14610505578063e2bbb1581461050e57600080fd5b8063af11c34c146104b6578063b4f40c61146104d6578063dc6fe235146104df578063ddce102f146104f257600080fd5b80638da5cb5b1161011457806394e382c0116100f957806394e382c01461048c57806399fcfccb1461049b578063a81d4658146104a357600080fd5b80638da5cb5b1461041b57806393f1a40b1461045a57600080fd5b8063715018a6146103ee57806381e1ccba146103f6578063827c049e146103ff578063828047a51461040857600080fd5b80632ab97b9d116101d85780635312ea8e116101a757806364482f791161018c57806364482f791461038c5780636552374a1461039f5780636bd3b87c146103b257600080fd5b80635312ea8e14610371578063630b5ba11461038457600080fd5b80632ab97b9d1461032f5780633ff0320714610342578063441a3e701461034b57806351eb05a61461035e57600080fd5b80630f44b5a91161022f57806316a6d94a1161021457806316a6d94a1461030057806317caf6f1146103135780631eaaa0451461031c57600080fd5b80630f44b5a9146102a35780631526fe27146102b657600080fd5b806305a9f27414610261578063081e3eda1461027d5780630c18d4ce146102855780630e38c32b1461028e575b600080fd5b61026a600b5481565b6040519081526020015b60405180910390f35b60025461026a565b61026a600a5481565b6102a161029c366004613460565b610546565b005b61026a6102b136600461349b565b610615565b6102c96102c4366004613460565b6106ba565b6040805173ffffffffffffffffffffffffffffffffffffffff90951685526020850193909352918301526060820152608001610274565b6102a161030e3660046134b8565b61070b565b61026a60095481565b6102a161032a3660046134e8565b610ad6565b6102a161033d366004613460565b610d30565b61026a61012c81565b6102a16103593660046134b8565b610e13565b6102a161036c366004613460565b611075565b6102a161037f366004613460565b6112de565b6102a161148e565b6102a161039a36600461352a565b6114bf565b61026a6103ad36600461349b565b611622565b6103d96103c036600461349b565b6005602052600090815260409020805460019091015482565b60408051928352602083019190915201610274565b6102a161172e565b61026a60085481565b61026a60075481565b6102a1610416366004613460565b611742565b60005473ffffffffffffffffffffffffffffffffffffffff165b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610274565b6103d9610468366004613558565b60046020908152600092835260408084209091529082529020805460019091015482565b61026a674563918244f4000081565b6102a16118be565b61026a6104b1366004613558565b611c44565b6006546104359073ffffffffffffffffffffffffffffffffffffffff1681565b61026a600d5481565b6102a16104ed366004613460565b611e61565b6102a1610500366004613460565b612110565b61026a600c5481565b6102a161051c3660046134b8565b6121b3565b6102a161052f36600461349b565b6123a6565b61026a62ed4e0081565b61026a601e81565b61054e612407565b601e8111156105ca5760405162461bcd60e51b815260206004820152602760248201527f7365745374616b696e6750657263656e746167653a2065786365656473206d6160448201527f78206c696d69740000000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b6105d261148e565b60088190556040518181527fe85e3e0b319540f3d1e14a6900e5f1005bf953ea549c6c41e3428224d8898de69060200160405180910390a161061261245a565b50565b73ffffffffffffffffffffffffffffffffffffffff811660009081527f17ef568e3e12ab5b9c7254a8d58478811de00f9e6eb34345acd53bf8fd09d3ec60205260408120816106648185611c44565b90506000826000015461067686611622565b61068890670de0b6b3a76400006135b7565b61069291906135fd565b9050670de0b6b3a76400006106a782846135b7565b6106b191906135fd565b95945050505050565b600281815481106106ca57600080fd5b6000918252602090912060049091020180546001820154600283015460039093015473ffffffffffffffffffffffffffffffffffffffff9092169350919084565b610713612584565b6000600260008154811061072957610729613638565b600091825260208083203384527f17ef568e3e12ab5b9c7254a8d58478811de00f9e6eb34345acd53bf8fd09d3ec8252604080852060059093529093206004909202909201925061012c8410801590610785575062ed4e008411155b6107f75760405162461bcd60e51b815260206004820152602360248201527f5374616b65206661696c65643a20496e76616c6964204c6f636b20447572617460448201527f696f6e000000000000000000000000000000000000000000000000000000000060648201526084016105c1565b6108016000611075565b815415801590610815575080600101544211155b15610930576000826001015464e8d4a510008560030154856000015461083b91906135b7565b61084591906135fd565b61084f9190613667565b90506000670de0b6b3a7640000846000015461086a33611622565b61087c90670de0b6b3a76400006135b7565b61088691906135fd565b61089090846135b7565b61089a91906135fd565b9050801561092d576108ac33826125c7565b8082111561092d5760065473ffffffffffffffffffffffffffffffffffffffff166342966c686108dc8385613667565b6040518263ffffffff1660e01b81526004016108fa91815260200190565b600060405180830381600087803b15801561091457600080fd5b505af1158015610928573d6000803e3d6000fd5b505050505b50505b8415610a65576006546040517f23b872dd0000000000000000000000000000000000000000000000000000000081523360048201523060248201526044810187905273ffffffffffffffffffffffffffffffffffffffff909116906323b872dd906064016020604051808303816000875af11580156109b3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109d7919061367a565b50848260000160008282546109ec9190613697565b9091555050805485908290600090610a05908490613697565b9091555060009050610a178542613697565b90508160010154811115610a2d57600182018190555b85600b6000828254610a3f9190613697565b90915550508154869003610a6357600c8054906000610a5d836136aa565b91905055505b505b6003830154825464e8d4a5100091610a7c916135b7565b610a8691906135fd565b6001830155604080518681526020810186905233917f8022d0cd856e916e535bdaaf7c0674e7b2e2f0231ffef91f47d0214b8b801579910160405180910390a2505050610ad260018055565b5050565b610ade612407565b73ffffffffffffffffffffffffffffffffffffffff8216600090815260036020526040902054829060ff1615610b565760405162461bcd60e51b815260206004820152601960248201527f4164643a20706f6f6c20616c726561647920657869737473210000000000000060448201526064016105c1565b8115610b6457610b6461148e565b6000600a544211610b7757600a54610b79565b425b90508460096000828254610b8d9190613697565b90915550506040805160808101825273ffffffffffffffffffffffffffffffffffffffff86811680835260208084018a8152848601878152600060608701818152600280546001808201835591845298517f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ace6004909a02998a0180547fffffffffffffffffffffffff000000000000000000000000000000000000000016919099161790975592517f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5acf88015590517f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ad087015590517f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ad1909501949094559083526003905291902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169091179055610ce461245a565b604051859073ffffffffffffffffffffffffffffffffffffffff86169033907f5f43b6be860b00b28d44981331005a0503e6b566155ca1423af4299a6bde1f4690600090a45050505050565b610d38612407565b670de0b6b3a76400008110158015610d5857506753444835ec5800008111155b610dca5760405162461bcd60e51b815260206004820152603360248201527f7570646174654b3a206b206d757374206265206265747765656e203120616e6460448201527f203620287363616c65642062792031653138290000000000000000000000000060648201526084016105c1565b610dd261148e565b600d5460408051918252602082018390527fbd75af1b16e208f9d05e71a979a9d85e61791ef6537c46f819b0b443ab8baa38910160405180910390a1600d55565b610e1b612584565b81610e2560025490565b8110610e735760405162461bcd60e51b815260206004820152600f60248201527f496e76616c696420706f6f6c204944000000000000000000000000000000000060448201526064016105c1565b82600003610ec35760405162461bcd60e51b815260206004820152601a60248201527f5769746864726177204649564520627920756e7374616b696e6700000000000060448201526064016105c1565b600060028481548110610ed857610ed8613638565b6000918252602080832087845260048083526040808620338752909352919093208054929091029092019250841115610f795760405162461bcd60e51b815260206004820152602260248201527f5769746864726177206661696c65643a20496e76616c6964206f70657261746960448201527f6f6e00000000000000000000000000000000000000000000000000000000000060648201526084016105c1565b610f8285611075565b6000816001015464e8d4a5100084600301548460000154610fa391906135b7565b610fad91906135fd565b610fb79190613667565b90508015610fc957610fc933826125c7565b841561100b5784826000016000828254610fe39190613667565b9091555050825461100b9073ffffffffffffffffffffffffffffffffffffffff163387612713565b6003830154825464e8d4a5100091611022916135b7565b61102c91906135fd565b6001830155604051858152869033907ff279e6a1f5e320cca91135676d9cb6e44ca8a08c0b88342bcdb1144f6511b5689060200160405180910390a350505050610ad260018055565b8061107f60025490565b81106110cd5760405162461bcd60e51b815260206004820152600f60248201527f496e76616c696420706f6f6c204944000000000000000000000000000000000060448201526064016105c1565b6000600283815481106110e2576110e2613638565b906000526020600020906004020190508060020154421161110257505050565b600080841161111357600b546111a4565b81546040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff909116906370a0823190602401602060405180830381865afa158015611180573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111a491906136e2565b9050806000036111ba5750426002909101555050565b60008260020154426111cc9190613667565b905060006009548460010154600754846111e691906135b7565b6111f091906135b7565b6111fa91906135fd565b9050600061120782612794565b9050801561129a576006546040517f40c10f190000000000000000000000000000000000000000000000000000000081523060048201526024810183905273ffffffffffffffffffffffffffffffffffffffff909116906340c10f1990604401600060405180830381600087803b15801561128157600080fd5b505af1158015611295573d6000803e3d6000fd5b505050505b836112aa8264e8d4a510006135b7565b6112b491906135fd565b8560030160008282546112c79190613697565b909155505042600290950194909455505050505050565b6112e6612584565b806112f060025490565b811061133e5760405162461bcd60e51b815260206004820152600f60248201527f496e76616c696420706f6f6c204944000000000000000000000000000000000060448201526064016105c1565b8160000361138e5760405162461bcd60e51b815260206004820152601c60248201527f556e617661696c61626c6520666f72207374616b696e6720706f6f6c0000000060448201526064016105c1565b6000600283815481106113a3576113a3613638565b600091825260208083208684526004808352604080862033875290935291909320805492909102909201925061141b5760405162461bcd60e51b815260206004820152601560248201527f4e6f20746f6b656e7320746f207769746864726177000000000000000000000060448201526064016105c1565b805460008083556001830155825461144a9073ffffffffffffffffffffffffffffffffffffffff163383612713565b604051818152859033907fbb757047c2b5f3974fe26b7c10f732e7bce710b0952a71082702781e62ae05959060200160405180910390a35050505061061260018055565b600061149960025490565b905060005b81811015610ad2576114af81611075565b6114b8816136aa565b905061149e565b6114c7612407565b8260000361153d5760405162461bcd60e51b815260206004820152602a60248201527f596f752063616e27742073657420616c6c6f63506f696e7420666f722073746160448201527f6b696e6720706f6f6c2e0000000000000000000000000000000000000000000060648201526084016105c1565b801561154b5761154b61148e565b816002848154811061155f5761155f613638565b9060005260206000209060040201600101541461161d5760006002848154811061158b5761158b613638565b906000526020600020906004020160010154905082600285815481106115b3576115b3613638565b90600052602060002090600402016001018190555082816009546115d79190613667565b6115e19190613697565b6009556115ec61245a565b6040518390859033907f9eca8f7bcfb868d72b4ed95b71c627c194ab6bcb9b83adb2280e8a0320bb847690600090a4505b505050565b73ffffffffffffffffffffffffffffffffffffffff81166000908152600560205260408120600181015442118061165857508054155b156116665750600092915050565b60004282600101546116789190613667565b8254909150600061169d61169484670de0b6b3a76400006128df565b62ed4e006128f2565b905060006116ad600d54836128df565b905060006116cb670de0b6b3a76400006116c684612907565b6128f2565b905060006116e6670de0b6b3a76400006116c6600d54612907565b6116f890670de0b6b3a7640000613667565b905060006117208661171b61171586670de0b6b3a7640000613667565b856128f2565b6128df565b9a9950505050505050505050565b611736612407565b6117406000612976565b565b61174a612584565b33600090815260056020526040902080546117a75760405162461bcd60e51b815260206004820152601860248201527f4e6f20616374697665206c6f636b20746f20657874656e64000000000000000060448201526064016105c1565b60008282600101546117b99190613697565b90506117c862ed4e0042613697565b8111156118175760405162461bcd60e51b815260206004820152601d60248201527f45786365656473206d6178696d756d206c6f636b206475726174696f6e00000060448201526064016105c1565b61182361012c42613697565b8110156118725760405162461bcd60e51b815260206004820152601560248201527f556e6c6f636b2074696d6520746f6f2073686f7274000000000000000000000060448201526064016105c1565b60018201819055604080518481526020810183905233917e3b7d2ad3b9d4b540c9231c2d2302e09268ce8fbb59d4005bf049893beffa2e910160405180910390a2505061061260018055565b6118c6612584565b600060026000815481106118dc576118dc613638565b600091825260208083203384527f17ef568e3e12ab5b9c7254a8d58478811de00f9e6eb34345acd53bf8fd09d3ec8252604080852060059093529093208154600490930290930193509190158015906119355750805415155b6119a75760405162461bcd60e51b815260206004820152602160248201527f556e7374616b65206661696c65643a20496e76616c6964206f7065726174696f60448201527f6e0000000000000000000000000000000000000000000000000000000000000060648201526084016105c1565b6119b16000611075565b80600101544211611ad6576000826001015464e8d4a51000856003015485600001546119dd91906135b7565b6119e791906135fd565b6119f19190613667565b90506000670de0b6b3a76400008460000154611a0c33611622565b611a1e90670de0b6b3a76400006135b7565b611a2891906135fd565b611a3290846135b7565b611a3c91906135fd565b90508015611acf57611a4e33826125c7565b80821115611acf5760065473ffffffffffffffffffffffffffffffffffffffff166342966c68611a7e8385613667565b6040518263ffffffff1660e01b8152600401611a9c91815260200190565b600060405180830381600087803b158015611ab657600080fd5b505af1158015611aca573d6000803e3d6000fd5b505050505b5050611c17565b6000826001015464e8d4a5100085600301548560000154611af791906135b7565b611b0191906135fd565b611b0b9190613667565b90508015611b98576006546040517f42966c680000000000000000000000000000000000000000000000000000000081526004810183905273ffffffffffffffffffffffffffffffffffffffff909116906342966c6890602401600060405180830381600087803b158015611b7f57600080fd5b505af1158015611b93573d6000803e3d6000fd5b505050505b8254600080855580845560018401819055600b8054839290611bbb908490613667565b9091555050600c8054906000611bd0836136fb565b9190505550611bdf33826125c7565b60405181815233907fbeeac20c93f16ecc5d2707dffeb3263a7f99053ac0aa548803e9e8b5a00074389060200160405180910390a250505b6003830154825464e8d4a5100091611c2e916135b7565b611c3891906135fd565b60019283015550805550565b600082611c5060025490565b8110611c9e5760405162461bcd60e51b815260206004820152600f60248201527f496e76616c696420706f6f6c204944000000000000000000000000000000000060448201526064016105c1565b600060028581548110611cb357611cb3613638565b600091825260208083208884526004808352604080862073ffffffffffffffffffffffffffffffffffffffff8b16875290935291842092909102016003810154909350909187611d0557600b54611d96565b83546040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff909116906370a0823190602401602060405180830381865afa158015611d72573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d9691906136e2565b9050836002015442118015611daa57508015155b15611e28576000846002015442611dc19190613667565b90506000600954866001015460075484611ddb91906135b7565b611de591906135b7565b611def91906135fd565b90506000611dfc82612794565b905083611e0e8264e8d4a510006135b7565b611e1891906135fd565b611e229086613697565b94505050505b6001830154835464e8d4a5100090611e419085906135b7565b611e4b91906135fd565b611e559190613667565b98975050505050505050565b611e69612407565b611e7161148e565b600654604080517fd5abeb01000000000000000000000000000000000000000000000000000000008152905160009273ffffffffffffffffffffffffffffffffffffffff169163d5abeb019160048083019260209291908290030181865afa158015611ee1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f0591906136e2565b90506000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611f76573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f9a91906136e2565b90508183106120115760405162461bcd60e51b815260206004820152603760248201527f4e6577206d617820737570706c79206d757374206265206c657373207468616e60448201527f207468652063757272656e74206d617820737570706c7900000000000000000060648201526084016105c1565b808310156120875760405162461bcd60e51b815260206004820152603d60248201527f4e6577206d617820737570706c79206d757374206e6f74206265206c6573732060448201527f7468616e207468652063757272656e7420746f74616c20737570706c7900000060648201526084016105c1565b6006546040517f91ff4a730000000000000000000000000000000000000000000000000000000081526004810185905273ffffffffffffffffffffffffffffffffffffffff909116906391ff4a7390602401600060405180830381600087803b1580156120f357600080fd5b505af1158015612107573d6000803e3d6000fd5b50505050505050565b612118612407565b674563918244f400008111156121705760405162461bcd60e51b815260206004820152601e60248201527f736574456d697373696f6e3a2065786365656473206d6178206c696d6974000060448201526064016105c1565b61217861148e565b60078190556040518181527fb114240d54ce08081cbd18870dc3b6cd4091bb86ff29d2ad41906c2a2d6723d49060200160405180910390a150565b6121bb612584565b816121c560025490565b81106122135760405162461bcd60e51b815260206004820152600f60248201527f496e76616c696420706f6f6c204944000000000000000000000000000000000060448201526064016105c1565b826000036122635760405162461bcd60e51b815260206004820152601760248201527f4465706f7369742046495645206279207374616b696e6700000000000000000060448201526064016105c1565b60006002848154811061227857612278613638565b600091825260208083208784526004808352604080862033875290935291909320910290910191506122a985611075565b8054156122f9576000816001015464e8d4a51000846003015484600001546122d191906135b7565b6122db91906135fd565b6122e59190613667565b905080156122f7576122f733826125c7565b505b831561233d5781546123239073ffffffffffffffffffffffffffffffffffffffff163330876129eb565b838160000160008282546123379190613697565b90915550505b6003820154815464e8d4a5100091612354916135b7565b61235e91906135fd565b6001820155604051848152859033907f90890809c654f11d6e72a28fa60149770a0d11ec6c92319d6ceb2bb0a4ea1a159060200160405180910390a3505050610ad260018055565b6123ae612407565b73ffffffffffffffffffffffffffffffffffffffff81166123fe576040517f1e4fbdf7000000000000000000000000000000000000000000000000000000008152600060048201526024016105c1565b61061281612976565b60005473ffffffffffffffffffffffffffffffffffffffff163314611740576040517f118cdaa70000000000000000000000000000000000000000000000000000000081523360048201526024016105c1565b600061246560025490565b9050600060015b828110156124b6576002818154811061248757612487613638565b906000526020600020906004020160010154826124a49190613697565b91506124af816136aa565b905061246c565b508015610ad2576000600854826124cd91906135b7565b6124dc9064e8d4a510006135b7565b9050600060085460646124ef9190613667565b9050600064e8d4a5100061250383856135fd565b61250d91906135fd565b905080600260008154811061252457612524613638565b9060005260206000209060040201600101546009546125439190613667565b61254d9190613697565b60098190555080600260008154811061256857612568613638565b9060005260206000209060040201600101819055505050505050565b6002600154036125c0576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600155565b6006546040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015260009173ffffffffffffffffffffffffffffffffffffffff16906370a0823190602401602060405180830381865afa158015612636573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061265a91906136e2565b9050600081831161266b578261266d565b815b6006546040517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff87811660048301526024820184905292935091169063a9059cbb906044016020604051808303816000875af11580156126e8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061270c919061367a565b5050505050565b60405173ffffffffffffffffffffffffffffffffffffffff83811660248301526044820183905261161d91859182169063a9059cbb906064015b604051602081830303815290604052915060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050612a37565b600080600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612804573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061282891906136e2565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d5abeb016040518163ffffffff1660e01b8152600401602060405180830381865afa158015612895573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128b991906136e2565b6128c39190613667565b9050828110156128d5578091506128d9565b8291505b50919050565b60006128eb8383612adb565b9392505050565b60006128eb83670de0b6b3a764000084612bf3565b6000680736ea4425c11ac631821061294e576040517f315da068000000000000000000000000000000000000000000000000000000008152600481018390526024016105c1565b6714057b7ef767814f82026128eb670de0b6b3a76400006706f05b59d3b20000830104612cf6565b6000805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60405173ffffffffffffffffffffffffffffffffffffffff8481166024830152838116604483015260648201839052612a319186918216906323b872dd9060840161274d565b50505050565b600080602060008451602086016000885af180612a5a576040513d6000823e3d81fd5b50506000513d91508115612a72578060011415612a8c565b73ffffffffffffffffffffffffffffffffffffffff84163b155b15612a31576040517f5274afe700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff851660048201526024016105c1565b600080807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848609848602925082811083820303915050670de0b6b3a76400008110612b56576040517fd31b3402000000000000000000000000000000000000000000000000000000008152600481018290526024016105c1565b600080670de0b6b3a764000086880991506706f05b59d3b1ffff8211905082600003612b945780670de0b6b3a7640000850401945050505050612bed565b6204000082850304939091119091037d40000000000000000000000000000000000000000000000000000000000002919091177faccb18165bd6fe31ae1cf318dc5b51eee0e1ba569b88cd74c1773b91fac10669020190505b92915050565b600080807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff85870985870292508281108382030391505080600003612c4b57838281612c4157612c416135ce565b04925050506128eb565b838110612c8e576040517f773cc18c00000000000000000000000000000000000000000000000000000000815260048101829052602481018590526044016105c1565b600084868809600260036001881981018916988990049182028318808302840302808302840302808302840302808302840302808302840302918202909203026000889003889004909101858311909403939093029303949094049190911702949350505050565b6000680a688906bd8b0000008210612d3d576040517f4a4f26f1000000000000000000000000000000000000000000000000000000008152600481018390526024016105c1565b670de0b6b3a7640000604083901b046128eb8177800000000000000000000000000000000000000000000000678000000000000000821615612d885768016a09e667f3bcc9090260401c5b674000000000000000821615612da7576801306fe0a31b7152df0260401c5b672000000000000000821615612dc6576801172b83c7d517adce0260401c5b671000000000000000821615612de55768010b5586cf9890f62a0260401c5b670800000000000000821615612e04576801059b0d31585743ae0260401c5b670400000000000000821615612e2357680102c9a3e778060ee70260401c5b670200000000000000821615612e425768010163da9fb33356d80260401c5b670100000000000000821615612e6157680100b1afa5abcbed610260401c5b6680000000000000821615612e7f5768010058c86da1c09ea20260401c5b6640000000000000821615612e9d576801002c605e2e8cec500260401c5b6620000000000000821615612ebb57680100162f3904051fa10260401c5b6610000000000000821615612ed9576801000b175effdc76ba0260401c5b6608000000000000821615612ef757680100058ba01fb9f96d0260401c5b6604000000000000821615612f155768010002c5cc37da94920260401c5b6602000000000000821615612f33576801000162e525ee05470260401c5b6601000000000000821615612f515768010000b17255775c040260401c5b65800000000000821615612f6e576801000058b91b5bc9ae0260401c5b65400000000000821615612f8b57680100002c5c89d5ec6d0260401c5b65200000000000821615612fa85768010000162e43f4f8310260401c5b65100000000000821615612fc557680100000b1721bcfc9a0260401c5b65080000000000821615612fe25768010000058b90cf1e6e0260401c5b65040000000000821615612fff576801000002c5c863b73f0260401c5b6502000000000082161561301c57680100000162e430e5a20260401c5b65010000000000821615613039576801000000b1721835510260401c5b64800000000082161561305557680100000058b90c0b490260401c5b6440000000008216156130715768010000002c5c8601cc0260401c5b64200000000082161561308d576801000000162e42fff00260401c5b6410000000008216156130a95768010000000b17217fbb0260401c5b6408000000008216156130c5576801000000058b90bfce0260401c5b6404000000008216156130e157680100000002c5c85fe30260401c5b6402000000008216156130fd5768010000000162e42ff10260401c5b64010000000082161561311957680100000000b17217f80260401c5b63800000008216156131345768010000000058b90bfc0260401c5b634000000082161561314f576801000000002c5c85fe0260401c5b632000000082161561316a57680100000000162e42ff0260401c5b6310000000821615613185576801000000000b17217f0260401c5b63080000008216156131a057680100000000058b90c00260401c5b63040000008216156131bb5768010000000002c5c8600260401c5b63020000008216156131d6576801000000000162e4300260401c5b63010000008216156131f15768010000000000b172180260401c5b6280000082161561320b576801000000000058b90c0260401c5b6240000082161561322557680100000000002c5c860260401c5b6220000082161561323f5768010000000000162e430260401c5b6210000082161561325957680100000000000b17210260401c5b620800008216156132735768010000000000058b910260401c5b6204000082161561328d576801000000000002c5c80260401c5b620200008216156132a757680100000000000162e40260401c5b620100008216156132c1576801000000000000b1720260401c5b6180008216156132da57680100000000000058b90260401c5b6140008216156132f35768010000000000002c5d0260401c5b61200082161561330c576801000000000000162e0260401c5b6110008216156133255768010000000000000b170260401c5b61080082161561333e576801000000000000058c0260401c5b61040082161561335757680100000000000002c60260401c5b61020082161561337057680100000000000001630260401c5b61010082161561338957680100000000000000b10260401c5b60808216156133a157680100000000000000590260401c5b60408216156133b9576801000000000000002c0260401c5b60208216156133d157680100000000000000160260401c5b60108216156133e9576801000000000000000b0260401c5b600882161561340157680100000000000000060260401c5b600482161561341957680100000000000000030260401c5b600282161561343157680100000000000000010260401c5b600182161561344957680100000000000000010260401c5b670de0b6b3a76400000260409190911c60bf031c90565b60006020828403121561347257600080fd5b5035919050565b73ffffffffffffffffffffffffffffffffffffffff8116811461061257600080fd5b6000602082840312156134ad57600080fd5b81356128eb81613479565b600080604083850312156134cb57600080fd5b50508035926020909101359150565b801515811461061257600080fd5b6000806000606084860312156134fd57600080fd5b83359250602084013561350f81613479565b9150604084013561351f816134da565b809150509250925092565b60008060006060848603121561353f57600080fd5b8335925060208401359150604084013561351f816134da565b6000806040838503121561356b57600080fd5b82359150602083013561357d81613479565b809150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b8082028115828204841417612bed57612bed613588565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600082613633577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b81810381811115612bed57612bed613588565b60006020828403121561368c57600080fd5b81516128eb816134da565b80820180821115612bed57612bed613588565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036136db576136db613588565b5060010190565b6000602082840312156136f457600080fd5b5051919050565b60008161370a5761370a613588565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff019056fea164736f6c6343000814000a
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
0000000000000000000000006571c18ddea876ce67932be7115a4e2d11b5d943000000000000000000000000528a2209c4f19d4488ddb4d17ff709e562e02974000000000000000000000000000000000000000000000000000000006794f78a00000000000000000000000000000000000000000000000029a2241af62c0000
-----Decoded View---------------
Arg [0] : initialOwner (address): 0x6571c18ddEa876Ce67932bE7115A4E2d11b5D943
Arg [1] : _five (address): 0x528a2209C4f19d4488DdB4D17fF709e562E02974
Arg [2] : _startBlockTime (uint256): 1737815946
Arg [3] : initialK (uint256): 3000000000000000000
-----Encoded View---------------
4 Constructor Arguments found :
Arg [0] : 0000000000000000000000006571c18ddea876ce67932be7115a4e2d11b5d943
Arg [1] : 000000000000000000000000528a2209c4f19d4488ddb4d17ff709e562e02974
Arg [2] : 000000000000000000000000000000000000000000000000000000006794f78a
Arg [3] : 00000000000000000000000000000000000000000000000029a2241af62c0000
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 34 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
Loading...
Loading
Loading...
Loading
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.