More Info
Private Name Tags
ContractCreator
TokenTracker
Latest 25 from a total of 14,165 transactions
| Transaction Hash |
|
Block
|
From
|
To
|
|||||
|---|---|---|---|---|---|---|---|---|---|
| 0x61932052 | 7828455 | 531 days ago | IN | 0 MOVR | 0.00310762 | ||||
| 0x61932052 | 7814483 | 532 days ago | IN | 0 MOVR | 0.00310762 | ||||
| 0x61932052 | 7800545 | 533 days ago | IN | 0 MOVR | 0.00310762 | ||||
| 0x61932052 | 7786573 | 534 days ago | IN | 0 MOVR | 0.00177305 | ||||
| 0x61932052 | 7772646 | 535 days ago | IN | 0 MOVR | 0.00286547 | ||||
| 0x61932052 | 7758702 | 536 days ago | IN | 0 MOVR | 0.00310762 | ||||
| 0x61932052 | 7744716 | 537 days ago | IN | 0 MOVR | 0.00119724 | ||||
| 0x61932052 | 7730692 | 538 days ago | IN | 0 MOVR | 0.00195031 | ||||
| 0x61932052 | 7716723 | 539 days ago | IN | 0 MOVR | 0.00127894 | ||||
| 0x61932052 | 7702717 | 540 days ago | IN | 0 MOVR | 0.00310762 | ||||
| 0x61932052 | 7688636 | 541 days ago | IN | 0 MOVR | 0.00293497 | ||||
| 0x61932052 | 7674654 | 542 days ago | IN | 0 MOVR | 0.00236897 | ||||
| 0x61932052 | 7660661 | 543 days ago | IN | 0 MOVR | 0.00310762 | ||||
| 0x61932052 | 7646602 | 544 days ago | IN | 0 MOVR | 0.00129691 | ||||
| 0x61932052 | 7632583 | 545 days ago | IN | 0 MOVR | 0.00415929 | ||||
| 0x61932052 | 7618571 | 546 days ago | IN | 0 MOVR | 0.00310762 | ||||
| 0x61932052 | 7604557 | 547 days ago | IN | 0 MOVR | 0.00293497 | ||||
| 0x61932052 | 7590521 | 548 days ago | IN | 0 MOVR | 0.00284234 | ||||
| 0x61932052 | 7576429 | 549 days ago | IN | 0 MOVR | 0.00310762 | ||||
| 0x61932052 | 7562356 | 550 days ago | IN | 0 MOVR | 0.00310762 | ||||
| 0x61932052 | 7548203 | 551 days ago | IN | 0 MOVR | 0.00273094 | ||||
| 0x61932052 | 7534068 | 552 days ago | IN | 0 MOVR | 0.0026888 | ||||
| 0x61932052 | 7520039 | 553 days ago | IN | 0 MOVR | 0.00294164 | ||||
| 0x61932052 | 7505947 | 554 days ago | IN | 0 MOVR | 0.00310762 | ||||
| 0x61932052 | 7491862 | 555 days ago | IN | 0 MOVR | 0.00310762 |
Latest 25 internal transactions (View All)
| Parent Transaction Hash | Block | From | To | |||
|---|---|---|---|---|---|---|
| 3705462 | 1071 days ago | 0.0002904 MOVR | ||||
| 3588619 | 1087 days ago | 0.0002904 MOVR | ||||
| 3585478 | 1088 days ago | 0.00022687 MOVR | ||||
| 3583614 | 1088 days ago | 0.00022687 MOVR | ||||
| 3579014 | 1089 days ago | 0.00022687 MOVR | ||||
| 3578990 | 1089 days ago | 0.00022687 MOVR | ||||
| 3577869 | 1089 days ago | 0.00022687 MOVR | ||||
| 3575500 | 1089 days ago | 0.00022687 MOVR | ||||
| 3572599 | 1090 days ago | 0.00022687 MOVR | ||||
| 3571657 | 1090 days ago | 0.00022687 MOVR | ||||
| 3571550 | 1090 days ago | 0.00022687 MOVR | ||||
| 3571522 | 1090 days ago | 0.00022687 MOVR | ||||
| 3562226 | 1091 days ago | 0.00022687 MOVR | ||||
| 3560879 | 1091 days ago | 0.0002904 MOVR | ||||
| 3552495 | 1092 days ago | 0.0002904 MOVR | ||||
| 3551090 | 1093 days ago | 0.00022687 MOVR | ||||
| 3550373 | 1093 days ago | 0.00022687 MOVR | ||||
| 3549546 | 1093 days ago | 0.00037075 MOVR | ||||
| 3549432 | 1093 days ago | 0.00022687 MOVR | ||||
| 3546888 | 1093 days ago | 0.00022687 MOVR | ||||
| 3546256 | 1093 days ago | 0.00022687 MOVR | ||||
| 3533497 | 1095 days ago | 0.00022687 MOVR | ||||
| 3532793 | 1095 days ago | 0.00022687 MOVR | ||||
| 3532342 | 1095 days ago | 0.0002904 MOVR | ||||
| 3531727 | 1095 days ago | 0.00022687 MOVR |
Cross-Chain Transactions
Loading...
Loading
Contract Name:
Gelato
Compiler Version
v0.8.14+commit.80d49f37
Contract Source Code (Solidity Standard Json-Input format)
// SPDX-License-Identifier: MIT
pragma solidity 0.8.14;
import {LibDiamond} from "./libraries/diamond/standard/LibDiamond.sol";
import {IDiamondLoupe} from "./interfaces/standard/IDiamondLoupe.sol";
import {IDiamondCut} from "./interfaces/standard/IDiamondCut.sol";
import {IERC173} from "./interfaces/standard/IERC173.sol";
import {IERC165} from "./interfaces/standard/IERC165.sol";
contract Gelato {
// more arguments are added to this struct
// this avoids stack too deep errors
struct DiamondArgs {
address owner;
}
constructor(
IDiamondCut.FacetCut[] memory _diamondCut,
DiamondArgs memory _args
) payable {
LibDiamond.diamondCut(_diamondCut, address(0), new bytes(0));
LibDiamond.setContractOwner(_args.owner);
LibDiamond.DiamondStorage storage ds = LibDiamond.diamondStorage();
// adding ERC165 data
ds.supportedInterfaces[type(IERC165).interfaceId] = true;
ds.supportedInterfaces[type(IDiamondCut).interfaceId] = true;
ds.supportedInterfaces[type(IDiamondLoupe).interfaceId] = true;
ds.supportedInterfaces[type(IERC173).interfaceId] = true;
}
// Find facet for function that is called and execute the
// function if a facet is found and return any value.
// solhint-disable-next-line no-complex-fallback
fallback() external payable {
LibDiamond.DiamondStorage storage ds;
bytes32 position = LibDiamond.DIAMOND_STORAGE_POSITION;
assembly {
ds.slot := position
}
address facet = ds.selectorToFacetAndPosition[msg.sig].facetAddress;
require(facet != address(0), "Gelato: Function does not exist");
assembly {
calldatacopy(0, 0, calldatasize())
let result := delegatecall(gas(), facet, 0, calldatasize(), 0, 0)
returndatacopy(0, 0, returndatasize())
switch result
case 0 {
revert(0, returndatasize())
}
default {
return(0, returndatasize())
}
}
}
// solhint-disable-next-line no-empty-blocks, ordering
receive() external payable {}
}// SPDX-License-Identifier: MIT pragma solidity 0.8.14; /******************************************************************************\ * Author: Nick Mudge <[email protected]> (https://twitter.com/mudgen) * EIP-2535 Diamond Standard: https://eips.ethereum.org/EIPS/eip-2535 /******************************************************************************/ interface IDiamondCut { enum FacetCutAction { Add, Replace, Remove } // Add=0, Replace=1, Remove=2 struct FacetCut { address facetAddress; FacetCutAction action; bytes4[] functionSelectors; } event DiamondCut(FacetCut[] _diamondCut, address _init, bytes _calldata); /// @notice Add/replace/remove any number of functions and optionally execute /// a function with delegatecall /// @param _diamondCut Contains the facet addresses and function selectors /// @param _init The address of the contract or facet to execute _calldata /// @param _calldata A function call, including function selector and arguments /// _calldata is executed with delegatecall on _init function diamondCut( FacetCut[] calldata _diamondCut, address _init, bytes calldata _calldata ) external; }
// SPDX-License-Identifier: MIT pragma solidity 0.8.14; /******************************************************************************\ * Author: Nick Mudge <[email protected]> (https://twitter.com/mudgen) * EIP-2535 Diamond Standard: https://eips.ethereum.org/EIPS/eip-2535 /******************************************************************************/ // A loupe is a small magnifying glass used to look at diamonds. // These functions look at diamonds interface IDiamondLoupe { /// These functions are expected to be called frequently /// by tools. struct Facet { address facetAddress; bytes4[] functionSelectors; } /// @notice Gets all facet addresses and their four byte function selectors. /// @return facets_ Facet function facets() external view returns (Facet[] memory facets_); /// @notice Gets all the function selectors supported by a specific facet. /// @param _facet The facet address. /// @return facetFunctionSelectors_ function facetFunctionSelectors(address _facet) external view returns (bytes4[] memory facetFunctionSelectors_); /// @notice Get all the facet addresses used by a diamond. /// @return facetAddresses_ function facetAddresses() external view returns (address[] memory facetAddresses_); /// @notice Gets the facet that supports the given selector. /// @dev If facet is not found return address(0). /// @param _functionSelector The function selector. /// @return facetAddress_ The facet address. function facetAddress(bytes4 _functionSelector) external view returns (address facetAddress_); }
// SPDX-License-Identifier: MIT
pragma solidity 0.8.14;
interface IERC165 {
/// @notice Query if a contract implements an interface
/// @param interfaceId The interface identifier, as specified in ERC-165
/// @dev Interface identification is specified in ERC-165. This function
/// uses less than 30,000 gas.
/// @return `true` if the contract implements `interfaceID` and
/// `interfaceID` is not 0xffffffff, `false` otherwise
function supportsInterface(bytes4 interfaceId) external view returns (bool);
}// SPDX-License-Identifier: MIT
pragma solidity 0.8.14;
/// @title ERC-173 Contract Ownership Standard
/// Note: the ERC-165 identifier for this interface is 0x7f5828d0
/* is ERC165 */
interface IERC173 {
/// @dev This emits when ownership of a contract changes.
event OwnershipTransferred(
address indexed previousOwner,
address indexed newOwner
);
/// @notice Set the address of the new owner of the contract
/// @dev Set _newOwner to address(0) to renounce any ownership.
/// @param _newOwner The address of the new owner of the contract
function transferOwnership(address _newOwner) external;
/// @notice Get the address of the owner
/// @return owner_ The address of the owner.
function owner() external view returns (address owner_);
}// SPDX-License-Identifier: UNLICENSED
pragma solidity 0.8.14;
library GelatoBytes {
function calldataSliceSelector(bytes calldata _bytes)
internal
pure
returns (bytes4 selector)
{
selector =
_bytes[0] |
(bytes4(_bytes[1]) >> 8) |
(bytes4(_bytes[2]) >> 16) |
(bytes4(_bytes[3]) >> 24);
}
function memorySliceSelector(bytes memory _bytes)
internal
pure
returns (bytes4 selector)
{
selector =
_bytes[0] |
(bytes4(_bytes[1]) >> 8) |
(bytes4(_bytes[2]) >> 16) |
(bytes4(_bytes[3]) >> 24);
}
function revertWithError(bytes memory _bytes, string memory _tracingInfo)
internal
pure
{
// 68: 32-location, 32-length, 4-ErrorSelector, UTF-8 err
if (_bytes.length % 32 == 4) {
bytes4 selector;
assembly {
selector := mload(add(0x20, _bytes))
}
if (selector == 0x08c379a0) {
// Function selector for Error(string)
assembly {
_bytes := add(_bytes, 68)
}
revert(string(abi.encodePacked(_tracingInfo, string(_bytes))));
} else {
revert(
string(abi.encodePacked(_tracingInfo, "NoErrorSelector"))
);
}
} else {
revert(
string(abi.encodePacked(_tracingInfo, "UnexpectedReturndata"))
);
}
}
function returnError(bytes memory _bytes, string memory _tracingInfo)
internal
pure
returns (string memory)
{
// 68: 32-location, 32-length, 4-ErrorSelector, UTF-8 err
if (_bytes.length % 32 == 4) {
bytes4 selector;
assembly {
selector := mload(add(0x20, _bytes))
}
if (selector == 0x08c379a0) {
// Function selector for Error(string)
assembly {
_bytes := add(_bytes, 68)
}
return string(abi.encodePacked(_tracingInfo, string(_bytes)));
} else {
return
string(abi.encodePacked(_tracingInfo, "NoErrorSelector"));
}
} else {
return
string(abi.encodePacked(_tracingInfo, "UnexpectedReturndata"));
}
}
}// SPDX-License-Identifier: MIT pragma solidity 0.8.14; // https://github.com/mudgen/diamond-3/blob/b009cd08b7822bad727bbcc47aa1b50d8b50f7f0/contracts/libraries/LibDiamond.sol#L1 /******************************************************************************\ * Author: Nick Mudge <[email protected]> (https://twitter.com/mudgen) * EIP-2535 Diamond Standard: https://eips.ethereum.org/EIPS/eip-2535 /******************************************************************************/ import "../../../interfaces/standard/IDiamondCut.sol"; // Custom due to incorrect string casting (non UTF-8 formatted) import {GelatoBytes} from "../../GelatoBytes.sol"; library LibDiamond { bytes32 constant DIAMOND_STORAGE_POSITION = keccak256("diamond.standard.diamond.storage"); struct FacetAddressAndPosition { address facetAddress; uint16 functionSelectorPosition; // position in facetFunctionSelectors.functionSelectors array } struct FacetFunctionSelectors { bytes4[] functionSelectors; uint16 facetAddressPosition; // position of facetAddress in facetAddresses array } struct DiamondStorage { // maps function selector to the facet address and // the position of the selector in the facetFunctionSelectors.selectors array mapping(bytes4 => FacetAddressAndPosition) selectorToFacetAndPosition; // maps facet addresses to function selectors mapping(address => FacetFunctionSelectors) facetFunctionSelectors; // facet addresses address[] facetAddresses; // Used to query if a contract implements an interface. // Used to implement ERC-165. mapping(bytes4 => bool) supportedInterfaces; // owner of the contract address contractOwner; } function diamondStorage() internal pure returns (DiamondStorage storage ds) { bytes32 position = DIAMOND_STORAGE_POSITION; assembly { ds.slot := position } } event OwnershipTransferred( address indexed previousOwner, address indexed newOwner ); function setContractOwner(address _newOwner) internal { DiamondStorage storage ds = diamondStorage(); address previousOwner = ds.contractOwner; ds.contractOwner = _newOwner; emit OwnershipTransferred(previousOwner, _newOwner); } function contractOwner() internal view returns (address contractOwner_) { contractOwner_ = diamondStorage().contractOwner; } function isContractOwner(address _guy) internal view returns (bool) { return _guy == contractOwner(); } function enforceIsContractOwner() internal view { require( msg.sender == diamondStorage().contractOwner, "LibDiamond: Must be contract owner" ); } event DiamondCut( IDiamondCut.FacetCut[] _diamondCut, address _init, bytes _calldata ); // Internal function version of diamondCut function diamondCut( IDiamondCut.FacetCut[] memory _diamondCut, address _init, bytes memory _calldata ) internal { for ( uint256 facetIndex; facetIndex < _diamondCut.length; facetIndex++ ) { IDiamondCut.FacetCutAction action = _diamondCut[facetIndex].action; if (action == IDiamondCut.FacetCutAction.Add) { addFunctions( _diamondCut[facetIndex].facetAddress, _diamondCut[facetIndex].functionSelectors ); } else if (action == IDiamondCut.FacetCutAction.Replace) { replaceFunctions( _diamondCut[facetIndex].facetAddress, _diamondCut[facetIndex].functionSelectors ); } else if (action == IDiamondCut.FacetCutAction.Remove) { removeFunctions( _diamondCut[facetIndex].facetAddress, _diamondCut[facetIndex].functionSelectors ); } else { revert("LibDiamondCut: Incorrect FacetCutAction"); } } emit DiamondCut(_diamondCut, _init, _calldata); initializeDiamondCut(_init, _calldata); } function addFunctions( address _facetAddress, bytes4[] memory _functionSelectors ) internal { require( _functionSelectors.length > 0, "LibDiamondCut: No selectors in facet to cut" ); DiamondStorage storage ds = diamondStorage(); // uint16 selectorCount = uint16(diamondStorage().selectors.length); require( _facetAddress != address(0), "LibDiamondCut: Add facet can't be address(0)" ); uint16 selectorPosition = uint16( ds.facetFunctionSelectors[_facetAddress].functionSelectors.length ); // add new facet address if it does not exist if (selectorPosition == 0) { enforceHasContractCode( _facetAddress, "LibDiamondCut: New facet has no code" ); ds .facetFunctionSelectors[_facetAddress] .facetAddressPosition = uint16(ds.facetAddresses.length); ds.facetAddresses.push(_facetAddress); } for ( uint256 selectorIndex; selectorIndex < _functionSelectors.length; selectorIndex++ ) { bytes4 selector = _functionSelectors[selectorIndex]; address oldFacetAddress = ds .selectorToFacetAndPosition[selector] .facetAddress; require( oldFacetAddress == address(0), "LibDiamondCut: Can't add function that already exists" ); ds.facetFunctionSelectors[_facetAddress].functionSelectors.push( selector ); ds .selectorToFacetAndPosition[selector] .facetAddress = _facetAddress; ds .selectorToFacetAndPosition[selector] .functionSelectorPosition = selectorPosition; selectorPosition++; } } function replaceFunctions( address _facetAddress, bytes4[] memory _functionSelectors ) internal { require( _functionSelectors.length > 0, "LibDiamondCut: No selectors in facet to cut" ); DiamondStorage storage ds = diamondStorage(); require( _facetAddress != address(0), "LibDiamondCut: Add facet can't be address(0)" ); uint16 selectorPosition = uint16( ds.facetFunctionSelectors[_facetAddress].functionSelectors.length ); // add new facet address if it does not exist if (selectorPosition == 0) { enforceHasContractCode( _facetAddress, "LibDiamondCut: New facet has no code" ); ds .facetFunctionSelectors[_facetAddress] .facetAddressPosition = uint16(ds.facetAddresses.length); ds.facetAddresses.push(_facetAddress); } for ( uint256 selectorIndex; selectorIndex < _functionSelectors.length; selectorIndex++ ) { bytes4 selector = _functionSelectors[selectorIndex]; address oldFacetAddress = ds .selectorToFacetAndPosition[selector] .facetAddress; require( oldFacetAddress != _facetAddress, "LibDiamondCut: Can't replace function with same function" ); removeFunction(oldFacetAddress, selector); // add function ds .selectorToFacetAndPosition[selector] .functionSelectorPosition = selectorPosition; ds.facetFunctionSelectors[_facetAddress].functionSelectors.push( selector ); ds .selectorToFacetAndPosition[selector] .facetAddress = _facetAddress; selectorPosition++; } } function removeFunctions( address _facetAddress, bytes4[] memory _functionSelectors ) internal { require( _functionSelectors.length > 0, "LibDiamondCut: No selectors in facet to cut" ); DiamondStorage storage ds = diamondStorage(); // if function does not exist then do nothing and return require( _facetAddress == address(0), "LibDiamondCut: Remove facet address must be address(0)" ); for ( uint256 selectorIndex; selectorIndex < _functionSelectors.length; selectorIndex++ ) { bytes4 selector = _functionSelectors[selectorIndex]; address oldFacetAddress = ds .selectorToFacetAndPosition[selector] .facetAddress; removeFunction(oldFacetAddress, selector); } } function removeFunction(address _facetAddress, bytes4 _selector) internal { DiamondStorage storage ds = diamondStorage(); require( _facetAddress != address(0), "LibDiamondCut: Can't remove function that doesn't exist" ); // an immutable function is a function defined directly in a diamond require( _facetAddress != address(this), "LibDiamondCut: Can't remove immutable function" ); // replace selector with last selector, then delete last selector uint256 selectorPosition = ds .selectorToFacetAndPosition[_selector] .functionSelectorPosition; uint256 lastSelectorPosition = ds .facetFunctionSelectors[_facetAddress] .functionSelectors .length - 1; // if not the same then replace _selector with lastSelector if (selectorPosition != lastSelectorPosition) { bytes4 lastSelector = ds .facetFunctionSelectors[_facetAddress] .functionSelectors[lastSelectorPosition]; ds.facetFunctionSelectors[_facetAddress].functionSelectors[ selectorPosition ] = lastSelector; ds .selectorToFacetAndPosition[lastSelector] .functionSelectorPosition = uint16(selectorPosition); } // delete the last selector ds.facetFunctionSelectors[_facetAddress].functionSelectors.pop(); delete ds.selectorToFacetAndPosition[_selector]; // if no more selectors for facet address then delete the facet address if (lastSelectorPosition == 0) { // replace facet address with last facet address and delete last facet address uint256 lastFacetAddressPosition = ds.facetAddresses.length - 1; uint256 facetAddressPosition = ds .facetFunctionSelectors[_facetAddress] .facetAddressPosition; if (facetAddressPosition != lastFacetAddressPosition) { address lastFacetAddress = ds.facetAddresses[ lastFacetAddressPosition ]; ds.facetAddresses[facetAddressPosition] = lastFacetAddress; ds .facetFunctionSelectors[lastFacetAddress] .facetAddressPosition = uint16(facetAddressPosition); } ds.facetAddresses.pop(); delete ds .facetFunctionSelectors[_facetAddress] .facetAddressPosition; } } function initializeDiamondCut(address _init, bytes memory _calldata) internal { if (_init == address(0)) { require( _calldata.length == 0, "LibDiamondCut: _init is address(0) but_calldata is not empty" ); } else { require( _calldata.length > 0, "LibDiamondCut: _calldata is empty but _init is not address(0)" ); if (_init != address(this)) { enforceHasContractCode( _init, "LibDiamondCut: _init address has no code" ); } (bool success, bytes memory error) = _init.delegatecall(_calldata); if (!success) { if (error.length > 0) { // bubble up the error GelatoBytes.revertWithError(error, "LibDiamondCut:_init:"); } else { revert("LibDiamondCut: _init function reverted"); } } } } function enforceHasContractCode( address _contract, string memory _errorMessage ) internal view { uint256 contractSize; assembly { contractSize := extcodesize(_contract) } require(contractSize > 0, _errorMessage); } }
{
"evmVersion": "london",
"libraries": {},
"metadata": {
"bytecodeHash": "ipfs",
"useLiteralContent": true
},
"optimizer": {
"enabled": true,
"runs": 200
},
"remappings": [],
"outputSelection": {
"*": {
"*": [
"evm.bytecode",
"evm.deployedBytecode",
"devdoc",
"userdoc",
"metadata",
"abi"
]
}
}
}Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"inputs":[{"components":[{"internalType":"address","name":"facetAddress","type":"address"},{"internalType":"enum IDiamondCut.FacetCutAction","name":"action","type":"uint8"},{"internalType":"bytes4[]","name":"functionSelectors","type":"bytes4[]"}],"internalType":"struct IDiamondCut.FacetCut[]","name":"_diamondCut","type":"tuple[]"},{"components":[{"internalType":"address","name":"owner","type":"address"}],"internalType":"struct Gelato.DiamondArgs","name":"_args","type":"tuple"}],"stateMutability":"payable","type":"constructor"},{"stateMutability":"payable","type":"fallback"},{"stateMutability":"payable","type":"receive"}]Contract Creation Code
608060405260405162002d2238038062002d22833981016040819052620000269162001366565b604080516000808252602082019092526200004e918491620000f560201b620000c81760201c565b6200006881600001516200035060201b620002d91760201c565b60006200007f620003d460201b620003391760201c565b6301ffc9a760e01b600090815260039091016020526040808220805460ff1990811660019081179092556307e4c70760e21b845282842080548216831790556348e2b09360e01b845282842080548216831790556307f5828d60e41b84529190922080549091169091179055506200182e915050565b60005b83518110156200030157600084828151811062000119576200011962001510565b6020026020010151602001519050600060028111156200013d576200013d62001526565b81600281111562000152576200015262001526565b03620001b057620001aa85838151811062000171576200017162001510565b60200260200101516000015186848151811062000192576200019262001510565b602002602001015160400151620003e760201b60201c565b620002eb565b6001816002811115620001c757620001c762001526565b036200021f57620001aa858381518110620001e657620001e662001510565b60200260200101516000015186848151811062000207576200020762001510565b602002602001015160400151620006d260201b60201c565b600281600281111562000236576200023662001526565b036200028e57620001aa85838151811062000255576200025562001510565b60200260200101516000015186848151811062000276576200027662001510565b602002602001015160400151620009d960201b60201c565b60405162461bcd60e51b815260206004820152602760248201527f4c69624469616d6f6e644375743a20496e636f727265637420466163657443756044820152663a20b1ba34b7b760c91b60648201526084015b60405180910390fd5b5080620002f88162001552565b915050620000f8565b507f8faa70878671ccd212d20771b795c50af8fd3ff6cf27f4bde57e5d4de0aeb6738383836040516200033793929190620015cb565b60405180910390a16200034b828262000b3e565b505050565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c132080546001600160a01b031981166001600160a01b0384811691821790935560405160008051602062002c76833981519152939092169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3505050565b60008051602062002c7683398151915290565b60008151116200043d5760405162461bcd60e51b815260206004820152602b602482015260008051602062002d0283398151915260448201526a1858d95d081d1bc818dd5d60aa1b6064820152608401620002e2565b60008051602062002c768339815191526001600160a01b038316620004a95760405162461bcd60e51b815260206004820152602c602482015260008051602062002cbe83398151915260448201526b65206164647265737328302960a01b6064820152608401620002e2565b6001600160a01b03831660009081526001820160205260408120549061ffff821690036200055257620004f68460405180606001604052806024815260200162002cde6024913962000d93565b6002820180546001600160a01b038616600081815260018087016020908152604083208201805461ffff191661ffff90961695909517909455845490810185559381529190912090910180546001600160a01b03191690911790555b60005b8351811015620006cb57600084828151811062000576576200057662001510565b6020908102919091018101516001600160e01b031981166000908152918690526040909120549091506001600160a01b031680156200061e5760405162461bcd60e51b815260206004820152603560248201527f4c69624469616d6f6e644375743a2043616e2774206164642066756e6374696f60448201527f6e207468617420616c72656164792065786973747300000000000000000000006064820152608401620002e2565b6001600160a01b03871660008181526001878101602090815260408084208054938401815584528184206008840401805463ffffffff60079095166004026101000a948502191660e089901c94909402939093179092556001600160e01b031986168352889052902080546001600160b01b031916909117600160a01b61ffff87160217905583620006b081620016d2565b94505050508080620006c29062001552565b91505062000555565b5050505050565b6000815111620007285760405162461bcd60e51b815260206004820152602b602482015260008051602062002d0283398151915260448201526a1858d95d081d1bc818dd5d60aa1b6064820152608401620002e2565b60008051602062002c768339815191526001600160a01b038316620007945760405162461bcd60e51b815260206004820152602c602482015260008051602062002cbe83398151915260448201526b65206164647265737328302960a01b6064820152608401620002e2565b6001600160a01b03831660009081526001820160205260408120549061ffff821690036200083d57620007e18460405180606001604052806024815260200162002cde6024913962000d93565b6002820180546001600160a01b038616600081815260018087016020908152604083208201805461ffff191661ffff90961695909517909455845490810185559381529190912090910180546001600160a01b03191690911790555b60005b8351811015620006cb57600084828151811062000861576200086162001510565b6020908102919091018101516001600160e01b031981166000908152918690526040909120549091506001600160a01b0390811690871681036200090e5760405162461bcd60e51b815260206004820152603860248201527f4c69624469616d6f6e644375743a2043616e2774207265706c6163652066756e60448201527f6374696f6e20776974682073616d652066756e6374696f6e00000000000000006064820152608401620002e2565b6200091a818362000db7565b6001600160e01b03198216600081815260208781526040808320805461ffff60a01b1916600160a01b61ffff8b16021781556001600160a01b038c168085526001808c0185529285208054938401815585528385206008840401805463ffffffff60079095166004026101000a948502191660e08a901c94909402939093179092559390925287905281546001600160a01b03191617905583620009be81620016d2565b94505050508080620009d09062001552565b91505062000840565b600081511162000a2f5760405162461bcd60e51b815260206004820152602b602482015260008051602062002d0283398151915260448201526a1858d95d081d1bc818dd5d60aa1b6064820152608401620002e2565b60008051602062002c768339815191526001600160a01b0383161562000abe5760405162461bcd60e51b815260206004820152603660248201527f4c69624469616d6f6e644375743a2052656d6f7665206661636574206164647260448201527f657373206d7573742062652061646472657373283029000000000000000000006064820152608401620002e2565b60005b825181101562000b3857600083828151811062000ae25762000ae262001510565b6020908102919091018101516001600160e01b031981166000908152918590526040909120549091506001600160a01b031662000b20818362000db7565b5050808062000b2f9062001552565b91505062000ac1565b50505050565b6001600160a01b03821662000bc85780511562000bc45760405162461bcd60e51b815260206004820152603c60248201527f4c69624469616d6f6e644375743a205f696e697420697320616464726573732860448201527f3029206275745f63616c6c64617461206973206e6f7420656d707479000000006064820152608401620002e2565b5050565b600081511162000c415760405162461bcd60e51b815260206004820152603d60248201527f4c69624469616d6f6e644375743a205f63616c6c6461746120697320656d707460448201527f7920627574205f696e6974206973206e6f7420616464726573732830290000006064820152608401620002e2565b6001600160a01b038216301462000c775762000c778260405180606001604052806028815260200162002c966028913962000d93565b600080836001600160a01b03168360405162000c949190620016f6565b600060405180830381855af49150503d806000811462000cd1576040519150601f19603f3d011682016040523d82523d6000602084013e62000cd6565b606091505b50915091508162000b385780511562000d3b5762000d35816040518060400160405280601481526020017f4c69624469616d6f6e644375743a5f696e69743a000000000000000000000000815250620011c060201b6200035d1760201c565b62000b38565b60405162461bcd60e51b815260206004820152602660248201527f4c69624469616d6f6e644375743a205f696e69742066756e6374696f6e2072656044820152651d995c9d195960d21b6064820152608401620002e2565b813b818162000b385760405162461bcd60e51b8152600401620002e2919062001714565b60008051602062002c768339815191526001600160a01b03831662000e455760405162461bcd60e51b815260206004820152603760248201527f4c69624469616d6f6e644375743a2043616e27742072656d6f76652066756e6360448201527f74696f6e207468617420646f65736e27742065786973740000000000000000006064820152608401620002e2565b306001600160a01b0384160362000eb65760405162461bcd60e51b815260206004820152602e60248201527f4c69624469616d6f6e644375743a2043616e27742072656d6f766520696d6d7560448201526d3a30b1363290333ab731ba34b7b760911b6064820152608401620002e2565b6001600160e01b03198216600090815260208281526040808320546001600160a01b0387168452600180860190935290832054600160a01b90910461ffff16929162000f029162001730565b905080821462000ff5576001600160a01b0385166000908152600184016020526040812080548390811062000f3b5762000f3b62001510565b600091825260208083206008830401546001600160a01b038a168452600188019091526040909220805460079092166004026101000a90920460e01b92508291908590811062000f8f5762000f8f62001510565b600091825260208083206008830401805463ffffffff60079094166004026101000a938402191660e09590951c929092029390931790556001600160e01b031992909216825284905260409020805461ffff60a01b1916600160a01b61ffff8516021790555b6001600160a01b038516600090815260018401602052604090208054806200102157620010216200174a565b60008281526020808220600860001990940193840401805463ffffffff600460078716026101000a0219169055919092556001600160e01b0319861682528490526040812080546001600160b01b0319169055819003620006cb576002830154600090620010929060019062001730565b6001600160a01b038716600090815260018087016020526040909120015490915061ffff1680821462001158576000856002018381548110620010d957620010d962001510565b6000918252602090912001546002870180546001600160a01b0390921692508291849081106200110d576200110d62001510565b600091825260208083209190910180546001600160a01b0319166001600160a01b0394851617905592909116815260018781019092526040902001805461ffff191661ffff83161790555b846002018054806200116e576200116e6200174a565b60008281526020808220830160001990810180546001600160a01b03191690559092019092556001600160a01b03891682526001878101909152604090912001805461ffff1916905550505050505050565b60208251620011d0919062001760565b6004036200124b5760208201516001600160e01b0319811662461bcd60e51b03620012385760448301925081836040516020016200121092919062001783565b60408051601f198184030181529082905262461bcd60e51b8252620002e29160040162001714565b81604051602001620012109190620017b6565b80604051602001620012109190620017eb565b634e487b7160e01b600052604160045260246000fd5b604051606081016001600160401b03811182821017156200129957620012996200125e565b60405290565b604051601f8201601f191681016001600160401b0381118282101715620012ca57620012ca6200125e565b604052919050565b60006001600160401b03821115620012ee57620012ee6200125e565b5060051b60200190565b80516001600160a01b03811681146200131057600080fd5b919050565b6000602082840312156200132857600080fd5b604051602081016001600160401b03811182821017156200134d576200134d6200125e565b6040529050806200135e83620012f8565b905292915050565b600080604083850312156200137a57600080fd5b82516001600160401b03808211156200139257600080fd5b818501915085601f830112620013a757600080fd5b81516020620013c0620013ba83620012d2565b6200129f565b82815260059290921b84018101918181019089841115620013e057600080fd5b8286015b84811015620014f057805186811115620013fd57600080fd5b87016060818d03601f190112156200141457600080fd5b6200141e62001274565b6200142b868301620012f8565b81526040820151600381106200144057600080fd5b818701526060820151888111156200145757600080fd5b8083019250508c603f8301126200146d57600080fd5b8582015162001480620013ba82620012d2565b81815260059190911b830160400190878101908f831115620014a157600080fd5b6040850194505b82851015620014da5784516001600160e01b031981168114620014ca57600080fd5b82529388019390880190620014a8565b60408401525050845250918301918301620013e4565b5096506200150390508888830162001315565b9450505050509250929050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052602160045260246000fd5b634e487b7160e01b600052601160045260246000fd5b6000600182016200156757620015676200153c565b5060010190565b60005b838110156200158b57818101518382015260200162001571565b8381111562000b385750506000910152565b60008151808452620015b78160208601602086016200156e565b601f01601f19169290920160200192915050565b60006060808301818452808751808352608092508286019150828160051b8701016020808b0160005b84811015620016a057898403607f19018652815180516001600160a01b031685528381015189860190600381106200163c57634e487b7160e01b600052602160045260246000fd5b868601526040918201519186018a905281519081905290840190600090898701905b808310156200168a5783516001600160e01b03191682529286019260019290920191908601906200165e565b50978501979550505090820190600101620015f4565b50506001600160a01b038a16908801528681036040880152620016c481896200159d565b9a9950505050505050505050565b600061ffff808316818103620016ec57620016ec6200153c565b6001019392505050565b600082516200170a8184602087016200156e565b9190910192915050565b6020815260006200172960208301846200159d565b9392505050565b6000828210156200174557620017456200153c565b500390565b634e487b7160e01b600052603160045260246000fd5b6000826200177e57634e487b7160e01b600052601260045260246000fd5b500690565b60008351620017978184602088016200156e565b835190830190620017ad8183602088016200156e565b01949350505050565b60008251620017ca8184602087016200156e565b6e2737a2b93937b929b2b632b1ba37b960891b920191825250600f01919050565b60008251620017ff8184602087016200156e565b7f556e657870656374656452657475726e64617461000000000000000000000000920191825250601401919050565b611438806200183e6000396000f3fe60806040523661000b57005b600080356001600160e01b03191681527fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c131c602081905260409091205481906001600160a01b0316806100a45760405162461bcd60e51b815260206004820152601f60248201527f47656c61746f3a2046756e6374696f6e20646f6573206e6f742065786973740060448201526064015b60405180910390fd5b3660008037600080366000845af43d6000803e8080156100c3573d6000f35b3d6000fd5b60005b835181101561028e5760008482815181106100e8576100e861102c565b60200260200101516020015190506000600281111561010957610109611042565b81600281111561011b5761011b611042565b03610169576101648583815181106101355761013561102c565b6020026020010151600001518684815181106101535761015361102c565b6020026020010151604001516103ef565b61027b565b600181600281111561017d5761017d611042565b036101c6576101648583815181106101975761019761102c565b6020026020010151600001518684815181106101b5576101b561102c565b602002602001015160400151610654565b60028160028111156101da576101da611042565b03610223576101648583815181106101f4576101f461102c565b6020026020010151600001518684815181106102125761021261102c565b6020026020010151604001516108db565b60405162461bcd60e51b815260206004820152602760248201527f4c69624469616d6f6e644375743a20496e636f727265637420466163657443756044820152663a20b1ba34b7b760c91b606482015260840161009b565b50806102868161106e565b9150506100cb565b507f8faa70878671ccd212d20771b795c50af8fd3ff6cf27f4bde57e5d4de0aeb6738383836040516102c2939291906110df565b60405180910390a16102d482826109f5565b505050565b60006102e3610339565b6004810180546001600160a01b038581166001600160a01b031983168117909355604051939450169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3505050565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c131c90565b6020825161036b91906111df565b6004036103de5760208201516001600160e01b0319811662461bcd60e51b036103cd5760448301925081836040516020016103a7929190611201565b60408051601f198184030181529082905262461bcd60e51b825261009b91600401611230565b816040516020016103a7919061124a565b806040516020016103a7919061127d565b60008151116104105760405162461bcd60e51b815260040161009b906112b5565b600061041a610339565b90506001600160a01b0383166104425760405162461bcd60e51b815260040161009b90611300565b6001600160a01b03831660009081526001820160205260408120549061ffff821690036104e75761048b846040518060600160405280602481526020016113df60249139610c23565b6002820180546001600160a01b038616600081815260018087016020908152604083208201805461ffff191661ffff90961695909517909455845490810185559381529190912090910180546001600160a01b03191690911790555b60005b835181101561064d5760008482815181106105075761050761102c565b6020908102919091018101516001600160e01b031981166000908152918690526040909120549091506001600160a01b031680156105a55760405162461bcd60e51b815260206004820152603560248201527f4c69624469616d6f6e644375743a2043616e2774206164642066756e6374696f6044820152746e207468617420616c72656164792065786973747360581b606482015260840161009b565b6001600160a01b03871660008181526001878101602090815260408084208054938401815584528184206008840401805463ffffffff60079095166004026101000a948502191660e089901c94909402939093179092556001600160e01b031986168352889052902080546001600160b01b031916909117600160a01b61ffff871602179055836106358161134c565b945050505080806106459061106e565b9150506104ea565b5050505050565b60008151116106755760405162461bcd60e51b815260040161009b906112b5565b600061067f610339565b90506001600160a01b0383166106a75760405162461bcd60e51b815260040161009b90611300565b6001600160a01b03831660009081526001820160205260408120549061ffff8216900361074c576106f0846040518060600160405280602481526020016113df60249139610c23565b6002820180546001600160a01b038616600081815260018087016020908152604083208201805461ffff191661ffff90961695909517909455845490810185559381529190912090910180546001600160a01b03191690911790555b60005b835181101561064d57600084828151811061076c5761076c61102c565b6020908102919091018101516001600160e01b031981166000908152918690526040909120549091506001600160a01b0390811690871681036108175760405162461bcd60e51b815260206004820152603860248201527f4c69624469616d6f6e644375743a2043616e2774207265706c6163652066756e60448201527f6374696f6e20776974682073616d652066756e6374696f6e0000000000000000606482015260840161009b565b6108218183610c44565b6001600160e01b03198216600081815260208781526040808320805461ffff60a01b1916600160a01b61ffff8b16021781556001600160a01b038c168085526001808c0185529285208054938401815585528385206008840401805463ffffffff60079095166004026101000a948502191660e08a901c94909402939093179092559390925287905281546001600160a01b031916179055836108c38161134c565b945050505080806108d39061106e565b91505061074f565b60008151116108fc5760405162461bcd60e51b815260040161009b906112b5565b6000610906610339565b90506001600160a01b0383161561097e5760405162461bcd60e51b815260206004820152603660248201527f4c69624469616d6f6e644375743a2052656d6f76652066616365742061646472604482015275657373206d757374206265206164647265737328302960501b606482015260840161009b565b60005b82518110156109ef57600083828151811061099e5761099e61102c565b6020908102919091018101516001600160e01b031981166000908152918590526040909120549091506001600160a01b03166109da8183610c44565b505080806109e79061106e565b915050610981565b50505050565b6001600160a01b038216610a7c57805115610a785760405162461bcd60e51b815260206004820152603c60248201527f4c69624469616d6f6e644375743a205f696e697420697320616464726573732860448201527f3029206275745f63616c6c64617461206973206e6f7420656d70747900000000606482015260840161009b565b5050565b6000815111610af35760405162461bcd60e51b815260206004820152603d60248201527f4c69624469616d6f6e644375743a205f63616c6c6461746120697320656d707460448201527f7920627574205f696e6974206973206e6f742061646472657373283029000000606482015260840161009b565b6001600160a01b0382163014610b2557610b25826040518060600160405280602881526020016113b760289139610c23565b600080836001600160a01b031683604051610b40919061136d565b600060405180830381855af49150503d8060008114610b7b576040519150601f19603f3d011682016040523d82523d6000602084013e610b80565b606091505b5091509150816109ef57805115610bcc57610bc781604051806040016040528060148152602001732634b12234b0b6b7b73221baba1d2fb4b734ba1d60611b81525061035d565b6109ef565b60405162461bcd60e51b815260206004820152602660248201527f4c69624469616d6f6e644375743a205f696e69742066756e6374696f6e2072656044820152651d995c9d195960d21b606482015260840161009b565b813b81816109ef5760405162461bcd60e51b815260040161009b9190611230565b6000610c4e610339565b90506001600160a01b038316610ccc5760405162461bcd60e51b815260206004820152603760248201527f4c69624469616d6f6e644375743a2043616e27742072656d6f76652066756e6360448201527f74696f6e207468617420646f65736e2774206578697374000000000000000000606482015260840161009b565b306001600160a01b03841603610d3b5760405162461bcd60e51b815260206004820152602e60248201527f4c69624469616d6f6e644375743a2043616e27742072656d6f766520696d6d7560448201526d3a30b1363290333ab731ba34b7b760911b606482015260840161009b565b6001600160e01b03198216600090815260208281526040808320546001600160a01b0387168452600180860190935290832054600160a01b90910461ffff169291610d8591611389565b9050808214610e71576001600160a01b03851660009081526001840160205260408120805483908110610dba57610dba61102c565b600091825260208083206008830401546001600160a01b038a168452600188019091526040909220805460079092166004026101000a90920460e01b925082919085908110610e0b57610e0b61102c565b600091825260208083206008830401805463ffffffff60079094166004026101000a938402191660e09590951c929092029390931790556001600160e01b031992909216825284905260409020805461ffff60a01b1916600160a01b61ffff8516021790555b6001600160a01b03851660009081526001840160205260409020805480610e9a57610e9a6113a0565b60008281526020808220600860001990940193840401805463ffffffff600460078716026101000a0219169055919092556001600160e01b0319861682528490526040812080546001600160b01b031916905581900361064d576002830154600090610f0890600190611389565b6001600160a01b038716600090815260018087016020526040909120015490915061ffff16808214610fc7576000856002018381548110610f4b57610f4b61102c565b6000918252602090912001546002870180546001600160a01b039092169250829184908110610f7c57610f7c61102c565b600091825260208083209190910180546001600160a01b0319166001600160a01b0394851617905592909116815260018781019092526040902001805461ffff191661ffff83161790555b84600201805480610fda57610fda6113a0565b60008281526020808220830160001990810180546001600160a01b03191690559092019092556001600160a01b03891682526001878101909152604090912001805461ffff1916905550505050505050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052602160045260246000fd5b634e487b7160e01b600052601160045260246000fd5b60006001820161108057611080611058565b5060010190565b60005b838110156110a257818101518382015260200161108a565b838111156109ef5750506000910152565b600081518084526110cb816020860160208601611087565b601f01601f19169290920160200192915050565b60006060808301818452808751808352608092508286019150828160051b8701016020808b0160005b848110156111af57898403607f19018652815180516001600160a01b0316855283810151898601906003811061114e57634e487b7160e01b600052602160045260246000fd5b868601526040918201519186018a905281519081905290840190600090898701905b8083101561119a5783516001600160e01b0319168252928601926001929092019190860190611170565b50978501979550505090820190600101611108565b50506001600160a01b038a169088015286810360408801526111d181896110b3565b9a9950505050505050505050565b6000826111fc57634e487b7160e01b600052601260045260246000fd5b500690565b60008351611213818460208801611087565b835190830190611227818360208801611087565b01949350505050565b60208152600061124360208301846110b3565b9392505050565b6000825161125c818460208701611087565b6e2737a2b93937b929b2b632b1ba37b960891b920191825250600f01919050565b6000825161128f818460208701611087565b73556e657870656374656452657475726e6461746160601b920191825250601401919050565b6020808252602b908201527f4c69624469616d6f6e644375743a204e6f2073656c6563746f727320696e206660408201526a1858d95d081d1bc818dd5d60aa1b606082015260800190565b6020808252602c908201527f4c69624469616d6f6e644375743a204164642066616365742063616e2774206260408201526b65206164647265737328302960a01b606082015260800190565b600061ffff80831681810361136357611363611058565b6001019392505050565b6000825161137f818460208701611087565b9190910192915050565b60008282101561139b5761139b611058565b500390565b634e487b7160e01b600052603160045260246000fdfe4c69624469616d6f6e644375743a205f696e6974206164647265737320686173206e6f20636f64654c69624469616d6f6e644375743a204e657720666163657420686173206e6f20636f6465a2646970667358221220b280e94f4d240b2b08053365b8408e9445ca3aa3077230197ac7aa5410d8aabe64736f6c634300080e0033c8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c131c4c69624469616d6f6e644375743a205f696e6974206164647265737320686173206e6f20636f64654c69624469616d6f6e644375743a204164642066616365742063616e277420624c69624469616d6f6e644375743a204e657720666163657420686173206e6f20636f64654c69624469616d6f6e644375743a204e6f2073656c6563746f727320696e206600000000000000000000000000000000000000000000000000000000000000400000000000000000000000003bec8d1f7bcb11f9c5cdf56e0d72a26040b2338f000000000000000000000000000000000000000000000000000000000000000700000000000000000000000000000000000000000000000000000000000000e0000000000000000000000000000000000000000000000000000000000000018000000000000000000000000000000000000000000000000000000000000002a00000000000000000000000000000000000000000000000000000000000000360000000000000000000000000000000000000000000000000000000000000046000000000000000000000000000000000000000000000000000000000000005a000000000000000000000000000000000000000000000000000000000000006400000000000000000000000000343af039e2e1c25a9691eeb654ce0de1910c3e20000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000011f931c1c000000000000000000000000000000000000000000000000000000000000000000000000000000003894be84b0490f24ca6b3eaa292d1afa7ad3b62a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000005cdffacc60000000000000000000000000000000000000000000000000000000052ef6b2c00000000000000000000000000000000000000000000000000000000adfca15e000000000000000000000000000000000000000000000000000000007a0ed6270000000000000000000000000000000000000000000000000000000001ffc9a700000000000000000000000000000000000000000000000000000000000000000000000000000000eeea839e2435873ada11d5dd4cae6032742c04450000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000028da5cb5b00000000000000000000000000000000000000000000000000000000f2fde38b00000000000000000000000000000000000000000000000000000000000000000000000000000000bec333ede1a0687d2b9624f8c073a54c93ba977700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000000412fde4b700000000000000000000000000000000000000000000000000000000da44c84e00000000000000000000000000000000000000000000000000000000a42dce8000000000000000000000000000000000000000000000000000000000a4d0c0a9000000000000000000000000000000000000000000000000000000000000000000000000000000002cad01de572e00af828e5fb02ebf9821f03ed8f00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000061ecd9cd800000000000000000000000000000000000000000000000000000000afda35cb00000000000000000000000000000000000000000000000000000000e52e63c500000000000000000000000000000000000000000000000000000000debfda30000000000000000000000000000000000000000000000000000000001499e05b00000000000000000000000000000000000000000000000000000000dc09c3e400000000000000000000000000000000000000000000000000000000000000000000000000000000247a1306b6122ba28862b19a95004899db91f1b5000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000001b87b0b4c000000000000000000000000000000000000000000000000000000000000000000000000000000003f9bbfb21e666914a5ab195c1ce02c4365a85aa5000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000001beabacc800000000000000000000000000000000000000000000000000000000
Deployed Bytecode
0x60806040523661000b57005b600080356001600160e01b03191681527fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c131c602081905260409091205481906001600160a01b0316806100a45760405162461bcd60e51b815260206004820152601f60248201527f47656c61746f3a2046756e6374696f6e20646f6573206e6f742065786973740060448201526064015b60405180910390fd5b3660008037600080366000845af43d6000803e8080156100c3573d6000f35b3d6000fd5b60005b835181101561028e5760008482815181106100e8576100e861102c565b60200260200101516020015190506000600281111561010957610109611042565b81600281111561011b5761011b611042565b03610169576101648583815181106101355761013561102c565b6020026020010151600001518684815181106101535761015361102c565b6020026020010151604001516103ef565b61027b565b600181600281111561017d5761017d611042565b036101c6576101648583815181106101975761019761102c565b6020026020010151600001518684815181106101b5576101b561102c565b602002602001015160400151610654565b60028160028111156101da576101da611042565b03610223576101648583815181106101f4576101f461102c565b6020026020010151600001518684815181106102125761021261102c565b6020026020010151604001516108db565b60405162461bcd60e51b815260206004820152602760248201527f4c69624469616d6f6e644375743a20496e636f727265637420466163657443756044820152663a20b1ba34b7b760c91b606482015260840161009b565b50806102868161106e565b9150506100cb565b507f8faa70878671ccd212d20771b795c50af8fd3ff6cf27f4bde57e5d4de0aeb6738383836040516102c2939291906110df565b60405180910390a16102d482826109f5565b505050565b60006102e3610339565b6004810180546001600160a01b038581166001600160a01b031983168117909355604051939450169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3505050565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c131c90565b6020825161036b91906111df565b6004036103de5760208201516001600160e01b0319811662461bcd60e51b036103cd5760448301925081836040516020016103a7929190611201565b60408051601f198184030181529082905262461bcd60e51b825261009b91600401611230565b816040516020016103a7919061124a565b806040516020016103a7919061127d565b60008151116104105760405162461bcd60e51b815260040161009b906112b5565b600061041a610339565b90506001600160a01b0383166104425760405162461bcd60e51b815260040161009b90611300565b6001600160a01b03831660009081526001820160205260408120549061ffff821690036104e75761048b846040518060600160405280602481526020016113df60249139610c23565b6002820180546001600160a01b038616600081815260018087016020908152604083208201805461ffff191661ffff90961695909517909455845490810185559381529190912090910180546001600160a01b03191690911790555b60005b835181101561064d5760008482815181106105075761050761102c565b6020908102919091018101516001600160e01b031981166000908152918690526040909120549091506001600160a01b031680156105a55760405162461bcd60e51b815260206004820152603560248201527f4c69624469616d6f6e644375743a2043616e2774206164642066756e6374696f6044820152746e207468617420616c72656164792065786973747360581b606482015260840161009b565b6001600160a01b03871660008181526001878101602090815260408084208054938401815584528184206008840401805463ffffffff60079095166004026101000a948502191660e089901c94909402939093179092556001600160e01b031986168352889052902080546001600160b01b031916909117600160a01b61ffff871602179055836106358161134c565b945050505080806106459061106e565b9150506104ea565b5050505050565b60008151116106755760405162461bcd60e51b815260040161009b906112b5565b600061067f610339565b90506001600160a01b0383166106a75760405162461bcd60e51b815260040161009b90611300565b6001600160a01b03831660009081526001820160205260408120549061ffff8216900361074c576106f0846040518060600160405280602481526020016113df60249139610c23565b6002820180546001600160a01b038616600081815260018087016020908152604083208201805461ffff191661ffff90961695909517909455845490810185559381529190912090910180546001600160a01b03191690911790555b60005b835181101561064d57600084828151811061076c5761076c61102c565b6020908102919091018101516001600160e01b031981166000908152918690526040909120549091506001600160a01b0390811690871681036108175760405162461bcd60e51b815260206004820152603860248201527f4c69624469616d6f6e644375743a2043616e2774207265706c6163652066756e60448201527f6374696f6e20776974682073616d652066756e6374696f6e0000000000000000606482015260840161009b565b6108218183610c44565b6001600160e01b03198216600081815260208781526040808320805461ffff60a01b1916600160a01b61ffff8b16021781556001600160a01b038c168085526001808c0185529285208054938401815585528385206008840401805463ffffffff60079095166004026101000a948502191660e08a901c94909402939093179092559390925287905281546001600160a01b031916179055836108c38161134c565b945050505080806108d39061106e565b91505061074f565b60008151116108fc5760405162461bcd60e51b815260040161009b906112b5565b6000610906610339565b90506001600160a01b0383161561097e5760405162461bcd60e51b815260206004820152603660248201527f4c69624469616d6f6e644375743a2052656d6f76652066616365742061646472604482015275657373206d757374206265206164647265737328302960501b606482015260840161009b565b60005b82518110156109ef57600083828151811061099e5761099e61102c565b6020908102919091018101516001600160e01b031981166000908152918590526040909120549091506001600160a01b03166109da8183610c44565b505080806109e79061106e565b915050610981565b50505050565b6001600160a01b038216610a7c57805115610a785760405162461bcd60e51b815260206004820152603c60248201527f4c69624469616d6f6e644375743a205f696e697420697320616464726573732860448201527f3029206275745f63616c6c64617461206973206e6f7420656d70747900000000606482015260840161009b565b5050565b6000815111610af35760405162461bcd60e51b815260206004820152603d60248201527f4c69624469616d6f6e644375743a205f63616c6c6461746120697320656d707460448201527f7920627574205f696e6974206973206e6f742061646472657373283029000000606482015260840161009b565b6001600160a01b0382163014610b2557610b25826040518060600160405280602881526020016113b760289139610c23565b600080836001600160a01b031683604051610b40919061136d565b600060405180830381855af49150503d8060008114610b7b576040519150601f19603f3d011682016040523d82523d6000602084013e610b80565b606091505b5091509150816109ef57805115610bcc57610bc781604051806040016040528060148152602001732634b12234b0b6b7b73221baba1d2fb4b734ba1d60611b81525061035d565b6109ef565b60405162461bcd60e51b815260206004820152602660248201527f4c69624469616d6f6e644375743a205f696e69742066756e6374696f6e2072656044820152651d995c9d195960d21b606482015260840161009b565b813b81816109ef5760405162461bcd60e51b815260040161009b9190611230565b6000610c4e610339565b90506001600160a01b038316610ccc5760405162461bcd60e51b815260206004820152603760248201527f4c69624469616d6f6e644375743a2043616e27742072656d6f76652066756e6360448201527f74696f6e207468617420646f65736e2774206578697374000000000000000000606482015260840161009b565b306001600160a01b03841603610d3b5760405162461bcd60e51b815260206004820152602e60248201527f4c69624469616d6f6e644375743a2043616e27742072656d6f766520696d6d7560448201526d3a30b1363290333ab731ba34b7b760911b606482015260840161009b565b6001600160e01b03198216600090815260208281526040808320546001600160a01b0387168452600180860190935290832054600160a01b90910461ffff169291610d8591611389565b9050808214610e71576001600160a01b03851660009081526001840160205260408120805483908110610dba57610dba61102c565b600091825260208083206008830401546001600160a01b038a168452600188019091526040909220805460079092166004026101000a90920460e01b925082919085908110610e0b57610e0b61102c565b600091825260208083206008830401805463ffffffff60079094166004026101000a938402191660e09590951c929092029390931790556001600160e01b031992909216825284905260409020805461ffff60a01b1916600160a01b61ffff8516021790555b6001600160a01b03851660009081526001840160205260409020805480610e9a57610e9a6113a0565b60008281526020808220600860001990940193840401805463ffffffff600460078716026101000a0219169055919092556001600160e01b0319861682528490526040812080546001600160b01b031916905581900361064d576002830154600090610f0890600190611389565b6001600160a01b038716600090815260018087016020526040909120015490915061ffff16808214610fc7576000856002018381548110610f4b57610f4b61102c565b6000918252602090912001546002870180546001600160a01b039092169250829184908110610f7c57610f7c61102c565b600091825260208083209190910180546001600160a01b0319166001600160a01b0394851617905592909116815260018781019092526040902001805461ffff191661ffff83161790555b84600201805480610fda57610fda6113a0565b60008281526020808220830160001990810180546001600160a01b03191690559092019092556001600160a01b03891682526001878101909152604090912001805461ffff1916905550505050505050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052602160045260246000fd5b634e487b7160e01b600052601160045260246000fd5b60006001820161108057611080611058565b5060010190565b60005b838110156110a257818101518382015260200161108a565b838111156109ef5750506000910152565b600081518084526110cb816020860160208601611087565b601f01601f19169290920160200192915050565b60006060808301818452808751808352608092508286019150828160051b8701016020808b0160005b848110156111af57898403607f19018652815180516001600160a01b0316855283810151898601906003811061114e57634e487b7160e01b600052602160045260246000fd5b868601526040918201519186018a905281519081905290840190600090898701905b8083101561119a5783516001600160e01b0319168252928601926001929092019190860190611170565b50978501979550505090820190600101611108565b50506001600160a01b038a169088015286810360408801526111d181896110b3565b9a9950505050505050505050565b6000826111fc57634e487b7160e01b600052601260045260246000fd5b500690565b60008351611213818460208801611087565b835190830190611227818360208801611087565b01949350505050565b60208152600061124360208301846110b3565b9392505050565b6000825161125c818460208701611087565b6e2737a2b93937b929b2b632b1ba37b960891b920191825250600f01919050565b6000825161128f818460208701611087565b73556e657870656374656452657475726e6461746160601b920191825250601401919050565b6020808252602b908201527f4c69624469616d6f6e644375743a204e6f2073656c6563746f727320696e206660408201526a1858d95d081d1bc818dd5d60aa1b606082015260800190565b6020808252602c908201527f4c69624469616d6f6e644375743a204164642066616365742063616e2774206260408201526b65206164647265737328302960a01b606082015260800190565b600061ffff80831681810361136357611363611058565b6001019392505050565b6000825161137f818460208701611087565b9190910192915050565b60008282101561139b5761139b611058565b500390565b634e487b7160e01b600052603160045260246000fdfe4c69624469616d6f6e644375743a205f696e6974206164647265737320686173206e6f20636f64654c69624469616d6f6e644375743a204e657720666163657420686173206e6f20636f6465a2646970667358221220b280e94f4d240b2b08053365b8408e9445ca3aa3077230197ac7aa5410d8aabe64736f6c634300080e0033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
00000000000000000000000000000000000000000000000000000000000000400000000000000000000000003bec8d1f7bcb11f9c5cdf56e0d72a26040b2338f000000000000000000000000000000000000000000000000000000000000000700000000000000000000000000000000000000000000000000000000000000e0000000000000000000000000000000000000000000000000000000000000018000000000000000000000000000000000000000000000000000000000000002a00000000000000000000000000000000000000000000000000000000000000360000000000000000000000000000000000000000000000000000000000000046000000000000000000000000000000000000000000000000000000000000005a000000000000000000000000000000000000000000000000000000000000006400000000000000000000000000343af039e2e1c25a9691eeb654ce0de1910c3e20000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000011f931c1c000000000000000000000000000000000000000000000000000000000000000000000000000000003894be84b0490f24ca6b3eaa292d1afa7ad3b62a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000005cdffacc60000000000000000000000000000000000000000000000000000000052ef6b2c00000000000000000000000000000000000000000000000000000000adfca15e000000000000000000000000000000000000000000000000000000007a0ed6270000000000000000000000000000000000000000000000000000000001ffc9a700000000000000000000000000000000000000000000000000000000000000000000000000000000eeea839e2435873ada11d5dd4cae6032742c04450000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000028da5cb5b00000000000000000000000000000000000000000000000000000000f2fde38b00000000000000000000000000000000000000000000000000000000000000000000000000000000bec333ede1a0687d2b9624f8c073a54c93ba977700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000000412fde4b700000000000000000000000000000000000000000000000000000000da44c84e00000000000000000000000000000000000000000000000000000000a42dce8000000000000000000000000000000000000000000000000000000000a4d0c0a9000000000000000000000000000000000000000000000000000000000000000000000000000000002cad01de572e00af828e5fb02ebf9821f03ed8f00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000061ecd9cd800000000000000000000000000000000000000000000000000000000afda35cb00000000000000000000000000000000000000000000000000000000e52e63c500000000000000000000000000000000000000000000000000000000debfda30000000000000000000000000000000000000000000000000000000001499e05b00000000000000000000000000000000000000000000000000000000dc09c3e400000000000000000000000000000000000000000000000000000000000000000000000000000000247a1306b6122ba28862b19a95004899db91f1b5000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000001b87b0b4c000000000000000000000000000000000000000000000000000000000000000000000000000000003f9bbfb21e666914a5ab195c1ce02c4365a85aa5000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000001beabacc800000000000000000000000000000000000000000000000000000000
-----Decoded View---------------
Arg [0] : _diamondCut (tuple[]):
Arg [1] : facetAddress (address): 0x0343Af039E2E1c25A9691eEb654Ce0de1910C3e2
Arg [2] : action (uint8): 0
Arg [3] : functionSelectors (bytes4[]): 0x1f931c1
Arg [1] : facetAddress (address): 0x3894Be84b0490f24ca6b3eAa292d1afa7ad3b62a
Arg [2] : action (uint8): 0
Arg [3] : functionSelectors (bytes4[]): 0x01ffc9a
Arg [1] : facetAddress (address): 0xeeea839E2435873adA11d5dD4CAE6032742C0445
Arg [2] : action (uint8): 0
Arg [3] : functionSelectors (bytes4[]): 0xf2fde38
Arg [1] : facetAddress (address): 0xbeC333EDE1A0687D2b9624F8C073a54c93ba9777
Arg [2] : action (uint8): 0
Arg [3] : functionSelectors (bytes4[]): 0xa4d0c0a
Arg [1] : facetAddress (address): 0x2caD01dE572e00af828e5FB02EBf9821f03eD8f0
Arg [2] : action (uint8): 0
Arg [3] : functionSelectors (bytes4[]): 0xdc09c3e
Arg [1] : facetAddress (address): 0x247A1306b6122ba28862b19a95004899db91f1b5
Arg [2] : action (uint8): 0
Arg [3] : functionSelectors (bytes4[]): 0xb87b0b4
Arg [1] : facetAddress (address): 0x3F9BBfb21E666914a5ab195C1CE02c4365A85aA5
Arg [2] : action (uint8): 0
Arg [3] : functionSelectors (bytes4[]): 0xbeabacc
Arg [1] : _args (tuple):
Arg [1] : owner (address): 0x3BEC8d1f7Bcb11F9c5cdF56E0d72a26040B2338F
-----Encoded View---------------
58 Constructor Arguments found :
Arg [0] : 0000000000000000000000000000000000000000000000000000000000000040
Arg [1] : 0000000000000000000000003bec8d1f7bcb11f9c5cdf56e0d72a26040b2338f
Arg [2] : 0000000000000000000000000000000000000000000000000000000000000007
Arg [3] : 00000000000000000000000000000000000000000000000000000000000000e0
Arg [4] : 0000000000000000000000000000000000000000000000000000000000000180
Arg [5] : 00000000000000000000000000000000000000000000000000000000000002a0
Arg [6] : 0000000000000000000000000000000000000000000000000000000000000360
Arg [7] : 0000000000000000000000000000000000000000000000000000000000000460
Arg [8] : 00000000000000000000000000000000000000000000000000000000000005a0
Arg [9] : 0000000000000000000000000000000000000000000000000000000000000640
Arg [10] : 0000000000000000000000000343af039e2e1c25a9691eeb654ce0de1910c3e2
Arg [11] : 0000000000000000000000000000000000000000000000000000000000000000
Arg [12] : 0000000000000000000000000000000000000000000000000000000000000060
Arg [13] : 0000000000000000000000000000000000000000000000000000000000000001
Arg [14] : 1f931c1c00000000000000000000000000000000000000000000000000000000
Arg [15] : 0000000000000000000000003894be84b0490f24ca6b3eaa292d1afa7ad3b62a
Arg [16] : 0000000000000000000000000000000000000000000000000000000000000000
Arg [17] : 0000000000000000000000000000000000000000000000000000000000000060
Arg [18] : 0000000000000000000000000000000000000000000000000000000000000005
Arg [19] : cdffacc600000000000000000000000000000000000000000000000000000000
Arg [20] : 52ef6b2c00000000000000000000000000000000000000000000000000000000
Arg [21] : adfca15e00000000000000000000000000000000000000000000000000000000
Arg [22] : 7a0ed62700000000000000000000000000000000000000000000000000000000
Arg [23] : 01ffc9a700000000000000000000000000000000000000000000000000000000
Arg [24] : 000000000000000000000000eeea839e2435873ada11d5dd4cae6032742c0445
Arg [25] : 0000000000000000000000000000000000000000000000000000000000000000
Arg [26] : 0000000000000000000000000000000000000000000000000000000000000060
Arg [27] : 0000000000000000000000000000000000000000000000000000000000000002
Arg [28] : 8da5cb5b00000000000000000000000000000000000000000000000000000000
Arg [29] : f2fde38b00000000000000000000000000000000000000000000000000000000
Arg [30] : 000000000000000000000000bec333ede1a0687d2b9624f8c073a54c93ba9777
Arg [31] : 0000000000000000000000000000000000000000000000000000000000000000
Arg [32] : 0000000000000000000000000000000000000000000000000000000000000060
Arg [33] : 0000000000000000000000000000000000000000000000000000000000000004
Arg [34] : 12fde4b700000000000000000000000000000000000000000000000000000000
Arg [35] : da44c84e00000000000000000000000000000000000000000000000000000000
Arg [36] : a42dce8000000000000000000000000000000000000000000000000000000000
Arg [37] : a4d0c0a900000000000000000000000000000000000000000000000000000000
Arg [38] : 0000000000000000000000002cad01de572e00af828e5fb02ebf9821f03ed8f0
Arg [39] : 0000000000000000000000000000000000000000000000000000000000000000
Arg [40] : 0000000000000000000000000000000000000000000000000000000000000060
Arg [41] : 0000000000000000000000000000000000000000000000000000000000000006
Arg [42] : 1ecd9cd800000000000000000000000000000000000000000000000000000000
Arg [43] : afda35cb00000000000000000000000000000000000000000000000000000000
Arg [44] : e52e63c500000000000000000000000000000000000000000000000000000000
Arg [45] : debfda3000000000000000000000000000000000000000000000000000000000
Arg [46] : 1499e05b00000000000000000000000000000000000000000000000000000000
Arg [47] : dc09c3e400000000000000000000000000000000000000000000000000000000
Arg [48] : 000000000000000000000000247a1306b6122ba28862b19a95004899db91f1b5
Arg [49] : 0000000000000000000000000000000000000000000000000000000000000000
Arg [50] : 0000000000000000000000000000000000000000000000000000000000000060
Arg [51] : 0000000000000000000000000000000000000000000000000000000000000001
Arg [52] : b87b0b4c00000000000000000000000000000000000000000000000000000000
Arg [53] : 0000000000000000000000003f9bbfb21e666914a5ab195c1ce02c4365a85aa5
Arg [54] : 0000000000000000000000000000000000000000000000000000000000000000
Arg [55] : 0000000000000000000000000000000000000000000000000000000000000060
Arg [56] : 0000000000000000000000000000000000000000000000000000000000000001
Arg [57] : beabacc800000000000000000000000000000000000000000000000000000000
Loading...
Loading
Loading...
Loading
Loading...
Loading
Net Worth in USD
$110.19
Net Worth in MOVR
Token Allocations
USDT
55.76%
USDC
24.76%
WETH
19.48%
Multichain Portfolio | 35 Chains
Loading...
Loading
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
[ Download: CSV Export ]
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.