Overview
ETH Balance
0 ETH
ETH Value
$0.00More Info
Private Name Tags
ContractCreator
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Latest 1 internal transaction
Parent Transaction Hash | Block | From | To | |||
---|---|---|---|---|---|---|
323797 | 53 days ago | Contract Creation | 0 ETH |
Loading...
Loading
This contract may be a proxy contract. Click on More Options and select Is this a proxy? to confirm and enable the "Read as Proxy" & "Write as Proxy" tabs.
Contract Source Code Verified (Exact Match)
Contract Name:
EmergencyPauseFacet
Compiler Version
v0.8.26+commit.8a97fa7a
ZkSolc Version
v1.5.10
Optimization Enabled:
Yes with Mode 3
Other Settings:
shanghai EvmVersion
Contract Source Code (Solidity Standard Json-Input format)
// SPDX-License-Identifier: MIT pragma solidity ^0.8.17; import { LibDiamond } from "../Libraries/LibDiamond.sol"; import { LibDiamondLoupe } from "../Libraries/LibDiamondLoupe.sol"; import { UnAuthorized, InvalidCallData, DiamondIsPaused } from "../Errors/GenericErrors.sol"; import { IDiamondLoupe } from "lifi/Interfaces/IDiamondLoupe.sol"; import { DiamondCutFacet } from "lifi/Facets/DiamondCutFacet.sol"; /// @title EmergencyPauseFacet (Admin only) /// @author LI.FI (https://li.fi) /// @notice Allows a LI.FI-owned and -controlled, non-multisig "PauserWallet" to remove a facet or pause the diamond in case of emergency /// @custom:version 1.0.1 /// @dev Admin-Facet for emergency purposes only contract EmergencyPauseFacet { /// Events /// event EmergencyFacetRemoved( address indexed facetAddress, address indexed msgSender ); event EmergencyPaused(address indexed msgSender); event EmergencyUnpaused(address indexed msgSender); /// Errors /// error FacetIsNotRegistered(); error NoFacetToPause(); /// Storage /// address public immutable pauserWallet; bytes32 internal constant NAMESPACE = keccak256("com.lifi.facets.emergencyPauseFacet"); address internal immutable _emergencyPauseFacetAddress; struct Storage { IDiamondLoupe.Facet[] facets; } /// Modifiers /// modifier OnlyPauserWalletOrOwner() { if ( msg.sender != pauserWallet && msg.sender != LibDiamond.contractOwner() ) revert UnAuthorized(); _; } /// Constructor /// /// @param _pauserWallet The address of the wallet that can execute emergency facet removal actions constructor(address _pauserWallet) { pauserWallet = _pauserWallet; _emergencyPauseFacetAddress = address(this); } /// External Methods /// /// @notice Removes the given facet from the diamond /// @param _facetAddress The address of the facet that should be removed /// @dev can only be executed by pauserWallet (non-multisig for fast response time) or by the diamond owner function removeFacet( address _facetAddress ) external OnlyPauserWalletOrOwner { // make sure that the EmergencyPauseFacet itself cannot be removed through this function if (_facetAddress == _emergencyPauseFacetAddress) revert InvalidCallData(); // get function selectors for this facet LibDiamond.DiamondStorage storage ds = LibDiamond.diamondStorage(); bytes4[] memory functionSelectors = ds .facetFunctionSelectors[_facetAddress] .functionSelectors; // do not continue if no registered function selectors were found if (functionSelectors.length == 0) revert FacetIsNotRegistered(); // make sure that DiamondCutFacet cannot be removed if (functionSelectors[0] == DiamondCutFacet.diamondCut.selector) revert InvalidCallData(); // remove facet LibDiamond.removeFunctions(address(0), functionSelectors); emit EmergencyFacetRemoved(_facetAddress, msg.sender); } /// @notice Effectively pauses the diamond contract by overwriting the facetAddress-to-function-selector mappings in storage for all facets /// and redirecting all function selectors to the EmergencyPauseFacet (this will remain as the only registered facet) so that /// a meaningful error message will be returned when third parties try to call the diamond /// @dev can only be executed by pauserWallet (non-multisig for fast response time) or by the diamond owner /// @dev This function could potentially run out of gas if too many facets/function selectors are involved. We mitigate this issue by having a test on /// @dev forked mainnet (which has most facets) that checks if the diamond can be paused function pauseDiamond() external OnlyPauserWalletOrOwner { Storage storage s = getStorage(); // get a list of all facets that need to be removed (=all facets except EmergencyPauseFacet) IDiamondLoupe.Facet[] memory facets = _getAllFacetFunctionSelectorsToBeRemoved(); // prevent invalid contract state if (facets.length == 0) revert NoFacetToPause(); // go through all facets for (uint256 i; i < facets.length; ) { // redirect all function selectors to this facet (i.e. to its fallback function with the DiamondIsPaused() error message) LibDiamond.replaceFunctions( _emergencyPauseFacetAddress, facets[i].functionSelectors ); // write facet information to storage (so it can be easily reactivated later on) s.facets.push(facets[i]); // gas-efficient way to increase loop counter unchecked { ++i; } } emit EmergencyPaused(msg.sender); } /// @notice Unpauses the diamond contract by re-adding all facetAddress-to-function-selector mappings to storage /// @dev can only be executed by diamond owner (multisig) /// @param _blacklist The address(es) of facet(s) that should not be reactivated function unpauseDiamond(address[] calldata _blacklist) external { // make sure this function can only be called by the owner LibDiamond.enforceIsContractOwner(); // get all facets from storage Storage storage s = getStorage(); // iterate through all facets and reinstate the facet with its function selectors for (uint256 i; i < s.facets.length; ) { LibDiamond.replaceFunctions( s.facets[i].facetAddress, s.facets[i].functionSelectors ); // gas-efficient way to increase loop counter unchecked { ++i; } } // go through blacklist and overwrite all function selectors with zero address // It would be easier to not reinstate these facets in the first place but // a) that would leave their function selectors associated with address of EmergencyPauseFacet (=> throws 'DiamondIsPaused() error when called) // b) it consumes a lot of gas to check every facet address if it's part of the blacklist bytes4[] memory currentSelectors; for (uint256 i; i < _blacklist.length; ) { currentSelectors = LibDiamondLoupe.facetFunctionSelectors( _blacklist[i] ); // make sure that the DiamondCutFacet cannot be removed as this would make the diamond immutable if (currentSelectors[0] == DiamondCutFacet.diamondCut.selector) continue; // build FacetCut parameter LibDiamond.FacetCut[] memory facetCut = new LibDiamond.FacetCut[]( 1 ); facetCut[0] = LibDiamond.FacetCut({ facetAddress: address(0), // needs to be address(0) for removals action: LibDiamond.FacetCutAction.Remove, functionSelectors: currentSelectors }); // remove facet and its selectors from diamond LibDiamond.diamondCut(facetCut, address(0), ""); // gas-efficient way to increase loop counter unchecked { ++i; } } // free storage delete s.facets; emit EmergencyUnpaused(msg.sender); } /// INTERNAL HELPER FUNCTIONS function _getAllFacetFunctionSelectorsToBeRemoved() internal view returns (IDiamondLoupe.Facet[] memory toBeRemoved) { // get a list of all registered facet addresses IDiamondLoupe.Facet[] memory allFacets = LibDiamondLoupe.facets(); // initiate return variable with allFacets length - 1 (since we will not remove the EmergencyPauseFacet) toBeRemoved = new IDiamondLoupe.Facet[](allFacets.length - 1); // iterate through facets, copy every facet but EmergencyPauseFacet uint256 toBeRemovedCounter; for (uint256 i; i < allFacets.length; ) { // if its not the EmergencyPauseFacet, copy to the return value variable if (allFacets[i].facetAddress != _emergencyPauseFacetAddress) { toBeRemoved[toBeRemovedCounter].facetAddress = allFacets[i] .facetAddress; toBeRemoved[toBeRemovedCounter].functionSelectors = allFacets[ i ].functionSelectors; // gas-efficient way to increase counter unchecked { ++toBeRemovedCounter; } } // gas-efficient way to increase loop counter unchecked { ++i; } } } /// @dev fetch local storage function getStorage() private pure returns (Storage storage s) { bytes32 namespace = NAMESPACE; // solhint-disable-next-line no-inline-assembly assembly { s.slot := namespace } } // this function will be called when the diamond is paused to return a meaningful error message instead of "FunctionDoesNotExist" fallback() external payable { revert DiamondIsPaused(); } // only added to silence compiler warnings that arose after adding the fallback function receive() external payable {} }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.17; // import { IDiamondCut } from "../Interfaces/LibDiamond.sol"; import { LibDiamond } from "../Libraries/LibDiamond.sol"; import { LibUtil } from "../Libraries/LibUtil.sol"; import { OnlyContractOwner } from "../Errors/GenericErrors.sol"; /// Implementation of EIP-2535 Diamond Standard /// https://eips.ethereum.org/EIPS/eip-2535 library LibDiamond { bytes32 internal constant DIAMOND_STORAGE_POSITION = keccak256("diamond.standard.diamond.storage"); // Diamond specific errors error IncorrectFacetCutAction(); error NoSelectorsInFace(); error FunctionAlreadyExists(); error FacetAddressIsZero(); error FacetAddressIsNotZero(); error FacetContainsNoCode(); error FunctionDoesNotExist(); error FunctionIsImmutable(); error InitZeroButCalldataNotEmpty(); error CalldataEmptyButInitNotZero(); error InitReverted(); // ---------------- struct FacetAddressAndPosition { address facetAddress; uint96 functionSelectorPosition; // position in facetFunctionSelectors.functionSelectors array } struct FacetFunctionSelectors { bytes4[] functionSelectors; uint256 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; } enum FacetCutAction { Add, Replace, Remove } // Add=0, Replace=1, Remove=2 struct FacetCut { address facetAddress; FacetCutAction action; bytes4[] functionSelectors; } function diamondStorage() internal pure returns (DiamondStorage storage ds) { bytes32 position = DIAMOND_STORAGE_POSITION; // solhint-disable-next-line no-inline-assembly assembly { ds.slot := position } } event OwnershipTransferred( address indexed previousOwner, address indexed newOwner ); event DiamondCut(FacetCut[] _diamondCut, address _init, bytes _calldata); 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 enforceIsContractOwner() internal view { if (msg.sender != diamondStorage().contractOwner) revert OnlyContractOwner(); } // Internal function version of diamondCut function diamondCut( FacetCut[] memory _diamondCut, address _init, bytes memory _calldata ) internal { for (uint256 facetIndex; facetIndex < _diamondCut.length; ) { LibDiamond.FacetCutAction action = _diamondCut[facetIndex].action; if (action == LibDiamond.FacetCutAction.Add) { addFunctions( _diamondCut[facetIndex].facetAddress, _diamondCut[facetIndex].functionSelectors ); } else if (action == LibDiamond.FacetCutAction.Replace) { replaceFunctions( _diamondCut[facetIndex].facetAddress, _diamondCut[facetIndex].functionSelectors ); } else if (action == LibDiamond.FacetCutAction.Remove) { removeFunctions( _diamondCut[facetIndex].facetAddress, _diamondCut[facetIndex].functionSelectors ); } else { revert IncorrectFacetCutAction(); } unchecked { ++facetIndex; } } emit DiamondCut(_diamondCut, _init, _calldata); initializeDiamondCut(_init, _calldata); } function addFunctions( address _facetAddress, bytes4[] memory _functionSelectors ) internal { if (_functionSelectors.length == 0) { revert NoSelectorsInFace(); } DiamondStorage storage ds = diamondStorage(); if (LibUtil.isZeroAddress(_facetAddress)) { revert FacetAddressIsZero(); } uint96 selectorPosition = uint96( ds.facetFunctionSelectors[_facetAddress].functionSelectors.length ); // add new facet address if it does not exist if (selectorPosition == 0) { addFacet(ds, _facetAddress); } for ( uint256 selectorIndex; selectorIndex < _functionSelectors.length; ) { bytes4 selector = _functionSelectors[selectorIndex]; address oldFacetAddress = ds .selectorToFacetAndPosition[selector] .facetAddress; if (!LibUtil.isZeroAddress(oldFacetAddress)) { revert FunctionAlreadyExists(); } addFunction(ds, selector, selectorPosition, _facetAddress); unchecked { ++selectorPosition; ++selectorIndex; } } } function replaceFunctions( address _facetAddress, bytes4[] memory _functionSelectors ) internal { if (_functionSelectors.length == 0) { revert NoSelectorsInFace(); } DiamondStorage storage ds = diamondStorage(); if (LibUtil.isZeroAddress(_facetAddress)) { revert FacetAddressIsZero(); } uint96 selectorPosition = uint96( ds.facetFunctionSelectors[_facetAddress].functionSelectors.length ); // add new facet address if it does not exist if (selectorPosition == 0) { addFacet(ds, _facetAddress); } for ( uint256 selectorIndex; selectorIndex < _functionSelectors.length; ) { bytes4 selector = _functionSelectors[selectorIndex]; address oldFacetAddress = ds .selectorToFacetAndPosition[selector] .facetAddress; if (oldFacetAddress == _facetAddress) { revert FunctionAlreadyExists(); } removeFunction(ds, oldFacetAddress, selector); addFunction(ds, selector, selectorPosition, _facetAddress); unchecked { ++selectorPosition; ++selectorIndex; } } } function removeFunctions( address _facetAddress, bytes4[] memory _functionSelectors ) internal { if (_functionSelectors.length == 0) { revert NoSelectorsInFace(); } DiamondStorage storage ds = diamondStorage(); // if function does not exist then do nothing and return if (!LibUtil.isZeroAddress(_facetAddress)) { revert FacetAddressIsNotZero(); } for ( uint256 selectorIndex; selectorIndex < _functionSelectors.length; ) { bytes4 selector = _functionSelectors[selectorIndex]; address oldFacetAddress = ds .selectorToFacetAndPosition[selector] .facetAddress; removeFunction(ds, oldFacetAddress, selector); unchecked { ++selectorIndex; } } } function addFacet( DiamondStorage storage ds, address _facetAddress ) internal { enforceHasContractCode(_facetAddress); ds.facetFunctionSelectors[_facetAddress].facetAddressPosition = ds .facetAddresses .length; ds.facetAddresses.push(_facetAddress); } function addFunction( DiamondStorage storage ds, bytes4 _selector, uint96 _selectorPosition, address _facetAddress ) internal { ds .selectorToFacetAndPosition[_selector] .functionSelectorPosition = _selectorPosition; ds.facetFunctionSelectors[_facetAddress].functionSelectors.push( _selector ); ds.selectorToFacetAndPosition[_selector].facetAddress = _facetAddress; } function removeFunction( DiamondStorage storage ds, address _facetAddress, bytes4 _selector ) internal { if (LibUtil.isZeroAddress(_facetAddress)) { revert FunctionDoesNotExist(); } // an immutable function is a function defined directly in a diamond if (_facetAddress == address(this)) { revert FunctionIsImmutable(); } // 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 = uint96(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 = facetAddressPosition; } ds.facetAddresses.pop(); delete ds .facetFunctionSelectors[_facetAddress] .facetAddressPosition; } } function initializeDiamondCut( address _init, bytes memory _calldata ) internal { if (LibUtil.isZeroAddress(_init)) { if (_calldata.length != 0) { revert InitZeroButCalldataNotEmpty(); } } else { if (_calldata.length == 0) { revert CalldataEmptyButInitNotZero(); } if (_init != address(this)) { enforceHasContractCode(_init); } // solhint-disable-next-line avoid-low-level-calls (bool success, bytes memory error) = _init.delegatecall(_calldata); if (!success) { if (error.length > 0) { // bubble up the error revert(string(error)); } else { revert InitReverted(); } } } } function enforceHasContractCode(address _contract) internal view { uint256 contractSize; // solhint-disable-next-line no-inline-assembly assembly { contractSize := extcodesize(_contract) } if (contractSize == 0) { revert FacetContainsNoCode(); } } }
// SPDX-License-Identifier: MIT /// @custom:version 1.0.0 pragma solidity ^0.8.17; import { LibDiamond } from "../Libraries/LibDiamond.sol"; import { IDiamondLoupe } from "../Interfaces/IDiamondLoupe.sol"; /// Library for DiamondLoupe functions (to avoid using external calls when using DiamondLoupe) library LibDiamondLoupe { function facets() internal view returns (IDiamondLoupe.Facet[] memory facets_) { LibDiamond.DiamondStorage storage ds = LibDiamond.diamondStorage(); uint256 numFacets = ds.facetAddresses.length; facets_ = new IDiamondLoupe.Facet[](numFacets); for (uint256 i = 0; i < numFacets; ) { address facetAddress_ = ds.facetAddresses[i]; facets_[i].facetAddress = facetAddress_; facets_[i].functionSelectors = ds .facetFunctionSelectors[facetAddress_] .functionSelectors; unchecked { ++i; } } } function facetFunctionSelectors( address _facet ) internal view returns (bytes4[] memory facetFunctionSelectors_) { LibDiamond.DiamondStorage storage ds = LibDiamond.diamondStorage(); facetFunctionSelectors_ = ds .facetFunctionSelectors[_facet] .functionSelectors; } function facetAddresses() internal view returns (address[] memory facetAddresses_) { LibDiamond.DiamondStorage storage ds = LibDiamond.diamondStorage(); facetAddresses_ = ds.facetAddresses; } function facetAddress( bytes4 _functionSelector ) internal view returns (address facetAddress_) { LibDiamond.DiamondStorage storage ds = LibDiamond.diamondStorage(); facetAddress_ = ds .selectorToFacetAndPosition[_functionSelector] .facetAddress; } }
// SPDX-License-Identifier: MIT /// @custom:version 1.0.0 pragma solidity ^0.8.17; error AlreadyInitialized(); error CannotAuthoriseSelf(); error CannotBridgeToSameNetwork(); error ContractCallNotAllowed(); error CumulativeSlippageTooHigh(uint256 minAmount, uint256 receivedAmount); error DiamondIsPaused(); error ExternalCallFailed(); error FunctionDoesNotExist(); error InformationMismatch(); error InsufficientBalance(uint256 required, uint256 balance); error InvalidAmount(); error InvalidCallData(); error InvalidConfig(); error InvalidContract(); error InvalidDestinationChain(); error InvalidFallbackAddress(); error InvalidReceiver(); error InvalidSendingToken(); error NativeAssetNotSupported(); error NativeAssetTransferFailed(); error NoSwapDataProvided(); error NoSwapFromZeroBalance(); error NotAContract(); error NotInitialized(); error NoTransferToNullAddress(); error NullAddrIsNotAnERC20Token(); error NullAddrIsNotAValidSpender(); error OnlyContractOwner(); error RecoveryAddressCannotBeZero(); error ReentrancyError(); error TokenNotSupported(); error UnAuthorized(); error UnsupportedChainId(uint256 chainId); error WithdrawFailed(); error ZeroAmount();
// SPDX-License-Identifier: MIT /// @custom:version 1.0.0 pragma solidity ^0.8.17; // 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.17; import { IDiamondCut } from "../Interfaces/IDiamondCut.sol"; import { LibDiamond } from "../Libraries/LibDiamond.sol"; /// @title Diamond Cut Facet /// @author LI.FI (https://li.fi) /// @notice Core EIP-2535 Facet for upgrading Diamond Proxies. /// @custom:version 1.0.0 contract DiamondCutFacet is IDiamondCut { /// @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( LibDiamond.FacetCut[] calldata _diamondCut, address _init, bytes calldata _calldata ) external { LibDiamond.enforceIsContractOwner(); LibDiamond.diamondCut(_diamondCut, _init, _calldata); } }
// SPDX-License-Identifier: MIT /// @custom:version 1.0.0 pragma solidity ^0.8.17; import "./LibBytes.sol"; library LibUtil { using LibBytes for bytes; function getRevertMsg( bytes memory _res ) internal pure returns (string memory) { // If the _res length is less than 68, then the transaction failed silently (without a revert message) if (_res.length < 68) return "Transaction reverted silently"; bytes memory revertData = _res.slice(4, _res.length - 4); // Remove the selector which is the first 4 bytes return abi.decode(revertData, (string)); // All that remains is the revert string } /// @notice Determines whether the given address is the zero address /// @param addr The address to verify /// @return Boolean indicating if the address is the zero address function isZeroAddress(address addr) internal pure returns (bool) { return addr == address(0); } function revertWith(bytes memory data) internal pure { assembly { let dataSize := mload(data) // Load the size of the data let dataPtr := add(data, 0x20) // Advance data pointer to the next word revert(dataPtr, dataSize) // Revert with the given data } } }
// SPDX-License-Identifier: MIT /// @custom:version 2.0.0 pragma solidity ^0.8.17; import { LibDiamond } from "../Libraries/LibDiamond.sol"; interface IDiamondCut { /// @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( LibDiamond.FacetCut[] calldata _diamondCut, address _init, bytes calldata _calldata ) external; event DiamondCut( LibDiamond.FacetCut[] _diamondCut, address _init, bytes _calldata ); }
// SPDX-License-Identifier: MIT /// @custom:version 1.0.0 pragma solidity ^0.8.17; library LibBytes { // solhint-disable no-inline-assembly // LibBytes specific errors error SliceOverflow(); error SliceOutOfBounds(); error AddressOutOfBounds(); bytes16 private constant _SYMBOLS = "0123456789abcdef"; // ------------------------- function slice( bytes memory _bytes, uint256 _start, uint256 _length ) internal pure returns (bytes memory) { if (_length + 31 < _length) revert SliceOverflow(); if (_bytes.length < _start + _length) revert SliceOutOfBounds(); bytes memory tempBytes; assembly { switch iszero(_length) case 0 { // Get a location of some free memory and store it in tempBytes as // Solidity does for memory variables. tempBytes := mload(0x40) // The first word of the slice result is potentially a partial // word read from the original array. To read it, we calculate // the length of that partial word and start copying that many // bytes into the array. The first word we copy will start with // data we don't care about, but the last `lengthmod` bytes will // land at the beginning of the contents of the new array. When // we're done copying, we overwrite the full first word with // the actual length of the slice. let lengthmod := and(_length, 31) // The multiplication in the next line is necessary // because when slicing multiples of 32 bytes (lengthmod == 0) // the following copy loop was copying the origin's length // and then ending prematurely not copying everything it should. let mc := add( add(tempBytes, lengthmod), mul(0x20, iszero(lengthmod)) ) let end := add(mc, _length) for { // The multiplication in the next line has the same exact purpose // as the one above. let cc := add( add( add(_bytes, lengthmod), mul(0x20, iszero(lengthmod)) ), _start ) } lt(mc, end) { mc := add(mc, 0x20) cc := add(cc, 0x20) } { mstore(mc, mload(cc)) } mstore(tempBytes, _length) //update free-memory pointer //allocating the array padded to 32 bytes like the compiler does now mstore(0x40, and(add(mc, 31), not(31))) } //if we want a zero-length slice let's just return a zero-length array default { tempBytes := mload(0x40) //zero out the 32 bytes slice we are about to return //we need to do it because Solidity does not garbage collect mstore(tempBytes, 0) mstore(0x40, add(tempBytes, 0x20)) } } return tempBytes; } function toAddress( bytes memory _bytes, uint256 _start ) internal pure returns (address) { if (_bytes.length < _start + 20) { revert AddressOutOfBounds(); } address tempAddress; assembly { tempAddress := div( mload(add(add(_bytes, 0x20), _start)), 0x1000000000000000000000000 ) } return tempAddress; } /// Copied from OpenZeppelin's `Strings.sol` utility library. /// https://github.com/OpenZeppelin/openzeppelin-contracts/blob/8335676b0e99944eef6a742e16dcd9ff6e68e609/contracts/utils/Strings.sol function toHexString( uint256 value, uint256 length ) internal pure returns (string memory) { bytes memory buffer = new bytes(2 * length + 2); buffer[0] = "0"; buffer[1] = "x"; for (uint256 i = 2 * length + 1; i > 1; --i) { buffer[i] = _SYMBOLS[value & 0xf]; value >>= 4; } require(value == 0, "Strings: hex length insufficient"); return string(buffer); } }
{ "viaIR": false, "codegen": "yul", "remappings": [ "@eth-optimism/=node_modules/@hop-protocol/sdk/node_modules/@eth-optimism/", "@uniswap/=node_modules/@uniswap/", "eth-gas-reporter/=node_modules/eth-gas-reporter/", "@openzeppelin/=lib/openzeppelin-contracts/", "celer-network/=lib/sgn-v2-contracts/", "create3-factory/=lib/create3-factory/src/", "solmate/=lib/solmate/src/", "solady/=lib/solady/src/", "permit2/=lib/Permit2/src/", "ds-test/=lib/ds-test/src/", "forge-std/=lib/forge-std/src/", "lifi/=src/", "test/=test/", "Permit2/=lib/Permit2/", "erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/", "forge-gas-snapshot/=lib/Permit2/lib/forge-gas-snapshot/src/", "openzeppelin-contracts/=lib/openzeppelin-contracts/", "openzeppelin/=lib/openzeppelin-contracts/contracts/", "sgn-v2-contracts/=lib/sgn-v2-contracts/contracts/" ], "evmVersion": "shanghai", "outputSelection": { "*": { "*": [ "abi" ] } }, "optimizer": { "enabled": true, "mode": "3", "fallback_to_optimizing_for_size": false, "disable_system_request_memoization": true }, "metadata": {}, "libraries": {}, "enableEraVMExtensions": false, "forceEVMLA": false }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"inputs":[{"internalType":"address","name":"_pauserWallet","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"CalldataEmptyButInitNotZero","type":"error"},{"inputs":[],"name":"DiamondIsPaused","type":"error"},{"inputs":[],"name":"FacetAddressIsNotZero","type":"error"},{"inputs":[],"name":"FacetAddressIsZero","type":"error"},{"inputs":[],"name":"FacetContainsNoCode","type":"error"},{"inputs":[],"name":"FacetIsNotRegistered","type":"error"},{"inputs":[],"name":"FunctionAlreadyExists","type":"error"},{"inputs":[],"name":"FunctionDoesNotExist","type":"error"},{"inputs":[],"name":"FunctionIsImmutable","type":"error"},{"inputs":[],"name":"IncorrectFacetCutAction","type":"error"},{"inputs":[],"name":"InitReverted","type":"error"},{"inputs":[],"name":"InitZeroButCalldataNotEmpty","type":"error"},{"inputs":[],"name":"InvalidCallData","type":"error"},{"inputs":[],"name":"NoFacetToPause","type":"error"},{"inputs":[],"name":"NoSelectorsInFace","type":"error"},{"inputs":[],"name":"OnlyContractOwner","type":"error"},{"inputs":[],"name":"UnAuthorized","type":"error"},{"anonymous":false,"inputs":[{"components":[{"internalType":"address","name":"facetAddress","type":"address"},{"internalType":"enum LibDiamond.FacetCutAction","name":"action","type":"uint8"},{"internalType":"bytes4[]","name":"functionSelectors","type":"bytes4[]"}],"indexed":false,"internalType":"struct LibDiamond.FacetCut[]","name":"_diamondCut","type":"tuple[]"},{"indexed":false,"internalType":"address","name":"_init","type":"address"},{"indexed":false,"internalType":"bytes","name":"_calldata","type":"bytes"}],"name":"DiamondCut","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"facetAddress","type":"address"},{"indexed":true,"internalType":"address","name":"msgSender","type":"address"}],"name":"EmergencyFacetRemoved","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"msgSender","type":"address"}],"name":"EmergencyPaused","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"msgSender","type":"address"}],"name":"EmergencyUnpaused","type":"event"},{"stateMutability":"payable","type":"fallback"},{"inputs":[],"name":"pauseDiamond","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"pauserWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_facetAddress","type":"address"}],"name":"removeFacet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"_blacklist","type":"address[]"}],"name":"unpauseDiamond","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
3cda335193dc52fefb3ec2edf8cae2f02f500dadc643b90077dd6e34d7da85f49c6b27b2010004479dd71a6d70f60f764d9c850ebdb8ff6a9d69e89b9fdf7ceea94cf17d00000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000020000000000000000000000000d38743b48d26743c0ec6898d699394fbc94657ee
Deployed Bytecode
0x000100000000000200160000000000020000000000010355000000600310027000000407033001970000000100200190000000690000c13d0000008002000039000000400020043f000000040030008c000000990000413d000000000201043b000000e0022002700000040c0020009c0000009d0000213d0000040f0020009c000000cb0000613d000004100020009c000000c70000c13d000000240030008c00000bf60000413d0000000002000416000000000002004b00000bf60000c13d0000000402100370000000000202043b000004150020009c00000bf60000213d0000002304200039000000000034004b00000bf60000813d0000000404200039000000000141034f000000000101043b001600000001001d000500000001001d000004150010009c00000bf60000213d00000005010000290000000501100210000200240020003d0000000201100029000000000031004b00000bf60000213d0000041301000041000000000101041a0000040a011001970000000002000411000000000012004b000001350000c13d0000042201000041000000000101041a000000000001004b00000000010000190000021a0000c13d000000050000006b000004c70000c13d0000042202000041000000000002041b000000000001004b00000bea0000613d000004370010009c0000012b0000213d000000000020043f0000000101100210000004230110009a001100000001001d000004380010009c00000bea0000413d00000439030000410000004a0000013d0000000203300039000000110030006c00000bea0000813d000000000003041b0000000101300039000000000201041a000000000001041b000000000002004b000000470000613d001200000002001d001300000003001d000000000010043f0000000001000414000004070010009c0000040701008041000000c0011002100000041b011001c70000801002000039101710120000040f000000010020019000000bf60000613d000000000101043b0000001202000029000000070220003900000003022002700000000002210019000000000021004b0000001303000029000000470000813d000000000001041b0000000101100039000000000021004b000000640000413d000000470000013d0000000002000416000000000002004b00000bf60000c13d0000001f023000390000040802200197000000c002200039000000400020043f0000001f0430018f0000040905300198000000c0025000390000007a0000613d000000c006000039000000000701034f000000007807043c0000000006860436000000000026004b000000760000c13d000000000004004b000000870000613d000000000151034f0000000304400210000000000502043300000000054501cf000000000545022f000000000101043b0000010004400089000000000141022f00000000014101cf000000000151019f0000000000120435000000200030008c00000bf60000413d000000c00100043d0000040a0010009c00000bf60000213d000000800010043f0000000002000410000000a00020043f0000014000000443000001600010044300000020010000390000018000100443000001a0002004430000010000100443000000020100003900000120001004430000040b01000041000010180001042e000000000003004b000000c70000c13d0000000001000019000010180001042e0000040d0020009c000001060000613d0000040e0020009c000000c70000c13d0000000001000416000000000001004b00000bf60000c13d000004110100004100000000001004430000000001000412000000040010044300000024000004430000000001000414000004070010009c0000040701008041000000c00110021000000412011001c70000800502000039101710120000040f000000010020019000000f370000613d000000000101043b0000040a011001970000000002000411000000000012004b000000bc0000613d0000041301000041000000000101041a0000040a01100197000000000012004b000001310000c13d0000041401000041000000000101041a000d00000001001d000004150010009c000001170000a13d0000043301000041000000000010043f0000004101000039000000040010043f000004340100004100001019000104300000044101000041000000000010043f00000428010000410000101900010430000000240030008c00000bf60000413d0000000002000416000000000002004b00000bf60000c13d0000000401100370000000000101043b001300000001001d0000040a0010009c00000bf60000213d000004110100004100000000001004430000000001000412000000040010044300000024000004430000000001000414000004070010009c0000040701008041000000c00110021000000412011001c70000800502000039101710120000040f000000010020019000000f370000613d000000000101043b0000040a011001970000000002000411000000000012004b000000ed0000613d0000041301000041000000000101041a0000040a01100197000000000012004b000001310000c13d0000041101000041000000000010044300000000010004120000000400100443000000200100003900000024001004430000000001000414000004070010009c0000040701008041000000c00110021000000412011001c70000800502000039101710120000040f000000010020019000000f370000613d00000013020000290000040a02200197000000000101043b0000040a01100197000000000012004b000001390000c13d0000044001000041000000000010043f000004280100004100001019000104300000000001000416000000000001004b00000bf60000c13d0000000001000412001500000001001d001400000000003d000080050100003900000044030000390000000004000415000000150440008a0000000504400210000004110200004110170ff40000040f0000040a01100197000000800010043f0000042901000041000010180001042e0000000d0100002900000005011002100000003f021000390000041602200197000000400300043d0000000002230019001200000003001d000000000032004b00000000030000390000000103004039000004150020009c000000c10000213d0000000100300190000000c10000c13d000000400020043f00000012020000290000000d030000290000000006320436000000000003004b000001500000c13d0000043301000041000000000010043f0000001101000039000000040010043f000004340100004100001019000104300000043b01000041000000000010043f000004280100004100001019000104300000042a01000041000000000010043f00000428010000410000101900010430000a00000002001d000000000020043f0000041901000041000000200010043f0000000001000414000004070010009c0000040701008041000000c0011002100000041a011001c70000801002000039101710120000040f000000010020019000000bf60000613d000000000101043b10170f5f0000040f000d00000001001d0000000031010434000000000001004b00000a7c0000c13d0000043f01000041000000000010043f0000042801000041000010190001043000000060050000390000000002000019000000400300043d000004170030009c000000c10000213d0000004004300039000000400040043f000000200430003900000000005404350000000000030435000000000462001900000000003404350000002002200039000000000012004b000001520000413d0000000002000019000c00000006001d0000041401000041000000000010043f00000012010000290000000001010433000000000021004b00000c730000a13d00000005012002100000000003610019001300000002001d000004180120009a000000000101041a0000040a01100197001100000003001d00000000020304330000000000120435000000000010043f0000041901000041000000200010043f0000000001000414000004070010009c0000040701008041000000c0011002100000041a011001c70000801002000039101710120000040f000000010020019000000bf60000613d00000012020000290000000002020433000000130020006c00000c730000a13d00000011020000290000000002020433000e00000002001d000000000101043b000000000301041a000000400200043d001100000002001d000f00000003001d0000000002320436001000000002001d000000000010043f0000000001000414000004070010009c0000040701008041000000c0011002100000041b011001c70000801002000039101710120000040f000000010020019000000bf60000613d000000000201043b0000000f09000029000000080090008c000001e80000413d00000000010000190000000c0600002900000060070000390000001008000029000000e003800039000000000402041a0000041c05400197000000000053043500000020034002100000041c03300197000000c005800039000000000035043500000040034002100000041c03300197000000a005800039000000000035043500000060034002100000041c033001970000008005800039000000000035043500000080034002100000041c0330019700000060058000390000000000350435000000a0034002100000041c0330019700000040058000390000000000350435000000c0034002100000041c0330019700000020058000390000000000350435000000e003400210000000000038043500000001022000390000010008800039000000080110003900000007031001bf000000000093004b0000019c0000413d000000000202041a000000000091004b000001ef0000413d000000000091004b000001f40000413d000000000091004b000001fa0000413d000000000091004b000002000000413d000000000091004b000002060000413d000000000091004b0000020c0000413d000000000091004b000002120000413d0000001103000029000000000091004b000001d40000813d0000041c01200197000000000818043600000000013800490000001f0110003900000442021001970000000001320019000000000021004b00000000020000390000000102004039000004150010009c000000c10000213d0000000100200190000000c10000c13d0000000e020000290000002002200039000000400010043f0000000000320435000000130200002900000001022000390000000d0020006c000001610000413d00000bf80000013d00000000010000190000000c0600002900000060070000390000001008000029000000000202041a000000000090004b000001c30000813d000000e003200210000000000838043600000001011001bf000000000091004b000001c50000813d000000c0032002100000041c0330019700000000083804360000000101100039000000000091004b000001c70000813d000000a0032002100000041c0330019700000000083804360000000101100039000000000091004b000001c90000813d00000080032002100000041c0330019700000000083804360000000101100039000000000091004b000001cb0000813d00000060032002100000041c0330019700000000083804360000000101100039000000000091004b000001cd0000813d00000040032002100000041c0330019700000000083804360000000101100039000000000091004b000001cf0000813d00000020032002100000041c03300197000000000838043600000001011000390000001103000029000000000091004b000001d20000413d000001d40000013d00008010020000390000000003000019000002240000013d0000042201000041000000000101041a00000007030000290000000103300039000000000013004b0000801002000039000000370000813d000700000003001d0000000101300210000004230310009a000000000303041a001200000003001d000004240110009a000000000401041a000000400300043d000a00000003001d001300000004001d0000000003430436000900000003001d000000000010043f0000000001000414000004070010009c0000040701008041000000c0011002100000041b011001c7101710120000040f000000010020019000000bf60000613d000000000301043b0000001307000029000000080070008c000004980000413d00000000020000190000000901000029000000e004100039000000000503041a0000041c06500197000000000064043500000020045002100000041c04400197000000c006100039000000000046043500000040045002100000041c04400197000000a006100039000000000046043500000060045002100000041c044001970000008006100039000000000046043500000080045002100000041c0440019700000060061000390000000000460435000000a0045002100000041c0440019700000040061000390000000000460435000000c0045002100000041c0440019700000020061000390000000000460435000000e004500210000000000041043500000001033000390000010001100039000000080220003900000007042001bf000000000074004b0000023f0000413d000000000303041a000000000072004b0000049d0000413d000000000072004b000004a20000413d000000000072004b000004a80000413d000000000072004b000004ae0000413d000000000072004b000004b40000413d000000000072004b000004ba0000413d000000000072004b000004c00000413d000000000072004b000002760000813d0000041c02300197000000000121043600008010020000390000000a0110006a0000001f0110003900000442031001970000000a01300029000000000031004b00000000030000390000000103004039000004150010009c000000c10000213d0000000100300190000000c10000c13d000000400010043f0000000a010000290000000001010433000000000001004b00000c880000613d00000012010000290000040a0110019800000c8c0000613d001000000001001d000000000010043f0000041901000041000000200010043f0000000001000414000004070010009c0000040701008041000000c0011002100000041a011001c7101710120000040f000000010020019000000bf60000613d000000000101043b000000000101041a000f041d0010019c000002d40000c13d0000041e010000410000000000100443000000100100002900000004001004430000000001000414000004070010009c0000040701008041000000c0011002100000041f011001c70000800202000039101710120000040f000000010020019000000f370000613d000000000101043b000000000001004b000080100200003900000f4a0000613d0000041401000041000000000101041a001300000001001d0000001001000029000000000010043f0000041901000041000000200010043f0000000001000414000004070010009c0000040701008041000000c0011002100000041a011001c7101710120000040f000000010020019000000bf60000613d000000000101043b00000001011000390000001302000029000000000021041b000004150020009c0000801002000039000000c10000213d000000130100002900000001011000390000041403000041000000000013041b000000000030043f0000000001000414000004070010009c0000040701008041000000c0011002100000041b011001c7101710120000040f000000010020019000000bf60000613d000000000101043b0000001301100029000000000201041a000004200220019700000010022001af000000000021041b0000000a010000290000000001010433000000000001004b0000021d0000613d0000000002000019000c00000002001d000000050120021000000009011000290000000001010433000d00000001001d0000041c01100197001300000001001d000000000010043f0000042101000041000000200010043f0000000001000414000004070010009c0000040701008041000000c0011002100000041a011001c70000801002000039101710120000040f000000010020019000000bf60000613d000000000101043b000000000101041a0000040a03100197000000100030006c00000f460000613d000000000003004b000080100200003900000f3e0000613d0000000001000410001200000003001d000000000013004b00000f420000613d0000001301000029000000000010043f0000042101000041000000200010043f0000000001000414000004070010009c0000040701008041000000c0011002100000041a011001c7101710120000040f000000010020019000000bf60000613d000000000101043b000000000101041a000e00000001001d0000001201000029000000000010043f0000041901000041000000200010043f0000000001000414000004070010009c0000040701008041000000c0011002100000041a011001c70000801002000039101710120000040f000000010020019000000bf60000613d000000000101043b000000000101041a000000000001004b00008010020000390000012b0000613d0000000e03000029000000a0033002700011000100100092000000110030006c0000001201000029000003830000613d000b00000003001d000000000010043f0000041901000041000000200010043f0000000001000414000004070010009c0000040701008041000000c0011002100000041a011001c7101710120000040f000000010020019000000bf60000613d000000000101043b000000000201041a000000110020006c000080100200003900000c730000a13d000000000010043f0000000001000414000004070010009c0000040701008041000000c0011002100000041b011001c7101710120000040f000000010020019000000bf60000613d000000000101043b000000110200002900000003022002700000000001210019000000000101041a000800000001001d0000001201000029000000000010043f0000041901000041000000200010043f0000000001000414000004070010009c0000040701008041000000c0011002100000041a011001c70000801002000039101710120000040f000000010020019000000bf60000613d000000000101043b000000000201041a0000000b0020006c000080100200003900000c730000a13d000000000010043f0000000001000414000004070010009c0000040701008041000000c0011002100000041b011001c7101710120000040f000000010020019000000bf60000613d00000011020000290000000502200210000000e00220018f000000080220024f0000000b030000290000000503300210000000e00330018f000004070430021f00000443044001670000000e05000029000000a305500270000000000101043b0000000001510019000000000501041a000000000445016f000004070520019700000000033501cf000000000334019f000000000031041b000000e001200210000000000010043f0000042101000041000000200010043f0000000001000414000004070010009c0000040701008041000000c0011002100000041a011001c70000801002000039101710120000040f000000010020019000000bf60000613d0000000e020000290000042002200197000000000101043b000000000301041a0000040a03300197000000000223019f000000000021041b00008010020000390000001201000029000000000010043f0000041901000041000000200010043f0000000001000414000004070010009c0000040701008041000000c0011002100000041a011001c7101710120000040f000000010020019000000bf60000613d000000000101043b000000000201041a000e00000002001d000000000002004b000080100200003900000f380000613d000b00000001001d000000000010043f0000000001000414000004070010009c0000040701008041000000c0011002100000041b011001c7101710120000040f000000010020019000000bf60000613d0000000e02000029000000010220008a0000000503200210000000e00330018f000004070330021f0000044303300167000000000101043b00000003042002700000000001410019000000000401041a000000000334016f000000000031041b0000000b01000029000000000021041b0000001301000029000000000010043f0000042101000041000000200010043f0000000001000414000004070010009c0000040701008041000000c0011002100000041a011001c70000801002000039101710120000040f000000010020019000000bf60000613d000000000101043b000000000001041b000000110000006b0000043b0000c13d0000041401000041000000000101041a001100000001001d000000000001004b00008010020000390000012b0000613d0000001201000029000000000010043f0000041901000041000000200010043f0000000001000414000004070010009c0000040701008041000000c0011002100000041a011001c7101710120000040f000000010020019000000bf60000613d0000001102000029000000010220008a000000000101043b0000000101100039000000000101041a001100000001001d000000000021004b000004120000613d0000041401000041000000000101041a000e00000002001d000000000021004b000080100200003900000c730000a13d0000041401000041000000000010043f0000000001000414000004070010009c0000040701008041000000c0011002100000041b011001c7101710120000040f000000010020019000000bf60000613d000000000101043b0000041402000041000000000202041a000000110020006c000080100200003900000c730000a13d0000000e01100029000000000101041a000e00000001001d0000041401000041000000000010043f0000000001000414000004070010009c0000040701008041000000c0011002100000041b011001c7101710120000040f000000010020019000000bf60000613d0000000e020000290000040a02200197000000000101043b0000001101100029000000000301041a0000042003300197000000000323019f000000000031041b000000000020043f0000041901000041000000200010043f0000000001000414000004070010009c0000040701008041000000c0011002100000041a011001c70000801002000039101710120000040f000000010020019000000bf60000613d000000000101043b00000001011000390000001102000029000000000021041b0000041401000041000000000101041a001100000001001d000000000001004b000080100200003900000f380000613d0000041401000041000000000010043f0000000001000414000004070010009c0000040701008041000000c0011002100000041b011001c7101710120000040f000000010020019000000bf60000613d0000001102000029000000010220008a000000000101043b0000000001210019000000000301041a0000042003300197000000000031041b0000041401000041000000000021041b0000001201000029000000000010043f0000041901000041000000200010043f0000000001000414000004070010009c0000040701008041000000c0011002100000041a011001c70000801002000039101710120000040f000000010020019000000bf60000613d000000000101043b0000000101100039000000000001041b0000001301000029000000000010043f0000042101000041000000200010043f0000000001000414000004070010009c0000040701008041000000c0011002100000041a011001c70000801002000039101710120000040f000000010020019000000bf60000613d0000000f02000029000000a002200210000000000101043b000000000301041a0000040a03300197000000000223019f000000000021041b0000001001000029000000000010043f0000041901000041000000200010043f0000000001000414000004070010009c0000040701008041000000c0011002100000041a011001c70000801002000039101710120000040f000000010020019000000bf60000613d000000000101043b000000000301041a000004150030009c0000801002000039000000c10000213d001200000003001d0000000103300039000000000031041b000000000010043f0000000001000414000004070010009c0000040701008041000000c0011002100000041b011001c7101710120000040f000000010020019000000bf60000613d00000012050000290000000502500210000000e00220018f000004070320021f00000443033001670000000304500270000000000101043b0000000001410019000000000401041a000000000334016f0000000d04000029000000e00440027000000000022401cf000000000223019f000000000021041b0000001301000029000000000010043f0000042101000041000000200010043f0000000001000414000004070010009c0000040701008041000000c0011002100000041a011001c70000801002000039101710120000040f000000010020019000000bf60000613d000000000101043b000000000201041a000004200220019700000010022001af000000000021041b0000000f010000290000000101100039000f041d0010019b0000000c0200002900000001022000390000000a010000290000000001010433000000000012004b000002d90000413d0000021d0000013d00000009010000290000000002000019000000000303041a000000000070004b000002660000813d000000e004300210000000000141043600000001022001bf000000000072004b000002680000813d000000c0043002100000041c0440019700000000014104360000000102200039000000000072004b0000026a0000813d000000a0043002100000041c0440019700000000014104360000000102200039000000000072004b0000026c0000813d00000080043002100000041c0440019700000000014104360000000102200039000000000072004b0000026e0000813d00000060043002100000041c0440019700000000014104360000000102200039000000000072004b000002700000813d00000040043002100000041c0440019700000000014104360000000102200039000000000072004b000002720000813d00000020043002100000041c0440019700000000014104360000000102200039000000000072004b000002740000413d000002760000013d0000000001000019000004cd0000013d0000000401000029000500050000002d000000050010006c00000a790000813d000400000001001d000000050110021000000002011000290000000001100367000000000101043b0000040a0010009c000080100200003900000bf60000213d000000000010043f0000041901000041000000200010043f0000000001000414000004070010009c0000040701008041000000c0011002100000041a011001c7101710120000040f0000801003000039000000010020019000000bf60000613d000000000101043b000000000401041a000000400200043d001300000002001d001100000004001d0000000002420436001200000002001d000000000010043f0000000001000414000004070010009c0000040701008041000000c0011002100000041b011001c70000000002030019101710120000040f000000010020019000000bf60000613d000000000301043b0000001109000029000000080090008c000009e20000413d0000000002000019000000120800002900000000010800190000801007000039000000e004100039000000000503041a0000041c06500197000000000064043500000020045002100000041c04400197000000c006100039000000000046043500000040045002100000041c04400197000000a006100039000000000046043500000060045002100000041c044001970000008006100039000000000046043500000080045002100000041c0440019700000060061000390000000000460435000000a0045002100000041c0440019700000040061000390000000000460435000000c0045002100000041c0440019700000020061000390000000000460435000000e004500210000000000041043500000001033000390000010001100039000000080220003900000007042001bf000000000094004b000004fa0000413d000000000303041a000000000092004b000009e90000413d000000000092004b000009ee0000413d000000000092004b000009f40000413d000000000092004b000009fa0000413d000000000092004b00000a000000413d000000000092004b00000a060000413d000000000092004b00000a0c0000413d0000001304000029000000000092004b000005320000813d0000041c02300197000000000121043600000000014100490000001f0110003900000442011001970000000002410019000000000012004b00000000010000390000000101004039000600000002001d000004150020009c000000c10000213d0000000100100190000000c10000c13d0000000601000029000000400010043f0000000001040433000000000001004b00000c730000613d00000000010804330000041c011001970000042b0010009c000004c90000613d0000000601000029000004170010009c000000c10000213d00000006020000290000004001200039000000400010043f00000001010000390000000001120436000500000001001d000000400100043d0000042c0010009c000000c10000213d0000006002100039000000400020043f00000040021000390000006003000039000000000032043500000020021000390000000000020435000000000001043500000005020000290000000000120435000000400100043d0000042c0010009c000000c10000213d0000006002100039000000400020043f00000040021000390000000000420435000000200210003900000002030000390000000000320435000000000001043500000006020000290000000002020433000000000002004b00000c730000613d00000005020000290000000000120435000000400100043d000300000001001d0000042d0010009c000000c10000213d00000003010000290000002002100039000100000002001d000000400020043f000000000001043500000006010000290000000001010433000000000001004b00000a140000613d0000000004000019000005830000013d0000000704000029000000010440003900000006010000290000000001010433000000000014004b00000a140000813d00000005014002100000000501100029000000000101043300000020021000390000000002020433000000030020008c00000c790000813d00000040031000390000000003030433000f00000003001d0000000053030434000e00000005001d000000000002004b000700000004001d000007aa0000613d000000010020008c000008750000c13d000000000003004b00000c880000613d00000000010104330000040a0110019800000c8c0000613d001000000001001d000000000010043f0000041901000041000000200010043f0000000001000414000004070010009c0000040701008041000000c0011002100000041a011001c70000000002070019101710120000040f000000010020019000000bf60000613d000000000101043b000000000101041a000d041d0010019c000005e40000c13d0000041e010000410000000000100443000000100100002900000004001004430000000001000414000004070010009c0000040701008041000000c0011002100000041f011001c70000800202000039101710120000040f000000010020019000000f370000613d000000000101043b000000000001004b000080100200003900000f4a0000613d0000041401000041000000000101041a001300000001001d0000001001000029000000000010043f0000041901000041000000200010043f0000000001000414000004070010009c0000040701008041000000c0011002100000041a011001c7101710120000040f000000010020019000000bf60000613d000000000101043b00000001011000390000001302000029000000000021041b000004150020009c0000801002000039000000c10000213d000000130100002900000001011000390000041403000041000000000013041b000000000030043f0000000001000414000004070010009c0000040701008041000000c0011002100000041b011001c7101710120000040f000000010020019000000bf60000613d000000000101043b0000001301100029000000000201041a000004200220019700000010022001af000000000021041b0000000f010000290000000001010433000000000001004b00008010070000390000057d0000613d0000000002000019000a00000002001d00000005012002100000000e011000290000000001010433000b00000001001d0000041c01100197001300000001001d000000000010043f0000042101000041000000200010043f0000000001000414000004070010009c0000040701008041000000c0011002100000041a011001c70000000002070019101710120000040f000000010020019000000bf60000613d000000000101043b000000000101041a0000040a03100197000000100030006c00000f460000613d000000000003004b000080100200003900000f3e0000613d0000000001000410001200000003001d000000000013004b00000f420000613d0000001301000029000000000010043f0000042101000041000000200010043f0000000001000414000004070010009c0000040701008041000000c0011002100000041a011001c7101710120000040f000000010020019000000bf60000613d000000000101043b000000000101041a000c00000001001d0000001201000029000000000010043f0000041901000041000000200010043f0000000001000414000004070010009c0000040701008041000000c0011002100000041a011001c70000801002000039101710120000040f000000010020019000000bf60000613d000000000101043b000000000101041a000000000001004b00008010020000390000012b0000613d0000000c03000029000000a0033002700011000100100092000000110030006c0000001201000029000006940000613d000900000003001d000000000010043f0000041901000041000000200010043f0000000001000414000004070010009c0000040701008041000000c0011002100000041a011001c7101710120000040f000000010020019000000bf60000613d000000000101043b000000000201041a000000110020006c000080100200003900000c730000a13d000000000010043f0000000001000414000004070010009c0000040701008041000000c0011002100000041b011001c7101710120000040f000000010020019000000bf60000613d000000000101043b000000110200002900000003022002700000000001210019000000000101041a000800000001001d0000001201000029000000000010043f0000041901000041000000200010043f0000000001000414000004070010009c0000040701008041000000c0011002100000041a011001c70000801002000039101710120000040f000000010020019000000bf60000613d000000000101043b000000000201041a000000090020006c000080100200003900000c730000a13d000000000010043f0000000001000414000004070010009c0000040701008041000000c0011002100000041b011001c7101710120000040f000000010020019000000bf60000613d00000011020000290000000502200210000000e00220018f000000080220024f00000009030000290000000503300210000000e00330018f000004070430021f00000443044001670000000c05000029000000a305500270000000000101043b0000000001510019000000000501041a000000000445016f000004070520019700000000033501cf000000000334019f000000000031041b000000e001200210000000000010043f0000042101000041000000200010043f0000000001000414000004070010009c0000040701008041000000c0011002100000041a011001c70000801002000039101710120000040f000000010020019000000bf60000613d0000000c020000290000042002200197000000000101043b000000000301041a0000040a03300197000000000223019f000000000021041b00008010020000390000001201000029000000000010043f0000041901000041000000200010043f0000000001000414000004070010009c0000040701008041000000c0011002100000041a011001c7101710120000040f000000010020019000000bf60000613d000000000101043b000000000201041a000c00000002001d000000000002004b000080100200003900000f380000613d000900000001001d000000000010043f0000000001000414000004070010009c0000040701008041000000c0011002100000041b011001c7101710120000040f000000010020019000000bf60000613d0000000c02000029000000010220008a0000000503200210000000e00330018f000004070330021f0000044303300167000000000101043b00000003042002700000000001410019000000000401041a000000000334016f000000000031041b0000000901000029000000000021041b0000001301000029000000000010043f0000042101000041000000200010043f0000000001000414000004070010009c0000040701008041000000c0011002100000041a011001c70000801002000039101710120000040f000000010020019000000bf60000613d000000000101043b000000000001041b000000110000006b0000074c0000c13d0000041401000041000000000101041a001100000001001d000000000001004b00008010020000390000012b0000613d0000001201000029000000000010043f0000041901000041000000200010043f0000000001000414000004070010009c0000040701008041000000c0011002100000041a011001c7101710120000040f000000010020019000000bf60000613d0000001102000029000000010220008a000000000101043b0000000101100039000000000101041a001100000001001d000000000021004b000007230000613d0000041401000041000000000101041a000c00000002001d000000000021004b000080100200003900000c730000a13d0000041401000041000000000010043f0000000001000414000004070010009c0000040701008041000000c0011002100000041b011001c7101710120000040f000000010020019000000bf60000613d000000000101043b0000041402000041000000000202041a000000110020006c000080100200003900000c730000a13d0000000c01100029000000000101041a000c00000001001d0000041401000041000000000010043f0000000001000414000004070010009c0000040701008041000000c0011002100000041b011001c7101710120000040f000000010020019000000bf60000613d0000000c020000290000040a02200197000000000101043b0000001101100029000000000301041a0000042003300197000000000323019f000000000031041b000000000020043f0000041901000041000000200010043f0000000001000414000004070010009c0000040701008041000000c0011002100000041a011001c70000801002000039101710120000040f000000010020019000000bf60000613d000000000101043b00000001011000390000001102000029000000000021041b0000041401000041000000000101041a001100000001001d000000000001004b000080100200003900000f380000613d0000041401000041000000000010043f0000000001000414000004070010009c0000040701008041000000c0011002100000041b011001c7101710120000040f000000010020019000000bf60000613d0000001102000029000000010220008a000000000101043b0000000001210019000000000301041a0000042003300197000000000031041b0000041401000041000000000021041b0000001201000029000000000010043f0000041901000041000000200010043f0000000001000414000004070010009c0000040701008041000000c0011002100000041a011001c70000801002000039101710120000040f000000010020019000000bf60000613d000000000101043b0000000101100039000000000001041b0000001301000029000000000010043f0000042101000041000000200010043f0000000001000414000004070010009c0000040701008041000000c0011002100000041a011001c70000801002000039101710120000040f000000010020019000000bf60000613d0000000d02000029000000a002200210000000000101043b000000000301041a0000040a03300197000000000223019f000000000021041b0000001001000029000000000010043f0000041901000041000000200010043f0000000001000414000004070010009c0000040701008041000000c0011002100000041a011001c70000801002000039101710120000040f000000010020019000000bf60000613d000000000101043b000000000301041a000004150030009c0000801002000039000000c10000213d001200000003001d0000000103300039000000000031041b000000000010043f0000000001000414000004070010009c0000040701008041000000c0011002100000041b011001c7101710120000040f000000010020019000000bf60000613d00000012050000290000000502500210000000e00220018f000004070320021f00000443033001670000000304500270000000000101043b0000000001410019000000000401041a000000000334016f0000000b04000029000000e00440027000000000022401cf000000000223019f000000000021041b0000001301000029000000000010043f0000042101000041000000200010043f0000000001000414000004070010009c0000040701008041000000c0011002100000041a011001c70000801002000039101710120000040f000000010020019000000bf60000613d000000000101043b000000000201041a000004200220019700000010022001af000000000021041b0000000d010000290000000101100039000d041d0010019b0000000a0200002900000001022000390000000f010000290000000001010433000000000012004b0000801007000039000005ea0000413d0000057d0000013d000000000003004b00000c880000613d00000000010104330000040a0110019800000c8c0000613d001100000001001d000000000010043f0000041901000041000000200010043f0000000001000414000004070010009c0000040701008041000000c0011002100000041a011001c70000000002070019101710120000040f000000010020019000000bf60000613d000000000101043b000000000101041a0013041d0010019c000007fa0000c13d0000041e010000410000000000100443000000110100002900000004001004430000000001000414000004070010009c0000040701008041000000c0011002100000041f011001c70000800202000039101710120000040f000000010020019000000f370000613d000000000101043b000000000001004b000080100200003900000f4a0000613d0000041401000041000000000101041a001200000001001d0000001101000029000000000010043f0000041901000041000000200010043f0000000001000414000004070010009c0000040701008041000000c0011002100000041a011001c7101710120000040f000000010020019000000bf60000613d000000000101043b00000001011000390000001202000029000000000021041b000004150020009c0000801002000039000000c10000213d000000120100002900000001011000390000041403000041000000000013041b000000000030043f0000000001000414000004070010009c0000040701008041000000c0011002100000041b011001c7101710120000040f000000010020019000000bf60000613d000000000101043b0000001201100029000000000201041a000004200220019700000011022001af000000000021041b0000000f010000290000000001010433000000000001004b00008010070000390000057d0000613d0000000002000019000d00000002001d00000005012002100000000e011000290000000001010433001000000001001d0000041c01100197001200000001001d000000000010043f0000042101000041000000200010043f0000000001000414000004070010009c0000040701008041000000c0011002100000041a011001c70000000002070019101710120000040f000000010020019000000bf60000613d000000000101043b000000000101041a0000040a0010019800000f460000c13d0000001201000029000000000010043f0000042101000041000000200010043f0000000001000414000004070010009c0000040701008041000000c0011002100000041a011001c70000801002000039101710120000040f000000010020019000000bf60000613d0000001302000029000000a002200210000000000101043b000000000301041a0000040a03300197000000000223019f000000000021041b0000001101000029000000000010043f0000041901000041000000200010043f0000000001000414000004070010009c0000040701008041000000c0011002100000041a011001c70000801002000039101710120000040f000000010020019000000bf60000613d000000000101043b000000000301041a000004150030009c0000801002000039000000c10000213d000c00000003001d0000000103300039000000000031041b000000000010043f0000000001000414000004070010009c0000040701008041000000c0011002100000041b011001c7101710120000040f000000010020019000000bf60000613d0000000c050000290000000502500210000000e00220018f000004070320021f00000443033001670000000304500270000000000101043b0000000001410019000000000401041a000000000334016f0000001004000029000000e00440027000000000022401cf000000000223019f000000000021041b0000001201000029000000000010043f0000042101000041000000200010043f0000000001000414000004070010009c0000040701008041000000c0011002100000041a011001c70000801002000039101710120000040f000000010020019000000bf60000613d000000000101043b000000000201041a000004200220019700000011022001af000000000021041b000000130100002900000001011000390013041d0010019b0000000d0200002900000001022000390000000f010000290000000001010433000000000012004b0000801007000039000008000000413d0000057d0000013d000000000003004b00000c880000613d00000000010104330000040a0010019800000f4e0000c13d0000000002000019000008830000013d0000000d0200002900000001022000390000000f010000290000000001010433000000000012004b00008010070000390000057d0000813d000d00000002001d00000005012002100000000e0110002900000000010104330000041c01100197001100000001001d000000000010043f0000042101000041000000200010043f0000000001000414000004070010009c0000040701008041000000c0011002100000041a011001c70000000002070019101710120000040f000000010020019000000bf60000613d000000000101043b000000000101041a0000040a03100198000080100200003900000f3e0000613d0000000001000410001300000003001d000000000013004b00000f420000613d0000001101000029000000000010043f0000042101000041000000200010043f0000000001000414000004070010009c0000040701008041000000c0011002100000041a011001c7101710120000040f000000010020019000000bf60000613d000000000101043b000000000101041a001000000001001d0000001301000029000000000010043f0000041901000041000000200010043f0000000001000414000004070010009c0000040701008041000000c0011002100000041a011001c70000801002000039101710120000040f000000010020019000000bf60000613d000000000101043b000000000101041a000000000001004b00008010020000390000012b0000613d0000001003000029000000a0033002700012000100100092000000120030006c0000001301000029000009290000613d000c00000003001d000000000010043f0000041901000041000000200010043f0000000001000414000004070010009c0000040701008041000000c0011002100000041a011001c7101710120000040f000000010020019000000bf60000613d000000000101043b000000000201041a000000120020006c000080100200003900000c730000a13d000000000010043f0000000001000414000004070010009c0000040701008041000000c0011002100000041b011001c7101710120000040f000000010020019000000bf60000613d000000000101043b000000120200002900000003022002700000000001210019000000000101041a000b00000001001d0000001301000029000000000010043f0000041901000041000000200010043f0000000001000414000004070010009c0000040701008041000000c0011002100000041a011001c70000801002000039101710120000040f000000010020019000000bf60000613d000000000101043b000000000201041a0000000c0020006c000080100200003900000c730000a13d000000000010043f0000000001000414000004070010009c0000040701008041000000c0011002100000041b011001c7101710120000040f000000010020019000000bf60000613d00000012020000290000000502200210000000e00220018f0000000b0220024f0000000c030000290000000503300210000000e00330018f000004070430021f00000443044001670000001005000029000000a305500270000000000101043b0000000001510019000000000501041a000000000445016f000004070520019700000000033501cf000000000334019f000000000031041b000000e001200210000000000010043f0000042101000041000000200010043f0000000001000414000004070010009c0000040701008041000000c0011002100000041a011001c70000801002000039101710120000040f000000010020019000000bf60000613d00000010020000290000042002200197000000000101043b000000000301041a0000040a03300197000000000223019f000000000021041b00008010020000390000001301000029000000000010043f0000041901000041000000200010043f0000000001000414000004070010009c0000040701008041000000c0011002100000041a011001c7101710120000040f000000010020019000000bf60000613d000000000101043b000000000201041a001000000002001d000000000002004b000080100200003900000f380000613d000c00000001001d000000000010043f0000000001000414000004070010009c0000040701008041000000c0011002100000041b011001c7101710120000040f000000010020019000000bf60000613d0000001002000029000000010220008a0000000503200210000000e00330018f000004070330021f0000044303300167000000000101043b00000003042002700000000001410019000000000401041a000000000334016f000000000031041b0000000c01000029000000000021041b0000001101000029000000000010043f0000042101000041000000200010043f0000000001000414000004070010009c0000040701008041000000c0011002100000041a011001c70000801002000039101710120000040f000000010020019000000bf60000613d000000000101043b000000000001041b000000120000006b0000087c0000c13d0000041401000041000000000101041a001200000001001d000000000001004b00008010020000390000012b0000613d0000001301000029000000000010043f0000041901000041000000200010043f0000000001000414000004070010009c0000040701008041000000c0011002100000041a011001c7101710120000040f000000010020019000000bf60000613d0000001202000029000000010220008a000000000101043b0000000101100039000000000101041a001200000001001d000000000021004b000009b80000613d0000041401000041000000000101041a001100000002001d000000000021004b000080100200003900000c730000a13d0000041401000041000000000010043f0000000001000414000004070010009c0000040701008041000000c0011002100000041b011001c7101710120000040f000000010020019000000bf60000613d000000000101043b0000041402000041000000000202041a000000120020006c000080100200003900000c730000a13d0000001101100029000000000101041a001100000001001d0000041401000041000000000010043f0000000001000414000004070010009c0000040701008041000000c0011002100000041b011001c7101710120000040f000000010020019000000bf60000613d00000011020000290000040a02200197000000000101043b0000001201100029000000000301041a0000042003300197000000000323019f000000000031041b000000000020043f0000041901000041000000200010043f0000000001000414000004070010009c0000040701008041000000c0011002100000041a011001c70000801002000039101710120000040f000000010020019000000bf60000613d000000000101043b00000001011000390000001202000029000000000021041b0000041401000041000000000101041a001200000001001d000000000001004b000080100200003900000f380000613d0000041401000041000000000010043f0000000001000414000004070010009c0000040701008041000000c0011002100000041b011001c7101710120000040f000000010020019000000bf60000613d0000001202000029000000010220008a000000000101043b0000000001210019000000000301041a0000042003300197000000000031041b0000041401000041000000000021041b0000001301000029000000000010043f0000041901000041000000200010043f0000000001000414000004070010009c0000040701008041000000c0011002100000041a011001c70000801002000039101710120000040f000000010020019000000bf60000613d000000000101043b0000000101100039000000000001041b0000087c0000013d0000001208000029000000000108001900000000020000190000801007000039000000000303041a000000000090004b000005210000813d000000e004300210000000000141043600000001022001bf000000000092004b000005230000813d000000c0043002100000041c0440019700000000014104360000000102200039000000000092004b000005250000813d000000a0043002100000041c0440019700000000014104360000000102200039000000000092004b000005270000813d00000080043002100000041c0440019700000000014104360000000102200039000000000092004b000005290000813d00000060043002100000041c0440019700000000014104360000000102200039000000000092004b0000052b0000813d00000040043002100000041c0440019700000000014104360000000102200039000000000092004b0000052d0000813d00000020043002100000041c04400197000000000141043600000001022000390000001304000029000000000092004b000005300000413d000005320000013d000000400100043d000000600200003900000000022104360000000603000029000000000403043300000060031000390000000000430435000000800510003900000005034002100000000003530019000000000004004b000000050b00002900000a450000613d000000000600001900000a260000013d0000000106600039000000000046004b00000a450000813d0000000007130049000000800770008a000000000575043600000000b70b043400000000980704340000040a0880019700000000088304360000000009090433000000020090008c00000c790000213d0000000000980435000000400770003900000000070704330000004008300039000000600900003900000000009804350000006009300039000000000807043300000000008904350000008003300039000000000008004b00000a230000613d00000000090000190000002007700039000000000a0704330000041c0aa001970000000003a304360000000109900039000000000089004b00000a3d0000413d00000a230000013d0000000004130049000000400510003900000000004504350000000000020435000000030200002900000000020204330000000003230436000000000002004b000000010800002900000a570000613d000000000500001900000000063500190000000007850019000000000707043300000000007604350000002005500039000000000025004b00000a500000413d0000001f0520003900000442055001970000000004540019000000000232001900000000000204350000002002400039000004070020009c00000407020080410000006002200210000004070010009c00000407010080410000004001100210000000000112019f0000000002000414000004070020009c0000040702008041000000c002200210000000000112019f00000425011001c70000800d02000039000000010300003900000435040000411017100d0000040f000000010020019000000bf60000613d00000003010000290000000001010433000000000001004b00000f520000c13d00000004010000290000000101100039000500160000002d000000160010006c000004cd0000413d0000042201000041000000000101041a000000390000013d00000000010304330000041c011001970000042b0010009c000001020000613d00008010020000390000000004000019000c00000003001d00000a8f0000013d000000000101043b0000000101100039000000000001041b0000000f0400002900000001044000390000000d010000290000000001010433000000000014004b0000000c03000029000080100200003900000c410000813d000f00000004001d0000000501400210000000000113001900000000010104330000041c01100197001100000001001d000000000010043f0000042101000041000000200010043f0000000001000414000004070010009c0000040701008041000000c0011002100000041a011001c7101710120000040f000000010020019000000bf60000613d000000000101043b000000000101041a0000040a0210019800000f3e0000613d0000000001000410001300000002001d000000000012004b000080100200003900000f420000613d0000001101000029000000000010043f0000042101000041000000200010043f0000000001000414000004070010009c0000040701008041000000c0011002100000041a011001c7101710120000040f000000010020019000000bf60000613d000000000101043b000000000101041a001000000001001d0000001301000029000000000010043f0000041901000041000000200010043f0000000001000414000004070010009c0000040701008041000000c0011002100000041a011001c70000801002000039101710120000040f000000010020019000000bf60000613d000000000101043b000000000101041a000000000001004b00008010020000390000012b0000613d0000001003000029000000a0033002700012000100100092000000120030006c00000b330000613d000e00000003001d0000001301000029000000000010043f0000041901000041000000200010043f0000000001000414000004070010009c0000040701008041000000c0011002100000041a011001c7101710120000040f000000010020019000000bf60000613d000000000101043b000000000201041a000000120020006c000080100200003900000c730000a13d000000000010043f0000000001000414000004070010009c0000040701008041000000c0011002100000041b011001c7101710120000040f000000010020019000000bf60000613d000000000101043b000000120200002900000003022002700000000001210019000000000101041a000b00000001001d0000001301000029000000000010043f0000041901000041000000200010043f0000000001000414000004070010009c0000040701008041000000c0011002100000041a011001c70000801002000039101710120000040f000000010020019000000bf60000613d000000000101043b000000000201041a0000000e0020006c000080100200003900000c730000a13d000000000010043f0000000001000414000004070010009c0000040701008041000000c0011002100000041b011001c7101710120000040f000000010020019000000bf60000613d00000012020000290000000502200210000000e00220018f0000000b0220024f0000000e030000290000000503300210000000e00330018f000004070430021f00000443044001670000001005000029000000a305500270000000000101043b0000000001510019000000000501041a000000000445016f000004070520019700000000033501cf000000000334019f000000000031041b000000e001200210000000000010043f0000042101000041000000200010043f0000000001000414000004070010009c0000040701008041000000c0011002100000041a011001c70000801002000039101710120000040f000000010020019000000bf60000613d00000010020000290000042002200197000000000101043b000000000301041a0000040a03300197000000000223019f000000000021041b00008010020000390000001301000029000000000010043f0000041901000041000000200010043f0000000001000414000004070010009c0000040701008041000000c0011002100000041a011001c7101710120000040f000000010020019000000bf60000613d000000000101043b000000000201041a001000000002001d000000000002004b000080100200003900000f380000613d000e00000001001d000000000010043f0000000001000414000004070010009c0000040701008041000000c0011002100000041b011001c7101710120000040f000000010020019000000bf60000613d0000001002000029000000010220008a0000000503200210000000e00330018f000004070330021f0000044303300167000000000101043b00000003042002700000000001410019000000000401041a000000000334016f000000000031041b0000000e01000029000000000021041b0000001101000029000000000010043f0000042101000041000000200010043f0000000001000414000004070010009c0000040701008041000000c0011002100000041a011001c70000801002000039101710120000040f000000010020019000000bf60000613d000000000101043b000000000001041b000000120000006b00000a870000c13d0000041401000041000000000101041a001200000001001d000000000001004b00008010020000390000012b0000613d0000001301000029000000000010043f0000041901000041000000200010043f0000000001000414000004070010009c0000040701008041000000c0011002100000041a011001c7101710120000040f000000010020019000000bf60000613d0000001202000029000000010220008a000000000101043b0000000101100039000000000101041a001200000001001d000000000021004b00000bc30000613d0000041401000041000000000101041a001100000002001d000000000021004b000080100200003900000c730000a13d0000041401000041000000000010043f0000000001000414000004070010009c0000040701008041000000c0011002100000041b011001c7101710120000040f000000010020019000000bf60000613d000000000101043b0000041402000041000000000202041a000000120020006c000080100200003900000c730000a13d0000001101100029000000000101041a001100000001001d0000041401000041000000000010043f0000000001000414000004070010009c0000040701008041000000c0011002100000041b011001c7101710120000040f000000010020019000000bf60000613d00000011020000290000040a02200197000000000101043b0000001201100029000000000301041a0000042003300197000000000323019f000000000031041b000000000020043f0000041901000041000000200010043f0000000001000414000004070010009c0000040701008041000000c0011002100000041a011001c70000801002000039101710120000040f000000010020019000000bf60000613d000000000101043b00000001011000390000001202000029000000000021041b0000041401000041000000000101041a001200000001001d000000000001004b000080100200003900000f380000613d0000041401000041000000000010043f0000000001000414000004070010009c0000040701008041000000c0011002100000041b011001c7101710120000040f000000010020019000000bf60000613d0000001202000029000000010220008a000000000101043b0000000001210019000000000301041a0000042003300197000000000031041b0000041401000041000000000021041b0000001301000029000000000010043f0000041901000041000000200010043f0000000001000414000004070010009c0000040701008041000000c0011002100000041a011001c70000801002000039101710120000040f000000010020019000000a840000c13d00000bf60000013d0000000001000414000004070010009c0000040701008041000000c00110021000000425011001c70000800d0200003900000002030000390000043a0400004100000000050004111017100d0000040f00000001002001900000009b0000c13d0000000001000019000010190001043000000012010000290000000001010433000000000001004b0000012b0000613d000000010210008a000004150020009c000000c10000213d00000005012002100000003f031000390000041603300197000000400400043d0000000003340019000600000004001d000000000043004b00000000040000390000000104004039000004150030009c000000c10000213d0000000100400190000000c10000c13d000000400030043f00000006030000290000000005230436000000000002004b00000c1f0000613d0000000002000019000000400300043d000004170030009c000000c10000213d0000004004300039000000400040043f000000200430003900000000007404350000000000030435000000000425001900000000003404350000002002200039000000000012004b00000c120000413d000400000005001d0000041101000041000000000010044300000000010004120000000400100443000000200100003900000024001004430000000001000414000004070010009c0000040701008041000000c00110021000000412011001c70000800502000039101710120000040f000000010020019000000f370000613d000000000101043b000300000001001d0000040a0910019700000012010000290000000003010433000000000003004b000000060700002900000004080000290000000c0a00002900000c4f0000c13d001000000009001d0000000001070433000000000001004b00000c7f0000c13d0000042701000041000000000010043f000004280100004100001019000104300000000001000414000004070010009c0000040701008041000000c00110021000000425011001c70000800d0200003900000003030000390000043c040000410000000a0500002900000000060004111017100d0000040f00000001002001900000009b0000c13d00000bf60000013d0000000001000019000000000200001900000c5e0000013d0000000004040433000000200440003900000000040404330000000003030433000000200330003900000000004304350000000102200039000000120300002900000000030304330000000101100039000000000031004b00000c390000813d00000005041002100000000004a40019000000000504043300000000050504330000040a05500197000000000095004b00000c5b0000613d0000000003070433000000000023004b00000c730000a13d000000050320021000000000033800190000000006030433000000000056043500000012050000290000000005050433000000000015004b00000c730000a13d0000000005070433000000000025004b00000c520000213d0000043301000041000000000010043f0000003201000039000000040010043f000004340100004100001019000104300000043301000041000000000010043f0000002101000039000000040010043f00000434010000410000101900010430000000100000006b00000c900000c13d00000004010000290000000001010433000000200110003900000000010104330000000001010433000000000001004b00000c8c0000c13d0000043201000041000000000010043f000004280100004100001019000104300000043001000041000000000010043f00000428010000410000101900010430000080100200003900000000030000190000000408000029000000100900002900000c9b0000013d0000000703000029000000010330003900000006010000290000000001010433000000000013004b00000f560000813d000700000003001d00000005013002100000000001180019000500000001001d000000000101043300000020011000390000000001010433000a00000001001d0000000031010434000900000003001d000000000001004b00000c880000613d000000000090043f0000041901000041000000200010043f0000000001000414000004070010009c0000040701008041000000c0011002100000041a011001c7101710120000040f000000010020019000000bf60000613d000000000101043b000000000101041a000f041d0010019c00000cf00000c13d0000041e010000410000000000100443000000030100002900000004001004430000000001000414000004070010009c0000040701008041000000c0011002100000041f011001c70000800202000039101710120000040f000000010020019000000f370000613d000000000101043b000000000001004b0000001001000029000080100200003900000f4a0000613d0000041403000041000000000303041a001300000003001d000000000010043f0000041901000041000000200010043f0000000001000414000004070010009c0000040701008041000000c0011002100000041a011001c7101710120000040f000000010020019000000bf60000613d000000000101043b00000001011000390000001302000029000000000021041b000004150020009c0000801002000039000000c10000213d000000130100002900000001011000390000041403000041000000000013041b000000000030043f0000000001000414000004070010009c0000040701008041000000c0011002100000041b011001c7101710120000040f000000010020019000000bf60000613d000000000101043b0000001301100029000000000201041a000004200220019700000010022001af000000000021041b0000000a010000290000000001010433000000000001004b00000eb30000613d0000000002000019000c00000002001d000000050120021000000009011000290000000001010433000d00000001001d0000041c01100197001300000001001d000000000010043f0000042101000041000000200010043f0000000001000414000004070010009c0000040701008041000000c0011002100000041a011001c70000801002000039101710120000040f000000010020019000000bf60000613d000000000101043b000000000101041a0000040a03100197000000100030006c00000f460000613d000000000003004b000080100200003900000f3e0000613d0000000001000410001200000003001d000000000013004b00000f420000613d0000001301000029000000000010043f0000042101000041000000200010043f0000000001000414000004070010009c0000040701008041000000c0011002100000041a011001c7101710120000040f000000010020019000000bf60000613d000000000101043b000000000101041a000e00000001001d0000001201000029000000000010043f0000041901000041000000200010043f0000000001000414000004070010009c0000040701008041000000c0011002100000041a011001c70000801002000039101710120000040f000000010020019000000bf60000613d000000000101043b000000000101041a000000000001004b00008010020000390000012b0000613d0000000e03000029000000a0033002700011000100100092000000110030006c000000120100002900000d9f0000613d000b00000003001d000000000010043f0000041901000041000000200010043f0000000001000414000004070010009c0000040701008041000000c0011002100000041a011001c7101710120000040f000000010020019000000bf60000613d000000000101043b000000000201041a000000110020006c000080100200003900000c730000a13d000000000010043f0000000001000414000004070010009c0000040701008041000000c0011002100000041b011001c7101710120000040f000000010020019000000bf60000613d000000000101043b000000110200002900000003022002700000000001210019000000000101041a000800000001001d0000001201000029000000000010043f0000041901000041000000200010043f0000000001000414000004070010009c0000040701008041000000c0011002100000041a011001c70000801002000039101710120000040f000000010020019000000bf60000613d000000000101043b000000000201041a0000000b0020006c000080100200003900000c730000a13d000000000010043f0000000001000414000004070010009c0000040701008041000000c0011002100000041b011001c7101710120000040f000000010020019000000bf60000613d00000011020000290000000502200210000000e00220018f000000080220024f0000000b030000290000000503300210000000e00330018f000004070430021f00000443044001670000000e05000029000000a305500270000000000101043b0000000001510019000000000501041a000000000445016f000004070520019700000000033501cf000000000334019f000000000031041b000000e001200210000000000010043f0000042101000041000000200010043f0000000001000414000004070010009c0000040701008041000000c0011002100000041a011001c70000801002000039101710120000040f000000010020019000000bf60000613d0000000e020000290000042002200197000000000101043b000000000301041a0000040a03300197000000000223019f000000000021041b00008010020000390000001201000029000000000010043f0000041901000041000000200010043f0000000001000414000004070010009c0000040701008041000000c0011002100000041a011001c7101710120000040f000000010020019000000bf60000613d000000000101043b000000000201041a000e00000002001d000000000002004b000080100200003900000f380000613d000b00000001001d000000000010043f0000000001000414000004070010009c0000040701008041000000c0011002100000041b011001c7101710120000040f000000010020019000000bf60000613d0000000e02000029000000010220008a0000000503200210000000e00330018f000004070330021f0000044303300167000000000101043b00000003042002700000000001410019000000000401041a000000000334016f000000000031041b0000000b01000029000000000021041b0000001301000029000000000010043f0000042101000041000000200010043f0000000001000414000004070010009c0000040701008041000000c0011002100000041a011001c70000801002000039101710120000040f000000010020019000000bf60000613d000000000101043b000000000001041b000000110000006b00000e570000c13d0000041401000041000000000101041a001100000001001d000000000001004b00008010020000390000012b0000613d0000001201000029000000000010043f0000041901000041000000200010043f0000000001000414000004070010009c0000040701008041000000c0011002100000041a011001c7101710120000040f000000010020019000000bf60000613d0000001102000029000000010220008a000000000101043b0000000101100039000000000101041a001100000001001d000000000021004b00000e2e0000613d0000041401000041000000000101041a000e00000002001d000000000021004b000080100200003900000c730000a13d0000041401000041000000000010043f0000000001000414000004070010009c0000040701008041000000c0011002100000041b011001c7101710120000040f000000010020019000000bf60000613d000000000101043b0000041402000041000000000202041a000000110020006c000080100200003900000c730000a13d0000000e01100029000000000101041a000e00000001001d0000041401000041000000000010043f0000000001000414000004070010009c0000040701008041000000c0011002100000041b011001c7101710120000040f000000010020019000000bf60000613d0000000e020000290000040a02200197000000000101043b0000001101100029000000000301041a0000042003300197000000000323019f000000000031041b000000000020043f0000041901000041000000200010043f0000000001000414000004070010009c0000040701008041000000c0011002100000041a011001c70000801002000039101710120000040f000000010020019000000bf60000613d000000000101043b00000001011000390000001102000029000000000021041b0000041401000041000000000101041a001100000001001d000000000001004b000080100200003900000f380000613d0000041401000041000000000010043f0000000001000414000004070010009c0000040701008041000000c0011002100000041b011001c7101710120000040f000000010020019000000bf60000613d0000001102000029000000010220008a000000000101043b0000000001210019000000000301041a0000042003300197000000000031041b0000041401000041000000000021041b0000001201000029000000000010043f0000041901000041000000200010043f0000000001000414000004070010009c0000040701008041000000c0011002100000041a011001c70000801002000039101710120000040f000000010020019000000bf60000613d000000000101043b0000000101100039000000000001041b0000001301000029000000000010043f0000042101000041000000200010043f0000000001000414000004070010009c0000040701008041000000c0011002100000041a011001c70000801002000039101710120000040f000000010020019000000bf60000613d0000000f02000029000000a002200210000000000101043b000000000301041a0000040a03300197000000000223019f000000000021041b0000001001000029000000000010043f0000041901000041000000200010043f0000000001000414000004070010009c0000040701008041000000c0011002100000041a011001c70000801002000039101710120000040f000000010020019000000bf60000613d000000000101043b000000000301041a000004150030009c0000801002000039000000c10000213d001200000003001d0000000103300039000000000031041b000000000010043f0000000001000414000004070010009c0000040701008041000000c0011002100000041b011001c7101710120000040f000000010020019000000bf60000613d00000012050000290000000502500210000000e00220018f000004070320021f00000443033001670000000304500270000000000101043b0000000001410019000000000401041a000000000334016f0000000d04000029000000e00440027000000000022401cf000000000223019f000000000021041b0000001301000029000000000010043f0000042101000041000000200010043f0000000001000414000004070010009c0000040701008041000000c0011002100000041a011001c70000801002000039101710120000040f000000010020019000000bf60000613d000000000101043b000000000201041a000004200220019700000010022001af000000000021041b0000000f010000290000000101100039000f041d0010019b0000000c0200002900000001022000390000000a010000290000000001010433000000000012004b00000cf50000413d00000006010000290000000001010433000000070010006c000080100200003900000c730000a13d0000042201000041000000000101041a000004150010009c000000c10000213d0000000503000029000000000403043300000001031000390000042205000041000000000035041b000000000050043f00000000340404340000040a064001970000000101100210000004230410009a000000000504041a0000042005500197000000000565019f000000000054041b00000000030304330000000034030434000004150040009c000000c10000213d001200000003001d000004240510009a000000000105041a000000000045041b001300000004001d000000000014004b00000efb0000813d000f00000001001d001100000005001d000000000050043f0000000001000414000004070010009c0000040701008041000000c0011002100000041b011001c7101710120000040f000000010020019000000bf60000613d000000000201043b000000130300002900000007013000390000000301100270000000000112001900000002033002100000001c0330019000000eef0000613d00000003033002100000010003300089000000010410008a000000000504041a00000000053501cf000000000335022f000000000034041b0000000f03000029000000070330003900000003033002700000000003320019000000000031004b0000801002000039000000110500002900000efb0000813d000000000001041b0000000101100039000000000031004b00000ef70000413d000000000050043f0000000001000414000004070010009c0000040701008041000000c0011002100000041b011001c7101710120000040f000000010020019000000bf60000613d000000000101043b0000001309000029000000030a900272000000120c00002900000f210000613d00000000030000190000801002000039000000010b00008a000000000400001900000000060c001900000000050000190000000067060434000000e007700270000000050840021000000000078701cf000004070880021f0000000008b8013f000000000585016f000000000557019f000000070040008c000000010440003900000f0f0000413d0000000004130019000000000054041b000001000cc0003900000001033000390000000000a3004b00000f0c0000413d00000f230000013d0000801002000039000000010b00008a00000007039001900000000408000029000000100900002900000c950000613d0000000004000019000000000500001900000000c60c0434000000e006600270000000050740021000000000067601cf000004070770021f0000000007b7013f000000000575016f000000000556019f0000000104400039000000000034004b00000f290000413d0000000001a10019000000000051041b00000c950000013d000000000001042f0000043301000041000000000010043f0000003101000039000000040010043f000004340100004100001019000104300000043e01000041000000000010043f000004280100004100001019000104300000043d01000041000000000010043f000004280100004100001019000104300000042e01000041000000000010043f000004280100004100001019000104300000042f01000041000000000010043f000004280100004100001019000104300000043101000041000000000010043f000004280100004100001019000104300000043601000041000000000010043f000004280100004100001019000104300000000001000414000004070010009c0000040701008041000000c00110021000000425011001c70000800d020000390000000203000039000004260400004100000bf20000013d0003000000000002000000000301041a000000400200043d000300000002001d000100000003001d0000000002320436000200000002001d000000000010043f0000000001000414000004070010009c0000040701008041000000c0011002100000041b011001c70000801002000039101710120000040f000000010020019000000feb0000613d000000000201043b0000000108000029000000080080008c00000fbb0000413d00000000060000190000000207000029000000e003700039000000000402041a0000041c05400197000000000053043500000020034002100000041c03300197000000c005700039000000000035043500000040034002100000041c03300197000000a005700039000000000035043500000060034002100000041c033001970000008005700039000000000035043500000080034002100000041c0330019700000060057000390000000000350435000000a0034002100000041c0330019700000040057000390000000000350435000000c0034002100000041c0330019700000020057000390000000000350435000000e003400210000000000037043500000001022000390000010007700039000000080660003900000007036001bf000000000083004b00000f760000413d000000000202041a000000000086004b00000fc00000413d000000000086004b00000fc50000413d000000000086004b00000fcb0000413d000000000086004b00000fd10000413d000000000086004b00000fd70000413d000000000086004b00000fdd0000413d000000000086004b00000fe30000413d0000000301000029000000000086004b00000fae0000813d0000041c02200197000000000727043600000000021700490000001f0320003900000442023001970000000003120019000000000023004b00000000020000390000000102004039000004150030009c00000fed0000213d000000010020019000000fed0000c13d000000400030043f000000000001042d00000000060000190000000207000029000000000202041a000000000080004b00000f9d0000813d000000e003200210000000000737043600000001066001bf000000000086004b00000f9f0000813d000000c0032002100000041c0330019700000000073704360000000106600039000000000086004b00000fa10000813d000000a0032002100000041c0330019700000000073704360000000106600039000000000086004b00000fa30000813d00000080032002100000041c0330019700000000073704360000000106600039000000000086004b00000fa50000813d00000060032002100000041c0330019700000000073704360000000106600039000000000086004b00000fa70000813d00000040032002100000041c0330019700000000073704360000000106600039000000000086004b00000fa90000813d00000020032002100000041c03300197000000000737043600000001066000390000000301000029000000000086004b00000fac0000413d00000fae0000013d000000000100001900001019000104300000043301000041000000000010043f0000004101000039000000040010043f00000434010000410000101900010430000000000001042f00000000050100190000000000200443000000040100003900000005024002700000000002020031000000000121043a0000002004400039000000000031004b00000ff70000413d000004070030009c000004070300804100000060013002100000000002000414000004070020009c0000040702008041000000c002200210000000000112019f00000444011001c70000000002050019101710120000040f00000001002001900000100c0000613d000000000101043b000000000001042d000000000001042f00001010002104210000000102000039000000000001042d0000000002000019000000000001042d00001015002104230000000102000039000000000001042d0000000002000019000000000001042d0000101700000432000010180001042e00001019000104300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffff00000000000000000000000000000000000000000000000000000001ffffffe000000000000000000000000000000000000000000000000000000000ffffffe0000000000000000000000000ffffffffffffffffffffffffffffffffffffffff00000002000000000000000000000000000000c0000001000000000000000000000000000000000000000000000000000000000000000000000000005ad317a3000000000000000000000000000000000000000000000000000000005ad317a400000000000000000000000000000000000000000000000000000000f86368ae000000000000000000000000000000000000000000000000000000000340e905000000000000000000000000000000000000000000000000000000002fc487ae310ab089e4439a4c15d089f94afb7896ff553aecb10793d0ab882de59d99a32e0200000200000000000000000000000000000044000000000000000000000000c8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c1320c8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c131e000000000000000000000000000000000000000000000000ffffffffffffffff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0000000000000000000000000000000000000000000000000ffffffffffffffbf4a3dc65d6050fda6bebe443a1967d5647a45d4b2a63c12c4550b3471a1ee3411c8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c131d02000000000000000000000000000000000000400000000000000000000000000200000000000000000000000000000000000020000000000000000000000000ffffffff000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffff1806aa1896bbf26568e884a7374b41e002500962caba6a15023a8d90e8508b830200000200000000000000000000000000000024000000000000000000000000ffffffffffffffffffffffff0000000000000000000000000000000000000000c8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c131c363d25a6b563e4e505e09cc7b49c0772239b412c54b5ffbf5d7c1d77a49f57f2d28217419eccc49fcc8f0752c59c0411c6f5d3223b8105c572607d611e165a0bd28217419eccc49fcc8f0752c59c0411c6f5d3223b8105c572607d611e165a0a0200000000000000000000000000000000000000000000000000000000000000b8fad2fa0ed7a383e747c309ef2c4391d7b65592a48893e57ccc1fab707914568bce42e70000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000020000000800000000000000000277d76f8000000000000000000000000000000000000000000000000000000001f931c1c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffff9f000000000000000000000000000000000000000000000000ffffffffffffffdfa023275d00000000000000000000000000000000000000000000000000000000e350060000000000000000000000000000000000000000000000000000000000c68ec83a0000000000000000000000000000000000000000000000000000000079c9df22000000000000000000000000000000000000000000000000000000007bc55950000000000000000000000000000000000000000000000000000000004e487b710000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000240000000000000000000000008faa70878671ccd212d20771b795c50af8fd3ff6cf27f4bde57e5d4de0aeb67398116860000000000000000000000000000000000000000000000000000000007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff2d7de8be61333b603370f8ad3a63fbee390a2cddc47efa3a8d9f829ee1e9a5f62d7de8be61333b603370f8ad3a63fbee390a2cddc47efa3a8d9f829ee1e9a5f5f5cbf596165cc457b2cd92e8d8450827ee314968160a5696402d75766fc52cafbe24598300000000000000000000000000000000000000000000000000000000706807c5bad215e3dcb9056c9bcb73bbede85a028c0256ae6ab6d04c71813360c3c5ec3700000000000000000000000000000000000000000000000000000000a9ad62f80000000000000000000000000000000000000000000000000000000040d4c9d9000000000000000000000000000000000000000000000000000000001c49f4d1000000000000000000000000000000000000000000000000000000000149422e00000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff02000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d6f730662957a00ff3d20ee4a453089c466fc4437de766ac54c0f01b25077e7e
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
000000000000000000000000d38743b48d26743c0ec6898d699394fbc94657ee
-----Decoded View---------------
Arg [0] : _pauserWallet (address): 0xd38743b48d26743C0Ec6898d699394FBc94657Ee
-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 000000000000000000000000d38743b48d26743c0ec6898d699394fbc94657ee
Loading...
Loading
Loading...
Loading
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.