Overview
BERA Balance
BERA Value
$0.00More Info
Private Name Tags
ContractCreator
Multichain Info
No addresses found
Latest 1 from a total of 1 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Transfer Ownersh... | 958813 | 38 days ago | IN | 0 BERA | 0.00000514 |
Loading...
Loading
Contract Source Code Verified (Exact Match)
Contract Name:
PriceOracle
Compiler Version
v0.8.28+commit.7893614a
Contract Source Code (Solidity Standard Json-Input format)
// SPDX-License-Identifier: MIT pragma solidity >=0.8.17 <0.9.0; import {IPriceOracle} from "src/registrar/interfaces/IPriceOracle.sol"; import {IPyth} from "@pythnetwork/pyth-sdk-solidity/IPyth.sol"; import {PythStructs} from "@pythnetwork/pyth-sdk-solidity/PythStructs.sol"; import {Ownable} from "@openzeppelin/contracts/access/Ownable.sol"; import {StringUtils} from "src/utils/StringUtils.sol"; import {console} from "forge-std/console.sol"; contract PriceOracle is IPriceOracle, Ownable { using StringUtils for string; IPyth pyth; bytes32 beraUsdPythPriceFeedId; /// @notice The minimum price in wei. If conversion is less than this, revert. Editable by admin uint256 minPriceInWei; /// @notice Thrown when the price is too low. error PriceTooLow(); /// @notice Thrown when the Pyth contract is invalid. error InvalidPyth(); /// @notice Emitted when the minimum price in wei is set. event MinPriceInWeiSet(uint256 minPriceInWei_); /// @notice Emitted when the Pyth price feed id is set. event BeraUsdPythPriceFeedIdSet(bytes32 beraUsdPythPriceFeedId_); /// @notice Emitted when the Pyth contract is set. event PythSet(address pyth_); constructor(address pyth_, bytes32 beraUsdPythPriceFeedId_) Ownable(msg.sender) { if (pyth_ == address(0)) revert InvalidPyth(); pyth = IPyth(pyth_); beraUsdPythPriceFeedId = beraUsdPythPriceFeedId_; } function setMinPriceInWei(uint256 minPriceInWei_) external onlyOwner { minPriceInWei = minPriceInWei_; emit MinPriceInWeiSet(minPriceInWei_); } function setBeraUsdPythPriceFeedId(bytes32 beraUsdPythPriceFeedId_) external onlyOwner { beraUsdPythPriceFeedId = beraUsdPythPriceFeedId_; emit BeraUsdPythPriceFeedIdSet(beraUsdPythPriceFeedId_); } function setPyth(address pyth_) external onlyOwner { pyth = IPyth(pyth_); emit PythSet(pyth_); } /// @notice Calculates the price for a given label with a default payment method of ETH. /// @param label The label to query. /// @param expires The expiry of the label. /// @param duration The duration of the registration in seconds. /// @return The price of the label. function price(string calldata label, uint256 expires, uint256 duration) external view returns (Price memory) { return price(label, expires, duration, Payment.BERA); } /// @notice Calculates the price for a given label with a specified payment method. /// @param label The label to query. /// param expiry The expiry of the label. Not used atm /// @param duration The duration of the registration in seconds. /// @param payment The payment method. /// @return The price of the label. function price(string calldata label, uint256, uint256 duration, Payment payment) public view returns (Price memory) { // Implement your logic to calculate the base and premium price (uint256 basePrice, uint256 discount) = calculateBasePrice(label, duration); // Adjust the price based on the payment method if necessary if (payment == Payment.BERA) { basePrice = convertToToken(basePrice); discount = convertToToken(discount); } return Price(basePrice, discount); } /// @notice Calculates the base price for a given label and duration. /// @param label The label to query. /// @param duration The duration of the registration. /// @return base The base price before discount. /// @return discount The discount. function calculateBasePrice(string calldata label, uint256 duration) internal pure returns (uint256 base, uint256 discount) { uint256 nameLength = label.strlen(); uint256 pricePerYear; // notation is $_cents_4zeros => $*10^6 if (nameLength == 1) { pricePerYear = 420_00_0000; // 1 character 420$ } else if (nameLength == 2) { pricePerYear = 269_00_0000; // 2 characters 269$ } else if (nameLength == 3) { pricePerYear = 169_00_0000; // 3 characters 169$ } else if (nameLength == 4) { pricePerYear = 69_00_0000; // 4 characters 69$ } else { pricePerYear = 25_00_0000; // 5+ characters 25$ } uint256 discount_; if (duration <= 365 days) { discount_ = 0; } else if (duration <= 2 * 365 days) { discount_ = 5; } else if (duration <= 3 * 365 days) { discount_ = 15; } else if (duration <= 4 * 365 days) { discount_ = 30; } else { discount_ = 40; } uint256 totalPrice = (pricePerYear * duration) / 365 days; uint256 discountAmount = (totalPrice * discount_) / 100; return (totalPrice, discountAmount); } /// @notice Converts a price from a stablecoin equivalent to ETH. /// @dev This function can revert with StalePrice /// @param price_ The price in stablecoin. /// @return The price in BERA. function convertToToken(uint256 price_) internal view returns (uint256) { PythStructs.Price memory conversionRate = pyth.getPriceNoOlderThan(beraUsdPythPriceFeedId, 30); uint256 beraPrice18Decimals = (uint256(uint64(conversionRate.price)) * (10 ** 18)) / (10 ** uint8(uint32(-1 * conversionRate.expo))); // 6 is the number of decimals in USD prices, so 18-6=12 uint256 oneDollarInWei = ((10 ** 12) * (10 ** 18)) / beraPrice18Decimals; // if the price of 1 dollar is less than the minimum price, revert // prevent the price from being too low if price feed is down if (oneDollarInWei <= minPriceInWei) revert PriceTooLow(); return price_ * oneDollarInWei; } }
//SPDX-License-Identifier: MIT pragma solidity >=0.8.17 <0.9.0; interface IPriceOracle { /// @notice The payment method for registration. enum Payment { BERA, STABLE } /// @notice The price for a given label. struct Price { uint256 base; uint256 discount; } /// @notice The price for a given label. /// This assumes a default payment method of BERA. /// @param label The label to query. /// @param expires The expiry of the label. /// @param duration The duration of the registration. /// @return The price of the label. function price(string calldata label, uint256 expires, uint256 duration) external view returns (Price memory); /// @notice The price for a given label. /// @param label The label to query. /// @param expires The expiry of the label. /// @param duration The duration of the registration. /// @param payment The payment method. /// @return The price of the label. function price(string calldata label, uint256 expires, uint256 duration, Payment payment) external view returns (Price memory); }
// SPDX-License-Identifier: Apache-2.0 pragma solidity ^0.8.0; import "./PythStructs.sol"; import "./IPythEvents.sol"; /// @title Consume prices from the Pyth Network (https://pyth.network/). /// @dev Please refer to the guidance at https://docs.pyth.network/documentation/pythnet-price-feeds/best-practices for how to consume prices safely. /// @author Pyth Data Association interface IPyth is IPythEvents { /// @notice Returns the price of a price feed without any sanity checks. /// @dev This function returns the most recent price update in this contract without any recency checks. /// This function is unsafe as the returned price update may be arbitrarily far in the past. /// /// Users of this function should check the `publishTime` in the price to ensure that the returned price is /// sufficiently recent for their application. If you are considering using this function, it may be /// safer / easier to use `getPriceNoOlderThan`. /// @return price - please read the documentation of PythStructs.Price to understand how to use this safely. function getPriceUnsafe( bytes32 id ) external view returns (PythStructs.Price memory price); /// @notice Returns the price that is no older than `age` seconds of the current time. /// @dev This function is a sanity-checked version of `getPriceUnsafe` which is useful in /// applications that require a sufficiently-recent price. Reverts if the price wasn't updated sufficiently /// recently. /// @return price - please read the documentation of PythStructs.Price to understand how to use this safely. function getPriceNoOlderThan( bytes32 id, uint age ) external view returns (PythStructs.Price memory price); /// @notice Returns the exponentially-weighted moving average price of a price feed without any sanity checks. /// @dev This function returns the same price as `getEmaPrice` in the case where the price is available. /// However, if the price is not recent this function returns the latest available price. /// /// The returned price can be from arbitrarily far in the past; this function makes no guarantees that /// the returned price is recent or useful for any particular application. /// /// Users of this function should check the `publishTime` in the price to ensure that the returned price is /// sufficiently recent for their application. If you are considering using this function, it may be /// safer / easier to use either `getEmaPrice` or `getEmaPriceNoOlderThan`. /// @return price - please read the documentation of PythStructs.Price to understand how to use this safely. function getEmaPriceUnsafe( bytes32 id ) external view returns (PythStructs.Price memory price); /// @notice Returns the exponentially-weighted moving average price that is no older than `age` seconds /// of the current time. /// @dev This function is a sanity-checked version of `getEmaPriceUnsafe` which is useful in /// applications that require a sufficiently-recent price. Reverts if the price wasn't updated sufficiently /// recently. /// @return price - please read the documentation of PythStructs.Price to understand how to use this safely. function getEmaPriceNoOlderThan( bytes32 id, uint age ) external view returns (PythStructs.Price memory price); /// @notice Update price feeds with given update messages. /// This method requires the caller to pay a fee in wei; the required fee can be computed by calling /// `getUpdateFee` with the length of the `updateData` array. /// Prices will be updated if they are more recent than the current stored prices. /// The call will succeed even if the update is not the most recent. /// @dev Reverts if the transferred fee is not sufficient or the updateData is invalid. /// @param updateData Array of price update data. function updatePriceFeeds(bytes[] calldata updateData) external payable; /// @notice Wrapper around updatePriceFeeds that rejects fast if a price update is not necessary. A price update is /// necessary if the current on-chain publishTime is older than the given publishTime. It relies solely on the /// given `publishTimes` for the price feeds and does not read the actual price update publish time within `updateData`. /// /// This method requires the caller to pay a fee in wei; the required fee can be computed by calling /// `getUpdateFee` with the length of the `updateData` array. /// /// `priceIds` and `publishTimes` are two arrays with the same size that correspond to senders known publishTime /// of each priceId when calling this method. If all of price feeds within `priceIds` have updated and have /// a newer or equal publish time than the given publish time, it will reject the transaction to save gas. /// Otherwise, it calls updatePriceFeeds method to update the prices. /// /// @dev Reverts if update is not needed or the transferred fee is not sufficient or the updateData is invalid. /// @param updateData Array of price update data. /// @param priceIds Array of price ids. /// @param publishTimes Array of publishTimes. `publishTimes[i]` corresponds to known `publishTime` of `priceIds[i]` function updatePriceFeedsIfNecessary( bytes[] calldata updateData, bytes32[] calldata priceIds, uint64[] calldata publishTimes ) external payable; /// @notice Returns the required fee to update an array of price updates. /// @param updateData Array of price update data. /// @return feeAmount The required fee in Wei. function getUpdateFee( bytes[] calldata updateData ) external view returns (uint feeAmount); /// @notice Parse `updateData` and return price feeds of the given `priceIds` if they are all published /// within `minPublishTime` and `maxPublishTime`. /// /// You can use this method if you want to use a Pyth price at a fixed time and not the most recent price; /// otherwise, please consider using `updatePriceFeeds`. This method may store the price updates on-chain, if they /// are more recent than the current stored prices. /// /// This method requires the caller to pay a fee in wei; the required fee can be computed by calling /// `getUpdateFee` with the length of the `updateData` array. /// /// /// @dev Reverts if the transferred fee is not sufficient or the updateData is invalid or there is /// no update for any of the given `priceIds` within the given time range. /// @param updateData Array of price update data. /// @param priceIds Array of price ids. /// @param minPublishTime minimum acceptable publishTime for the given `priceIds`. /// @param maxPublishTime maximum acceptable publishTime for the given `priceIds`. /// @return priceFeeds Array of the price feeds corresponding to the given `priceIds` (with the same order). function parsePriceFeedUpdates( bytes[] calldata updateData, bytes32[] calldata priceIds, uint64 minPublishTime, uint64 maxPublishTime ) external payable returns (PythStructs.PriceFeed[] memory priceFeeds); /// @notice Similar to `parsePriceFeedUpdates` but ensures the updates returned are /// the first updates published in minPublishTime. That is, if there are multiple updates for a given timestamp, /// this method will return the first update. This method may store the price updates on-chain, if they /// are more recent than the current stored prices. /// /// /// @dev Reverts if the transferred fee is not sufficient or the updateData is invalid or there is /// no update for any of the given `priceIds` within the given time range and uniqueness condition. /// @param updateData Array of price update data. /// @param priceIds Array of price ids. /// @param minPublishTime minimum acceptable publishTime for the given `priceIds`. /// @param maxPublishTime maximum acceptable publishTime for the given `priceIds`. /// @return priceFeeds Array of the price feeds corresponding to the given `priceIds` (with the same order). function parsePriceFeedUpdatesUnique( bytes[] calldata updateData, bytes32[] calldata priceIds, uint64 minPublishTime, uint64 maxPublishTime ) external payable returns (PythStructs.PriceFeed[] memory priceFeeds); }
// SPDX-License-Identifier: Apache-2.0 pragma solidity ^0.8.0; contract PythStructs { // A price with a degree of uncertainty, represented as a price +- a confidence interval. // // The confidence interval roughly corresponds to the standard error of a normal distribution. // Both the price and confidence are stored in a fixed-point numeric representation, // `x * (10^expo)`, where `expo` is the exponent. // // Please refer to the documentation at https://docs.pyth.network/documentation/pythnet-price-feeds/best-practices for how // to how this price safely. struct Price { // Price int64 price; // Confidence interval around the price uint64 conf; // Price exponent int32 expo; // Unix timestamp describing when the price was published uint publishTime; } // PriceFeed represents a current aggregate price from pyth publisher feeds. struct PriceFeed { // The price ID. bytes32 id; // Latest available price Price price; // Latest available exponentially-weighted moving average price Price emaPrice; } }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts (last updated v5.0.0) (access/Ownable.sol) pragma solidity ^0.8.20; import {Context} from "../utils/Context.sol"; /** * @dev Contract module which provides a basic access control mechanism, where * there is an account (an owner) that can be granted exclusive access to * specific functions. * * The initial owner is set to the address provided by the deployer. This can * later be changed with {transferOwnership}. * * This module is used through inheritance. It will make available the modifier * `onlyOwner`, which can be applied to your functions to restrict their use to * the owner. */ abstract contract Ownable is Context { address private _owner; /** * @dev The caller account is not authorized to perform an operation. */ error OwnableUnauthorizedAccount(address account); /** * @dev The owner is not a valid owner account. (eg. `address(0)`) */ error OwnableInvalidOwner(address owner); event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); /** * @dev Initializes the contract setting the address provided by the deployer as the initial owner. */ constructor(address initialOwner) { if (initialOwner == address(0)) { revert OwnableInvalidOwner(address(0)); } _transferOwnership(initialOwner); } /** * @dev Throws if called by any account other than the owner. */ modifier onlyOwner() { _checkOwner(); _; } /** * @dev Returns the address of the current owner. */ function owner() public view virtual returns (address) { return _owner; } /** * @dev Throws if the sender is not the owner. */ function _checkOwner() internal view virtual { if (owner() != _msgSender()) { revert OwnableUnauthorizedAccount(_msgSender()); } } /** * @dev Leaves the contract without owner. It will not be possible to call * `onlyOwner` functions. Can only be called by the current owner. * * NOTE: Renouncing ownership will leave the contract without an owner, * thereby disabling any functionality that is only available to the owner. */ function renounceOwnership() public virtual onlyOwner { _transferOwnership(address(0)); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Can only be called by the current owner. */ function transferOwnership(address newOwner) public virtual onlyOwner { if (newOwner == address(0)) { revert OwnableInvalidOwner(address(0)); } _transferOwnership(newOwner); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Internal function without access restriction. */ function _transferOwnership(address newOwner) internal virtual { address oldOwner = _owner; _owner = newOwner; emit OwnershipTransferred(oldOwner, newOwner); } }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.0; library StringUtils { error InvalidUTF8Byte(); function utf8Length(string memory s) internal pure returns (uint256) { return bytes(s).length; } /** * @dev Returns the length of a given string, accurately counting characters including complex emojis. * @param s The string to measure the length of. * @return The length of the input string. */ function strlen(string memory s) internal pure returns (uint256) { bytes memory strBytes = bytes(s); uint256 len = 0; uint256 i = 0; uint256 strLen = strBytes.length; while (i < strLen) { uint256 charLen = _charLength(strBytes, i); uint256 nextI = i + charLen; // Include any combining marks or modifiers immediately following the base character while (nextI < strLen && _isCombiningMarkOrModifier(strBytes, nextI)) { nextI += _charLength(strBytes, nextI); } // Handle sequences involving ZWJs by looping until no more ZWJs are found while (nextI < strLen && _isZeroWidthJoiner(strBytes, nextI)) { // Move past the ZWJ nextI += _charLength(strBytes, nextI); // Include the next character after ZWJ if (nextI < strLen) { uint256 nextCharLen = _charLength(strBytes, nextI); nextI += nextCharLen; // Include any combining marks or modifiers following the character while (nextI < strLen && _isCombiningMarkOrModifier(strBytes, nextI)) { nextI += _charLength(strBytes, nextI); } } else { break; // No character after ZWJ } } // Handle regional indicators (used in flags) - always count as pairs if (_isRegionalIndicator(strBytes, i) && nextI < strLen && _isRegionalIndicator(strBytes, nextI)) { nextI += _charLength(strBytes, nextI); } // Increment length for each complete character sequence len++; i = nextI; } return len; } // Determines the length of a UTF-8 encoded character in bytes with validation function _charLength(bytes memory strBytes, uint256 index) private pure returns (uint256) { uint8 b = uint8(strBytes[index]); if (b < 0x80) { return 1; // 1-byte character (ASCII) } else if (b < 0xE0 && index + 1 < strBytes.length && uint8(strBytes[index + 1]) & 0xC0 == 0x80) { return 2; // 2-byte character } else if ( b < 0xF0 && index + 2 < strBytes.length && uint8(strBytes[index + 1]) & 0xC0 == 0x80 && uint8(strBytes[index + 2]) & 0xC0 == 0x80 ) { return 3; // 3-byte character } else if ( b < 0xF8 && index + 3 < strBytes.length && uint8(strBytes[index + 1]) & 0xC0 == 0x80 && uint8(strBytes[index + 2]) & 0xC0 == 0x80 && uint8(strBytes[index + 3]) & 0xC0 == 0x80 ) { return 4; // 4-byte character (including emojis) } else { revert InvalidUTF8Byte(); } } // Checks if the sequence starting at index is a Zero-Width Joiner (ZWJ) function _isZeroWidthJoiner(bytes memory strBytes, uint256 index) private pure returns (bool) { return ( strBytes[index] == 0xE2 && index + 2 < strBytes.length && strBytes[index + 1] == 0x80 && strBytes[index + 2] == 0x8D ); } // Checks if the character at index is a combining mark or modifier function _isCombiningMarkOrModifier(bytes memory strBytes, uint256 index) private pure returns (bool) { uint8 b = uint8(strBytes[index]); // Combining marks are in the range starting with 0xCC or 0xCD if (b == 0xCC || b == 0xCD) { return true; } // Emoji modifiers and variation selectors if (b == 0xE2 && index + 2 < strBytes.length) { uint8 b1 = uint8(strBytes[index + 1]); uint8 b2 = uint8(strBytes[index + 2]); // Check for variation selectors (e.g., U+FE0F) if (b1 == 0x80 && (b2 == 0x8F || b2 == 0x8E)) { return true; } } // Handle emojis with skin tone, gender modifiers, etc. if (b == 0xF0 && index + 3 < strBytes.length) { uint8 b1 = uint8(strBytes[index + 1]); uint8 b2 = uint8(strBytes[index + 2]); uint8 b3 = uint8(strBytes[index + 3]); // Check for specific sequences that are known modifiers if ( (b1 == 0x9F && b2 == 0x8F && (b3 >= 0xBB && b3 <= 0xBF)) // Skin tone modifiers || (b1 == 0x9F && b2 == 0xA4 && b3 == 0xB0) ) { // Gender modifiers return true; } } // Check for Variation Selector-16 (U+FE0F) if (b == 0xEF && index + 2 < strBytes.length) { uint8 b1 = uint8(strBytes[index + 1]); uint8 b2 = uint8(strBytes[index + 2]); if (b1 == 0xB8 && b2 == 0x8F) { return true; } } // Check for Combining Enclosing Keycap (U+20E3) if (b == 0xE2 && index + 2 < strBytes.length) { uint8 b1 = uint8(strBytes[index + 1]); uint8 b2 = uint8(strBytes[index + 2]); if (b1 == 0x83 && b2 == 0xA3) { return true; } } // Checks if the character at index is a Tag Indicator (used in special flag sequences) if ( b == 0xF3 && index + 2 < strBytes.length && strBytes[index + 1] == 0xA0 && strBytes[index + 2] >= 0x80 && strBytes[index + 2] <= 0x9F ) { return true; } return false; } // Checks if the character at index is a Regional Indicator Symbol (used for flag emojis) function _isRegionalIndicator(bytes memory strBytes, uint256 index) private pure returns (bool) { return ( strBytes[index] == 0xF0 && index + 3 < strBytes.length && strBytes[index + 1] == 0x9F && strBytes[index + 2] == 0x87 ); } }
// SPDX-License-Identifier: MIT pragma solidity >=0.4.22 <0.9.0; library console { address constant CONSOLE_ADDRESS = address(0x000000000000000000636F6e736F6c652e6c6f67); function _castLogPayloadViewToPure( function(bytes memory) internal view fnIn ) internal pure returns (function(bytes memory) internal pure fnOut) { assembly { fnOut := fnIn } } function _sendLogPayload(bytes memory payload) internal pure { _castLogPayloadViewToPure(_sendLogPayloadView)(payload); } function _sendLogPayloadView(bytes memory payload) private view { uint256 payloadLength = payload.length; address consoleAddress = CONSOLE_ADDRESS; /// @solidity memory-safe-assembly assembly { let payloadStart := add(payload, 32) let r := staticcall(gas(), consoleAddress, payloadStart, payloadLength, 0, 0) } } function log() internal pure { _sendLogPayload(abi.encodeWithSignature("log()")); } function logInt(int p0) internal pure { _sendLogPayload(abi.encodeWithSignature("log(int)", p0)); } function logUint(uint p0) internal pure { _sendLogPayload(abi.encodeWithSignature("log(uint)", p0)); } function logString(string memory p0) internal pure { _sendLogPayload(abi.encodeWithSignature("log(string)", p0)); } function logBool(bool p0) internal pure { _sendLogPayload(abi.encodeWithSignature("log(bool)", p0)); } function logAddress(address p0) internal pure { _sendLogPayload(abi.encodeWithSignature("log(address)", p0)); } function logBytes(bytes memory p0) internal pure { _sendLogPayload(abi.encodeWithSignature("log(bytes)", p0)); } function logBytes1(bytes1 p0) internal pure { _sendLogPayload(abi.encodeWithSignature("log(bytes1)", p0)); } function logBytes2(bytes2 p0) internal pure { _sendLogPayload(abi.encodeWithSignature("log(bytes2)", p0)); } function logBytes3(bytes3 p0) internal pure { _sendLogPayload(abi.encodeWithSignature("log(bytes3)", p0)); } function logBytes4(bytes4 p0) internal pure { _sendLogPayload(abi.encodeWithSignature("log(bytes4)", p0)); } function logBytes5(bytes5 p0) internal pure { _sendLogPayload(abi.encodeWithSignature("log(bytes5)", p0)); } function logBytes6(bytes6 p0) internal pure { _sendLogPayload(abi.encodeWithSignature("log(bytes6)", p0)); } function logBytes7(bytes7 p0) internal pure { _sendLogPayload(abi.encodeWithSignature("log(bytes7)", p0)); } function logBytes8(bytes8 p0) internal pure { _sendLogPayload(abi.encodeWithSignature("log(bytes8)", p0)); } function logBytes9(bytes9 p0) internal pure { _sendLogPayload(abi.encodeWithSignature("log(bytes9)", p0)); } function logBytes10(bytes10 p0) internal pure { _sendLogPayload(abi.encodeWithSignature("log(bytes10)", p0)); } function logBytes11(bytes11 p0) internal pure { _sendLogPayload(abi.encodeWithSignature("log(bytes11)", p0)); } function logBytes12(bytes12 p0) internal pure { _sendLogPayload(abi.encodeWithSignature("log(bytes12)", p0)); } function logBytes13(bytes13 p0) internal pure { _sendLogPayload(abi.encodeWithSignature("log(bytes13)", p0)); } function logBytes14(bytes14 p0) internal pure { _sendLogPayload(abi.encodeWithSignature("log(bytes14)", p0)); } function logBytes15(bytes15 p0) internal pure { _sendLogPayload(abi.encodeWithSignature("log(bytes15)", p0)); } function logBytes16(bytes16 p0) internal pure { _sendLogPayload(abi.encodeWithSignature("log(bytes16)", p0)); } function logBytes17(bytes17 p0) internal pure { _sendLogPayload(abi.encodeWithSignature("log(bytes17)", p0)); } function logBytes18(bytes18 p0) internal pure { _sendLogPayload(abi.encodeWithSignature("log(bytes18)", p0)); } function logBytes19(bytes19 p0) internal pure { _sendLogPayload(abi.encodeWithSignature("log(bytes19)", p0)); } function logBytes20(bytes20 p0) internal pure { _sendLogPayload(abi.encodeWithSignature("log(bytes20)", p0)); } function logBytes21(bytes21 p0) internal pure { _sendLogPayload(abi.encodeWithSignature("log(bytes21)", p0)); } function logBytes22(bytes22 p0) internal pure { _sendLogPayload(abi.encodeWithSignature("log(bytes22)", p0)); } function logBytes23(bytes23 p0) internal pure { _sendLogPayload(abi.encodeWithSignature("log(bytes23)", p0)); } function logBytes24(bytes24 p0) internal pure { _sendLogPayload(abi.encodeWithSignature("log(bytes24)", p0)); } function logBytes25(bytes25 p0) internal pure { _sendLogPayload(abi.encodeWithSignature("log(bytes25)", p0)); } function logBytes26(bytes26 p0) internal pure { _sendLogPayload(abi.encodeWithSignature("log(bytes26)", p0)); } function logBytes27(bytes27 p0) internal pure { _sendLogPayload(abi.encodeWithSignature("log(bytes27)", p0)); } function logBytes28(bytes28 p0) internal pure { _sendLogPayload(abi.encodeWithSignature("log(bytes28)", p0)); } function logBytes29(bytes29 p0) internal pure { _sendLogPayload(abi.encodeWithSignature("log(bytes29)", p0)); } function logBytes30(bytes30 p0) internal pure { _sendLogPayload(abi.encodeWithSignature("log(bytes30)", p0)); } function logBytes31(bytes31 p0) internal pure { _sendLogPayload(abi.encodeWithSignature("log(bytes31)", p0)); } function logBytes32(bytes32 p0) internal pure { _sendLogPayload(abi.encodeWithSignature("log(bytes32)", p0)); } function log(uint p0) internal pure { _sendLogPayload(abi.encodeWithSignature("log(uint)", p0)); } function log(int p0) internal pure { _sendLogPayload(abi.encodeWithSignature("log(int)", p0)); } function log(string memory p0) internal pure { _sendLogPayload(abi.encodeWithSignature("log(string)", p0)); } function log(bool p0) internal pure { _sendLogPayload(abi.encodeWithSignature("log(bool)", p0)); } function log(address p0) internal pure { _sendLogPayload(abi.encodeWithSignature("log(address)", p0)); } function log(uint p0, uint p1) internal pure { _sendLogPayload(abi.encodeWithSignature("log(uint,uint)", p0, p1)); } function log(uint p0, string memory p1) internal pure { _sendLogPayload(abi.encodeWithSignature("log(uint,string)", p0, p1)); } function log(uint p0, bool p1) internal pure { _sendLogPayload(abi.encodeWithSignature("log(uint,bool)", p0, p1)); } function log(uint p0, address p1) internal pure { _sendLogPayload(abi.encodeWithSignature("log(uint,address)", p0, p1)); } function log(string memory p0, uint p1) internal pure { _sendLogPayload(abi.encodeWithSignature("log(string,uint)", p0, p1)); } function log(string memory p0, int p1) internal pure { _sendLogPayload(abi.encodeWithSignature("log(string,int)", p0, p1)); } function log(string memory p0, string memory p1) internal pure { _sendLogPayload(abi.encodeWithSignature("log(string,string)", p0, p1)); } function log(string memory p0, bool p1) internal pure { _sendLogPayload(abi.encodeWithSignature("log(string,bool)", p0, p1)); } function log(string memory p0, address p1) internal pure { _sendLogPayload(abi.encodeWithSignature("log(string,address)", p0, p1)); } function log(bool p0, uint p1) internal pure { _sendLogPayload(abi.encodeWithSignature("log(bool,uint)", p0, p1)); } function log(bool p0, string memory p1) internal pure { _sendLogPayload(abi.encodeWithSignature("log(bool,string)", p0, p1)); } function log(bool p0, bool p1) internal pure { _sendLogPayload(abi.encodeWithSignature("log(bool,bool)", p0, p1)); } function log(bool p0, address p1) internal pure { _sendLogPayload(abi.encodeWithSignature("log(bool,address)", p0, p1)); } function log(address p0, uint p1) internal pure { _sendLogPayload(abi.encodeWithSignature("log(address,uint)", p0, p1)); } function log(address p0, string memory p1) internal pure { _sendLogPayload(abi.encodeWithSignature("log(address,string)", p0, p1)); } function log(address p0, bool p1) internal pure { _sendLogPayload(abi.encodeWithSignature("log(address,bool)", p0, p1)); } function log(address p0, address p1) internal pure { _sendLogPayload(abi.encodeWithSignature("log(address,address)", p0, p1)); } function log(uint p0, uint p1, uint p2) internal pure { _sendLogPayload(abi.encodeWithSignature("log(uint,uint,uint)", p0, p1, p2)); } function log(uint p0, uint p1, string memory p2) internal pure { _sendLogPayload(abi.encodeWithSignature("log(uint,uint,string)", p0, p1, p2)); } function log(uint p0, uint p1, bool p2) internal pure { _sendLogPayload(abi.encodeWithSignature("log(uint,uint,bool)", p0, p1, p2)); } function log(uint p0, uint p1, address p2) internal pure { _sendLogPayload(abi.encodeWithSignature("log(uint,uint,address)", p0, p1, p2)); } function log(uint p0, string memory p1, uint p2) internal pure { _sendLogPayload(abi.encodeWithSignature("log(uint,string,uint)", p0, p1, p2)); } function log(uint p0, string memory p1, string memory p2) internal pure { _sendLogPayload(abi.encodeWithSignature("log(uint,string,string)", p0, p1, p2)); } function log(uint p0, string memory p1, bool p2) internal pure { _sendLogPayload(abi.encodeWithSignature("log(uint,string,bool)", p0, p1, p2)); } function log(uint p0, string memory p1, address p2) internal pure { _sendLogPayload(abi.encodeWithSignature("log(uint,string,address)", p0, p1, p2)); } function log(uint p0, bool p1, uint p2) internal pure { _sendLogPayload(abi.encodeWithSignature("log(uint,bool,uint)", p0, p1, p2)); } function log(uint p0, bool p1, string memory p2) internal pure { _sendLogPayload(abi.encodeWithSignature("log(uint,bool,string)", p0, p1, p2)); } function log(uint p0, bool p1, bool p2) internal pure { _sendLogPayload(abi.encodeWithSignature("log(uint,bool,bool)", p0, p1, p2)); } function log(uint p0, bool p1, address p2) internal pure { _sendLogPayload(abi.encodeWithSignature("log(uint,bool,address)", p0, p1, p2)); } function log(uint p0, address p1, uint p2) internal pure { _sendLogPayload(abi.encodeWithSignature("log(uint,address,uint)", p0, p1, p2)); } function log(uint p0, address p1, string memory p2) internal pure { _sendLogPayload(abi.encodeWithSignature("log(uint,address,string)", p0, p1, p2)); } function log(uint p0, address p1, bool p2) internal pure { _sendLogPayload(abi.encodeWithSignature("log(uint,address,bool)", p0, p1, p2)); } function log(uint p0, address p1, address p2) internal pure { _sendLogPayload(abi.encodeWithSignature("log(uint,address,address)", p0, p1, p2)); } function log(string memory p0, uint p1, uint p2) internal pure { _sendLogPayload(abi.encodeWithSignature("log(string,uint,uint)", p0, p1, p2)); } function log(string memory p0, uint p1, string memory p2) internal pure { _sendLogPayload(abi.encodeWithSignature("log(string,uint,string)", p0, p1, p2)); } function log(string memory p0, uint p1, bool p2) internal pure { _sendLogPayload(abi.encodeWithSignature("log(string,uint,bool)", p0, p1, p2)); } function log(string memory p0, uint p1, address p2) internal pure { _sendLogPayload(abi.encodeWithSignature("log(string,uint,address)", p0, p1, p2)); } function log(string memory p0, string memory p1, uint p2) internal pure { _sendLogPayload(abi.encodeWithSignature("log(string,string,uint)", p0, p1, p2)); } function log(string memory p0, string memory p1, string memory p2) internal pure { _sendLogPayload(abi.encodeWithSignature("log(string,string,string)", p0, p1, p2)); } function log(string memory p0, string memory p1, bool p2) internal pure { _sendLogPayload(abi.encodeWithSignature("log(string,string,bool)", p0, p1, p2)); } function log(string memory p0, string memory p1, address p2) internal pure { _sendLogPayload(abi.encodeWithSignature("log(string,string,address)", p0, p1, p2)); } function log(string memory p0, bool p1, uint p2) internal pure { _sendLogPayload(abi.encodeWithSignature("log(string,bool,uint)", p0, p1, p2)); } function log(string memory p0, bool p1, string memory p2) internal pure { _sendLogPayload(abi.encodeWithSignature("log(string,bool,string)", p0, p1, p2)); } function log(string memory p0, bool p1, bool p2) internal pure { _sendLogPayload(abi.encodeWithSignature("log(string,bool,bool)", p0, p1, p2)); } function log(string memory p0, bool p1, address p2) internal pure { _sendLogPayload(abi.encodeWithSignature("log(string,bool,address)", p0, p1, p2)); } function log(string memory p0, address p1, uint p2) internal pure { _sendLogPayload(abi.encodeWithSignature("log(string,address,uint)", p0, p1, p2)); } function log(string memory p0, address p1, string memory p2) internal pure { _sendLogPayload(abi.encodeWithSignature("log(string,address,string)", p0, p1, p2)); } function log(string memory p0, address p1, bool p2) internal pure { _sendLogPayload(abi.encodeWithSignature("log(string,address,bool)", p0, p1, p2)); } function log(string memory p0, address p1, address p2) internal pure { _sendLogPayload(abi.encodeWithSignature("log(string,address,address)", p0, p1, p2)); } function log(bool p0, uint p1, uint p2) internal pure { _sendLogPayload(abi.encodeWithSignature("log(bool,uint,uint)", p0, p1, p2)); } function log(bool p0, uint p1, string memory p2) internal pure { _sendLogPayload(abi.encodeWithSignature("log(bool,uint,string)", p0, p1, p2)); } function log(bool p0, uint p1, bool p2) internal pure { _sendLogPayload(abi.encodeWithSignature("log(bool,uint,bool)", p0, p1, p2)); } function log(bool p0, uint p1, address p2) internal pure { _sendLogPayload(abi.encodeWithSignature("log(bool,uint,address)", p0, p1, p2)); } function log(bool p0, string memory p1, uint p2) internal pure { _sendLogPayload(abi.encodeWithSignature("log(bool,string,uint)", p0, p1, p2)); } function log(bool p0, string memory p1, string memory p2) internal pure { _sendLogPayload(abi.encodeWithSignature("log(bool,string,string)", p0, p1, p2)); } function log(bool p0, string memory p1, bool p2) internal pure { _sendLogPayload(abi.encodeWithSignature("log(bool,string,bool)", p0, p1, p2)); } function log(bool p0, string memory p1, address p2) internal pure { _sendLogPayload(abi.encodeWithSignature("log(bool,string,address)", p0, p1, p2)); } function log(bool p0, bool p1, uint p2) internal pure { _sendLogPayload(abi.encodeWithSignature("log(bool,bool,uint)", p0, p1, p2)); } function log(bool p0, bool p1, string memory p2) internal pure { _sendLogPayload(abi.encodeWithSignature("log(bool,bool,string)", p0, p1, p2)); } function log(bool p0, bool p1, bool p2) internal pure { _sendLogPayload(abi.encodeWithSignature("log(bool,bool,bool)", p0, p1, p2)); } function log(bool p0, bool p1, address p2) internal pure { _sendLogPayload(abi.encodeWithSignature("log(bool,bool,address)", p0, p1, p2)); } function log(bool p0, address p1, uint p2) internal pure { _sendLogPayload(abi.encodeWithSignature("log(bool,address,uint)", p0, p1, p2)); } function log(bool p0, address p1, string memory p2) internal pure { _sendLogPayload(abi.encodeWithSignature("log(bool,address,string)", p0, p1, p2)); } function log(bool p0, address p1, bool p2) internal pure { _sendLogPayload(abi.encodeWithSignature("log(bool,address,bool)", p0, p1, p2)); } function log(bool p0, address p1, address p2) internal pure { _sendLogPayload(abi.encodeWithSignature("log(bool,address,address)", p0, p1, p2)); } function log(address p0, uint p1, uint p2) internal pure { _sendLogPayload(abi.encodeWithSignature("log(address,uint,uint)", p0, p1, p2)); } function log(address p0, uint p1, string memory p2) internal pure { _sendLogPayload(abi.encodeWithSignature("log(address,uint,string)", p0, p1, p2)); } function log(address p0, uint p1, bool p2) internal pure { _sendLogPayload(abi.encodeWithSignature("log(address,uint,bool)", p0, p1, p2)); } function log(address p0, uint p1, address p2) internal pure { _sendLogPayload(abi.encodeWithSignature("log(address,uint,address)", p0, p1, p2)); } function log(address p0, string memory p1, uint p2) internal pure { _sendLogPayload(abi.encodeWithSignature("log(address,string,uint)", p0, p1, p2)); } function log(address p0, string memory p1, string memory p2) internal pure { _sendLogPayload(abi.encodeWithSignature("log(address,string,string)", p0, p1, p2)); } function log(address p0, string memory p1, bool p2) internal pure { _sendLogPayload(abi.encodeWithSignature("log(address,string,bool)", p0, p1, p2)); } function log(address p0, string memory p1, address p2) internal pure { _sendLogPayload(abi.encodeWithSignature("log(address,string,address)", p0, p1, p2)); } function log(address p0, bool p1, uint p2) internal pure { _sendLogPayload(abi.encodeWithSignature("log(address,bool,uint)", p0, p1, p2)); } function log(address p0, bool p1, string memory p2) internal pure { _sendLogPayload(abi.encodeWithSignature("log(address,bool,string)", p0, p1, p2)); } function log(address p0, bool p1, bool p2) internal pure { _sendLogPayload(abi.encodeWithSignature("log(address,bool,bool)", p0, p1, p2)); } function log(address p0, bool p1, address p2) internal pure { _sendLogPayload(abi.encodeWithSignature("log(address,bool,address)", p0, p1, p2)); } function log(address p0, address p1, uint p2) internal pure { _sendLogPayload(abi.encodeWithSignature("log(address,address,uint)", p0, p1, p2)); } function log(address p0, address p1, string memory p2) internal pure { _sendLogPayload(abi.encodeWithSignature("log(address,address,string)", p0, p1, p2)); } function log(address p0, address p1, bool p2) internal pure { _sendLogPayload(abi.encodeWithSignature("log(address,address,bool)", p0, p1, p2)); } function log(address p0, address p1, address p2) internal pure { _sendLogPayload(abi.encodeWithSignature("log(address,address,address)", p0, p1, p2)); } function log(uint p0, uint p1, uint p2, uint p3) internal pure { _sendLogPayload(abi.encodeWithSignature("log(uint,uint,uint,uint)", p0, p1, p2, p3)); } function log(uint p0, uint p1, uint p2, string memory p3) internal pure { _sendLogPayload(abi.encodeWithSignature("log(uint,uint,uint,string)", p0, p1, p2, p3)); } function log(uint p0, uint p1, uint p2, bool p3) internal pure { _sendLogPayload(abi.encodeWithSignature("log(uint,uint,uint,bool)", p0, p1, p2, p3)); } function log(uint p0, uint p1, uint p2, address p3) internal pure { _sendLogPayload(abi.encodeWithSignature("log(uint,uint,uint,address)", p0, p1, p2, p3)); } function log(uint p0, uint p1, string memory p2, uint p3) internal pure { _sendLogPayload(abi.encodeWithSignature("log(uint,uint,string,uint)", p0, p1, p2, p3)); } function log(uint p0, uint p1, string memory p2, string memory p3) internal pure { _sendLogPayload(abi.encodeWithSignature("log(uint,uint,string,string)", p0, p1, p2, p3)); } function log(uint p0, uint p1, string memory p2, bool p3) internal pure { _sendLogPayload(abi.encodeWithSignature("log(uint,uint,string,bool)", p0, p1, p2, p3)); } function log(uint p0, uint p1, string memory p2, address p3) internal pure { _sendLogPayload(abi.encodeWithSignature("log(uint,uint,string,address)", p0, p1, p2, p3)); } function log(uint p0, uint p1, bool p2, uint p3) internal pure { _sendLogPayload(abi.encodeWithSignature("log(uint,uint,bool,uint)", p0, p1, p2, p3)); } function log(uint p0, uint p1, bool p2, string memory p3) internal pure { _sendLogPayload(abi.encodeWithSignature("log(uint,uint,bool,string)", p0, p1, p2, p3)); } function log(uint p0, uint p1, bool p2, bool p3) internal pure { _sendLogPayload(abi.encodeWithSignature("log(uint,uint,bool,bool)", p0, p1, p2, p3)); } function log(uint p0, uint p1, bool p2, address p3) internal pure { _sendLogPayload(abi.encodeWithSignature("log(uint,uint,bool,address)", p0, p1, p2, p3)); } function log(uint p0, uint p1, address p2, uint p3) internal pure { _sendLogPayload(abi.encodeWithSignature("log(uint,uint,address,uint)", p0, p1, p2, p3)); } function log(uint p0, uint p1, address p2, string memory p3) internal pure { _sendLogPayload(abi.encodeWithSignature("log(uint,uint,address,string)", p0, p1, p2, p3)); } function log(uint p0, uint p1, address p2, bool p3) internal pure { _sendLogPayload(abi.encodeWithSignature("log(uint,uint,address,bool)", p0, p1, p2, p3)); } function log(uint p0, uint p1, address p2, address p3) internal pure { _sendLogPayload(abi.encodeWithSignature("log(uint,uint,address,address)", p0, p1, p2, p3)); } function log(uint p0, string memory p1, uint p2, uint p3) internal pure { _sendLogPayload(abi.encodeWithSignature("log(uint,string,uint,uint)", p0, p1, p2, p3)); } function log(uint p0, string memory p1, uint p2, string memory p3) internal pure { _sendLogPayload(abi.encodeWithSignature("log(uint,string,uint,string)", p0, p1, p2, p3)); } function log(uint p0, string memory p1, uint p2, bool p3) internal pure { _sendLogPayload(abi.encodeWithSignature("log(uint,string,uint,bool)", p0, p1, p2, p3)); } function log(uint p0, string memory p1, uint p2, address p3) internal pure { _sendLogPayload(abi.encodeWithSignature("log(uint,string,uint,address)", p0, p1, p2, p3)); } function log(uint p0, string memory p1, string memory p2, uint p3) internal pure { _sendLogPayload(abi.encodeWithSignature("log(uint,string,string,uint)", p0, p1, p2, p3)); } function log(uint p0, string memory p1, string memory p2, string memory p3) internal pure { _sendLogPayload(abi.encodeWithSignature("log(uint,string,string,string)", p0, p1, p2, p3)); } function log(uint p0, string memory p1, string memory p2, bool p3) internal pure { _sendLogPayload(abi.encodeWithSignature("log(uint,string,string,bool)", p0, p1, p2, p3)); } function log(uint p0, string memory p1, string memory p2, address p3) internal pure { _sendLogPayload(abi.encodeWithSignature("log(uint,string,string,address)", p0, p1, p2, p3)); } function log(uint p0, string memory p1, bool p2, uint p3) internal pure { _sendLogPayload(abi.encodeWithSignature("log(uint,string,bool,uint)", p0, p1, p2, p3)); } function log(uint p0, string memory p1, bool p2, string memory p3) internal pure { _sendLogPayload(abi.encodeWithSignature("log(uint,string,bool,string)", p0, p1, p2, p3)); } function log(uint p0, string memory p1, bool p2, bool p3) internal pure { _sendLogPayload(abi.encodeWithSignature("log(uint,string,bool,bool)", p0, p1, p2, p3)); } function log(uint p0, string memory p1, bool p2, address p3) internal pure { _sendLogPayload(abi.encodeWithSignature("log(uint,string,bool,address)", p0, p1, p2, p3)); } function log(uint p0, string memory p1, address p2, uint p3) internal pure { _sendLogPayload(abi.encodeWithSignature("log(uint,string,address,uint)", p0, p1, p2, p3)); } function log(uint p0, string memory p1, address p2, string memory p3) internal pure { _sendLogPayload(abi.encodeWithSignature("log(uint,string,address,string)", p0, p1, p2, p3)); } function log(uint p0, string memory p1, address p2, bool p3) internal pure { _sendLogPayload(abi.encodeWithSignature("log(uint,string,address,bool)", p0, p1, p2, p3)); } function log(uint p0, string memory p1, address p2, address p3) internal pure { _sendLogPayload(abi.encodeWithSignature("log(uint,string,address,address)", p0, p1, p2, p3)); } function log(uint p0, bool p1, uint p2, uint p3) internal pure { _sendLogPayload(abi.encodeWithSignature("log(uint,bool,uint,uint)", p0, p1, p2, p3)); } function log(uint p0, bool p1, uint p2, string memory p3) internal pure { _sendLogPayload(abi.encodeWithSignature("log(uint,bool,uint,string)", p0, p1, p2, p3)); } function log(uint p0, bool p1, uint p2, bool p3) internal pure { _sendLogPayload(abi.encodeWithSignature("log(uint,bool,uint,bool)", p0, p1, p2, p3)); } function log(uint p0, bool p1, uint p2, address p3) internal pure { _sendLogPayload(abi.encodeWithSignature("log(uint,bool,uint,address)", p0, p1, p2, p3)); } function log(uint p0, bool p1, string memory p2, uint p3) internal pure { _sendLogPayload(abi.encodeWithSignature("log(uint,bool,string,uint)", p0, p1, p2, p3)); } function log(uint p0, bool p1, string memory p2, string memory p3) internal pure { _sendLogPayload(abi.encodeWithSignature("log(uint,bool,string,string)", p0, p1, p2, p3)); } function log(uint p0, bool p1, string memory p2, bool p3) internal pure { _sendLogPayload(abi.encodeWithSignature("log(uint,bool,string,bool)", p0, p1, p2, p3)); } function log(uint p0, bool p1, string memory p2, address p3) internal pure { _sendLogPayload(abi.encodeWithSignature("log(uint,bool,string,address)", p0, p1, p2, p3)); } function log(uint p0, bool p1, bool p2, uint p3) internal pure { _sendLogPayload(abi.encodeWithSignature("log(uint,bool,bool,uint)", p0, p1, p2, p3)); } function log(uint p0, bool p1, bool p2, string memory p3) internal pure { _sendLogPayload(abi.encodeWithSignature("log(uint,bool,bool,string)", p0, p1, p2, p3)); } function log(uint p0, bool p1, bool p2, bool p3) internal pure { _sendLogPayload(abi.encodeWithSignature("log(uint,bool,bool,bool)", p0, p1, p2, p3)); } function log(uint p0, bool p1, bool p2, address p3) internal pure { _sendLogPayload(abi.encodeWithSignature("log(uint,bool,bool,address)", p0, p1, p2, p3)); } function log(uint p0, bool p1, address p2, uint p3) internal pure { _sendLogPayload(abi.encodeWithSignature("log(uint,bool,address,uint)", p0, p1, p2, p3)); } function log(uint p0, bool p1, address p2, string memory p3) internal pure { _sendLogPayload(abi.encodeWithSignature("log(uint,bool,address,string)", p0, p1, p2, p3)); } function log(uint p0, bool p1, address p2, bool p3) internal pure { _sendLogPayload(abi.encodeWithSignature("log(uint,bool,address,bool)", p0, p1, p2, p3)); } function log(uint p0, bool p1, address p2, address p3) internal pure { _sendLogPayload(abi.encodeWithSignature("log(uint,bool,address,address)", p0, p1, p2, p3)); } function log(uint p0, address p1, uint p2, uint p3) internal pure { _sendLogPayload(abi.encodeWithSignature("log(uint,address,uint,uint)", p0, p1, p2, p3)); } function log(uint p0, address p1, uint p2, string memory p3) internal pure { _sendLogPayload(abi.encodeWithSignature("log(uint,address,uint,string)", p0, p1, p2, p3)); } function log(uint p0, address p1, uint p2, bool p3) internal pure { _sendLogPayload(abi.encodeWithSignature("log(uint,address,uint,bool)", p0, p1, p2, p3)); } function log(uint p0, address p1, uint p2, address p3) internal pure { _sendLogPayload(abi.encodeWithSignature("log(uint,address,uint,address)", p0, p1, p2, p3)); } function log(uint p0, address p1, string memory p2, uint p3) internal pure { _sendLogPayload(abi.encodeWithSignature("log(uint,address,string,uint)", p0, p1, p2, p3)); } function log(uint p0, address p1, string memory p2, string memory p3) internal pure { _sendLogPayload(abi.encodeWithSignature("log(uint,address,string,string)", p0, p1, p2, p3)); } function log(uint p0, address p1, string memory p2, bool p3) internal pure { _sendLogPayload(abi.encodeWithSignature("log(uint,address,string,bool)", p0, p1, p2, p3)); } function log(uint p0, address p1, string memory p2, address p3) internal pure { _sendLogPayload(abi.encodeWithSignature("log(uint,address,string,address)", p0, p1, p2, p3)); } function log(uint p0, address p1, bool p2, uint p3) internal pure { _sendLogPayload(abi.encodeWithSignature("log(uint,address,bool,uint)", p0, p1, p2, p3)); } function log(uint p0, address p1, bool p2, string memory p3) internal pure { _sendLogPayload(abi.encodeWithSignature("log(uint,address,bool,string)", p0, p1, p2, p3)); } function log(uint p0, address p1, bool p2, bool p3) internal pure { _sendLogPayload(abi.encodeWithSignature("log(uint,address,bool,bool)", p0, p1, p2, p3)); } function log(uint p0, address p1, bool p2, address p3) internal pure { _sendLogPayload(abi.encodeWithSignature("log(uint,address,bool,address)", p0, p1, p2, p3)); } function log(uint p0, address p1, address p2, uint p3) internal pure { _sendLogPayload(abi.encodeWithSignature("log(uint,address,address,uint)", p0, p1, p2, p3)); } function log(uint p0, address p1, address p2, string memory p3) internal pure { _sendLogPayload(abi.encodeWithSignature("log(uint,address,address,string)", p0, p1, p2, p3)); } function log(uint p0, address p1, address p2, bool p3) internal pure { _sendLogPayload(abi.encodeWithSignature("log(uint,address,address,bool)", p0, p1, p2, p3)); } function log(uint p0, address p1, address p2, address p3) internal pure { _sendLogPayload(abi.encodeWithSignature("log(uint,address,address,address)", p0, p1, p2, p3)); } function log(string memory p0, uint p1, uint p2, uint p3) internal pure { _sendLogPayload(abi.encodeWithSignature("log(string,uint,uint,uint)", p0, p1, p2, p3)); } function log(string memory p0, uint p1, uint p2, string memory p3) internal pure { _sendLogPayload(abi.encodeWithSignature("log(string,uint,uint,string)", p0, p1, p2, p3)); } function log(string memory p0, uint p1, uint p2, bool p3) internal pure { _sendLogPayload(abi.encodeWithSignature("log(string,uint,uint,bool)", p0, p1, p2, p3)); } function log(string memory p0, uint p1, uint p2, address p3) internal pure { _sendLogPayload(abi.encodeWithSignature("log(string,uint,uint,address)", p0, p1, p2, p3)); } function log(string memory p0, uint p1, string memory p2, uint p3) internal pure { _sendLogPayload(abi.encodeWithSignature("log(string,uint,string,uint)", p0, p1, p2, p3)); } function log(string memory p0, uint p1, string memory p2, string memory p3) internal pure { _sendLogPayload(abi.encodeWithSignature("log(string,uint,string,string)", p0, p1, p2, p3)); } function log(string memory p0, uint p1, string memory p2, bool p3) internal pure { _sendLogPayload(abi.encodeWithSignature("log(string,uint,string,bool)", p0, p1, p2, p3)); } function log(string memory p0, uint p1, string memory p2, address p3) internal pure { _sendLogPayload(abi.encodeWithSignature("log(string,uint,string,address)", p0, p1, p2, p3)); } function log(string memory p0, uint p1, bool p2, uint p3) internal pure { _sendLogPayload(abi.encodeWithSignature("log(string,uint,bool,uint)", p0, p1, p2, p3)); } function log(string memory p0, uint p1, bool p2, string memory p3) internal pure { _sendLogPayload(abi.encodeWithSignature("log(string,uint,bool,string)", p0, p1, p2, p3)); } function log(string memory p0, uint p1, bool p2, bool p3) internal pure { _sendLogPayload(abi.encodeWithSignature("log(string,uint,bool,bool)", p0, p1, p2, p3)); } function log(string memory p0, uint p1, bool p2, address p3) internal pure { _sendLogPayload(abi.encodeWithSignature("log(string,uint,bool,address)", p0, p1, p2, p3)); } function log(string memory p0, uint p1, address p2, uint p3) internal pure { _sendLogPayload(abi.encodeWithSignature("log(string,uint,address,uint)", p0, p1, p2, p3)); } function log(string memory p0, uint p1, address p2, string memory p3) internal pure { _sendLogPayload(abi.encodeWithSignature("log(string,uint,address,string)", p0, p1, p2, p3)); } function log(string memory p0, uint p1, address p2, bool p3) internal pure { _sendLogPayload(abi.encodeWithSignature("log(string,uint,address,bool)", p0, p1, p2, p3)); } function log(string memory p0, uint p1, address p2, address p3) internal pure { _sendLogPayload(abi.encodeWithSignature("log(string,uint,address,address)", p0, p1, p2, p3)); } function log(string memory p0, string memory p1, uint p2, uint p3) internal pure { _sendLogPayload(abi.encodeWithSignature("log(string,string,uint,uint)", p0, p1, p2, p3)); } function log(string memory p0, string memory p1, uint p2, string memory p3) internal pure { _sendLogPayload(abi.encodeWithSignature("log(string,string,uint,string)", p0, p1, p2, p3)); } function log(string memory p0, string memory p1, uint p2, bool p3) internal pure { _sendLogPayload(abi.encodeWithSignature("log(string,string,uint,bool)", p0, p1, p2, p3)); } function log(string memory p0, string memory p1, uint p2, address p3) internal pure { _sendLogPayload(abi.encodeWithSignature("log(string,string,uint,address)", p0, p1, p2, p3)); } function log(string memory p0, string memory p1, string memory p2, uint p3) internal pure { _sendLogPayload(abi.encodeWithSignature("log(string,string,string,uint)", p0, p1, p2, p3)); } function log(string memory p0, string memory p1, string memory p2, string memory p3) internal pure { _sendLogPayload(abi.encodeWithSignature("log(string,string,string,string)", p0, p1, p2, p3)); } function log(string memory p0, string memory p1, string memory p2, bool p3) internal pure { _sendLogPayload(abi.encodeWithSignature("log(string,string,string,bool)", p0, p1, p2, p3)); } function log(string memory p0, string memory p1, string memory p2, address p3) internal pure { _sendLogPayload(abi.encodeWithSignature("log(string,string,string,address)", p0, p1, p2, p3)); } function log(string memory p0, string memory p1, bool p2, uint p3) internal pure { _sendLogPayload(abi.encodeWithSignature("log(string,string,bool,uint)", p0, p1, p2, p3)); } function log(string memory p0, string memory p1, bool p2, string memory p3) internal pure { _sendLogPayload(abi.encodeWithSignature("log(string,string,bool,string)", p0, p1, p2, p3)); } function log(string memory p0, string memory p1, bool p2, bool p3) internal pure { _sendLogPayload(abi.encodeWithSignature("log(string,string,bool,bool)", p0, p1, p2, p3)); } function log(string memory p0, string memory p1, bool p2, address p3) internal pure { _sendLogPayload(abi.encodeWithSignature("log(string,string,bool,address)", p0, p1, p2, p3)); } function log(string memory p0, string memory p1, address p2, uint p3) internal pure { _sendLogPayload(abi.encodeWithSignature("log(string,string,address,uint)", p0, p1, p2, p3)); } function log(string memory p0, string memory p1, address p2, string memory p3) internal pure { _sendLogPayload(abi.encodeWithSignature("log(string,string,address,string)", p0, p1, p2, p3)); } function log(string memory p0, string memory p1, address p2, bool p3) internal pure { _sendLogPayload(abi.encodeWithSignature("log(string,string,address,bool)", p0, p1, p2, p3)); } function log(string memory p0, string memory p1, address p2, address p3) internal pure { _sendLogPayload(abi.encodeWithSignature("log(string,string,address,address)", p0, p1, p2, p3)); } function log(string memory p0, bool p1, uint p2, uint p3) internal pure { _sendLogPayload(abi.encodeWithSignature("log(string,bool,uint,uint)", p0, p1, p2, p3)); } function log(string memory p0, bool p1, uint p2, string memory p3) internal pure { _sendLogPayload(abi.encodeWithSignature("log(string,bool,uint,string)", p0, p1, p2, p3)); } function log(string memory p0, bool p1, uint p2, bool p3) internal pure { _sendLogPayload(abi.encodeWithSignature("log(string,bool,uint,bool)", p0, p1, p2, p3)); } function log(string memory p0, bool p1, uint p2, address p3) internal pure { _sendLogPayload(abi.encodeWithSignature("log(string,bool,uint,address)", p0, p1, p2, p3)); } function log(string memory p0, bool p1, string memory p2, uint p3) internal pure { _sendLogPayload(abi.encodeWithSignature("log(string,bool,string,uint)", p0, p1, p2, p3)); } function log(string memory p0, bool p1, string memory p2, string memory p3) internal pure { _sendLogPayload(abi.encodeWithSignature("log(string,bool,string,string)", p0, p1, p2, p3)); } function log(string memory p0, bool p1, string memory p2, bool p3) internal pure { _sendLogPayload(abi.encodeWithSignature("log(string,bool,string,bool)", p0, p1, p2, p3)); } function log(string memory p0, bool p1, string memory p2, address p3) internal pure { _sendLogPayload(abi.encodeWithSignature("log(string,bool,string,address)", p0, p1, p2, p3)); } function log(string memory p0, bool p1, bool p2, uint p3) internal pure { _sendLogPayload(abi.encodeWithSignature("log(string,bool,bool,uint)", p0, p1, p2, p3)); } function log(string memory p0, bool p1, bool p2, string memory p3) internal pure { _sendLogPayload(abi.encodeWithSignature("log(string,bool,bool,string)", p0, p1, p2, p3)); } function log(string memory p0, bool p1, bool p2, bool p3) internal pure { _sendLogPayload(abi.encodeWithSignature("log(string,bool,bool,bool)", p0, p1, p2, p3)); } function log(string memory p0, bool p1, bool p2, address p3) internal pure { _sendLogPayload(abi.encodeWithSignature("log(string,bool,bool,address)", p0, p1, p2, p3)); } function log(string memory p0, bool p1, address p2, uint p3) internal pure { _sendLogPayload(abi.encodeWithSignature("log(string,bool,address,uint)", p0, p1, p2, p3)); } function log(string memory p0, bool p1, address p2, string memory p3) internal pure { _sendLogPayload(abi.encodeWithSignature("log(string,bool,address,string)", p0, p1, p2, p3)); } function log(string memory p0, bool p1, address p2, bool p3) internal pure { _sendLogPayload(abi.encodeWithSignature("log(string,bool,address,bool)", p0, p1, p2, p3)); } function log(string memory p0, bool p1, address p2, address p3) internal pure { _sendLogPayload(abi.encodeWithSignature("log(string,bool,address,address)", p0, p1, p2, p3)); } function log(string memory p0, address p1, uint p2, uint p3) internal pure { _sendLogPayload(abi.encodeWithSignature("log(string,address,uint,uint)", p0, p1, p2, p3)); } function log(string memory p0, address p1, uint p2, string memory p3) internal pure { _sendLogPayload(abi.encodeWithSignature("log(string,address,uint,string)", p0, p1, p2, p3)); } function log(string memory p0, address p1, uint p2, bool p3) internal pure { _sendLogPayload(abi.encodeWithSignature("log(string,address,uint,bool)", p0, p1, p2, p3)); } function log(string memory p0, address p1, uint p2, address p3) internal pure { _sendLogPayload(abi.encodeWithSignature("log(string,address,uint,address)", p0, p1, p2, p3)); } function log(string memory p0, address p1, string memory p2, uint p3) internal pure { _sendLogPayload(abi.encodeWithSignature("log(string,address,string,uint)", p0, p1, p2, p3)); } function log(string memory p0, address p1, string memory p2, string memory p3) internal pure { _sendLogPayload(abi.encodeWithSignature("log(string,address,string,string)", p0, p1, p2, p3)); } function log(string memory p0, address p1, string memory p2, bool p3) internal pure { _sendLogPayload(abi.encodeWithSignature("log(string,address,string,bool)", p0, p1, p2, p3)); } function log(string memory p0, address p1, string memory p2, address p3) internal pure { _sendLogPayload(abi.encodeWithSignature("log(string,address,string,address)", p0, p1, p2, p3)); } function log(string memory p0, address p1, bool p2, uint p3) internal pure { _sendLogPayload(abi.encodeWithSignature("log(string,address,bool,uint)", p0, p1, p2, p3)); } function log(string memory p0, address p1, bool p2, string memory p3) internal pure { _sendLogPayload(abi.encodeWithSignature("log(string,address,bool,string)", p0, p1, p2, p3)); } function log(string memory p0, address p1, bool p2, bool p3) internal pure { _sendLogPayload(abi.encodeWithSignature("log(string,address,bool,bool)", p0, p1, p2, p3)); } function log(string memory p0, address p1, bool p2, address p3) internal pure { _sendLogPayload(abi.encodeWithSignature("log(string,address,bool,address)", p0, p1, p2, p3)); } function log(string memory p0, address p1, address p2, uint p3) internal pure { _sendLogPayload(abi.encodeWithSignature("log(string,address,address,uint)", p0, p1, p2, p3)); } function log(string memory p0, address p1, address p2, string memory p3) internal pure { _sendLogPayload(abi.encodeWithSignature("log(string,address,address,string)", p0, p1, p2, p3)); } function log(string memory p0, address p1, address p2, bool p3) internal pure { _sendLogPayload(abi.encodeWithSignature("log(string,address,address,bool)", p0, p1, p2, p3)); } function log(string memory p0, address p1, address p2, address p3) internal pure { _sendLogPayload(abi.encodeWithSignature("log(string,address,address,address)", p0, p1, p2, p3)); } function log(bool p0, uint p1, uint p2, uint p3) internal pure { _sendLogPayload(abi.encodeWithSignature("log(bool,uint,uint,uint)", p0, p1, p2, p3)); } function log(bool p0, uint p1, uint p2, string memory p3) internal pure { _sendLogPayload(abi.encodeWithSignature("log(bool,uint,uint,string)", p0, p1, p2, p3)); } function log(bool p0, uint p1, uint p2, bool p3) internal pure { _sendLogPayload(abi.encodeWithSignature("log(bool,uint,uint,bool)", p0, p1, p2, p3)); } function log(bool p0, uint p1, uint p2, address p3) internal pure { _sendLogPayload(abi.encodeWithSignature("log(bool,uint,uint,address)", p0, p1, p2, p3)); } function log(bool p0, uint p1, string memory p2, uint p3) internal pure { _sendLogPayload(abi.encodeWithSignature("log(bool,uint,string,uint)", p0, p1, p2, p3)); } function log(bool p0, uint p1, string memory p2, string memory p3) internal pure { _sendLogPayload(abi.encodeWithSignature("log(bool,uint,string,string)", p0, p1, p2, p3)); } function log(bool p0, uint p1, string memory p2, bool p3) internal pure { _sendLogPayload(abi.encodeWithSignature("log(bool,uint,string,bool)", p0, p1, p2, p3)); } function log(bool p0, uint p1, string memory p2, address p3) internal pure { _sendLogPayload(abi.encodeWithSignature("log(bool,uint,string,address)", p0, p1, p2, p3)); } function log(bool p0, uint p1, bool p2, uint p3) internal pure { _sendLogPayload(abi.encodeWithSignature("log(bool,uint,bool,uint)", p0, p1, p2, p3)); } function log(bool p0, uint p1, bool p2, string memory p3) internal pure { _sendLogPayload(abi.encodeWithSignature("log(bool,uint,bool,string)", p0, p1, p2, p3)); } function log(bool p0, uint p1, bool p2, bool p3) internal pure { _sendLogPayload(abi.encodeWithSignature("log(bool,uint,bool,bool)", p0, p1, p2, p3)); } function log(bool p0, uint p1, bool p2, address p3) internal pure { _sendLogPayload(abi.encodeWithSignature("log(bool,uint,bool,address)", p0, p1, p2, p3)); } function log(bool p0, uint p1, address p2, uint p3) internal pure { _sendLogPayload(abi.encodeWithSignature("log(bool,uint,address,uint)", p0, p1, p2, p3)); } function log(bool p0, uint p1, address p2, string memory p3) internal pure { _sendLogPayload(abi.encodeWithSignature("log(bool,uint,address,string)", p0, p1, p2, p3)); } function log(bool p0, uint p1, address p2, bool p3) internal pure { _sendLogPayload(abi.encodeWithSignature("log(bool,uint,address,bool)", p0, p1, p2, p3)); } function log(bool p0, uint p1, address p2, address p3) internal pure { _sendLogPayload(abi.encodeWithSignature("log(bool,uint,address,address)", p0, p1, p2, p3)); } function log(bool p0, string memory p1, uint p2, uint p3) internal pure { _sendLogPayload(abi.encodeWithSignature("log(bool,string,uint,uint)", p0, p1, p2, p3)); } function log(bool p0, string memory p1, uint p2, string memory p3) internal pure { _sendLogPayload(abi.encodeWithSignature("log(bool,string,uint,string)", p0, p1, p2, p3)); } function log(bool p0, string memory p1, uint p2, bool p3) internal pure { _sendLogPayload(abi.encodeWithSignature("log(bool,string,uint,bool)", p0, p1, p2, p3)); } function log(bool p0, string memory p1, uint p2, address p3) internal pure { _sendLogPayload(abi.encodeWithSignature("log(bool,string,uint,address)", p0, p1, p2, p3)); } function log(bool p0, string memory p1, string memory p2, uint p3) internal pure { _sendLogPayload(abi.encodeWithSignature("log(bool,string,string,uint)", p0, p1, p2, p3)); } function log(bool p0, string memory p1, string memory p2, string memory p3) internal pure { _sendLogPayload(abi.encodeWithSignature("log(bool,string,string,string)", p0, p1, p2, p3)); } function log(bool p0, string memory p1, string memory p2, bool p3) internal pure { _sendLogPayload(abi.encodeWithSignature("log(bool,string,string,bool)", p0, p1, p2, p3)); } function log(bool p0, string memory p1, string memory p2, address p3) internal pure { _sendLogPayload(abi.encodeWithSignature("log(bool,string,string,address)", p0, p1, p2, p3)); } function log(bool p0, string memory p1, bool p2, uint p3) internal pure { _sendLogPayload(abi.encodeWithSignature("log(bool,string,bool,uint)", p0, p1, p2, p3)); } function log(bool p0, string memory p1, bool p2, string memory p3) internal pure { _sendLogPayload(abi.encodeWithSignature("log(bool,string,bool,string)", p0, p1, p2, p3)); } function log(bool p0, string memory p1, bool p2, bool p3) internal pure { _sendLogPayload(abi.encodeWithSignature("log(bool,string,bool,bool)", p0, p1, p2, p3)); } function log(bool p0, string memory p1, bool p2, address p3) internal pure { _sendLogPayload(abi.encodeWithSignature("log(bool,string,bool,address)", p0, p1, p2, p3)); } function log(bool p0, string memory p1, address p2, uint p3) internal pure { _sendLogPayload(abi.encodeWithSignature("log(bool,string,address,uint)", p0, p1, p2, p3)); } function log(bool p0, string memory p1, address p2, string memory p3) internal pure { _sendLogPayload(abi.encodeWithSignature("log(bool,string,address,string)", p0, p1, p2, p3)); } function log(bool p0, string memory p1, address p2, bool p3) internal pure { _sendLogPayload(abi.encodeWithSignature("log(bool,string,address,bool)", p0, p1, p2, p3)); } function log(bool p0, string memory p1, address p2, address p3) internal pure { _sendLogPayload(abi.encodeWithSignature("log(bool,string,address,address)", p0, p1, p2, p3)); } function log(bool p0, bool p1, uint p2, uint p3) internal pure { _sendLogPayload(abi.encodeWithSignature("log(bool,bool,uint,uint)", p0, p1, p2, p3)); } function log(bool p0, bool p1, uint p2, string memory p3) internal pure { _sendLogPayload(abi.encodeWithSignature("log(bool,bool,uint,string)", p0, p1, p2, p3)); } function log(bool p0, bool p1, uint p2, bool p3) internal pure { _sendLogPayload(abi.encodeWithSignature("log(bool,bool,uint,bool)", p0, p1, p2, p3)); } function log(bool p0, bool p1, uint p2, address p3) internal pure { _sendLogPayload(abi.encodeWithSignature("log(bool,bool,uint,address)", p0, p1, p2, p3)); } function log(bool p0, bool p1, string memory p2, uint p3) internal pure { _sendLogPayload(abi.encodeWithSignature("log(bool,bool,string,uint)", p0, p1, p2, p3)); } function log(bool p0, bool p1, string memory p2, string memory p3) internal pure { _sendLogPayload(abi.encodeWithSignature("log(bool,bool,string,string)", p0, p1, p2, p3)); } function log(bool p0, bool p1, string memory p2, bool p3) internal pure { _sendLogPayload(abi.encodeWithSignature("log(bool,bool,string,bool)", p0, p1, p2, p3)); } function log(bool p0, bool p1, string memory p2, address p3) internal pure { _sendLogPayload(abi.encodeWithSignature("log(bool,bool,string,address)", p0, p1, p2, p3)); } function log(bool p0, bool p1, bool p2, uint p3) internal pure { _sendLogPayload(abi.encodeWithSignature("log(bool,bool,bool,uint)", p0, p1, p2, p3)); } function log(bool p0, bool p1, bool p2, string memory p3) internal pure { _sendLogPayload(abi.encodeWithSignature("log(bool,bool,bool,string)", p0, p1, p2, p3)); } function log(bool p0, bool p1, bool p2, bool p3) internal pure { _sendLogPayload(abi.encodeWithSignature("log(bool,bool,bool,bool)", p0, p1, p2, p3)); } function log(bool p0, bool p1, bool p2, address p3) internal pure { _sendLogPayload(abi.encodeWithSignature("log(bool,bool,bool,address)", p0, p1, p2, p3)); } function log(bool p0, bool p1, address p2, uint p3) internal pure { _sendLogPayload(abi.encodeWithSignature("log(bool,bool,address,uint)", p0, p1, p2, p3)); } function log(bool p0, bool p1, address p2, string memory p3) internal pure { _sendLogPayload(abi.encodeWithSignature("log(bool,bool,address,string)", p0, p1, p2, p3)); } function log(bool p0, bool p1, address p2, bool p3) internal pure { _sendLogPayload(abi.encodeWithSignature("log(bool,bool,address,bool)", p0, p1, p2, p3)); } function log(bool p0, bool p1, address p2, address p3) internal pure { _sendLogPayload(abi.encodeWithSignature("log(bool,bool,address,address)", p0, p1, p2, p3)); } function log(bool p0, address p1, uint p2, uint p3) internal pure { _sendLogPayload(abi.encodeWithSignature("log(bool,address,uint,uint)", p0, p1, p2, p3)); } function log(bool p0, address p1, uint p2, string memory p3) internal pure { _sendLogPayload(abi.encodeWithSignature("log(bool,address,uint,string)", p0, p1, p2, p3)); } function log(bool p0, address p1, uint p2, bool p3) internal pure { _sendLogPayload(abi.encodeWithSignature("log(bool,address,uint,bool)", p0, p1, p2, p3)); } function log(bool p0, address p1, uint p2, address p3) internal pure { _sendLogPayload(abi.encodeWithSignature("log(bool,address,uint,address)", p0, p1, p2, p3)); } function log(bool p0, address p1, string memory p2, uint p3) internal pure { _sendLogPayload(abi.encodeWithSignature("log(bool,address,string,uint)", p0, p1, p2, p3)); } function log(bool p0, address p1, string memory p2, string memory p3) internal pure { _sendLogPayload(abi.encodeWithSignature("log(bool,address,string,string)", p0, p1, p2, p3)); } function log(bool p0, address p1, string memory p2, bool p3) internal pure { _sendLogPayload(abi.encodeWithSignature("log(bool,address,string,bool)", p0, p1, p2, p3)); } function log(bool p0, address p1, string memory p2, address p3) internal pure { _sendLogPayload(abi.encodeWithSignature("log(bool,address,string,address)", p0, p1, p2, p3)); } function log(bool p0, address p1, bool p2, uint p3) internal pure { _sendLogPayload(abi.encodeWithSignature("log(bool,address,bool,uint)", p0, p1, p2, p3)); } function log(bool p0, address p1, bool p2, string memory p3) internal pure { _sendLogPayload(abi.encodeWithSignature("log(bool,address,bool,string)", p0, p1, p2, p3)); } function log(bool p0, address p1, bool p2, bool p3) internal pure { _sendLogPayload(abi.encodeWithSignature("log(bool,address,bool,bool)", p0, p1, p2, p3)); } function log(bool p0, address p1, bool p2, address p3) internal pure { _sendLogPayload(abi.encodeWithSignature("log(bool,address,bool,address)", p0, p1, p2, p3)); } function log(bool p0, address p1, address p2, uint p3) internal pure { _sendLogPayload(abi.encodeWithSignature("log(bool,address,address,uint)", p0, p1, p2, p3)); } function log(bool p0, address p1, address p2, string memory p3) internal pure { _sendLogPayload(abi.encodeWithSignature("log(bool,address,address,string)", p0, p1, p2, p3)); } function log(bool p0, address p1, address p2, bool p3) internal pure { _sendLogPayload(abi.encodeWithSignature("log(bool,address,address,bool)", p0, p1, p2, p3)); } function log(bool p0, address p1, address p2, address p3) internal pure { _sendLogPayload(abi.encodeWithSignature("log(bool,address,address,address)", p0, p1, p2, p3)); } function log(address p0, uint p1, uint p2, uint p3) internal pure { _sendLogPayload(abi.encodeWithSignature("log(address,uint,uint,uint)", p0, p1, p2, p3)); } function log(address p0, uint p1, uint p2, string memory p3) internal pure { _sendLogPayload(abi.encodeWithSignature("log(address,uint,uint,string)", p0, p1, p2, p3)); } function log(address p0, uint p1, uint p2, bool p3) internal pure { _sendLogPayload(abi.encodeWithSignature("log(address,uint,uint,bool)", p0, p1, p2, p3)); } function log(address p0, uint p1, uint p2, address p3) internal pure { _sendLogPayload(abi.encodeWithSignature("log(address,uint,uint,address)", p0, p1, p2, p3)); } function log(address p0, uint p1, string memory p2, uint p3) internal pure { _sendLogPayload(abi.encodeWithSignature("log(address,uint,string,uint)", p0, p1, p2, p3)); } function log(address p0, uint p1, string memory p2, string memory p3) internal pure { _sendLogPayload(abi.encodeWithSignature("log(address,uint,string,string)", p0, p1, p2, p3)); } function log(address p0, uint p1, string memory p2, bool p3) internal pure { _sendLogPayload(abi.encodeWithSignature("log(address,uint,string,bool)", p0, p1, p2, p3)); } function log(address p0, uint p1, string memory p2, address p3) internal pure { _sendLogPayload(abi.encodeWithSignature("log(address,uint,string,address)", p0, p1, p2, p3)); } function log(address p0, uint p1, bool p2, uint p3) internal pure { _sendLogPayload(abi.encodeWithSignature("log(address,uint,bool,uint)", p0, p1, p2, p3)); } function log(address p0, uint p1, bool p2, string memory p3) internal pure { _sendLogPayload(abi.encodeWithSignature("log(address,uint,bool,string)", p0, p1, p2, p3)); } function log(address p0, uint p1, bool p2, bool p3) internal pure { _sendLogPayload(abi.encodeWithSignature("log(address,uint,bool,bool)", p0, p1, p2, p3)); } function log(address p0, uint p1, bool p2, address p3) internal pure { _sendLogPayload(abi.encodeWithSignature("log(address,uint,bool,address)", p0, p1, p2, p3)); } function log(address p0, uint p1, address p2, uint p3) internal pure { _sendLogPayload(abi.encodeWithSignature("log(address,uint,address,uint)", p0, p1, p2, p3)); } function log(address p0, uint p1, address p2, string memory p3) internal pure { _sendLogPayload(abi.encodeWithSignature("log(address,uint,address,string)", p0, p1, p2, p3)); } function log(address p0, uint p1, address p2, bool p3) internal pure { _sendLogPayload(abi.encodeWithSignature("log(address,uint,address,bool)", p0, p1, p2, p3)); } function log(address p0, uint p1, address p2, address p3) internal pure { _sendLogPayload(abi.encodeWithSignature("log(address,uint,address,address)", p0, p1, p2, p3)); } function log(address p0, string memory p1, uint p2, uint p3) internal pure { _sendLogPayload(abi.encodeWithSignature("log(address,string,uint,uint)", p0, p1, p2, p3)); } function log(address p0, string memory p1, uint p2, string memory p3) internal pure { _sendLogPayload(abi.encodeWithSignature("log(address,string,uint,string)", p0, p1, p2, p3)); } function log(address p0, string memory p1, uint p2, bool p3) internal pure { _sendLogPayload(abi.encodeWithSignature("log(address,string,uint,bool)", p0, p1, p2, p3)); } function log(address p0, string memory p1, uint p2, address p3) internal pure { _sendLogPayload(abi.encodeWithSignature("log(address,string,uint,address)", p0, p1, p2, p3)); } function log(address p0, string memory p1, string memory p2, uint p3) internal pure { _sendLogPayload(abi.encodeWithSignature("log(address,string,string,uint)", p0, p1, p2, p3)); } function log(address p0, string memory p1, string memory p2, string memory p3) internal pure { _sendLogPayload(abi.encodeWithSignature("log(address,string,string,string)", p0, p1, p2, p3)); } function log(address p0, string memory p1, string memory p2, bool p3) internal pure { _sendLogPayload(abi.encodeWithSignature("log(address,string,string,bool)", p0, p1, p2, p3)); } function log(address p0, string memory p1, string memory p2, address p3) internal pure { _sendLogPayload(abi.encodeWithSignature("log(address,string,string,address)", p0, p1, p2, p3)); } function log(address p0, string memory p1, bool p2, uint p3) internal pure { _sendLogPayload(abi.encodeWithSignature("log(address,string,bool,uint)", p0, p1, p2, p3)); } function log(address p0, string memory p1, bool p2, string memory p3) internal pure { _sendLogPayload(abi.encodeWithSignature("log(address,string,bool,string)", p0, p1, p2, p3)); } function log(address p0, string memory p1, bool p2, bool p3) internal pure { _sendLogPayload(abi.encodeWithSignature("log(address,string,bool,bool)", p0, p1, p2, p3)); } function log(address p0, string memory p1, bool p2, address p3) internal pure { _sendLogPayload(abi.encodeWithSignature("log(address,string,bool,address)", p0, p1, p2, p3)); } function log(address p0, string memory p1, address p2, uint p3) internal pure { _sendLogPayload(abi.encodeWithSignature("log(address,string,address,uint)", p0, p1, p2, p3)); } function log(address p0, string memory p1, address p2, string memory p3) internal pure { _sendLogPayload(abi.encodeWithSignature("log(address,string,address,string)", p0, p1, p2, p3)); } function log(address p0, string memory p1, address p2, bool p3) internal pure { _sendLogPayload(abi.encodeWithSignature("log(address,string,address,bool)", p0, p1, p2, p3)); } function log(address p0, string memory p1, address p2, address p3) internal pure { _sendLogPayload(abi.encodeWithSignature("log(address,string,address,address)", p0, p1, p2, p3)); } function log(address p0, bool p1, uint p2, uint p3) internal pure { _sendLogPayload(abi.encodeWithSignature("log(address,bool,uint,uint)", p0, p1, p2, p3)); } function log(address p0, bool p1, uint p2, string memory p3) internal pure { _sendLogPayload(abi.encodeWithSignature("log(address,bool,uint,string)", p0, p1, p2, p3)); } function log(address p0, bool p1, uint p2, bool p3) internal pure { _sendLogPayload(abi.encodeWithSignature("log(address,bool,uint,bool)", p0, p1, p2, p3)); } function log(address p0, bool p1, uint p2, address p3) internal pure { _sendLogPayload(abi.encodeWithSignature("log(address,bool,uint,address)", p0, p1, p2, p3)); } function log(address p0, bool p1, string memory p2, uint p3) internal pure { _sendLogPayload(abi.encodeWithSignature("log(address,bool,string,uint)", p0, p1, p2, p3)); } function log(address p0, bool p1, string memory p2, string memory p3) internal pure { _sendLogPayload(abi.encodeWithSignature("log(address,bool,string,string)", p0, p1, p2, p3)); } function log(address p0, bool p1, string memory p2, bool p3) internal pure { _sendLogPayload(abi.encodeWithSignature("log(address,bool,string,bool)", p0, p1, p2, p3)); } function log(address p0, bool p1, string memory p2, address p3) internal pure { _sendLogPayload(abi.encodeWithSignature("log(address,bool,string,address)", p0, p1, p2, p3)); } function log(address p0, bool p1, bool p2, uint p3) internal pure { _sendLogPayload(abi.encodeWithSignature("log(address,bool,bool,uint)", p0, p1, p2, p3)); } function log(address p0, bool p1, bool p2, string memory p3) internal pure { _sendLogPayload(abi.encodeWithSignature("log(address,bool,bool,string)", p0, p1, p2, p3)); } function log(address p0, bool p1, bool p2, bool p3) internal pure { _sendLogPayload(abi.encodeWithSignature("log(address,bool,bool,bool)", p0, p1, p2, p3)); } function log(address p0, bool p1, bool p2, address p3) internal pure { _sendLogPayload(abi.encodeWithSignature("log(address,bool,bool,address)", p0, p1, p2, p3)); } function log(address p0, bool p1, address p2, uint p3) internal pure { _sendLogPayload(abi.encodeWithSignature("log(address,bool,address,uint)", p0, p1, p2, p3)); } function log(address p0, bool p1, address p2, string memory p3) internal pure { _sendLogPayload(abi.encodeWithSignature("log(address,bool,address,string)", p0, p1, p2, p3)); } function log(address p0, bool p1, address p2, bool p3) internal pure { _sendLogPayload(abi.encodeWithSignature("log(address,bool,address,bool)", p0, p1, p2, p3)); } function log(address p0, bool p1, address p2, address p3) internal pure { _sendLogPayload(abi.encodeWithSignature("log(address,bool,address,address)", p0, p1, p2, p3)); } function log(address p0, address p1, uint p2, uint p3) internal pure { _sendLogPayload(abi.encodeWithSignature("log(address,address,uint,uint)", p0, p1, p2, p3)); } function log(address p0, address p1, uint p2, string memory p3) internal pure { _sendLogPayload(abi.encodeWithSignature("log(address,address,uint,string)", p0, p1, p2, p3)); } function log(address p0, address p1, uint p2, bool p3) internal pure { _sendLogPayload(abi.encodeWithSignature("log(address,address,uint,bool)", p0, p1, p2, p3)); } function log(address p0, address p1, uint p2, address p3) internal pure { _sendLogPayload(abi.encodeWithSignature("log(address,address,uint,address)", p0, p1, p2, p3)); } function log(address p0, address p1, string memory p2, uint p3) internal pure { _sendLogPayload(abi.encodeWithSignature("log(address,address,string,uint)", p0, p1, p2, p3)); } function log(address p0, address p1, string memory p2, string memory p3) internal pure { _sendLogPayload(abi.encodeWithSignature("log(address,address,string,string)", p0, p1, p2, p3)); } function log(address p0, address p1, string memory p2, bool p3) internal pure { _sendLogPayload(abi.encodeWithSignature("log(address,address,string,bool)", p0, p1, p2, p3)); } function log(address p0, address p1, string memory p2, address p3) internal pure { _sendLogPayload(abi.encodeWithSignature("log(address,address,string,address)", p0, p1, p2, p3)); } function log(address p0, address p1, bool p2, uint p3) internal pure { _sendLogPayload(abi.encodeWithSignature("log(address,address,bool,uint)", p0, p1, p2, p3)); } function log(address p0, address p1, bool p2, string memory p3) internal pure { _sendLogPayload(abi.encodeWithSignature("log(address,address,bool,string)", p0, p1, p2, p3)); } function log(address p0, address p1, bool p2, bool p3) internal pure { _sendLogPayload(abi.encodeWithSignature("log(address,address,bool,bool)", p0, p1, p2, p3)); } function log(address p0, address p1, bool p2, address p3) internal pure { _sendLogPayload(abi.encodeWithSignature("log(address,address,bool,address)", p0, p1, p2, p3)); } function log(address p0, address p1, address p2, uint p3) internal pure { _sendLogPayload(abi.encodeWithSignature("log(address,address,address,uint)", p0, p1, p2, p3)); } function log(address p0, address p1, address p2, string memory p3) internal pure { _sendLogPayload(abi.encodeWithSignature("log(address,address,address,string)", p0, p1, p2, p3)); } function log(address p0, address p1, address p2, bool p3) internal pure { _sendLogPayload(abi.encodeWithSignature("log(address,address,address,bool)", p0, p1, p2, p3)); } function log(address p0, address p1, address p2, address p3) internal pure { _sendLogPayload(abi.encodeWithSignature("log(address,address,address,address)", p0, p1, p2, p3)); } }
// SPDX-License-Identifier: Apache-2.0 pragma solidity ^0.8.0; /// @title IPythEvents contains the events that Pyth contract emits. /// @dev This interface can be used for listening to the updates for off-chain and testing purposes. interface IPythEvents { /// @dev Emitted when the price feed with `id` has received a fresh update. /// @param id The Pyth Price Feed ID. /// @param publishTime Publish time of the given price update. /// @param price Price of the given price update. /// @param conf Confidence interval of the given price update. event PriceFeedUpdate( bytes32 indexed id, uint64 publishTime, int64 price, uint64 conf ); }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts (last updated v5.0.1) (utils/Context.sol) pragma solidity ^0.8.20; /** * @dev Provides information about the current execution context, including the * sender of the transaction and its data. While these are generally available * via msg.sender and msg.data, they should not be accessed in such a direct * manner, since when dealing with meta-transactions the account sending and * paying for execution may not be the actual sender (as far as an application * is concerned). * * This contract is only required for intermediate, library-like contracts. */ abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } function _msgData() internal view virtual returns (bytes calldata) { return msg.data; } function _contextSuffixLength() internal view virtual returns (uint256) { return 0; } }
{ "remappings": [ "@pythnetwork/pyth-sdk-solidity/=node_modules/@pythnetwork/pyth-sdk-solidity/", "@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/", "forge-std/=lib/forge-std/src/", "ds-test/=lib/openzeppelin-contracts/lib/forge-std/lib/ds-test/src/", "erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/", "openzeppelin-contracts/=lib/openzeppelin-contracts/" ], "optimizer": { "enabled": true, "runs": 200 }, "metadata": { "useLiteralContent": false, "bytecodeHash": "ipfs", "appendCBOR": true }, "outputSelection": { "*": { "*": [ "evm.bytecode", "evm.deployedBytecode", "abi" ] } }, "evmVersion": "cancun", "viaIR": false, "libraries": {} }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"inputs":[{"internalType":"address","name":"pyth_","type":"address"},{"internalType":"bytes32","name":"beraUsdPythPriceFeedId_","type":"bytes32"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"InvalidPyth","type":"error"},{"inputs":[],"name":"InvalidUTF8Byte","type":"error"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"OwnableInvalidOwner","type":"error"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"OwnableUnauthorizedAccount","type":"error"},{"inputs":[],"name":"PriceTooLow","type":"error"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bytes32","name":"beraUsdPythPriceFeedId_","type":"bytes32"}],"name":"BeraUsdPythPriceFeedIdSet","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"minPriceInWei_","type":"uint256"}],"name":"MinPriceInWeiSet","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"pyth_","type":"address"}],"name":"PythSet","type":"event"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string","name":"label","type":"string"},{"internalType":"uint256","name":"expires","type":"uint256"},{"internalType":"uint256","name":"duration","type":"uint256"}],"name":"price","outputs":[{"components":[{"internalType":"uint256","name":"base","type":"uint256"},{"internalType":"uint256","name":"discount","type":"uint256"}],"internalType":"struct IPriceOracle.Price","name":"","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string","name":"label","type":"string"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"duration","type":"uint256"},{"internalType":"enum IPriceOracle.Payment","name":"payment","type":"uint8"}],"name":"price","outputs":[{"components":[{"internalType":"uint256","name":"base","type":"uint256"},{"internalType":"uint256","name":"discount","type":"uint256"}],"internalType":"struct IPriceOracle.Price","name":"","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"beraUsdPythPriceFeedId_","type":"bytes32"}],"name":"setBeraUsdPythPriceFeedId","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"minPriceInWei_","type":"uint256"}],"name":"setMinPriceInWei","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pyth_","type":"address"}],"name":"setPyth","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"}]
Contract Creation Code
608060405234801561000f575f5ffd5b506040516113c63803806113c683398101604081905261002e916100fc565b338061005357604051631e4fbdf760e01b81525f600482015260240160405180910390fd5b61005c816100ad565b506001600160a01b0382166100845760405163f5afe80d60e01b815260040160405180910390fd5b600180546001600160a01b0319166001600160a01b039390931692909217909155600255610133565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b5f5f6040838503121561010d575f5ffd5b82516001600160a01b0381168114610123575f5ffd5b6020939093015192949293505050565b611286806101405f395ff3fe608060405234801561000f575f5ffd5b5060043610610085575f3560e01c8063c92e996c11610058578063c92e996c146100f3578063d59ff8e014610106578063ee22fd6f14610119578063f2fde38b1461012c575f5ffd5b806350e9a715146100895780635c635a75146100bc578063715018a6146100d15780638da5cb5b146100d9575b5f5ffd5b61009c610097366004610eff565b61013f565b604080518251815260209283015192810192909252015b60405180910390f35b6100cf6100ca366004610f4c565b610168565b005b6100cf6101ac565b5f546040516001600160a01b0390911681526020016100b3565b61009c610101366004610f63565b6101bf565b6100cf610114366004610f4c565b61022f565b6100cf610127366004610fcc565b61026c565b6100cf61013a366004610fcc565b6102c2565b604080518082019091525f808252602082015261015f858585855f6101bf565b95945050505050565b610170610304565b60038190556040518181527ffe213f423cc686af7a64b44eb9810dfbc91529f12a14cecb255809099ad5f062906020015b60405180910390a150565b6101b4610304565b6101bd5f610330565b565b604080518082019091525f80825260208201525f5f6101df88888761037f565b90925090505f8460018111156101f7576101f7610ff2565b0361021357610205826104ac565b9150610210816104ac565b90505b6040805180820190915291825260208201529695505050505050565b610237610304565b60028190556040518181527fcd7cc45211e8d4eb32f137374a9d21805455c5d5b169ebf0b519652be224ffbc906020016101a1565b610274610304565b600180546001600160a01b0319166001600160a01b0383169081179091556040519081527f46b42f4e8500803ed21911081f9fad2d1b466f75d95552247151cc9fed56e68d906020016101a1565b6102ca610304565b6001600160a01b0381166102f857604051631e4fbdf760e01b81525f60048201526024015b60405180910390fd5b61030181610330565b50565b5f546001600160a01b031633146101bd5760405163118cdaa760e01b81523360048201526024016102ef565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b5f5f5f6103c086868080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152506105b592505050565b90505f816001036103d65750631908b100610416565b816002036103e957506310089d40610416565b816003036103fc5750630a12bc40610416565b8160040361040f575063041cdb40610416565b5063017d78405b5f6301e13380861161042957505f610466565b6303c26700861161043c57506005610466565b6305a39a80861161044f5750600f610466565b630784ce0086116104625750601e610466565b5060285b5f6301e13380610476888561101a565b6104809190611031565b90505f606461048f848461101a565b6104999190611031565b919650909450505050505b935093915050565b60015460025460405163052571af60e51b81526004810191909152601e60248201525f9182916001600160a01b039091169063a4ae35e090604401608060405180830381865afa158015610502573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610526919061107d565b90505f81604001515f1961053a9190611109565b61054590600a611203565b82516105639067ffffffffffffffff16670de0b6b3a764000061101a565b61056d9190611031565b90505f610587826c0c9f2c9cd04674edea40000000611031565b905060035481116105ab57604051636dddf41160e11b815260040160405180910390fd5b61015f818661101a565b80515f908290829081905b808210156106fb575f6105d38584610705565b90505f6105e08285611211565b90505b82811080156105f757506105f7868261093d565b15610617576106068682610705565b6106109082611211565b90506105e3565b828110801561062b575061062b8682610d47565b156106a25761063a8682610705565b6106449082611211565b9050828110156106a2575f6106598783610705565b90506106658183611211565b91505b838210801561067c575061067c878361093d565b1561069c5761068b8783610705565b6106959083611211565b9150610668565b50610617565b6106ac8685610e01565b80156106b757508281105b80156106c857506106c88682610e01565b156106e4576106d78682610705565b6106e19082611211565b90505b846106ee81611224565b95505080935050506105c0565b5090949350505050565b5f5f8383815181106107195761071961123c565b016020015160f81c90506080811015610736576001915050610937565b60e08160ff1610801561075357508351610751846001611211565b105b801561078e575083610766846001611211565b815181106107765761077661123c565b602001015160f81c60f81b60f81c60c01660ff166080145b1561079d576002915050610937565b60f08160ff161080156107ba575083516107b8846002611211565b105b80156107f55750836107cd846001611211565b815181106107dd576107dd61123c565b602001015160f81c60f81b60f81c60c01660ff166080145b8015610830575083610808846002611211565b815181106108185761081861123c565b602001015160f81c60f81b60f81c60c01660ff166080145b1561083f576003915050610937565b60f88160ff1610801561085c5750835161085a846003611211565b105b801561089757508361086f846001611211565b8151811061087f5761087f61123c565b602001015160f81c60f81b60f81c60c01660ff166080145b80156108d25750836108aa846002611211565b815181106108ba576108ba61123c565b602001015160f81c60f81b60f81c60c01660ff166080145b801561090d5750836108e5846003611211565b815181106108f5576108f561123c565b602001015160f81c60f81b60f81c60c01660ff166080145b1561091c576004915050610937565b6040516361709aff60e11b815260040160405180910390fd5b505b92915050565b5f5f8383815181106109515761095161123c565b016020015160f81c905060cc81148061096d57508060ff1660cd145b1561097c576001915050610937565b8060ff1660e214801561099957508351610997846002611211565b105b15610a23575f846109ab856001611211565b815181106109bb576109bb61123c565b016020015160f81c90505f856109d2866002611211565b815181106109e2576109e261123c565b016020015160f81c9050608060ff8316148015610a0f57508060ff16608f1480610a0f57508060ff16608e145b15610a205760019350505050610937565b50505b8060ff1660f0148015610a4057508351610a3e846003611211565b105b15610b30575f84610a52856001611211565b81518110610a6257610a6261123c565b016020015160f81c90505f85610a79866002611211565b81518110610a8957610a8961123c565b016020015160f81c90505f86610aa0876003611211565b81518110610ab057610ab061123c565b016020015160f81c9050609f60ff8416148015610ad057508160ff16608f145b8015610aef575060bb8160ff1610158015610aef575060bf8160ff1611155b80610b1a57508260ff16609f148015610b0b57508160ff1660a4145b8015610b1a57508060ff1660b0145b15610b2c576001945050505050610937565b5050505b8060ff1660ef148015610b4d57508351610b4b846002611211565b105b15610bca575f84610b5f856001611211565b81518110610b6f57610b6f61123c565b016020015160f81c90505f85610b86866002611211565b81518110610b9657610b9661123c565b016020015160f81c905060b860ff8316148015610bb657508060ff16608f145b15610bc75760019350505050610937565b50505b8060ff1660e2148015610be757508351610be5846002611211565b105b15610c64575f84610bf9856001611211565b81518110610c0957610c0961123c565b016020015160f81c90505f85610c20866002611211565b81518110610c3057610c3061123c565b016020015160f81c9050608360ff8316148015610c5057508060ff1660a3145b15610c615760019350505050610937565b50505b8060ff1660f3148015610c8157508351610c7f846002611211565b105b8015610cbb575083610c94846001611211565b81518110610ca457610ca461123c565b6020910101516001600160f81b031916600560fd1b145b8015610cf55750600160ff1b84610cd3856002611211565b81518110610ce357610ce361123c565b01602001516001600160f81b03191610155b8015610d2f5750609f60f81b84610d0d856002611211565b81518110610d1d57610d1d61123c565b01602001516001600160f81b03191611155b15610d3e576001915050610937565b505f9392505050565b5f828281518110610d5a57610d5a61123c565b6020910101516001600160f81b031916607160f91b148015610d8657508251610d84836002611211565b105b8015610dc0575082610d99836001611211565b81518110610da957610da961123c565b6020910101516001600160f81b031916600160ff1b145b8015610dfa575082610dd3836002611211565b81518110610de357610de361123c565b6020910101516001600160f81b031916608d60f81b145b9392505050565b5f828281518110610e1457610e1461123c565b6020910101516001600160f81b031916600f60fc1b148015610e4057508251610e3e836003611211565b105b8015610e7a575082610e53836001611211565b81518110610e6357610e6361123c565b6020910101516001600160f81b031916609f60f81b145b8015610dfa575082610e8d836002611211565b81518110610e9d57610e9d61123c565b6020910101516001600160f81b031916608760f81b149392505050565b5f5f83601f840112610eca575f5ffd5b50813567ffffffffffffffff811115610ee1575f5ffd5b602083019150836020828501011115610ef8575f5ffd5b9250929050565b5f5f5f5f60608587031215610f12575f5ffd5b843567ffffffffffffffff811115610f28575f5ffd5b610f3487828801610eba565b90989097506020870135966040013595509350505050565b5f60208284031215610f5c575f5ffd5b5035919050565b5f5f5f5f5f60808688031215610f77575f5ffd5b853567ffffffffffffffff811115610f8d575f5ffd5b610f9988828901610eba565b9096509450506020860135925060408601359150606086013560028110610fbe575f5ffd5b809150509295509295909350565b5f60208284031215610fdc575f5ffd5b81356001600160a01b0381168114610dfa575f5ffd5b634e487b7160e01b5f52602160045260245ffd5b634e487b7160e01b5f52601160045260245ffd5b808202811582820484141761093757610937611006565b5f8261104b57634e487b7160e01b5f52601260045260245ffd5b500490565b805167ffffffffffffffff81168114611067575f5ffd5b919050565b8051600381900b8114611067575f5ffd5b5f608082840312801561108e575f5ffd5b506040516080810167ffffffffffffffff811182821017156110be57634e487b7160e01b5f52604160045260245ffd5b6040528251600781900b81146110d2575f5ffd5b81526110e060208401611050565b60208201526110f16040840161106c565b60408201526060928301519281019290925250919050565b5f8260030b8260030b028060030b915080821461093557610935611006565b6001815b60018411156104a45780850481111561114757611147611006565b600184161561115557908102905b60019390931c92800261112c565b5f8261117157506001610937565b8161117d57505f610937565b8160018114611193576002811461119d576111b9565b6001915050610937565b60ff8411156111ae576111ae611006565b50506001821b610937565b5060208310610133831016604e8410600b84101617156111dc575081810a610937565b6111e85f198484611128565b805f19048211156111fb576111fb611006565b029392505050565b5f610dfa60ff841683611163565b8082018082111561093757610937611006565b5f6001820161123557611235611006565b5060010190565b634e487b7160e01b5f52603260045260245ffdfea2646970667358221220ec6bcb0c686ecb4d41ba403c5d12ebbae2354682e6f945689060e52cfb22870564736f6c634300081c00330000000000000000000000002880ab155794e7179c9ee2e38200202908c17b43962088abcfdbdb6e30db2e340c8cf887d9efb311b1f2f17b155a63dbb6d40265
Deployed Bytecode
0x608060405234801561000f575f5ffd5b5060043610610085575f3560e01c8063c92e996c11610058578063c92e996c146100f3578063d59ff8e014610106578063ee22fd6f14610119578063f2fde38b1461012c575f5ffd5b806350e9a715146100895780635c635a75146100bc578063715018a6146100d15780638da5cb5b146100d9575b5f5ffd5b61009c610097366004610eff565b61013f565b604080518251815260209283015192810192909252015b60405180910390f35b6100cf6100ca366004610f4c565b610168565b005b6100cf6101ac565b5f546040516001600160a01b0390911681526020016100b3565b61009c610101366004610f63565b6101bf565b6100cf610114366004610f4c565b61022f565b6100cf610127366004610fcc565b61026c565b6100cf61013a366004610fcc565b6102c2565b604080518082019091525f808252602082015261015f858585855f6101bf565b95945050505050565b610170610304565b60038190556040518181527ffe213f423cc686af7a64b44eb9810dfbc91529f12a14cecb255809099ad5f062906020015b60405180910390a150565b6101b4610304565b6101bd5f610330565b565b604080518082019091525f80825260208201525f5f6101df88888761037f565b90925090505f8460018111156101f7576101f7610ff2565b0361021357610205826104ac565b9150610210816104ac565b90505b6040805180820190915291825260208201529695505050505050565b610237610304565b60028190556040518181527fcd7cc45211e8d4eb32f137374a9d21805455c5d5b169ebf0b519652be224ffbc906020016101a1565b610274610304565b600180546001600160a01b0319166001600160a01b0383169081179091556040519081527f46b42f4e8500803ed21911081f9fad2d1b466f75d95552247151cc9fed56e68d906020016101a1565b6102ca610304565b6001600160a01b0381166102f857604051631e4fbdf760e01b81525f60048201526024015b60405180910390fd5b61030181610330565b50565b5f546001600160a01b031633146101bd5760405163118cdaa760e01b81523360048201526024016102ef565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b5f5f5f6103c086868080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152506105b592505050565b90505f816001036103d65750631908b100610416565b816002036103e957506310089d40610416565b816003036103fc5750630a12bc40610416565b8160040361040f575063041cdb40610416565b5063017d78405b5f6301e13380861161042957505f610466565b6303c26700861161043c57506005610466565b6305a39a80861161044f5750600f610466565b630784ce0086116104625750601e610466565b5060285b5f6301e13380610476888561101a565b6104809190611031565b90505f606461048f848461101a565b6104999190611031565b919650909450505050505b935093915050565b60015460025460405163052571af60e51b81526004810191909152601e60248201525f9182916001600160a01b039091169063a4ae35e090604401608060405180830381865afa158015610502573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610526919061107d565b90505f81604001515f1961053a9190611109565b61054590600a611203565b82516105639067ffffffffffffffff16670de0b6b3a764000061101a565b61056d9190611031565b90505f610587826c0c9f2c9cd04674edea40000000611031565b905060035481116105ab57604051636dddf41160e11b815260040160405180910390fd5b61015f818661101a565b80515f908290829081905b808210156106fb575f6105d38584610705565b90505f6105e08285611211565b90505b82811080156105f757506105f7868261093d565b15610617576106068682610705565b6106109082611211565b90506105e3565b828110801561062b575061062b8682610d47565b156106a25761063a8682610705565b6106449082611211565b9050828110156106a2575f6106598783610705565b90506106658183611211565b91505b838210801561067c575061067c878361093d565b1561069c5761068b8783610705565b6106959083611211565b9150610668565b50610617565b6106ac8685610e01565b80156106b757508281105b80156106c857506106c88682610e01565b156106e4576106d78682610705565b6106e19082611211565b90505b846106ee81611224565b95505080935050506105c0565b5090949350505050565b5f5f8383815181106107195761071961123c565b016020015160f81c90506080811015610736576001915050610937565b60e08160ff1610801561075357508351610751846001611211565b105b801561078e575083610766846001611211565b815181106107765761077661123c565b602001015160f81c60f81b60f81c60c01660ff166080145b1561079d576002915050610937565b60f08160ff161080156107ba575083516107b8846002611211565b105b80156107f55750836107cd846001611211565b815181106107dd576107dd61123c565b602001015160f81c60f81b60f81c60c01660ff166080145b8015610830575083610808846002611211565b815181106108185761081861123c565b602001015160f81c60f81b60f81c60c01660ff166080145b1561083f576003915050610937565b60f88160ff1610801561085c5750835161085a846003611211565b105b801561089757508361086f846001611211565b8151811061087f5761087f61123c565b602001015160f81c60f81b60f81c60c01660ff166080145b80156108d25750836108aa846002611211565b815181106108ba576108ba61123c565b602001015160f81c60f81b60f81c60c01660ff166080145b801561090d5750836108e5846003611211565b815181106108f5576108f561123c565b602001015160f81c60f81b60f81c60c01660ff166080145b1561091c576004915050610937565b6040516361709aff60e11b815260040160405180910390fd5b505b92915050565b5f5f8383815181106109515761095161123c565b016020015160f81c905060cc81148061096d57508060ff1660cd145b1561097c576001915050610937565b8060ff1660e214801561099957508351610997846002611211565b105b15610a23575f846109ab856001611211565b815181106109bb576109bb61123c565b016020015160f81c90505f856109d2866002611211565b815181106109e2576109e261123c565b016020015160f81c9050608060ff8316148015610a0f57508060ff16608f1480610a0f57508060ff16608e145b15610a205760019350505050610937565b50505b8060ff1660f0148015610a4057508351610a3e846003611211565b105b15610b30575f84610a52856001611211565b81518110610a6257610a6261123c565b016020015160f81c90505f85610a79866002611211565b81518110610a8957610a8961123c565b016020015160f81c90505f86610aa0876003611211565b81518110610ab057610ab061123c565b016020015160f81c9050609f60ff8416148015610ad057508160ff16608f145b8015610aef575060bb8160ff1610158015610aef575060bf8160ff1611155b80610b1a57508260ff16609f148015610b0b57508160ff1660a4145b8015610b1a57508060ff1660b0145b15610b2c576001945050505050610937565b5050505b8060ff1660ef148015610b4d57508351610b4b846002611211565b105b15610bca575f84610b5f856001611211565b81518110610b6f57610b6f61123c565b016020015160f81c90505f85610b86866002611211565b81518110610b9657610b9661123c565b016020015160f81c905060b860ff8316148015610bb657508060ff16608f145b15610bc75760019350505050610937565b50505b8060ff1660e2148015610be757508351610be5846002611211565b105b15610c64575f84610bf9856001611211565b81518110610c0957610c0961123c565b016020015160f81c90505f85610c20866002611211565b81518110610c3057610c3061123c565b016020015160f81c9050608360ff8316148015610c5057508060ff1660a3145b15610c615760019350505050610937565b50505b8060ff1660f3148015610c8157508351610c7f846002611211565b105b8015610cbb575083610c94846001611211565b81518110610ca457610ca461123c565b6020910101516001600160f81b031916600560fd1b145b8015610cf55750600160ff1b84610cd3856002611211565b81518110610ce357610ce361123c565b01602001516001600160f81b03191610155b8015610d2f5750609f60f81b84610d0d856002611211565b81518110610d1d57610d1d61123c565b01602001516001600160f81b03191611155b15610d3e576001915050610937565b505f9392505050565b5f828281518110610d5a57610d5a61123c565b6020910101516001600160f81b031916607160f91b148015610d8657508251610d84836002611211565b105b8015610dc0575082610d99836001611211565b81518110610da957610da961123c565b6020910101516001600160f81b031916600160ff1b145b8015610dfa575082610dd3836002611211565b81518110610de357610de361123c565b6020910101516001600160f81b031916608d60f81b145b9392505050565b5f828281518110610e1457610e1461123c565b6020910101516001600160f81b031916600f60fc1b148015610e4057508251610e3e836003611211565b105b8015610e7a575082610e53836001611211565b81518110610e6357610e6361123c565b6020910101516001600160f81b031916609f60f81b145b8015610dfa575082610e8d836002611211565b81518110610e9d57610e9d61123c565b6020910101516001600160f81b031916608760f81b149392505050565b5f5f83601f840112610eca575f5ffd5b50813567ffffffffffffffff811115610ee1575f5ffd5b602083019150836020828501011115610ef8575f5ffd5b9250929050565b5f5f5f5f60608587031215610f12575f5ffd5b843567ffffffffffffffff811115610f28575f5ffd5b610f3487828801610eba565b90989097506020870135966040013595509350505050565b5f60208284031215610f5c575f5ffd5b5035919050565b5f5f5f5f5f60808688031215610f77575f5ffd5b853567ffffffffffffffff811115610f8d575f5ffd5b610f9988828901610eba565b9096509450506020860135925060408601359150606086013560028110610fbe575f5ffd5b809150509295509295909350565b5f60208284031215610fdc575f5ffd5b81356001600160a01b0381168114610dfa575f5ffd5b634e487b7160e01b5f52602160045260245ffd5b634e487b7160e01b5f52601160045260245ffd5b808202811582820484141761093757610937611006565b5f8261104b57634e487b7160e01b5f52601260045260245ffd5b500490565b805167ffffffffffffffff81168114611067575f5ffd5b919050565b8051600381900b8114611067575f5ffd5b5f608082840312801561108e575f5ffd5b506040516080810167ffffffffffffffff811182821017156110be57634e487b7160e01b5f52604160045260245ffd5b6040528251600781900b81146110d2575f5ffd5b81526110e060208401611050565b60208201526110f16040840161106c565b60408201526060928301519281019290925250919050565b5f8260030b8260030b028060030b915080821461093557610935611006565b6001815b60018411156104a45780850481111561114757611147611006565b600184161561115557908102905b60019390931c92800261112c565b5f8261117157506001610937565b8161117d57505f610937565b8160018114611193576002811461119d576111b9565b6001915050610937565b60ff8411156111ae576111ae611006565b50506001821b610937565b5060208310610133831016604e8410600b84101617156111dc575081810a610937565b6111e85f198484611128565b805f19048211156111fb576111fb611006565b029392505050565b5f610dfa60ff841683611163565b8082018082111561093757610937611006565b5f6001820161123557611235611006565b5060010190565b634e487b7160e01b5f52603260045260245ffdfea2646970667358221220ec6bcb0c686ecb4d41ba403c5d12ebbae2354682e6f945689060e52cfb22870564736f6c634300081c0033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
0000000000000000000000002880ab155794e7179c9ee2e38200202908c17b43962088abcfdbdb6e30db2e340c8cf887d9efb311b1f2f17b155a63dbb6d40265
-----Decoded View---------------
Arg [0] : pyth_ (address): 0x2880aB155794e7179c9eE2e38200202908C17B43
Arg [1] : beraUsdPythPriceFeedId_ (bytes32): 0x962088abcfdbdb6e30db2e340c8cf887d9efb311b1f2f17b155a63dbb6d40265
-----Encoded View---------------
2 Constructor Arguments found :
Arg [0] : 0000000000000000000000002880ab155794e7179c9ee2e38200202908c17b43
Arg [1] : 962088abcfdbdb6e30db2e340c8cf887d9efb311b1f2f17b155a63dbb6d40265
Deployed Bytecode Sourcemap
450:5431:7:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2256:179;;;;;;:::i;:::-;;:::i;:::-;;;;1227:13:9;;1209:32;;1297:4;1285:17;;;1279:24;1257:20;;;1250:54;;;;1182:18;2256:179:7;;;;;;;;1451:163;;;;;;:::i;:::-;;:::i;:::-;;2293:101:1;;;:::i;1638:85::-;1684:7;1710:6;1638:85;;-1:-1:-1;;;;;1710:6:1;;;1692:51:9;;1680:2;1665:18;1638:85:1;1546:203:9;2781:572:7;;;;;;:::i;:::-;;:::i;1620:217::-;;;;;;:::i;:::-;;:::i;1843:116::-;;;;;;:::i;:::-;;:::i;2543:215:1:-;;;;;;:::i;:::-;;:::i;2256:179:7:-;-1:-1:-1;;;;;;;;;;;;;;;;;2383:45:7;2389:5;;2396:7;2405:8;2415:12;2383:5;:45::i;:::-;2376:52;2256:179;-1:-1:-1;;;;;2256:179:7:o;1451:163::-;1531:13:1;:11;:13::i;:::-;1530::7::1;:30:::0;;;1575:32:::1;::::0;3189:25:9;;;1575:32:7::1;::::0;3177:2:9;3162:18;1575:32:7::1;;;;;;;;1451:163:::0;:::o;2293:101:1:-;1531:13;:11;:13::i;:::-;2357:30:::1;2384:1;2357:18;:30::i;:::-;2293:101::o:0;2781:572:7:-;-1:-1:-1;;;;;;;;;;;;;;;;;3009:17:7;3028:16;3048:35;3067:5;;3074:8;3048:18;:35::i;:::-;3008:75;;-1:-1:-1;3008:75:7;-1:-1:-1;3178:12:7;3167:7;:23;;;;;;;;:::i;:::-;;3163:140;;3218:25;3233:9;3218:14;:25::i;:::-;3206:37;;3268:24;3283:8;3268:14;:24::i;:::-;3257:35;;3163:140;3320:26;;;;;;;;;;;;;;;;;2781:572;-1:-1:-1;;;;;;2781:572:7:o;1620:217::-;1531:13:1;:11;:13::i;:::-;1717:22:7::1;:48:::0;;;1780:50:::1;::::0;3189:25:9;;;1780:50:7::1;::::0;3177:2:9;3162:18;1780:50:7::1;3043:177:9::0;1843:116:7;1531:13:1;:11;:13::i;:::-;1904:4:7::1;:19:::0;;-1:-1:-1;;;;;;1904:19:7::1;-1:-1:-1::0;;;;;1904:19:7;::::1;::::0;;::::1;::::0;;;1938:14:::1;::::0;1692:51:9;;;1938:14:7::1;::::0;1680:2:9;1665:18;1938:14:7::1;1546:203:9::0;2543:215:1;1531:13;:11;:13::i;:::-;-1:-1:-1;;;;;2627:22:1;::::1;2623:91;;2672:31;::::0;-1:-1:-1;;;2672:31:1;;2700:1:::1;2672:31;::::0;::::1;1692:51:9::0;1665:18;;2672:31:1::1;;;;;;;;2623:91;2723:28;2742:8;2723:18;:28::i;:::-;2543:215:::0;:::o;1796:162::-;1684:7;1710:6;-1:-1:-1;;;;;1710:6:1;735:10:2;1855:23:1;1851:101;;1901:40;;-1:-1:-1;;;1901:40:1;;735:10:2;1901:40:1;;;1692:51:9;1665:18;;1901:40:1;1546:203:9;2912:187:1;2985:16;3004:6;;-1:-1:-1;;;;;3020:17:1;;;-1:-1:-1;;;;;;3020:17:1;;;;;;3052:40;;3004:6;;;;;;;3052:40;;2985:16;3052:40;2975:124;2912:187;:::o;3624:1304:7:-;3740:12;3754:16;3786:18;3807:14;:5;;:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3807:12:7;;-1:-1:-1;;;3807:14:7:i;:::-;3786:35;;3832:20;3914:10;3928:1;3914:15;3910:464;;-1:-1:-1;3960:11:7;3910:464;;;4012:10;4026:1;4012:15;4008:366;;-1:-1:-1;4058:11:7;4008:366;;;4111:10;4125:1;4111:15;4107:267;;-1:-1:-1;4157:11:7;4107:267;;;4210:10;4224:1;4210:15;4206:168;;-1:-1:-1;4256:10:7;4206:168;;;-1:-1:-1;4332:10:7;4206:168;4384:17;4427:8;4415;:20;4411:333;;-1:-1:-1;4463:1:7;4411:333;;;4497:12;4485:8;:24;4481:263;;-1:-1:-1;4537:1:7;4481:263;;;4571:12;4559:8;:24;4555:189;;-1:-1:-1;4611:2:7;4555:189;;;4646:12;4634:8;:24;4630:114;;-1:-1:-1;4686:2:7;4630:114;;;-1:-1:-1;4731:2:7;4630:114;4754:18;4803:8;4776:23;4791:8;4776:12;:23;:::i;:::-;4775:36;;;;:::i;:::-;4754:57;-1:-1:-1;4821:22:7;4873:3;4847:22;4860:9;4754:57;4847:22;:::i;:::-;4846:30;;;;:::i;:::-;4894:10;;-1:-1:-1;4821:55:7;;-1:-1:-1;;;;;3624:1304:7;;;;;;;:::o;5140:739::-;5264:4;;5289:22;;5264:52;;-1:-1:-1;;;5264:52:7;;;;;4249:25:9;;;;5313:2:7;4290:18:9;;;4283:34;5203:7:7;;;;-1:-1:-1;;;;;5264:4:7;;;;:24;;4222:18:9;;5264:52:7;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5222:94;;5327:27;5449:14;:19;;;-1:-1:-1;;5444:24:7;;;;:::i;:::-;5425:45;;:2;:45;:::i;:::-;5385:20;;5370:50;;:37;;5411:8;5370:50;:::i;:::-;5369:102;;;;:::i;:::-;5327:144;-1:-1:-1;5546:22:7;5571:47;5327:144;5572:23;5571:47;:::i;:::-;5546:72;;5796:13;;5778:14;:31;5774:57;;5818:13;;-1:-1:-1;;;5818:13:7;;;;;;;;;;;5774:57;5849:23;5858:14;5849:6;:23;:::i;450:1830:8:-;632:15;;506:7;;555:1;;506:7;;;;658:1595;669:6;665:1;:10;658:1595;;;691:15;709:24;721:8;731:1;709:11;:24::i;:::-;691:42;-1:-1:-1;747:13:8;763:11;691:42;763:1;:11;:::i;:::-;747:27;;886:140;901:6;893:5;:14;:61;;;;;911:43;938:8;948:5;911:26;:43::i;:::-;886:140;;;983:28;995:8;1005:5;983:11;:28::i;:::-;974:37;;;;:::i;:::-;;;886:140;;;1142:6;1134:5;:14;:53;;;;;1152:35;1171:8;1181:5;1152:18;:35::i;:::-;1127:740;;;1253:28;1265:8;1275:5;1253:11;:28::i;:::-;1244:37;;;;:::i;:::-;;;1368:6;1360:5;:14;1356:497;;;1398:19;1420:28;1432:8;1442:5;1420:11;:28::i;:::-;1398:50;-1:-1:-1;1470:20:8;1398:50;1470:20;;:::i;:::-;;;1601:156;1616:6;1608:5;:14;:61;;;;;1626:43;1653:8;1663:5;1626:26;:43::i;:::-;1601:156;;;1706:28;1718:8;1728:5;1706:11;:28::i;:::-;1697:37;;;;:::i;:::-;;;1601:156;;;1376:399;1127:740;;1356:497;1967:33;1988:8;1998:1;1967:20;:33::i;:::-;:51;;;;;2012:6;2004:5;:14;1967:51;:92;;;;;2022:37;2043:8;2053:5;2022:20;:37::i;:::-;1963:168;;;2088:28;2100:8;2110:5;2088:11;:28::i;:::-;2079:37;;;;:::i;:::-;;;1963:168;2214:5;;;;:::i;:::-;;;;2237;2233:9;;677:1576;;658:1595;;;-1:-1:-1;2270:3:8;;450:1830;-1:-1:-1;;;;450:1830:8:o;2369:956::-;2450:7;2469;2485:8;2494:5;2485:15;;;;;;;;:::i;:::-;;;;;;;;-1:-1:-1;2520:4:8;2516:8;;2512:807;;;2547:1;2540:8;;;;;2512:807;2601:4;2597:1;:8;;;:39;;;;-1:-1:-1;2621:15:8;;2609:9;:5;2617:1;2609:9;:::i;:::-;:27;2597:39;:84;;;;-1:-1:-1;2646:8:8;2655:9;:5;2663:1;2655:9;:::i;:::-;2646:19;;;;;;;;:::i;:::-;;;;;;;;;2640:26;;2669:4;2640:33;:41;;2677:4;2640:41;2597:84;2593:726;;;2704:1;2697:8;;;;;2593:726;2763:4;2759:1;:8;;;:39;;;;-1:-1:-1;2783:15:8;;2771:9;:5;2779:1;2771:9;:::i;:::-;:27;2759:39;:84;;;;-1:-1:-1;2808:8:8;2817:9;:5;2825:1;2817:9;:::i;:::-;2808:19;;;;;;;;:::i;:::-;;;;;;;;;2802:26;;2831:4;2802:33;:41;;2839:4;2802:41;2759:84;:145;;;;-1:-1:-1;2869:8:8;2878:9;:5;2886:1;2878:9;:::i;:::-;2869:19;;;;;;;;:::i;:::-;;;;;;;;;2863:26;;2892:4;2863:33;:41;;2900:4;2863:41;2759:145;2742:577;;;2936:1;2929:8;;;;;2742:577;2995:4;2991:1;:8;;;:39;;;;-1:-1:-1;3015:15:8;;3003:9;:5;3011:1;3003:9;:::i;:::-;:27;2991:39;:84;;;;-1:-1:-1;3040:8:8;3049:9;:5;3057:1;3049:9;:::i;:::-;3040:19;;;;;;;;:::i;:::-;;;;;;;;;3034:26;;3063:4;3034:33;:41;;3071:4;3034:41;2991:84;:145;;;;-1:-1:-1;3101:8:8;3110:9;:5;3118:1;3110:9;:::i;:::-;3101:19;;;;;;;;:::i;:::-;;;;;;;;;3095:26;;3124:4;3095:33;:41;;3132:4;3095:41;2991:145;:190;;;;-1:-1:-1;3146:8:8;3155:9;:5;3163:1;3155:9;:::i;:::-;3146:19;;;;;;;;:::i;:::-;;;;;;;;;3140:26;;3169:4;3140:33;:41;;3177:4;3140:41;2991:190;2974:345;;;3213:1;3206:8;;;;;2974:345;3291:17;;-1:-1:-1;;;3291:17:8;;;;;;;;;;;2974:345;2459:866;2369:956;;;;;:::o;3760:2267::-;3856:4;3872:7;3888:8;3897:5;3888:15;;;;;;;;:::i;:::-;;;;;;;;-1:-1:-1;3995:4:8;3990:9;;;:22;;;4003:1;:9;;4008:4;4003:9;3990:22;3986:64;;;4035:4;4028:11;;;;;3986:64;4115:1;:9;;4120:4;4115:9;:40;;;;-1:-1:-1;4140:15:8;;4128:9;:5;4136:1;4128:9;:::i;:::-;:27;4115:40;4111:322;;;4171:8;4188;4197:9;:5;4205:1;4197:9;:::i;:::-;4188:19;;;;;;;;:::i;:::-;;;;;;;;-1:-1:-1;4222:8:8;4239;4248:9;:5;4256:1;4248:9;:::i;:::-;4239:19;;;;;;;;:::i;:::-;;;;;;;;-1:-1:-1;4343:4:8;4233:26;4337:10;;;:40;;;;;4352:2;:10;;4358:4;4352:10;:24;;;;4366:2;:10;;4372:4;4366:10;4352:24;4333:90;;;4404:4;4397:11;;;;;;;4333:90;4157:276;;4111:322;4511:1;:9;;4516:4;4511:9;:40;;;;-1:-1:-1;4536:15:8;;4524:9;:5;4532:1;4524:9;:::i;:::-;:27;4511:40;4507:551;;;4567:8;4584;4593:9;:5;4601:1;4593:9;:::i;:::-;4584:19;;;;;;;;:::i;:::-;;;;;;;;-1:-1:-1;4618:8:8;4635;4644:9;:5;4652:1;4644:9;:::i;:::-;4635:19;;;;;;;;:::i;:::-;;;;;;;;-1:-1:-1;4669:8:8;4686;4695:9;:5;4703:1;4695:9;:::i;:::-;4686:19;;;;;;;;:::i;:::-;;;;;;;;-1:-1:-1;4817:4:8;4680:26;4811:10;;;:24;;;;;4825:2;:10;;4831:4;4825:10;4811:24;:54;;;;;4846:4;4840:2;:10;;;;:24;;;;;4860:4;4854:2;:10;;;;4840:24;4810:143;;;;4914:2;:10;;4920:4;4914:10;:24;;;;;4928:2;:10;;4934:4;4928:10;4914:24;:38;;;;;4942:2;:10;;4948:4;4942:10;4914:38;4789:259;;;5029:4;5022:11;;;;;;;;4789:259;4553:505;;;4507:551;5124:1;:9;;5129:4;5124:9;:40;;;;-1:-1:-1;5149:15:8;;5137:9;:5;5145:1;5137:9;:::i;:::-;:27;5124:40;5120:246;;;5180:8;5197;5206:9;:5;5214:1;5206:9;:::i;:::-;5197:19;;;;;;;;:::i;:::-;;;;;;;;-1:-1:-1;5231:8:8;5248;5257:9;:5;5265:1;5257:9;:::i;:::-;5248:19;;;;;;;;:::i;:::-;;;;;;;;-1:-1:-1;5292:4:8;5242:26;5286:10;;;:24;;;;;5300:2;:10;;5306:4;5300:10;5286:24;5282:74;;;5337:4;5330:11;;;;;;;5282:74;5166:200;;5120:246;5437:1;:9;;5442:4;5437:9;:40;;;;-1:-1:-1;5462:15:8;;5450:9;:5;5458:1;5450:9;:::i;:::-;:27;5437:40;5433:246;;;5493:8;5510;5519:9;:5;5527:1;5519:9;:::i;:::-;5510:19;;;;;;;;:::i;:::-;;;;;;;;-1:-1:-1;5544:8:8;5561;5570:9;:5;5578:1;5570:9;:::i;:::-;5561:19;;;;;;;;:::i;:::-;;;;;;;;-1:-1:-1;5605:4:8;5555:26;5599:10;;;:24;;;;;5613:2;:10;;5619:4;5613:10;5599:24;5595:74;;;5650:4;5643:11;;;;;;;5595:74;5479:200;;5433:246;5802:1;:9;;5807:4;5802:9;:40;;;;-1:-1:-1;5827:15:8;;5815:9;:5;5823:1;5815:9;:::i;:::-;:27;5802:40;:71;;;;-1:-1:-1;5846:8:8;5855:9;:5;5863:1;5855:9;:::i;:::-;5846:19;;;;;;;;:::i;:::-;;;;;;-1:-1:-1;;;;;;5846:19:8;-1:-1:-1;;;5846:27:8;5802:71;:102;;;;-1:-1:-1;;;;5877:8:8;5886:9;:5;5894:1;5886:9;:::i;:::-;5877:19;;;;;;;;:::i;:::-;;;;;-1:-1:-1;;;;;;5877:19:8;:27;;5802:102;:149;;;;-1:-1:-1;;;;5924:8:8;5933:9;:5;5941:1;5933:9;:::i;:::-;5924:19;;;;;;;;:::i;:::-;;;;;-1:-1:-1;;;;;;5924:19:8;:27;;5802:149;5785:213;;;5983:4;5976:11;;;;;5785:213;-1:-1:-1;6015:5:8;;3760:2267;-1:-1:-1;;;3760:2267:8:o;3408:274::-;3496:4;3533:8;3542:5;3533:15;;;;;;;;:::i;:::-;;;;;;-1:-1:-1;;;;;;3533:15:8;-1:-1:-1;;;3533:23:8;:54;;;;-1:-1:-1;3572:15:8;;3560:9;:5;3568:1;3560:9;:::i;:::-;:27;3533:54;:85;;;;-1:-1:-1;3591:8:8;3600:9;:5;3608:1;3600:9;:::i;:::-;3591:19;;;;;;;;:::i;:::-;;;;;;-1:-1:-1;;;;;;3591:19:8;-1:-1:-1;;;3591:27:8;3533:85;:132;;;;-1:-1:-1;3638:8:8;3647:9;:5;3655:1;3647:9;:::i;:::-;3638:19;;;;;;;;:::i;:::-;;;;;;-1:-1:-1;;;;;;3638:19:8;-1:-1:-1;;;3638:27:8;3533:132;3512:163;3408:274;-1:-1:-1;;;3408:274:8:o;6127:276::-;6217:4;6254:8;6263:5;6254:15;;;;;;;;:::i;:::-;;;;;;-1:-1:-1;;;;;;6254:15:8;-1:-1:-1;;;6254:23:8;:54;;;;-1:-1:-1;6293:15:8;;6281:9;:5;6289:1;6281:9;:::i;:::-;:27;6254:54;:85;;;;-1:-1:-1;6312:8:8;6321:9;:5;6329:1;6321:9;:::i;:::-;6312:19;;;;;;;;:::i;:::-;;;;;;-1:-1:-1;;;;;;6312:19:8;-1:-1:-1;;;6312:27:8;6254:85;:132;;;;-1:-1:-1;6359:8:8;6368:9;:5;6376:1;6368:9;:::i;:::-;6359:19;;;;;;;;:::i;:::-;;;;;;-1:-1:-1;;;;;;6359:19:8;-1:-1:-1;;;6359:27:8;;6127:276;-1:-1:-1;;;6127:276:8:o;14:348:9:-;66:8;76:6;130:3;123:4;115:6;111:17;107:27;97:55;;148:1;145;138:12;97:55;-1:-1:-1;171:20:9;;214:18;203:30;;200:50;;;246:1;243;236:12;200:50;283:4;275:6;271:17;259:29;;335:3;328:4;319:6;311;307:19;303:30;300:39;297:59;;;352:1;349;342:12;297:59;14:348;;;;;:::o;367:645::-;456:6;464;472;480;533:2;521:9;512:7;508:23;504:32;501:52;;;549:1;546;539:12;501:52;589:9;576:23;622:18;614:6;611:30;608:50;;;654:1;651;644:12;608:50;693:59;744:7;735:6;724:9;720:22;693:59;:::i;:::-;771:8;;667:85;;-1:-1:-1;875:2:9;860:18;;847:32;;976:2;961:18;948:32;;-1:-1:-1;367:645:9;-1:-1:-1;;;;367:645:9:o;1315:226::-;1374:6;1427:2;1415:9;1406:7;1402:23;1398:32;1395:52;;;1443:1;1440;1433:12;1395:52;-1:-1:-1;1488:23:9;;1315:226;-1:-1:-1;1315:226:9:o;1754:808::-;1864:6;1872;1880;1888;1896;1949:3;1937:9;1928:7;1924:23;1920:33;1917:53;;;1966:1;1963;1956:12;1917:53;2006:9;1993:23;2039:18;2031:6;2028:30;2025:50;;;2071:1;2068;2061:12;2025:50;2110:59;2161:7;2152:6;2141:9;2137:22;2110:59;:::i;:::-;2188:8;;-1:-1:-1;2084:85:9;-1:-1:-1;;2292:2:9;2277:18;;2264:32;;-1:-1:-1;2393:2:9;2378:18;;2365:32;;-1:-1:-1;2475:2:9;2460:18;;2447:32;2510:1;2498:14;;2488:42;;2526:1;2523;2516:12;2488:42;2549:7;2539:17;;;1754:808;;;;;;;;:::o;2752:286::-;2811:6;2864:2;2852:9;2843:7;2839:23;2835:32;2832:52;;;2880:1;2877;2870:12;2832:52;2906:23;;-1:-1:-1;;;;;2958:31:9;;2948:42;;2938:70;;3004:1;3001;2994:12;3225:127;3286:10;3281:3;3277:20;3274:1;3267:31;3317:4;3314:1;3307:15;3341:4;3338:1;3331:15;3539:127;3600:10;3595:3;3591:20;3588:1;3581:31;3631:4;3628:1;3621:15;3655:4;3652:1;3645:15;3671:168;3744:9;;;3775;;3792:15;;;3786:22;;3772:37;3762:71;;3813:18;;:::i;3844:217::-;3884:1;3910;3900:132;;3954:10;3949:3;3945:20;3942:1;3935:31;3989:4;3986:1;3979:15;4017:4;4014:1;4007:15;3900:132;-1:-1:-1;4046:9:9;;3844:217::o;4328:175::-;4406:13;;4459:18;4448:30;;4438:41;;4428:69;;4493:1;4490;4483:12;4428:69;4328:175;;;:::o;4508:164::-;4585:13;;4638:1;4627:20;;;4617:31;;4607:59;;4662:1;4659;4652:12;4677:964;4770:6;4830:3;4818:9;4809:7;4805:23;4801:33;4846:2;4843:22;;;4861:1;4858;4851:12;4843:22;-1:-1:-1;4910:2:9;4904:9;4952:3;4940:16;;4986:18;4971:34;;5007:22;;;4968:62;4965:185;;;5072:10;5067:3;5063:20;5060:1;5053:31;5107:4;5104:1;5097:15;5135:4;5132:1;5125:15;4965:185;5166:2;5159:22;5222:16;;5278:1;5267:20;;;5257:31;;5247:59;;5302:1;5299;5292:12;5247:59;5315:21;;5369:48;5413:2;5398:18;;5369:48;:::i;:::-;5364:2;5356:6;5352:15;5345:73;5451:47;5494:2;5483:9;5479:18;5451:47;:::i;:::-;5446:2;5434:15;;5427:72;5565:2;5550:18;;;5544:25;5585:15;;;5578:32;;;;-1:-1:-1;5438:6:9;4677:964;-1:-1:-1;4677:964:9:o;5646:237::-;5684:7;5761:1;5758;5747:16;5743:1;5740;5729:16;5725:39;5798:11;5795:1;5784:26;5773:37;;5841:11;5832:7;5829:24;5819:58;;5857:18;;:::i;5888:375::-;5976:1;5994:5;6008:249;6029:1;6019:8;6016:15;6008:249;;;6079:4;6074:3;6070:14;6064:4;6061:24;6058:50;;;6088:18;;:::i;:::-;6138:1;6128:8;6124:16;6121:49;;;6152:16;;;;6121:49;6235:1;6231:16;;;;;6191:15;;6008:249;;6268:902;6317:5;6347:8;6337:80;;-1:-1:-1;6388:1:9;6402:5;;6337:80;6436:4;6426:76;;-1:-1:-1;6473:1:9;6487:5;;6426:76;6518:4;6536:1;6531:59;;;;6604:1;6599:174;;;;6511:262;;6531:59;6561:1;6552:10;;6575:5;;;6599:174;6636:3;6626:8;6623:17;6620:43;;;6643:18;;:::i;:::-;-1:-1:-1;;6699:1:9;6685:16;;6758:5;;6511:262;;6857:2;6847:8;6844:16;6838:3;6832:4;6829:13;6825:36;6819:2;6809:8;6806:16;6801:2;6795:4;6792:12;6788:35;6785:77;6782:203;;;-1:-1:-1;6894:19:9;;;6970:5;;6782:203;7017:42;-1:-1:-1;;7042:8:9;7036:4;7017:42;:::i;:::-;7095:6;7091:1;7087:6;7083:19;7074:7;7071:32;7068:58;;;7106:18;;:::i;:::-;7144:20;;6268:902;-1:-1:-1;;;6268:902:9:o;7175:140::-;7233:5;7262:47;7303:4;7293:8;7289:19;7283:4;7262:47;:::i;7320:125::-;7385:9;;;7406:10;;;7403:36;;;7419:18;;:::i;7450:135::-;7489:3;7510:17;;;7507:43;;7530:18;;:::i;:::-;-1:-1:-1;7577:1:9;7566:13;;7450:135::o;7590:127::-;7651:10;7646:3;7642:20;7639:1;7632:31;7682:4;7679:1;7672:15;7706:4;7703:1;7696:15
Swarm Source
ipfs://ec6bcb0c686ecb4d41ba403c5d12ebbae2354682e6f945689060e52cfb228705
Loading...
Loading
Loading...
Loading
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.