Source Code
Overview
MON Balance
MON Value
$0.00Latest 18 from a total of 18 transactions
| Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
|---|---|---|---|---|---|---|---|---|---|
| Add Fighters | 47732268 | 16 days ago | IN | 0 MON | 0.50922857 | ||||
| Grant Role | 47559477 | 17 days ago | IN | 0 MON | 0.00720547 | ||||
| Grant Role | 47554613 | 17 days ago | IN | 0 MON | 0.00717967 | ||||
| Grant Role | 47351794 | 18 days ago | IN | 0 MON | 0.00412681 | ||||
| Grant Role | 47351403 | 18 days ago | IN | 0 MON | 0.00768692 | ||||
| Add Fighters | 47314783 | 18 days ago | IN | 0 MON | 0.10458896 | ||||
| Add Fighters | 47314770 | 18 days ago | IN | 0 MON | 0.10458406 | ||||
| Add Fighters | 47314480 | 18 days ago | IN | 0 MON | 0.54815901 | ||||
| Add Fighters | 47314467 | 18 days ago | IN | 0 MON | 0.65194442 | ||||
| Add Fighters | 47314453 | 18 days ago | IN | 0 MON | 0.65194442 | ||||
| Add Fighters | 47314438 | 18 days ago | IN | 0 MON | 0.65194809 | ||||
| Add Fighters | 47314424 | 18 days ago | IN | 0 MON | 0.65194564 | ||||
| Add Fighters | 47314409 | 18 days ago | IN | 0 MON | 0.65195054 | ||||
| Add Fighters | 47314393 | 18 days ago | IN | 0 MON | 0.6519382 | ||||
| Add Fighters | 47314379 | 18 days ago | IN | 0 MON | 0.65193697 | ||||
| Add Fighters | 47314364 | 18 days ago | IN | 0 MON | 0.65187526 | ||||
| Add Fighters | 47314349 | 18 days ago | IN | 0 MON | 0.65182345 | ||||
| Add Fighters | 47314335 | 18 days ago | IN | 0 MON | 0.65181855 |
View more zero value Internal Transactions in Advanced View mode
Advanced mode:
Loading...
Loading
Contract Name:
HoodlumsRegistry
Compiler Version
v0.8.24+commit.e11b9ed9
Contract Source Code (Solidity Standard Json-Input format)
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.20;
import "@openzeppelin/contracts/access/Ownable.sol";
import "@openzeppelin/contracts/access/AccessControl.sol";
/**
* @title HoodlumsRegistry
* @dev Dynamic registry for Hoodlums NFT base stats and effects.
* @author DevAngelo
*/
contract HoodlumsRegistry is AccessControl, Ownable {
bytes32 public constant OPERATOR_ROLE = keccak256("OPERATOR_ROLE");
struct FighterStats {
uint16 level;
uint16 hp;
uint16 str;
uint16 fcs;
uint16 wis;
uint16 def;
uint16 arm;
uint16 fdn;
uint16 itm;
uint16 effectId;
}
mapping(uint256 => FighterStats) private _baseStats;
mapping(uint256 => bool) public isRegistered;
event FighterAdded(uint256 indexed tokenId);
event StatsUpdated(uint256 indexed tokenId);
event StatAdjusted(uint256 indexed tokenId, string stat, int16 delta, uint16 newValue);
event LevelUp(uint256 indexed tokenId, uint16 newLevel);
constructor() Ownable(msg.sender) {
_grantRole(DEFAULT_ADMIN_ROLE, msg.sender);
_grantRole(OPERATOR_ROLE, msg.sender);
}
/**
* @dev Batch add new Hoodlums. Skips if already registered.
*/
function addFighters(
uint256[] calldata ids,
FighterStats[] calldata stats
) external onlyRole(OPERATOR_ROLE) {
require(ids.length == stats.length, "Mismatched arrays");
for (uint256 i = 0; i < ids.length; i++) {
if (!isRegistered[ids[i]]) {
_baseStats[ids[i]] = stats[i];
isRegistered[ids[i]] = true;
emit FighterAdded(ids[i]);
}
}
}
/**
* @dev Evolution/Upgrade function for operators to update all stats at once.
*/
function updateAllStats(
uint256 tokenId,
FighterStats calldata newStats
) external onlyRole(OPERATOR_ROLE) {
require(isRegistered[tokenId], "Not registered");
_baseStats[tokenId] = newStats;
emit StatsUpdated(tokenId);
}
// --- Setters ---
function setFocus(uint256 tokenId, uint16 value) external onlyRole(OPERATOR_ROLE) {
require(isRegistered[tokenId], "Not registered");
_baseStats[tokenId].fcs = value;
emit StatsUpdated(tokenId);
}
function setWisdom(uint256 tokenId, uint16 value) external onlyRole(OPERATOR_ROLE) {
require(isRegistered[tokenId], "Not registered");
_baseStats[tokenId].wis = value;
emit StatsUpdated(tokenId);
}
function setStrength(uint256 tokenId, uint16 value) external onlyRole(OPERATOR_ROLE) {
require(isRegistered[tokenId], "Not registered");
_baseStats[tokenId].str = value;
emit StatsUpdated(tokenId);
}
function setDefense(uint256 tokenId, uint16 value) external onlyRole(OPERATOR_ROLE) {
require(isRegistered[tokenId], "Not registered");
_baseStats[tokenId].def = value;
emit StatsUpdated(tokenId);
}
function setArmour(uint256 tokenId, uint16 value) external onlyRole(OPERATOR_ROLE) {
require(isRegistered[tokenId], "Not registered");
_baseStats[tokenId].arm = value;
emit StatsUpdated(tokenId);
}
function setHP(uint256 tokenId, uint16 value) external onlyRole(OPERATOR_ROLE) {
require(isRegistered[tokenId], "Not registered");
_baseStats[tokenId].hp = value;
emit StatsUpdated(tokenId);
}
function setLevel(uint256 tokenId, uint16 level) external onlyRole(OPERATOR_ROLE) {
require(isRegistered[tokenId], "Not registered");
_baseStats[tokenId].level = level;
emit LevelUp(tokenId, level);
}
// --- Increments & Decrements (Named Functions) ---
function incrementLevel(uint256 tokenId, uint16 amount) external onlyRole(OPERATOR_ROLE) {
require(isRegistered[tokenId], "Not registered");
_baseStats[tokenId].level += amount;
emit LevelUp(tokenId, _baseStats[tokenId].level);
}
function decrementLevel(uint256 tokenId, uint16 amount) external onlyRole(OPERATOR_ROLE) {
require(isRegistered[tokenId], "Not registered");
uint16 current = _baseStats[tokenId].level;
_baseStats[tokenId].level = amount > current ? 0 : current - amount;
emit LevelUp(tokenId, _baseStats[tokenId].level);
}
function incrementHP(uint256 tokenId, uint16 amount) external onlyRole(OPERATOR_ROLE) {
require(isRegistered[tokenId], "Not registered");
_baseStats[tokenId].hp += amount;
emit StatsUpdated(tokenId);
}
function decrementHP(uint256 tokenId, uint16 amount) external onlyRole(OPERATOR_ROLE) {
require(isRegistered[tokenId], "Not registered");
uint16 current = _baseStats[tokenId].hp;
_baseStats[tokenId].hp = amount > current ? 0 : current - amount;
emit StatsUpdated(tokenId);
}
/**
* @dev Generic adjustment function to handle any stat by key.
* Use positive delta for increment, negative for decrement.
*/
function adjustStat(uint256 tokenId, string calldata statKey, int16 delta) external onlyRole(OPERATOR_ROLE) {
require(isRegistered[tokenId], "Not registered");
FighterStats storage stats = _baseStats[tokenId];
uint16 currentValue;
bytes32 keyHash = keccak256(abi.encodePacked(statKey));
if (keyHash == keccak256("hp")) currentValue = stats.hp;
else if (keyHash == keccak256("str")) currentValue = stats.str;
else if (keyHash == keccak256("fcs")) currentValue = stats.fcs;
else if (keyHash == keccak256("wis")) currentValue = stats.wis;
else if (keyHash == keccak256("def")) currentValue = stats.def;
else if (keyHash == keccak256("arm")) currentValue = stats.arm;
else if (keyHash == keccak256("fdn")) currentValue = stats.fdn;
else if (keyHash == keccak256("itm")) currentValue = stats.itm;
else if (keyHash == keccak256("level")) currentValue = stats.level;
else revert("Invalid stat key");
uint16 newValue = _applyDelta(currentValue, delta);
if (keyHash == keccak256("hp")) stats.hp = newValue;
else if (keyHash == keccak256("str")) stats.str = newValue;
else if (keyHash == keccak256("fcs")) stats.fcs = newValue;
else if (keyHash == keccak256("wis")) stats.wis = newValue;
else if (keyHash == keccak256("def")) stats.def = newValue;
else if (keyHash == keccak256("arm")) stats.arm = newValue;
else if (keyHash == keccak256("fdn")) stats.fdn = newValue;
else if (keyHash == keccak256("itm")) stats.itm = newValue;
else if (keyHash == keccak256("level")) {
stats.level = newValue;
emit LevelUp(tokenId, newValue);
}
emit StatAdjusted(tokenId, statKey, delta, newValue);
}
function _applyDelta(uint16 current, int16 delta) private pure returns (uint16) {
int32 newVal = int32(uint32(current)) + int32(delta);
if (newVal < 0) return 0;
if (newVal > 65535) return 65535;
return uint16(uint32(newVal));
}
/**
* @dev View function to retrieve all stats.
*/
function getFighter(uint256 tokenId) external view returns (FighterStats memory) {
return _baseStats[tokenId];
}
/**
* @dev View function to check if a token is registered.
*/
function exists(uint256 tokenId) external view returns (bool) {
return isRegistered[tokenId];
}
}// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v5.0.0) (access/Ownable.sol)
pragma solidity ^0.8.20;
import {Context} from "../utils/Context.sol";
/**
* @dev Contract module which provides a basic access control mechanism, where
* there is an account (an owner) that can be granted exclusive access to
* specific functions.
*
* The initial owner is set to the address provided by the deployer. This can
* later be changed with {transferOwnership}.
*
* This module is used through inheritance. It will make available the modifier
* `onlyOwner`, which can be applied to your functions to restrict their use to
* the owner.
*/
abstract contract Ownable is Context {
address private _owner;
/**
* @dev The caller account is not authorized to perform an operation.
*/
error OwnableUnauthorizedAccount(address account);
/**
* @dev The owner is not a valid owner account. (eg. `address(0)`)
*/
error OwnableInvalidOwner(address owner);
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
/**
* @dev Initializes the contract setting the address provided by the deployer as the initial owner.
*/
constructor(address initialOwner) {
if (initialOwner == address(0)) {
revert OwnableInvalidOwner(address(0));
}
_transferOwnership(initialOwner);
}
/**
* @dev Throws if called by any account other than the owner.
*/
modifier onlyOwner() {
_checkOwner();
_;
}
/**
* @dev Returns the address of the current owner.
*/
function owner() public view virtual returns (address) {
return _owner;
}
/**
* @dev Throws if the sender is not the owner.
*/
function _checkOwner() internal view virtual {
if (owner() != _msgSender()) {
revert OwnableUnauthorizedAccount(_msgSender());
}
}
/**
* @dev Leaves the contract without owner. It will not be possible to call
* `onlyOwner` functions. Can only be called by the current owner.
*
* NOTE: Renouncing ownership will leave the contract without an owner,
* thereby disabling any functionality that is only available to the owner.
*/
function renounceOwnership() public virtual onlyOwner {
_transferOwnership(address(0));
}
/**
* @dev Transfers ownership of the contract to a new account (`newOwner`).
* Can only be called by the current owner.
*/
function transferOwnership(address newOwner) public virtual onlyOwner {
if (newOwner == address(0)) {
revert OwnableInvalidOwner(address(0));
}
_transferOwnership(newOwner);
}
/**
* @dev Transfers ownership of the contract to a new account (`newOwner`).
* Internal function without access restriction.
*/
function _transferOwnership(address newOwner) internal virtual {
address oldOwner = _owner;
_owner = newOwner;
emit OwnershipTransferred(oldOwner, newOwner);
}
}// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v5.4.0) (access/AccessControl.sol)
pragma solidity ^0.8.20;
import {IAccessControl} from "./IAccessControl.sol";
import {Context} from "../utils/Context.sol";
import {IERC165, ERC165} from "../utils/introspection/ERC165.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:
*
* ```solidity
* 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}:
*
* ```solidity
* 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. We recommend using {AccessControlDefaultAdminRules}
* to enforce additional security measures for this role.
*/
abstract contract AccessControl is Context, IAccessControl, ERC165 {
struct RoleData {
mapping(address account => bool) hasRole;
bytes32 adminRole;
}
mapping(bytes32 role => RoleData) private _roles;
bytes32 public constant DEFAULT_ADMIN_ROLE = 0x00;
/**
* @dev Modifier that checks that an account has a specific role. Reverts
* with an {AccessControlUnauthorizedAccount} error including the required role.
*/
modifier onlyRole(bytes32 role) {
_checkRole(role);
_;
}
/// @inheritdoc IERC165
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 returns (bool) {
return _roles[role].hasRole[account];
}
/**
* @dev Reverts with an {AccessControlUnauthorizedAccount} error if `_msgSender()`
* is missing `role`. Overriding this function changes the behavior of the {onlyRole} modifier.
*/
function _checkRole(bytes32 role) internal view virtual {
_checkRole(role, _msgSender());
}
/**
* @dev Reverts with an {AccessControlUnauthorizedAccount} error if `account`
* is missing `role`.
*/
function _checkRole(bytes32 role, address account) internal view virtual {
if (!hasRole(role, account)) {
revert AccessControlUnauthorizedAccount(account, role);
}
}
/**
* @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 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.
*
* May emit a {RoleGranted} event.
*/
function grantRole(bytes32 role, address account) public virtual 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.
*
* May emit a {RoleRevoked} event.
*/
function revokeRole(bytes32 role, address account) public virtual 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 `callerConfirmation`.
*
* May emit a {RoleRevoked} event.
*/
function renounceRole(bytes32 role, address callerConfirmation) public virtual {
if (callerConfirmation != _msgSender()) {
revert AccessControlBadConfirmation();
}
_revokeRole(role, callerConfirmation);
}
/**
* @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 Attempts to grant `role` to `account` and returns a boolean indicating if `role` was granted.
*
* Internal function without access restriction.
*
* May emit a {RoleGranted} event.
*/
function _grantRole(bytes32 role, address account) internal virtual returns (bool) {
if (!hasRole(role, account)) {
_roles[role].hasRole[account] = true;
emit RoleGranted(role, account, _msgSender());
return true;
} else {
return false;
}
}
/**
* @dev Attempts to revoke `role` from `account` and returns a boolean indicating if `role` was revoked.
*
* Internal function without access restriction.
*
* May emit a {RoleRevoked} event.
*/
function _revokeRole(bytes32 role, address account) internal virtual returns (bool) {
if (hasRole(role, account)) {
_roles[role].hasRole[account] = false;
emit RoleRevoked(role, account, _msgSender());
return true;
} else {
return false;
}
}
}// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v5.0.1) (utils/Context.sol)
pragma solidity ^0.8.20;
/**
* @dev Provides information about the current execution context, including the
* sender of the transaction and its data. While these are generally available
* via msg.sender and msg.data, they should not be accessed in such a direct
* manner, since when dealing with meta-transactions the account sending and
* paying for execution may not be the actual sender (as far as an application
* is concerned).
*
* This contract is only required for intermediate, library-like contracts.
*/
abstract contract Context {
function _msgSender() internal view virtual returns (address) {
return msg.sender;
}
function _msgData() internal view virtual returns (bytes calldata) {
return msg.data;
}
function _contextSuffixLength() internal view virtual returns (uint256) {
return 0;
}
}// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v5.4.0) (access/IAccessControl.sol)
pragma solidity >=0.8.4;
/**
* @dev External interface of AccessControl declared to support ERC-165 detection.
*/
interface IAccessControl {
/**
* @dev The `account` is missing a role.
*/
error AccessControlUnauthorizedAccount(address account, bytes32 neededRole);
/**
* @dev The caller of a function is not the expected one.
*
* NOTE: Don't confuse with {AccessControlUnauthorizedAccount}.
*/
error AccessControlBadConfirmation();
/**
* @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 to signal this.
*/
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. This account bears the admin role (for the granted role).
* Expected in cases where the role was granted using the internal {AccessControl-_grantRole}.
*/
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 `callerConfirmation`.
*/
function renounceRole(bytes32 role, address callerConfirmation) external;
}// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v5.4.0) (utils/introspection/ERC165.sol)
pragma solidity ^0.8.20;
import {IERC165} from "./IERC165.sol";
/**
* @dev Implementation of the {IERC165} interface.
*
* Contracts that want to implement ERC-165 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);
* }
* ```
*/
abstract contract ERC165 is IERC165 {
/// @inheritdoc IERC165
function supportsInterface(bytes4 interfaceId) public view virtual returns (bool) {
return interfaceId == type(IERC165).interfaceId;
}
}// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v5.4.0) (utils/introspection/IERC165.sol)
pragma solidity >=0.4.16;
/**
* @dev Interface of the ERC-165 standard, as defined in the
* https://eips.ethereum.org/EIPS/eip-165[ERC].
*
* Implementers can declare support of contract interfaces, which can then be
* queried by others ({ERC165Checker}).
*
* For an implementation, see {ERC165}.
*/
interface IERC165 {
/**
* @dev Returns true if this contract implements the interface defined by
* `interfaceId`. See the corresponding
* https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[ERC section]
* to learn more about how these ids are created.
*
* This function call must use less than 30 000 gas.
*/
function supportsInterface(bytes4 interfaceId) external view returns (bool);
}{
"remappings": [
"@openzeppelin/contracts/=lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/contracts/",
"@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/",
"forge-std/=lib/forge-std/src/",
"erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/",
"halmos-cheatcodes/=lib/openzeppelin-contracts-upgradeable/lib/halmos-cheatcodes/src/",
"openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/",
"openzeppelin-contracts/=lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/"
],
"optimizer": {
"enabled": true,
"runs": 200
},
"metadata": {
"useLiteralContent": false,
"bytecodeHash": "ipfs",
"appendCBOR": true
},
"outputSelection": {
"*": {
"*": [
"evm.bytecode",
"evm.deployedBytecode",
"abi"
]
}
},
"evmVersion": "cancun",
"viaIR": false
}Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"AccessControlBadConfirmation","type":"error"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bytes32","name":"neededRole","type":"bytes32"}],"name":"AccessControlUnauthorizedAccount","type":"error"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"OwnableInvalidOwner","type":"error"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"OwnableUnauthorizedAccount","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"FighterAdded","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"},{"indexed":false,"internalType":"uint16","name":"newLevel","type":"uint16"}],"name":"LevelUp","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"bytes32","name":"previousAdminRole","type":"bytes32"},{"indexed":true,"internalType":"bytes32","name":"newAdminRole","type":"bytes32"}],"name":"RoleAdminChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"address","name":"sender","type":"address"}],"name":"RoleGranted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"address","name":"sender","type":"address"}],"name":"RoleRevoked","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"},{"indexed":false,"internalType":"string","name":"stat","type":"string"},{"indexed":false,"internalType":"int16","name":"delta","type":"int16"},{"indexed":false,"internalType":"uint16","name":"newValue","type":"uint16"}],"name":"StatAdjusted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"StatsUpdated","type":"event"},{"inputs":[],"name":"DEFAULT_ADMIN_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"OPERATOR_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"ids","type":"uint256[]"},{"components":[{"internalType":"uint16","name":"level","type":"uint16"},{"internalType":"uint16","name":"hp","type":"uint16"},{"internalType":"uint16","name":"str","type":"uint16"},{"internalType":"uint16","name":"fcs","type":"uint16"},{"internalType":"uint16","name":"wis","type":"uint16"},{"internalType":"uint16","name":"def","type":"uint16"},{"internalType":"uint16","name":"arm","type":"uint16"},{"internalType":"uint16","name":"fdn","type":"uint16"},{"internalType":"uint16","name":"itm","type":"uint16"},{"internalType":"uint16","name":"effectId","type":"uint16"}],"internalType":"struct HoodlumsRegistry.FighterStats[]","name":"stats","type":"tuple[]"}],"name":"addFighters","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"string","name":"statKey","type":"string"},{"internalType":"int16","name":"delta","type":"int16"}],"name":"adjustStat","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"uint16","name":"amount","type":"uint16"}],"name":"decrementHP","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"uint16","name":"amount","type":"uint16"}],"name":"decrementLevel","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"exists","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"getFighter","outputs":[{"components":[{"internalType":"uint16","name":"level","type":"uint16"},{"internalType":"uint16","name":"hp","type":"uint16"},{"internalType":"uint16","name":"str","type":"uint16"},{"internalType":"uint16","name":"fcs","type":"uint16"},{"internalType":"uint16","name":"wis","type":"uint16"},{"internalType":"uint16","name":"def","type":"uint16"},{"internalType":"uint16","name":"arm","type":"uint16"},{"internalType":"uint16","name":"fdn","type":"uint16"},{"internalType":"uint16","name":"itm","type":"uint16"},{"internalType":"uint16","name":"effectId","type":"uint16"}],"internalType":"struct HoodlumsRegistry.FighterStats","name":"","type":"tuple"}],"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":"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":"uint256","name":"tokenId","type":"uint256"},{"internalType":"uint16","name":"amount","type":"uint16"}],"name":"incrementHP","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"uint16","name":"amount","type":"uint16"}],"name":"incrementLevel","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"isRegistered","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"callerConfirmation","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":"uint256","name":"tokenId","type":"uint256"},{"internalType":"uint16","name":"value","type":"uint16"}],"name":"setArmour","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"uint16","name":"value","type":"uint16"}],"name":"setDefense","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"uint16","name":"value","type":"uint16"}],"name":"setFocus","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"uint16","name":"value","type":"uint16"}],"name":"setHP","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"uint16","name":"level","type":"uint16"}],"name":"setLevel","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"uint16","name":"value","type":"uint16"}],"name":"setStrength","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"uint16","name":"value","type":"uint16"}],"name":"setWisdom","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":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"},{"components":[{"internalType":"uint16","name":"level","type":"uint16"},{"internalType":"uint16","name":"hp","type":"uint16"},{"internalType":"uint16","name":"str","type":"uint16"},{"internalType":"uint16","name":"fcs","type":"uint16"},{"internalType":"uint16","name":"wis","type":"uint16"},{"internalType":"uint16","name":"def","type":"uint16"},{"internalType":"uint16","name":"arm","type":"uint16"},{"internalType":"uint16","name":"fdn","type":"uint16"},{"internalType":"uint16","name":"itm","type":"uint16"},{"internalType":"uint16","name":"effectId","type":"uint16"}],"internalType":"struct HoodlumsRegistry.FighterStats","name":"newStats","type":"tuple"}],"name":"updateAllStats","outputs":[],"stateMutability":"nonpayable","type":"function"}]Contract Creation Code
608060405234801562000010575f80fd5b5033806200003757604051631e4fbdf760e01b81525f600482015260240160405180910390fd5b620000428162000083565b506200004f5f33620000d4565b506200007c7f97667070c54ef182b0f5858b034beac1b6f3089aa2d3188bb1e8929f4fa9b92933620000d4565b5062000180565b600180546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b5f828152602081815260408083206001600160a01b038516845290915281205460ff1662000177575f838152602081815260408083206001600160a01b03861684529091529020805460ff191660011790556200012e3390565b6001600160a01b0316826001600160a01b0316847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45060016200017a565b505f5b92915050565b611ce9806200018e5f395ff3fe608060405234801561000f575f80fd5b50600436106101bb575f3560e01c806379d84948116100f3578063ad5a7ba211610093578063d547741f1161006e578063d547741f146104ce578063f2fde38b146104e1578063f5b541a6146104f4578063ffb9c5be14610508575f80fd5b8063ad5a7ba214610495578063b4cdbf0f146104a8578063d0fe0841146104bb575f80fd5b80638da5cb5b116100ce5780638da5cb5b1461044d57806391d1485414610468578063a217fddf1461047b578063a9fc2b4014610482575f80fd5b806379d849481461031057806382bb0cef14610323578063889fa1dc14610336575f80fd5b806345cd247c1161015e578063579a698811610139578063579a6988146102c057806362725bf9146102e2578063715018a6146102f557806374b87574146102fd575f80fd5b806345cd247c1461027857806345d59bd61461028b5780634f558e791461029e575f80fd5b806322a736311161019957806322a736311461020f578063248a9ca3146102225780632f2ff15d1461025257806336568abe14610265575f80fd5b806301ffc9a7146101bf5780631563989b146101e757806316bab5af146101fc575b5f80fd5b6101d26101cd36600461165d565b61051b565b60405190151581526020015b60405180910390f35b6101fa6101f5366004611693565b610551565b005b6101fa61020a366004611693565b610615565b6101fa61021d366004611693565b610698565b6102446102303660046116c1565b5f9081526020819052604090206001015490565b6040519081526020016101de565b6101fa6102603660046116f3565b61071c565b6101fa6102733660046116f3565b610746565b6101fa61028636600461171d565b61077e565b6101fa6102993660046117aa565b610d17565b6101d26102ac3660046116c1565b5f9081526003602052604090205460ff1690565b6101d26102ce3660046116c1565b60036020525f908152604090205460ff1681565b6101fa6102f0366004611693565b610e98565b6101fa610f56565b6101fa61030b366004611693565b610f69565b6101fa61031e366004611693565b610feb565b6101fa610331366004611693565b61106b565b6104406103443660046116c1565b60408051610140810182525f80825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e081018290526101008101829052610120810191909152505f90815260026020908152604091829020825161014081018452905461ffff80821683526201000082048116938301939093526401000000008104831693820193909352600160301b830482166060820152600160401b830482166080820152600160501b8304821660a0820152600160601b8304821660c0820152600160701b8304821660e0820152600160801b83048216610100820152600160901b9092041661012082015290565b6040516101de9190611868565b6001546040516001600160a01b0390911681526020016101de565b6101d26104763660046116f3565b6110ed565b6102445f81565b6101fa610490366004611693565b611115565b6101fa6104a3366004611936565b6111d0565b6101fa6104b6366004611693565b61124b565b6101fa6104c9366004611693565b6112f2565b6101fa6104dc3660046116f3565b611374565b6101fa6104ef36600461196d565b611398565b6102445f80516020611c7483398151915281565b6101fa610516366004611693565b6113d5565b5f6001600160e01b03198216637965db0b60e01b148061054b57506301ffc9a760e01b6001600160e01b03198316145b92915050565b5f80516020611c7483398151915261056881611457565b5f8381526003602052604090205460ff1661059e5760405162461bcd60e51b815260040161059590611986565b60405180910390fd5b5f83815260026020526040812080548492906105bf90849061ffff166119c2565b82546101009290920a61ffff8181021990931691831602179091555f858152600260209081526040918290205491519190921681528592505f80516020611c9483398151915291015b60405180910390a2505050565b5f80516020611c7483398151915261062c81611457565b5f8381526003602052604090205460ff166106595760405162461bcd60e51b815260040161059590611986565b5f83815260026020908152604091829020805461ffff191661ffff8616908117909155915191825284915f80516020611c948339815191529101610608565b5f80516020611c748339815191526106af81611457565b5f8381526003602052604090205460ff166106dc5760405162461bcd60e51b815260040161059590611986565b5f83815260026020526040808220805465ffff00000000191664010000000061ffff8716021790555184915f80516020611c5483398151915291a2505050565b5f8281526020819052604090206001015461073681611457565b6107408383611461565b50505050565b6001600160a01b038116331461076f5760405163334bd91960e11b815260040160405180910390fd5b61077982826114f0565b505050565b5f80516020611c7483398151915261079581611457565b5f8581526003602052604090205460ff166107c25760405162461bcd60e51b815260040161059590611986565b5f858152600260209081526040808320905190929182916107e79189918991016119e4565b6040516020818303038152906040528051906020012090507fe6c6674428e502fa192b5717a5d35b76eea2a67e59beaccfc5f4065a81318290810361083957825462010000900461ffff169150610a46565b7fe8b3fd40cd7d32f03cbafdbe7ae951ab1895ded12d8ec3b40677e261d2b965e28103610875578254640100000000900461ffff169150610a46565b7f5a07f25944fcded6e26b5c7c56cac4c8e7c5e195e29f455cdc4b08127ac21ec481036108b0578254600160301b900461ffff169150610a46565b7f8d522c4792c9729dda56ce4fa80f4fe95692fb4d44fafc561a0d8f98697e5a1881036108eb578254600160401b900461ffff169150610a46565b7f34607c9bbfeb9c23509680f04363f298fdb0b5f9abe327304ecd1daca08cda9c8103610926578254600160501b900461ffff169150610a46565b7f3ea94bee138b89ca895191fa689eb00cdf408bbcef625238baf51727f82026898103610961578254600160601b900461ffff169150610a46565b7f4a8dbc2cfae01dce35d84da0364d4f69ee07b95ff225a47b3178d19b7301d1ec810361099c578254600160701b900461ffff169150610a46565b7fe4c6ed4977ab3c953f67319894e6365b524ac205c54b29cabfadcefd5ae0170f81036109d7578254600160801b900461ffff169150610a46565b7fd7fe74ba2795604f471717a6182ac81070ad95ecee0b7d8ebcfbec785af7e7968103610a0b57825461ffff169150610a46565b60405162461bcd60e51b815260206004820152601060248201526f496e76616c69642073746174206b657960801b6044820152606401610595565b5f610a518387611559565b90507fe6c6674428e502fa192b5717a5d35b76eea2a67e59beaccfc5f4065a813182908203610a9557835463ffff000019166201000061ffff831602178455610cce565b7fe8b3fd40cd7d32f03cbafdbe7ae951ab1895ded12d8ec3b40677e261d2b965e28203610adb57835465ffff00000000191664010000000061ffff831602178455610cce565b7f5a07f25944fcded6e26b5c7c56cac4c8e7c5e195e29f455cdc4b08127ac21ec48203610b1f57835461ffff60301b1916600160301b61ffff831602178455610cce565b7f8d522c4792c9729dda56ce4fa80f4fe95692fb4d44fafc561a0d8f98697e5a188203610b6357835461ffff60401b1916600160401b61ffff831602178455610cce565b7f34607c9bbfeb9c23509680f04363f298fdb0b5f9abe327304ecd1daca08cda9c8203610ba757835461ffff60501b1916600160501b61ffff831602178455610cce565b7f3ea94bee138b89ca895191fa689eb00cdf408bbcef625238baf51727f82026898203610beb57835461ffff60601b1916600160601b61ffff831602178455610cce565b7f4a8dbc2cfae01dce35d84da0364d4f69ee07b95ff225a47b3178d19b7301d1ec8203610c2f57835461ffff60701b1916600160701b61ffff831602178455610cce565b7fe4c6ed4977ab3c953f67319894e6365b524ac205c54b29cabfadcefd5ae0170f8203610c7357835461ffff60801b1916600160801b61ffff831602178455610cce565b7fd7fe74ba2795604f471717a6182ac81070ad95ecee0b7d8ebcfbec785af7e7968203610cce57835461ffff191661ffff8216908117855560405190815289905f80516020611c948339815191529060200160405180910390a25b887f838be4ef9ea67b223edf5f4e70d0522fb75138e2821f2d7e3149520f2b0623c189898985604051610d0494939291906119f3565b60405180910390a2505050505050505050565b5f80516020611c74833981519152610d2e81611457565b838214610d715760405162461bcd60e51b81526020600482015260116024820152704d69736d6174636865642061727261797360781b6044820152606401610595565b5f5b84811015610e905760035f878784818110610d9057610d90611a38565b602090810292909201358352508101919091526040015f205460ff16610e8857838382818110610dc257610dc2611a38565b9050610140020160025f888885818110610dde57610dde611a38565b9050602002013581526020019081526020015f208181610dfe9190611a58565b905050600160035f888885818110610e1857610e18611a38565b9050602002013581526020019081526020015f205f6101000a81548160ff021916908315150217905550858582818110610e5457610e54611a38565b905060200201357f486ac5a49171df463d084619edad47d61c6d525ea319ccde0ba3a8e6744038cf60405160405180910390a25b600101610d73565b505050505050565b5f80516020611c74833981519152610eaf81611457565b5f8381526003602052604090205460ff16610edc5760405162461bcd60e51b815260040161059590611986565b5f8381526002602052604090205461ffff6201000090910481169083168110610f0e57610f098382611c11565b610f10565b5f5b5f85815260026020526040808220805461ffff94909416620100000263ffff00001990941693909317909255905185915f80516020611c5483398151915291a250505050565b610f5e6115a2565b610f675f6115cf565b565b5f80516020611c74833981519152610f8081611457565b5f8381526003602052604090205460ff16610fad5760405162461bcd60e51b815260040161059590611986565b5f83815260026020526040808220805461ffff60401b1916600160401b61ffff8716021790555184915f80516020611c5483398151915291a2505050565b5f80516020611c7483398151915261100281611457565b5f8381526003602052604090205460ff1661102f5760405162461bcd60e51b815260040161059590611986565b5f83815260026020526040808220805463ffff000019166201000061ffff8716021790555184915f80516020611c5483398151915291a2505050565b5f80516020611c7483398151915261108281611457565b5f8381526003602052604090205460ff166110af5760405162461bcd60e51b815260040161059590611986565b5f83815260026020526040808220805461ffff60501b1916600160501b61ffff8716021790555184915f80516020611c5483398151915291a2505050565b5f918252602082815260408084206001600160a01b0393909316845291905290205460ff1690565b5f80516020611c7483398151915261112c81611457565b5f8381526003602052604090205460ff166111595760405162461bcd60e51b815260040161059590611986565b5f8381526002602052604090205461ffff9081169083168110611185576111808382611c11565b611187565b5f5b5f85815260026020908152604091829020805461ffff191661ffff949094169384179055905191825285915f80516020611c94833981519152910160405180910390a250505050565b5f80516020611c748339815191526111e781611457565b5f8381526003602052604090205460ff166112145760405162461bcd60e51b815260040161059590611986565b5f838152600260205260409020829061122d8282611a58565b505060405183905f80516020611c54833981519152905f90a2505050565b5f80516020611c7483398151915261126281611457565b5f8381526003602052604090205460ff1661128f5760405162461bcd60e51b815260040161059590611986565b5f83815260026020819052604090912080548492906112b990849062010000900461ffff166119c2565b92506101000a81548161ffff021916908361ffff160217905550825f80516020611c5483398151915260405160405180910390a2505050565b5f80516020611c7483398151915261130981611457565b5f8381526003602052604090205460ff166113365760405162461bcd60e51b815260040161059590611986565b5f83815260026020526040808220805461ffff60301b1916600160301b61ffff8716021790555184915f80516020611c5483398151915291a2505050565b5f8281526020819052604090206001015461138e81611457565b61074083836114f0565b6113a06115a2565b6001600160a01b0381166113c957604051631e4fbdf760e01b81525f6004820152602401610595565b6113d2816115cf565b50565b5f80516020611c748339815191526113ec81611457565b5f8381526003602052604090205460ff166114195760405162461bcd60e51b815260040161059590611986565b5f83815260026020526040808220805461ffff60601b1916600160601b61ffff8716021790555184915f80516020611c5483398151915291a2505050565b6113d28133611620565b5f61146c83836110ed565b6114e9575f838152602081815260408083206001600160a01b03861684529091529020805460ff191660011790556114a13390565b6001600160a01b0316826001600160a01b0316847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a450600161054b565b505f61054b565b5f6114fb83836110ed565b156114e9575f838152602081815260408083206001600160a01b0386168085529252808320805460ff1916905551339286917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a450600161054b565b5f8061156d600184900b61ffff8616611c2c565b90505f8160030b1215611583575f91505061054b565b61ffff8160030b131561159b5761ffff91505061054b565b9392505050565b6001546001600160a01b03163314610f675760405163118cdaa760e01b8152336004820152602401610595565b600180546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b61162a82826110ed565b6116595760405163e2517d3f60e01b81526001600160a01b038216600482015260248101839052604401610595565b5050565b5f6020828403121561166d575f80fd5b81356001600160e01b03198116811461159b575f80fd5b61ffff811681146113d2575f80fd5b5f80604083850312156116a4575f80fd5b8235915060208301356116b681611684565b809150509250929050565b5f602082840312156116d1575f80fd5b5035919050565b80356001600160a01b03811681146116ee575f80fd5b919050565b5f8060408385031215611704575f80fd5b82359150611714602084016116d8565b90509250929050565b5f805f8060608587031215611730575f80fd5b84359350602085013567ffffffffffffffff8082111561174e575f80fd5b818701915087601f830112611761575f80fd5b81358181111561176f575f80fd5b886020828501011115611780575f80fd5b60208301955080945050505060408501358060010b811461179f575f80fd5b939692955090935050565b5f805f80604085870312156117bd575f80fd5b843567ffffffffffffffff808211156117d4575f80fd5b818701915087601f8301126117e7575f80fd5b8135818111156117f5575f80fd5b8860208260051b8501011115611809575f80fd5b602092830196509450908601359080821115611823575f80fd5b818701915087601f830112611836575f80fd5b813581811115611844575f80fd5b88602061014083028501011115611859575f80fd5b95989497505060200194505050565b815161ffff1681526101408101602083015161188a602084018261ffff169052565b5060408301516118a0604084018261ffff169052565b5060608301516118b6606084018261ffff169052565b5060808301516118cc608084018261ffff169052565b5060a08301516118e260a084018261ffff169052565b5060c08301516118f860c084018261ffff169052565b5060e083015161190e60e084018261ffff169052565b506101008381015161ffff908116918401919091526101209384015116929091019190915290565b5f80828403610160811215611949575f80fd5b83359250610140601f198201121561195f575f80fd5b506020830190509250929050565b5f6020828403121561197d575f80fd5b61159b826116d8565b6020808252600e908201526d139bdd081c9959da5cdd195c995960921b604082015260600190565b634e487b7160e01b5f52601160045260245ffd5b61ffff8181168382160190808211156119dd576119dd6119ae565b5092915050565b818382375f9101908152919050565b60608152836060820152838560808301375f608085830101525f6080601f19601f87011683010190508360010b602083015261ffff8316604083015295945050505050565b634e487b7160e01b5f52603260045260245ffd5b5f813561054b81611684565b8135611a6381611684565b61ffff811661ffff19835416178255506020820135611a8181611684565b815463ffff00001916601082901b63ffff00001617825550611ac6611aa860408401611a4c565b825465ffff00000000191660209190911b65ffff0000000016178255565b611af4611ad560608401611a4c565b825461ffff60301b191660309190911b67ffff00000000000016178255565b611b24611b0360808401611a4c565b825461ffff60401b191660409190911b69ffff000000000000000016178255565b611b53611b3360a08401611a4c565b82805461ffff60501b191660509290921b61ffff60501b16919091179055565b611b82611b6260c08401611a4c565b82805461ffff60601b191660609290921b61ffff60601b16919091179055565b611bb1611b9160e08401611a4c565b82805461ffff60701b191660709290921b61ffff60701b16919091179055565b611be1611bc16101008401611a4c565b82805461ffff60801b191660809290921b61ffff60801b16919091179055565b611659611bf16101208401611a4c565b82805461ffff60901b191660909290921b61ffff60901b16919091179055565b61ffff8281168282160390808211156119dd576119dd6119ae565b600381810b9083900b01637fffffff8113637fffffff198212171561054b5761054b6119ae56fe6f479164c87fba6fdd2f427bfb98f653d9a754ee30a7d158c117e6909b52809e97667070c54ef182b0f5858b034beac1b6f3089aa2d3188bb1e8929f4fa9b929f9c0df78f5971a6ba2a9b0be5ece0fa71b8c42571ddc8c7cebc6807816bdc773a264697066735822122057b9b1b520549328c89e58d00a2e42b38e246cbe87cd47500eb4e0effe09435264736f6c63430008180033
Deployed Bytecode
0x608060405234801561000f575f80fd5b50600436106101bb575f3560e01c806379d84948116100f3578063ad5a7ba211610093578063d547741f1161006e578063d547741f146104ce578063f2fde38b146104e1578063f5b541a6146104f4578063ffb9c5be14610508575f80fd5b8063ad5a7ba214610495578063b4cdbf0f146104a8578063d0fe0841146104bb575f80fd5b80638da5cb5b116100ce5780638da5cb5b1461044d57806391d1485414610468578063a217fddf1461047b578063a9fc2b4014610482575f80fd5b806379d849481461031057806382bb0cef14610323578063889fa1dc14610336575f80fd5b806345cd247c1161015e578063579a698811610139578063579a6988146102c057806362725bf9146102e2578063715018a6146102f557806374b87574146102fd575f80fd5b806345cd247c1461027857806345d59bd61461028b5780634f558e791461029e575f80fd5b806322a736311161019957806322a736311461020f578063248a9ca3146102225780632f2ff15d1461025257806336568abe14610265575f80fd5b806301ffc9a7146101bf5780631563989b146101e757806316bab5af146101fc575b5f80fd5b6101d26101cd36600461165d565b61051b565b60405190151581526020015b60405180910390f35b6101fa6101f5366004611693565b610551565b005b6101fa61020a366004611693565b610615565b6101fa61021d366004611693565b610698565b6102446102303660046116c1565b5f9081526020819052604090206001015490565b6040519081526020016101de565b6101fa6102603660046116f3565b61071c565b6101fa6102733660046116f3565b610746565b6101fa61028636600461171d565b61077e565b6101fa6102993660046117aa565b610d17565b6101d26102ac3660046116c1565b5f9081526003602052604090205460ff1690565b6101d26102ce3660046116c1565b60036020525f908152604090205460ff1681565b6101fa6102f0366004611693565b610e98565b6101fa610f56565b6101fa61030b366004611693565b610f69565b6101fa61031e366004611693565b610feb565b6101fa610331366004611693565b61106b565b6104406103443660046116c1565b60408051610140810182525f80825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e081018290526101008101829052610120810191909152505f90815260026020908152604091829020825161014081018452905461ffff80821683526201000082048116938301939093526401000000008104831693820193909352600160301b830482166060820152600160401b830482166080820152600160501b8304821660a0820152600160601b8304821660c0820152600160701b8304821660e0820152600160801b83048216610100820152600160901b9092041661012082015290565b6040516101de9190611868565b6001546040516001600160a01b0390911681526020016101de565b6101d26104763660046116f3565b6110ed565b6102445f81565b6101fa610490366004611693565b611115565b6101fa6104a3366004611936565b6111d0565b6101fa6104b6366004611693565b61124b565b6101fa6104c9366004611693565b6112f2565b6101fa6104dc3660046116f3565b611374565b6101fa6104ef36600461196d565b611398565b6102445f80516020611c7483398151915281565b6101fa610516366004611693565b6113d5565b5f6001600160e01b03198216637965db0b60e01b148061054b57506301ffc9a760e01b6001600160e01b03198316145b92915050565b5f80516020611c7483398151915261056881611457565b5f8381526003602052604090205460ff1661059e5760405162461bcd60e51b815260040161059590611986565b60405180910390fd5b5f83815260026020526040812080548492906105bf90849061ffff166119c2565b82546101009290920a61ffff8181021990931691831602179091555f858152600260209081526040918290205491519190921681528592505f80516020611c9483398151915291015b60405180910390a2505050565b5f80516020611c7483398151915261062c81611457565b5f8381526003602052604090205460ff166106595760405162461bcd60e51b815260040161059590611986565b5f83815260026020908152604091829020805461ffff191661ffff8616908117909155915191825284915f80516020611c948339815191529101610608565b5f80516020611c748339815191526106af81611457565b5f8381526003602052604090205460ff166106dc5760405162461bcd60e51b815260040161059590611986565b5f83815260026020526040808220805465ffff00000000191664010000000061ffff8716021790555184915f80516020611c5483398151915291a2505050565b5f8281526020819052604090206001015461073681611457565b6107408383611461565b50505050565b6001600160a01b038116331461076f5760405163334bd91960e11b815260040160405180910390fd5b61077982826114f0565b505050565b5f80516020611c7483398151915261079581611457565b5f8581526003602052604090205460ff166107c25760405162461bcd60e51b815260040161059590611986565b5f858152600260209081526040808320905190929182916107e79189918991016119e4565b6040516020818303038152906040528051906020012090507fe6c6674428e502fa192b5717a5d35b76eea2a67e59beaccfc5f4065a81318290810361083957825462010000900461ffff169150610a46565b7fe8b3fd40cd7d32f03cbafdbe7ae951ab1895ded12d8ec3b40677e261d2b965e28103610875578254640100000000900461ffff169150610a46565b7f5a07f25944fcded6e26b5c7c56cac4c8e7c5e195e29f455cdc4b08127ac21ec481036108b0578254600160301b900461ffff169150610a46565b7f8d522c4792c9729dda56ce4fa80f4fe95692fb4d44fafc561a0d8f98697e5a1881036108eb578254600160401b900461ffff169150610a46565b7f34607c9bbfeb9c23509680f04363f298fdb0b5f9abe327304ecd1daca08cda9c8103610926578254600160501b900461ffff169150610a46565b7f3ea94bee138b89ca895191fa689eb00cdf408bbcef625238baf51727f82026898103610961578254600160601b900461ffff169150610a46565b7f4a8dbc2cfae01dce35d84da0364d4f69ee07b95ff225a47b3178d19b7301d1ec810361099c578254600160701b900461ffff169150610a46565b7fe4c6ed4977ab3c953f67319894e6365b524ac205c54b29cabfadcefd5ae0170f81036109d7578254600160801b900461ffff169150610a46565b7fd7fe74ba2795604f471717a6182ac81070ad95ecee0b7d8ebcfbec785af7e7968103610a0b57825461ffff169150610a46565b60405162461bcd60e51b815260206004820152601060248201526f496e76616c69642073746174206b657960801b6044820152606401610595565b5f610a518387611559565b90507fe6c6674428e502fa192b5717a5d35b76eea2a67e59beaccfc5f4065a813182908203610a9557835463ffff000019166201000061ffff831602178455610cce565b7fe8b3fd40cd7d32f03cbafdbe7ae951ab1895ded12d8ec3b40677e261d2b965e28203610adb57835465ffff00000000191664010000000061ffff831602178455610cce565b7f5a07f25944fcded6e26b5c7c56cac4c8e7c5e195e29f455cdc4b08127ac21ec48203610b1f57835461ffff60301b1916600160301b61ffff831602178455610cce565b7f8d522c4792c9729dda56ce4fa80f4fe95692fb4d44fafc561a0d8f98697e5a188203610b6357835461ffff60401b1916600160401b61ffff831602178455610cce565b7f34607c9bbfeb9c23509680f04363f298fdb0b5f9abe327304ecd1daca08cda9c8203610ba757835461ffff60501b1916600160501b61ffff831602178455610cce565b7f3ea94bee138b89ca895191fa689eb00cdf408bbcef625238baf51727f82026898203610beb57835461ffff60601b1916600160601b61ffff831602178455610cce565b7f4a8dbc2cfae01dce35d84da0364d4f69ee07b95ff225a47b3178d19b7301d1ec8203610c2f57835461ffff60701b1916600160701b61ffff831602178455610cce565b7fe4c6ed4977ab3c953f67319894e6365b524ac205c54b29cabfadcefd5ae0170f8203610c7357835461ffff60801b1916600160801b61ffff831602178455610cce565b7fd7fe74ba2795604f471717a6182ac81070ad95ecee0b7d8ebcfbec785af7e7968203610cce57835461ffff191661ffff8216908117855560405190815289905f80516020611c948339815191529060200160405180910390a25b887f838be4ef9ea67b223edf5f4e70d0522fb75138e2821f2d7e3149520f2b0623c189898985604051610d0494939291906119f3565b60405180910390a2505050505050505050565b5f80516020611c74833981519152610d2e81611457565b838214610d715760405162461bcd60e51b81526020600482015260116024820152704d69736d6174636865642061727261797360781b6044820152606401610595565b5f5b84811015610e905760035f878784818110610d9057610d90611a38565b602090810292909201358352508101919091526040015f205460ff16610e8857838382818110610dc257610dc2611a38565b9050610140020160025f888885818110610dde57610dde611a38565b9050602002013581526020019081526020015f208181610dfe9190611a58565b905050600160035f888885818110610e1857610e18611a38565b9050602002013581526020019081526020015f205f6101000a81548160ff021916908315150217905550858582818110610e5457610e54611a38565b905060200201357f486ac5a49171df463d084619edad47d61c6d525ea319ccde0ba3a8e6744038cf60405160405180910390a25b600101610d73565b505050505050565b5f80516020611c74833981519152610eaf81611457565b5f8381526003602052604090205460ff16610edc5760405162461bcd60e51b815260040161059590611986565b5f8381526002602052604090205461ffff6201000090910481169083168110610f0e57610f098382611c11565b610f10565b5f5b5f85815260026020526040808220805461ffff94909416620100000263ffff00001990941693909317909255905185915f80516020611c5483398151915291a250505050565b610f5e6115a2565b610f675f6115cf565b565b5f80516020611c74833981519152610f8081611457565b5f8381526003602052604090205460ff16610fad5760405162461bcd60e51b815260040161059590611986565b5f83815260026020526040808220805461ffff60401b1916600160401b61ffff8716021790555184915f80516020611c5483398151915291a2505050565b5f80516020611c7483398151915261100281611457565b5f8381526003602052604090205460ff1661102f5760405162461bcd60e51b815260040161059590611986565b5f83815260026020526040808220805463ffff000019166201000061ffff8716021790555184915f80516020611c5483398151915291a2505050565b5f80516020611c7483398151915261108281611457565b5f8381526003602052604090205460ff166110af5760405162461bcd60e51b815260040161059590611986565b5f83815260026020526040808220805461ffff60501b1916600160501b61ffff8716021790555184915f80516020611c5483398151915291a2505050565b5f918252602082815260408084206001600160a01b0393909316845291905290205460ff1690565b5f80516020611c7483398151915261112c81611457565b5f8381526003602052604090205460ff166111595760405162461bcd60e51b815260040161059590611986565b5f8381526002602052604090205461ffff9081169083168110611185576111808382611c11565b611187565b5f5b5f85815260026020908152604091829020805461ffff191661ffff949094169384179055905191825285915f80516020611c94833981519152910160405180910390a250505050565b5f80516020611c748339815191526111e781611457565b5f8381526003602052604090205460ff166112145760405162461bcd60e51b815260040161059590611986565b5f838152600260205260409020829061122d8282611a58565b505060405183905f80516020611c54833981519152905f90a2505050565b5f80516020611c7483398151915261126281611457565b5f8381526003602052604090205460ff1661128f5760405162461bcd60e51b815260040161059590611986565b5f83815260026020819052604090912080548492906112b990849062010000900461ffff166119c2565b92506101000a81548161ffff021916908361ffff160217905550825f80516020611c5483398151915260405160405180910390a2505050565b5f80516020611c7483398151915261130981611457565b5f8381526003602052604090205460ff166113365760405162461bcd60e51b815260040161059590611986565b5f83815260026020526040808220805461ffff60301b1916600160301b61ffff8716021790555184915f80516020611c5483398151915291a2505050565b5f8281526020819052604090206001015461138e81611457565b61074083836114f0565b6113a06115a2565b6001600160a01b0381166113c957604051631e4fbdf760e01b81525f6004820152602401610595565b6113d2816115cf565b50565b5f80516020611c748339815191526113ec81611457565b5f8381526003602052604090205460ff166114195760405162461bcd60e51b815260040161059590611986565b5f83815260026020526040808220805461ffff60601b1916600160601b61ffff8716021790555184915f80516020611c5483398151915291a2505050565b6113d28133611620565b5f61146c83836110ed565b6114e9575f838152602081815260408083206001600160a01b03861684529091529020805460ff191660011790556114a13390565b6001600160a01b0316826001600160a01b0316847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a450600161054b565b505f61054b565b5f6114fb83836110ed565b156114e9575f838152602081815260408083206001600160a01b0386168085529252808320805460ff1916905551339286917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a450600161054b565b5f8061156d600184900b61ffff8616611c2c565b90505f8160030b1215611583575f91505061054b565b61ffff8160030b131561159b5761ffff91505061054b565b9392505050565b6001546001600160a01b03163314610f675760405163118cdaa760e01b8152336004820152602401610595565b600180546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b61162a82826110ed565b6116595760405163e2517d3f60e01b81526001600160a01b038216600482015260248101839052604401610595565b5050565b5f6020828403121561166d575f80fd5b81356001600160e01b03198116811461159b575f80fd5b61ffff811681146113d2575f80fd5b5f80604083850312156116a4575f80fd5b8235915060208301356116b681611684565b809150509250929050565b5f602082840312156116d1575f80fd5b5035919050565b80356001600160a01b03811681146116ee575f80fd5b919050565b5f8060408385031215611704575f80fd5b82359150611714602084016116d8565b90509250929050565b5f805f8060608587031215611730575f80fd5b84359350602085013567ffffffffffffffff8082111561174e575f80fd5b818701915087601f830112611761575f80fd5b81358181111561176f575f80fd5b886020828501011115611780575f80fd5b60208301955080945050505060408501358060010b811461179f575f80fd5b939692955090935050565b5f805f80604085870312156117bd575f80fd5b843567ffffffffffffffff808211156117d4575f80fd5b818701915087601f8301126117e7575f80fd5b8135818111156117f5575f80fd5b8860208260051b8501011115611809575f80fd5b602092830196509450908601359080821115611823575f80fd5b818701915087601f830112611836575f80fd5b813581811115611844575f80fd5b88602061014083028501011115611859575f80fd5b95989497505060200194505050565b815161ffff1681526101408101602083015161188a602084018261ffff169052565b5060408301516118a0604084018261ffff169052565b5060608301516118b6606084018261ffff169052565b5060808301516118cc608084018261ffff169052565b5060a08301516118e260a084018261ffff169052565b5060c08301516118f860c084018261ffff169052565b5060e083015161190e60e084018261ffff169052565b506101008381015161ffff908116918401919091526101209384015116929091019190915290565b5f80828403610160811215611949575f80fd5b83359250610140601f198201121561195f575f80fd5b506020830190509250929050565b5f6020828403121561197d575f80fd5b61159b826116d8565b6020808252600e908201526d139bdd081c9959da5cdd195c995960921b604082015260600190565b634e487b7160e01b5f52601160045260245ffd5b61ffff8181168382160190808211156119dd576119dd6119ae565b5092915050565b818382375f9101908152919050565b60608152836060820152838560808301375f608085830101525f6080601f19601f87011683010190508360010b602083015261ffff8316604083015295945050505050565b634e487b7160e01b5f52603260045260245ffd5b5f813561054b81611684565b8135611a6381611684565b61ffff811661ffff19835416178255506020820135611a8181611684565b815463ffff00001916601082901b63ffff00001617825550611ac6611aa860408401611a4c565b825465ffff00000000191660209190911b65ffff0000000016178255565b611af4611ad560608401611a4c565b825461ffff60301b191660309190911b67ffff00000000000016178255565b611b24611b0360808401611a4c565b825461ffff60401b191660409190911b69ffff000000000000000016178255565b611b53611b3360a08401611a4c565b82805461ffff60501b191660509290921b61ffff60501b16919091179055565b611b82611b6260c08401611a4c565b82805461ffff60601b191660609290921b61ffff60601b16919091179055565b611bb1611b9160e08401611a4c565b82805461ffff60701b191660709290921b61ffff60701b16919091179055565b611be1611bc16101008401611a4c565b82805461ffff60801b191660809290921b61ffff60801b16919091179055565b611659611bf16101208401611a4c565b82805461ffff60901b191660909290921b61ffff60901b16919091179055565b61ffff8281168282160390808211156119dd576119dd6119ae565b600381810b9083900b01637fffffff8113637fffffff198212171561054b5761054b6119ae56fe6f479164c87fba6fdd2f427bfb98f653d9a754ee30a7d158c117e6909b52809e97667070c54ef182b0f5858b034beac1b6f3089aa2d3188bb1e8929f4fa9b929f9c0df78f5971a6ba2a9b0be5ece0fa71b8c42571ddc8c7cebc6807816bdc773a264697066735822122057b9b1b520549328c89e58d00a2e42b38e246cbe87cd47500eb4e0effe09435264736f6c63430008180033
Deployed Bytecode Sourcemap
293:7287:6:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2541:202:0;;;;;;:::i;:::-;;:::i;:::-;;;470:14:7;;463:22;445:41;;433:2;418:18;2541:202:0;;;;;;;;3791:257:6;;;;;;:::i;:::-;;:::i;:::-;;3499:228;;;;;;:::i;:::-;;:::i;2577:227::-;;;;;;:::i;:::-;;:::i;3786:120:0:-;;;;;;:::i;:::-;3851:7;3877:12;;;;;;;;;;:22;;;;3786:120;;;;1268:25:7;;;1256:2;1241:18;3786:120:0;1122:177:7;4202:136:0;;;;;;:::i;:::-;;:::i;5304:245::-;;;;;;:::i;:::-;;:::i;5100:1823:6:-;;;;;;:::i;:::-;;:::i;1255:457::-;;;;;;:::i;:::-;;:::i;7471:107::-;;;;;;:::i;:::-;7527:4;7550:21;;;:12;:21;;;;;;;;;7471:107;725:44;;;;;;:::i;:::-;;;;;;;;;;;;;;;;4636:310;;;;;;:::i;:::-;;:::i;2293:101:2:-;;;:::i;2346:225:6:-;;;;;;:::i;:::-;;:::i;3273:220::-;;;;;;:::i;:::-;;:::i;2810:226::-;;;;;;:::i;:::-;;:::i;7264:124::-;;;;;;:::i;:::-;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7362:19:6;;;;:10;:19;;;;;;;;;7355:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;7355:26:6;;;;;;;;-1:-1:-1;;;7355:26:6;;;;;;;;-1:-1:-1;;;7355:26:6;;;;;;;;-1:-1:-1;;;7355:26:6;;;;;;;;-1:-1:-1;;;7355:26:6;;;;;;;;-1:-1:-1;;;7355:26:6;;;;;;;;-1:-1:-1;;;7355:26:6;;;;;;;;;7264:124;;;;;;;;:::i;1638:85:2:-;1710:6;;1638:85;;-1:-1:-1;;;;;1710:6:2;;;5507:51:7;;5495:2;5480:18;1638:85:2;5361:203:7;2830:136:0;;;;;;:::i;:::-;;:::i;2196:49::-;;2241:4;2196:49;;4054:341:6;;;;;;:::i;:::-;;:::i;1816:270::-;;;;;;:::i;:::-;;:::i;4401:229::-;;;;;;:::i;:::-;;:::i;2116:224::-;;;;;;:::i;:::-;;:::i;4618:138:0:-;;;;;;:::i;:::-;;:::i;2543:215:2:-;;;;;;:::i;:::-;;:::i;356:66:6:-;;-1:-1:-1;;;;;;;;;;;356:66:6;;3042:225;;;;;;:::i;:::-;;:::i;2541:202:0:-;2626:4;-1:-1:-1;;;;;;2649:47:0;;-1:-1:-1;;;2649:47:0;;:87;;-1:-1:-1;;;;;;;;;;829:40:4;;;2700:36:0;2642:94;2541:202;-1:-1:-1;;2541:202:0:o;3791:257:6:-;-1:-1:-1;;;;;;;;;;;2473:16:0;2484:4;2473:10;:16::i;:::-;3898:21:6::1;::::0;;;:12:::1;:21;::::0;;;;;::::1;;3890:48;;;;-1:-1:-1::0;;;3890:48:6::1;;;;;;;:::i;:::-;;;;;;;;;3948:19;::::0;;;:10:::1;:19;::::0;;;;:35;;3977:6;;3948:19;:35:::1;::::0;3977:6;;3948:35:::1;;;:::i;:::-;::::0;;::::1;::::0;;;::::1;;::::0;;::::1;;::::0;;::::1;::::0;;::::1;;;::::0;;;-1:-1:-1;4015:19:6;;;:10:::1;:19;::::0;;;;;;;;:25;3998:43;;4015:25;;;::::1;6899:38:7::0;;4015:19:6;;-1:-1:-1;;;;;;;;;;;;3998:43:6;6872:18:7;3998:43:6::1;;;;;;;;3791:257:::0;;;:::o;3499:228::-;-1:-1:-1;;;;;;;;;;;2473:16:0;2484:4;2473:10;:16::i;:::-;3599:21:6::1;::::0;;;:12:::1;:21;::::0;;;;;::::1;;3591:48;;;;-1:-1:-1::0;;;3591:48:6::1;;;;;;;:::i;:::-;3649:19;::::0;;;:10:::1;:19;::::0;;;;;;;;:33;;-1:-1:-1;;3649:33:6::1;;::::0;::::1;::::0;;::::1;::::0;;;3697:23;;6899:38:7;;;3649:19:6;;-1:-1:-1;;;;;;;;;;;3697:23:6;6872:18:7;3697:23:6::1;6755:188:7::0;2577:227:6;-1:-1:-1;;;;;;;;;;;2473:16:0;2484:4;2473:10;:16::i;:::-;2680:21:6::1;::::0;;;:12:::1;:21;::::0;;;;;::::1;;2672:48;;;;-1:-1:-1::0;;;2672:48:6::1;;;;;;;:::i;:::-;2730:19;::::0;;;:10:::1;:19;::::0;;;;;:31;;-1:-1:-1;;2730:31:6::1;::::0;::::1;::::0;::::1;;;::::0;;2776:21;2730:19;;-1:-1:-1;;;;;;;;;;;2776:21:6;::::1;2577:227:::0;;;:::o;4202:136:0:-;3851:7;3877:12;;;;;;;;;;:22;;;2473:16;2484:4;2473:10;:16::i;:::-;4306:25:::1;4317:4;4323:7;4306:10;:25::i;:::-;;4202:136:::0;;;:::o;5304:245::-;-1:-1:-1;;;;;5397:34:0;;735:10:3;5397:34:0;5393:102;;5454:30;;-1:-1:-1;;;5454:30:0;;;;;;;;;;;5393:102;5505:37;5517:4;5523:18;5505:11;:37::i;:::-;;5304:245;;:::o;5100:1823:6:-;-1:-1:-1;;;;;;;;;;;2473:16:0;2484:4;2473:10;:16::i;:::-;5226:21:6::1;::::0;;;:12:::1;:21;::::0;;;;;::::1;;5218:48;;;;-1:-1:-1::0;;;5218:48:6::1;;;;;;;:::i;:::-;5276:26;5305:19:::0;;;:10:::1;:19;::::0;;;;;;;5400:25;;5305:19;;5276:26;;;5400:25:::1;::::0;5417:7;;;;5400:25:::1;;:::i;:::-;;;;;;;;;;;;;5390:36;;;;;;5372:54;;5452:15;5441:7;:26:::0;5437:676:::1;;5484:8:::0;;;;::::1;;;::::0;-1:-1:-1;5437:676:6::1;;;5522:16;5511:7;:27:::0;5507:606:::1;;5555:9:::0;;;;::::1;;;::::0;-1:-1:-1;5507:606:6::1;;;5594:16;5583:7;:27:::0;5579:534:::1;;5627:9:::0;;-1:-1:-1;;;5627:9:6;::::1;;;::::0;-1:-1:-1;5579:534:6::1;;;5666:16;5655:7;:27:::0;5651:462:::1;;5699:9:::0;;-1:-1:-1;;;5699:9:6;::::1;;;::::0;-1:-1:-1;5651:462:6::1;;;5738:16;5727:7;:27:::0;5723:390:::1;;5771:9:::0;;-1:-1:-1;;;5771:9:6;::::1;;;::::0;-1:-1:-1;5723:390:6::1;;;5810:16;5799:7;:27:::0;5795:318:::1;;5843:9:::0;;-1:-1:-1;;;5843:9:6;::::1;;;::::0;-1:-1:-1;5795:318:6::1;;;5882:16;5871:7;:27:::0;5867:246:::1;;5915:9:::0;;-1:-1:-1;;;5915:9:6;::::1;;;::::0;-1:-1:-1;5867:246:6::1;;;5954:16;5943:7;:27:::0;5939:174:::1;;5987:9:::0;;-1:-1:-1;;;5987:9:6;::::1;;;::::0;-1:-1:-1;5939:174:6::1;;;6026:18;6015:7;:29:::0;6011:102:::1;;6061:11:::0;;::::1;;::::0;-1:-1:-1;6011:102:6::1;;;6087:26;::::0;-1:-1:-1;;;6087:26:6;;7428:2:7;6087:26:6::1;::::0;::::1;7410:21:7::0;7467:2;7447:18;;;7440:30;-1:-1:-1;;;7486:18:7;;;7479:46;7542:18;;6087:26:6::1;7226:340:7::0;6011:102:6::1;6124:15;6142:32;6154:12;6168:5;6142:11;:32::i;:::-;6124:50;;6200:15;6189:7;:26:::0;6185:669:::1;;6217:19:::0;;-1:-1:-1;;6217:19:6::1;::::0;::::1;::::0;::::1;;;::::0;;6185:669:::1;;;6266:16;6255:7;:27:::0;6251:603:::1;;6284:20:::0;;-1:-1:-1;;6284:20:6::1;::::0;::::1;::::0;::::1;;;::::0;;6251:603:::1;;;6334:16;6323:7;:27:::0;6319:535:::1;;6352:20:::0;;-1:-1:-1;;;;6352:20:6::1;-1:-1:-1::0;;;6352:20:6::1;::::0;::::1;;;::::0;;6319:535:::1;;;6402:16;6391:7;:27:::0;6387:467:::1;;6420:20:::0;;-1:-1:-1;;;;6420:20:6::1;-1:-1:-1::0;;;6420:20:6::1;::::0;::::1;;;::::0;;6387:467:::1;;;6470:16;6459:7;:27:::0;6455:399:::1;;6488:20:::0;;-1:-1:-1;;;;6488:20:6::1;-1:-1:-1::0;;;6488:20:6::1;::::0;::::1;;;::::0;;6455:399:::1;;;6538:16;6527:7;:27:::0;6523:331:::1;;6556:20:::0;;-1:-1:-1;;;;6556:20:6::1;-1:-1:-1::0;;;6556:20:6::1;::::0;::::1;;;::::0;;6523:331:::1;;;6606:16;6595:7;:27:::0;6591:263:::1;;6624:20:::0;;-1:-1:-1;;;;6624:20:6::1;-1:-1:-1::0;;;6624:20:6::1;::::0;::::1;;;::::0;;6591:263:::1;;;6674:16;6663:7;:27:::0;6659:195:::1;;6692:20:::0;;-1:-1:-1;;;;6692:20:6::1;-1:-1:-1::0;;;6692:20:6::1;::::0;::::1;;;::::0;;6659:195:::1;;;6742:18;6731:7;:29:::0;6727:127:::1;;6776:22:::0;;-1:-1:-1;;6776:22:6::1;;::::0;::::1;::::0;;::::1;::::0;;6817:26:::1;::::0;6899:38:7;;;6825:7:6;;-1:-1:-1;;;;;;;;;;;6817:26:6;6887:2:7;6872:18;6817:26:6::1;;;;;;;6727:127;6882:7;6869:47;6891:7;;6900:5;6907:8;6869:47;;;;;;;;;:::i;:::-;;;;;;;;5208:1715;;;;5100:1823:::0;;;;;:::o;1255:457::-;-1:-1:-1;;;;;;;;;;;2473:16:0;2484:4;2473:10;:16::i;:::-;1405:26:6;;::::1;1397:56;;;::::0;-1:-1:-1;;;1397:56:6;;8337:2:7;1397:56:6::1;::::0;::::1;8319:21:7::0;8376:2;8356:18;;;8349:30;-1:-1:-1;;;8395:18:7;;;8388:47;8452:18;;1397:56:6::1;8135:341:7::0;1397:56:6::1;1469:9;1464:242;1484:14:::0;;::::1;1464:242;;;1524:12;:20;1537:3;;1541:1;1537:6;;;;;;;:::i;:::-;;::::0;;::::1;::::0;;;::::1;;1524:20:::0;;-1:-1:-1;1524:20:6;::::1;::::0;;;;;;-1:-1:-1;1524:20:6;;::::1;;1519:177;;1585:5;;1591:1;1585:8;;;;;;;:::i;:::-;;;;;;1564:10;:18;1575:3;;1579:1;1575:6;;;;;;;:::i;:::-;;;;;;;1564:18;;;;;;;;;;;:29;;;;;;:::i;:::-;;;;1634:4;1611:12;:20;1624:3;;1628:1;1624:6;;;;;;;:::i;:::-;;;;;;;1611:20;;;;;;;;;;;;:27;;;;;;;;;;;;;;;;;;1674:3;;1678:1;1674:6;;;;;;;:::i;:::-;;;;;;;1661:20;;;;;;;;;;1519:177;1500:3;;1464:242;;;;1255:457:::0;;;;;:::o;4636:310::-;-1:-1:-1;;;;;;;;;;;2473:16:0;2484:4;2473:10;:16::i;:::-;4740:21:6::1;::::0;;;:12:::1;:21;::::0;;;;;::::1;;4732:48;;;;-1:-1:-1::0;;;4732:48:6::1;;;;;;;:::i;:::-;4790:14;4807:19:::0;;;:10:::1;:19;::::0;;;;:22;::::1;::::0;;;::::1;::::0;::::1;::::0;4864:16;::::1;::::0;-1:-1:-1;4864:39:6::1;;4887:16;4897:6:::0;4887:7;:16:::1;:::i;:::-;4864:39;;;4883:1;4864:39;4839:19;::::0;;;:10:::1;:19;::::0;;;;;:64;;::::1;::::0;;;::::1;::::0;::::1;-1:-1:-1::0;;4839:64:6;;::::1;::::0;;;::::1;::::0;;;4918:21;;4850:7;;-1:-1:-1;;;;;;;;;;;4918:21:6;::::1;4722:224;4636:310:::0;;;:::o;2293:101:2:-;1531:13;:11;:13::i;:::-;2357:30:::1;2384:1;2357:18;:30::i;:::-;2293:101::o:0;2346:225:6:-;-1:-1:-1;;;;;;;;;;;2473:16:0;2484:4;2473:10;:16::i;:::-;2447:21:6::1;::::0;;;:12:::1;:21;::::0;;;;;::::1;;2439:48;;;;-1:-1:-1::0;;;2439:48:6::1;;;;;;;:::i;:::-;2497:19;::::0;;;:10:::1;:19;::::0;;;;;:31;;-1:-1:-1;;;;2497:31:6::1;-1:-1:-1::0;;;2497:31:6::1;::::0;::::1;;;::::0;;2543:21;2497:19;;-1:-1:-1;;;;;;;;;;;2543:21:6;::::1;2346:225:::0;;;:::o;3273:220::-;-1:-1:-1;;;;;;;;;;;2473:16:0;2484:4;2473:10;:16::i;:::-;3370:21:6::1;::::0;;;:12:::1;:21;::::0;;;;;::::1;;3362:48;;;;-1:-1:-1::0;;;3362:48:6::1;;;;;;;:::i;:::-;3420:19;::::0;;;:10:::1;:19;::::0;;;;;:30;;-1:-1:-1;;3420:30:6::1;::::0;::::1;::::0;::::1;;;::::0;;3465:21;3420:19;;-1:-1:-1;;;;;;;;;;;3465:21:6;::::1;3273:220:::0;;;:::o;2810:226::-;-1:-1:-1;;;;;;;;;;;2473:16:0;2484:4;2473:10;:16::i;:::-;2912:21:6::1;::::0;;;:12:::1;:21;::::0;;;;;::::1;;2904:48;;;;-1:-1:-1::0;;;2904:48:6::1;;;;;;;:::i;:::-;2962:19;::::0;;;:10:::1;:19;::::0;;;;;:31;;-1:-1:-1;;;;2962:31:6::1;-1:-1:-1::0;;;2962:31:6::1;::::0;::::1;;;::::0;;3008:21;2962:19;;-1:-1:-1;;;;;;;;;;;3008:21:6;::::1;2810:226:::0;;;:::o;2830:136:0:-;2907:4;2930:12;;;;;;;;;;;-1:-1:-1;;;;;2930:29:0;;;;;;;;;;;;;;;2830:136::o;4054:341:6:-;-1:-1:-1;;;;;;;;;;;2473:16:0;2484:4;2473:10;:16::i;:::-;4161:21:6::1;::::0;;;:12:::1;:21;::::0;;;;;::::1;;4153:48;;;;-1:-1:-1::0;;;4153:48:6::1;;;;;;;:::i;:::-;4211:14;4228:19:::0;;;:10:::1;:19;::::0;;;;:25;::::1;::::0;;::::1;::::0;4291:16;::::1;::::0;-1:-1:-1;4291:39:6::1;;4314:16;4324:6:::0;4314:7;:16:::1;:::i;:::-;4291:39;;;4310:1;4291:39;4263:19;::::0;;;:10:::1;:19;::::0;;;;;;;;:67;;-1:-1:-1;;4263:67:6::1;;::::0;;;::::1;::::0;;::::1;::::0;;4345:43;;6899:38:7;;;4263:19:6;;-1:-1:-1;;;;;;;;;;;4345:43:6;6872:18:7;4345:43:6::1;;;;;;;4143:252;4054:341:::0;;;:::o;1816:270::-;-1:-1:-1;;;;;;;;;;;2473:16:0;2484:4;2473:10;:16::i;:::-;1963:21:6::1;::::0;;;:12:::1;:21;::::0;;;;;::::1;;1955:48;;;;-1:-1:-1::0;;;1955:48:6::1;;;;;;;:::i;:::-;2013:19;::::0;;;:10:::1;:19;::::0;;;;2035:8;;2013:30:::1;2035:8:::0;2013:19;:30:::1;:::i;:::-;-1:-1:-1::0;;2058:21:6::1;::::0;2071:7;;-1:-1:-1;;;;;;;;;;;2058:21:6;;;::::1;1816:270:::0;;;:::o;4401:229::-;-1:-1:-1;;;;;;;;;;;2473:16:0;2484:4;2473:10;:16::i;:::-;4505:21:6::1;::::0;;;:12:::1;:21;::::0;;;;;::::1;;4497:48;;;;-1:-1:-1::0;;;4497:48:6::1;;;;;;;:::i;:::-;4555:19;::::0;;;:10:::1;:19;::::0;;;;;;;:32;;4581:6;;4555:10;:32:::1;::::0;4581:6;;4555:32;;::::1;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;4615:7;-1:-1:-1::0;;;;;;;;;;;4602:21:6::1;;;;;;;;;4401:229:::0;;;:::o;2116:224::-;-1:-1:-1;;;;;;;;;;;2473:16:0;2484:4;2473:10;:16::i;:::-;2216:21:6::1;::::0;;;:12:::1;:21;::::0;;;;;::::1;;2208:48;;;;-1:-1:-1::0;;;2208:48:6::1;;;;;;;:::i;:::-;2266:19;::::0;;;:10:::1;:19;::::0;;;;;:31;;-1:-1:-1;;;;2266:31:6::1;-1:-1:-1::0;;;2266:31:6::1;::::0;::::1;;;::::0;;2312:21;2266:19;;-1:-1:-1;;;;;;;;;;;2312:21:6;::::1;2116:224:::0;;;:::o;4618:138:0:-;3851:7;3877:12;;;;;;;;;;:22;;;2473:16;2484:4;2473:10;:16::i;:::-;4723:26:::1;4735:4;4741:7;4723:11;:26::i;2543:215:2:-:0;1531:13;:11;:13::i;:::-;-1:-1:-1;;;;;2627:22:2;::::1;2623:91;;2672:31;::::0;-1:-1:-1;;;2672:31:2;;2700:1:::1;2672:31;::::0;::::1;5507:51:7::0;5480:18;;2672:31:2::1;5361:203:7::0;2623:91:2::1;2723:28;2742:8;2723:18;:28::i;:::-;2543:215:::0;:::o;3042:225:6:-;-1:-1:-1;;;;;;;;;;;2473:16:0;2484:4;2473:10;:16::i;:::-;3143:21:6::1;::::0;;;:12:::1;:21;::::0;;;;;::::1;;3135:48;;;;-1:-1:-1::0;;;3135:48:6::1;;;;;;;:::i;:::-;3193:19;::::0;;;:10:::1;:19;::::0;;;;;:31;;-1:-1:-1;;;;3193:31:6::1;-1:-1:-1::0;;;3193:31:6::1;::::0;::::1;;;::::0;;3239:21;3193:19;;-1:-1:-1;;;;;;;;;;;3239:21:6;::::1;3042:225:::0;;;:::o;3175:103:0:-;3241:30;3252:4;735:10:3;3241::0;:30::i;6155:316::-;6232:4;6253:22;6261:4;6267:7;6253;:22::i;:::-;6248:217;;6291:6;:12;;;;;;;;;;;-1:-1:-1;;;;;6291:29:0;;;;;;;;;:36;;-1:-1:-1;;6291:36:0;6323:4;6291:36;;;6373:12;735:10:3;;656:96;6373:12:0;-1:-1:-1;;;;;6346:40:0;6364:7;-1:-1:-1;;;;;6346:40:0;6358:4;6346:40;;;;;;;;;;-1:-1:-1;6407:4:0;6400:11;;6248:217;-1:-1:-1;6449:5:0;6442:12;;6708:317;6786:4;6806:22;6814:4;6820:7;6806;:22::i;:::-;6802:217;;;6876:5;6844:12;;;;;;;;;;;-1:-1:-1;;;;;6844:29:0;;;;;;;;;;:37;;-1:-1:-1;;6844:37:0;;;6900:40;735:10:3;;6844:12:0;;6900:40;;6876:5;6900:40;-1:-1:-1;6961:4:0;6954:11;;6929:264:6;7001:6;;7034:37;7059:12;;;;7040:15;;;7034:37;:::i;:::-;7019:52;;7094:1;7085:6;:10;;;7081:24;;;7104:1;7097:8;;;;;7081:24;7128:5;7119:6;:14;;;7115:32;;;7142:5;7135:12;;;;;7115:32;7178:6;6929:264;-1:-1:-1;;;6929:264:6:o;1796:162:2:-;1710:6;;-1:-1:-1;;;;;1710:6:2;735:10:3;1855:23:2;1851:101;;1901:40;;-1:-1:-1;;;1901:40:2;;735:10:3;1901:40:2;;;5507:51:7;5480:18;;1901:40:2;5361:203:7;2912:187:2;3004:6;;;-1:-1:-1;;;;;3020:17:2;;;-1:-1:-1;;;;;;3020:17:2;;;;;;;3052:40;;3004:6;;;3020:17;3004:6;;3052:40;;2985:16;;3052:40;2975:124;2912:187;:::o;3408:197:0:-;3496:22;3504:4;3510:7;3496;:22::i;:::-;3491:108;;3541:47;;-1:-1:-1;;;3541:47:0;;-1:-1:-1;;;;;12586:32:7;;3541:47:0;;;12568:51:7;12635:18;;;12628:34;;;12541:18;;3541:47:0;12394:274:7;3491:108:0;3408:197;;:::o;14:286:7:-;72:6;125:2;113:9;104:7;100:23;96:32;93:52;;;141:1;138;131:12;93:52;167:23;;-1:-1:-1;;;;;;219:32:7;;209:43;;199:71;;266:1;263;256:12;497:117;582:6;575:5;571:18;564:5;561:29;551:57;;604:1;601;594:12;619:313;686:6;694;747:2;735:9;726:7;722:23;718:32;715:52;;;763:1;760;753:12;715:52;799:9;786:23;776:33;;859:2;848:9;844:18;831:32;872:30;896:5;872:30;:::i;:::-;921:5;911:15;;;619:313;;;;;:::o;937:180::-;996:6;1049:2;1037:9;1028:7;1024:23;1020:32;1017:52;;;1065:1;1062;1055:12;1017:52;-1:-1:-1;1088:23:7;;937:180;-1:-1:-1;937:180:7:o;1304:173::-;1372:20;;-1:-1:-1;;;;;1421:31:7;;1411:42;;1401:70;;1467:1;1464;1457:12;1401:70;1304:173;;;:::o;1482:254::-;1550:6;1558;1611:2;1599:9;1590:7;1586:23;1582:32;1579:52;;;1627:1;1624;1617:12;1579:52;1663:9;1650:23;1640:33;;1692:38;1726:2;1715:9;1711:18;1692:38;:::i;:::-;1682:48;;1482:254;;;;;:::o;1741:821::-;1828:6;1836;1844;1852;1905:2;1893:9;1884:7;1880:23;1876:32;1873:52;;;1921:1;1918;1911:12;1873:52;1957:9;1944:23;1934:33;;2018:2;2007:9;2003:18;1990:32;2041:18;2082:2;2074:6;2071:14;2068:34;;;2098:1;2095;2088:12;2068:34;2136:6;2125:9;2121:22;2111:32;;2181:7;2174:4;2170:2;2166:13;2162:27;2152:55;;2203:1;2200;2193:12;2152:55;2243:2;2230:16;2269:2;2261:6;2258:14;2255:34;;;2285:1;2282;2275:12;2255:34;2330:7;2325:2;2316:6;2312:2;2308:15;2304:24;2301:37;2298:57;;;2351:1;2348;2341:12;2298:57;2382:2;2378;2374:11;2364:21;;2404:6;2394:16;;;;;2460:2;2449:9;2445:18;2432:32;2507:5;2504:1;2493:20;2486:5;2483:31;2473:59;;2528:1;2525;2518:12;2473:59;1741:821;;;;-1:-1:-1;1741:821:7;;-1:-1:-1;;1741:821:7:o;2567:1141::-;2720:6;2728;2736;2744;2797:2;2785:9;2776:7;2772:23;2768:32;2765:52;;;2813:1;2810;2803:12;2765:52;2853:9;2840:23;2882:18;2923:2;2915:6;2912:14;2909:34;;;2939:1;2936;2929:12;2909:34;2977:6;2966:9;2962:22;2952:32;;3022:7;3015:4;3011:2;3007:13;3003:27;2993:55;;3044:1;3041;3034:12;2993:55;3084:2;3071:16;3110:2;3102:6;3099:14;3096:34;;;3126:1;3123;3116:12;3096:34;3181:7;3174:4;3164:6;3161:1;3157:14;3153:2;3149:23;3145:34;3142:47;3139:67;;;3202:1;3199;3192:12;3139:67;3233:4;3225:13;;;;-1:-1:-1;3257:6:7;-1:-1:-1;3301:20:7;;;3288:34;;3334:16;;;3331:36;;;3363:1;3360;3353:12;3331:36;3401:8;3390:9;3386:24;3376:34;;3448:7;3441:4;3437:2;3433:13;3429:27;3419:55;;3470:1;3467;3460:12;3419:55;3512:2;3499:16;3540:2;3530:8;3527:16;3524:36;;;3556:1;3553;3546:12;3524:36;3618:7;3611:4;3601:6;3591:8;3587:21;3583:2;3579:30;3575:41;3572:54;3569:74;;;3639:1;3636;3629:12;3569:74;2567:1141;;;;-1:-1:-1;;3670:4:7;3662:13;;-1:-1:-1;;;2567:1141:7:o;3993:1363::-;4216:13;;3974:6;3963:18;3951:31;;4185:3;4170:19;;4288:4;4280:6;4276:17;4270:24;4303:53;4350:4;4339:9;4335:20;4321:12;3974:6;3963:18;3951:31;;3898:90;4303:53;;4405:4;4397:6;4393:17;4387:24;4420:55;4469:4;4458:9;4454:20;4438:14;3974:6;3963:18;3951:31;;3898:90;4420:55;;4524:4;4516:6;4512:17;4506:24;4539:55;4588:4;4577:9;4573:20;4557:14;3974:6;3963:18;3951:31;;3898:90;4539:55;;4643:4;4635:6;4631:17;4625:24;4658:55;4707:4;4696:9;4692:20;4676:14;3974:6;3963:18;3951:31;;3898:90;4658:55;;4762:4;4754:6;4750:17;4744:24;4777:55;4826:4;4815:9;4811:20;4795:14;3974:6;3963:18;3951:31;;3898:90;4777:55;;4881:4;4873:6;4869:17;4863:24;4896:55;4945:4;4934:9;4930:20;4914:14;3974:6;3963:18;3951:31;;3898:90;4896:55;;5000:4;4992:6;4988:17;4982:24;5015:55;5064:4;5053:9;5049:20;5033:14;3974:6;3963:18;3951:31;;3898:90;5015:55;-1:-1:-1;5089:6:7;5132:15;;;5126:22;3974:6;3963:18;;;5191;;;3951:31;;;;5229:6;5272:15;;;5266:22;3963:18;5331;;;;3951:31;;;;3993:1363;:::o;5569:342::-;5668:6;5676;5720:9;5711:7;5707:23;5750:3;5746:2;5742:12;5739:32;;;5767:1;5764;5757:12;5739:32;5790:23;;;-1:-1:-1;5847:3:7;-1:-1:-1;;5829:16:7;;5825:26;5822:46;;;5864:1;5861;5854:12;5822:46;;5902:2;5891:9;5887:18;5877:28;;5569:342;;;;;:::o;5916:186::-;5975:6;6028:2;6016:9;6007:7;6003:23;5999:32;5996:52;;;6044:1;6041;6034:12;5996:52;6067:29;6086:9;6067:29;:::i;6107:338::-;6309:2;6291:21;;;6348:2;6328:18;;;6321:30;-1:-1:-1;;;6382:2:7;6367:18;;6360:44;6436:2;6421:18;;6107:338::o;6450:127::-;6511:10;6506:3;6502:20;6499:1;6492:31;6542:4;6539:1;6532:15;6566:4;6563:1;6556:15;6582:168;6649:6;6675:10;;;6687;;;6671:27;;6710:11;;;6707:37;;;6724:18;;:::i;:::-;6707:37;6582:168;;;;:::o;6948:273::-;7133:6;7125;7120:3;7107:33;7089:3;7159:16;;7184:13;;;7159:16;6948:273;-1:-1:-1;6948:273:7:o;7571:559::-;7780:2;7769:9;7762:21;7819:6;7814:2;7803:9;7799:18;7792:34;7877:6;7869;7863:3;7852:9;7848:19;7835:49;7934:1;7928:3;7919:6;7908:9;7904:22;7900:32;7893:43;7743:4;8004:3;7997:2;7993:7;7988:2;7980:6;7976:15;7972:29;7961:9;7957:45;7953:55;7945:63;;8060:6;8057:1;8046:21;8039:4;8028:9;8024:20;8017:51;8116:6;8108;8104:19;8099:2;8088:9;8084:18;8077:47;7571:559;;;;;;;:::o;8481:127::-;8542:10;8537:3;8533:20;8530:1;8523:31;8573:4;8570:1;8563:15;8597:4;8594:1;8587:15;8613:174;8657:11;8709:3;8696:17;8722:30;8746:5;8722:30;:::i;10691:1323::-;10864:5;10851:19;10879:32;10903:7;10879:32;:::i;:::-;10979:6;10970:7;10966:20;10957:5;10953:10;10946:4;10940:11;10936:28;10933:54;10927:4;10920:68;;11036:2;11029:5;11025:14;11012:28;11049:32;11073:7;11049:32;:::i;:::-;8884:11;;-1:-1:-1;;8920:24:7;8954:2;8950:14;;;8966:10;8946:31;8917:61;8904:75;;11090:60;11159:97;11213:42;11251:2;11244:5;11240:14;11213:42;:::i;:::-;9084:11;;-1:-1:-1;;9120:28:7;9158:2;9154:14;;;;9170;9150:35;9117:69;9104:83;;8990:203;11159:97;11265;11319:42;11357:2;11350:5;11346:14;11319:42;:::i;:::-;9292:11;;-1:-1:-1;;;;9328:32:7;9370:2;9366:14;;;;9382:18;9362:39;9325:77;9312:91;;9198:211;11265:97;11371:98;11425:43;11463:3;11456:5;11452:15;11425:43;:::i;:::-;9508:11;;-1:-1:-1;;;;9544:36:7;9590:2;9586:14;;;;9602:22;9582:43;9541:85;9528:99;;9414:219;11371:98;11478:99;11533:43;11571:3;11564:5;11560:15;11533:43;:::i;:::-;11527:4;9733:11;;-1:-1:-1;;;;9769:28:7;9823:2;9803:14;;;;-1:-1:-1;;;9799:35:7;9766:69;;;;9753:83;;9638:204;11478:99;11586;11641:43;11679:3;11672:5;11668:15;11641:43;:::i;:::-;11635:4;9942:11;;-1:-1:-1;;;;9978:28:7;10032:2;10012:14;;;;-1:-1:-1;;;10008:35:7;9975:69;;;;9962:83;;9847:204;11586:99;11694;11749:43;11787:3;11780:5;11776:15;11749:43;:::i;:::-;11743:4;10151:11;;-1:-1:-1;;;;10187:29:7;10243:3;10222:15;;;;-1:-1:-1;;;10218:37:7;10184:72;;;;10171:86;;10056:207;11694:99;11802;11857:43;11895:3;11888:5;11884:15;11857:43;:::i;:::-;11851:4;10363:11;;-1:-1:-1;;;;10399:29:7;10455:3;10434:15;;;;-1:-1:-1;;;10430:37:7;10396:72;;;;10383:86;;10268:207;11802:99;11910:98;11964:43;12002:3;11995:5;11991:15;11964:43;:::i;:::-;11958:4;10574:11;;-1:-1:-1;;;;10610:29:7;10666:3;10645:15;;;;-1:-1:-1;;;10641:37:7;10607:72;;;;10594:86;;10480:206;12019:171;12087:6;12126:10;;;12114;;;12110:27;;12149:12;;;12146:38;;;12164:18;;:::i;12195:194::-;12291:1;12262:16;;;12280;;;;12258:39;12347:10;12312:20;;-1:-1:-1;;12334:25:7;;12309:51;12306:77;;;12363:18;;:::i
Swarm Source
ipfs://57b9b1b520549328c89e58d00a2e42b38e246cbe87cd47500eb4e0effe094352
Loading...
Loading
Loading...
Loading
Loading...
Loading
Net Worth in USD
$0.00
Net Worth in MON
Multichain Portfolio | 35 Chains
| Chain | Token | Portfolio % | Price | Amount | Value |
|---|
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.