Overview
S Balance
S Value
$0.00Latest 1 from a total of 1 transactions
| Transaction Hash |
|
Block
|
From
|
To
|
|||||
|---|---|---|---|---|---|---|---|---|---|
| Revoke Role | 66032657 | 26 days ago | IN | 0 S | 0.0014316 |
View more zero value Internal Transactions in Advanced View mode
Advanced mode:
Cross-Chain Transactions
Loading...
Loading
Contract Name:
Timelock
Compiler Version
v0.8.10+commit.fc410830
Contract Source Code (Solidity)
/**
*Submitted for verification at SonicScan.org on 2025-01-14
*/
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0 ^0.8.10;
// lib/openzeppelin-contracts/contracts/access/IAccessControl.sol
// OpenZeppelin Contracts v4.4.1 (access/IAccessControl.sol)
/**
* @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;
}
// lib/openzeppelin-contracts/contracts/utils/Context.sol
// OpenZeppelin Contracts v4.4.1 (utils/Context.sol)
/**
* @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;
}
}
// lib/openzeppelin-contracts/contracts/utils/Strings.sol
// OpenZeppelin Contracts v4.4.1 (utils/Strings.sol)
/**
* @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);
}
}
// lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol
// OpenZeppelin Contracts v4.4.1 (utils/introspection/IERC165.sol)
/**
* @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);
}
// lib/openzeppelin-contracts/contracts/utils/introspection/ERC165.sol
// OpenZeppelin Contracts v4.4.1 (utils/introspection/ERC165.sol)
/**
* @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;
}
}
// lib/openzeppelin-contracts/contracts/access/AccessControl.sol
// OpenZeppelin Contracts (last updated v4.5.0) (access/AccessControl.sol)
/**
* @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);
_;
}
/**
* @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 virtual override returns (bool) {
return _roles[role].members[account];
}
/**
* @dev Revert with a standard message if `_msgSender()` is missing `role`.
* Overriding this function changes the behavior of the {onlyRole} modifier.
*
* Format of the revert message is described in {_checkRole}.
*
* _Available since v4.6._
*/
function _checkRole(bytes32 role) internal view virtual {
_checkRole(role, _msgSender());
}
/**
* @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 virtual {
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 virtual 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());
}
}
}
// lib/openzeppelin-contracts/contracts/governance/TimelockController.sol
// OpenZeppelin Contracts v4.4.1 (governance/TimelockController.sol)
/**
* @dev Contract module which acts as a timelocked controller. When set as the
* owner of an `Ownable` smart contract, it enforces a timelock on all
* `onlyOwner` maintenance operations. This gives time for users of the
* controlled contract to exit before a potentially dangerous maintenance
* operation is applied.
*
* By default, this contract is self administered, meaning administration tasks
* have to go through the timelock process. The proposer (resp executor) role
* is in charge of proposing (resp executing) operations. A common use case is
* to position this {TimelockController} as the owner of a smart contract, with
* a multisig or a DAO as the sole proposer.
*
* _Available since v3.3._
*/
contract TimelockController is AccessControl {
bytes32 public constant TIMELOCK_ADMIN_ROLE = keccak256("TIMELOCK_ADMIN_ROLE");
bytes32 public constant PROPOSER_ROLE = keccak256("PROPOSER_ROLE");
bytes32 public constant EXECUTOR_ROLE = keccak256("EXECUTOR_ROLE");
bytes32 public constant CANCELLER_ROLE = keccak256("CANCELLER_ROLE");
uint256 internal constant _DONE_TIMESTAMP = uint256(1);
mapping(bytes32 => uint256) private _timestamps;
uint256 private _minDelay;
/**
* @dev Emitted when a call is scheduled as part of operation `id`.
*/
event CallScheduled(
bytes32 indexed id,
uint256 indexed index,
address target,
uint256 value,
bytes data,
bytes32 predecessor,
uint256 delay
);
/**
* @dev Emitted when a call is performed as part of operation `id`.
*/
event CallExecuted(bytes32 indexed id, uint256 indexed index, address target, uint256 value, bytes data);
/**
* @dev Emitted when operation `id` is cancelled.
*/
event Cancelled(bytes32 indexed id);
/**
* @dev Emitted when the minimum delay for future operations is modified.
*/
event MinDelayChange(uint256 oldDuration, uint256 newDuration);
/**
* @dev Initializes the contract with a given `minDelay`, and a list of
* initial proposers and executors. The proposers receive both the
* proposer and the canceller role (for backward compatibility). The
* executors receive the executor role.
*
* NOTE: At construction, both the deployer and the timelock itself are
* administrators. This helps further configuration of the timelock by the
* deployer. After configuration is done, it is recommended that the
* deployer renounces its admin position and relies on timelocked
* operations to perform future maintenance.
*/
constructor(
uint256 minDelay,
address[] memory proposers,
address[] memory executors
) {
_setRoleAdmin(TIMELOCK_ADMIN_ROLE, TIMELOCK_ADMIN_ROLE);
_setRoleAdmin(PROPOSER_ROLE, TIMELOCK_ADMIN_ROLE);
_setRoleAdmin(EXECUTOR_ROLE, TIMELOCK_ADMIN_ROLE);
_setRoleAdmin(CANCELLER_ROLE, TIMELOCK_ADMIN_ROLE);
// deployer + self administration
_setupRole(TIMELOCK_ADMIN_ROLE, _msgSender());
_setupRole(TIMELOCK_ADMIN_ROLE, address(this));
// register proposers and cancellers
for (uint256 i = 0; i < proposers.length; ++i) {
_setupRole(PROPOSER_ROLE, proposers[i]);
_setupRole(CANCELLER_ROLE, proposers[i]);
}
// register executors
for (uint256 i = 0; i < executors.length; ++i) {
_setupRole(EXECUTOR_ROLE, executors[i]);
}
_minDelay = minDelay;
emit MinDelayChange(0, minDelay);
}
/**
* @dev Modifier to make a function callable only by a certain role. In
* addition to checking the sender's role, `address(0)` 's role is also
* considered. Granting a role to `address(0)` is equivalent to enabling
* this role for everyone.
*/
modifier onlyRoleOrOpenRole(bytes32 role) {
if (!hasRole(role, address(0))) {
_checkRole(role, _msgSender());
}
_;
}
/**
* @dev Contract might receive/hold ETH as part of the maintenance process.
*/
receive() external payable {}
/**
* @dev Returns whether an id correspond to a registered operation. This
* includes both Pending, Ready and Done operations.
*/
function isOperation(bytes32 id) public view virtual returns (bool pending) {
return getTimestamp(id) > 0;
}
/**
* @dev Returns whether an operation is pending or not.
*/
function isOperationPending(bytes32 id) public view virtual returns (bool pending) {
return getTimestamp(id) > _DONE_TIMESTAMP;
}
/**
* @dev Returns whether an operation is ready or not.
*/
function isOperationReady(bytes32 id) public view virtual returns (bool ready) {
uint256 timestamp = getTimestamp(id);
return timestamp > _DONE_TIMESTAMP && timestamp <= block.timestamp;
}
/**
* @dev Returns whether an operation is done or not.
*/
function isOperationDone(bytes32 id) public view virtual returns (bool done) {
return getTimestamp(id) == _DONE_TIMESTAMP;
}
/**
* @dev Returns the timestamp at with an operation becomes ready (0 for
* unset operations, 1 for done operations).
*/
function getTimestamp(bytes32 id) public view virtual returns (uint256 timestamp) {
return _timestamps[id];
}
/**
* @dev Returns the minimum delay for an operation to become valid.
*
* This value can be changed by executing an operation that calls `updateDelay`.
*/
function getMinDelay() public view virtual returns (uint256 duration) {
return _minDelay;
}
/**
* @dev Returns the identifier of an operation containing a single
* transaction.
*/
function hashOperation(
address target,
uint256 value,
bytes calldata data,
bytes32 predecessor,
bytes32 salt
) public pure virtual returns (bytes32 hash) {
return keccak256(abi.encode(target, value, data, predecessor, salt));
}
/**
* @dev Returns the identifier of an operation containing a batch of
* transactions.
*/
function hashOperationBatch(
address[] calldata targets,
uint256[] calldata values,
bytes[] calldata payloads,
bytes32 predecessor,
bytes32 salt
) public pure virtual returns (bytes32 hash) {
return keccak256(abi.encode(targets, values, payloads, predecessor, salt));
}
/**
* @dev Schedule an operation containing a single transaction.
*
* Emits a {CallScheduled} event.
*
* Requirements:
*
* - the caller must have the 'proposer' role.
*/
function schedule(
address target,
uint256 value,
bytes calldata data,
bytes32 predecessor,
bytes32 salt,
uint256 delay
) public virtual onlyRole(PROPOSER_ROLE) {
bytes32 id = hashOperation(target, value, data, predecessor, salt);
_schedule(id, delay);
emit CallScheduled(id, 0, target, value, data, predecessor, delay);
}
/**
* @dev Schedule an operation containing a batch of transactions.
*
* Emits one {CallScheduled} event per transaction in the batch.
*
* Requirements:
*
* - the caller must have the 'proposer' role.
*/
function scheduleBatch(
address[] calldata targets,
uint256[] calldata values,
bytes[] calldata payloads,
bytes32 predecessor,
bytes32 salt,
uint256 delay
) public virtual onlyRole(PROPOSER_ROLE) {
require(targets.length == values.length, "TimelockController: length mismatch");
require(targets.length == payloads.length, "TimelockController: length mismatch");
bytes32 id = hashOperationBatch(targets, values, payloads, predecessor, salt);
_schedule(id, delay);
for (uint256 i = 0; i < targets.length; ++i) {
emit CallScheduled(id, i, targets[i], values[i], payloads[i], predecessor, delay);
}
}
/**
* @dev Schedule an operation that is to becomes valid after a given delay.
*/
function _schedule(bytes32 id, uint256 delay) private {
require(!isOperation(id), "TimelockController: operation already scheduled");
require(delay >= getMinDelay(), "TimelockController: insufficient delay");
_timestamps[id] = block.timestamp + delay;
}
/**
* @dev Cancel an operation.
*
* Requirements:
*
* - the caller must have the 'canceller' role.
*/
function cancel(bytes32 id) public virtual onlyRole(CANCELLER_ROLE) {
require(isOperationPending(id), "TimelockController: operation cannot be cancelled");
delete _timestamps[id];
emit Cancelled(id);
}
/**
* @dev Execute an (ready) operation containing a single transaction.
*
* Emits a {CallExecuted} event.
*
* Requirements:
*
* - the caller must have the 'executor' role.
*/
// This function can reenter, but it doesn't pose a risk because _afterCall checks that the proposal is pending,
// thus any modifications to the operation during reentrancy should be caught.
// slither-disable-next-line reentrancy-eth
function execute(
address target,
uint256 value,
bytes calldata data,
bytes32 predecessor,
bytes32 salt
) public payable virtual onlyRoleOrOpenRole(EXECUTOR_ROLE) {
bytes32 id = hashOperation(target, value, data, predecessor, salt);
_beforeCall(id, predecessor);
_call(id, 0, target, value, data);
_afterCall(id);
}
/**
* @dev Execute an (ready) operation containing a batch of transactions.
*
* Emits one {CallExecuted} event per transaction in the batch.
*
* Requirements:
*
* - the caller must have the 'executor' role.
*/
function executeBatch(
address[] calldata targets,
uint256[] calldata values,
bytes[] calldata payloads,
bytes32 predecessor,
bytes32 salt
) public payable virtual onlyRoleOrOpenRole(EXECUTOR_ROLE) {
require(targets.length == values.length, "TimelockController: length mismatch");
require(targets.length == payloads.length, "TimelockController: length mismatch");
bytes32 id = hashOperationBatch(targets, values, payloads, predecessor, salt);
_beforeCall(id, predecessor);
for (uint256 i = 0; i < targets.length; ++i) {
_call(id, i, targets[i], values[i], payloads[i]);
}
_afterCall(id);
}
/**
* @dev Checks before execution of an operation's calls.
*/
function _beforeCall(bytes32 id, bytes32 predecessor) private view {
require(isOperationReady(id), "TimelockController: operation is not ready");
require(predecessor == bytes32(0) || isOperationDone(predecessor), "TimelockController: missing dependency");
}
/**
* @dev Checks after execution of an operation's calls.
*/
function _afterCall(bytes32 id) private {
require(isOperationReady(id), "TimelockController: operation is not ready");
_timestamps[id] = _DONE_TIMESTAMP;
}
/**
* @dev Execute an operation's call.
*
* Emits a {CallExecuted} event.
*/
function _call(
bytes32 id,
uint256 index,
address target,
uint256 value,
bytes calldata data
) private {
(bool success, ) = target.call{value: value}(data);
require(success, "TimelockController: underlying transaction reverted");
emit CallExecuted(id, index, target, value, data);
}
/**
* @dev Changes the minimum timelock duration for future operations.
*
* Emits a {MinDelayChange} event.
*
* Requirements:
*
* - the caller must be the timelock itself. This can only be achieved by scheduling and later executing
* an operation where the timelock is the target and the data is the ABI-encoded call to this function.
*/
function updateDelay(uint256 newDelay) external virtual {
require(msg.sender == address(this), "TimelockController: caller must be timelock");
emit MinDelayChange(_minDelay, newDelay);
_minDelay = newDelay;
}
}
// contracts/Timelock.sol
contract Timelock is TimelockController {
constructor(uint256 minDelay, address[] memory proposers, address[] memory executors)
TimelockController(minDelay, proposers, executors)
{}
}Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"inputs":[{"internalType":"uint256","name":"minDelay","type":"uint256"},{"internalType":"address[]","name":"proposers","type":"address[]"},{"internalType":"address[]","name":"executors","type":"address[]"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"id","type":"bytes32"},{"indexed":true,"internalType":"uint256","name":"index","type":"uint256"},{"indexed":false,"internalType":"address","name":"target","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"},{"indexed":false,"internalType":"bytes","name":"data","type":"bytes"}],"name":"CallExecuted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"id","type":"bytes32"},{"indexed":true,"internalType":"uint256","name":"index","type":"uint256"},{"indexed":false,"internalType":"address","name":"target","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"},{"indexed":false,"internalType":"bytes","name":"data","type":"bytes"},{"indexed":false,"internalType":"bytes32","name":"predecessor","type":"bytes32"},{"indexed":false,"internalType":"uint256","name":"delay","type":"uint256"}],"name":"CallScheduled","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"id","type":"bytes32"}],"name":"Cancelled","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"oldDuration","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"newDuration","type":"uint256"}],"name":"MinDelayChange","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"},{"inputs":[],"name":"CANCELLER_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"DEFAULT_ADMIN_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"EXECUTOR_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"PROPOSER_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"TIMELOCK_ADMIN_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"id","type":"bytes32"}],"name":"cancel","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"target","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"},{"internalType":"bytes32","name":"predecessor","type":"bytes32"},{"internalType":"bytes32","name":"salt","type":"bytes32"}],"name":"execute","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address[]","name":"targets","type":"address[]"},{"internalType":"uint256[]","name":"values","type":"uint256[]"},{"internalType":"bytes[]","name":"payloads","type":"bytes[]"},{"internalType":"bytes32","name":"predecessor","type":"bytes32"},{"internalType":"bytes32","name":"salt","type":"bytes32"}],"name":"executeBatch","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"getMinDelay","outputs":[{"internalType":"uint256","name":"duration","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":[{"internalType":"bytes32","name":"id","type":"bytes32"}],"name":"getTimestamp","outputs":[{"internalType":"uint256","name":"timestamp","type":"uint256"}],"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":"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":"target","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"},{"internalType":"bytes32","name":"predecessor","type":"bytes32"},{"internalType":"bytes32","name":"salt","type":"bytes32"}],"name":"hashOperation","outputs":[{"internalType":"bytes32","name":"hash","type":"bytes32"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address[]","name":"targets","type":"address[]"},{"internalType":"uint256[]","name":"values","type":"uint256[]"},{"internalType":"bytes[]","name":"payloads","type":"bytes[]"},{"internalType":"bytes32","name":"predecessor","type":"bytes32"},{"internalType":"bytes32","name":"salt","type":"bytes32"}],"name":"hashOperationBatch","outputs":[{"internalType":"bytes32","name":"hash","type":"bytes32"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bytes32","name":"id","type":"bytes32"}],"name":"isOperation","outputs":[{"internalType":"bool","name":"pending","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"id","type":"bytes32"}],"name":"isOperationDone","outputs":[{"internalType":"bool","name":"done","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"id","type":"bytes32"}],"name":"isOperationPending","outputs":[{"internalType":"bool","name":"pending","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"id","type":"bytes32"}],"name":"isOperationReady","outputs":[{"internalType":"bool","name":"ready","type":"bool"}],"stateMutability":"view","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":"target","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"},{"internalType":"bytes32","name":"predecessor","type":"bytes32"},{"internalType":"bytes32","name":"salt","type":"bytes32"},{"internalType":"uint256","name":"delay","type":"uint256"}],"name":"schedule","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"targets","type":"address[]"},{"internalType":"uint256[]","name":"values","type":"uint256[]"},{"internalType":"bytes[]","name":"payloads","type":"bytes[]"},{"internalType":"bytes32","name":"predecessor","type":"bytes32"},{"internalType":"bytes32","name":"salt","type":"bytes32"},{"internalType":"uint256","name":"delay","type":"uint256"}],"name":"scheduleBatch","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"newDelay","type":"uint256"}],"name":"updateDelay","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]Contract Creation Code
60806040523480156200001157600080fd5b506040516200363338038062003633833981810160405281019062000037919062000779565b8282826200006c7f5f58e3a2316349923ce3780f8d587db2d72378aed66a8261c916544fa6846ca5806200035560201b60201c565b620000be7fb09aa5aeb3702cfd50b6b62bc4532604938f21248a27a1d5ca736082b6819cc17f5f58e3a2316349923ce3780f8d587db2d72378aed66a8261c916544fa6846ca56200035560201b60201c565b620001107fd8aa0f3194971a2a116679f7c2090f6939c8d4e01a2a8d7e41d55e5351469e637f5f58e3a2316349923ce3780f8d587db2d72378aed66a8261c916544fa6846ca56200035560201b60201c565b620001627ffd643c72710c63c0180259aba6b2d05451e3591a24e58b62239378085726f7837f5f58e3a2316349923ce3780f8d587db2d72378aed66a8261c916544fa6846ca56200035560201b60201c565b620001a37f5f58e3a2316349923ce3780f8d587db2d72378aed66a8261c916544fa6846ca562000197620003b860201b60201c565b620003c060201b60201c565b620001d57f5f58e3a2316349923ce3780f8d587db2d72378aed66a8261c916544fa6846ca530620003c060201b60201c565b60005b82518110156200029457620002317fb09aa5aeb3702cfd50b6b62bc4532604938f21248a27a1d5ca736082b6819cc18483815181106200021d576200021c62000813565b5b6020026020010151620003c060201b60201c565b620002807ffd643c72710c63c0180259aba6b2d05451e3591a24e58b62239378085726f7838483815181106200026c576200026b62000813565b5b6020026020010151620003c060201b60201c565b806200028c9062000871565b9050620001d8565b5060005b81518110156200030557620002f17fd8aa0f3194971a2a116679f7c2090f6939c8d4e01a2a8d7e41d55e5351469e63838381518110620002dd57620002dc62000813565b5b6020026020010151620003c060201b60201c565b80620002fd9062000871565b905062000298565b50826002819055507f11c24f4ead16507c69ac467fbd5e4eed5fb5c699626d2cc6d66421df253886d5600084604051620003419291906200091d565b60405180910390a15050505050506200094a565b60006200036883620003d660201b60201c565b905081600080858152602001908152602001600020600101819055508181847fbd79b86ffe0ab8e8776151514217cd7cacd52c909f66475c3af44e129f0b00ff60405160405180910390a4505050565b600033905090565b620003d28282620003f560201b60201c565b5050565b6000806000838152602001908152602001600020600101549050919050565b620004078282620004e660201b60201c565b620004e257600160008084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555062000487620003b860201b60201c565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45b5050565b600080600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b6000604051905090565b600080fd5b600080fd5b6000819050919050565b620005798162000564565b81146200058557600080fd5b50565b60008151905062000599816200056e565b92915050565b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b620005ef82620005a4565b810181811067ffffffffffffffff82111715620006115762000610620005b5565b5b80604052505050565b60006200062662000550565b9050620006348282620005e4565b919050565b600067ffffffffffffffff821115620006575762000656620005b5565b5b602082029050602081019050919050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006200069a826200066d565b9050919050565b620006ac816200068d565b8114620006b857600080fd5b50565b600081519050620006cc81620006a1565b92915050565b6000620006e9620006e38462000639565b6200061a565b905080838252602082019050602084028301858111156200070f576200070e62000668565b5b835b818110156200073c5780620007278882620006bb565b84526020840193505060208101905062000711565b5050509392505050565b600082601f8301126200075e576200075d6200059f565b5b815162000770848260208601620006d2565b91505092915050565b6000806000606084860312156200079557620007946200055a565b5b6000620007a58682870162000588565b935050602084015167ffffffffffffffff811115620007c957620007c86200055f565b5b620007d78682870162000746565b925050604084015167ffffffffffffffff811115620007fb57620007fa6200055f565b5b620008098682870162000746565b9150509250925092565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006200087e8262000564565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415620008b457620008b362000842565b5b600182019050919050565b6000819050919050565b6000819050919050565b6000620008f4620008ee620008e884620008bf565b620008c9565b62000564565b9050919050565b6200090681620008d3565b82525050565b620009178162000564565b82525050565b6000604082019050620009346000830185620008fb565b6200094360208301846200090c565b9392505050565b612cd9806200095a6000396000f3fe60806040526004361061016a5760003560e01c806364d62353116100d1578063b08e51c01161008a578063d45c443511610064578063d45c443514610584578063d547741f146105c1578063e38335e5146105ea578063f27a0c921461060657610171565b8063b08e51c0146104f3578063b1c5f4271461051e578063c4d252f51461055b57610171565b806364d62353146103d15780638065657f146103fa5780638f2a0bb0146104375780638f61f4f51461046057806391d148541461048b578063a217fddf146104c857610171565b8063248a9ca311610123578063248a9ca31461028b5780632ab0f529146102c85780632f2ff15d1461030557806331d507501461032e57806336568abe1461036b578063584b153e1461039457610171565b806301d5062a1461017657806301ffc9a71461019f57806307bd0265146101dc5780630d3cf6fc14610207578063134008d31461023257806313bc9f201461024e57610171565b3661017157005b600080fd5b34801561018257600080fd5b5061019d60048036038101906101989190611871565b610631565b005b3480156101ab57600080fd5b506101c660048036038101906101c19190611978565b6106c6565b6040516101d391906119c0565b60405180910390f35b3480156101e857600080fd5b506101f1610740565b6040516101fe91906119ea565b60405180910390f35b34801561021357600080fd5b5061021c610764565b60405161022991906119ea565b60405180910390f35b61024c60048036038101906102479190611a05565b610788565b005b34801561025a57600080fd5b5061027560048036038101906102709190611a9f565b610808565b60405161028291906119c0565b60405180910390f35b34801561029757600080fd5b506102b260048036038101906102ad9190611a9f565b61082e565b6040516102bf91906119ea565b60405180910390f35b3480156102d457600080fd5b506102ef60048036038101906102ea9190611a9f565b61084d565b6040516102fc91906119c0565b60405180910390f35b34801561031157600080fd5b5061032c60048036038101906103279190611acc565b610862565b005b34801561033a57600080fd5b5061035560048036038101906103509190611a9f565b610883565b60405161036291906119c0565b60405180910390f35b34801561037757600080fd5b50610392600480360381019061038d9190611acc565b610897565b005b3480156103a057600080fd5b506103bb60048036038101906103b69190611a9f565b61091a565b6040516103c891906119c0565b60405180910390f35b3480156103dd57600080fd5b506103f860048036038101906103f39190611b0c565b61092f565b005b34801561040657600080fd5b50610421600480360381019061041c9190611a05565b6109e2565b60405161042e91906119ea565b60405180910390f35b34801561044357600080fd5b5061045e60048036038101906104599190611c3b565b610a21565b005b34801561046c57600080fd5b50610475610bcc565b60405161048291906119ea565b60405180910390f35b34801561049757600080fd5b506104b260048036038101906104ad9190611acc565b610bf0565b6040516104bf91906119c0565b60405180910390f35b3480156104d457600080fd5b506104dd610c5a565b6040516104ea91906119ea565b60405180910390f35b3480156104ff57600080fd5b50610508610c61565b60405161051591906119ea565b60405180910390f35b34801561052a57600080fd5b5061054560048036038101906105409190611d2a565b610c85565b60405161055291906119ea565b60405180910390f35b34801561056757600080fd5b50610582600480360381019061057d9190611a9f565b610cca565b005b34801561059057600080fd5b506105ab60048036038101906105a69190611a9f565b610d84565b6040516105b89190611e15565b60405180910390f35b3480156105cd57600080fd5b506105e860048036038101906105e39190611acc565b610da1565b005b61060460048036038101906105ff9190611d2a565b610dc2565b005b34801561061257600080fd5b5061061b610f58565b6040516106289190611e15565b60405180910390f35b7fb09aa5aeb3702cfd50b6b62bc4532604938f21248a27a1d5ca736082b6819cc161065b81610f62565b600061066b8989898989896109e2565b90506106778184610f76565b6000817f4cf4410cc57040e44862ef0f45f3dd5a5e02db8eb8add648d4b0e236f1d07dca8b8b8b8b8b8a6040516106b396959493929190611e9d565b60405180910390a3505050505050505050565b60007f7965db0b000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480610739575061073882611030565b5b9050919050565b7fd8aa0f3194971a2a116679f7c2090f6939c8d4e01a2a8d7e41d55e5351469e6381565b7f5f58e3a2316349923ce3780f8d587db2d72378aed66a8261c916544fa6846ca581565b7fd8aa0f3194971a2a116679f7c2090f6939c8d4e01a2a8d7e41d55e5351469e636107b4816000610bf0565b6107ca576107c9816107c461109a565b6110a2565b5b60006107da8888888888886109e2565b90506107e6818561113f565b6107f58160008a8a8a8a6111e0565b6107fe816112d8565b5050505050505050565b60008061081483610d84565b90506001811180156108265750428111155b915050919050565b6000806000838152602001908152602001600020600101549050919050565b6000600161085a83610d84565b149050919050565b61086b8261082e565b61087481610f62565b61087e838361133b565b505050565b60008061088f83610d84565b119050919050565b61089f61109a565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161461090c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161090390611f7c565b60405180910390fd5b610916828261141b565b5050565b6000600161092783610d84565b119050919050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461099d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109949061200e565b60405180910390fd5b7f11c24f4ead16507c69ac467fbd5e4eed5fb5c699626d2cc6d66421df253886d5600254826040516109d092919061202e565b60405180910390a18060028190555050565b60008686868686866040516020016109ff96959493929190612057565b6040516020818303038152906040528051906020012090509695505050505050565b7fb09aa5aeb3702cfd50b6b62bc4532604938f21248a27a1d5ca736082b6819cc1610a4b81610f62565b878790508a8a905014610a93576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a8a90612125565b60405180910390fd5b858590508a8a905014610adb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ad290612125565b60405180910390fd5b6000610aed8b8b8b8b8b8b8b8b610c85565b9050610af98184610f76565b60005b8b8b9050811015610bbe5780827f4cf4410cc57040e44862ef0f45f3dd5a5e02db8eb8add648d4b0e236f1d07dca8e8e85818110610b3d57610b3c612145565b5b9050602002016020810190610b529190612174565b8d8d86818110610b6557610b64612145565b5b905060200201358c8c87818110610b7f57610b7e612145565b5b9050602002810190610b9191906121b0565b8c8b604051610ba596959493929190611e9d565b60405180910390a380610bb790612242565b9050610afc565b505050505050505050505050565b7fb09aa5aeb3702cfd50b6b62bc4532604938f21248a27a1d5ca736082b6819cc181565b600080600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b6000801b81565b7ffd643c72710c63c0180259aba6b2d05451e3591a24e58b62239378085726f78381565b60008888888888888888604051602001610ca6989796959493929190612524565b60405160208183030381529060405280519060200120905098975050505050505050565b7ffd643c72710c63c0180259aba6b2d05451e3591a24e58b62239378085726f783610cf481610f62565b610cfd8261091a565b610d3c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d3390612604565b60405180910390fd5b6001600083815260200190815260200160002060009055817fbaa1eb22f2a492ba1a5fea61b8df4d27c6c8b5f3971e63bb58fa14ff72eedb7060405160405180910390a25050565b600060016000838152602001908152602001600020549050919050565b610daa8261082e565b610db381610f62565b610dbd838361141b565b505050565b7fd8aa0f3194971a2a116679f7c2090f6939c8d4e01a2a8d7e41d55e5351469e63610dee816000610bf0565b610e0457610e0381610dfe61109a565b6110a2565b5b868690508989905014610e4c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e4390612125565b60405180910390fd5b848490508989905014610e94576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e8b90612125565b60405180910390fd5b6000610ea68a8a8a8a8a8a8a8a610c85565b9050610eb2818561113f565b60005b8a8a9050811015610f4257610f3182828d8d85818110610ed857610ed7612145565b5b9050602002016020810190610eed9190612174565b8c8c86818110610f0057610eff612145565b5b905060200201358b8b87818110610f1a57610f19612145565b5b9050602002810190610f2c91906121b0565b6111e0565b80610f3b90612242565b9050610eb5565b50610f4c816112d8565b50505050505050505050565b6000600254905090565b610f7381610f6e61109a565b6110a2565b50565b610f7f82610883565b15610fbf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fb690612696565b60405180910390fd5b610fc7610f58565b811015611009576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161100090612728565b60405180910390fd5b80426110159190612748565b60016000848152602001908152602001600020819055505050565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b600033905090565b6110ac8282610bf0565b61113b576110d18173ffffffffffffffffffffffffffffffffffffffff1660146114fc565b6110df8360001c60206114fc565b6040516020016110f09291906128b0565b6040516020818303038152906040526040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111329190612923565b60405180910390fd5b5050565b61114882610808565b611187576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161117e906129b7565b60405180910390fd5b6000801b81148061119d575061119c8161084d565b5b6111dc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111d390612a49565b60405180910390fd5b5050565b60008473ffffffffffffffffffffffffffffffffffffffff1684848460405161120a929190612a99565b60006040518083038185875af1925050503d8060008114611247576040519150601f19603f3d011682016040523d82523d6000602084013e61124c565b606091505b5050905080611290576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161128790612b24565b60405180910390fd5b85877fc2617efa69bab66782fa219543714338489c4e9e178271560a91b82c3f612b58878787876040516112c79493929190612b44565b60405180910390a350505050505050565b6112e181610808565b611320576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611317906129b7565b60405180910390fd5b60018060008381526020019081526020016000208190555050565b6113458282610bf0565b61141757600160008084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506113bc61109a565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45b5050565b6114258282610bf0565b156114f857600080600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555061149d61109a565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16837ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b60405160405180910390a45b5050565b60606000600283600261150f9190612b84565b6115199190612748565b67ffffffffffffffff81111561153257611531612bde565b5b6040519080825280601f01601f1916602001820160405280156115645781602001600182028036833780820191505090505b5090507f30000000000000000000000000000000000000000000000000000000000000008160008151811061159c5761159b612145565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053507f780000000000000000000000000000000000000000000000000000000000000081600181518110611600576115ff612145565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600060018460026116409190612b84565b61164a9190612748565b90505b60018111156116ea577f3031323334353637383961626364656600000000000000000000000000000000600f86166010811061168c5761168b612145565b5b1a60f81b8282815181106116a3576116a2612145565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600485901c9450806116e390612c0d565b905061164d565b506000841461172e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161172590612c83565b60405180910390fd5b8091505092915050565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061176d82611742565b9050919050565b61177d81611762565b811461178857600080fd5b50565b60008135905061179a81611774565b92915050565b6000819050919050565b6117b3816117a0565b81146117be57600080fd5b50565b6000813590506117d0816117aa565b92915050565b600080fd5b600080fd5b600080fd5b60008083601f8401126117fb576117fa6117d6565b5b8235905067ffffffffffffffff811115611818576118176117db565b5b602083019150836001820283011115611834576118336117e0565b5b9250929050565b6000819050919050565b61184e8161183b565b811461185957600080fd5b50565b60008135905061186b81611845565b92915050565b600080600080600080600060c0888a0312156118905761188f611738565b5b600061189e8a828b0161178b565b97505060206118af8a828b016117c1565b965050604088013567ffffffffffffffff8111156118d0576118cf61173d565b5b6118dc8a828b016117e5565b955095505060606118ef8a828b0161185c565b93505060806119008a828b0161185c565b92505060a06119118a828b016117c1565b91505092959891949750929550565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b61195581611920565b811461196057600080fd5b50565b6000813590506119728161194c565b92915050565b60006020828403121561198e5761198d611738565b5b600061199c84828501611963565b91505092915050565b60008115159050919050565b6119ba816119a5565b82525050565b60006020820190506119d560008301846119b1565b92915050565b6119e48161183b565b82525050565b60006020820190506119ff60008301846119db565b92915050565b60008060008060008060a08789031215611a2257611a21611738565b5b6000611a3089828a0161178b565b9650506020611a4189828a016117c1565b955050604087013567ffffffffffffffff811115611a6257611a6161173d565b5b611a6e89828a016117e5565b94509450506060611a8189828a0161185c565b9250506080611a9289828a0161185c565b9150509295509295509295565b600060208284031215611ab557611ab4611738565b5b6000611ac38482850161185c565b91505092915050565b60008060408385031215611ae357611ae2611738565b5b6000611af18582860161185c565b9250506020611b028582860161178b565b9150509250929050565b600060208284031215611b2257611b21611738565b5b6000611b30848285016117c1565b91505092915050565b60008083601f840112611b4f57611b4e6117d6565b5b8235905067ffffffffffffffff811115611b6c57611b6b6117db565b5b602083019150836020820283011115611b8857611b876117e0565b5b9250929050565b60008083601f840112611ba557611ba46117d6565b5b8235905067ffffffffffffffff811115611bc257611bc16117db565b5b602083019150836020820283011115611bde57611bdd6117e0565b5b9250929050565b60008083601f840112611bfb57611bfa6117d6565b5b8235905067ffffffffffffffff811115611c1857611c176117db565b5b602083019150836020820283011115611c3457611c336117e0565b5b9250929050565b600080600080600080600080600060c08a8c031215611c5d57611c5c611738565b5b60008a013567ffffffffffffffff811115611c7b57611c7a61173d565b5b611c878c828d01611b39565b995099505060208a013567ffffffffffffffff811115611caa57611ca961173d565b5b611cb68c828d01611b8f565b975097505060408a013567ffffffffffffffff811115611cd957611cd861173d565b5b611ce58c828d01611be5565b95509550506060611cf88c828d0161185c565b9350506080611d098c828d0161185c565b92505060a0611d1a8c828d016117c1565b9150509295985092959850929598565b60008060008060008060008060a0898b031215611d4a57611d49611738565b5b600089013567ffffffffffffffff811115611d6857611d6761173d565b5b611d748b828c01611b39565b9850985050602089013567ffffffffffffffff811115611d9757611d9661173d565b5b611da38b828c01611b8f565b9650965050604089013567ffffffffffffffff811115611dc657611dc561173d565b5b611dd28b828c01611be5565b94509450506060611de58b828c0161185c565b9250506080611df68b828c0161185c565b9150509295985092959890939650565b611e0f816117a0565b82525050565b6000602082019050611e2a6000830184611e06565b92915050565b611e3981611762565b82525050565b600082825260208201905092915050565b82818337600083830152505050565b6000601f19601f8301169050919050565b6000611e7c8385611e3f565b9350611e89838584611e50565b611e9283611e5f565b840190509392505050565b600060a082019050611eb26000830189611e30565b611ebf6020830188611e06565b8181036040830152611ed2818688611e70565b9050611ee160608301856119db565b611eee6080830184611e06565b979650505050505050565b600082825260208201905092915050565b7f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560008201527f20726f6c657320666f722073656c660000000000000000000000000000000000602082015250565b6000611f66602f83611ef9565b9150611f7182611f0a565b604082019050919050565b60006020820190508181036000830152611f9581611f59565b9050919050565b7f54696d656c6f636b436f6e74726f6c6c65723a2063616c6c6572206d7573742060008201527f62652074696d656c6f636b000000000000000000000000000000000000000000602082015250565b6000611ff8602b83611ef9565b915061200382611f9c565b604082019050919050565b6000602082019050818103600083015261202781611feb565b9050919050565b60006040820190506120436000830185611e06565b6120506020830184611e06565b9392505050565b600060a08201905061206c6000830189611e30565b6120796020830188611e06565b818103604083015261208c818688611e70565b905061209b60608301856119db565b6120a860808301846119db565b979650505050505050565b7f54696d656c6f636b436f6e74726f6c6c65723a206c656e677468206d69736d6160008201527f7463680000000000000000000000000000000000000000000000000000000000602082015250565b600061210f602383611ef9565b915061211a826120b3565b604082019050919050565b6000602082019050818103600083015261213e81612102565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60006020828403121561218a57612189611738565b5b60006121988482850161178b565b91505092915050565b600080fd5b600080fd5b600080fd5b600080833560016020038436030381126121cd576121cc6121a1565b5b80840192508235915067ffffffffffffffff8211156121ef576121ee6121a6565b5b60208301925060018202360383131561220b5761220a6121ab565b5b509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061224d826117a0565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156122805761227f612213565b5b600182019050919050565b600082825260208201905092915050565b6000819050919050565b6122af81611762565b82525050565b60006122c183836122a6565b60208301905092915050565b60006122dc602084018461178b565b905092915050565b6000602082019050919050565b60006122fd838561228b565b93506123088261229c565b8060005b858110156123415761231e82846122cd565b61232888826122b5565b9750612333836122e4565b92505060018101905061230c565b5085925050509392505050565b600082825260208201905092915050565b600080fd5b6000612370838561234e565b93507f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8311156123a3576123a261235f565b5b6020830292506123b4838584611e50565b82840190509392505050565b600082825260208201905092915050565b6000819050919050565b600082825260208201905092915050565b60006123f883856123db565b9350612405838584611e50565b61240e83611e5f565b840190509392505050565b60006124268484846123ec565b90509392505050565b600080fd5b600080fd5b600080fd5b6000808335600160200384360303811261245b5761245a612439565b5b83810192508235915060208301925067ffffffffffffffff8211156124835761248261242f565b5b60018202360384131561249957612498612434565b5b509250929050565b6000602082019050919050565b60006124ba83856123c0565b9350836020840285016124cc846123d1565b8060005b878110156125125784840389526124e7828461243e565b6124f2868284612419565b95506124fd846124a1565b935060208b019a5050506001810190506124d0565b50829750879450505050509392505050565b600060a082019050818103600083015261253f818a8c6122f1565b9050818103602083015261255481888a612364565b905081810360408301526125698186886124ae565b905061257860608301856119db565b61258560808301846119db565b9998505050505050505050565b7f54696d656c6f636b436f6e74726f6c6c65723a206f7065726174696f6e20636160008201527f6e6e6f742062652063616e63656c6c6564000000000000000000000000000000602082015250565b60006125ee603183611ef9565b91506125f982612592565b604082019050919050565b6000602082019050818103600083015261261d816125e1565b9050919050565b7f54696d656c6f636b436f6e74726f6c6c65723a206f7065726174696f6e20616c60008201527f7265616479207363686564756c65640000000000000000000000000000000000602082015250565b6000612680602f83611ef9565b915061268b82612624565b604082019050919050565b600060208201905081810360008301526126af81612673565b9050919050565b7f54696d656c6f636b436f6e74726f6c6c65723a20696e73756666696369656e7460008201527f2064656c61790000000000000000000000000000000000000000000000000000602082015250565b6000612712602683611ef9565b915061271d826126b6565b604082019050919050565b6000602082019050818103600083015261274181612705565b9050919050565b6000612753826117a0565b915061275e836117a0565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561279357612792612213565b5b828201905092915050565b600081905092915050565b7f416363657373436f6e74726f6c3a206163636f756e7420000000000000000000600082015250565b60006127df60178361279e565b91506127ea826127a9565b601782019050919050565b600081519050919050565b60005b8381101561281e578082015181840152602081019050612803565b8381111561282d576000848401525b50505050565b600061283e826127f5565b612848818561279e565b9350612858818560208601612800565b80840191505092915050565b7f206973206d697373696e6720726f6c6520000000000000000000000000000000600082015250565b600061289a60118361279e565b91506128a582612864565b601182019050919050565b60006128bb826127d2565b91506128c78285612833565b91506128d28261288d565b91506128de8284612833565b91508190509392505050565b60006128f5826127f5565b6128ff8185611ef9565b935061290f818560208601612800565b61291881611e5f565b840191505092915050565b6000602082019050818103600083015261293d81846128ea565b905092915050565b7f54696d656c6f636b436f6e74726f6c6c65723a206f7065726174696f6e20697360008201527f206e6f7420726561647900000000000000000000000000000000000000000000602082015250565b60006129a1602a83611ef9565b91506129ac82612945565b604082019050919050565b600060208201905081810360008301526129d081612994565b9050919050565b7f54696d656c6f636b436f6e74726f6c6c65723a206d697373696e67206465706560008201527f6e64656e63790000000000000000000000000000000000000000000000000000602082015250565b6000612a33602683611ef9565b9150612a3e826129d7565b604082019050919050565b60006020820190508181036000830152612a6281612a26565b9050919050565b600081905092915050565b6000612a808385612a69565b9350612a8d838584611e50565b82840190509392505050565b6000612aa6828486612a74565b91508190509392505050565b7f54696d656c6f636b436f6e74726f6c6c65723a20756e6465726c79696e67207460008201527f72616e73616374696f6e20726576657274656400000000000000000000000000602082015250565b6000612b0e603383611ef9565b9150612b1982612ab2565b604082019050919050565b60006020820190508181036000830152612b3d81612b01565b9050919050565b6000606082019050612b596000830187611e30565b612b666020830186611e06565b8181036040830152612b79818486611e70565b905095945050505050565b6000612b8f826117a0565b9150612b9a836117a0565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615612bd357612bd2612213565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000612c18826117a0565b91506000821415612c2c57612c2b612213565b5b600182039050919050565b7f537472696e67733a20686578206c656e67746820696e73756666696369656e74600082015250565b6000612c6d602083611ef9565b9150612c7882612c37565b602082019050919050565b60006020820190508181036000830152612c9c81612c60565b905091905056fea2646970667358221220a79547a2cff00ab3e9747373ebd172133df6ff2641f204dd67b41b4c9855e9d764736f6c634300080a0033000000000000000000000000000000000000000000000000000000000000003c000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000001000000000000000000000000addea7933db7d83855786eb43a238111c69b00b60000000000000000000000000000000000000000000000000000000000000001000000000000000000000000addea7933db7d83855786eb43a238111c69b00b6
Deployed Bytecode
0x60806040526004361061016a5760003560e01c806364d62353116100d1578063b08e51c01161008a578063d45c443511610064578063d45c443514610584578063d547741f146105c1578063e38335e5146105ea578063f27a0c921461060657610171565b8063b08e51c0146104f3578063b1c5f4271461051e578063c4d252f51461055b57610171565b806364d62353146103d15780638065657f146103fa5780638f2a0bb0146104375780638f61f4f51461046057806391d148541461048b578063a217fddf146104c857610171565b8063248a9ca311610123578063248a9ca31461028b5780632ab0f529146102c85780632f2ff15d1461030557806331d507501461032e57806336568abe1461036b578063584b153e1461039457610171565b806301d5062a1461017657806301ffc9a71461019f57806307bd0265146101dc5780630d3cf6fc14610207578063134008d31461023257806313bc9f201461024e57610171565b3661017157005b600080fd5b34801561018257600080fd5b5061019d60048036038101906101989190611871565b610631565b005b3480156101ab57600080fd5b506101c660048036038101906101c19190611978565b6106c6565b6040516101d391906119c0565b60405180910390f35b3480156101e857600080fd5b506101f1610740565b6040516101fe91906119ea565b60405180910390f35b34801561021357600080fd5b5061021c610764565b60405161022991906119ea565b60405180910390f35b61024c60048036038101906102479190611a05565b610788565b005b34801561025a57600080fd5b5061027560048036038101906102709190611a9f565b610808565b60405161028291906119c0565b60405180910390f35b34801561029757600080fd5b506102b260048036038101906102ad9190611a9f565b61082e565b6040516102bf91906119ea565b60405180910390f35b3480156102d457600080fd5b506102ef60048036038101906102ea9190611a9f565b61084d565b6040516102fc91906119c0565b60405180910390f35b34801561031157600080fd5b5061032c60048036038101906103279190611acc565b610862565b005b34801561033a57600080fd5b5061035560048036038101906103509190611a9f565b610883565b60405161036291906119c0565b60405180910390f35b34801561037757600080fd5b50610392600480360381019061038d9190611acc565b610897565b005b3480156103a057600080fd5b506103bb60048036038101906103b69190611a9f565b61091a565b6040516103c891906119c0565b60405180910390f35b3480156103dd57600080fd5b506103f860048036038101906103f39190611b0c565b61092f565b005b34801561040657600080fd5b50610421600480360381019061041c9190611a05565b6109e2565b60405161042e91906119ea565b60405180910390f35b34801561044357600080fd5b5061045e60048036038101906104599190611c3b565b610a21565b005b34801561046c57600080fd5b50610475610bcc565b60405161048291906119ea565b60405180910390f35b34801561049757600080fd5b506104b260048036038101906104ad9190611acc565b610bf0565b6040516104bf91906119c0565b60405180910390f35b3480156104d457600080fd5b506104dd610c5a565b6040516104ea91906119ea565b60405180910390f35b3480156104ff57600080fd5b50610508610c61565b60405161051591906119ea565b60405180910390f35b34801561052a57600080fd5b5061054560048036038101906105409190611d2a565b610c85565b60405161055291906119ea565b60405180910390f35b34801561056757600080fd5b50610582600480360381019061057d9190611a9f565b610cca565b005b34801561059057600080fd5b506105ab60048036038101906105a69190611a9f565b610d84565b6040516105b89190611e15565b60405180910390f35b3480156105cd57600080fd5b506105e860048036038101906105e39190611acc565b610da1565b005b61060460048036038101906105ff9190611d2a565b610dc2565b005b34801561061257600080fd5b5061061b610f58565b6040516106289190611e15565b60405180910390f35b7fb09aa5aeb3702cfd50b6b62bc4532604938f21248a27a1d5ca736082b6819cc161065b81610f62565b600061066b8989898989896109e2565b90506106778184610f76565b6000817f4cf4410cc57040e44862ef0f45f3dd5a5e02db8eb8add648d4b0e236f1d07dca8b8b8b8b8b8a6040516106b396959493929190611e9d565b60405180910390a3505050505050505050565b60007f7965db0b000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480610739575061073882611030565b5b9050919050565b7fd8aa0f3194971a2a116679f7c2090f6939c8d4e01a2a8d7e41d55e5351469e6381565b7f5f58e3a2316349923ce3780f8d587db2d72378aed66a8261c916544fa6846ca581565b7fd8aa0f3194971a2a116679f7c2090f6939c8d4e01a2a8d7e41d55e5351469e636107b4816000610bf0565b6107ca576107c9816107c461109a565b6110a2565b5b60006107da8888888888886109e2565b90506107e6818561113f565b6107f58160008a8a8a8a6111e0565b6107fe816112d8565b5050505050505050565b60008061081483610d84565b90506001811180156108265750428111155b915050919050565b6000806000838152602001908152602001600020600101549050919050565b6000600161085a83610d84565b149050919050565b61086b8261082e565b61087481610f62565b61087e838361133b565b505050565b60008061088f83610d84565b119050919050565b61089f61109a565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161461090c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161090390611f7c565b60405180910390fd5b610916828261141b565b5050565b6000600161092783610d84565b119050919050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461099d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109949061200e565b60405180910390fd5b7f11c24f4ead16507c69ac467fbd5e4eed5fb5c699626d2cc6d66421df253886d5600254826040516109d092919061202e565b60405180910390a18060028190555050565b60008686868686866040516020016109ff96959493929190612057565b6040516020818303038152906040528051906020012090509695505050505050565b7fb09aa5aeb3702cfd50b6b62bc4532604938f21248a27a1d5ca736082b6819cc1610a4b81610f62565b878790508a8a905014610a93576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a8a90612125565b60405180910390fd5b858590508a8a905014610adb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ad290612125565b60405180910390fd5b6000610aed8b8b8b8b8b8b8b8b610c85565b9050610af98184610f76565b60005b8b8b9050811015610bbe5780827f4cf4410cc57040e44862ef0f45f3dd5a5e02db8eb8add648d4b0e236f1d07dca8e8e85818110610b3d57610b3c612145565b5b9050602002016020810190610b529190612174565b8d8d86818110610b6557610b64612145565b5b905060200201358c8c87818110610b7f57610b7e612145565b5b9050602002810190610b9191906121b0565b8c8b604051610ba596959493929190611e9d565b60405180910390a380610bb790612242565b9050610afc565b505050505050505050505050565b7fb09aa5aeb3702cfd50b6b62bc4532604938f21248a27a1d5ca736082b6819cc181565b600080600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b6000801b81565b7ffd643c72710c63c0180259aba6b2d05451e3591a24e58b62239378085726f78381565b60008888888888888888604051602001610ca6989796959493929190612524565b60405160208183030381529060405280519060200120905098975050505050505050565b7ffd643c72710c63c0180259aba6b2d05451e3591a24e58b62239378085726f783610cf481610f62565b610cfd8261091a565b610d3c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d3390612604565b60405180910390fd5b6001600083815260200190815260200160002060009055817fbaa1eb22f2a492ba1a5fea61b8df4d27c6c8b5f3971e63bb58fa14ff72eedb7060405160405180910390a25050565b600060016000838152602001908152602001600020549050919050565b610daa8261082e565b610db381610f62565b610dbd838361141b565b505050565b7fd8aa0f3194971a2a116679f7c2090f6939c8d4e01a2a8d7e41d55e5351469e63610dee816000610bf0565b610e0457610e0381610dfe61109a565b6110a2565b5b868690508989905014610e4c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e4390612125565b60405180910390fd5b848490508989905014610e94576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e8b90612125565b60405180910390fd5b6000610ea68a8a8a8a8a8a8a8a610c85565b9050610eb2818561113f565b60005b8a8a9050811015610f4257610f3182828d8d85818110610ed857610ed7612145565b5b9050602002016020810190610eed9190612174565b8c8c86818110610f0057610eff612145565b5b905060200201358b8b87818110610f1a57610f19612145565b5b9050602002810190610f2c91906121b0565b6111e0565b80610f3b90612242565b9050610eb5565b50610f4c816112d8565b50505050505050505050565b6000600254905090565b610f7381610f6e61109a565b6110a2565b50565b610f7f82610883565b15610fbf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fb690612696565b60405180910390fd5b610fc7610f58565b811015611009576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161100090612728565b60405180910390fd5b80426110159190612748565b60016000848152602001908152602001600020819055505050565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b600033905090565b6110ac8282610bf0565b61113b576110d18173ffffffffffffffffffffffffffffffffffffffff1660146114fc565b6110df8360001c60206114fc565b6040516020016110f09291906128b0565b6040516020818303038152906040526040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111329190612923565b60405180910390fd5b5050565b61114882610808565b611187576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161117e906129b7565b60405180910390fd5b6000801b81148061119d575061119c8161084d565b5b6111dc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111d390612a49565b60405180910390fd5b5050565b60008473ffffffffffffffffffffffffffffffffffffffff1684848460405161120a929190612a99565b60006040518083038185875af1925050503d8060008114611247576040519150601f19603f3d011682016040523d82523d6000602084013e61124c565b606091505b5050905080611290576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161128790612b24565b60405180910390fd5b85877fc2617efa69bab66782fa219543714338489c4e9e178271560a91b82c3f612b58878787876040516112c79493929190612b44565b60405180910390a350505050505050565b6112e181610808565b611320576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611317906129b7565b60405180910390fd5b60018060008381526020019081526020016000208190555050565b6113458282610bf0565b61141757600160008084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506113bc61109a565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45b5050565b6114258282610bf0565b156114f857600080600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555061149d61109a565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16837ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b60405160405180910390a45b5050565b60606000600283600261150f9190612b84565b6115199190612748565b67ffffffffffffffff81111561153257611531612bde565b5b6040519080825280601f01601f1916602001820160405280156115645781602001600182028036833780820191505090505b5090507f30000000000000000000000000000000000000000000000000000000000000008160008151811061159c5761159b612145565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053507f780000000000000000000000000000000000000000000000000000000000000081600181518110611600576115ff612145565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600060018460026116409190612b84565b61164a9190612748565b90505b60018111156116ea577f3031323334353637383961626364656600000000000000000000000000000000600f86166010811061168c5761168b612145565b5b1a60f81b8282815181106116a3576116a2612145565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600485901c9450806116e390612c0d565b905061164d565b506000841461172e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161172590612c83565b60405180910390fd5b8091505092915050565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061176d82611742565b9050919050565b61177d81611762565b811461178857600080fd5b50565b60008135905061179a81611774565b92915050565b6000819050919050565b6117b3816117a0565b81146117be57600080fd5b50565b6000813590506117d0816117aa565b92915050565b600080fd5b600080fd5b600080fd5b60008083601f8401126117fb576117fa6117d6565b5b8235905067ffffffffffffffff811115611818576118176117db565b5b602083019150836001820283011115611834576118336117e0565b5b9250929050565b6000819050919050565b61184e8161183b565b811461185957600080fd5b50565b60008135905061186b81611845565b92915050565b600080600080600080600060c0888a0312156118905761188f611738565b5b600061189e8a828b0161178b565b97505060206118af8a828b016117c1565b965050604088013567ffffffffffffffff8111156118d0576118cf61173d565b5b6118dc8a828b016117e5565b955095505060606118ef8a828b0161185c565b93505060806119008a828b0161185c565b92505060a06119118a828b016117c1565b91505092959891949750929550565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b61195581611920565b811461196057600080fd5b50565b6000813590506119728161194c565b92915050565b60006020828403121561198e5761198d611738565b5b600061199c84828501611963565b91505092915050565b60008115159050919050565b6119ba816119a5565b82525050565b60006020820190506119d560008301846119b1565b92915050565b6119e48161183b565b82525050565b60006020820190506119ff60008301846119db565b92915050565b60008060008060008060a08789031215611a2257611a21611738565b5b6000611a3089828a0161178b565b9650506020611a4189828a016117c1565b955050604087013567ffffffffffffffff811115611a6257611a6161173d565b5b611a6e89828a016117e5565b94509450506060611a8189828a0161185c565b9250506080611a9289828a0161185c565b9150509295509295509295565b600060208284031215611ab557611ab4611738565b5b6000611ac38482850161185c565b91505092915050565b60008060408385031215611ae357611ae2611738565b5b6000611af18582860161185c565b9250506020611b028582860161178b565b9150509250929050565b600060208284031215611b2257611b21611738565b5b6000611b30848285016117c1565b91505092915050565b60008083601f840112611b4f57611b4e6117d6565b5b8235905067ffffffffffffffff811115611b6c57611b6b6117db565b5b602083019150836020820283011115611b8857611b876117e0565b5b9250929050565b60008083601f840112611ba557611ba46117d6565b5b8235905067ffffffffffffffff811115611bc257611bc16117db565b5b602083019150836020820283011115611bde57611bdd6117e0565b5b9250929050565b60008083601f840112611bfb57611bfa6117d6565b5b8235905067ffffffffffffffff811115611c1857611c176117db565b5b602083019150836020820283011115611c3457611c336117e0565b5b9250929050565b600080600080600080600080600060c08a8c031215611c5d57611c5c611738565b5b60008a013567ffffffffffffffff811115611c7b57611c7a61173d565b5b611c878c828d01611b39565b995099505060208a013567ffffffffffffffff811115611caa57611ca961173d565b5b611cb68c828d01611b8f565b975097505060408a013567ffffffffffffffff811115611cd957611cd861173d565b5b611ce58c828d01611be5565b95509550506060611cf88c828d0161185c565b9350506080611d098c828d0161185c565b92505060a0611d1a8c828d016117c1565b9150509295985092959850929598565b60008060008060008060008060a0898b031215611d4a57611d49611738565b5b600089013567ffffffffffffffff811115611d6857611d6761173d565b5b611d748b828c01611b39565b9850985050602089013567ffffffffffffffff811115611d9757611d9661173d565b5b611da38b828c01611b8f565b9650965050604089013567ffffffffffffffff811115611dc657611dc561173d565b5b611dd28b828c01611be5565b94509450506060611de58b828c0161185c565b9250506080611df68b828c0161185c565b9150509295985092959890939650565b611e0f816117a0565b82525050565b6000602082019050611e2a6000830184611e06565b92915050565b611e3981611762565b82525050565b600082825260208201905092915050565b82818337600083830152505050565b6000601f19601f8301169050919050565b6000611e7c8385611e3f565b9350611e89838584611e50565b611e9283611e5f565b840190509392505050565b600060a082019050611eb26000830189611e30565b611ebf6020830188611e06565b8181036040830152611ed2818688611e70565b9050611ee160608301856119db565b611eee6080830184611e06565b979650505050505050565b600082825260208201905092915050565b7f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560008201527f20726f6c657320666f722073656c660000000000000000000000000000000000602082015250565b6000611f66602f83611ef9565b9150611f7182611f0a565b604082019050919050565b60006020820190508181036000830152611f9581611f59565b9050919050565b7f54696d656c6f636b436f6e74726f6c6c65723a2063616c6c6572206d7573742060008201527f62652074696d656c6f636b000000000000000000000000000000000000000000602082015250565b6000611ff8602b83611ef9565b915061200382611f9c565b604082019050919050565b6000602082019050818103600083015261202781611feb565b9050919050565b60006040820190506120436000830185611e06565b6120506020830184611e06565b9392505050565b600060a08201905061206c6000830189611e30565b6120796020830188611e06565b818103604083015261208c818688611e70565b905061209b60608301856119db565b6120a860808301846119db565b979650505050505050565b7f54696d656c6f636b436f6e74726f6c6c65723a206c656e677468206d69736d6160008201527f7463680000000000000000000000000000000000000000000000000000000000602082015250565b600061210f602383611ef9565b915061211a826120b3565b604082019050919050565b6000602082019050818103600083015261213e81612102565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60006020828403121561218a57612189611738565b5b60006121988482850161178b565b91505092915050565b600080fd5b600080fd5b600080fd5b600080833560016020038436030381126121cd576121cc6121a1565b5b80840192508235915067ffffffffffffffff8211156121ef576121ee6121a6565b5b60208301925060018202360383131561220b5761220a6121ab565b5b509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061224d826117a0565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156122805761227f612213565b5b600182019050919050565b600082825260208201905092915050565b6000819050919050565b6122af81611762565b82525050565b60006122c183836122a6565b60208301905092915050565b60006122dc602084018461178b565b905092915050565b6000602082019050919050565b60006122fd838561228b565b93506123088261229c565b8060005b858110156123415761231e82846122cd565b61232888826122b5565b9750612333836122e4565b92505060018101905061230c565b5085925050509392505050565b600082825260208201905092915050565b600080fd5b6000612370838561234e565b93507f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8311156123a3576123a261235f565b5b6020830292506123b4838584611e50565b82840190509392505050565b600082825260208201905092915050565b6000819050919050565b600082825260208201905092915050565b60006123f883856123db565b9350612405838584611e50565b61240e83611e5f565b840190509392505050565b60006124268484846123ec565b90509392505050565b600080fd5b600080fd5b600080fd5b6000808335600160200384360303811261245b5761245a612439565b5b83810192508235915060208301925067ffffffffffffffff8211156124835761248261242f565b5b60018202360384131561249957612498612434565b5b509250929050565b6000602082019050919050565b60006124ba83856123c0565b9350836020840285016124cc846123d1565b8060005b878110156125125784840389526124e7828461243e565b6124f2868284612419565b95506124fd846124a1565b935060208b019a5050506001810190506124d0565b50829750879450505050509392505050565b600060a082019050818103600083015261253f818a8c6122f1565b9050818103602083015261255481888a612364565b905081810360408301526125698186886124ae565b905061257860608301856119db565b61258560808301846119db565b9998505050505050505050565b7f54696d656c6f636b436f6e74726f6c6c65723a206f7065726174696f6e20636160008201527f6e6e6f742062652063616e63656c6c6564000000000000000000000000000000602082015250565b60006125ee603183611ef9565b91506125f982612592565b604082019050919050565b6000602082019050818103600083015261261d816125e1565b9050919050565b7f54696d656c6f636b436f6e74726f6c6c65723a206f7065726174696f6e20616c60008201527f7265616479207363686564756c65640000000000000000000000000000000000602082015250565b6000612680602f83611ef9565b915061268b82612624565b604082019050919050565b600060208201905081810360008301526126af81612673565b9050919050565b7f54696d656c6f636b436f6e74726f6c6c65723a20696e73756666696369656e7460008201527f2064656c61790000000000000000000000000000000000000000000000000000602082015250565b6000612712602683611ef9565b915061271d826126b6565b604082019050919050565b6000602082019050818103600083015261274181612705565b9050919050565b6000612753826117a0565b915061275e836117a0565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561279357612792612213565b5b828201905092915050565b600081905092915050565b7f416363657373436f6e74726f6c3a206163636f756e7420000000000000000000600082015250565b60006127df60178361279e565b91506127ea826127a9565b601782019050919050565b600081519050919050565b60005b8381101561281e578082015181840152602081019050612803565b8381111561282d576000848401525b50505050565b600061283e826127f5565b612848818561279e565b9350612858818560208601612800565b80840191505092915050565b7f206973206d697373696e6720726f6c6520000000000000000000000000000000600082015250565b600061289a60118361279e565b91506128a582612864565b601182019050919050565b60006128bb826127d2565b91506128c78285612833565b91506128d28261288d565b91506128de8284612833565b91508190509392505050565b60006128f5826127f5565b6128ff8185611ef9565b935061290f818560208601612800565b61291881611e5f565b840191505092915050565b6000602082019050818103600083015261293d81846128ea565b905092915050565b7f54696d656c6f636b436f6e74726f6c6c65723a206f7065726174696f6e20697360008201527f206e6f7420726561647900000000000000000000000000000000000000000000602082015250565b60006129a1602a83611ef9565b91506129ac82612945565b604082019050919050565b600060208201905081810360008301526129d081612994565b9050919050565b7f54696d656c6f636b436f6e74726f6c6c65723a206d697373696e67206465706560008201527f6e64656e63790000000000000000000000000000000000000000000000000000602082015250565b6000612a33602683611ef9565b9150612a3e826129d7565b604082019050919050565b60006020820190508181036000830152612a6281612a26565b9050919050565b600081905092915050565b6000612a808385612a69565b9350612a8d838584611e50565b82840190509392505050565b6000612aa6828486612a74565b91508190509392505050565b7f54696d656c6f636b436f6e74726f6c6c65723a20756e6465726c79696e67207460008201527f72616e73616374696f6e20726576657274656400000000000000000000000000602082015250565b6000612b0e603383611ef9565b9150612b1982612ab2565b604082019050919050565b60006020820190508181036000830152612b3d81612b01565b9050919050565b6000606082019050612b596000830187611e30565b612b666020830186611e06565b8181036040830152612b79818486611e70565b905095945050505050565b6000612b8f826117a0565b9150612b9a836117a0565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615612bd357612bd2612213565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000612c18826117a0565b91506000821415612c2c57612c2b612213565b5b600182039050919050565b7f537472696e67733a20686578206c656e67746820696e73756666696369656e74600082015250565b6000612c6d602083611ef9565b9150612c7882612c37565b602082019050919050565b60006020820190508181036000830152612c9c81612c60565b905091905056fea2646970667358221220a79547a2cff00ab3e9747373ebd172133df6ff2641f204dd67b41b4c9855e9d764736f6c634300080a0033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
000000000000000000000000000000000000000000000000000000000000003c000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000001000000000000000000000000addea7933db7d83855786eb43a238111c69b00b60000000000000000000000000000000000000000000000000000000000000001000000000000000000000000addea7933db7d83855786eb43a238111c69b00b6
-----Decoded View---------------
Arg [0] : minDelay (uint256): 60
Arg [1] : proposers (address[]): 0xAdDEA7933Db7d83855786EB43a238111C69B00b6
Arg [2] : executors (address[]): 0xAdDEA7933Db7d83855786EB43a238111C69B00b6
-----Encoded View---------------
7 Constructor Arguments found :
Arg [0] : 000000000000000000000000000000000000000000000000000000000000003c
Arg [1] : 0000000000000000000000000000000000000000000000000000000000000060
Arg [2] : 00000000000000000000000000000000000000000000000000000000000000a0
Arg [3] : 0000000000000000000000000000000000000000000000000000000000000001
Arg [4] : 000000000000000000000000addea7933db7d83855786eb43a238111c69b00b6
Arg [5] : 0000000000000000000000000000000000000000000000000000000000000001
Arg [6] : 000000000000000000000000addea7933db7d83855786eb43a238111c69b00b6
Deployed Bytecode Sourcemap
28892:203:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23025:413;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10507:204;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16999:66;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16841:78;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25698:406;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20921:211;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12343:131;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21216:138;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12736:147;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20484:122;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13784:218;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20693:143;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;28616:240;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;22047:292;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23703:729;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16926:66;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10803:147;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9908:49;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17072:68;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22461:333;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24975:235;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;21507:123;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13128:149;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;26375:722;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;21823:105;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23025:413;16966:26;10399:16;10410:4;10399:10;:16::i;:::-;23256:10:::1;23269:53;23283:6;23291:5;23298:4;;23304:11;23317:4;23269:13;:53::i;:::-;23256:66;;23333:20;23343:2;23347:5;23333:9;:20::i;:::-;23387:1;23383:2;23369:61;23390:6;23398:5;23405:4;;23411:11;23424:5;23369:61;;;;;;;;;;;:::i;:::-;;;;;;;;23245:193;23025:413:::0;;;;;;;;:::o;10507:204::-;10592:4;10631:32;10616:47;;;:11;:47;;;;:87;;;;10667:36;10691:11;10667:23;:36::i;:::-;10616:87;10609:94;;10507:204;;;:::o;16999:66::-;17039:26;16999:66;:::o;16841:78::-;16887:32;16841:78;:::o;25698:406::-;17039:26;20083:25;20091:4;20105:1;20083:7;:25::i;:::-;20078:89;;20125:30;20136:4;20142:12;:10;:12::i;:::-;20125:10;:30::i;:::-;20078:89;25922:10:::1;25935:53;25949:6;25957:5;25964:4;;25970:11;25983:4;25935:13;:53::i;:::-;25922:66;;25999:28;26011:2;26015:11;25999;:28::i;:::-;26038:33;26044:2;26048:1;26051:6;26059:5;26066:4;;26038:5;:33::i;:::-;26082:14;26093:2;26082:10;:14::i;:::-;25911:193;25698:406:::0;;;;;;;:::o;20921:211::-;20988:10;21011:17;21031:16;21044:2;21031:12;:16::i;:::-;21011:36;;17199:1;21065:9;:27;:59;;;;;21109:15;21096:9;:28;;21065:59;21058:66;;;20921:211;;;:::o;12343:131::-;12417:7;12444:6;:12;12451:4;12444:12;;;;;;;;;;;:22;;;12437:29;;12343:131;;;:::o;21216:138::-;21282:9;17199:1;21311:16;21324:2;21311:12;:16::i;:::-;:35;21304:42;;21216:138;;;:::o;12736:147::-;12819:18;12832:4;12819:12;:18::i;:::-;10399:16;10410:4;10399:10;:16::i;:::-;12850:25:::1;12861:4;12867:7;12850:10;:25::i;:::-;12736:147:::0;;;:::o;20484:122::-;20546:12;20597:1;20578:16;20591:2;20578:12;:16::i;:::-;:20;20571:27;;20484:122;;;:::o;13784:218::-;13891:12;:10;:12::i;:::-;13880:23;;:7;:23;;;13872:83;;;;;;;;;;;;:::i;:::-;;;;;;;;;13968:26;13980:4;13986:7;13968:11;:26::i;:::-;13784:218;;:::o;20693:143::-;20762:12;17199:1;20794:16;20807:2;20794:12;:16::i;:::-;:34;20787:41;;20693:143;;;:::o;28616:240::-;28713:4;28691:27;;:10;:27;;;28683:83;;;;;;;;;;;;:::i;:::-;;;;;;;;;28782:35;28797:9;;28808:8;28782:35;;;;;;;:::i;:::-;;;;;;;;28840:8;28828:9;:20;;;;28616:240;:::o;22047:292::-;22238:12;22291:6;22299:5;22306:4;;22312:11;22325:4;22280:50;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;22270:61;;;;;;22263:68;;22047:292;;;;;;;;:::o;23703:729::-;16966:26;10399:16;10410:4;10399:10;:16::i;:::-;23995:6:::1;;:13;;23977:7;;:14;;:31;23969:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;24085:8;;:15;;24067:7;;:14;;:33;24059:81;;;;;;;;;;;;:::i;:::-;;;;;;;;;24153:10;24166:64;24185:7;;24194:6;;24202:8;;24212:11;24225:4;24166:18;:64::i;:::-;24153:77;;24241:20;24251:2;24255:5;24241:9;:20::i;:::-;24277:9;24272:153;24296:7;;:14;;24292:1;:18;24272:153;;;24355:1;24351:2;24337:76;24358:7;;24366:1;24358:10;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;24370:6;;24377:1;24370:9;;;;;;;:::i;:::-;;;;;;;;24381:8;;24390:1;24381:11;;;;;;;:::i;:::-;;;;;;;;;;;;;:::i;:::-;24394;24407:5;24337:76;;;;;;;;;;;:::i;:::-;;;;;;;;24312:3;;;;:::i;:::-;;;24272:153;;;;23958:474;23703:729:::0;;;;;;;;;;:::o;16926:66::-;16966:26;16926:66;:::o;10803:147::-;10889:4;10913:6;:12;10920:4;10913:12;;;;;;;;;;;:20;;:29;10934:7;10913:29;;;;;;;;;;;;;;;;;;;;;;;;;10906:36;;10803:147;;;;:::o;9908:49::-;9953:4;9908:49;;;:::o;17072:68::-;17113:27;17072:68;:::o;22461:333::-;22687:12;22740:7;;22749:6;;22757:8;;22767:11;22780:4;22729:56;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;22719:67;;;;;;22712:74;;22461:333;;;;;;;;;;:::o;24975:235::-;17113:27;10399:16;10410:4;10399:10;:16::i;:::-;25062:22:::1;25081:2;25062:18;:22::i;:::-;25054:84;;;;;;;;;;;;:::i;:::-;;;;;;;;;25156:11;:15;25168:2;25156:15;;;;;;;;;;;25149:22;;;25199:2;25189:13;;;;;;;;;;24975:235:::0;;:::o;21507:123::-;21570:17;21607:11;:15;21619:2;21607:15;;;;;;;;;;;;21600:22;;21507:123;;;:::o;13128:149::-;13212:18;13225:4;13212:12;:18::i;:::-;10399:16;10410:4;10399:10;:16::i;:::-;13243:26:::1;13255:4;13261:7;13243:11;:26::i;:::-;13128:149:::0;;;:::o;26375:722::-;17039:26;20083:25;20091:4;20105:1;20083:7;:25::i;:::-;20078:89;;20125:30;20136:4;20142:12;:10;:12::i;:::-;20125:10;:30::i;:::-;20078:89;26660:6:::1;;:13;;26642:7;;:14;;:31;26634:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;26750:8;;:15;;26732:7;;:14;;:33;26724:81;;;;;;;;;;;;:::i;:::-;;;;;;;;;26818:10;26831:64;26850:7;;26859:6;;26867:8;;26877:11;26890:4;26831:18;:64::i;:::-;26818:77;;26906:28;26918:2;26922:11;26906;:28::i;:::-;26950:9;26945:120;26969:7;;:14;;26965:1;:18;26945:120;;;27005:48;27011:2;27015:1;27018:7;;27026:1;27018:10;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;27030:6;;27037:1;27030:9;;;;;;;:::i;:::-;;;;;;;;27041:8;;27050:1;27041:11;;;;;;;:::i;:::-;;;;;;;;;;;;;:::i;:::-;27005:5;:48::i;:::-;26985:3;;;;:::i;:::-;;;26945:120;;;;27075:14;27086:2;27075:10;:14::i;:::-;26623:474;26375:722:::0;;;;;;;;;:::o;21823:105::-;21875:16;21911:9;;21904:16;;21823:105;:::o;11254:::-;11321:30;11332:4;11338:12;:10;:12::i;:::-;11321:10;:30::i;:::-;11254:105;:::o;24539:285::-;24613:15;24625:2;24613:11;:15::i;:::-;24612:16;24604:76;;;;;;;;;;;;:::i;:::-;;;;;;;;;24708:13;:11;:13::i;:::-;24699:5;:22;;24691:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;24811:5;24793:15;:23;;;;:::i;:::-;24775:11;:15;24787:2;24775:15;;;;;;;;;;;:41;;;;24539:285;;:::o;7796:157::-;7881:4;7920:25;7905:40;;;:11;:40;;;;7898:47;;7796:157;;;:::o;3744:98::-;3797:7;3824:10;3817:17;;3744:98;:::o;11649:505::-;11738:22;11746:4;11752:7;11738;:22::i;:::-;11733:414;;11926:41;11954:7;11926:41;;11964:2;11926:19;:41::i;:::-;12040:38;12068:4;12060:13;;12075:2;12040:19;:38::i;:::-;11831:270;;;;;;;;;:::i;:::-;;;;;;;;;;;;;11777:358;;;;;;;;;;;:::i;:::-;;;;;;;;11733:414;11649:505;;:::o;27185:280::-;27271:20;27288:2;27271:16;:20::i;:::-;27263:75;;;;;;;;;;;;:::i;:::-;;;;;;;;;27380:1;27372:10;;27357:11;:25;:57;;;;27386:28;27402:11;27386:15;:28::i;:::-;27357:57;27349:108;;;;;;;;;;;;:::i;:::-;;;;;;;;;27185:280;;:::o;27844:367::-;28010:12;28028:6;:11;;28047:5;28054:4;;28028:31;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;28009:50;;;28078:7;28070:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;28176:5;28172:2;28159:44;28183:6;28191:5;28198:4;;28159:44;;;;;;;;;:::i;:::-;;;;;;;;27998:213;27844:367;;;;;;:::o;27552:178::-;27611:20;27628:2;27611:16;:20::i;:::-;27603:75;;;;;;;;;;;;:::i;:::-;;;;;;;;;17199:1;27689:11;:15;27701:2;27689:15;;;;;;;;;;;:33;;;;27552:178;:::o;15285:238::-;15369:22;15377:4;15383:7;15369;:22::i;:::-;15364:152;;15440:4;15408:6;:12;15415:4;15408:12;;;;;;;;;;;:20;;:29;15429:7;15408:29;;;;;;;;;;;;;;;;:36;;;;;;;;;;;;;;;;;;15491:12;:10;:12::i;:::-;15464:40;;15482:7;15464:40;;15476:4;15464:40;;;;;;;;;;15364:152;15285:238;;:::o;15655:239::-;15739:22;15747:4;15753:7;15739;:22::i;:::-;15735:152;;;15810:5;15778:6;:12;15785:4;15778:12;;;;;;;;;;;:20;;:29;15799:7;15778:29;;;;;;;;;;;;;;;;:37;;;;;;;;;;;;;;;;;;15862:12;:10;:12::i;:::-;15835:40;;15853:7;15835:40;;15847:4;15835:40;;;;;;;;;;15735:152;15655:239;;:::o;5602:451::-;5677:13;5703:19;5748:1;5739:6;5735:1;:10;;;;:::i;:::-;:14;;;;:::i;:::-;5725:25;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5703:47;;5761:15;:6;5768:1;5761:9;;;;;;;;:::i;:::-;;;;;:15;;;;;;;;;;;5787;:6;5794:1;5787:9;;;;;;;;:::i;:::-;;;;;:15;;;;;;;;;;;5818:9;5843:1;5834:6;5830:1;:10;;;;:::i;:::-;:14;;;;:::i;:::-;5818:26;;5813:135;5850:1;5846;:5;5813:135;;;5885:12;5906:3;5898:5;:11;5885:25;;;;;;;:::i;:::-;;;;;5873:6;5880:1;5873:9;;;;;;;;:::i;:::-;;;;;:37;;;;;;;;;;;5935:1;5925:11;;;;;5853:3;;;;:::i;:::-;;;5813:135;;;;5975:1;5966:5;:10;5958:55;;;;;;;;;;;;:::i;:::-;;;;;;;;;6038:6;6024:21;;;5602:451;;;;:::o;88:117:1:-;197:1;194;187:12;211:117;320:1;317;310:12;334:126;371:7;411:42;404:5;400:54;389:65;;334:126;;;:::o;466:96::-;503:7;532:24;550:5;532:24;:::i;:::-;521:35;;466:96;;;:::o;568:122::-;641:24;659:5;641:24;:::i;:::-;634:5;631:35;621:63;;680:1;677;670:12;621:63;568:122;:::o;696:139::-;742:5;780:6;767:20;758:29;;796:33;823:5;796:33;:::i;:::-;696:139;;;;:::o;841:77::-;878:7;907:5;896:16;;841:77;;;:::o;924:122::-;997:24;1015:5;997:24;:::i;:::-;990:5;987:35;977:63;;1036:1;1033;1026:12;977:63;924:122;:::o;1052:139::-;1098:5;1136:6;1123:20;1114:29;;1152:33;1179:5;1152:33;:::i;:::-;1052:139;;;;:::o;1197:117::-;1306:1;1303;1296:12;1320:117;1429:1;1426;1419:12;1443:117;1552:1;1549;1542:12;1579:552;1636:8;1646:6;1696:3;1689:4;1681:6;1677:17;1673:27;1663:122;;1704:79;;:::i;:::-;1663:122;1817:6;1804:20;1794:30;;1847:18;1839:6;1836:30;1833:117;;;1869:79;;:::i;:::-;1833:117;1983:4;1975:6;1971:17;1959:29;;2037:3;2029:4;2021:6;2017:17;2007:8;2003:32;2000:41;1997:128;;;2044:79;;:::i;:::-;1997:128;1579:552;;;;;:::o;2137:77::-;2174:7;2203:5;2192:16;;2137:77;;;:::o;2220:122::-;2293:24;2311:5;2293:24;:::i;:::-;2286:5;2283:35;2273:63;;2332:1;2329;2322:12;2273:63;2220:122;:::o;2348:139::-;2394:5;2432:6;2419:20;2410:29;;2448:33;2475:5;2448:33;:::i;:::-;2348:139;;;;:::o;2493:1255::-;2608:6;2616;2624;2632;2640;2648;2656;2705:3;2693:9;2684:7;2680:23;2676:33;2673:120;;;2712:79;;:::i;:::-;2673:120;2832:1;2857:53;2902:7;2893:6;2882:9;2878:22;2857:53;:::i;:::-;2847:63;;2803:117;2959:2;2985:53;3030:7;3021:6;3010:9;3006:22;2985:53;:::i;:::-;2975:63;;2930:118;3115:2;3104:9;3100:18;3087:32;3146:18;3138:6;3135:30;3132:117;;;3168:79;;:::i;:::-;3132:117;3281:64;3337:7;3328:6;3317:9;3313:22;3281:64;:::i;:::-;3263:82;;;;3058:297;3394:2;3420:53;3465:7;3456:6;3445:9;3441:22;3420:53;:::i;:::-;3410:63;;3365:118;3522:3;3549:53;3594:7;3585:6;3574:9;3570:22;3549:53;:::i;:::-;3539:63;;3493:119;3651:3;3678:53;3723:7;3714:6;3703:9;3699:22;3678:53;:::i;:::-;3668:63;;3622:119;2493:1255;;;;;;;;;;:::o;3754:149::-;3790:7;3830:66;3823:5;3819:78;3808:89;;3754:149;;;:::o;3909:120::-;3981:23;3998:5;3981:23;:::i;:::-;3974:5;3971:34;3961:62;;4019:1;4016;4009:12;3961:62;3909:120;:::o;4035:137::-;4080:5;4118:6;4105:20;4096:29;;4134:32;4160:5;4134:32;:::i;:::-;4035:137;;;;:::o;4178:327::-;4236:6;4285:2;4273:9;4264:7;4260:23;4256:32;4253:119;;;4291:79;;:::i;:::-;4253:119;4411:1;4436:52;4480:7;4471:6;4460:9;4456:22;4436:52;:::i;:::-;4426:62;;4382:116;4178:327;;;;:::o;4511:90::-;4545:7;4588:5;4581:13;4574:21;4563:32;;4511:90;;;:::o;4607:109::-;4688:21;4703:5;4688:21;:::i;:::-;4683:3;4676:34;4607:109;;:::o;4722:210::-;4809:4;4847:2;4836:9;4832:18;4824:26;;4860:65;4922:1;4911:9;4907:17;4898:6;4860:65;:::i;:::-;4722:210;;;;:::o;4938:118::-;5025:24;5043:5;5025:24;:::i;:::-;5020:3;5013:37;4938:118;;:::o;5062:222::-;5155:4;5193:2;5182:9;5178:18;5170:26;;5206:71;5274:1;5263:9;5259:17;5250:6;5206:71;:::i;:::-;5062:222;;;;:::o;5290:1109::-;5396:6;5404;5412;5420;5428;5436;5485:3;5473:9;5464:7;5460:23;5456:33;5453:120;;;5492:79;;:::i;:::-;5453:120;5612:1;5637:53;5682:7;5673:6;5662:9;5658:22;5637:53;:::i;:::-;5627:63;;5583:117;5739:2;5765:53;5810:7;5801:6;5790:9;5786:22;5765:53;:::i;:::-;5755:63;;5710:118;5895:2;5884:9;5880:18;5867:32;5926:18;5918:6;5915:30;5912:117;;;5948:79;;:::i;:::-;5912:117;6061:64;6117:7;6108:6;6097:9;6093:22;6061:64;:::i;:::-;6043:82;;;;5838:297;6174:2;6200:53;6245:7;6236:6;6225:9;6221:22;6200:53;:::i;:::-;6190:63;;6145:118;6302:3;6329:53;6374:7;6365:6;6354:9;6350:22;6329:53;:::i;:::-;6319:63;;6273:119;5290:1109;;;;;;;;:::o;6405:329::-;6464:6;6513:2;6501:9;6492:7;6488:23;6484:32;6481:119;;;6519:79;;:::i;:::-;6481:119;6639:1;6664:53;6709:7;6700:6;6689:9;6685:22;6664:53;:::i;:::-;6654:63;;6610:117;6405:329;;;;:::o;6740:474::-;6808:6;6816;6865:2;6853:9;6844:7;6840:23;6836:32;6833:119;;;6871:79;;:::i;:::-;6833:119;6991:1;7016:53;7061:7;7052:6;7041:9;7037:22;7016:53;:::i;:::-;7006:63;;6962:117;7118:2;7144:53;7189:7;7180:6;7169:9;7165:22;7144:53;:::i;:::-;7134:63;;7089:118;6740:474;;;;;:::o;7220:329::-;7279:6;7328:2;7316:9;7307:7;7303:23;7299:32;7296:119;;;7334:79;;:::i;:::-;7296:119;7454:1;7479:53;7524:7;7515:6;7504:9;7500:22;7479:53;:::i;:::-;7469:63;;7425:117;7220:329;;;;:::o;7572:568::-;7645:8;7655:6;7705:3;7698:4;7690:6;7686:17;7682:27;7672:122;;7713:79;;:::i;:::-;7672:122;7826:6;7813:20;7803:30;;7856:18;7848:6;7845:30;7842:117;;;7878:79;;:::i;:::-;7842:117;7992:4;7984:6;7980:17;7968:29;;8046:3;8038:4;8030:6;8026:17;8016:8;8012:32;8009:41;8006:128;;;8053:79;;:::i;:::-;8006:128;7572:568;;;;;:::o;8163:::-;8236:8;8246:6;8296:3;8289:4;8281:6;8277:17;8273:27;8263:122;;8304:79;;:::i;:::-;8263:122;8417:6;8404:20;8394:30;;8447:18;8439:6;8436:30;8433:117;;;8469:79;;:::i;:::-;8433:117;8583:4;8575:6;8571:17;8559:29;;8637:3;8629:4;8621:6;8617:17;8607:8;8603:32;8600:41;8597:128;;;8644:79;;:::i;:::-;8597:128;8163:568;;;;;:::o;8752:579::-;8836:8;8846:6;8896:3;8889:4;8881:6;8877:17;8873:27;8863:122;;8904:79;;:::i;:::-;8863:122;9017:6;9004:20;8994:30;;9047:18;9039:6;9036:30;9033:117;;;9069:79;;:::i;:::-;9033:117;9183:4;9175:6;9171:17;9159:29;;9237:3;9229:4;9221:6;9217:17;9207:8;9203:32;9200:41;9197:128;;;9244:79;;:::i;:::-;9197:128;8752:579;;;;;:::o;9337:1769::-;9533:6;9541;9549;9557;9565;9573;9581;9589;9597;9646:3;9634:9;9625:7;9621:23;9617:33;9614:120;;;9653:79;;:::i;:::-;9614:120;9801:1;9790:9;9786:17;9773:31;9831:18;9823:6;9820:30;9817:117;;;9853:79;;:::i;:::-;9817:117;9966:80;10038:7;10029:6;10018:9;10014:22;9966:80;:::i;:::-;9948:98;;;;9744:312;10123:2;10112:9;10108:18;10095:32;10154:18;10146:6;10143:30;10140:117;;;10176:79;;:::i;:::-;10140:117;10289:80;10361:7;10352:6;10341:9;10337:22;10289:80;:::i;:::-;10271:98;;;;10066:313;10446:2;10435:9;10431:18;10418:32;10477:18;10469:6;10466:30;10463:117;;;10499:79;;:::i;:::-;10463:117;10612:91;10695:7;10686:6;10675:9;10671:22;10612:91;:::i;:::-;10594:109;;;;10389:324;10752:2;10778:53;10823:7;10814:6;10803:9;10799:22;10778:53;:::i;:::-;10768:63;;10723:118;10880:3;10907:53;10952:7;10943:6;10932:9;10928:22;10907:53;:::i;:::-;10897:63;;10851:119;11009:3;11036:53;11081:7;11072:6;11061:9;11057:22;11036:53;:::i;:::-;11026:63;;10980:119;9337:1769;;;;;;;;;;;:::o;11112:1623::-;11299:6;11307;11315;11323;11331;11339;11347;11355;11404:3;11392:9;11383:7;11379:23;11375:33;11372:120;;;11411:79;;:::i;:::-;11372:120;11559:1;11548:9;11544:17;11531:31;11589:18;11581:6;11578:30;11575:117;;;11611:79;;:::i;:::-;11575:117;11724:80;11796:7;11787:6;11776:9;11772:22;11724:80;:::i;:::-;11706:98;;;;11502:312;11881:2;11870:9;11866:18;11853:32;11912:18;11904:6;11901:30;11898:117;;;11934:79;;:::i;:::-;11898:117;12047:80;12119:7;12110:6;12099:9;12095:22;12047:80;:::i;:::-;12029:98;;;;11824:313;12204:2;12193:9;12189:18;12176:32;12235:18;12227:6;12224:30;12221:117;;;12257:79;;:::i;:::-;12221:117;12370:91;12453:7;12444:6;12433:9;12429:22;12370:91;:::i;:::-;12352:109;;;;12147:324;12510:2;12536:53;12581:7;12572:6;12561:9;12557:22;12536:53;:::i;:::-;12526:63;;12481:118;12638:3;12665:53;12710:7;12701:6;12690:9;12686:22;12665:53;:::i;:::-;12655:63;;12609:119;11112:1623;;;;;;;;;;;:::o;12741:118::-;12828:24;12846:5;12828:24;:::i;:::-;12823:3;12816:37;12741:118;;:::o;12865:222::-;12958:4;12996:2;12985:9;12981:18;12973:26;;13009:71;13077:1;13066:9;13062:17;13053:6;13009:71;:::i;:::-;12865:222;;;;:::o;13093:118::-;13180:24;13198:5;13180:24;:::i;:::-;13175:3;13168:37;13093:118;;:::o;13217:168::-;13300:11;13334:6;13329:3;13322:19;13374:4;13369:3;13365:14;13350:29;;13217:168;;;;:::o;13391:154::-;13475:6;13470:3;13465;13452:30;13537:1;13528:6;13523:3;13519:16;13512:27;13391:154;;;:::o;13551:102::-;13592:6;13643:2;13639:7;13634:2;13627:5;13623:14;13619:28;13609:38;;13551:102;;;:::o;13681:301::-;13777:3;13798:70;13861:6;13856:3;13798:70;:::i;:::-;13791:77;;13878:43;13914:6;13909:3;13902:5;13878:43;:::i;:::-;13946:29;13968:6;13946:29;:::i;:::-;13941:3;13937:39;13930:46;;13681:301;;;;;:::o;13988:771::-;14221:4;14259:3;14248:9;14244:19;14236:27;;14273:71;14341:1;14330:9;14326:17;14317:6;14273:71;:::i;:::-;14354:72;14422:2;14411:9;14407:18;14398:6;14354:72;:::i;:::-;14473:9;14467:4;14463:20;14458:2;14447:9;14443:18;14436:48;14501:86;14582:4;14573:6;14565;14501:86;:::i;:::-;14493:94;;14597:72;14665:2;14654:9;14650:18;14641:6;14597:72;:::i;:::-;14679:73;14747:3;14736:9;14732:19;14723:6;14679:73;:::i;:::-;13988:771;;;;;;;;;:::o;14765:169::-;14849:11;14883:6;14878:3;14871:19;14923:4;14918:3;14914:14;14899:29;;14765:169;;;;:::o;14940:234::-;15080:34;15076:1;15068:6;15064:14;15057:58;15149:17;15144:2;15136:6;15132:15;15125:42;14940:234;:::o;15180:366::-;15322:3;15343:67;15407:2;15402:3;15343:67;:::i;:::-;15336:74;;15419:93;15508:3;15419:93;:::i;:::-;15537:2;15532:3;15528:12;15521:19;;15180:366;;;:::o;15552:419::-;15718:4;15756:2;15745:9;15741:18;15733:26;;15805:9;15799:4;15795:20;15791:1;15780:9;15776:17;15769:47;15833:131;15959:4;15833:131;:::i;:::-;15825:139;;15552:419;;;:::o;15977:230::-;16117:34;16113:1;16105:6;16101:14;16094:58;16186:13;16181:2;16173:6;16169:15;16162:38;15977:230;:::o;16213:366::-;16355:3;16376:67;16440:2;16435:3;16376:67;:::i;:::-;16369:74;;16452:93;16541:3;16452:93;:::i;:::-;16570:2;16565:3;16561:12;16554:19;;16213:366;;;:::o;16585:419::-;16751:4;16789:2;16778:9;16774:18;16766:26;;16838:9;16832:4;16828:20;16824:1;16813:9;16809:17;16802:47;16866:131;16992:4;16866:131;:::i;:::-;16858:139;;16585:419;;;:::o;17010:332::-;17131:4;17169:2;17158:9;17154:18;17146:26;;17182:71;17250:1;17239:9;17235:17;17226:6;17182:71;:::i;:::-;17263:72;17331:2;17320:9;17316:18;17307:6;17263:72;:::i;:::-;17010:332;;;;;:::o;17348:771::-;17581:4;17619:3;17608:9;17604:19;17596:27;;17633:71;17701:1;17690:9;17686:17;17677:6;17633:71;:::i;:::-;17714:72;17782:2;17771:9;17767:18;17758:6;17714:72;:::i;:::-;17833:9;17827:4;17823:20;17818:2;17807:9;17803:18;17796:48;17861:86;17942:4;17933:6;17925;17861:86;:::i;:::-;17853:94;;17957:72;18025:2;18014:9;18010:18;18001:6;17957:72;:::i;:::-;18039:73;18107:3;18096:9;18092:19;18083:6;18039:73;:::i;:::-;17348:771;;;;;;;;;:::o;18125:222::-;18265:34;18261:1;18253:6;18249:14;18242:58;18334:5;18329:2;18321:6;18317:15;18310:30;18125:222;:::o;18353:366::-;18495:3;18516:67;18580:2;18575:3;18516:67;:::i;:::-;18509:74;;18592:93;18681:3;18592:93;:::i;:::-;18710:2;18705:3;18701:12;18694:19;;18353:366;;;:::o;18725:419::-;18891:4;18929:2;18918:9;18914:18;18906:26;;18978:9;18972:4;18968:20;18964:1;18953:9;18949:17;18942:47;19006:131;19132:4;19006:131;:::i;:::-;18998:139;;18725:419;;;:::o;19150:180::-;19198:77;19195:1;19188:88;19295:4;19292:1;19285:15;19319:4;19316:1;19309:15;19336:329;19395:6;19444:2;19432:9;19423:7;19419:23;19415:32;19412:119;;;19450:79;;:::i;:::-;19412:119;19570:1;19595:53;19640:7;19631:6;19620:9;19616:22;19595:53;:::i;:::-;19585:63;;19541:117;19336:329;;;;:::o;19671:117::-;19780:1;19777;19770:12;19794:117;19903:1;19900;19893:12;19917:117;20026:1;20023;20016:12;20040:724;20117:4;20123:6;20179:11;20166:25;20279:1;20273:4;20269:12;20258:8;20242:14;20238:29;20234:48;20214:18;20210:73;20200:168;;20287:79;;:::i;:::-;20200:168;20399:18;20389:8;20385:33;20377:41;;20451:4;20438:18;20428:28;;20479:18;20471:6;20468:30;20465:117;;;20501:79;;:::i;:::-;20465:117;20609:2;20603:4;20599:13;20591:21;;20666:4;20658:6;20654:17;20638:14;20634:38;20628:4;20624:49;20621:136;;;20676:79;;:::i;:::-;20621:136;20130:634;20040:724;;;;;:::o;20770:180::-;20818:77;20815:1;20808:88;20915:4;20912:1;20905:15;20939:4;20936:1;20929:15;20956:233;20995:3;21018:24;21036:5;21018:24;:::i;:::-;21009:33;;21064:66;21057:5;21054:77;21051:103;;;21134:18;;:::i;:::-;21051:103;21181:1;21174:5;21170:13;21163:20;;20956:233;;;:::o;21195:184::-;21294:11;21328:6;21323:3;21316:19;21368:4;21363:3;21359:14;21344:29;;21195:184;;;;:::o;21385:102::-;21454:4;21477:3;21469:11;;21385:102;;;:::o;21493:108::-;21570:24;21588:5;21570:24;:::i;:::-;21565:3;21558:37;21493:108;;:::o;21607:179::-;21676:10;21697:46;21739:3;21731:6;21697:46;:::i;:::-;21775:4;21770:3;21766:14;21752:28;;21607:179;;;;:::o;21792:122::-;21844:5;21869:39;21904:2;21899:3;21895:12;21890:3;21869:39;:::i;:::-;21860:48;;21792:122;;;;:::o;21920:115::-;21992:4;22024;22019:3;22015:14;22007:22;;21920:115;;;:::o;22071:699::-;22200:3;22223:86;22302:6;22297:3;22223:86;:::i;:::-;22216:93;;22333:58;22385:5;22333:58;:::i;:::-;22414:7;22445:1;22430:315;22455:6;22452:1;22449:13;22430:315;;;22525:42;22560:6;22551:7;22525:42;:::i;:::-;22587:63;22646:3;22631:13;22587:63;:::i;:::-;22580:70;;22673:62;22728:6;22673:62;:::i;:::-;22663:72;;22490:255;22477:1;22474;22470:9;22465:14;;22430:315;;;22434:14;22761:3;22754:10;;22205:565;;22071:699;;;;;:::o;22776:184::-;22875:11;22909:6;22904:3;22897:19;22949:4;22944:3;22940:14;22925:29;;22776:184;;;;:::o;22966:117::-;23075:1;23072;23065:12;23119:537;23247:3;23268:86;23347:6;23342:3;23268:86;:::i;:::-;23261:93;;23378:66;23370:6;23367:78;23364:165;;;23448:79;;:::i;:::-;23364:165;23560:4;23552:6;23548:17;23538:27;;23575:43;23611:6;23606:3;23599:5;23575:43;:::i;:::-;23643:6;23638:3;23634:16;23627:23;;23119:537;;;;;:::o;23662:193::-;23770:11;23804:6;23799:3;23792:19;23844:4;23839:3;23835:14;23820:29;;23662:193;;;;:::o;23861:113::-;23941:4;23964:3;23956:11;;23861:113;;;:::o;23980:158::-;24053:11;24087:6;24082:3;24075:19;24127:4;24122:3;24118:14;24103:29;;23980:158;;;;:::o;24166:281::-;24252:3;24273:60;24326:6;24321:3;24273:60;:::i;:::-;24266:67;;24343:43;24379:6;24374:3;24367:5;24343:43;:::i;:::-;24411:29;24433:6;24411:29;:::i;:::-;24406:3;24402:39;24395:46;;24166:281;;;;;:::o;24453:212::-;24550:10;24585:74;24655:3;24647:6;24639;24585:74;:::i;:::-;24571:88;;24453:212;;;;;:::o;24671:117::-;24780:1;24777;24770:12;24794:117;24903:1;24900;24893:12;24917:117;25026:1;25023;25016:12;25040:714;25104:5;25111:6;25167:3;25154:17;25259:1;25253:4;25249:12;25238:8;25222:14;25218:29;25214:48;25194:18;25190:73;25180:168;;25267:79;;:::i;:::-;25180:168;25390:8;25370:18;25366:33;25357:42;;25432:5;25419:19;25409:29;;25467:4;25460:5;25456:16;25447:25;;25495:18;25487:6;25484:30;25481:117;;;25517:79;;:::i;:::-;25481:117;25656:4;25648:6;25644:17;25628:14;25624:38;25614:8;25610:53;25607:140;;;25666:79;;:::i;:::-;25607:140;25118:636;25040:714;;;;;:::o;25760:126::-;25843:4;25875;25870:3;25866:14;25858:22;;25760:126;;;:::o;25918:990::-;26067:3;26090:95;26178:6;26173:3;26090:95;:::i;:::-;26083:102;;26211:3;26256:4;26248:6;26244:17;26239:3;26235:27;26286:69;26349:5;26286:69;:::i;:::-;26378:7;26409:1;26394:469;26419:6;26416:1;26413:13;26394:469;;;26490:9;26484:4;26480:20;26475:3;26468:33;26550:53;26596:6;26587:7;26550:53;:::i;:::-;26624:99;26718:4;26703:13;26688;26624:99;:::i;:::-;26616:107;;26746:73;26812:6;26746:73;:::i;:::-;26736:83;;26848:4;26843:3;26839:14;26832:21;;26454:409;;26441:1;26438;26434:9;26429:14;;26394:469;;;26398:14;26879:4;26872:11;;26899:3;26892:10;;26072:836;;;;25918:990;;;;;:::o;26914:1217::-;27319:4;27357:3;27346:9;27342:19;27334:27;;27407:9;27401:4;27397:20;27393:1;27382:9;27378:17;27371:47;27435:118;27548:4;27539:6;27531;27435:118;:::i;:::-;27427:126;;27600:9;27594:4;27590:20;27585:2;27574:9;27570:18;27563:48;27628:118;27741:4;27732:6;27724;27628:118;:::i;:::-;27620:126;;27793:9;27787:4;27783:20;27778:2;27767:9;27763:18;27756:48;27821:138;27954:4;27945:6;27937;27821:138;:::i;:::-;27813:146;;27969:72;28037:2;28026:9;28022:18;28013:6;27969:72;:::i;:::-;28051:73;28119:3;28108:9;28104:19;28095:6;28051:73;:::i;:::-;26914:1217;;;;;;;;;;;:::o;28137:236::-;28277:34;28273:1;28265:6;28261:14;28254:58;28346:19;28341:2;28333:6;28329:15;28322:44;28137:236;:::o;28379:366::-;28521:3;28542:67;28606:2;28601:3;28542:67;:::i;:::-;28535:74;;28618:93;28707:3;28618:93;:::i;:::-;28736:2;28731:3;28727:12;28720:19;;28379:366;;;:::o;28751:419::-;28917:4;28955:2;28944:9;28940:18;28932:26;;29004:9;28998:4;28994:20;28990:1;28979:9;28975:17;28968:47;29032:131;29158:4;29032:131;:::i;:::-;29024:139;;28751:419;;;:::o;29176:234::-;29316:34;29312:1;29304:6;29300:14;29293:58;29385:17;29380:2;29372:6;29368:15;29361:42;29176:234;:::o;29416:366::-;29558:3;29579:67;29643:2;29638:3;29579:67;:::i;:::-;29572:74;;29655:93;29744:3;29655:93;:::i;:::-;29773:2;29768:3;29764:12;29757:19;;29416:366;;;:::o;29788:419::-;29954:4;29992:2;29981:9;29977:18;29969:26;;30041:9;30035:4;30031:20;30027:1;30016:9;30012:17;30005:47;30069:131;30195:4;30069:131;:::i;:::-;30061:139;;29788:419;;;:::o;30213:225::-;30353:34;30349:1;30341:6;30337:14;30330:58;30422:8;30417:2;30409:6;30405:15;30398:33;30213:225;:::o;30444:366::-;30586:3;30607:67;30671:2;30666:3;30607:67;:::i;:::-;30600:74;;30683:93;30772:3;30683:93;:::i;:::-;30801:2;30796:3;30792:12;30785:19;;30444:366;;;:::o;30816:419::-;30982:4;31020:2;31009:9;31005:18;30997:26;;31069:9;31063:4;31059:20;31055:1;31044:9;31040:17;31033:47;31097:131;31223:4;31097:131;:::i;:::-;31089:139;;30816:419;;;:::o;31241:305::-;31281:3;31300:20;31318:1;31300:20;:::i;:::-;31295:25;;31334:20;31352:1;31334:20;:::i;:::-;31329:25;;31488:1;31420:66;31416:74;31413:1;31410:81;31407:107;;;31494:18;;:::i;:::-;31407:107;31538:1;31535;31531:9;31524:16;;31241:305;;;;:::o;31552:148::-;31654:11;31691:3;31676:18;;31552:148;;;;:::o;31706:173::-;31846:25;31842:1;31834:6;31830:14;31823:49;31706:173;:::o;31885:402::-;32045:3;32066:85;32148:2;32143:3;32066:85;:::i;:::-;32059:92;;32160:93;32249:3;32160:93;:::i;:::-;32278:2;32273:3;32269:12;32262:19;;31885:402;;;:::o;32293:99::-;32345:6;32379:5;32373:12;32363:22;;32293:99;;;:::o;32398:307::-;32466:1;32476:113;32490:6;32487:1;32484:13;32476:113;;;32575:1;32570:3;32566:11;32560:18;32556:1;32551:3;32547:11;32540:39;32512:2;32509:1;32505:10;32500:15;;32476:113;;;32607:6;32604:1;32601:13;32598:101;;;32687:1;32678:6;32673:3;32669:16;32662:27;32598:101;32447:258;32398:307;;;:::o;32711:377::-;32817:3;32845:39;32878:5;32845:39;:::i;:::-;32900:89;32982:6;32977:3;32900:89;:::i;:::-;32893:96;;32998:52;33043:6;33038:3;33031:4;33024:5;33020:16;32998:52;:::i;:::-;33075:6;33070:3;33066:16;33059:23;;32821:267;32711:377;;;;:::o;33094:167::-;33234:19;33230:1;33222:6;33218:14;33211:43;33094:167;:::o;33267:402::-;33427:3;33448:85;33530:2;33525:3;33448:85;:::i;:::-;33441:92;;33542:93;33631:3;33542:93;:::i;:::-;33660:2;33655:3;33651:12;33644:19;;33267:402;;;:::o;33675:967::-;34057:3;34079:148;34223:3;34079:148;:::i;:::-;34072:155;;34244:95;34335:3;34326:6;34244:95;:::i;:::-;34237:102;;34356:148;34500:3;34356:148;:::i;:::-;34349:155;;34521:95;34612:3;34603:6;34521:95;:::i;:::-;34514:102;;34633:3;34626:10;;33675:967;;;;;:::o;34648:364::-;34736:3;34764:39;34797:5;34764:39;:::i;:::-;34819:71;34883:6;34878:3;34819:71;:::i;:::-;34812:78;;34899:52;34944:6;34939:3;34932:4;34925:5;34921:16;34899:52;:::i;:::-;34976:29;34998:6;34976:29;:::i;:::-;34971:3;34967:39;34960:46;;34740:272;34648:364;;;;:::o;35018:313::-;35131:4;35169:2;35158:9;35154:18;35146:26;;35218:9;35212:4;35208:20;35204:1;35193:9;35189:17;35182:47;35246:78;35319:4;35310:6;35246:78;:::i;:::-;35238:86;;35018:313;;;;:::o;35337:229::-;35477:34;35473:1;35465:6;35461:14;35454:58;35546:12;35541:2;35533:6;35529:15;35522:37;35337:229;:::o;35572:366::-;35714:3;35735:67;35799:2;35794:3;35735:67;:::i;:::-;35728:74;;35811:93;35900:3;35811:93;:::i;:::-;35929:2;35924:3;35920:12;35913:19;;35572:366;;;:::o;35944:419::-;36110:4;36148:2;36137:9;36133:18;36125:26;;36197:9;36191:4;36187:20;36183:1;36172:9;36168:17;36161:47;36225:131;36351:4;36225:131;:::i;:::-;36217:139;;35944:419;;;:::o;36369:225::-;36509:34;36505:1;36497:6;36493:14;36486:58;36578:8;36573:2;36565:6;36561:15;36554:33;36369:225;:::o;36600:366::-;36742:3;36763:67;36827:2;36822:3;36763:67;:::i;:::-;36756:74;;36839:93;36928:3;36839:93;:::i;:::-;36957:2;36952:3;36948:12;36941:19;;36600:366;;;:::o;36972:419::-;37138:4;37176:2;37165:9;37161:18;37153:26;;37225:9;37219:4;37215:20;37211:1;37200:9;37196:17;37189:47;37253:131;37379:4;37253:131;:::i;:::-;37245:139;;36972:419;;;:::o;37397:147::-;37498:11;37535:3;37520:18;;37397:147;;;;:::o;37572:314::-;37686:3;37707:88;37788:6;37783:3;37707:88;:::i;:::-;37700:95;;37805:43;37841:6;37836:3;37829:5;37805:43;:::i;:::-;37873:6;37868:3;37864:16;37857:23;;37572:314;;;;;:::o;37892:291::-;38032:3;38054:103;38153:3;38144:6;38136;38054:103;:::i;:::-;38047:110;;38174:3;38167:10;;37892:291;;;;;:::o;38189:238::-;38329:34;38325:1;38317:6;38313:14;38306:58;38398:21;38393:2;38385:6;38381:15;38374:46;38189:238;:::o;38433:366::-;38575:3;38596:67;38660:2;38655:3;38596:67;:::i;:::-;38589:74;;38672:93;38761:3;38672:93;:::i;:::-;38790:2;38785:3;38781:12;38774:19;;38433:366;;;:::o;38805:419::-;38971:4;39009:2;38998:9;38994:18;38986:26;;39058:9;39052:4;39048:20;39044:1;39033:9;39029:17;39022:47;39086:131;39212:4;39086:131;:::i;:::-;39078:139;;38805:419;;;:::o;39230:549::-;39407:4;39445:2;39434:9;39430:18;39422:26;;39458:71;39526:1;39515:9;39511:17;39502:6;39458:71;:::i;:::-;39539:72;39607:2;39596:9;39592:18;39583:6;39539:72;:::i;:::-;39658:9;39652:4;39648:20;39643:2;39632:9;39628:18;39621:48;39686:86;39767:4;39758:6;39750;39686:86;:::i;:::-;39678:94;;39230:549;;;;;;;:::o;39785:348::-;39825:7;39848:20;39866:1;39848:20;:::i;:::-;39843:25;;39882:20;39900:1;39882:20;:::i;:::-;39877:25;;40070:1;40002:66;39998:74;39995:1;39992:81;39987:1;39980:9;39973:17;39969:105;39966:131;;;40077:18;;:::i;:::-;39966:131;40125:1;40122;40118:9;40107:20;;39785:348;;;;:::o;40139:180::-;40187:77;40184:1;40177:88;40284:4;40281:1;40274:15;40308:4;40305:1;40298:15;40325:171;40364:3;40387:24;40405:5;40387:24;:::i;:::-;40378:33;;40433:4;40426:5;40423:15;40420:41;;;40441:18;;:::i;:::-;40420:41;40488:1;40481:5;40477:13;40470:20;;40325:171;;;:::o;40502:182::-;40642:34;40638:1;40630:6;40626:14;40619:58;40502:182;:::o;40690:366::-;40832:3;40853:67;40917:2;40912:3;40853:67;:::i;:::-;40846:74;;40929:93;41018:3;40929:93;:::i;:::-;41047:2;41042:3;41038:12;41031:19;;40690:366;;;:::o;41062:419::-;41228:4;41266:2;41255:9;41251:18;41243:26;;41315:9;41309:4;41305:20;41301:1;41290:9;41286:17;41279:47;41343:131;41469:4;41343:131;:::i;:::-;41335:139;;41062:419;;;:::o
Swarm Source
ipfs://a79547a2cff00ab3e9747373ebd172133df6ff2641f204dd67b41b4c9855e9d7
Loading...
Loading
Loading...
Loading
Loading...
Loading
Net Worth in USD
$0.00
Net Worth in S
Multichain Portfolio | 32 Chains
| Chain | Token | Portfolio % | Price | Amount | Value |
|---|
Loading...
Loading
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.