Overview
ETH Balance
0 ETH
Eth Value
$0.00More Info
Private Name Tags
ContractCreator
Latest 25 from a total of 84 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Deposit Bribe | 16565370 | 620 days ago | IN | 0.04958345 ETH | 0.00144195 | ||||
Deposit Bribe | 16565346 | 620 days ago | IN | 0.00781211 ETH | 0.00111197 | ||||
Deposit Bribe | 16564599 | 620 days ago | IN | 0.01272873 ETH | 0.00120895 | ||||
Deposit Bribe ER... | 16563041 | 620 days ago | IN | 0 ETH | 0.00367519 | ||||
Deposit Bribe | 16562550 | 620 days ago | IN | 0.0333 ETH | 0.00087992 | ||||
Deposit Bribe | 16561431 | 620 days ago | IN | 0.0031 ETH | 0.00092024 | ||||
Deposit Bribe | 16560688 | 620 days ago | IN | 0.01 ETH | 0.00084709 | ||||
Deposit Bribe ER... | 16560608 | 620 days ago | IN | 0 ETH | 0.00108078 | ||||
Deposit Bribe | 16560580 | 620 days ago | IN | 0.04 ETH | 0.00085419 | ||||
Deposit Bribe | 16560413 | 620 days ago | IN | 0.2 ETH | 0.00077716 | ||||
Deposit Bribe | 16560088 | 620 days ago | IN | 1 ETH | 0.00090829 | ||||
Deposit Bribe ER... | 16559842 | 620 days ago | IN | 0 ETH | 0.00152021 | ||||
Deposit Bribe | 16559823 | 620 days ago | IN | 1.5 ETH | 0.00092912 | ||||
Deposit Bribe | 16559676 | 620 days ago | IN | 0.00095908 ETH | 0.00094653 | ||||
Deposit Bribe ER... | 16558375 | 621 days ago | IN | 0 ETH | 0.00144545 | ||||
Deposit Bribe | 16558339 | 621 days ago | IN | 0.11912398 ETH | 0.00120155 | ||||
Deposit Bribe ER... | 16558219 | 621 days ago | IN | 0 ETH | 0.00178502 | ||||
Deposit Bribe | 16558158 | 621 days ago | IN | 0.05 ETH | 0.00132123 | ||||
Add Whitelist To... | 16557706 | 621 days ago | IN | 0 ETH | 0.00455831 | ||||
Deposit Bribe | 16557062 | 621 days ago | IN | 0.00298112 ETH | 0.00133005 | ||||
Deposit Bribe ER... | 16557014 | 621 days ago | IN | 0 ETH | 0.0040417 | ||||
Deposit Bribe ER... | 16556913 | 621 days ago | IN | 0 ETH | 0.00181545 | ||||
Deposit Bribe | 16556742 | 621 days ago | IN | 0.6 ETH | 0.0018887 | ||||
Deposit Bribe ER... | 16556361 | 621 days ago | IN | 0 ETH | 0.00408582 | ||||
Deposit Bribe ER... | 16556352 | 621 days ago | IN | 0 ETH | 0.00252758 |
Latest 25 internal transactions (View All)
Advanced mode:
Parent Transaction Hash | Block | From | To | |||
---|---|---|---|---|---|---|
16565370 | 620 days ago | 0.04958345 ETH | ||||
16565346 | 620 days ago | 0.00781211 ETH | ||||
16564599 | 620 days ago | 0.01272873 ETH | ||||
16562550 | 620 days ago | 0.0333 ETH | ||||
16561431 | 620 days ago | 0.0031 ETH | ||||
16560688 | 620 days ago | 0.01 ETH | ||||
16560580 | 620 days ago | 0.04 ETH | ||||
16560413 | 620 days ago | 0.2 ETH | ||||
16560088 | 620 days ago | 1 ETH | ||||
16559823 | 620 days ago | 1.5 ETH | ||||
16559676 | 620 days ago | 0.00095908 ETH | ||||
16558339 | 621 days ago | 0.11912398 ETH | ||||
16558158 | 621 days ago | 0.05 ETH | ||||
16557062 | 621 days ago | 0.00298112 ETH | ||||
16556742 | 621 days ago | 0.6 ETH | ||||
16554979 | 621 days ago | 0.31 ETH | ||||
16554331 | 621 days ago | 0.12 ETH | ||||
16553456 | 621 days ago | 0.0331165 ETH | ||||
16552981 | 621 days ago | 0.1 ETH | ||||
16552411 | 622 days ago | 0.06393095 ETH | ||||
16551681 | 622 days ago | 1 ETH | ||||
16544434 | 623 days ago | 0.01365426 ETH | ||||
16541772 | 623 days ago | 0.02 ETH | ||||
16537929 | 624 days ago | 0.1 ETH | ||||
16537810 | 624 days ago | 0.05 ETH |
Loading...
Loading
Contract Name:
FloorDaoBribe
Compiler Version
v0.8.12+commit.f00d7308
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2022-05-10 */ // Sources flattened with hardhat v2.8.3 https://hardhat.org // File @openzeppelin/contracts/access/[email protected] // SPDX-License-Identifier: MIT // OpenZeppelin Contracts v4.4.1 (access/IAccessControl.sol) pragma solidity ^0.8.0; /** * @dev External interface of AccessControl declared to support ERC165 detection. */ interface IAccessControl { /** * @dev Emitted when `newAdminRole` is set as ``role``'s admin role, replacing `previousAdminRole` * * `DEFAULT_ADMIN_ROLE` is the starting admin for all roles, despite * {RoleAdminChanged} not being emitted signaling this. * * _Available since v3.1._ */ event RoleAdminChanged(bytes32 indexed role, bytes32 indexed previousAdminRole, bytes32 indexed newAdminRole); /** * @dev Emitted when `account` is granted `role`. * * `sender` is the account that originated the contract call, an admin role * bearer except when using {AccessControl-_setupRole}. */ event RoleGranted(bytes32 indexed role, address indexed account, address indexed sender); /** * @dev Emitted when `account` is revoked `role`. * * `sender` is the account that originated the contract call: * - if using `revokeRole`, it is the admin role bearer * - if using `renounceRole`, it is the role bearer (i.e. `account`) */ event RoleRevoked(bytes32 indexed role, address indexed account, address indexed sender); /** * @dev Returns `true` if `account` has been granted `role`. */ function hasRole(bytes32 role, address account) external view returns (bool); /** * @dev Returns the admin role that controls `role`. See {grantRole} and * {revokeRole}. * * To change a role's admin, use {AccessControl-_setRoleAdmin}. */ function getRoleAdmin(bytes32 role) external view returns (bytes32); /** * @dev Grants `role` to `account`. * * If `account` had not been already granted `role`, emits a {RoleGranted} * event. * * Requirements: * * - the caller must have ``role``'s admin role. */ function grantRole(bytes32 role, address account) external; /** * @dev Revokes `role` from `account`. * * If `account` had been granted `role`, emits a {RoleRevoked} event. * * Requirements: * * - the caller must have ``role``'s admin role. */ function revokeRole(bytes32 role, address account) external; /** * @dev Revokes `role` from the calling account. * * Roles are often managed via {grantRole} and {revokeRole}: this function's * purpose is to provide a mechanism for accounts to lose their privileges * if they are compromised (such as when a trusted device is misplaced). * * If the calling account had been granted `role`, emits a {RoleRevoked} * event. * * Requirements: * * - the caller must be `account`. */ function renounceRole(bytes32 role, address account) external; } // File @openzeppelin/contracts/utils/[email protected] // OpenZeppelin Contracts v4.4.1 (utils/Context.sol) pragma solidity ^0.8.0; /** * @dev Provides information about the current execution context, including the * sender of the transaction and its data. While these are generally available * via msg.sender and msg.data, they should not be accessed in such a direct * manner, since when dealing with meta-transactions the account sending and * paying for execution may not be the actual sender (as far as an application * is concerned). * * This contract is only required for intermediate, library-like contracts. */ abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } function _msgData() internal view virtual returns (bytes calldata) { return msg.data; } } // File @openzeppelin/contracts/utils/[email protected] // OpenZeppelin Contracts v4.4.1 (utils/Strings.sol) pragma solidity ^0.8.0; /** * @dev String operations. */ library Strings { bytes16 private constant _HEX_SYMBOLS = "0123456789abcdef"; /** * @dev Converts a `uint256` to its ASCII `string` decimal representation. */ function toString(uint256 value) internal pure returns (string memory) { // Inspired by OraclizeAPI's implementation - MIT licence // https://github.com/oraclize/ethereum-api/blob/b42146b063c7d6ee1358846c198246239e9360e8/oraclizeAPI_0.4.25.sol if (value == 0) { return "0"; } uint256 temp = value; uint256 digits; while (temp != 0) { digits++; temp /= 10; } bytes memory buffer = new bytes(digits); while (value != 0) { digits -= 1; buffer[digits] = bytes1(uint8(48 + uint256(value % 10))); value /= 10; } return string(buffer); } /** * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation. */ function toHexString(uint256 value) internal pure returns (string memory) { if (value == 0) { return "0x00"; } uint256 temp = value; uint256 length = 0; while (temp != 0) { length++; temp >>= 8; } return toHexString(value, length); } /** * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation with fixed length. */ function toHexString(uint256 value, uint256 length) internal pure returns (string memory) { bytes memory buffer = new bytes(2 * length + 2); buffer[0] = "0"; buffer[1] = "x"; for (uint256 i = 2 * length + 1; i > 1; --i) { buffer[i] = _HEX_SYMBOLS[value & 0xf]; value >>= 4; } require(value == 0, "Strings: hex length insufficient"); return string(buffer); } } // File @openzeppelin/contracts/utils/introspection/[email protected] // OpenZeppelin Contracts v4.4.1 (utils/introspection/IERC165.sol) pragma solidity ^0.8.0; /** * @dev Interface of the ERC165 standard, as defined in the * https://eips.ethereum.org/EIPS/eip-165[EIP]. * * 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[EIP 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); } // File @openzeppelin/contracts/utils/introspection/[email protected] // OpenZeppelin Contracts v4.4.1 (utils/introspection/ERC165.sol) pragma solidity ^0.8.0; /** * @dev Implementation of the {IERC165} interface. * * Contracts that want to implement ERC165 should inherit from this contract and override {supportsInterface} to check * for the additional interface id that will be supported. For example: * * ```solidity * function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) { * return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId); * } * ``` * * Alternatively, {ERC165Storage} provides an easier to use but more expensive implementation. */ abstract contract ERC165 is IERC165 { /** * @dev See {IERC165-supportsInterface}. */ function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) { return interfaceId == type(IERC165).interfaceId; } } // File @openzeppelin/contracts/access/[email protected] // OpenZeppelin Contracts v4.4.1 (access/AccessControl.sol) pragma solidity ^0.8.0; /** * @dev Contract module that allows children to implement role-based access * control mechanisms. This is a lightweight version that doesn't allow enumerating role * members except through off-chain means by accessing the contract event logs. Some * applications may benefit from on-chain enumerability, for those cases see * {AccessControlEnumerable}. * * Roles are referred to by their `bytes32` identifier. These should be exposed * in the external API and be unique. The best way to achieve this is by * using `public constant` hash digests: * * ``` * bytes32 public constant MY_ROLE = keccak256("MY_ROLE"); * ``` * * Roles can be used to represent a set of permissions. To restrict access to a * function call, use {hasRole}: * * ``` * function foo() public { * require(hasRole(MY_ROLE, msg.sender)); * ... * } * ``` * * Roles can be granted and revoked dynamically via the {grantRole} and * {revokeRole} functions. Each role has an associated admin role, and only * accounts that have a role's admin role can call {grantRole} and {revokeRole}. * * By default, the admin role for all roles is `DEFAULT_ADMIN_ROLE`, which means * that only accounts with this role will be able to grant or revoke other * roles. More complex role relationships can be created by using * {_setRoleAdmin}. * * WARNING: The `DEFAULT_ADMIN_ROLE` is also its own admin: it has permission to * grant and revoke this role. Extra precautions should be taken to secure * accounts that have been granted it. */ abstract contract AccessControl is Context, IAccessControl, ERC165 { struct RoleData { mapping(address => bool) members; bytes32 adminRole; } mapping(bytes32 => RoleData) private _roles; bytes32 public constant DEFAULT_ADMIN_ROLE = 0x00; /** * @dev Modifier that checks that an account has a specific role. Reverts * with a standardized message including the required role. * * The format of the revert reason is given by the following regular expression: * * /^AccessControl: account (0x[0-9a-f]{40}) is missing role (0x[0-9a-f]{64})$/ * * _Available since v4.1._ */ modifier onlyRole(bytes32 role) { _checkRole(role, _msgSender()); _; } /** * @dev See {IERC165-supportsInterface}. */ function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) { return interfaceId == type(IAccessControl).interfaceId || super.supportsInterface(interfaceId); } /** * @dev Returns `true` if `account` has been granted `role`. */ function hasRole(bytes32 role, address account) public view override returns (bool) { return _roles[role].members[account]; } /** * @dev Revert with a standard message if `account` is missing `role`. * * The format of the revert reason is given by the following regular expression: * * /^AccessControl: account (0x[0-9a-f]{40}) is missing role (0x[0-9a-f]{64})$/ */ function _checkRole(bytes32 role, address account) internal view { if (!hasRole(role, account)) { revert( string( abi.encodePacked( "AccessControl: account ", Strings.toHexString(uint160(account), 20), " is missing role ", Strings.toHexString(uint256(role), 32) ) ) ); } } /** * @dev Returns the admin role that controls `role`. See {grantRole} and * {revokeRole}. * * To change a role's admin, use {_setRoleAdmin}. */ function getRoleAdmin(bytes32 role) public view override returns (bytes32) { return _roles[role].adminRole; } /** * @dev Grants `role` to `account`. * * If `account` had not been already granted `role`, emits a {RoleGranted} * event. * * Requirements: * * - the caller must have ``role``'s admin role. */ function grantRole(bytes32 role, address account) public virtual override onlyRole(getRoleAdmin(role)) { _grantRole(role, account); } /** * @dev Revokes `role` from `account`. * * If `account` had been granted `role`, emits a {RoleRevoked} event. * * Requirements: * * - the caller must have ``role``'s admin role. */ function revokeRole(bytes32 role, address account) public virtual override onlyRole(getRoleAdmin(role)) { _revokeRole(role, account); } /** * @dev Revokes `role` from the calling account. * * Roles are often managed via {grantRole} and {revokeRole}: this function's * purpose is to provide a mechanism for accounts to lose their privileges * if they are compromised (such as when a trusted device is misplaced). * * If the calling account had been revoked `role`, emits a {RoleRevoked} * event. * * Requirements: * * - the caller must be `account`. */ function renounceRole(bytes32 role, address account) public virtual override { require(account == _msgSender(), "AccessControl: can only renounce roles for self"); _revokeRole(role, account); } /** * @dev Grants `role` to `account`. * * If `account` had not been already granted `role`, emits a {RoleGranted} * event. Note that unlike {grantRole}, this function doesn't perform any * checks on the calling account. * * [WARNING] * ==== * This function should only be called from the constructor when setting * up the initial roles for the system. * * Using this function in any other way is effectively circumventing the admin * system imposed by {AccessControl}. * ==== * * NOTE: This function is deprecated in favor of {_grantRole}. */ function _setupRole(bytes32 role, address account) internal virtual { _grantRole(role, account); } /** * @dev Sets `adminRole` as ``role``'s admin role. * * Emits a {RoleAdminChanged} event. */ function _setRoleAdmin(bytes32 role, bytes32 adminRole) internal virtual { bytes32 previousAdminRole = getRoleAdmin(role); _roles[role].adminRole = adminRole; emit RoleAdminChanged(role, previousAdminRole, adminRole); } /** * @dev Grants `role` to `account`. * * Internal function without access restriction. */ function _grantRole(bytes32 role, address account) internal virtual { if (!hasRole(role, account)) { _roles[role].members[account] = true; emit RoleGranted(role, account, _msgSender()); } } /** * @dev Revokes `role` from `account`. * * Internal function without access restriction. */ function _revokeRole(bytes32 role, address account) internal virtual { if (hasRole(role, account)) { _roles[role].members[account] = false; emit RoleRevoked(role, account, _msgSender()); } } } // File @openzeppelin/contracts/security/[email protected] // OpenZeppelin Contracts v4.4.1 (security/ReentrancyGuard.sol) pragma solidity ^0.8.0; /** * @dev Contract module that helps prevent reentrant calls to a function. * * Inheriting from `ReentrancyGuard` will make the {nonReentrant} modifier * available, which can be applied to functions to make sure there are no nested * (reentrant) calls to them. * * Note that because there is a single `nonReentrant` guard, functions marked as * `nonReentrant` may not call one another. This can be worked around by making * those functions `private`, and then adding `external` `nonReentrant` entry * points to them. * * TIP: If you would like to learn more about reentrancy and alternative ways * to protect against it, check out our blog post * https://blog.openzeppelin.com/reentrancy-after-istanbul/[Reentrancy After Istanbul]. */ abstract contract ReentrancyGuard { // Booleans are more expensive than uint256 or any type that takes up a full // word because each write operation emits an extra SLOAD to first read the // slot's contents, replace the bits taken up by the boolean, and then write // back. This is the compiler's defense against contract upgrades and // pointer aliasing, and it cannot be disabled. // The values being non-zero value makes deployment a bit more expensive, // but in exchange the refund on every call to nonReentrant will be lower in // amount. Since refunds are capped to a percentage of the total // transaction's gas, it is best to keep them low in cases like this one, to // increase the likelihood of the full refund coming into effect. uint256 private constant _NOT_ENTERED = 1; uint256 private constant _ENTERED = 2; uint256 private _status; constructor() { _status = _NOT_ENTERED; } /** * @dev Prevents a contract from calling itself, directly or indirectly. * Calling a `nonReentrant` function from another `nonReentrant` * function is not supported. It is possible to prevent this from happening * by making the `nonReentrant` function external, and making it call a * `private` function that does the actual work. */ modifier nonReentrant() { // On the first call to nonReentrant, _notEntered will be true require(_status != _ENTERED, "ReentrancyGuard: reentrant call"); // Any calls to nonReentrant after this point will fail _status = _ENTERED; _; // By storing the original value once again, a refund is triggered (see // https://eips.ethereum.org/EIPS/eip-2200) _status = _NOT_ENTERED; } } // File contracts/interfaces/IBribeVault.sol pragma solidity 0.8.12; interface IBribeVault { function depositBribeERC20( bytes32 bribeIdentifier, bytes32 rewardIdentifier, address token, uint256 amount, address briber ) external; function getBribe(bytes32 bribeIdentifier) external view returns (address token, uint256 amount); function depositBribe( bytes32 bribeIdentifier, bytes32 rewardIdentifier, address briber ) external payable; } // File contracts/BribeBase.sol pragma solidity 0.8.12; contract BribeBase is AccessControl, ReentrancyGuard { address public immutable BRIBE_VAULT; bytes32 public constant TEAM_ROLE = keccak256("TEAM_ROLE"); // Used for generating the bribe and reward identifiers bytes32 public immutable PROTOCOL; // Arbitrary bytes mapped to deadlines mapping(bytes32 => uint256) public proposalDeadlines; // Voter addresses mapped to addresses which will claim rewards on their behalf mapping(address => address) public rewardForwarding; // Tracks whitelisted tokens mapping(address => uint256) public indexOfWhitelistedToken; address[] public allWhitelistedTokens; event GrantTeamRole(address teamMember); event RevokeTeamRole(address teamMember); event SetProposal(bytes32 indexed proposal, uint256 deadline); event DepositBribe( bytes32 indexed proposal, address indexed token, uint256 amount, bytes32 bribeIdentifier, bytes32 rewardIdentifier, address indexed briber ); event SetRewardForwarding(address from, address to); event AddWhitelistTokens(address[] tokens); event RemoveWhitelistTokens(address[] tokens); constructor(address _BRIBE_VAULT, string memory _PROTOCOL) { require(_BRIBE_VAULT != address(0), "Invalid _BRIBE_VAULT"); BRIBE_VAULT = _BRIBE_VAULT; require(bytes(_PROTOCOL).length != 0, "Invalid _PROTOCOL"); PROTOCOL = keccak256(abi.encodePacked(_PROTOCOL)); _grantRole(DEFAULT_ADMIN_ROLE, msg.sender); } modifier onlyAuthorized() { require( hasRole(DEFAULT_ADMIN_ROLE, msg.sender) || hasRole(TEAM_ROLE, msg.sender), "Not authorized" ); _; } /** @notice Grant the team role to an address @param teamMember address Address to grant the teamMember role */ function grantTeamRole(address teamMember) external onlyRole(DEFAULT_ADMIN_ROLE) { require(teamMember != address(0), "Invalid teamMember"); _grantRole(TEAM_ROLE, teamMember); emit GrantTeamRole(teamMember); } /** @notice Revoke the team role from an address @param teamMember address Address to revoke the teamMember role */ function revokeTeamRole(address teamMember) external onlyRole(DEFAULT_ADMIN_ROLE) { require(hasRole(TEAM_ROLE, teamMember), "Invalid teamMember"); _revokeRole(TEAM_ROLE, teamMember); emit RevokeTeamRole(teamMember); } /** @notice Return the list of currently whitelisted token addresses */ function getWhitelistedTokens() external view returns (address[] memory) { return allWhitelistedTokens; } /** @notice Return whether the specified token is whitelisted @param token address Token address to be checked */ function isWhitelistedToken(address token) public view returns (bool) { if (allWhitelistedTokens.length == 0) { return false; } return indexOfWhitelistedToken[token] != 0 || allWhitelistedTokens[0] == token; } /** @notice Add whitelist tokens @param tokens address[] Tokens to add to whitelist */ function addWhitelistTokens(address[] calldata tokens) external onlyAuthorized { for (uint256 i; i < tokens.length; ++i) { require(tokens[i] != address(0), "Invalid token"); require(tokens[i] != BRIBE_VAULT, "Cannot whitelist BRIBE_VAULT"); require( !isWhitelistedToken(tokens[i]), "Token already whitelisted" ); // Perform creation op for the unordered key set allWhitelistedTokens.push(tokens[i]); indexOfWhitelistedToken[tokens[i]] = allWhitelistedTokens.length - 1; } emit AddWhitelistTokens(tokens); } /** @notice Remove whitelist tokens @param tokens address[] Tokens to remove from whitelist */ function removeWhitelistTokens(address[] calldata tokens) external onlyAuthorized { for (uint256 i; i < tokens.length; ++i) { require(isWhitelistedToken(tokens[i]), "Token not whitelisted"); // Perform deletion op for the unordered key set // by swapping the affected row to the end/tail of the list uint256 index = indexOfWhitelistedToken[tokens[i]]; address tail = allWhitelistedTokens[ allWhitelistedTokens.length - 1 ]; allWhitelistedTokens[index] = tail; indexOfWhitelistedToken[tail] = index; delete indexOfWhitelistedToken[tokens[i]]; allWhitelistedTokens.pop(); } emit RemoveWhitelistTokens(tokens); } /** @notice Set a single proposal @param proposal bytes32 Proposal @param deadline uint256 Proposal deadline */ function _setProposal(bytes32 proposal, uint256 deadline) internal { require(proposal != bytes32(0), "Invalid proposal"); require(deadline > block.timestamp, "Deadline must be in the future"); proposalDeadlines[proposal] = deadline; emit SetProposal(proposal, deadline); } /** @notice Generate the BribeVault identifier based on a scheme @param proposal bytes32 Proposal @param proposalDeadline uint256 Proposal deadline @param token address Token @return identifier bytes32 BribeVault identifier */ function generateBribeVaultIdentifier( bytes32 proposal, uint256 proposalDeadline, address token ) public view returns (bytes32 identifier) { return keccak256( abi.encodePacked(PROTOCOL, proposal, proposalDeadline, token) ); } /** @notice Generate the reward identifier based on a scheme @param proposalDeadline uint256 Proposal deadline @param token address Token @return identifier bytes32 Reward identifier */ function generateRewardIdentifier(uint256 proposalDeadline, address token) public view returns (bytes32 identifier) { return keccak256(abi.encodePacked(PROTOCOL, proposalDeadline, token)); } /** @notice Get bribe from BribeVault @param proposal bytes32 Proposal @param proposalDeadline uint256 Proposal deadline @param token address Token @return bribeToken address Token address @return bribeAmount address Token amount */ function getBribe( bytes32 proposal, uint256 proposalDeadline, address token ) external view returns (address bribeToken, uint256 bribeAmount) { return IBribeVault(BRIBE_VAULT).getBribe( generateBribeVaultIdentifier(proposal, proposalDeadline, token) ); } /** @notice Deposit bribe for a proposal (ERC20 tokens only) @param proposal bytes32 Proposal @param token address Token @param amount uint256 Token amount */ function depositBribeERC20( bytes32 proposal, address token, uint256 amount ) external nonReentrant { uint256 proposalDeadline = proposalDeadlines[proposal]; require( proposalDeadlines[proposal] > block.timestamp, "Proposal deadline has passed" ); require(token != address(0), "Invalid token"); require(isWhitelistedToken(token), "Token is not whitelisted"); require(amount != 0, "Bribe amount must be greater than 0"); bytes32 bribeIdentifier = generateBribeVaultIdentifier( proposal, proposalDeadline, token ); bytes32 rewardIdentifier = generateRewardIdentifier( proposalDeadline, token ); IBribeVault(BRIBE_VAULT).depositBribeERC20( bribeIdentifier, rewardIdentifier, token, amount, msg.sender ); emit DepositBribe( proposal, token, amount, bribeIdentifier, rewardIdentifier, msg.sender ); } /** @notice Deposit bribe for a proposal (native token only) @param proposal bytes32 Proposal */ function depositBribe(bytes32 proposal) external payable nonReentrant { uint256 proposalDeadline = proposalDeadlines[proposal]; require( proposalDeadlines[proposal] > block.timestamp, "Proposal deadline has passed" ); require(msg.value != 0, "Bribe amount must be greater than 0"); bytes32 bribeIdentifier = generateBribeVaultIdentifier( proposal, proposalDeadline, BRIBE_VAULT ); bytes32 rewardIdentifier = generateRewardIdentifier( proposalDeadline, BRIBE_VAULT ); // NOTE: Native token bribes have BRIBE_VAULT set as the address IBribeVault(BRIBE_VAULT).depositBribe{value: msg.value}( bribeIdentifier, rewardIdentifier, msg.sender ); emit DepositBribe( proposal, BRIBE_VAULT, msg.value, bribeIdentifier, rewardIdentifier, msg.sender ); } /** @notice Voters can opt in or out of reward-forwarding @notice Opt-in: A voter sets another address to forward rewards to @notice Opt-out: A voter sets their own address or the zero address @param to address Account that rewards will be sent to */ function setRewardForwarding(address to) external { rewardForwarding[msg.sender] = to; emit SetRewardForwarding(msg.sender, to); } } // File contracts/FloorDaoBribe.sol pragma solidity 0.8.12; contract FloorDaoBribe is BribeBase { event SetProposalChoices( uint256 indexed proposalIndex, uint256 choiceCount, uint256 deadline ); constructor(address _BRIBE_VAULT) BribeBase(_BRIBE_VAULT, "FLOOR_DAO") {} /** @notice Set proposals based on the index of the proposal and the number of choices @param proposalIndex uint256 Proposal index @param choiceCount uint256 Number of choices to be voted for @param deadline uint256 Proposal deadline */ function setProposalChoices( uint256 proposalIndex, uint256 choiceCount, uint256 deadline ) external onlyAuthorized { require(choiceCount != 0, "Invalid number of choices"); for (uint256 i; i < choiceCount; ++i) { // The final proposalId is built from encoding both the index and the choice index _setProposal( keccak256(abi.encodePacked(proposalIndex, i)), deadline ); } emit SetProposalChoices(proposalIndex, choiceCount, deadline); } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"address","name":"_BRIBE_VAULT","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address[]","name":"tokens","type":"address[]"}],"name":"AddWhitelistTokens","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"proposal","type":"bytes32"},{"indexed":true,"internalType":"address","name":"token","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":false,"internalType":"bytes32","name":"bribeIdentifier","type":"bytes32"},{"indexed":false,"internalType":"bytes32","name":"rewardIdentifier","type":"bytes32"},{"indexed":true,"internalType":"address","name":"briber","type":"address"}],"name":"DepositBribe","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"teamMember","type":"address"}],"name":"GrantTeamRole","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address[]","name":"tokens","type":"address[]"}],"name":"RemoveWhitelistTokens","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"teamMember","type":"address"}],"name":"RevokeTeamRole","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"bytes32","name":"previousAdminRole","type":"bytes32"},{"indexed":true,"internalType":"bytes32","name":"newAdminRole","type":"bytes32"}],"name":"RoleAdminChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"address","name":"sender","type":"address"}],"name":"RoleGranted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"address","name":"sender","type":"address"}],"name":"RoleRevoked","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"proposal","type":"bytes32"},{"indexed":false,"internalType":"uint256","name":"deadline","type":"uint256"}],"name":"SetProposal","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"proposalIndex","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"choiceCount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"deadline","type":"uint256"}],"name":"SetProposalChoices","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"from","type":"address"},{"indexed":false,"internalType":"address","name":"to","type":"address"}],"name":"SetRewardForwarding","type":"event"},{"inputs":[],"name":"BRIBE_VAULT","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"DEFAULT_ADMIN_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"PROTOCOL","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"TEAM_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"tokens","type":"address[]"}],"name":"addWhitelistTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"allWhitelistedTokens","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"proposal","type":"bytes32"}],"name":"depositBribe","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"proposal","type":"bytes32"},{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"depositBribeERC20","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"proposal","type":"bytes32"},{"internalType":"uint256","name":"proposalDeadline","type":"uint256"},{"internalType":"address","name":"token","type":"address"}],"name":"generateBribeVaultIdentifier","outputs":[{"internalType":"bytes32","name":"identifier","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalDeadline","type":"uint256"},{"internalType":"address","name":"token","type":"address"}],"name":"generateRewardIdentifier","outputs":[{"internalType":"bytes32","name":"identifier","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"proposal","type":"bytes32"},{"internalType":"uint256","name":"proposalDeadline","type":"uint256"},{"internalType":"address","name":"token","type":"address"}],"name":"getBribe","outputs":[{"internalType":"address","name":"bribeToken","type":"address"},{"internalType":"uint256","name":"bribeAmount","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"}],"name":"getRoleAdmin","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getWhitelistedTokens","outputs":[{"internalType":"address[]","name":"","type":"address[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"grantRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"teamMember","type":"address"}],"name":"grantTeamRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"hasRole","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"indexOfWhitelistedToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"}],"name":"isWhitelistedToken","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"name":"proposalDeadlines","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"tokens","type":"address[]"}],"name":"removeWhitelistTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"renounceRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"revokeRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"teamMember","type":"address"}],"name":"revokeTeamRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"rewardForwarding","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"proposalIndex","type":"uint256"},{"internalType":"uint256","name":"choiceCount","type":"uint256"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"name":"setProposalChoices","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"}],"name":"setRewardForwarding","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"}]
Contract Creation Code
60c06040523480156200001157600080fd5b50604051620021af380380620021af8339810160408190526200003491620001ec565b604080518082019091526009815268464c4f4f525f44414f60b81b60208201526001805581906001600160a01b038216620000b65760405162461bcd60e51b815260206004820152601460248201527f496e76616c6964205f42524942455f5641554c5400000000000000000000000060448201526064015b60405180910390fd5b6001600160a01b0382166080528051620001075760405162461bcd60e51b8152602060048201526011602482015270125b9d985b1a590817d41493d513d0d3d3607a1b6044820152606401620000ad565b806040516020016200011a91906200021e565b60408051601f19818403018152919052805160209091012060a052620001426000336200014b565b5050506200025c565b6000828152602081815260408083206001600160a01b038516845290915290205460ff16620001e8576000828152602081815260408083206001600160a01b03851684529091529020805460ff19166001179055620001a73390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45b5050565b600060208284031215620001ff57600080fd5b81516001600160a01b03811681146200021757600080fd5b9392505050565b6000825160005b8181101562000241576020818601810151858301520162000225565b8181111562000251576000828501525b509190910192915050565b60805160a051611eee620002c1600039600081816103c5015281816109f90152610a6d01526000818161048e0152818161081d0152818161084b0152818161089d0152818161091101528181610d830152818161125401526115220152611eee6000f3fe60806040526004361061019c5760003560e01c806391b9b827116100ec578063d547741f1161008a578063e468baf011610064578063e468baf014610512578063f52c395a14610532578063f7e6b46b14610552578063f96258c41461059157600080fd5b8063d547741f146104b0578063e26f7900146104d0578063e3113df9146104f257600080fd5b8063a602d140116100c6578063a602d1401461041c578063ab37f4861461043c578063b25706f31461045c578063be309bca1461047c57600080fd5b806391b9b827146103b357806391d14854146103e7578063a217fddf1461040757600080fd5b80632f4760031161015957806340c581891161013357806340c581891461032457806349d5e604146103445780635699fbad146103665780638e8efaee1461038657600080fd5b80632f476003146102d157806336568abe146102e45780633eeed1a51461030457600080fd5b806301ffc9a7146101a157806307cd2ffe146101d65780630e4ca5d4146102245780632129831014610246578063248a9ca3146102815780632f2ff15d146102b1575b600080fd5b3480156101ad57600080fd5b506101c16101bc3660046119fa565b6105b1565b60405190151581526020015b60405180910390f35b3480156101e257600080fd5b5061020c6101f1366004611a3c565b6003602052600090815260409020546001600160a01b031681565b6040516001600160a01b0390911681526020016101cd565b34801561023057600080fd5b5061024461023f366004611a59565b6105e8565b005b34801561025257600080fd5b50610273610261366004611a85565b60026020526000908152604090205481565b6040519081526020016101cd565b34801561028d57600080fd5b5061027361029c366004611a85565b60009081526020819052604090206001015490565b3480156102bd57600080fd5b506102446102cc366004611a9e565b610713565b6102446102df366004611a85565b61073e565b3480156102f057600080fd5b506102446102ff366004611a9e565b610975565b34801561031057600080fd5b5061027361031f366004611ace565b6109f3565b34801561033057600080fd5b5061027361033f366004611a9e565b610a67565b34801561035057600080fd5b50610273600080516020611e9983398151915281565b34801561037257600080fd5b50610244610381366004611a3c565b610ad3565b34801561039257600080fd5b506102736103a1366004611a3c565b60046020526000908152604090205481565b3480156103bf57600080fd5b506102737f000000000000000000000000000000000000000000000000000000000000000081565b3480156103f357600080fd5b506101c1610402366004611a9e565b610b91565b34801561041357600080fd5b50610273600081565b34801561042857600080fd5b50610244610437366004611b07565b610bba565b34801561044857600080fd5b506101c1610457366004611a3c565b610e3d565b34801561046857600080fd5b50610244610477366004611b3f565b610eaa565b34801561048857600080fd5b5061020c7f000000000000000000000000000000000000000000000000000000000000000081565b3480156104bc57600080fd5b506102446104cb366004611a9e565b61110a565b3480156104dc57600080fd5b506104e5611130565b6040516101cd9190611bb4565b3480156104fe57600080fd5b5061024461050d366004611b3f565b611192565b34801561051e57600080fd5b5061020c61052d366004611a85565b61144b565b34801561053e57600080fd5b5061024461054d366004611a3c565b611475565b34801561055e57600080fd5b5061057261056d366004611ace565b61151d565b604080516001600160a01b0390931683526020830191909152016101cd565b34801561059d57600080fd5b506102446105ac366004611a3c565b6115c4565b60006001600160e01b03198216637965db0b60e01b14806105e257506301ffc9a760e01b6001600160e01b03198316145b92915050565b6105f3600033610b91565b806106115750610611600080516020611e9983398151915233610b91565b6106365760405162461bcd60e51b815260040161062d90611c01565b60405180910390fd5b816106835760405162461bcd60e51b815260206004820152601960248201527f496e76616c6964206e756d626572206f662063686f6963657300000000000000604482015260640161062d565b60005b828110156106d25760408051602081018690529081018290526106c290606001604051602081830303815290604052805190602001208361162a565b6106cb81611c3f565b9050610686565b50604080518381526020810183905284917ffe981f98aab7392942d98338b5f1403f87d102c68fab5155b870b8cfb2ebce39910160405180910390a2505050565b60008281526020819052604090206001015461072f813361170a565b610739838361176e565b505050565b600260015414156107915760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015260640161062d565b60026001819055600082815260209190915260409020544281116107f75760405162461bcd60e51b815260206004820152601c60248201527f50726f706f73616c20646561646c696e65206861732070617373656400000000604482015260640161062d565b346108145760405162461bcd60e51b815260040161062d90611c5a565b600061084183837f00000000000000000000000000000000000000000000000000000000000000006109f3565b9050600061086f837f0000000000000000000000000000000000000000000000000000000000000000610a67565b604051631933a4eb60e01b815260048101849052602481018290523360448201529091506001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690631933a4eb9034906064016000604051808303818588803b1580156108e257600080fd5b505af11580156108f6573d6000803e3d6000fd5b505060408051348152602081018790529081018590523393507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031692508791507f6f1e998489da0152047f9f97b3c6f21b503848ef7d66c815ebd247b87066e90b9060600160405180910390a45050600180555050565b6001600160a01b03811633146109e55760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b606482015260840161062d565b6109ef82826117f2565b5050565b604080517f00000000000000000000000000000000000000000000000000000000000000006020820152908101849052606080820184905282901b6bffffffffffffffffffffffff191660808201526000906094016040516020818303038152906040528051906020012090509392505050565b604080517f00000000000000000000000000000000000000000000000000000000000000006020820152908101839052606082811b6bffffffffffffffffffffffff19169082015260009060740160405160208183030381529060405280519060200120905092915050565b6000610adf813361170a565b610af7600080516020611e9983398151915283610b91565b610b385760405162461bcd60e51b815260206004820152601260248201527124b73b30b634b2103a32b0b6a6b2b6b132b960711b604482015260640161062d565b610b50600080516020611e99833981519152836117f2565b6040516001600160a01b03831681527f708bd40f8f4d2ad60032caea0582161d35c50177cc0b2c575b5d483bd2902caa906020015b60405180910390a15050565b6000918252602082815260408084206001600160a01b0393909316845291905290205460ff1690565b60026001541415610c0d5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015260640161062d565b6002600181905560008481526020919091526040902054428111610c735760405162461bcd60e51b815260206004820152601c60248201527f50726f706f73616c20646561646c696e65206861732070617373656400000000604482015260640161062d565b6001600160a01b038316610cb95760405162461bcd60e51b815260206004820152600d60248201526c24b73b30b634b2103a37b5b2b760991b604482015260640161062d565b610cc283610e3d565b610d0e5760405162461bcd60e51b815260206004820152601860248201527f546f6b656e206973206e6f742077686974656c69737465640000000000000000604482015260640161062d565b81610d2b5760405162461bcd60e51b815260040161062d90611c5a565b6000610d388583866109f3565b90506000610d468386610a67565b604051631a6e664d60e21b815260048101849052602481018290526001600160a01b038781166044830152606482018790523360848301529192507f0000000000000000000000000000000000000000000000000000000000000000909116906369b999349060a401600060405180830381600087803b158015610dc957600080fd5b505af1158015610ddd573d6000803e3d6000fd5b505060408051878152602081018690529081018490523392506001600160a01b038816915088907f6f1e998489da0152047f9f97b3c6f21b503848ef7d66c815ebd247b87066e90b9060600160405180910390a450506001805550505050565b600554600090610e4f57506000919050565b6001600160a01b0382166000908152600460205260409020541515806105e25750816001600160a01b03166005600081548110610e8e57610e8e611c9d565b6000918252602090912001546001600160a01b03161492915050565b610eb5600033610b91565b80610ed35750610ed3600080516020611e9983398151915233610b91565b610eef5760405162461bcd60e51b815260040161062d90611c01565b60005b818110156110d857610f24838383818110610f0f57610f0f611c9d565b90506020020160208101906104579190611a3c565b610f685760405162461bcd60e51b8152602060048201526015602482015274151bdad95b881b9bdd081dda1a5d195b1a5cdd1959605a1b604482015260640161062d565b600060046000858585818110610f8057610f80611c9d565b9050602002016020810190610f959190611a3c565b6001600160a01b03166001600160a01b03168152602001908152602001600020549050600060056001600580549050610fce9190611cb3565b81548110610fde57610fde611c9d565b600091825260209091200154600580546001600160a01b03909216925082918490811061100d5761100d611c9d565b600091825260208083209190910180546001600160a01b0319166001600160a01b0394851617905591831681526004918290526040812084905586868681811061105957611059611c9d565b905060200201602081019061106e9190611a3c565b6001600160a01b03166001600160a01b031681526020019081526020016000206000905560058054806110a3576110a3611cca565b600082815260209020810160001990810180546001600160a01b0319169055019055506110d1905081611c3f565b9050610ef2565b507faf397cf4dd9b218aa8392d733be436eca6dc865d9fef8bddc37ff3cce5a583268282604051610b85929190611ce0565b600082815260208190526040902060010154611126813361170a565b61073983836117f2565b6060600580548060200260200160405190810160405280929190818152602001828054801561118857602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831161116a575b5050505050905090565b61119d600033610b91565b806111bb57506111bb600080516020611e9983398151915233610b91565b6111d75760405162461bcd60e51b815260040161062d90611c01565b60005b818110156114195760008383838181106111f6576111f6611c9d565b905060200201602081019061120b9190611a3c565b6001600160a01b031614156112525760405162461bcd60e51b815260206004820152600d60248201526c24b73b30b634b2103a37b5b2b760991b604482015260640161062d565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031683838381811061128e5761128e611c9d565b90506020020160208101906112a39190611a3c565b6001600160a01b031614156112fa5760405162461bcd60e51b815260206004820152601c60248201527f43616e6e6f742077686974656c6973742042524942455f5641554c5400000000604482015260640161062d565b61130f838383818110610f0f57610f0f611c9d565b1561135c5760405162461bcd60e51b815260206004820152601960248201527f546f6b656e20616c72656164792077686974656c697374656400000000000000604482015260640161062d565b600583838381811061137057611370611c9d565b90506020020160208101906113859190611a3c565b815460018082018455600093845260209093200180546001600160a01b0319166001600160a01b03929092169190911790556005546113c49190611cb3565b600460008585858181106113da576113da611c9d565b90506020020160208101906113ef9190611a3c565b6001600160a01b0316815260208101919091526040016000205561141281611c3f565b90506111da565b507fee3f29a31e91df914992dacfb3a9feb176d6cb3c1e35a4ebbe186aeb4827a60b8282604051610b85929190611ce0565b6005818154811061145b57600080fd5b6000918252602090912001546001600160a01b0316905081565b6000611481813361170a565b6001600160a01b0382166114cc5760405162461bcd60e51b815260206004820152601260248201527124b73b30b634b2103a32b0b6a6b2b6b132b960711b604482015260640161062d565b6114e4600080516020611e998339815191528361176e565b6040516001600160a01b03831681527fd36b0989e598a1b05388150a9a8c84925e2710d91910406b8735e01f3ed0281790602001610b85565b6000807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316632c4ef0d561155a8787876109f3565b6040518263ffffffff1660e01b815260040161157891815260200190565b6040805180830381865afa158015611594573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115b89190611d2e565b91509150935093915050565b3360008181526003602090815260409182902080546001600160a01b0319166001600160a01b0386169081179091558251938452908301527fbbd6eb1e2586cc8ea8e80aa1ccf25590beffdd2cb73367b5ac49214505bb48c4910160405180910390a150565b8161166a5760405162461bcd60e51b815260206004820152601060248201526f125b9d985b1a59081c1c9bdc1bdcd85b60821b604482015260640161062d565b4281116116b95760405162461bcd60e51b815260206004820152601e60248201527f446561646c696e65206d75737420626520696e20746865206675747572650000604482015260640161062d565b600082815260026020526040908190208290555182907f04d4a8b224eb4e22836563fb784ab6779243c553d0872181d726f98890ec0473906116fe9084815260200190565b60405180910390a25050565b6117148282610b91565b6109ef5761172c816001600160a01b03166014611857565b611737836020611857565b604051602001611748929190611d8c565b60408051601f198184030181529082905262461bcd60e51b825261062d91600401611e01565b6117788282610b91565b6109ef576000828152602081815260408083206001600160a01b03851684529091529020805460ff191660011790556117ae3390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b6117fc8282610b91565b156109ef576000828152602081815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b60606000611866836002611e34565b611871906002611e53565b67ffffffffffffffff81111561188957611889611e6b565b6040519080825280601f01601f1916602001820160405280156118b3576020820181803683370190505b509050600360fc1b816000815181106118ce576118ce611c9d565b60200101906001600160f81b031916908160001a905350600f60fb1b816001815181106118fd576118fd611c9d565b60200101906001600160f81b031916908160001a9053506000611921846002611e34565b61192c906001611e53565b90505b60018111156119a4576f181899199a1a9b1b9c1cb0b131b232b360811b85600f166010811061196057611960611c9d565b1a60f81b82828151811061197657611976611c9d565b60200101906001600160f81b031916908160001a90535060049490941c9361199d81611e81565b905061192f565b5083156119f35760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e74604482015260640161062d565b9392505050565b600060208284031215611a0c57600080fd5b81356001600160e01b0319811681146119f357600080fd5b6001600160a01b0381168114611a3957600080fd5b50565b600060208284031215611a4e57600080fd5b81356119f381611a24565b600080600060608486031215611a6e57600080fd5b505081359360208301359350604090920135919050565b600060208284031215611a9757600080fd5b5035919050565b60008060408385031215611ab157600080fd5b823591506020830135611ac381611a24565b809150509250929050565b600080600060608486031215611ae357600080fd5b83359250602084013591506040840135611afc81611a24565b809150509250925092565b600080600060608486031215611b1c57600080fd5b833592506020840135611b2e81611a24565b929592945050506040919091013590565b60008060208385031215611b5257600080fd5b823567ffffffffffffffff80821115611b6a57600080fd5b818501915085601f830112611b7e57600080fd5b813581811115611b8d57600080fd5b8660208260051b8501011115611ba257600080fd5b60209290920196919550909350505050565b6020808252825182820181905260009190848201906040850190845b81811015611bf55783516001600160a01b031683529284019291840191600101611bd0565b50909695505050505050565b6020808252600e908201526d139bdd08185d5d1a1bdc9a5e995960921b604082015260600190565b634e487b7160e01b600052601160045260246000fd5b6000600019821415611c5357611c53611c29565b5060010190565b60208082526023908201527f427269626520616d6f756e74206d75737420626520677265617465722074686160408201526206e20360ec1b606082015260800190565b634e487b7160e01b600052603260045260246000fd5b600082821015611cc557611cc5611c29565b500390565b634e487b7160e01b600052603160045260246000fd5b60208082528181018390526000908460408401835b86811015611d23578235611d0881611a24565b6001600160a01b031682529183019190830190600101611cf5565b509695505050505050565b60008060408385031215611d4157600080fd5b8251611d4c81611a24565b6020939093015192949293505050565b60005b83811015611d77578181015183820152602001611d5f565b83811115611d86576000848401525b50505050565b7f416363657373436f6e74726f6c3a206163636f756e7420000000000000000000815260008351611dc4816017850160208801611d5c565b7001034b99036b4b9b9b4b733903937b6329607d1b6017918401918201528351611df5816028840160208801611d5c565b01602801949350505050565b6020815260008251806020840152611e20816040850160208701611d5c565b601f01601f19169190910160400192915050565b6000816000190483118215151615611e4e57611e4e611c29565b500290565b60008219821115611e6657611e66611c29565b500190565b634e487b7160e01b600052604160045260246000fd5b600081611e9057611e90611c29565b50600019019056fe5146a08baf902532d0ee2f909971144f12ca32651cd70cbee1117cddfb3b3b33a26469706673582212207773c018461ce350b2063db2e5370eaeb9785b7cba5dd8fa96888f124ec9702f64736f6c634300080c00330000000000000000000000009ddb2da7dd76612e0df237b89af2cf4413733212
Deployed Bytecode
0x60806040526004361061019c5760003560e01c806391b9b827116100ec578063d547741f1161008a578063e468baf011610064578063e468baf014610512578063f52c395a14610532578063f7e6b46b14610552578063f96258c41461059157600080fd5b8063d547741f146104b0578063e26f7900146104d0578063e3113df9146104f257600080fd5b8063a602d140116100c6578063a602d1401461041c578063ab37f4861461043c578063b25706f31461045c578063be309bca1461047c57600080fd5b806391b9b827146103b357806391d14854146103e7578063a217fddf1461040757600080fd5b80632f4760031161015957806340c581891161013357806340c581891461032457806349d5e604146103445780635699fbad146103665780638e8efaee1461038657600080fd5b80632f476003146102d157806336568abe146102e45780633eeed1a51461030457600080fd5b806301ffc9a7146101a157806307cd2ffe146101d65780630e4ca5d4146102245780632129831014610246578063248a9ca3146102815780632f2ff15d146102b1575b600080fd5b3480156101ad57600080fd5b506101c16101bc3660046119fa565b6105b1565b60405190151581526020015b60405180910390f35b3480156101e257600080fd5b5061020c6101f1366004611a3c565b6003602052600090815260409020546001600160a01b031681565b6040516001600160a01b0390911681526020016101cd565b34801561023057600080fd5b5061024461023f366004611a59565b6105e8565b005b34801561025257600080fd5b50610273610261366004611a85565b60026020526000908152604090205481565b6040519081526020016101cd565b34801561028d57600080fd5b5061027361029c366004611a85565b60009081526020819052604090206001015490565b3480156102bd57600080fd5b506102446102cc366004611a9e565b610713565b6102446102df366004611a85565b61073e565b3480156102f057600080fd5b506102446102ff366004611a9e565b610975565b34801561031057600080fd5b5061027361031f366004611ace565b6109f3565b34801561033057600080fd5b5061027361033f366004611a9e565b610a67565b34801561035057600080fd5b50610273600080516020611e9983398151915281565b34801561037257600080fd5b50610244610381366004611a3c565b610ad3565b34801561039257600080fd5b506102736103a1366004611a3c565b60046020526000908152604090205481565b3480156103bf57600080fd5b506102737fea125272d66c2905372eb5bb67f587bb1326982b752406b04f21eab88014eb5e81565b3480156103f357600080fd5b506101c1610402366004611a9e565b610b91565b34801561041357600080fd5b50610273600081565b34801561042857600080fd5b50610244610437366004611b07565b610bba565b34801561044857600080fd5b506101c1610457366004611a3c565b610e3d565b34801561046857600080fd5b50610244610477366004611b3f565b610eaa565b34801561048857600080fd5b5061020c7f0000000000000000000000009ddb2da7dd76612e0df237b89af2cf441373321281565b3480156104bc57600080fd5b506102446104cb366004611a9e565b61110a565b3480156104dc57600080fd5b506104e5611130565b6040516101cd9190611bb4565b3480156104fe57600080fd5b5061024461050d366004611b3f565b611192565b34801561051e57600080fd5b5061020c61052d366004611a85565b61144b565b34801561053e57600080fd5b5061024461054d366004611a3c565b611475565b34801561055e57600080fd5b5061057261056d366004611ace565b61151d565b604080516001600160a01b0390931683526020830191909152016101cd565b34801561059d57600080fd5b506102446105ac366004611a3c565b6115c4565b60006001600160e01b03198216637965db0b60e01b14806105e257506301ffc9a760e01b6001600160e01b03198316145b92915050565b6105f3600033610b91565b806106115750610611600080516020611e9983398151915233610b91565b6106365760405162461bcd60e51b815260040161062d90611c01565b60405180910390fd5b816106835760405162461bcd60e51b815260206004820152601960248201527f496e76616c6964206e756d626572206f662063686f6963657300000000000000604482015260640161062d565b60005b828110156106d25760408051602081018690529081018290526106c290606001604051602081830303815290604052805190602001208361162a565b6106cb81611c3f565b9050610686565b50604080518381526020810183905284917ffe981f98aab7392942d98338b5f1403f87d102c68fab5155b870b8cfb2ebce39910160405180910390a2505050565b60008281526020819052604090206001015461072f813361170a565b610739838361176e565b505050565b600260015414156107915760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015260640161062d565b60026001819055600082815260209190915260409020544281116107f75760405162461bcd60e51b815260206004820152601c60248201527f50726f706f73616c20646561646c696e65206861732070617373656400000000604482015260640161062d565b346108145760405162461bcd60e51b815260040161062d90611c5a565b600061084183837f0000000000000000000000009ddb2da7dd76612e0df237b89af2cf44137332126109f3565b9050600061086f837f0000000000000000000000009ddb2da7dd76612e0df237b89af2cf4413733212610a67565b604051631933a4eb60e01b815260048101849052602481018290523360448201529091506001600160a01b037f0000000000000000000000009ddb2da7dd76612e0df237b89af2cf44137332121690631933a4eb9034906064016000604051808303818588803b1580156108e257600080fd5b505af11580156108f6573d6000803e3d6000fd5b505060408051348152602081018790529081018590523393507f0000000000000000000000009ddb2da7dd76612e0df237b89af2cf44137332126001600160a01b031692508791507f6f1e998489da0152047f9f97b3c6f21b503848ef7d66c815ebd247b87066e90b9060600160405180910390a45050600180555050565b6001600160a01b03811633146109e55760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b606482015260840161062d565b6109ef82826117f2565b5050565b604080517fea125272d66c2905372eb5bb67f587bb1326982b752406b04f21eab88014eb5e6020820152908101849052606080820184905282901b6bffffffffffffffffffffffff191660808201526000906094016040516020818303038152906040528051906020012090509392505050565b604080517fea125272d66c2905372eb5bb67f587bb1326982b752406b04f21eab88014eb5e6020820152908101839052606082811b6bffffffffffffffffffffffff19169082015260009060740160405160208183030381529060405280519060200120905092915050565b6000610adf813361170a565b610af7600080516020611e9983398151915283610b91565b610b385760405162461bcd60e51b815260206004820152601260248201527124b73b30b634b2103a32b0b6a6b2b6b132b960711b604482015260640161062d565b610b50600080516020611e99833981519152836117f2565b6040516001600160a01b03831681527f708bd40f8f4d2ad60032caea0582161d35c50177cc0b2c575b5d483bd2902caa906020015b60405180910390a15050565b6000918252602082815260408084206001600160a01b0393909316845291905290205460ff1690565b60026001541415610c0d5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015260640161062d565b6002600181905560008481526020919091526040902054428111610c735760405162461bcd60e51b815260206004820152601c60248201527f50726f706f73616c20646561646c696e65206861732070617373656400000000604482015260640161062d565b6001600160a01b038316610cb95760405162461bcd60e51b815260206004820152600d60248201526c24b73b30b634b2103a37b5b2b760991b604482015260640161062d565b610cc283610e3d565b610d0e5760405162461bcd60e51b815260206004820152601860248201527f546f6b656e206973206e6f742077686974656c69737465640000000000000000604482015260640161062d565b81610d2b5760405162461bcd60e51b815260040161062d90611c5a565b6000610d388583866109f3565b90506000610d468386610a67565b604051631a6e664d60e21b815260048101849052602481018290526001600160a01b038781166044830152606482018790523360848301529192507f0000000000000000000000009ddb2da7dd76612e0df237b89af2cf4413733212909116906369b999349060a401600060405180830381600087803b158015610dc957600080fd5b505af1158015610ddd573d6000803e3d6000fd5b505060408051878152602081018690529081018490523392506001600160a01b038816915088907f6f1e998489da0152047f9f97b3c6f21b503848ef7d66c815ebd247b87066e90b9060600160405180910390a450506001805550505050565b600554600090610e4f57506000919050565b6001600160a01b0382166000908152600460205260409020541515806105e25750816001600160a01b03166005600081548110610e8e57610e8e611c9d565b6000918252602090912001546001600160a01b03161492915050565b610eb5600033610b91565b80610ed35750610ed3600080516020611e9983398151915233610b91565b610eef5760405162461bcd60e51b815260040161062d90611c01565b60005b818110156110d857610f24838383818110610f0f57610f0f611c9d565b90506020020160208101906104579190611a3c565b610f685760405162461bcd60e51b8152602060048201526015602482015274151bdad95b881b9bdd081dda1a5d195b1a5cdd1959605a1b604482015260640161062d565b600060046000858585818110610f8057610f80611c9d565b9050602002016020810190610f959190611a3c565b6001600160a01b03166001600160a01b03168152602001908152602001600020549050600060056001600580549050610fce9190611cb3565b81548110610fde57610fde611c9d565b600091825260209091200154600580546001600160a01b03909216925082918490811061100d5761100d611c9d565b600091825260208083209190910180546001600160a01b0319166001600160a01b0394851617905591831681526004918290526040812084905586868681811061105957611059611c9d565b905060200201602081019061106e9190611a3c565b6001600160a01b03166001600160a01b031681526020019081526020016000206000905560058054806110a3576110a3611cca565b600082815260209020810160001990810180546001600160a01b0319169055019055506110d1905081611c3f565b9050610ef2565b507faf397cf4dd9b218aa8392d733be436eca6dc865d9fef8bddc37ff3cce5a583268282604051610b85929190611ce0565b600082815260208190526040902060010154611126813361170a565b61073983836117f2565b6060600580548060200260200160405190810160405280929190818152602001828054801561118857602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831161116a575b5050505050905090565b61119d600033610b91565b806111bb57506111bb600080516020611e9983398151915233610b91565b6111d75760405162461bcd60e51b815260040161062d90611c01565b60005b818110156114195760008383838181106111f6576111f6611c9d565b905060200201602081019061120b9190611a3c565b6001600160a01b031614156112525760405162461bcd60e51b815260206004820152600d60248201526c24b73b30b634b2103a37b5b2b760991b604482015260640161062d565b7f0000000000000000000000009ddb2da7dd76612e0df237b89af2cf44137332126001600160a01b031683838381811061128e5761128e611c9d565b90506020020160208101906112a39190611a3c565b6001600160a01b031614156112fa5760405162461bcd60e51b815260206004820152601c60248201527f43616e6e6f742077686974656c6973742042524942455f5641554c5400000000604482015260640161062d565b61130f838383818110610f0f57610f0f611c9d565b1561135c5760405162461bcd60e51b815260206004820152601960248201527f546f6b656e20616c72656164792077686974656c697374656400000000000000604482015260640161062d565b600583838381811061137057611370611c9d565b90506020020160208101906113859190611a3c565b815460018082018455600093845260209093200180546001600160a01b0319166001600160a01b03929092169190911790556005546113c49190611cb3565b600460008585858181106113da576113da611c9d565b90506020020160208101906113ef9190611a3c565b6001600160a01b0316815260208101919091526040016000205561141281611c3f565b90506111da565b507fee3f29a31e91df914992dacfb3a9feb176d6cb3c1e35a4ebbe186aeb4827a60b8282604051610b85929190611ce0565b6005818154811061145b57600080fd5b6000918252602090912001546001600160a01b0316905081565b6000611481813361170a565b6001600160a01b0382166114cc5760405162461bcd60e51b815260206004820152601260248201527124b73b30b634b2103a32b0b6a6b2b6b132b960711b604482015260640161062d565b6114e4600080516020611e998339815191528361176e565b6040516001600160a01b03831681527fd36b0989e598a1b05388150a9a8c84925e2710d91910406b8735e01f3ed0281790602001610b85565b6000807f0000000000000000000000009ddb2da7dd76612e0df237b89af2cf44137332126001600160a01b0316632c4ef0d561155a8787876109f3565b6040518263ffffffff1660e01b815260040161157891815260200190565b6040805180830381865afa158015611594573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115b89190611d2e565b91509150935093915050565b3360008181526003602090815260409182902080546001600160a01b0319166001600160a01b0386169081179091558251938452908301527fbbd6eb1e2586cc8ea8e80aa1ccf25590beffdd2cb73367b5ac49214505bb48c4910160405180910390a150565b8161166a5760405162461bcd60e51b815260206004820152601060248201526f125b9d985b1a59081c1c9bdc1bdcd85b60821b604482015260640161062d565b4281116116b95760405162461bcd60e51b815260206004820152601e60248201527f446561646c696e65206d75737420626520696e20746865206675747572650000604482015260640161062d565b600082815260026020526040908190208290555182907f04d4a8b224eb4e22836563fb784ab6779243c553d0872181d726f98890ec0473906116fe9084815260200190565b60405180910390a25050565b6117148282610b91565b6109ef5761172c816001600160a01b03166014611857565b611737836020611857565b604051602001611748929190611d8c565b60408051601f198184030181529082905262461bcd60e51b825261062d91600401611e01565b6117788282610b91565b6109ef576000828152602081815260408083206001600160a01b03851684529091529020805460ff191660011790556117ae3390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b6117fc8282610b91565b156109ef576000828152602081815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b60606000611866836002611e34565b611871906002611e53565b67ffffffffffffffff81111561188957611889611e6b565b6040519080825280601f01601f1916602001820160405280156118b3576020820181803683370190505b509050600360fc1b816000815181106118ce576118ce611c9d565b60200101906001600160f81b031916908160001a905350600f60fb1b816001815181106118fd576118fd611c9d565b60200101906001600160f81b031916908160001a9053506000611921846002611e34565b61192c906001611e53565b90505b60018111156119a4576f181899199a1a9b1b9c1cb0b131b232b360811b85600f166010811061196057611960611c9d565b1a60f81b82828151811061197657611976611c9d565b60200101906001600160f81b031916908160001a90535060049490941c9361199d81611e81565b905061192f565b5083156119f35760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e74604482015260640161062d565b9392505050565b600060208284031215611a0c57600080fd5b81356001600160e01b0319811681146119f357600080fd5b6001600160a01b0381168114611a3957600080fd5b50565b600060208284031215611a4e57600080fd5b81356119f381611a24565b600080600060608486031215611a6e57600080fd5b505081359360208301359350604090920135919050565b600060208284031215611a9757600080fd5b5035919050565b60008060408385031215611ab157600080fd5b823591506020830135611ac381611a24565b809150509250929050565b600080600060608486031215611ae357600080fd5b83359250602084013591506040840135611afc81611a24565b809150509250925092565b600080600060608486031215611b1c57600080fd5b833592506020840135611b2e81611a24565b929592945050506040919091013590565b60008060208385031215611b5257600080fd5b823567ffffffffffffffff80821115611b6a57600080fd5b818501915085601f830112611b7e57600080fd5b813581811115611b8d57600080fd5b8660208260051b8501011115611ba257600080fd5b60209290920196919550909350505050565b6020808252825182820181905260009190848201906040850190845b81811015611bf55783516001600160a01b031683529284019291840191600101611bd0565b50909695505050505050565b6020808252600e908201526d139bdd08185d5d1a1bdc9a5e995960921b604082015260600190565b634e487b7160e01b600052601160045260246000fd5b6000600019821415611c5357611c53611c29565b5060010190565b60208082526023908201527f427269626520616d6f756e74206d75737420626520677265617465722074686160408201526206e20360ec1b606082015260800190565b634e487b7160e01b600052603260045260246000fd5b600082821015611cc557611cc5611c29565b500390565b634e487b7160e01b600052603160045260246000fd5b60208082528181018390526000908460408401835b86811015611d23578235611d0881611a24565b6001600160a01b031682529183019190830190600101611cf5565b509695505050505050565b60008060408385031215611d4157600080fd5b8251611d4c81611a24565b6020939093015192949293505050565b60005b83811015611d77578181015183820152602001611d5f565b83811115611d86576000848401525b50505050565b7f416363657373436f6e74726f6c3a206163636f756e7420000000000000000000815260008351611dc4816017850160208801611d5c565b7001034b99036b4b9b9b4b733903937b6329607d1b6017918401918201528351611df5816028840160208801611d5c565b01602801949350505050565b6020815260008251806020840152611e20816040850160208701611d5c565b601f01601f19169190910160400192915050565b6000816000190483118215151615611e4e57611e4e611c29565b500290565b60008219821115611e6657611e66611c29565b500190565b634e487b7160e01b600052604160045260246000fd5b600081611e9057611e90611c29565b50600019019056fe5146a08baf902532d0ee2f909971144f12ca32651cd70cbee1117cddfb3b3b33a26469706673582212207773c018461ce350b2063db2e5370eaeb9785b7cba5dd8fa96888f124ec9702f64736f6c634300080c0033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
0000000000000000000000009ddb2da7dd76612e0df237b89af2cf4413733212
-----Decoded View---------------
Arg [0] : _BRIBE_VAULT (address): 0x9DDb2da7Dd76612e0df237B89AF2CF4413733212
-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 0000000000000000000000009ddb2da7dd76612e0df237b89af2cf4413733212
Deployed Bytecode Sourcemap
29696:1153:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10717:204;;;;;;;;;;-1:-1:-1;10717:204:0;;;;;:::i;:::-;;:::i;:::-;;;470:14:1;;463:22;445:41;;433:2;418:18;10717:204:0;;;;;;;;19559:51;;;;;;;;;;-1:-1:-1;19559:51:0;;;;;:::i;:::-;;;;;;;;;;;;-1:-1:-1;;;;;19559:51:0;;;;;;-1:-1:-1;;;;;1049:32:1;;;1031:51;;1019:2;1004:18;19559:51:0;885:203:1;30260:586:0;;;;;;;;;;-1:-1:-1;30260:586:0;;;;;:::i;:::-;;:::i;:::-;;19413:52;;;;;;;;;;-1:-1:-1;19413:52:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;;1745:25:1;;;1733:2;1718:18;19413:52:0;1599:177:1;12128:123:0;;;;;;;;;;-1:-1:-1;12128:123:0;;;;;:::i;:::-;12194:7;12221:12;;;;;;;;;;:22;;;;12128:123;12513:147;;;;;;;;;;-1:-1:-1;12513:147:0;;;;;:::i;:::-;;:::i;28078:1077::-;;;;;;:::i;:::-;;:::i;13561:218::-;;;;;;;;;;-1:-1:-1;13561:218:0;;;;;:::i;:::-;;:::i;25005:315::-;;;;;;;;;;-1:-1:-1;25005:315:0;;;;;:::i;:::-;;:::i;25586:236::-;;;;;;;;;;-1:-1:-1;25586:236:0;;;;;:::i;:::-;;:::i;19199:58::-;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;19199:58:0;;21464:274;;;;;;;;;;-1:-1:-1;21464:274:0;;;;;:::i;:::-;;:::i;19653:58::-;;;;;;;;;;-1:-1:-1;19653:58:0;;;;;:::i;:::-;;;;;;;;;;;;;;19327:33;;;;;;;;;;;;;;;11013:139;;;;;;;;;;-1:-1:-1;11013:139:0;;;;;:::i;:::-;;:::i;10104:49::-;;;;;;;;;;-1:-1:-1;10104:49:0;10149:4;10104:49;;26743:1198;;;;;;;;;;-1:-1:-1;26743:1198:0;;;;;:::i;:::-;;:::i;22110:282::-;;;;;;;;;;-1:-1:-1;22110:282:0;;;;;:::i;:::-;;:::i;23378:819::-;;;;;;;;;;-1:-1:-1;23378:819:0;;;;;:::i;:::-;;:::i;19156:36::-;;;;;;;;;;;;;;;12905:149;;;;;;;;;;-1:-1:-1;12905:149:0;;;;;:::i;:::-;;:::i;21838:119::-;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;22519:724::-;;;;;;;;;;-1:-1:-1;22519:724:0;;;;;:::i;:::-;;:::i;19718:37::-;;;;;;;;;;-1:-1:-1;19718:37:0;;;;;:::i;:::-;;:::i;21043:265::-;;;;;;;;;;-1:-1:-1;21043:265:0;;;;;:::i;:::-;;:::i;26171:344::-;;;;;;;;;;-1:-1:-1;26171:344:0;;;;;:::i;:::-;;:::i;:::-;;;;-1:-1:-1;;;;;5039:32:1;;;5021:51;;5103:2;5088:18;;5081:34;;;;4994:18;26171:344:0;4847:274:1;29464:155:0;;;;;;;;;;-1:-1:-1;29464:155:0;;;;;:::i;:::-;;:::i;10717:204::-;10802:4;-1:-1:-1;;;;;;10826:47:0;;-1:-1:-1;;;10826:47:0;;:87;;-1:-1:-1;;;;;;;;;;8080:40:0;;;10877:36;10819:94;10717:204;-1:-1:-1;;10717:204:0:o;30260:586::-;20739:39;10149:4;20767:10;20739:7;:39::i;:::-;:90;;;;20799:30;-1:-1:-1;;;;;;;;;;;20818:10:0;20799:7;:30::i;:::-;20717:154;;;;-1:-1:-1;;;20717:154:0;;;;;;;:::i;:::-;;;;;;;;;30427:16;30419:54:::1;;;::::0;-1:-1:-1;;;30419:54:0;;5671:2:1;30419:54:0::1;::::0;::::1;5653:21:1::0;5710:2;5690:18;;;5683:30;5749:27;5729:18;;;5722:55;5794:18;;30419:54:0::1;5469:349:1::0;30419:54:0::1;30491:9;30486:279;30506:11;30502:1;:15;30486:279;;;30676:34;::::0;;::::1;::::0;::::1;5980:19:1::0;;;6015:12;;;6008:28;;;30635:118:0::1;::::0;6052:12:1;;30676:34:0::1;;;;;;;;;;;;30666:45;;;;;;30730:8;30635:12;:118::i;:::-;30519:3;::::0;::::1;:::i;:::-;;;30486:279;;;-1:-1:-1::0;30782:56:0::1;::::0;;6521:25:1;;;6577:2;6562:18;;6555:34;;;30801:13:0;;30782:56:::1;::::0;6494:18:1;30782:56:0::1;;;;;;;30260:586:::0;;;:::o;12513:147::-;12194:7;12221:12;;;;;;;;;;:22;;;10595:30;10606:4;3909:10;10595;:30::i;:::-;12627:25:::1;12638:4;12644:7;12627:10;:25::i;:::-;12513:147:::0;;;:::o;28078:1077::-;17498:1;18096:7;;:19;;18088:63;;;;-1:-1:-1;;;18088:63:0;;6802:2:1;18088:63:0;;;6784:21:1;6841:2;6821:18;;;6814:30;6880:33;6860:18;;;6853:61;6931:18;;18088:63:0;6600:355:1;18088:63:0;17498:1;18229:7;:18;;;28159:24:::1;28186:27:::0;;;::::1;::::0;;;;;;;;28276:15:::1;28246:45:::0;::::1;28224:123;;;::::0;-1:-1:-1;;;28224:123:0;;7162:2:1;28224:123:0::1;::::0;::::1;7144:21:1::0;7201:2;7181:18;;;7174:30;7240;7220:18;;;7213:58;7288:18;;28224:123:0::1;6960:352:1::0;28224:123:0::1;28366:9;28358:62;;;;-1:-1:-1::0;;;28358:62:0::1;;;;;;;:::i;:::-;28433:23;28459:119;28502:8;28525:16;28556:11;28459:28;:119::i;:::-;28433:145;;28589:24;28616:92;28655:16;28686:11;28616:24;:92::i;:::-;28795:152;::::0;-1:-1:-1;;;28795:152:0;;::::1;::::0;::::1;7923:25:1::0;;;7964:18;;;7957:34;;;28926:10:0::1;8007:18:1::0;;;8000:60;28589:119:0;;-1:-1:-1;;;;;;28807:11:0::1;28795:37;::::0;::::1;::::0;28840:9:::1;::::0;7896:18:1;;28795:152:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;28965:182:0::1;::::0;;29041:9:::1;8273:25:1::0;;8329:2;8314:18;;8307:34;;;8357:18;;;8350:34;;;29126:10:0::1;::::0;-1:-1:-1;29015:11:0::1;-1:-1:-1::0;;;;;28965:182:0::1;::::0;-1:-1:-1;28992:8:0;;-1:-1:-1;28965:182:0::1;::::0;8261:2:1;8246:18;28965:182:0::1;;;;;;;-1:-1:-1::0;;17454:1:0;18408:22;;-1:-1:-1;;28078:1077:0:o;13561:218::-;-1:-1:-1;;;;;13657:23:0;;3909:10;13657:23;13649:83;;;;-1:-1:-1;;;13649:83:0;;8597:2:1;13649:83:0;;;8579:21:1;8636:2;8616:18;;;8609:30;8675:34;8655:18;;;8648:62;-1:-1:-1;;;8726:18:1;;;8719:45;8781:19;;13649:83:0;8395:411:1;13649:83:0;13745:26;13757:4;13763:7;13745:11;:26::i;:::-;13561:218;;:::o;25005:315::-;25236:61;;;25253:8;25236:61;;;9024:19:1;9059:12;;;9052:28;;;9096:12;;;;9089:28;;;9151:15;;;-1:-1:-1;;9147:53:1;9133:12;;;9126:75;-1:-1:-1;;9217:13:1;;25236:61:0;;;;;;;;;;;;25208:104;;;;;;25188:124;;25005:315;;;;;:::o;25586:236::-;25762:51;;;25779:8;25762:51;;;9426:19:1;9461:12;;;9454:28;;;9520:2;9516:15;;;-1:-1:-1;;9512:53:1;9498:12;;;9491:75;-1:-1:-1;;9582:12:1;;25762:51:0;;;;;;;;;;;;25752:62;;;;;;25745:69;;25586:236;;;;:::o;21464:274::-;10149:4;10595:30;10149:4;3909:10;10595;:30::i;:::-;21588::::1;-1:-1:-1::0;;;;;;;;;;;21607:10:0::1;21588:7;:30::i;:::-;21580:61;;;::::0;-1:-1:-1;;;21580:61:0;;9807:2:1;21580:61:0::1;::::0;::::1;9789:21:1::0;9846:2;9826:18;;;9819:30;-1:-1:-1;;;9865:18:1;;;9858:48;9923:18;;21580:61:0::1;9605:342:1::0;21580:61:0::1;21652:34;-1:-1:-1::0;;;;;;;;;;;21675:10:0::1;21652:11;:34::i;:::-;21704:26;::::0;-1:-1:-1;;;;;1049:32:1;;1031:51;;21704:26:0::1;::::0;1019:2:1;1004:18;21704:26:0::1;;;;;;;;21464:274:::0;;:::o;11013:139::-;11091:4;11115:12;;;;;;;;;;;-1:-1:-1;;;;;11115:29:0;;;;;;;;;;;;;;;11013:139::o;26743:1198::-;17498:1;18096:7;;:19;;18088:63;;;;-1:-1:-1;;;18088:63:0;;6802:2:1;18088:63:0;;;6784:21:1;6841:2;6821:18;;;6814:30;6880:33;6860:18;;;6853:61;6931:18;;18088:63:0;6600:355:1;18088:63:0;17498:1;18229:7;:18;;;26886:24:::1;26913:27:::0;;;::::1;::::0;;;;;;;;27003:15:::1;26973:45:::0;::::1;26951:123;;;::::0;-1:-1:-1;;;26951:123:0;;7162:2:1;26951:123:0::1;::::0;::::1;7144:21:1::0;7201:2;7181:18;;;7174:30;7240;7220:18;;;7213:58;7288:18;;26951:123:0::1;6960:352:1::0;26951:123:0::1;-1:-1:-1::0;;;;;27093:19:0;::::1;27085:45;;;::::0;-1:-1:-1;;;27085:45:0;;10154:2:1;27085:45:0::1;::::0;::::1;10136:21:1::0;10193:2;10173:18;;;10166:30;-1:-1:-1;;;10212:18:1;;;10205:43;10265:18;;27085:45:0::1;9952:337:1::0;27085:45:0::1;27149:25;27168:5;27149:18;:25::i;:::-;27141:62;;;::::0;-1:-1:-1;;;27141:62:0;;10496:2:1;27141:62:0::1;::::0;::::1;10478:21:1::0;10535:2;10515:18;;;10508:30;10574:26;10554:18;;;10547:54;10618:18;;27141:62:0::1;10294:348:1::0;27141:62:0::1;27222:11:::0;27214:59:::1;;;;-1:-1:-1::0;;;27214:59:0::1;;;;;;;:::i;:::-;27286:23;27312:113;27355:8;27378:16;27409:5;27312:28;:113::i;:::-;27286:139;;27436:24;27463:86;27502:16;27533:5;27463:24;:86::i;:::-;27562:180;::::0;-1:-1:-1;;;27562:180:0;;::::1;::::0;::::1;10906:25:1::0;;;10947:18;;;10940:34;;;-1:-1:-1;;;;;11048:15:1;;;11028:18;;;11021:43;11080:18;;;11073:34;;;27721:10:0::1;11123:19:1::0;;;11116:44;27436:113:0;;-1:-1:-1;27574:11:0::1;27562:42:::0;;::::1;::::0;::::1;::::0;10878:19:1;;27562:180:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;27760:173:0::1;::::0;;8273:25:1;;;8329:2;8314:18;;8307:34;;;8357:18;;;8350:34;;;27912:10:0::1;::::0;-1:-1:-1;;;;;;27760:173:0;::::1;::::0;-1:-1:-1;27787:8:0;;27760:173:::1;::::0;8261:2:1;8246:18;27760:173:0::1;;;;;;;-1:-1:-1::0;;17454:1:0;18408:22;;-1:-1:-1;;;;26743:1198:0:o;22110:282::-;22195:20;:27;22174:4;;22191:77;;-1:-1:-1;22251:5:0;;22110:282;-1:-1:-1;22110:282:0:o;22191:77::-;-1:-1:-1;;;;;22300:30:0;;;;;;:23;:30;;;;;;:35;;;:84;;;22379:5;-1:-1:-1;;;;;22352:32:0;:20;22373:1;22352:23;;;;;;;;:::i;:::-;;;;;;;;;;;-1:-1:-1;;;;;22352:23:0;:32;22280:104;22110:282;-1:-1:-1;;22110:282:0:o;23378:819::-;20739:39;10149:4;20767:10;20739:7;:39::i;:::-;:90;;;;20799:30;-1:-1:-1;;;;;;;;;;;20818:10:0;20799:7;:30::i;:::-;20717:154;;;;-1:-1:-1;;;20717:154:0;;;;;;;:::i;:::-;23499:9:::1;23494:649;23510:17:::0;;::::1;23494:649;;;23557:29;23576:6;;23583:1;23576:9;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;23557:29::-;23549:63;;;::::0;-1:-1:-1;;;23549:63:0;;11505:2:1;23549:63:0::1;::::0;::::1;11487:21:1::0;11544:2;11524:18;;;11517:30;-1:-1:-1;;;11563:18:1;;;11556:51;11624:18;;23549:63:0::1;11303:345:1::0;23549:63:0::1;23764:13;23780:23;:34;23804:6;;23811:1;23804:9;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;23780:34:0::1;-1:-1:-1::0;;;;;23780:34:0::1;;;;;;;;;;;;;23764:50;;23829:12;23844:20;23913:1;23883:20;:27;;;;:31;;;;:::i;:::-;23844:85;;;;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;::::1;::::0;23946:20:::1;:27:::0;;-1:-1:-1;;;;;23844:85:0;;::::1;::::0;-1:-1:-1;23844:85:0;;23967:5;;23946:27;::::1;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;;;;::::1;:34:::0;;-1:-1:-1;;;;;;23946:34:0::1;-1:-1:-1::0;;;;;23946:34:0;;::::1;;::::0;;23995:29;;::::1;::::0;;:23:::1;:29:::0;;;;;;;:37;;;24080:6;;24087:1;24080:9;;::::1;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;24056:34:0::1;-1:-1:-1::0;;;;;24056:34:0::1;;;;;;;;;;;;24049:41;;;24105:20;:26;;;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;;-1:-1:-1;;24105:26:0;;;;;-1:-1:-1;;;;;;24105:26:0::1;::::0;;;;;-1:-1:-1;23529:3:0::1;::::0;-1:-1:-1;23529:3:0;::::1;:::i;:::-;;;23494:649;;;;24160:29;24182:6;;24160:29;;;;;;;:::i;12905:149::-:0;12194:7;12221:12;;;;;;;;;;:22;;;10595:30;10606:4;3909:10;10595;:30::i;:::-;13020:26:::1;13032:4;13038:7;13020:11;:26::i;21838:119::-:0;21893:16;21929:20;21922:27;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;21922:27:0;;;;;;;;;;;;;;;;;;;;;;;21838:119;:::o;22519:724::-;20739:39;10149:4;20767:10;20739:7;:39::i;:::-;:90;;;;20799:30;-1:-1:-1;;;;;;;;;;;20818:10:0;20799:7;:30::i;:::-;20717:154;;;;-1:-1:-1;;;20717:154:0;;;;;;;:::i;:::-;22637:9:::1;22632:560;22648:17:::0;;::::1;22632:560;;;22716:1;22695:6:::0;;22702:1;22695:9;;::::1;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;22695:23:0::1;;;22687:49;;;::::0;-1:-1:-1;;;22687:49:0;;10154:2:1;22687:49:0::1;::::0;::::1;10136:21:1::0;10193:2;10173:18;;;10166:30;-1:-1:-1;;;10212:18:1;;;10205:43;10265:18;;22687:49:0::1;9952:337:1::0;22687:49:0::1;22772:11;-1:-1:-1::0;;;;;22759:24:0::1;:6;;22766:1;22759:9;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;22759:24:0::1;;;22751:65;;;::::0;-1:-1:-1;;;22751:65:0;;12827:2:1;22751:65:0::1;::::0;::::1;12809:21:1::0;12866:2;12846:18;;;12839:30;12905;12885:18;;;12878:58;12953:18;;22751:65:0::1;12625:352:1::0;22751:65:0::1;22858:29;22877:6;;22884:1;22877:9;;;;;;;:::i;22858:29::-;22857:30;22831:117;;;::::0;-1:-1:-1;;;22831:117:0;;13184:2:1;22831:117:0::1;::::0;::::1;13166:21:1::0;13223:2;13203:18;;;13196:30;13262:27;13242:18;;;13235:55;13307:18;;22831:117:0::1;12982:349:1::0;22831:117:0::1;23027:20;23053:6;;23060:1;23053:9;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;23027:36:::0;;::::1;::::0;;::::1;::::0;;-1:-1:-1;23027:36:0;;;::::1;::::0;;;::::1;::::0;;-1:-1:-1;;;;;;23027:36:0::1;-1:-1:-1::0;;;;;23027:36:0;;;::::1;::::0;;;::::1;::::0;;23132:20:::1;:27:::0;:48:::1;::::0;23027:36;23132:48:::1;:::i;:::-;23078:23;:34;23102:6;;23109:1;23102:9;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;23078:34:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;23078:34:0;:102;22667:3:::1;::::0;::::1;:::i;:::-;;;22632:560;;;;23209:26;23228:6;;23209:26;;;;;;;:::i;19718:37::-:0;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;19718:37:0;;-1:-1:-1;19718:37:0;:::o;21043:265::-;10149:4;10595:30;10149:4;3909:10;10595;:30::i;:::-;-1:-1:-1;;;;;21166:24:0;::::1;21158:55;;;::::0;-1:-1:-1;;;21158:55:0;;9807:2:1;21158:55:0::1;::::0;::::1;9789:21:1::0;9846:2;9826:18;;;9819:30;-1:-1:-1;;;9865:18:1;;;9858:48;9923:18;;21158:55:0::1;9605:342:1::0;21158:55:0::1;21224:33;-1:-1:-1::0;;;;;;;;;;;21246:10:0::1;21224;:33::i;:::-;21275:25;::::0;-1:-1:-1;;;;;1049:32:1;;1031:51;;21275:25:0::1;::::0;1019:2:1;1004:18;21275:25:0::1;885:203:1::0;26171:344:0;26305:18;26325:19;26389:11;-1:-1:-1;;;;;26377:33:0;;26429:63;26458:8;26468:16;26486:5;26429:28;:63::i;:::-;26377:130;;;;;;;;;;;;;1745:25:1;;1733:2;1718:18;;1599:177;26377:130:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;26357:150;;;;26171:344;;;;;;:::o;29464:155::-;29542:10;29525:28;;;;:16;:28;;;;;;;;;:33;;-1:-1:-1;;;;;;29525:33:0;-1:-1:-1;;;;;29525:33:0;;;;;;;;29576:35;;13865:34:1;;;13915:18;;;13908:43;29576:35:0;;13800:18:1;29576:35:0;;;;;;;29464:155;:::o;24361:317::-;24447:22;24439:51;;;;-1:-1:-1;;;24439:51:0;;14164:2:1;24439:51:0;;;14146:21:1;14203:2;14183:18;;;14176:30;-1:-1:-1;;;14222:18:1;;;14215:46;14278:18;;24439:51:0;13962:340:1;24439:51:0;24520:15;24509:8;:26;24501:69;;;;-1:-1:-1;;;24501:69:0;;14509:2:1;24501:69:0;;;14491:21:1;14548:2;14528:18;;;14521:30;14587:32;14567:18;;;14560:60;14637:18;;24501:69:0;14307:354:1;24501:69:0;24583:27;;;;:17;:27;;;;;;;:38;;;24639:31;24601:8;;24639:31;;;;24613:8;1745:25:1;;1733:2;1718:18;;1599:177;24639:31:0;;;;;;;;24361:317;;:::o;11442:497::-;11523:22;11531:4;11537:7;11523;:22::i;:::-;11518:414;;11711:41;11739:7;-1:-1:-1;;;;;11711:41:0;11749:2;11711:19;:41::i;:::-;11825:38;11853:4;11860:2;11825:19;:38::i;:::-;11616:270;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;11616:270:0;;;;;;;;;;-1:-1:-1;;;11562:358:0;;;;;;;:::i;15062:238::-;15146:22;15154:4;15160:7;15146;:22::i;:::-;15141:152;;15185:6;:12;;;;;;;;;;;-1:-1:-1;;;;;15185:29:0;;;;;;;;;:36;;-1:-1:-1;;15185:36:0;15217:4;15185:36;;;15268:12;3909:10;;3829:98;15268:12;-1:-1:-1;;;;;15241:40:0;15259:7;-1:-1:-1;;;;;15241:40:0;15253:4;15241:40;;;;;;;;;;15062:238;;:::o;15432:239::-;15516:22;15524:4;15530:7;15516;:22::i;:::-;15512:152;;;15587:5;15555:12;;;;;;;;;;;-1:-1:-1;;;;;15555:29:0;;;;;;;;;;:37;;-1:-1:-1;;15555:37:0;;;15612:40;3909:10;;15555:12;;15612:40;;15587:5;15612:40;15432:239;;:::o;5717:451::-;5792:13;5818:19;5850:10;5854:6;5850:1;:10;:::i;:::-;:14;;5863:1;5850:14;:::i;:::-;5840:25;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;5840:25:0;;5818:47;;-1:-1:-1;;;5876:6:0;5883:1;5876:9;;;;;;;;:::i;:::-;;;;:15;-1:-1:-1;;;;;5876:15:0;;;;;;;;;-1:-1:-1;;;5902:6:0;5909:1;5902:9;;;;;;;;:::i;:::-;;;;:15;-1:-1:-1;;;;;5902:15:0;;;;;;;;-1:-1:-1;5933:9:0;5945:10;5949:6;5945:1;:10;:::i;:::-;:14;;5958:1;5945:14;:::i;:::-;5933:26;;5928:135;5965:1;5961;:5;5928:135;;;-1:-1:-1;;;6013:5:0;6021:3;6013:11;6000:25;;;;;;;:::i;:::-;;;;5988:6;5995:1;5988:9;;;;;;;;:::i;:::-;;;;:37;-1:-1:-1;;;;;5988:37:0;;;;;;;;-1:-1:-1;6050:1:0;6040:11;;;;;5968:3;;;:::i;:::-;;;5928:135;;;-1:-1:-1;6081:10:0;;6073:55;;;;-1:-1:-1;;;6073:55:0;;16889:2:1;6073:55:0;;;16871:21:1;;;16908:18;;;16901:30;16967:34;16947:18;;;16940:62;17019:18;;6073:55:0;16687:356:1;6073:55:0;6153:6;5717:451;-1:-1:-1;;;5717:451:0:o;14:286:1:-;72:6;125:2;113:9;104:7;100:23;96:32;93:52;;;141:1;138;131:12;93:52;167:23;;-1:-1:-1;;;;;;219:32:1;;209:43;;199:71;;266:1;263;256:12;497:131;-1:-1:-1;;;;;572:31:1;;562:42;;552:70;;618:1;615;608:12;552:70;497:131;:::o;633:247::-;692:6;745:2;733:9;724:7;720:23;716:32;713:52;;;761:1;758;751:12;713:52;800:9;787:23;819:31;844:5;819:31;:::i;1093:316::-;1170:6;1178;1186;1239:2;1227:9;1218:7;1214:23;1210:32;1207:52;;;1255:1;1252;1245:12;1207:52;-1:-1:-1;;1278:23:1;;;1348:2;1333:18;;1320:32;;-1:-1:-1;1399:2:1;1384:18;;;1371:32;;1093:316;-1:-1:-1;1093:316:1:o;1414:180::-;1473:6;1526:2;1514:9;1505:7;1501:23;1497:32;1494:52;;;1542:1;1539;1532:12;1494:52;-1:-1:-1;1565:23:1;;1414:180;-1:-1:-1;1414:180:1:o;1963:315::-;2031:6;2039;2092:2;2080:9;2071:7;2067:23;2063:32;2060:52;;;2108:1;2105;2098:12;2060:52;2144:9;2131:23;2121:33;;2204:2;2193:9;2189:18;2176:32;2217:31;2242:5;2217:31;:::i;:::-;2267:5;2257:15;;;1963:315;;;;;:::o;2283:383::-;2360:6;2368;2376;2429:2;2417:9;2408:7;2404:23;2400:32;2397:52;;;2445:1;2442;2435:12;2397:52;2481:9;2468:23;2458:33;;2538:2;2527:9;2523:18;2510:32;2500:42;;2592:2;2581:9;2577:18;2564:32;2605:31;2630:5;2605:31;:::i;:::-;2655:5;2645:15;;;2283:383;;;;;:::o;2991:::-;3068:6;3076;3084;3137:2;3125:9;3116:7;3112:23;3108:32;3105:52;;;3153:1;3150;3143:12;3105:52;3189:9;3176:23;3166:33;;3249:2;3238:9;3234:18;3221:32;3262:31;3287:5;3262:31;:::i;:::-;2991:383;;3312:5;;-1:-1:-1;;;3364:2:1;3349:18;;;;3336:32;;2991:383::o;3379:615::-;3465:6;3473;3526:2;3514:9;3505:7;3501:23;3497:32;3494:52;;;3542:1;3539;3532:12;3494:52;3582:9;3569:23;3611:18;3652:2;3644:6;3641:14;3638:34;;;3668:1;3665;3658:12;3638:34;3706:6;3695:9;3691:22;3681:32;;3751:7;3744:4;3740:2;3736:13;3732:27;3722:55;;3773:1;3770;3763:12;3722:55;3813:2;3800:16;3839:2;3831:6;3828:14;3825:34;;;3855:1;3852;3845:12;3825:34;3908:7;3903:2;3893:6;3890:1;3886:14;3882:2;3878:23;3874:32;3871:45;3868:65;;;3929:1;3926;3919:12;3868:65;3960:2;3952:11;;;;;3982:6;;-1:-1:-1;3379:615:1;;-1:-1:-1;;;;3379:615:1:o;3999:658::-;4170:2;4222:21;;;4292:13;;4195:18;;;4314:22;;;4141:4;;4170:2;4393:15;;;;4367:2;4352:18;;;4141:4;4436:195;4450:6;4447:1;4444:13;4436:195;;;4515:13;;-1:-1:-1;;;;;4511:39:1;4499:52;;4606:15;;;;4571:12;;;;4547:1;4465:9;4436:195;;;-1:-1:-1;4648:3:1;;3999:658;-1:-1:-1;;;;;;3999:658:1:o;5126:338::-;5328:2;5310:21;;;5367:2;5347:18;;;5340:30;-1:-1:-1;;;5401:2:1;5386:18;;5379:44;5455:2;5440:18;;5126:338::o;6075:127::-;6136:10;6131:3;6127:20;6124:1;6117:31;6167:4;6164:1;6157:15;6191:4;6188:1;6181:15;6207:135;6246:3;-1:-1:-1;;6267:17:1;;6264:43;;;6287:18;;:::i;:::-;-1:-1:-1;6334:1:1;6323:13;;6207:135::o;7317:399::-;7519:2;7501:21;;;7558:2;7538:18;;;7531:30;7597:34;7592:2;7577:18;;7570:62;-1:-1:-1;;;7663:2:1;7648:18;;7641:33;7706:3;7691:19;;7317:399::o;11171:127::-;11232:10;11227:3;11223:20;11220:1;11213:31;11263:4;11260:1;11253:15;11287:4;11284:1;11277:15;11653:125;11693:4;11721:1;11718;11715:8;11712:34;;;11726:18;;:::i;:::-;-1:-1:-1;11763:9:1;;11653:125::o;11783:127::-;11844:10;11839:3;11835:20;11832:1;11825:31;11875:4;11872:1;11865:15;11899:4;11896:1;11889:15;11915:705;12096:2;12148:21;;;12121:18;;;12204:22;;;12067:4;;12283:6;12257:2;12242:18;;12067:4;12317:277;12331:6;12328:1;12325:13;12317:277;;;12406:6;12393:20;12426:31;12451:5;12426:31;:::i;:::-;-1:-1:-1;;;;;12482:31:1;12470:44;;12569:15;;;;12534:12;;;;12510:1;12346:9;12317:277;;;-1:-1:-1;12611:3:1;11915:705;-1:-1:-1;;;;;;11915:705:1:o;13336:312::-;13415:6;13423;13476:2;13464:9;13455:7;13451:23;13447:32;13444:52;;;13492:1;13489;13482:12;13444:52;13524:9;13518:16;13543:31;13568:5;13543:31;:::i;:::-;13638:2;13623:18;;;;13617:25;13593:5;;13617:25;;-1:-1:-1;;;13336:312:1:o;14666:258::-;14738:1;14748:113;14762:6;14759:1;14756:13;14748:113;;;14838:11;;;14832:18;14819:11;;;14812:39;14784:2;14777:10;14748:113;;;14879:6;14876:1;14873:13;14870:48;;;14914:1;14905:6;14900:3;14896:16;14889:27;14870:48;;14666:258;;;:::o;14929:786::-;15340:25;15335:3;15328:38;15310:3;15395:6;15389:13;15411:62;15466:6;15461:2;15456:3;15452:12;15445:4;15437:6;15433:17;15411:62;:::i;:::-;-1:-1:-1;;;15532:2:1;15492:16;;;15524:11;;;15517:40;15582:13;;15604:63;15582:13;15653:2;15645:11;;15638:4;15626:17;;15604:63;:::i;:::-;15687:17;15706:2;15683:26;;14929:786;-1:-1:-1;;;;14929:786:1:o;15720:383::-;15869:2;15858:9;15851:21;15832:4;15901:6;15895:13;15944:6;15939:2;15928:9;15924:18;15917:34;15960:66;16019:6;16014:2;16003:9;15999:18;15994:2;15986:6;15982:15;15960:66;:::i;:::-;16087:2;16066:15;-1:-1:-1;;16062:29:1;16047:45;;;;16094:2;16043:54;;15720:383;-1:-1:-1;;15720:383:1:o;16108:168::-;16148:7;16214:1;16210;16206:6;16202:14;16199:1;16196:21;16191:1;16184:9;16177:17;16173:45;16170:71;;;16221:18;;:::i;:::-;-1:-1:-1;16261:9:1;;16108:168::o;16281:128::-;16321:3;16352:1;16348:6;16345:1;16342:13;16339:39;;;16358:18;;:::i;:::-;-1:-1:-1;16394:9:1;;16281:128::o;16414:127::-;16475:10;16470:3;16466:20;16463:1;16456:31;16506:4;16503:1;16496:15;16530:4;16527:1;16520:15;16546:136;16585:3;16613:5;16603:39;;16622:18;;:::i;:::-;-1:-1:-1;;;16658:18:1;;16546:136::o
Swarm Source
ipfs://7773c018461ce350b2063db2e5370eaeb9785b7cba5dd8fa96888f124ec9702f
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 27 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
Loading...
Loading
[ Download: CSV Export ]
[ Download: CSV Export ]
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.