From c642dfabc71e01b0c00cc3325591d625a91ae876 Mon Sep 17 00:00:00 2001 From: Iva Brajer Date: Tue, 26 Mar 2024 17:20:05 +0100 Subject: [PATCH 1/7] Set LINK native feed in VRFV2PlusWrapper to immutable * LINK native feed set to immutable, removed setter function * both LINK token and LINK native feed can be set to zero addresses * fixed Foundry tests --- .../src/v0.8/vrf/dev/VRFV2PlusWrapper.sol | 34 +-- .../vrf/dev/interfaces/IVRFV2PlusWrapper.sol | 1 - .../v0.8/foundry/vrf/VRFV2PlusWrapper.t.sol | 25 +-- .../vrfv2plus_wrapper/vrfv2plus_wrapper.go | 195 +++--------------- ...rapper-dependency-versions-do-not-edit.txt | 2 +- 5 files changed, 42 insertions(+), 215 deletions(-) diff --git a/contracts/src/v0.8/vrf/dev/VRFV2PlusWrapper.sol b/contracts/src/v0.8/vrf/dev/VRFV2PlusWrapper.sol index c90d6e737f7..324099903d5 100644 --- a/contracts/src/v0.8/vrf/dev/VRFV2PlusWrapper.sol +++ b/contracts/src/v0.8/vrf/dev/VRFV2PlusWrapper.sol @@ -30,6 +30,7 @@ contract VRFV2PlusWrapper is ConfirmedOwner, TypeAndVersionInterface, VRFConsume // solhint-disable-next-line chainlink-solidity/prefix-immutable-variables-with-i uint256 public immutable SUBSCRIPTION_ID; LinkTokenInterface internal immutable i_link; + AggregatorV3Interface public immutable LINK_NATIVE_FEED; error LinkAlreadySet(); error LinkDiscountTooHigh(uint32 flatFeeLinkDiscountPPM, uint32 flatFeeNativePPM); @@ -76,17 +77,13 @@ contract VRFV2PlusWrapper is ConfirmedOwner, TypeAndVersionInterface, VRFConsume /* Storage Slot 4: END */ /* Storage Slot 5: BEGIN */ + /// @dev padding to make sure that the next variable is at a new storage slot + uint64 private s_padding; + // s_stalenessSeconds is the number of seconds before we consider the feed price to be stale and // fallback to fallbackWeiPerUnitLink. uint32 private s_stalenessSeconds; - AggregatorV3Interface public s_linkNativeFeed; - - /// @dev padding to make sure that the next variable is at a new storage slot - uint64 private s_padding; - /* Storage Slot 5: END */ - - /* Storage Slot 6: BEGIN */ // s_wrapperGasOverhead reflects the gas overhead of the wrapper's fulfillRandomWords // function. The cost for this gas is passed to the user. uint32 private s_wrapperGasOverhead; @@ -114,7 +111,9 @@ contract VRFV2PlusWrapper is ConfirmedOwner, TypeAndVersionInterface, VRFConsume // s_fulfillmentFlatFeeLinkDiscountPPM is the flat fee discount in millionths of native that VRFCoordinatorV2 // charges for link payment. uint32 private s_fulfillmentFlatFeeLinkDiscountPPM; + /* Storage Slot 5: END */ + /* Storage Slot 6: BEGIN */ // s_coordinatorNativePremiumPercentage is the coordinator's premium ratio in percentage for native payment. // For example, a value of 0 indicates no premium. A value of 15 indicates a 15 percent premium. // Wrapper has no premium. This premium is for VRFCoordinator. @@ -125,7 +124,7 @@ contract VRFV2PlusWrapper is ConfirmedOwner, TypeAndVersionInterface, VRFConsume // Wrapper has no premium. This premium is for VRFCoordinator. uint8 private s_coordinatorLinkPremiumPercentage; - // 10 bytes left + // 30 bytes left /* Storage Slot 6: END */ struct Callback { @@ -147,14 +146,9 @@ contract VRFV2PlusWrapper is ConfirmedOwner, TypeAndVersionInterface, VRFConsume address _coordinator, uint256 _subId ) VRFConsumerBaseV2Plus(_coordinator) { - if (_link == address(0)) { - revert ZeroAddress(); - } i_link = LinkTokenInterface(_link); + LINK_NATIVE_FEED = AggregatorV3Interface(_linkNativeFeed); - if (_linkNativeFeed != address(0)) { - s_linkNativeFeed = AggregatorV3Interface(_linkNativeFeed); - } if (_subId == 0) { revert SubscriptionIdMissing(); } @@ -170,16 +164,6 @@ contract VRFV2PlusWrapper is ConfirmedOwner, TypeAndVersionInterface, VRFConsume SUBSCRIPTION_ID = _subId; } - /** - * @notice set link native feed to be used by this wrapper - * @param linkNativeFeed address of the link native feed - */ - function setLinkNativeFeed(address linkNativeFeed) external onlyOwner { - s_linkNativeFeed = AggregatorV3Interface(linkNativeFeed); - - emit LinkNativeFeedSet(linkNativeFeed); - } - /** * @notice setFulfillmentTxSize sets the size of the fulfillment transaction in bytes. * @param size is the size of the fulfillment transaction in bytes. @@ -602,7 +586,7 @@ contract VRFV2PlusWrapper is ConfirmedOwner, TypeAndVersionInterface, VRFConsume function _getFeedData() private view returns (int256 weiPerUnitLink, bool isFeedStale) { uint32 stalenessSeconds = s_stalenessSeconds; uint256 timestamp; - (, weiPerUnitLink, , timestamp, ) = s_linkNativeFeed.latestRoundData(); + (, weiPerUnitLink, , timestamp, ) = LINK_NATIVE_FEED.latestRoundData(); // solhint-disable-next-line not-rely-on-time isFeedStale = stalenessSeconds > 0 && stalenessSeconds < block.timestamp - timestamp; if (isFeedStale) { diff --git a/contracts/src/v0.8/vrf/dev/interfaces/IVRFV2PlusWrapper.sol b/contracts/src/v0.8/vrf/dev/interfaces/IVRFV2PlusWrapper.sol index a8e54b543b3..e7018153fc2 100644 --- a/contracts/src/v0.8/vrf/dev/interfaces/IVRFV2PlusWrapper.sol +++ b/contracts/src/v0.8/vrf/dev/interfaces/IVRFV2PlusWrapper.sol @@ -2,7 +2,6 @@ pragma solidity ^0.8.0; interface IVRFV2PlusWrapper { - event LinkNativeFeedSet(address linkNativeFeed); event FulfillmentTxSizeSet(uint32 size); event ConfigSet( uint32 wrapperGasOverhead, diff --git a/contracts/test/v0.8/foundry/vrf/VRFV2PlusWrapper.t.sol b/contracts/test/v0.8/foundry/vrf/VRFV2PlusWrapper.t.sol index e22e6ad6537..0e422c0fc70 100644 --- a/contracts/test/v0.8/foundry/vrf/VRFV2PlusWrapper.t.sol +++ b/contracts/test/v0.8/foundry/vrf/VRFV2PlusWrapper.t.sol @@ -51,6 +51,8 @@ contract VRFV2PlusWrapperTest is BaseTest { address(s_testCoordinator), uint256(s_wrapperSubscriptionId) ); + assertEq(address(s_linkToken), address(s_wrapper.link())); + assertEq(address(s_linkNativeFeed), address(s_wrapper.LINK_NATIVE_FEED())); // Add wrapper as a consumer to the wrapper's subscription. s_testCoordinator.addConsumer(uint256(s_wrapperSubscriptionId), address(s_wrapper)); @@ -156,14 +158,14 @@ contract VRFV2PlusWrapperTest is BaseTest { function testVRFV2PlusWrapperZeroAddress() public { vm.expectRevert(VRFConsumerBaseV2Plus.ZeroAddress.selector); - new VRFV2PlusWrapper(address(s_linkToken), address(0), address(0), uint256(0)); + new VRFV2PlusWrapper(address(s_linkToken), address(s_linkNativeFeed), address(0), uint256(0)); } function testCreationOfANewVRFV2PlusWrapper() public { // second wrapper contract will simply add itself to the same subscription VRFV2PlusWrapper nextWrapper = new VRFV2PlusWrapper( address(s_linkToken), - address(0), + address(s_linkNativeFeed), address(s_testCoordinator), s_wrapperSubscriptionId ); @@ -172,27 +174,12 @@ contract VRFV2PlusWrapperTest is BaseTest { function testVRFV2PlusWrapperWithZeroSubscriptionId() public { vm.expectRevert(VRFV2PlusWrapper.SubscriptionIdMissing.selector); - new VRFV2PlusWrapper(address(s_linkToken), address(0), address(s_testCoordinator), uint256(0)); + new VRFV2PlusWrapper(address(s_linkToken), address(s_linkNativeFeed), address(s_testCoordinator), uint256(0)); } function testVRFV2PlusWrapperWithInvalidSubscriptionId() public { vm.expectRevert(SubscriptionAPI.InvalidSubscription.selector); - new VRFV2PlusWrapper(address(s_linkToken), address(0), address(s_testCoordinator), uint256(123456)); - } - - function testSetLinkAndLinkNativeFeed() public { - VRFV2PlusWrapper wrapper = new VRFV2PlusWrapper( - address(s_linkToken), - address(0), - address(s_testCoordinator), - uint256(s_wrapperSubscriptionId) - ); - - // Set LINK/Native feed on wrapper. - vm.expectEmit(false, false, false, true, address(wrapper)); - emit LinkNativeFeedSet(address(s_linkNativeFeed)); - wrapper.setLinkNativeFeed(address(s_linkNativeFeed)); - assertEq(address(wrapper.s_linkNativeFeed()), address(s_linkNativeFeed)); + new VRFV2PlusWrapper(address(s_linkToken), address(s_linkNativeFeed), address(s_testCoordinator), uint256(123456)); } function testSetFulfillmentTxSize() public { diff --git a/core/gethwrappers/generated/vrfv2plus_wrapper/vrfv2plus_wrapper.go b/core/gethwrappers/generated/vrfv2plus_wrapper/vrfv2plus_wrapper.go index 9a2f6a03db9..ad05f35e5f7 100644 --- a/core/gethwrappers/generated/vrfv2plus_wrapper/vrfv2plus_wrapper.go +++ b/core/gethwrappers/generated/vrfv2plus_wrapper/vrfv2plus_wrapper.go @@ -31,8 +31,8 @@ var ( ) var VRFV2PlusWrapperMetaData = &bind.MetaData{ - ABI: "[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_link\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_linkNativeFeed\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_coordinator\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_subId\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"FailedToTransferLink\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint16\",\"name\":\"expectedMinimumLength\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"actualLength\",\"type\":\"uint16\"}],\"name\":\"IncorrectExtraArgsLength\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"premiumPercentage\",\"type\":\"uint8\"},{\"internalType\":\"uint8\",\"name\":\"max\",\"type\":\"uint8\"}],\"name\":\"InvalidPremiumPercentage\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"LINKPaymentInRequestRandomWordsInNative\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"LinkAlreadySet\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"flatFeeLinkDiscountPPM\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"flatFeeNativePPM\",\"type\":\"uint32\"}],\"name\":\"LinkDiscountTooHigh\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NativePaymentInOnTokenTransfer\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"have\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"want\",\"type\":\"address\"}],\"name\":\"OnlyCoordinatorCanFulfill\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"have\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"coordinator\",\"type\":\"address\"}],\"name\":\"OnlyOwnerOrCoordinator\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SubscriptionIdMissing\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ZeroAddress\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint32\",\"name\":\"wrapperGasOverhead\",\"type\":\"uint32\"},{\"indexed\":false,\"internalType\":\"uint32\",\"name\":\"coordinatorGasOverhead\",\"type\":\"uint32\"},{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"coordinatorNativePremiumPercentage\",\"type\":\"uint8\"},{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"coordinatorLinkPremiumPercentage\",\"type\":\"uint8\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"keyHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"maxNumWords\",\"type\":\"uint8\"},{\"indexed\":false,\"internalType\":\"uint32\",\"name\":\"stalenessSeconds\",\"type\":\"uint32\"},{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"fallbackWeiPerUnitLink\",\"type\":\"int256\"},{\"indexed\":false,\"internalType\":\"uint32\",\"name\":\"fulfillmentFlatFeeNativePPM\",\"type\":\"uint32\"},{\"indexed\":false,\"internalType\":\"uint32\",\"name\":\"fulfillmentFlatFeeLinkDiscountPPM\",\"type\":\"uint32\"}],\"name\":\"ConfigSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"vrfCoordinator\",\"type\":\"address\"}],\"name\":\"CoordinatorSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[],\"name\":\"Disabled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[],\"name\":\"Enabled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"requestId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"fallbackWeiPerUnitLink\",\"type\":\"int256\"}],\"name\":\"FallbackWeiPerUnitLinkUsed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint32\",\"name\":\"size\",\"type\":\"uint32\"}],\"name\":\"FulfillmentTxSizeSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"linkNativeFeed\",\"type\":\"address\"}],\"name\":\"LinkNativeFeedSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"NativeWithdrawn\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"OwnershipTransferRequested\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"Withdrawn\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"requestId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"consumer\",\"type\":\"address\"}],\"name\":\"WrapperFulfillmentFailed\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"SUBSCRIPTION_ID\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"acceptOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"_callbackGasLimit\",\"type\":\"uint32\"}],\"name\":\"calculateRequestPrice\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"_callbackGasLimit\",\"type\":\"uint32\"}],\"name\":\"calculateRequestPriceNative\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"extraArgs\",\"type\":\"bytes\"},{\"internalType\":\"bool\",\"name\":\"isLinkMode\",\"type\":\"bool\"}],\"name\":\"checkPaymentMode\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"disable\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"enable\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"_callbackGasLimit\",\"type\":\"uint32\"},{\"internalType\":\"uint256\",\"name\":\"_requestGasPriceWei\",\"type\":\"uint256\"}],\"name\":\"estimateRequestPrice\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"_callbackGasLimit\",\"type\":\"uint32\"},{\"internalType\":\"uint256\",\"name\":\"_requestGasPriceWei\",\"type\":\"uint256\"}],\"name\":\"estimateRequestPriceNative\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getConfig\",\"outputs\":[{\"internalType\":\"int256\",\"name\":\"fallbackWeiPerUnitLink\",\"type\":\"int256\"},{\"internalType\":\"uint32\",\"name\":\"stalenessSeconds\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"fulfillmentFlatFeeNativePPM\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"fulfillmentFlatFeeLinkDiscountPPM\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"wrapperGasOverhead\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"coordinatorGasOverhead\",\"type\":\"uint32\"},{\"internalType\":\"uint8\",\"name\":\"wrapperNativePremiumPercentage\",\"type\":\"uint8\"},{\"internalType\":\"uint8\",\"name\":\"wrapperLinkPremiumPercentage\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"keyHash\",\"type\":\"bytes32\"},{\"internalType\":\"uint8\",\"name\":\"maxNumWords\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"lastRequestId\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"link\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_sender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"_data\",\"type\":\"bytes\"}],\"name\":\"onTokenTransfer\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"requestId\",\"type\":\"uint256\"},{\"internalType\":\"uint256[]\",\"name\":\"randomWords\",\"type\":\"uint256[]\"}],\"name\":\"rawFulfillRandomWords\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"_callbackGasLimit\",\"type\":\"uint32\"},{\"internalType\":\"uint16\",\"name\":\"_requestConfirmations\",\"type\":\"uint16\"},{\"internalType\":\"uint32\",\"name\":\"_numWords\",\"type\":\"uint32\"},{\"internalType\":\"bytes\",\"name\":\"extraArgs\",\"type\":\"bytes\"}],\"name\":\"requestRandomWordsInNative\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"requestId\",\"type\":\"uint256\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"s_callbacks\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"callbackAddress\",\"type\":\"address\"},{\"internalType\":\"uint32\",\"name\":\"callbackGasLimit\",\"type\":\"uint32\"},{\"internalType\":\"uint64\",\"name\":\"requestGasPrice\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"s_configured\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"s_disabled\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"s_fulfillmentTxSizeBytes\",\"outputs\":[{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"s_linkNativeFeed\",\"outputs\":[{\"internalType\":\"contractAggregatorV3Interface\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"s_vrfCoordinator\",\"outputs\":[{\"internalType\":\"contractIVRFCoordinatorV2Plus\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"_wrapperGasOverhead\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"_coordinatorGasOverhead\",\"type\":\"uint32\"},{\"internalType\":\"uint8\",\"name\":\"_coordinatorNativePremiumPercentage\",\"type\":\"uint8\"},{\"internalType\":\"uint8\",\"name\":\"_coordinatorLinkPremiumPercentage\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"_keyHash\",\"type\":\"bytes32\"},{\"internalType\":\"uint8\",\"name\":\"_maxNumWords\",\"type\":\"uint8\"},{\"internalType\":\"uint32\",\"name\":\"_stalenessSeconds\",\"type\":\"uint32\"},{\"internalType\":\"int256\",\"name\":\"_fallbackWeiPerUnitLink\",\"type\":\"int256\"},{\"internalType\":\"uint32\",\"name\":\"_fulfillmentFlatFeeNativePPM\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"_fulfillmentFlatFeeLinkDiscountPPM\",\"type\":\"uint32\"}],\"name\":\"setConfig\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_vrfCoordinator\",\"type\":\"address\"}],\"name\":\"setCoordinator\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"size\",\"type\":\"uint32\"}],\"name\":\"setFulfillmentTxSize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"linkNativeFeed\",\"type\":\"address\"}],\"name\":\"setLinkNativeFeed\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"typeAndVersion\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_recipient\",\"type\":\"address\"}],\"name\":\"withdraw\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_recipient\",\"type\":\"address\"}],\"name\":\"withdrawNative\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", - Bin: "0x60c06040526007805463ffffffff60201b1916650244000000001790553480156200002957600080fd5b5060405162003ca138038062003ca18339810160408190526200004c91620002ed565b813380600081620000a45760405162461bcd60e51b815260206004820152601860248201527f43616e6e6f7420736574206f776e657220746f207a65726f000000000000000060448201526064015b60405180910390fd5b600080546001600160a01b0319166001600160a01b0384811691909117909155811615620000d757620000d78162000225565b5050506001600160a01b038116620001025760405163d92e233d60e01b815260040160405180910390fd5b600280546001600160a01b0319166001600160a01b0392831617905584166200013e5760405163d92e233d60e01b815260040160405180910390fd5b6001600160a01b0380851660a0528316156200017a5760068054600160201b600160c01b0319166401000000006001600160a01b038616021790555b806000036200019c5760405163a81c0bef60e01b815260040160405180910390fd5b60025460405163dc311dd360e01b8152600481018390526001600160a01b039091169063dc311dd390602401600060405180830381865afa158015620001e6573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526200021091908101906200036d565b50505060809290925250620004969350505050565b336001600160a01b038216036200027f5760405162461bcd60e51b815260206004820152601760248201527f43616e6e6f74207472616e7366657220746f2073656c6600000000000000000060448201526064016200009b565b600180546001600160a01b0319166001600160a01b0383811691821790925560008054604051929316917fed8889f560326eb138920d842192f0eb3dd22b4f139c87a2c57538e05bae12789190a350565b80516001600160a01b0381168114620002e857600080fd5b919050565b600080600080608085870312156200030457600080fd5b6200030f85620002d0565b93506200031f60208601620002d0565b92506200032f60408601620002d0565b6060959095015193969295505050565b80516001600160601b0381168114620002e857600080fd5b634e487b7160e01b600052604160045260246000fd5b600080600080600060a086880312156200038657600080fd5b62000391866200033f565b94506020620003a28188016200033f565b60408801519095506001600160401b038082168214620003c157600080fd5b819550620003d260608a01620002d0565b94506080890151915080821115620003e957600080fd5b818901915089601f830112620003fe57600080fd5b81518181111562000413576200041362000357565b8060051b604051601f19603f830116810181811085821117156200043b576200043b62000357565b60405291825284820192508381018501918c8311156200045a57600080fd5b938501935b8285101562000483576200047385620002d0565b845293850193928501926200045f565b8096505050505050509295509295909350565b60805160a0516137c2620004df6000396000818161029601528181610f2901528181610ff80152611b520152600081816101e4015281816117a80152611d3801526137c26000f3fe6080604052600436106101cd5760003560e01c80637fb5d19d116100f7578063a608a1e111610095578063f254bdc711610064578063f254bdc71461074f578063f2fde38b14610784578063fc2a88c3146107a4578063fc2dbebc146107ba57600080fd5b8063a608a1e1146105d2578063bf17e55914610605578063c3f909d414610625578063cdd8d8851461071557600080fd5b80639cfc058e116100d15780639cfc058e1461055d5780639eccacf614610570578063a3907d711461059d578063a4c0ed36146105b257600080fd5b80637fb5d19d146104f25780638da5cb5b146105125780638ea981171461053d57600080fd5b80633255c4561161016f57806351cff8d91161013e57806351cff8d91461045b57806357a8070a1461047b57806365059654146104bd57806379ba5097146104dd57600080fd5b80633255c456146103305780634306d3541461035057806348baa1c5146103705780634b1609351461043b57600080fd5b80631c4695f4116101ab5780631c4695f4146102875780631fe543e3146102db5780632f2770db146102fb5780632f622e6b1461031057600080fd5b8063030932bb146101d2578063181f5a771461021957806318b6f4c814610265575b600080fd5b3480156101de57600080fd5b506102067f000000000000000000000000000000000000000000000000000000000000000081565b6040519081526020015b60405180910390f35b34801561022557600080fd5b50604080518082018252601281527f56524656325772617070657220312e302e300000000000000000000000000000602082015290516102109190612e59565b34801561027157600080fd5b50610285610280366004612f86565b6107da565b005b34801561029357600080fd5b507f00000000000000000000000000000000000000000000000000000000000000005b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610210565b3480156102e757600080fd5b506102856102f6366004612fd8565b610962565b34801561030757600080fd5b506102856109df565b34801561031c57600080fd5b5061028561032b3660046130ae565b610a52565b34801561033c57600080fd5b5061020661034b3660046130dd565b610b79565b34801561035c57600080fd5b5061020661036b366004613107565b610c9f565b34801561037c57600080fd5b506103fa61038b366004613122565b60086020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff81169074010000000000000000000000000000000000000000810463ffffffff16907801000000000000000000000000000000000000000000000000900467ffffffffffffffff1683565b6040805173ffffffffffffffffffffffffffffffffffffffff909416845263ffffffff909216602084015267ffffffffffffffff1690820152606001610210565b34801561044757600080fd5b50610206610456366004613107565b610dd3565b34801561046757600080fd5b506102856104763660046130ae565b610ef0565b34801561048757600080fd5b506002546104ad9074010000000000000000000000000000000000000000900460ff1681565b6040519015158152602001610210565b3480156104c957600080fd5b506102856104d83660046130ae565b6110f1565b3480156104e957600080fd5b5061028561117d565b3480156104fe57600080fd5b5061020661050d3660046130dd565b61127a565b34801561051e57600080fd5b5060005473ffffffffffffffffffffffffffffffffffffffff166102b6565b34801561054957600080fd5b506102856105583660046130ae565b6113ad565b61020661056b366004613196565b611531565b34801561057c57600080fd5b506002546102b69073ffffffffffffffffffffffffffffffffffffffff1681565b3480156105a957600080fd5b506102856119d5565b3480156105be57600080fd5b506102856105cd36600461320c565b611a30565b3480156105de57600080fd5b506002546104ad907501000000000000000000000000000000000000000000900460ff1681565b34801561061157600080fd5b50610285610620366004613107565b611f96565b34801561063157600080fd5b506005546006546007546003546002546040805195865263ffffffff94851660208701526c010000000000000000000000008404851690860152700100000000000000000000000000000000830484166060860152838316608086015268010000000000000000830490931660a085015260ff740100000000000000000000000000000000000000008304811660c08601527501000000000000000000000000000000000000000000909204821660e08501526101008401527601000000000000000000000000000000000000000000009091041661012082015261014001610210565b34801561072157600080fd5b5060075461073a90640100000000900463ffffffff1681565b60405163ffffffff9091168152602001610210565b34801561075b57600080fd5b506006546102b690640100000000900473ffffffffffffffffffffffffffffffffffffffff1681565b34801561079057600080fd5b5061028561079f3660046130ae565b61200b565b3480156107b057600080fd5b5061020660045481565b3480156107c657600080fd5b506102856107d5366004613277565b61201f565b815160000361081e578061081a576040517f6b81746e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5050565b8151602411156108785781516040517f51200dce00000000000000000000000000000000000000000000000000000000815261086f9160249160040161ffff92831681529116602082015260400190565b60405180910390fd5b60008260238151811061088d5761088d613323565b6020910101517fff00000000000000000000000000000000000000000000000000000000000000167f01000000000000000000000000000000000000000000000000000000000000001490508080156108e35750815b1561091a576040517f6048aa6800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80158015610926575081155b1561095d576040517f6b81746e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b505050565b60025473ffffffffffffffffffffffffffffffffffffffff1633146109d5576002546040517f1cf993f400000000000000000000000000000000000000000000000000000000815233600482015273ffffffffffffffffffffffffffffffffffffffff909116602482015260440161086f565b61081a82826122f0565b6109e76124d3565b600280547fffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff1675010000000000000000000000000000000000000000001790556040517f75884cdadc4a89e8b545db800057f06ec7f5338a08183c7ba515f2bfdd9fe1e190600090a1565b610a5a6124d3565b604051479060009073ffffffffffffffffffffffffffffffffffffffff84169083908381818185875af1925050503d8060008114610ab4576040519150601f19603f3d011682016040523d82523d6000602084013e610ab9565b606091505b5050905080610b24576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f6661696c656420746f207769746864726177206e617469766500000000000000604482015260640161086f565b8273ffffffffffffffffffffffffffffffffffffffff167fc303ca808382409472acbbf899c316cf439f409f6584aae22df86dfa3c9ed50483604051610b6c91815260200190565b60405180910390a2505050565b60025460009074010000000000000000000000000000000000000000900460ff16610c00576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f77726170706572206973206e6f7420636f6e6669677572656400000000000000604482015260640161086f565b6002547501000000000000000000000000000000000000000000900460ff1615610c86576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f777261707065722069732064697361626c656400000000000000000000000000604482015260640161086f565b610c968363ffffffff1683612556565b90505b92915050565b60025460009074010000000000000000000000000000000000000000900460ff16610d26576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f77726170706572206973206e6f7420636f6e6669677572656400000000000000604482015260640161086f565b6002547501000000000000000000000000000000000000000000900460ff1615610dac576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f777261707065722069732064697361626c656400000000000000000000000000604482015260640161086f565b6000610db6612651565b509050610dca8363ffffffff163a836127a4565b9150505b919050565b60025460009074010000000000000000000000000000000000000000900460ff16610e5a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f77726170706572206973206e6f7420636f6e6669677572656400000000000000604482015260640161086f565b6002547501000000000000000000000000000000000000000000900460ff1615610ee0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f777261707065722069732064697361626c656400000000000000000000000000604482015260640161086f565b610c998263ffffffff163a612556565b610ef86124d3565b6040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201526000907f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16906370a0823190602401602060405180830381865afa158015610f85573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fa99190613352565b6040517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8481166004830152602482018390529192507f00000000000000000000000000000000000000000000000000000000000000009091169063a9059cbb906044016020604051808303816000875af1158015611043573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611067919061336b565b61109d576040517f7c07fc4c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff167f7084f5476618d8e60b11ef0d7d3f06914655adb8793e28ff7f018d4c76d505d5826040516110e591815260200190565b60405180910390a25050565b6110f96124d3565b600680547fffffffffffffffff0000000000000000000000000000000000000000ffffffff1664010000000073ffffffffffffffffffffffffffffffffffffffff8416908102919091179091556040519081527fc252955f9bd8c6ea6e3cc712bbad31005d85cec90e73b147b4d6e8326242efdf906020015b60405180910390a150565b60015473ffffffffffffffffffffffffffffffffffffffff1633146111fe576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f4d7573742062652070726f706f736564206f776e657200000000000000000000604482015260640161086f565b60008054337fffffffffffffffffffffffff00000000000000000000000000000000000000008083168217845560018054909116905560405173ffffffffffffffffffffffffffffffffffffffff90921692909183917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a350565b60025460009074010000000000000000000000000000000000000000900460ff16611301576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f77726170706572206973206e6f7420636f6e6669677572656400000000000000604482015260640161086f565b6002547501000000000000000000000000000000000000000000900460ff1615611387576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f777261707065722069732064697361626c656400000000000000000000000000604482015260640161086f565b6000611391612651565b5090506113a58463ffffffff1684836127a4565b949350505050565b60005473ffffffffffffffffffffffffffffffffffffffff1633148015906113ed575060025473ffffffffffffffffffffffffffffffffffffffff163314155b15611471573361141260005473ffffffffffffffffffffffffffffffffffffffff1690565b6002546040517f061db9c100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9384166004820152918316602483015291909116604482015260640161086f565b73ffffffffffffffffffffffffffffffffffffffff81166114be576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600280547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527fd1a6a14209a385a964d036e404cb5cfb71f4000cdb03c9366292430787261be690602001611172565b60025460009074010000000000000000000000000000000000000000900460ff166115b8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f77726170706572206973206e6f7420636f6e6669677572656400000000000000604482015260640161086f565b6002547501000000000000000000000000000000000000000000900460ff161561163e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f777261707065722069732064697361626c656400000000000000000000000000604482015260640161086f565b61167d83838080601f016020809104026020016040519081016040528093929190818152602001838380828437600092018290525092506107da915050565b6000611688876128e4565b9050600061169c8863ffffffff163a612556565b905080341015611708576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f66656520746f6f206c6f77000000000000000000000000000000000000000000604482015260640161086f565b600254760100000000000000000000000000000000000000000000900460ff1663ffffffff87161115611797576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f6e756d576f72647320746f6f2068696768000000000000000000000000000000604482015260640161086f565b6040805160c08101825260035481527f0000000000000000000000000000000000000000000000000000000000000000602082015261ffff89169181019190915260075460009190606082019063ffffffff166117f4868d6133be565b6117fe91906133be565b63ffffffff1681526020018863ffffffff16815260200187878080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050509152506002546040517f9b1c385e00000000000000000000000000000000000000000000000000000000815291925073ffffffffffffffffffffffffffffffffffffffff1690639b1c385e906118a49084906004016133e2565b6020604051808303816000875af11580156118c3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118e79190613352565b6040805160608101825233815263ffffffff808d16602080840191825267ffffffffffffffff3a81168587019081526000888152600890935295909120935184549251955190911678010000000000000000000000000000000000000000000000000277ffffffffffffffffffffffffffffffffffffffffffffffff9590931674010000000000000000000000000000000000000000027fffffffffffffffff00000000000000000000000000000000000000000000000090921673ffffffffffffffffffffffffffffffffffffffff91909116171792909216919091179055935050505095945050505050565b6119dd6124d3565b600280547fffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff1690556040517fc0f961051f97b04c496472d11cb6170d844e4b2c9dfd3b602a4fa0139712d48490600090a1565b60025474010000000000000000000000000000000000000000900460ff16611ab4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f77726170706572206973206e6f7420636f6e6669677572656400000000000000604482015260640161086f565b6002547501000000000000000000000000000000000000000000900460ff1615611b3a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f777261707065722069732064697361626c656400000000000000000000000000604482015260640161086f565b3373ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001614611bd9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f6f6e6c792063616c6c61626c652066726f6d204c494e4b000000000000000000604482015260640161086f565b6000808080611bea8587018761343f565b9350935093509350611bfd8160016107da565b6000611c08856128e4565b9050600080611c15612651565b915091506000611c2c8863ffffffff163a856127a4565b9050808b1015611c98576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f66656520746f6f206c6f77000000000000000000000000000000000000000000604482015260640161086f565b600254760100000000000000000000000000000000000000000000900460ff1663ffffffff87161115611d27576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f6e756d576f72647320746f6f2068696768000000000000000000000000000000604482015260640161086f565b6040805160c08101825260035481527f0000000000000000000000000000000000000000000000000000000000000000602082015261ffff89169181019190915260075460009190606082019063ffffffff16611d84888d6133be565b611d8e91906133be565b63ffffffff908116825289166020820152604090810188905260025490517f9b1c385e00000000000000000000000000000000000000000000000000000000815291925060009173ffffffffffffffffffffffffffffffffffffffff90911690639b1c385e90611e029085906004016133e2565b6020604051808303816000875af1158015611e21573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e459190613352565b905060405180606001604052808f73ffffffffffffffffffffffffffffffffffffffff1681526020018b63ffffffff1681526020013a67ffffffffffffffff168152506008600083815260200190815260200160002060008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060208201518160000160146101000a81548163ffffffff021916908363ffffffff16021790555060408201518160000160186101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550905050806004819055508315611f86576005546040805183815260208101929092527f6ca648a381f22ead7e37773d934e64885dcf861fbfbb26c40354cbf0c4662d1a910160405180910390a15b5050505050505050505050505050565b611f9e6124d3565b600780547fffffffffffffffffffffffffffffffffffffffffffffffff00000000ffffffff1664010000000063ffffffff8416908102919091179091556040519081527f697b48b8b76cebb09a54ec4ff810e8a181c96f65395d51c744db09c115d1d5d090602001611172565b6120136124d3565b61201c816128fc565b50565b6120276124d3565b8163ffffffff168163ffffffff16111561207d576040517f2780dcb200000000000000000000000000000000000000000000000000000000815263ffffffff80831660048301528316602482015260440161086f565b609b60ff891611156120c7576040517f3acc511a00000000000000000000000000000000000000000000000000000000815260ff89166004820152609b602482015260440161086f565b609b60ff88161115612111576040517f3acc511a00000000000000000000000000000000000000000000000000000000815260ff88166004820152609b602482015260440161086f565b89600760006101000a81548163ffffffff021916908363ffffffff16021790555088600760086101000a81548163ffffffff021916908363ffffffff16021790555087600760146101000a81548160ff021916908360ff16021790555086600760156101000a81548160ff021916908360ff1602179055508560038190555084600260166101000a81548160ff021916908360ff1602179055506001600260146101000a81548160ff02191690831515021790555083600660006101000a81548163ffffffff021916908363ffffffff16021790555082600581905550816007600c6101000a81548163ffffffff021916908363ffffffff16021790555080600760106101000a81548163ffffffff021916908363ffffffff1602179055507fb18fd84519589131d50ae195b0aea1b042c3c0b25a53bb894d9d81c78980c20f8a8a8a8a8a8a8a8a8a600760109054906101000a900463ffffffff166040516122dc9a9998979695949392919063ffffffff9a8b168152988a1660208a015260ff97881660408a0152958716606089015260808801949094529190941660a086015292851660c085015260e08401929092529083166101008301529091166101208201526101400190565b60405180910390a150505050505050505050565b60008281526008602081815260408084208151606081018352815473ffffffffffffffffffffffffffffffffffffffff808216835274010000000000000000000000000000000000000000820463ffffffff1683870152780100000000000000000000000000000000000000000000000090910467ffffffffffffffff1693820193909352878652939092529290558051909181166123eb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f72657175657374206e6f7420666f756e64000000000000000000000000000000604482015260640161086f565b600080631fe543e360e01b86866040516024016124099291906134ae565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050509050600061247f856020015163ffffffff1685846129f1565b9050806124ca5760405173ffffffffffffffffffffffffffffffffffffffff85169088907fc551b83c151f2d1c7eeb938ac59008e0409f1c1dc1e2f112449d4d79b458902290600090a35b50505050505050565b60005473ffffffffffffffffffffffffffffffffffffffff163314612554576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f4f6e6c792063616c6c61626c65206279206f776e657200000000000000000000604482015260640161086f565b565b600754600090819061256e9063ffffffff16846134fc565b60075490915060009061258e90640100000000900463ffffffff16612a3d565b6007546125ad9068010000000000000000900463ffffffff1687613513565b6125b790866134fc565b6125c19190613513565b6007549091506000906125ef906c01000000000000000000000000900463ffffffff1664e8d4a510006134fc565b60075460649061261a9074010000000000000000000000000000000000000000900460ff1682613526565b6126279060ff16856134fc565b612631919061356e565b61263b9190613513565b90506126478184613513565b9695505050505050565b600654604080517ffeaf968c0000000000000000000000000000000000000000000000000000000081529051600092839263ffffffff8216928492640100000000900473ffffffffffffffffffffffffffffffffffffffff169163feaf968c9160048083019260a09291908290030181865afa1580156126d5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126f9919061359c565b50919650909250505063ffffffff821615801590612725575061271c81426135ec565b8263ffffffff16105b925082156127335760055493505b600084121561279e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f496e76616c6964204c494e4b2077656920707269636500000000000000000000604482015260640161086f565b50509091565b60075460009081906127bc9063ffffffff16856134fc565b6007549091506000906127dc90640100000000900463ffffffff16612a3d565b6007546127fb9068010000000000000000900463ffffffff1688613513565b61280590876134fc565b61280f9190613513565b60075490915060009061284e9063ffffffff70010000000000000000000000000000000082048116916c010000000000000000000000009004166135ff565b6128639063ffffffff1664e8d4a510006134fc565b60075460649061288f907501000000000000000000000000000000000000000000900460ff1682613526565b61289c9060ff16856134fc565b6128a6919061356e565b6128b09190613513565b9050846128bd8285613513565b6128cf90670de0b6b3a76400006134fc565b6128d9919061356e565b979650505050505050565b60006128f1603f8361361c565b610c999060016133be565b3373ffffffffffffffffffffffffffffffffffffffff82160361297b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f43616e6e6f74207472616e7366657220746f2073656c66000000000000000000604482015260640161086f565b600180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83811691821790925560008054604051929316917fed8889f560326eb138920d842192f0eb3dd22b4f139c87a2c57538e05bae12789190a350565b60005a611388811015612a0357600080fd5b611388810390508460408204820311612a1b57600080fd5b50823b612a2757600080fd5b60008083516020850160008789f1949350505050565b600046612a4981612afe565b15612ade576000606c73ffffffffffffffffffffffffffffffffffffffff166341b247a86040518163ffffffff1660e01b815260040160c060405180830381865afa158015612a9c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ac0919061363f565b5050505091505083608c612ad49190613513565b6113a590826134fc565b612ae781612b21565b15612af557610dca83612b5b565b50600092915050565b600061a4b1821480612b12575062066eed82145b80610c9957505062066eee1490565b6000600a821480612b3357506101a482145b80612b40575062aa37dc82145b80612b4c575061210582145b80610c9957505062014a331490565b60008073420000000000000000000000000000000000000f73ffffffffffffffffffffffffffffffffffffffff1663519b4bd36040518163ffffffff1660e01b8152600401602060405180830381865afa158015612bbd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612be19190613352565b9050600080612bf081866135ec565b90506000612bff8260106134fc565b612c0a8460046134fc565b612c149190613513565b9050600073420000000000000000000000000000000000000f73ffffffffffffffffffffffffffffffffffffffff16630c18c1626040518163ffffffff1660e01b8152600401602060405180830381865afa158015612c77573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c9b9190613352565b9050600073420000000000000000000000000000000000000f73ffffffffffffffffffffffffffffffffffffffff1663f45e65d86040518163ffffffff1660e01b8152600401602060405180830381865afa158015612cfe573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612d229190613352565b9050600073420000000000000000000000000000000000000f73ffffffffffffffffffffffffffffffffffffffff1663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015612d85573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612da99190613352565b90506000612db882600a6137a9565b905060008184612dc88789613513565b612dd2908c6134fc565b612ddc91906134fc565b612de6919061356e565b9b9a5050505050505050505050565b6000815180845260005b81811015612e1b57602081850181015186830182015201612dff565b5060006020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b602081526000610c966020830184612df5565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715612ee257612ee2612e6c565b604052919050565b600082601f830112612efb57600080fd5b813567ffffffffffffffff811115612f1557612f15612e6c565b612f4660207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f84011601612e9b565b818152846020838601011115612f5b57600080fd5b816020850160208301376000918101602001919091529392505050565b801515811461201c57600080fd5b60008060408385031215612f9957600080fd5b823567ffffffffffffffff811115612fb057600080fd5b612fbc85828601612eea565b9250506020830135612fcd81612f78565b809150509250929050565b60008060408385031215612feb57600080fd5b8235915060208084013567ffffffffffffffff8082111561300b57600080fd5b818601915086601f83011261301f57600080fd5b81358181111561303157613031612e6c565b8060051b9150613042848301612e9b565b818152918301840191848101908984111561305c57600080fd5b938501935b8385101561307a57843582529385019390850190613061565b8096505050505050509250929050565b803573ffffffffffffffffffffffffffffffffffffffff81168114610dce57600080fd5b6000602082840312156130c057600080fd5b610c968261308a565b803563ffffffff81168114610dce57600080fd5b600080604083850312156130f057600080fd5b6130f9836130c9565b946020939093013593505050565b60006020828403121561311957600080fd5b610c96826130c9565b60006020828403121561313457600080fd5b5035919050565b803561ffff81168114610dce57600080fd5b60008083601f84011261315f57600080fd5b50813567ffffffffffffffff81111561317757600080fd5b60208301915083602082850101111561318f57600080fd5b9250929050565b6000806000806000608086880312156131ae57600080fd5b6131b7866130c9565b94506131c56020870161313b565b93506131d3604087016130c9565b9250606086013567ffffffffffffffff8111156131ef57600080fd5b6131fb8882890161314d565b969995985093965092949392505050565b6000806000806060858703121561322257600080fd5b61322b8561308a565b935060208501359250604085013567ffffffffffffffff81111561324e57600080fd5b61325a8782880161314d565b95989497509550505050565b803560ff81168114610dce57600080fd5b6000806000806000806000806000806101408b8d03121561329757600080fd5b6132a08b6130c9565b99506132ae60208c016130c9565b98506132bc60408c01613266565b97506132ca60608c01613266565b965060808b013595506132df60a08c01613266565b94506132ed60c08c016130c9565b935060e08b013592506133036101008c016130c9565b91506133126101208c016130c9565b90509295989b9194979a5092959850565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60006020828403121561336457600080fd5b5051919050565b60006020828403121561337d57600080fd5b815161338881612f78565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b63ffffffff8181168382160190808211156133db576133db61338f565b5092915050565b60208152815160208201526020820151604082015261ffff60408301511660608201526000606083015163ffffffff80821660808501528060808601511660a0850152505060a083015160c0808401526113a560e0840182612df5565b6000806000806080858703121561345557600080fd5b61345e856130c9565b935061346c6020860161313b565b925061347a604086016130c9565b9150606085013567ffffffffffffffff81111561349657600080fd5b6134a287828801612eea565b91505092959194509250565b6000604082018483526020604081850152818551808452606086019150828701935060005b818110156134ef578451835293830193918301916001016134d3565b5090979650505050505050565b8082028115828204841417610c9957610c9961338f565b80820180821115610c9957610c9961338f565b60ff8181168382160190811115610c9957610c9961338f565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60008261357d5761357d61353f565b500490565b805169ffffffffffffffffffff81168114610dce57600080fd5b600080600080600060a086880312156135b457600080fd5b6135bd86613582565b94506020860151935060408601519250606086015191506135e060808701613582565b90509295509295909350565b81810381811115610c9957610c9961338f565b63ffffffff8281168282160390808211156133db576133db61338f565b600063ffffffff808416806136335761363361353f565b92169190910492915050565b60008060008060008060c0878903121561365857600080fd5b865195506020870151945060408701519350606087015192506080870151915060a087015190509295509295509295565b600181815b808511156136e257817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048211156136c8576136c861338f565b808516156136d557918102915b93841c939080029061368e565b509250929050565b6000826136f957506001610c99565b8161370657506000610c99565b816001811461371c576002811461372657613742565b6001915050610c99565b60ff8411156137375761373761338f565b50506001821b610c99565b5060208310610133831016604e8410600b8410161715613765575081810a610c99565b61376f8383613689565b807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048211156137a1576137a161338f565b029392505050565b6000610c9683836136ea56fea164736f6c6343000813000a", + ABI: "[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_link\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_linkNativeFeed\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_coordinator\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_subId\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"FailedToTransferLink\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint16\",\"name\":\"expectedMinimumLength\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"actualLength\",\"type\":\"uint16\"}],\"name\":\"IncorrectExtraArgsLength\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"premiumPercentage\",\"type\":\"uint8\"},{\"internalType\":\"uint8\",\"name\":\"max\",\"type\":\"uint8\"}],\"name\":\"InvalidPremiumPercentage\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"LINKPaymentInRequestRandomWordsInNative\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"LinkAlreadySet\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"flatFeeLinkDiscountPPM\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"flatFeeNativePPM\",\"type\":\"uint32\"}],\"name\":\"LinkDiscountTooHigh\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NativePaymentInOnTokenTransfer\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"have\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"want\",\"type\":\"address\"}],\"name\":\"OnlyCoordinatorCanFulfill\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"have\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"coordinator\",\"type\":\"address\"}],\"name\":\"OnlyOwnerOrCoordinator\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SubscriptionIdMissing\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ZeroAddress\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint32\",\"name\":\"wrapperGasOverhead\",\"type\":\"uint32\"},{\"indexed\":false,\"internalType\":\"uint32\",\"name\":\"coordinatorGasOverhead\",\"type\":\"uint32\"},{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"coordinatorNativePremiumPercentage\",\"type\":\"uint8\"},{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"coordinatorLinkPremiumPercentage\",\"type\":\"uint8\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"keyHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"maxNumWords\",\"type\":\"uint8\"},{\"indexed\":false,\"internalType\":\"uint32\",\"name\":\"stalenessSeconds\",\"type\":\"uint32\"},{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"fallbackWeiPerUnitLink\",\"type\":\"int256\"},{\"indexed\":false,\"internalType\":\"uint32\",\"name\":\"fulfillmentFlatFeeNativePPM\",\"type\":\"uint32\"},{\"indexed\":false,\"internalType\":\"uint32\",\"name\":\"fulfillmentFlatFeeLinkDiscountPPM\",\"type\":\"uint32\"}],\"name\":\"ConfigSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"vrfCoordinator\",\"type\":\"address\"}],\"name\":\"CoordinatorSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[],\"name\":\"Disabled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[],\"name\":\"Enabled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"requestId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"fallbackWeiPerUnitLink\",\"type\":\"int256\"}],\"name\":\"FallbackWeiPerUnitLinkUsed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint32\",\"name\":\"size\",\"type\":\"uint32\"}],\"name\":\"FulfillmentTxSizeSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"NativeWithdrawn\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"OwnershipTransferRequested\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"Withdrawn\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"requestId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"consumer\",\"type\":\"address\"}],\"name\":\"WrapperFulfillmentFailed\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"LINK_NATIVE_FEED\",\"outputs\":[{\"internalType\":\"contractAggregatorV3Interface\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"SUBSCRIPTION_ID\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"acceptOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"_callbackGasLimit\",\"type\":\"uint32\"}],\"name\":\"calculateRequestPrice\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"_callbackGasLimit\",\"type\":\"uint32\"}],\"name\":\"calculateRequestPriceNative\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"extraArgs\",\"type\":\"bytes\"},{\"internalType\":\"bool\",\"name\":\"isLinkMode\",\"type\":\"bool\"}],\"name\":\"checkPaymentMode\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"disable\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"enable\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"_callbackGasLimit\",\"type\":\"uint32\"},{\"internalType\":\"uint256\",\"name\":\"_requestGasPriceWei\",\"type\":\"uint256\"}],\"name\":\"estimateRequestPrice\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"_callbackGasLimit\",\"type\":\"uint32\"},{\"internalType\":\"uint256\",\"name\":\"_requestGasPriceWei\",\"type\":\"uint256\"}],\"name\":\"estimateRequestPriceNative\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getConfig\",\"outputs\":[{\"internalType\":\"int256\",\"name\":\"fallbackWeiPerUnitLink\",\"type\":\"int256\"},{\"internalType\":\"uint32\",\"name\":\"stalenessSeconds\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"fulfillmentFlatFeeNativePPM\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"fulfillmentFlatFeeLinkDiscountPPM\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"wrapperGasOverhead\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"coordinatorGasOverhead\",\"type\":\"uint32\"},{\"internalType\":\"uint8\",\"name\":\"wrapperNativePremiumPercentage\",\"type\":\"uint8\"},{\"internalType\":\"uint8\",\"name\":\"wrapperLinkPremiumPercentage\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"keyHash\",\"type\":\"bytes32\"},{\"internalType\":\"uint8\",\"name\":\"maxNumWords\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"lastRequestId\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"link\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_sender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"_data\",\"type\":\"bytes\"}],\"name\":\"onTokenTransfer\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"requestId\",\"type\":\"uint256\"},{\"internalType\":\"uint256[]\",\"name\":\"randomWords\",\"type\":\"uint256[]\"}],\"name\":\"rawFulfillRandomWords\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"_callbackGasLimit\",\"type\":\"uint32\"},{\"internalType\":\"uint16\",\"name\":\"_requestConfirmations\",\"type\":\"uint16\"},{\"internalType\":\"uint32\",\"name\":\"_numWords\",\"type\":\"uint32\"},{\"internalType\":\"bytes\",\"name\":\"extraArgs\",\"type\":\"bytes\"}],\"name\":\"requestRandomWordsInNative\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"requestId\",\"type\":\"uint256\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"s_callbacks\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"callbackAddress\",\"type\":\"address\"},{\"internalType\":\"uint32\",\"name\":\"callbackGasLimit\",\"type\":\"uint32\"},{\"internalType\":\"uint64\",\"name\":\"requestGasPrice\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"s_configured\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"s_disabled\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"s_fulfillmentTxSizeBytes\",\"outputs\":[{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"s_vrfCoordinator\",\"outputs\":[{\"internalType\":\"contractIVRFCoordinatorV2Plus\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"_wrapperGasOverhead\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"_coordinatorGasOverhead\",\"type\":\"uint32\"},{\"internalType\":\"uint8\",\"name\":\"_coordinatorNativePremiumPercentage\",\"type\":\"uint8\"},{\"internalType\":\"uint8\",\"name\":\"_coordinatorLinkPremiumPercentage\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"_keyHash\",\"type\":\"bytes32\"},{\"internalType\":\"uint8\",\"name\":\"_maxNumWords\",\"type\":\"uint8\"},{\"internalType\":\"uint32\",\"name\":\"_stalenessSeconds\",\"type\":\"uint32\"},{\"internalType\":\"int256\",\"name\":\"_fallbackWeiPerUnitLink\",\"type\":\"int256\"},{\"internalType\":\"uint32\",\"name\":\"_fulfillmentFlatFeeNativePPM\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"_fulfillmentFlatFeeLinkDiscountPPM\",\"type\":\"uint32\"}],\"name\":\"setConfig\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_vrfCoordinator\",\"type\":\"address\"}],\"name\":\"setCoordinator\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"size\",\"type\":\"uint32\"}],\"name\":\"setFulfillmentTxSize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"typeAndVersion\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_recipient\",\"type\":\"address\"}],\"name\":\"withdraw\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_recipient\",\"type\":\"address\"}],\"name\":\"withdrawNative\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", + Bin: "0x60e06040526006805463ffffffff60801b1916609160821b1790553480156200002757600080fd5b5060405162003c3638038062003c368339810160408190526200004a916200029b565b813380600081620000a25760405162461bcd60e51b815260206004820152601860248201527f43616e6e6f7420736574206f776e657220746f207a65726f000000000000000060448201526064015b60405180910390fd5b600080546001600160a01b0319166001600160a01b0384811691909117909155811615620000d557620000d581620001d3565b5050506001600160a01b038116620001005760405163d92e233d60e01b815260040160405180910390fd5b600280546001600160a01b0319166001600160a01b0392831617905584811660a052831660c05260008190036200014a5760405163a81c0bef60e01b815260040160405180910390fd5b60025460405163dc311dd360e01b8152600481018390526001600160a01b039091169063dc311dd390602401600060405180830381865afa15801562000194573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052620001be91908101906200031b565b50505060809290925250620004449350505050565b336001600160a01b038216036200022d5760405162461bcd60e51b815260206004820152601760248201527f43616e6e6f74207472616e7366657220746f2073656c66000000000000000000604482015260640162000099565b600180546001600160a01b0319166001600160a01b0383811691821790925560008054604051929316917fed8889f560326eb138920d842192f0eb3dd22b4f139c87a2c57538e05bae12789190a350565b80516001600160a01b03811681146200029657600080fd5b919050565b60008060008060808587031215620002b257600080fd5b620002bd856200027e565b9350620002cd602086016200027e565b9250620002dd604086016200027e565b6060959095015193969295505050565b80516001600160601b03811681146200029657600080fd5b634e487b7160e01b600052604160045260246000fd5b600080600080600060a086880312156200033457600080fd5b6200033f86620002ed565b9450602062000350818801620002ed565b60408801519095506001600160401b0380821682146200036f57600080fd5b8195506200038060608a016200027e565b945060808901519150808211156200039757600080fd5b818901915089601f830112620003ac57600080fd5b815181811115620003c157620003c162000305565b8060051b604051601f19603f83011681018181108582111715620003e957620003e962000305565b60405291825284820192508381018501918c8311156200040857600080fd5b938501935b82851015620004315762000421856200027e565b845293850193928501926200040d565b8096505050505050509295509295909350565b60805160a05160c0516137986200049e600039600081816104c4015261261601526000818161028b01528181610f1f01528181610fee0152611aca0152600081816101d90152818161171f0152611cb601526137986000f3fe6080604052600436106101c25760003560e01c806379ba5097116100f7578063a4c0ed3611610095578063cdd8d88511610064578063cdd8d88514610734578063f2fde38b1461077a578063fc2a88c31461079a578063fc2dbebc146107b057600080fd5b8063a4c0ed36146105bb578063a608a1e1146105db578063bf17e5591461060e578063c3f909d41461062e57600080fd5b80638ea98117116100d15780638ea98117146105465780639cfc058e146105665780639eccacf614610579578063a3907d71146105a657600080fd5b806379ba5097146104e65780637fb5d19d146104fb5780638da5cb5b1461051b57600080fd5b80633255c456116101645780634b1609351161013e5780634b1609351461043057806351cff8d91461045057806357a8070a1461047057806372e9d565146104b257600080fd5b80633255c456146103255780634306d3541461034557806348baa1c51461036557600080fd5b80631c4695f4116101a05780631c4695f41461027c5780631fe543e3146102d05780632f2770db146102f05780632f622e6b1461030557600080fd5b8063030932bb146101c7578063181f5a771461020e57806318b6f4c81461025a575b600080fd5b3480156101d357600080fd5b506101fb7f000000000000000000000000000000000000000000000000000000000000000081565b6040519081526020015b60405180910390f35b34801561021a57600080fd5b50604080518082018252601281527f56524656325772617070657220312e302e300000000000000000000000000000602082015290516102059190612e2f565b34801561026657600080fd5b5061027a610275366004612f5c565b6107d0565b005b34801561028857600080fd5b507f00000000000000000000000000000000000000000000000000000000000000005b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610205565b3480156102dc57600080fd5b5061027a6102eb366004612fae565b610958565b3480156102fc57600080fd5b5061027a6109d5565b34801561031157600080fd5b5061027a610320366004613084565b610a48565b34801561033157600080fd5b506101fb6103403660046130b3565b610b6f565b34801561035157600080fd5b506101fb6103603660046130dd565b610c95565b34801561037157600080fd5b506103ef6103803660046130f8565b60086020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff81169074010000000000000000000000000000000000000000810463ffffffff16907801000000000000000000000000000000000000000000000000900467ffffffffffffffff1683565b6040805173ffffffffffffffffffffffffffffffffffffffff909416845263ffffffff909216602084015267ffffffffffffffff1690820152606001610205565b34801561043c57600080fd5b506101fb61044b3660046130dd565b610dc9565b34801561045c57600080fd5b5061027a61046b366004613084565b610ee6565b34801561047c57600080fd5b506002546104a29074010000000000000000000000000000000000000000900460ff1681565b6040519015158152602001610205565b3480156104be57600080fd5b506102ab7f000000000000000000000000000000000000000000000000000000000000000081565b3480156104f257600080fd5b5061027a6110e7565b34801561050757600080fd5b506101fb6105163660046130b3565b6111e4565b34801561052757600080fd5b5060005473ffffffffffffffffffffffffffffffffffffffff166102ab565b34801561055257600080fd5b5061027a610561366004613084565b611317565b6101fb61057436600461316c565b6114a2565b34801561058557600080fd5b506002546102ab9073ffffffffffffffffffffffffffffffffffffffff1681565b3480156105b257600080fd5b5061027a61194d565b3480156105c757600080fd5b5061027a6105d63660046131e2565b6119a8565b3480156105e757600080fd5b506002546104a2907501000000000000000000000000000000000000000000900460ff1681565b34801561061a57600080fd5b5061027a6106293660046130dd565b611f15565b34801561063a57600080fd5b506005546006546007546003546002546040805195865263ffffffff68010000000000000000860481166020880152780100000000000000000000000000000000000000000000000086048116918701919091527c01000000000000000000000000000000000000000000000000000000008504811660608701526c010000000000000000000000008504811660808701527401000000000000000000000000000000000000000090940490931660a085015260ff80831660c086015261010092839004811660e0860152918401527601000000000000000000000000000000000000000000009091041661012082015261014001610205565b34801561074057600080fd5b5060065461076590700100000000000000000000000000000000900463ffffffff1681565b60405163ffffffff9091168152602001610205565b34801561078657600080fd5b5061027a610795366004613084565b611f96565b3480156107a657600080fd5b506101fb60045481565b3480156107bc57600080fd5b5061027a6107cb36600461324d565b611faa565b81516000036108145780610810576040517f6b81746e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5050565b81516024111561086e5781516040517f51200dce0000000000000000000000000000000000000000000000000000000081526108659160249160040161ffff92831681529116602082015260400190565b60405180910390fd5b600082602381518110610883576108836132f9565b6020910101517fff00000000000000000000000000000000000000000000000000000000000000167f01000000000000000000000000000000000000000000000000000000000000001490508080156108d95750815b15610910576040517f6048aa6800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8015801561091c575081155b15610953576040517f6b81746e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b505050565b60025473ffffffffffffffffffffffffffffffffffffffff1633146109cb576002546040517f1cf993f400000000000000000000000000000000000000000000000000000000815233600482015273ffffffffffffffffffffffffffffffffffffffff9091166024820152604401610865565b610810828261227b565b6109dd61245e565b600280547fffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff1675010000000000000000000000000000000000000000001790556040517f75884cdadc4a89e8b545db800057f06ec7f5338a08183c7ba515f2bfdd9fe1e190600090a1565b610a5061245e565b604051479060009073ffffffffffffffffffffffffffffffffffffffff84169083908381818185875af1925050503d8060008114610aaa576040519150601f19603f3d011682016040523d82523d6000602084013e610aaf565b606091505b5050905080610b1a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f6661696c656420746f207769746864726177206e6174697665000000000000006044820152606401610865565b8273ffffffffffffffffffffffffffffffffffffffff167fc303ca808382409472acbbf899c316cf439f409f6584aae22df86dfa3c9ed50483604051610b6291815260200190565b60405180910390a2505050565b60025460009074010000000000000000000000000000000000000000900460ff16610bf6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f77726170706572206973206e6f7420636f6e66696775726564000000000000006044820152606401610865565b6002547501000000000000000000000000000000000000000000900460ff1615610c7c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f777261707065722069732064697361626c6564000000000000000000000000006044820152606401610865565b610c8c8363ffffffff16836124e1565b90505b92915050565b60025460009074010000000000000000000000000000000000000000900460ff16610d1c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f77726170706572206973206e6f7420636f6e66696775726564000000000000006044820152606401610865565b6002547501000000000000000000000000000000000000000000900460ff1615610da2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f777261707065722069732064697361626c6564000000000000000000000000006044820152606401610865565b6000610dac6125f8565b509050610dc08363ffffffff163a8361274e565b9150505b919050565b60025460009074010000000000000000000000000000000000000000900460ff16610e50576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f77726170706572206973206e6f7420636f6e66696775726564000000000000006044820152606401610865565b6002547501000000000000000000000000000000000000000000900460ff1615610ed6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f777261707065722069732064697361626c6564000000000000000000000000006044820152606401610865565b610c8f8263ffffffff163a6124e1565b610eee61245e565b6040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201526000907f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16906370a0823190602401602060405180830381865afa158015610f7b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f9f9190613328565b6040517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8481166004830152602482018390529192507f00000000000000000000000000000000000000000000000000000000000000009091169063a9059cbb906044016020604051808303816000875af1158015611039573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061105d9190613341565b611093576040517f7c07fc4c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff167f7084f5476618d8e60b11ef0d7d3f06914655adb8793e28ff7f018d4c76d505d5826040516110db91815260200190565b60405180910390a25050565b60015473ffffffffffffffffffffffffffffffffffffffff163314611168576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f4d7573742062652070726f706f736564206f776e6572000000000000000000006044820152606401610865565b60008054337fffffffffffffffffffffffff00000000000000000000000000000000000000008083168217845560018054909116905560405173ffffffffffffffffffffffffffffffffffffffff90921692909183917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a350565b60025460009074010000000000000000000000000000000000000000900460ff1661126b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f77726170706572206973206e6f7420636f6e66696775726564000000000000006044820152606401610865565b6002547501000000000000000000000000000000000000000000900460ff16156112f1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f777261707065722069732064697361626c6564000000000000000000000000006044820152606401610865565b60006112fb6125f8565b50905061130f8463ffffffff16848361274e565b949350505050565b60005473ffffffffffffffffffffffffffffffffffffffff163314801590611357575060025473ffffffffffffffffffffffffffffffffffffffff163314155b156113db573361137c60005473ffffffffffffffffffffffffffffffffffffffff1690565b6002546040517f061db9c100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff93841660048201529183166024830152919091166044820152606401610865565b73ffffffffffffffffffffffffffffffffffffffff8116611428576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600280547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527fd1a6a14209a385a964d036e404cb5cfb71f4000cdb03c9366292430787261be6906020015b60405180910390a150565b60025460009074010000000000000000000000000000000000000000900460ff16611529576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f77726170706572206973206e6f7420636f6e66696775726564000000000000006044820152606401610865565b6002547501000000000000000000000000000000000000000000900460ff16156115af576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f777261707065722069732064697361626c6564000000000000000000000000006044820152606401610865565b6115ee83838080601f016020809104026020016040519081016040528093929190818152602001838380828437600092018290525092506107d0915050565b60006115f9876128ba565b9050600061160d8863ffffffff163a6124e1565b905080341015611679576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f66656520746f6f206c6f770000000000000000000000000000000000000000006044820152606401610865565b600254760100000000000000000000000000000000000000000000900460ff1663ffffffff87161115611708576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f6e756d576f72647320746f6f20686967680000000000000000000000000000006044820152606401610865565b60006040518060c0016040528060035481526020017f000000000000000000000000000000000000000000000000000000000000000081526020018961ffff1681526020016006600c9054906101000a900463ffffffff16858c61176c9190613394565b6117769190613394565b63ffffffff1681526020018863ffffffff16815260200187878080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050509152506002546040517f9b1c385e00000000000000000000000000000000000000000000000000000000815291925073ffffffffffffffffffffffffffffffffffffffff1690639b1c385e9061181c9084906004016133b8565b6020604051808303816000875af115801561183b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061185f9190613328565b6040805160608101825233815263ffffffff808d16602080840191825267ffffffffffffffff3a81168587019081526000888152600890935295909120935184549251955190911678010000000000000000000000000000000000000000000000000277ffffffffffffffffffffffffffffffffffffffffffffffff9590931674010000000000000000000000000000000000000000027fffffffffffffffff00000000000000000000000000000000000000000000000090921673ffffffffffffffffffffffffffffffffffffffff91909116171792909216919091179055935050505095945050505050565b61195561245e565b600280547fffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff1690556040517fc0f961051f97b04c496472d11cb6170d844e4b2c9dfd3b602a4fa0139712d48490600090a1565b60025474010000000000000000000000000000000000000000900460ff16611a2c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f77726170706572206973206e6f7420636f6e66696775726564000000000000006044820152606401610865565b6002547501000000000000000000000000000000000000000000900460ff1615611ab2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f777261707065722069732064697361626c6564000000000000000000000000006044820152606401610865565b3373ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001614611b51576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f6f6e6c792063616c6c61626c652066726f6d204c494e4b0000000000000000006044820152606401610865565b6000808080611b6285870187613415565b9350935093509350611b758160016107d0565b6000611b80856128ba565b9050600080611b8d6125f8565b915091506000611ba48863ffffffff163a8561274e565b9050808b1015611c10576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f66656520746f6f206c6f770000000000000000000000000000000000000000006044820152606401610865565b600254760100000000000000000000000000000000000000000000900460ff1663ffffffff87161115611c9f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f6e756d576f72647320746f6f20686967680000000000000000000000000000006044820152606401610865565b60006040518060c0016040528060035481526020017f000000000000000000000000000000000000000000000000000000000000000081526020018961ffff1681526020016006600c9054906101000a900463ffffffff16878c611d039190613394565b611d0d9190613394565b63ffffffff908116825289166020820152604090810188905260025490517f9b1c385e00000000000000000000000000000000000000000000000000000000815291925060009173ffffffffffffffffffffffffffffffffffffffff90911690639b1c385e90611d819085906004016133b8565b6020604051808303816000875af1158015611da0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611dc49190613328565b905060405180606001604052808f73ffffffffffffffffffffffffffffffffffffffff1681526020018b63ffffffff1681526020013a67ffffffffffffffff168152506008600083815260200190815260200160002060008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060208201518160000160146101000a81548163ffffffff021916908363ffffffff16021790555060408201518160000160186101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550905050806004819055508315611f05576005546040805183815260208101929092527f6ca648a381f22ead7e37773d934e64885dcf861fbfbb26c40354cbf0c4662d1a910160405180910390a15b5050505050505050505050505050565b611f1d61245e565b600680547fffffffffffffffffffffffff00000000ffffffffffffffffffffffffffffffff1670010000000000000000000000000000000063ffffffff8416908102919091179091556040519081527f697b48b8b76cebb09a54ec4ff810e8a181c96f65395d51c744db09c115d1d5d090602001611497565b611f9e61245e565b611fa7816128d2565b50565b611fb261245e565b8163ffffffff168163ffffffff161115612008576040517f2780dcb200000000000000000000000000000000000000000000000000000000815263ffffffff808316600483015283166024820152604401610865565b609b60ff89161115612052576040517f3acc511a00000000000000000000000000000000000000000000000000000000815260ff89166004820152609b6024820152604401610865565b609b60ff8816111561209c576040517f3acc511a00000000000000000000000000000000000000000000000000000000815260ff88166004820152609b6024820152604401610865565b896006600c6101000a81548163ffffffff021916908363ffffffff16021790555088600660146101000a81548163ffffffff021916908363ffffffff16021790555087600760006101000a81548160ff021916908360ff16021790555086600760016101000a81548160ff021916908360ff1602179055508560038190555084600260166101000a81548160ff021916908360ff1602179055506001600260146101000a81548160ff02191690831515021790555083600660086101000a81548163ffffffff021916908363ffffffff1602179055508260058190555081600660186101000a81548163ffffffff021916908363ffffffff160217905550806006601c6101000a81548163ffffffff021916908363ffffffff1602179055507fb18fd84519589131d50ae195b0aea1b042c3c0b25a53bb894d9d81c78980c20f8a8a8a8a8a8a8a8a8a6006601c9054906101000a900463ffffffff166040516122679a9998979695949392919063ffffffff9a8b168152988a1660208a015260ff97881660408a0152958716606089015260808801949094529190941660a086015292851660c085015260e08401929092529083166101008301529091166101208201526101400190565b60405180910390a150505050505050505050565b60008281526008602081815260408084208151606081018352815473ffffffffffffffffffffffffffffffffffffffff808216835274010000000000000000000000000000000000000000820463ffffffff1683870152780100000000000000000000000000000000000000000000000090910467ffffffffffffffff169382019390935287865293909252929055805190918116612376576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f72657175657374206e6f7420666f756e640000000000000000000000000000006044820152606401610865565b600080631fe543e360e01b8686604051602401612394929190613484565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050509050600061240a856020015163ffffffff1685846129c7565b9050806124555760405173ffffffffffffffffffffffffffffffffffffffff85169088907fc551b83c151f2d1c7eeb938ac59008e0409f1c1dc1e2f112449d4d79b458902290600090a35b50505050505050565b60005473ffffffffffffffffffffffffffffffffffffffff1633146124df576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f4f6e6c792063616c6c61626c65206279206f776e6572000000000000000000006044820152606401610865565b565b6006546000908190612509906c01000000000000000000000000900463ffffffff16846134d2565b60065490915060009061253590700100000000000000000000000000000000900463ffffffff16612a13565b6006546125609074010000000000000000000000000000000000000000900463ffffffff16876134e9565b61256a90866134d2565b61257491906134e9565b6006549091506000906125ae907801000000000000000000000000000000000000000000000000900463ffffffff1664e8d4a510006134d2565b6007546064906125c19060ff16826134fc565b6125ce9060ff16856134d2565b6125d89190613544565b6125e291906134e9565b90506125ee81846134e9565b9695505050505050565b6000806000600660089054906101000a900463ffffffff16905060007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663feaf968c6040518163ffffffff1660e01b815260040160a060405180830381865afa15801561267f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126a39190613572565b50919650909250505063ffffffff8216158015906126cf57506126c681426135c2565b8263ffffffff16105b925082156126dd5760055493505b6000841215612748576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f496e76616c6964204c494e4b20776569207072696365000000000000000000006044820152606401610865565b50509091565b6006546000908190612776906c01000000000000000000000000900463ffffffff16856134d2565b6006549091506000906127a290700100000000000000000000000000000000900463ffffffff16612a13565b6006546127cd9074010000000000000000000000000000000000000000900463ffffffff16886134e9565b6127d790876134d2565b6127e191906134e9565b6006549091506000906128389063ffffffff7c0100000000000000000000000000000000000000000000000000000000820481169178010000000000000000000000000000000000000000000000009004166135d5565b61284d9063ffffffff1664e8d4a510006134d2565b60075460649061286590610100900460ff16826134fc565b6128729060ff16856134d2565b61287c9190613544565b61288691906134e9565b90508461289382856134e9565b6128a590670de0b6b3a76400006134d2565b6128af9190613544565b979650505050505050565b60006128c7603f836135f2565b610c8f906001613394565b3373ffffffffffffffffffffffffffffffffffffffff821603612951576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f43616e6e6f74207472616e7366657220746f2073656c660000000000000000006044820152606401610865565b600180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83811691821790925560008054604051929316917fed8889f560326eb138920d842192f0eb3dd22b4f139c87a2c57538e05bae12789190a350565b60005a6113888110156129d957600080fd5b6113888103905084604082048203116129f157600080fd5b50823b6129fd57600080fd5b60008083516020850160008789f1949350505050565b600046612a1f81612ad4565b15612ab4576000606c73ffffffffffffffffffffffffffffffffffffffff166341b247a86040518163ffffffff1660e01b815260040160c060405180830381865afa158015612a72573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a969190613615565b5050505091505083608c612aaa91906134e9565b61130f90826134d2565b612abd81612af7565b15612acb57610dc083612b31565b50600092915050565b600061a4b1821480612ae8575062066eed82145b80610c8f57505062066eee1490565b6000600a821480612b0957506101a482145b80612b16575062aa37dc82145b80612b22575061210582145b80610c8f57505062014a331490565b60008073420000000000000000000000000000000000000f73ffffffffffffffffffffffffffffffffffffffff1663519b4bd36040518163ffffffff1660e01b8152600401602060405180830381865afa158015612b93573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612bb79190613328565b9050600080612bc681866135c2565b90506000612bd58260106134d2565b612be08460046134d2565b612bea91906134e9565b9050600073420000000000000000000000000000000000000f73ffffffffffffffffffffffffffffffffffffffff16630c18c1626040518163ffffffff1660e01b8152600401602060405180830381865afa158015612c4d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c719190613328565b9050600073420000000000000000000000000000000000000f73ffffffffffffffffffffffffffffffffffffffff1663f45e65d86040518163ffffffff1660e01b8152600401602060405180830381865afa158015612cd4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612cf89190613328565b9050600073420000000000000000000000000000000000000f73ffffffffffffffffffffffffffffffffffffffff1663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015612d5b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612d7f9190613328565b90506000612d8e82600a61377f565b905060008184612d9e87896134e9565b612da8908c6134d2565b612db291906134d2565b612dbc9190613544565b9b9a5050505050505050505050565b6000815180845260005b81811015612df157602081850181015186830182015201612dd5565b5060006020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b602081526000610c8c6020830184612dcb565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715612eb857612eb8612e42565b604052919050565b600082601f830112612ed157600080fd5b813567ffffffffffffffff811115612eeb57612eeb612e42565b612f1c60207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f84011601612e71565b818152846020838601011115612f3157600080fd5b816020850160208301376000918101602001919091529392505050565b8015158114611fa757600080fd5b60008060408385031215612f6f57600080fd5b823567ffffffffffffffff811115612f8657600080fd5b612f9285828601612ec0565b9250506020830135612fa381612f4e565b809150509250929050565b60008060408385031215612fc157600080fd5b8235915060208084013567ffffffffffffffff80821115612fe157600080fd5b818601915086601f830112612ff557600080fd5b81358181111561300757613007612e42565b8060051b9150613018848301612e71565b818152918301840191848101908984111561303257600080fd5b938501935b8385101561305057843582529385019390850190613037565b8096505050505050509250929050565b803573ffffffffffffffffffffffffffffffffffffffff81168114610dc457600080fd5b60006020828403121561309657600080fd5b610c8c82613060565b803563ffffffff81168114610dc457600080fd5b600080604083850312156130c657600080fd5b6130cf8361309f565b946020939093013593505050565b6000602082840312156130ef57600080fd5b610c8c8261309f565b60006020828403121561310a57600080fd5b5035919050565b803561ffff81168114610dc457600080fd5b60008083601f84011261313557600080fd5b50813567ffffffffffffffff81111561314d57600080fd5b60208301915083602082850101111561316557600080fd5b9250929050565b60008060008060006080868803121561318457600080fd5b61318d8661309f565b945061319b60208701613111565b93506131a96040870161309f565b9250606086013567ffffffffffffffff8111156131c557600080fd5b6131d188828901613123565b969995985093965092949392505050565b600080600080606085870312156131f857600080fd5b61320185613060565b935060208501359250604085013567ffffffffffffffff81111561322457600080fd5b61323087828801613123565b95989497509550505050565b803560ff81168114610dc457600080fd5b6000806000806000806000806000806101408b8d03121561326d57600080fd5b6132768b61309f565b995061328460208c0161309f565b985061329260408c0161323c565b97506132a060608c0161323c565b965060808b013595506132b560a08c0161323c565b94506132c360c08c0161309f565b935060e08b013592506132d96101008c0161309f565b91506132e86101208c0161309f565b90509295989b9194979a5092959850565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60006020828403121561333a57600080fd5b5051919050565b60006020828403121561335357600080fd5b815161335e81612f4e565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b63ffffffff8181168382160190808211156133b1576133b1613365565b5092915050565b60208152815160208201526020820151604082015261ffff60408301511660608201526000606083015163ffffffff80821660808501528060808601511660a0850152505060a083015160c08084015261130f60e0840182612dcb565b6000806000806080858703121561342b57600080fd5b6134348561309f565b935061344260208601613111565b92506134506040860161309f565b9150606085013567ffffffffffffffff81111561346c57600080fd5b61347887828801612ec0565b91505092959194509250565b6000604082018483526020604081850152818551808452606086019150828701935060005b818110156134c5578451835293830193918301916001016134a9565b5090979650505050505050565b8082028115828204841417610c8f57610c8f613365565b80820180821115610c8f57610c8f613365565b60ff8181168382160190811115610c8f57610c8f613365565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60008261355357613553613515565b500490565b805169ffffffffffffffffffff81168114610dc457600080fd5b600080600080600060a0868803121561358a57600080fd5b61359386613558565b94506020860151935060408601519250606086015191506135b660808701613558565b90509295509295909350565b81810381811115610c8f57610c8f613365565b63ffffffff8281168282160390808211156133b1576133b1613365565b600063ffffffff8084168061360957613609613515565b92169190910492915050565b60008060008060008060c0878903121561362e57600080fd5b865195506020870151945060408701519350606087015192506080870151915060a087015190509295509295509295565b600181815b808511156136b857817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0482111561369e5761369e613365565b808516156136ab57918102915b93841c9390800290613664565b509250929050565b6000826136cf57506001610c8f565b816136dc57506000610c8f565b81600181146136f257600281146136fc57613718565b6001915050610c8f565b60ff84111561370d5761370d613365565b50506001821b610c8f565b5060208310610133831016604e8410600b841016171561373b575081810a610c8f565b613745838361365f565b807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0482111561377757613777613365565b029392505050565b6000610c8c83836136c056fea164736f6c6343000813000a", } var VRFV2PlusWrapperABI = VRFV2PlusWrapperMetaData.ABI @@ -171,6 +171,28 @@ func (_VRFV2PlusWrapper *VRFV2PlusWrapperTransactorRaw) Transact(opts *bind.Tran return _VRFV2PlusWrapper.Contract.contract.Transact(opts, method, params...) } +func (_VRFV2PlusWrapper *VRFV2PlusWrapperCaller) LINKNATIVEFEED(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _VRFV2PlusWrapper.contract.Call(opts, &out, "LINK_NATIVE_FEED") + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +func (_VRFV2PlusWrapper *VRFV2PlusWrapperSession) LINKNATIVEFEED() (common.Address, error) { + return _VRFV2PlusWrapper.Contract.LINKNATIVEFEED(&_VRFV2PlusWrapper.CallOpts) +} + +func (_VRFV2PlusWrapper *VRFV2PlusWrapperCallerSession) LINKNATIVEFEED() (common.Address, error) { + return _VRFV2PlusWrapper.Contract.LINKNATIVEFEED(&_VRFV2PlusWrapper.CallOpts) +} + func (_VRFV2PlusWrapper *VRFV2PlusWrapperCaller) SUBSCRIPTIONID(opts *bind.CallOpts) (*big.Int, error) { var out []interface{} err := _VRFV2PlusWrapper.contract.Call(opts, &out, "SUBSCRIPTION_ID") @@ -502,28 +524,6 @@ func (_VRFV2PlusWrapper *VRFV2PlusWrapperCallerSession) SFulfillmentTxSizeBytes( return _VRFV2PlusWrapper.Contract.SFulfillmentTxSizeBytes(&_VRFV2PlusWrapper.CallOpts) } -func (_VRFV2PlusWrapper *VRFV2PlusWrapperCaller) SLinkNativeFeed(opts *bind.CallOpts) (common.Address, error) { - var out []interface{} - err := _VRFV2PlusWrapper.contract.Call(opts, &out, "s_linkNativeFeed") - - if err != nil { - return *new(common.Address), err - } - - out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) - - return out0, err - -} - -func (_VRFV2PlusWrapper *VRFV2PlusWrapperSession) SLinkNativeFeed() (common.Address, error) { - return _VRFV2PlusWrapper.Contract.SLinkNativeFeed(&_VRFV2PlusWrapper.CallOpts) -} - -func (_VRFV2PlusWrapper *VRFV2PlusWrapperCallerSession) SLinkNativeFeed() (common.Address, error) { - return _VRFV2PlusWrapper.Contract.SLinkNativeFeed(&_VRFV2PlusWrapper.CallOpts) -} - func (_VRFV2PlusWrapper *VRFV2PlusWrapperCaller) SVrfCoordinator(opts *bind.CallOpts) (common.Address, error) { var out []interface{} err := _VRFV2PlusWrapper.contract.Call(opts, &out, "s_vrfCoordinator") @@ -676,18 +676,6 @@ func (_VRFV2PlusWrapper *VRFV2PlusWrapperTransactorSession) SetFulfillmentTxSize return _VRFV2PlusWrapper.Contract.SetFulfillmentTxSize(&_VRFV2PlusWrapper.TransactOpts, size) } -func (_VRFV2PlusWrapper *VRFV2PlusWrapperTransactor) SetLinkNativeFeed(opts *bind.TransactOpts, linkNativeFeed common.Address) (*types.Transaction, error) { - return _VRFV2PlusWrapper.contract.Transact(opts, "setLinkNativeFeed", linkNativeFeed) -} - -func (_VRFV2PlusWrapper *VRFV2PlusWrapperSession) SetLinkNativeFeed(linkNativeFeed common.Address) (*types.Transaction, error) { - return _VRFV2PlusWrapper.Contract.SetLinkNativeFeed(&_VRFV2PlusWrapper.TransactOpts, linkNativeFeed) -} - -func (_VRFV2PlusWrapper *VRFV2PlusWrapperTransactorSession) SetLinkNativeFeed(linkNativeFeed common.Address) (*types.Transaction, error) { - return _VRFV2PlusWrapper.Contract.SetLinkNativeFeed(&_VRFV2PlusWrapper.TransactOpts, linkNativeFeed) -} - func (_VRFV2PlusWrapper *VRFV2PlusWrapperTransactor) TransferOwnership(opts *bind.TransactOpts, to common.Address) (*types.Transaction, error) { return _VRFV2PlusWrapper.contract.Transact(opts, "transferOwnership", to) } @@ -1434,123 +1422,6 @@ func (_VRFV2PlusWrapper *VRFV2PlusWrapperFilterer) ParseFulfillmentTxSizeSet(log return event, nil } -type VRFV2PlusWrapperLinkNativeFeedSetIterator struct { - Event *VRFV2PlusWrapperLinkNativeFeedSet - - contract *bind.BoundContract - event string - - logs chan types.Log - sub ethereum.Subscription - done bool - fail error -} - -func (it *VRFV2PlusWrapperLinkNativeFeedSetIterator) Next() bool { - - if it.fail != nil { - return false - } - - if it.done { - select { - case log := <-it.logs: - it.Event = new(VRFV2PlusWrapperLinkNativeFeedSet) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - default: - return false - } - } - - select { - case log := <-it.logs: - it.Event = new(VRFV2PlusWrapperLinkNativeFeedSet) - if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { - it.fail = err - return false - } - it.Event.Raw = log - return true - - case err := <-it.sub.Err(): - it.done = true - it.fail = err - return it.Next() - } -} - -func (it *VRFV2PlusWrapperLinkNativeFeedSetIterator) Error() error { - return it.fail -} - -func (it *VRFV2PlusWrapperLinkNativeFeedSetIterator) Close() error { - it.sub.Unsubscribe() - return nil -} - -type VRFV2PlusWrapperLinkNativeFeedSet struct { - LinkNativeFeed common.Address - Raw types.Log -} - -func (_VRFV2PlusWrapper *VRFV2PlusWrapperFilterer) FilterLinkNativeFeedSet(opts *bind.FilterOpts) (*VRFV2PlusWrapperLinkNativeFeedSetIterator, error) { - - logs, sub, err := _VRFV2PlusWrapper.contract.FilterLogs(opts, "LinkNativeFeedSet") - if err != nil { - return nil, err - } - return &VRFV2PlusWrapperLinkNativeFeedSetIterator{contract: _VRFV2PlusWrapper.contract, event: "LinkNativeFeedSet", logs: logs, sub: sub}, nil -} - -func (_VRFV2PlusWrapper *VRFV2PlusWrapperFilterer) WatchLinkNativeFeedSet(opts *bind.WatchOpts, sink chan<- *VRFV2PlusWrapperLinkNativeFeedSet) (event.Subscription, error) { - - logs, sub, err := _VRFV2PlusWrapper.contract.WatchLogs(opts, "LinkNativeFeedSet") - if err != nil { - return nil, err - } - return event.NewSubscription(func(quit <-chan struct{}) error { - defer sub.Unsubscribe() - for { - select { - case log := <-logs: - - event := new(VRFV2PlusWrapperLinkNativeFeedSet) - if err := _VRFV2PlusWrapper.contract.UnpackLog(event, "LinkNativeFeedSet", log); err != nil { - return err - } - event.Raw = log - - select { - case sink <- event: - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - case err := <-sub.Err(): - return err - case <-quit: - return nil - } - } - }), nil -} - -func (_VRFV2PlusWrapper *VRFV2PlusWrapperFilterer) ParseLinkNativeFeedSet(log types.Log) (*VRFV2PlusWrapperLinkNativeFeedSet, error) { - event := new(VRFV2PlusWrapperLinkNativeFeedSet) - if err := _VRFV2PlusWrapper.contract.UnpackLog(event, "LinkNativeFeedSet", log); err != nil { - return nil, err - } - event.Raw = log - return event, nil -} - type VRFV2PlusWrapperNativeWithdrawnIterator struct { Event *VRFV2PlusWrapperNativeWithdrawn @@ -2247,8 +2118,6 @@ func (_VRFV2PlusWrapper *VRFV2PlusWrapper) ParseLog(log types.Log) (generated.Ab return _VRFV2PlusWrapper.ParseFallbackWeiPerUnitLinkUsed(log) case _VRFV2PlusWrapper.abi.Events["FulfillmentTxSizeSet"].ID: return _VRFV2PlusWrapper.ParseFulfillmentTxSizeSet(log) - case _VRFV2PlusWrapper.abi.Events["LinkNativeFeedSet"].ID: - return _VRFV2PlusWrapper.ParseLinkNativeFeedSet(log) case _VRFV2PlusWrapper.abi.Events["NativeWithdrawn"].ID: return _VRFV2PlusWrapper.ParseNativeWithdrawn(log) case _VRFV2PlusWrapper.abi.Events["OwnershipTransferRequested"].ID: @@ -2289,10 +2158,6 @@ func (VRFV2PlusWrapperFulfillmentTxSizeSet) Topic() common.Hash { return common.HexToHash("0x697b48b8b76cebb09a54ec4ff810e8a181c96f65395d51c744db09c115d1d5d0") } -func (VRFV2PlusWrapperLinkNativeFeedSet) Topic() common.Hash { - return common.HexToHash("0xc252955f9bd8c6ea6e3cc712bbad31005d85cec90e73b147b4d6e8326242efdf") -} - func (VRFV2PlusWrapperNativeWithdrawn) Topic() common.Hash { return common.HexToHash("0xc303ca808382409472acbbf899c316cf439f409f6584aae22df86dfa3c9ed504") } @@ -2318,6 +2183,8 @@ func (_VRFV2PlusWrapper *VRFV2PlusWrapper) Address() common.Address { } type VRFV2PlusWrapperInterface interface { + LINKNATIVEFEED(opts *bind.CallOpts) (common.Address, error) + SUBSCRIPTIONID(opts *bind.CallOpts) (*big.Int, error) CalculateRequestPrice(opts *bind.CallOpts, _callbackGasLimit uint32) (*big.Int, error) @@ -2350,8 +2217,6 @@ type VRFV2PlusWrapperInterface interface { SFulfillmentTxSizeBytes(opts *bind.CallOpts) (uint32, error) - SLinkNativeFeed(opts *bind.CallOpts) (common.Address, error) - SVrfCoordinator(opts *bind.CallOpts) (common.Address, error) TypeAndVersion(opts *bind.CallOpts) (string, error) @@ -2374,8 +2239,6 @@ type VRFV2PlusWrapperInterface interface { SetFulfillmentTxSize(opts *bind.TransactOpts, size uint32) (*types.Transaction, error) - SetLinkNativeFeed(opts *bind.TransactOpts, linkNativeFeed common.Address) (*types.Transaction, error) - TransferOwnership(opts *bind.TransactOpts, to common.Address) (*types.Transaction, error) Withdraw(opts *bind.TransactOpts, _recipient common.Address) (*types.Transaction, error) @@ -2418,12 +2281,6 @@ type VRFV2PlusWrapperInterface interface { ParseFulfillmentTxSizeSet(log types.Log) (*VRFV2PlusWrapperFulfillmentTxSizeSet, error) - FilterLinkNativeFeedSet(opts *bind.FilterOpts) (*VRFV2PlusWrapperLinkNativeFeedSetIterator, error) - - WatchLinkNativeFeedSet(opts *bind.WatchOpts, sink chan<- *VRFV2PlusWrapperLinkNativeFeedSet) (event.Subscription, error) - - ParseLinkNativeFeedSet(log types.Log) (*VRFV2PlusWrapperLinkNativeFeedSet, error) - FilterNativeWithdrawn(opts *bind.FilterOpts, to []common.Address) (*VRFV2PlusWrapperNativeWithdrawnIterator, error) WatchNativeWithdrawn(opts *bind.WatchOpts, sink chan<- *VRFV2PlusWrapperNativeWithdrawn, to []common.Address) (event.Subscription, error) diff --git a/core/gethwrappers/generation/generated-wrapper-dependency-versions-do-not-edit.txt b/core/gethwrappers/generation/generated-wrapper-dependency-versions-do-not-edit.txt index 24aa81bc356..268971129ed 100644 --- a/core/gethwrappers/generation/generated-wrapper-dependency-versions-do-not-edit.txt +++ b/core/gethwrappers/generation/generated-wrapper-dependency-versions-do-not-edit.txt @@ -126,6 +126,6 @@ vrfv2plus_client: ../../contracts/solc/v0.8.19/VRFV2PlusClient/VRFV2PlusClient.a vrfv2plus_consumer_example: ../../contracts/solc/v0.8.19/VRFV2PlusConsumerExample/VRFV2PlusConsumerExample.abi ../../contracts/solc/v0.8.19/VRFV2PlusConsumerExample/VRFV2PlusConsumerExample.bin e25c1981638fb9ea8fdd21600d6954f999bf65b98ba4e4a3f8fb9f7858334e19 vrfv2plus_malicious_migrator: ../../contracts/solc/v0.8.19/VRFV2PlusMaliciousMigrator/VRFV2PlusMaliciousMigrator.abi ../../contracts/solc/v0.8.19/VRFV2PlusMaliciousMigrator/VRFV2PlusMaliciousMigrator.bin 5dff20621fe6ed3bed75fe4b65381b0d4b1f6286ee3571553dbeb57213b53416 vrfv2plus_reverting_example: ../../contracts/solc/v0.8.19/VRFV2PlusRevertingExample/VRFV2PlusRevertingExample.abi ../../contracts/solc/v0.8.19/VRFV2PlusRevertingExample/VRFV2PlusRevertingExample.bin ebc2e96af9bf3aaa8b9cb048f8ecfec9987ee8b90126b740722c6b6427ab128e -vrfv2plus_wrapper: ../../contracts/solc/v0.8.19/VRFV2PlusWrapper/VRFV2PlusWrapper.abi ../../contracts/solc/v0.8.19/VRFV2PlusWrapper/VRFV2PlusWrapper.bin afbab1442bcc508c897800581b6f78b68a5a50ca7f9a359d185f54c51313cda7 +vrfv2plus_wrapper: ../../contracts/solc/v0.8.19/VRFV2PlusWrapper/VRFV2PlusWrapper.abi ../../contracts/solc/v0.8.19/VRFV2PlusWrapper/VRFV2PlusWrapper.bin 81b6cd84aa0824f58a04651ef5eae29363c4e77904687b1d226d4dbc4f07030b vrfv2plus_wrapper_consumer_example: ../../contracts/solc/v0.8.19/VRFV2PlusWrapperConsumerExample/VRFV2PlusWrapperConsumerExample.abi ../../contracts/solc/v0.8.19/VRFV2PlusWrapperConsumerExample/VRFV2PlusWrapperConsumerExample.bin 130217ffb341f19d1b3bda27f5c4a10567ac21ac3a49c9933bbdb068e8420177 vrfv2plus_wrapper_load_test_consumer: ../../contracts/solc/v0.8.19/VRFV2PlusWrapperLoadTestConsumer/VRFV2PlusWrapperLoadTestConsumer.abi ../../contracts/solc/v0.8.19/VRFV2PlusWrapperLoadTestConsumer/VRFV2PlusWrapperLoadTestConsumer.bin f2880b0469b82ddd4a11aa81ac12916f2912555dfe64829416a583fd82ebf3ab From 08d597ffa0aaa69c45fd3b2761b68c97263aa83c Mon Sep 17 00:00:00 2001 From: Iva Brajer Date: Tue, 26 Mar 2024 16:31:34 +0100 Subject: [PATCH 2/7] Added solhint disable for LINK_NATIVE_FEED immutable var --- contracts/src/v0.8/vrf/dev/VRFV2PlusWrapper.sol | 1 + 1 file changed, 1 insertion(+) diff --git a/contracts/src/v0.8/vrf/dev/VRFV2PlusWrapper.sol b/contracts/src/v0.8/vrf/dev/VRFV2PlusWrapper.sol index 324099903d5..51465030754 100644 --- a/contracts/src/v0.8/vrf/dev/VRFV2PlusWrapper.sol +++ b/contracts/src/v0.8/vrf/dev/VRFV2PlusWrapper.sol @@ -30,6 +30,7 @@ contract VRFV2PlusWrapper is ConfirmedOwner, TypeAndVersionInterface, VRFConsume // solhint-disable-next-line chainlink-solidity/prefix-immutable-variables-with-i uint256 public immutable SUBSCRIPTION_ID; LinkTokenInterface internal immutable i_link; + // solhint-disable-next-line chainlink-solidity/prefix-immutable-variables-with-i AggregatorV3Interface public immutable LINK_NATIVE_FEED; error LinkAlreadySet(); From ffcf145e9cf5a785231fa83aef99a83459569df4 Mon Sep 17 00:00:00 2001 From: Iva Brajer Date: Tue, 26 Mar 2024 16:35:28 +0100 Subject: [PATCH 3/7] Added changesets --- .changeset/odd-mugs-divide.md | 5 +++++ contracts/.changeset/strange-actors-do.md | 5 +++++ 2 files changed, 10 insertions(+) create mode 100644 .changeset/odd-mugs-divide.md create mode 100644 contracts/.changeset/strange-actors-do.md diff --git a/.changeset/odd-mugs-divide.md b/.changeset/odd-mugs-divide.md new file mode 100644 index 00000000000..8498593c6eb --- /dev/null +++ b/.changeset/odd-mugs-divide.md @@ -0,0 +1,5 @@ +--- +"chainlink": patch +--- + +Set LINK native feed in VRFV2PlusWrapper to immutable diff --git a/contracts/.changeset/strange-actors-do.md b/contracts/.changeset/strange-actors-do.md new file mode 100644 index 00000000000..644e30f2a09 --- /dev/null +++ b/contracts/.changeset/strange-actors-do.md @@ -0,0 +1,5 @@ +--- +"@chainlink/contracts": patch +--- + +Set LINK native feed in VRFV2PlusWrapper to immutable From 4d630f22074cb6839f03ca135a572bef4eb4b22b Mon Sep 17 00:00:00 2001 From: Iva Brajer Date: Tue, 26 Mar 2024 17:21:52 +0100 Subject: [PATCH 4/7] Delete storage slot padding from VRFV2PlusWrapper Co-authored-by: Lee Yik Jiun --- contracts/src/v0.8/vrf/dev/VRFV2PlusWrapper.sol | 13 ++++--------- 1 file changed, 4 insertions(+), 9 deletions(-) diff --git a/contracts/src/v0.8/vrf/dev/VRFV2PlusWrapper.sol b/contracts/src/v0.8/vrf/dev/VRFV2PlusWrapper.sol index 51465030754..62d42fbdc1b 100644 --- a/contracts/src/v0.8/vrf/dev/VRFV2PlusWrapper.sol +++ b/contracts/src/v0.8/vrf/dev/VRFV2PlusWrapper.sol @@ -78,9 +78,6 @@ contract VRFV2PlusWrapper is ConfirmedOwner, TypeAndVersionInterface, VRFConsume /* Storage Slot 4: END */ /* Storage Slot 5: BEGIN */ - /// @dev padding to make sure that the next variable is at a new storage slot - uint64 private s_padding; - // s_stalenessSeconds is the number of seconds before we consider the feed price to be stale and // fallback to fallbackWeiPerUnitLink. uint32 private s_stalenessSeconds; @@ -112,9 +109,7 @@ contract VRFV2PlusWrapper is ConfirmedOwner, TypeAndVersionInterface, VRFConsume // s_fulfillmentFlatFeeLinkDiscountPPM is the flat fee discount in millionths of native that VRFCoordinatorV2 // charges for link payment. uint32 private s_fulfillmentFlatFeeLinkDiscountPPM; - /* Storage Slot 5: END */ - /* Storage Slot 6: BEGIN */ // s_coordinatorNativePremiumPercentage is the coordinator's premium ratio in percentage for native payment. // For example, a value of 0 indicates no premium. A value of 15 indicates a 15 percent premium. // Wrapper has no premium. This premium is for VRFCoordinator. @@ -125,8 +120,8 @@ contract VRFV2PlusWrapper is ConfirmedOwner, TypeAndVersionInterface, VRFConsume // Wrapper has no premium. This premium is for VRFCoordinator. uint8 private s_coordinatorLinkPremiumPercentage; - // 30 bytes left - /* Storage Slot 6: END */ + // 6 bytes left + /* Storage Slot 5: END */ struct Callback { address callbackAddress; @@ -137,9 +132,9 @@ contract VRFV2PlusWrapper is ConfirmedOwner, TypeAndVersionInterface, VRFConsume // GasPrice is unlikely to be more than 14 ETH on most chains uint64 requestGasPrice; } - /* Storage Slot 7: BEGIN */ + /* Storage Slot 6: BEGIN */ mapping(uint256 => Callback) /* requestID */ /* callback */ public s_callbacks; - /* Storage Slot 7: END */ + /* Storage Slot 6: END */ constructor( address _link, From 41389466ddeaa58740030948c20e12f90370a52f Mon Sep 17 00:00:00 2001 From: Iva Brajer Date: Tue, 26 Mar 2024 17:36:30 +0100 Subject: [PATCH 5/7] Renamed LINK_NATIVE_FEED to i_link_native_feed, generated Go wrappers --- .../src/v0.8/vrf/dev/VRFV2PlusWrapper.sol | 11 ++- .../vrf/dev/interfaces/IVRFV2PlusWrapper.sol | 1 + .../v0.8/foundry/vrf/VRFV2PlusWrapper.t.sol | 2 +- .../vrfv2plus_wrapper/vrfv2plus_wrapper.go | 76 ++++++++++++------- ...rapper-dependency-versions-do-not-edit.txt | 2 +- 5 files changed, 60 insertions(+), 32 deletions(-) diff --git a/contracts/src/v0.8/vrf/dev/VRFV2PlusWrapper.sol b/contracts/src/v0.8/vrf/dev/VRFV2PlusWrapper.sol index 62d42fbdc1b..05a445fcce3 100644 --- a/contracts/src/v0.8/vrf/dev/VRFV2PlusWrapper.sol +++ b/contracts/src/v0.8/vrf/dev/VRFV2PlusWrapper.sol @@ -30,8 +30,7 @@ contract VRFV2PlusWrapper is ConfirmedOwner, TypeAndVersionInterface, VRFConsume // solhint-disable-next-line chainlink-solidity/prefix-immutable-variables-with-i uint256 public immutable SUBSCRIPTION_ID; LinkTokenInterface internal immutable i_link; - // solhint-disable-next-line chainlink-solidity/prefix-immutable-variables-with-i - AggregatorV3Interface public immutable LINK_NATIVE_FEED; + AggregatorV3Interface public immutable i_link_native_feed; error LinkAlreadySet(); error LinkDiscountTooHigh(uint32 flatFeeLinkDiscountPPM, uint32 flatFeeNativePPM); @@ -143,7 +142,7 @@ contract VRFV2PlusWrapper is ConfirmedOwner, TypeAndVersionInterface, VRFConsume uint256 _subId ) VRFConsumerBaseV2Plus(_coordinator) { i_link = LinkTokenInterface(_link); - LINK_NATIVE_FEED = AggregatorV3Interface(_linkNativeFeed); + i_link_native_feed = AggregatorV3Interface(_linkNativeFeed); if (_subId == 0) { revert SubscriptionIdMissing(); @@ -579,10 +578,14 @@ contract VRFV2PlusWrapper is ConfirmedOwner, TypeAndVersionInterface, VRFConsume return address(i_link); } + function link_native_feed() external view override returns (address) { + return address(i_link_native_feed); + } + function _getFeedData() private view returns (int256 weiPerUnitLink, bool isFeedStale) { uint32 stalenessSeconds = s_stalenessSeconds; uint256 timestamp; - (, weiPerUnitLink, , timestamp, ) = LINK_NATIVE_FEED.latestRoundData(); + (, weiPerUnitLink, , timestamp, ) = i_link_native_feed.latestRoundData(); // solhint-disable-next-line not-rely-on-time isFeedStale = stalenessSeconds > 0 && stalenessSeconds < block.timestamp - timestamp; if (isFeedStale) { diff --git a/contracts/src/v0.8/vrf/dev/interfaces/IVRFV2PlusWrapper.sol b/contracts/src/v0.8/vrf/dev/interfaces/IVRFV2PlusWrapper.sol index e7018153fc2..7d8895fb5e4 100644 --- a/contracts/src/v0.8/vrf/dev/interfaces/IVRFV2PlusWrapper.sol +++ b/contracts/src/v0.8/vrf/dev/interfaces/IVRFV2PlusWrapper.sol @@ -89,4 +89,5 @@ interface IVRFV2PlusWrapper { ) external payable returns (uint256 requestId); function link() external view returns (address); + function link_native_feed() external view returns (address); } diff --git a/contracts/test/v0.8/foundry/vrf/VRFV2PlusWrapper.t.sol b/contracts/test/v0.8/foundry/vrf/VRFV2PlusWrapper.t.sol index 0e422c0fc70..b4ffadc8613 100644 --- a/contracts/test/v0.8/foundry/vrf/VRFV2PlusWrapper.t.sol +++ b/contracts/test/v0.8/foundry/vrf/VRFV2PlusWrapper.t.sol @@ -52,7 +52,7 @@ contract VRFV2PlusWrapperTest is BaseTest { uint256(s_wrapperSubscriptionId) ); assertEq(address(s_linkToken), address(s_wrapper.link())); - assertEq(address(s_linkNativeFeed), address(s_wrapper.LINK_NATIVE_FEED())); + assertEq(address(s_linkNativeFeed), address(s_wrapper.link_native_feed())); // Add wrapper as a consumer to the wrapper's subscription. s_testCoordinator.addConsumer(uint256(s_wrapperSubscriptionId), address(s_wrapper)); diff --git a/core/gethwrappers/generated/vrfv2plus_wrapper/vrfv2plus_wrapper.go b/core/gethwrappers/generated/vrfv2plus_wrapper/vrfv2plus_wrapper.go index ad05f35e5f7..7f86d06d6a6 100644 --- a/core/gethwrappers/generated/vrfv2plus_wrapper/vrfv2plus_wrapper.go +++ b/core/gethwrappers/generated/vrfv2plus_wrapper/vrfv2plus_wrapper.go @@ -31,8 +31,8 @@ var ( ) var VRFV2PlusWrapperMetaData = &bind.MetaData{ - ABI: "[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_link\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_linkNativeFeed\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_coordinator\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_subId\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"FailedToTransferLink\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint16\",\"name\":\"expectedMinimumLength\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"actualLength\",\"type\":\"uint16\"}],\"name\":\"IncorrectExtraArgsLength\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"premiumPercentage\",\"type\":\"uint8\"},{\"internalType\":\"uint8\",\"name\":\"max\",\"type\":\"uint8\"}],\"name\":\"InvalidPremiumPercentage\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"LINKPaymentInRequestRandomWordsInNative\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"LinkAlreadySet\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"flatFeeLinkDiscountPPM\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"flatFeeNativePPM\",\"type\":\"uint32\"}],\"name\":\"LinkDiscountTooHigh\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NativePaymentInOnTokenTransfer\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"have\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"want\",\"type\":\"address\"}],\"name\":\"OnlyCoordinatorCanFulfill\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"have\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"coordinator\",\"type\":\"address\"}],\"name\":\"OnlyOwnerOrCoordinator\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SubscriptionIdMissing\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ZeroAddress\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint32\",\"name\":\"wrapperGasOverhead\",\"type\":\"uint32\"},{\"indexed\":false,\"internalType\":\"uint32\",\"name\":\"coordinatorGasOverhead\",\"type\":\"uint32\"},{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"coordinatorNativePremiumPercentage\",\"type\":\"uint8\"},{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"coordinatorLinkPremiumPercentage\",\"type\":\"uint8\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"keyHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"maxNumWords\",\"type\":\"uint8\"},{\"indexed\":false,\"internalType\":\"uint32\",\"name\":\"stalenessSeconds\",\"type\":\"uint32\"},{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"fallbackWeiPerUnitLink\",\"type\":\"int256\"},{\"indexed\":false,\"internalType\":\"uint32\",\"name\":\"fulfillmentFlatFeeNativePPM\",\"type\":\"uint32\"},{\"indexed\":false,\"internalType\":\"uint32\",\"name\":\"fulfillmentFlatFeeLinkDiscountPPM\",\"type\":\"uint32\"}],\"name\":\"ConfigSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"vrfCoordinator\",\"type\":\"address\"}],\"name\":\"CoordinatorSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[],\"name\":\"Disabled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[],\"name\":\"Enabled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"requestId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"fallbackWeiPerUnitLink\",\"type\":\"int256\"}],\"name\":\"FallbackWeiPerUnitLinkUsed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint32\",\"name\":\"size\",\"type\":\"uint32\"}],\"name\":\"FulfillmentTxSizeSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"NativeWithdrawn\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"OwnershipTransferRequested\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"Withdrawn\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"requestId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"consumer\",\"type\":\"address\"}],\"name\":\"WrapperFulfillmentFailed\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"LINK_NATIVE_FEED\",\"outputs\":[{\"internalType\":\"contractAggregatorV3Interface\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"SUBSCRIPTION_ID\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"acceptOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"_callbackGasLimit\",\"type\":\"uint32\"}],\"name\":\"calculateRequestPrice\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"_callbackGasLimit\",\"type\":\"uint32\"}],\"name\":\"calculateRequestPriceNative\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"extraArgs\",\"type\":\"bytes\"},{\"internalType\":\"bool\",\"name\":\"isLinkMode\",\"type\":\"bool\"}],\"name\":\"checkPaymentMode\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"disable\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"enable\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"_callbackGasLimit\",\"type\":\"uint32\"},{\"internalType\":\"uint256\",\"name\":\"_requestGasPriceWei\",\"type\":\"uint256\"}],\"name\":\"estimateRequestPrice\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"_callbackGasLimit\",\"type\":\"uint32\"},{\"internalType\":\"uint256\",\"name\":\"_requestGasPriceWei\",\"type\":\"uint256\"}],\"name\":\"estimateRequestPriceNative\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getConfig\",\"outputs\":[{\"internalType\":\"int256\",\"name\":\"fallbackWeiPerUnitLink\",\"type\":\"int256\"},{\"internalType\":\"uint32\",\"name\":\"stalenessSeconds\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"fulfillmentFlatFeeNativePPM\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"fulfillmentFlatFeeLinkDiscountPPM\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"wrapperGasOverhead\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"coordinatorGasOverhead\",\"type\":\"uint32\"},{\"internalType\":\"uint8\",\"name\":\"wrapperNativePremiumPercentage\",\"type\":\"uint8\"},{\"internalType\":\"uint8\",\"name\":\"wrapperLinkPremiumPercentage\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"keyHash\",\"type\":\"bytes32\"},{\"internalType\":\"uint8\",\"name\":\"maxNumWords\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"lastRequestId\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"link\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_sender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"_data\",\"type\":\"bytes\"}],\"name\":\"onTokenTransfer\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"requestId\",\"type\":\"uint256\"},{\"internalType\":\"uint256[]\",\"name\":\"randomWords\",\"type\":\"uint256[]\"}],\"name\":\"rawFulfillRandomWords\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"_callbackGasLimit\",\"type\":\"uint32\"},{\"internalType\":\"uint16\",\"name\":\"_requestConfirmations\",\"type\":\"uint16\"},{\"internalType\":\"uint32\",\"name\":\"_numWords\",\"type\":\"uint32\"},{\"internalType\":\"bytes\",\"name\":\"extraArgs\",\"type\":\"bytes\"}],\"name\":\"requestRandomWordsInNative\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"requestId\",\"type\":\"uint256\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"s_callbacks\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"callbackAddress\",\"type\":\"address\"},{\"internalType\":\"uint32\",\"name\":\"callbackGasLimit\",\"type\":\"uint32\"},{\"internalType\":\"uint64\",\"name\":\"requestGasPrice\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"s_configured\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"s_disabled\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"s_fulfillmentTxSizeBytes\",\"outputs\":[{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"s_vrfCoordinator\",\"outputs\":[{\"internalType\":\"contractIVRFCoordinatorV2Plus\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"_wrapperGasOverhead\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"_coordinatorGasOverhead\",\"type\":\"uint32\"},{\"internalType\":\"uint8\",\"name\":\"_coordinatorNativePremiumPercentage\",\"type\":\"uint8\"},{\"internalType\":\"uint8\",\"name\":\"_coordinatorLinkPremiumPercentage\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"_keyHash\",\"type\":\"bytes32\"},{\"internalType\":\"uint8\",\"name\":\"_maxNumWords\",\"type\":\"uint8\"},{\"internalType\":\"uint32\",\"name\":\"_stalenessSeconds\",\"type\":\"uint32\"},{\"internalType\":\"int256\",\"name\":\"_fallbackWeiPerUnitLink\",\"type\":\"int256\"},{\"internalType\":\"uint32\",\"name\":\"_fulfillmentFlatFeeNativePPM\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"_fulfillmentFlatFeeLinkDiscountPPM\",\"type\":\"uint32\"}],\"name\":\"setConfig\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_vrfCoordinator\",\"type\":\"address\"}],\"name\":\"setCoordinator\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"size\",\"type\":\"uint32\"}],\"name\":\"setFulfillmentTxSize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"typeAndVersion\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_recipient\",\"type\":\"address\"}],\"name\":\"withdraw\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_recipient\",\"type\":\"address\"}],\"name\":\"withdrawNative\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", - Bin: "0x60e06040526006805463ffffffff60801b1916609160821b1790553480156200002757600080fd5b5060405162003c3638038062003c368339810160408190526200004a916200029b565b813380600081620000a25760405162461bcd60e51b815260206004820152601860248201527f43616e6e6f7420736574206f776e657220746f207a65726f000000000000000060448201526064015b60405180910390fd5b600080546001600160a01b0319166001600160a01b0384811691909117909155811615620000d557620000d581620001d3565b5050506001600160a01b038116620001005760405163d92e233d60e01b815260040160405180910390fd5b600280546001600160a01b0319166001600160a01b0392831617905584811660a052831660c05260008190036200014a5760405163a81c0bef60e01b815260040160405180910390fd5b60025460405163dc311dd360e01b8152600481018390526001600160a01b039091169063dc311dd390602401600060405180830381865afa15801562000194573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052620001be91908101906200031b565b50505060809290925250620004449350505050565b336001600160a01b038216036200022d5760405162461bcd60e51b815260206004820152601760248201527f43616e6e6f74207472616e7366657220746f2073656c66000000000000000000604482015260640162000099565b600180546001600160a01b0319166001600160a01b0383811691821790925560008054604051929316917fed8889f560326eb138920d842192f0eb3dd22b4f139c87a2c57538e05bae12789190a350565b80516001600160a01b03811681146200029657600080fd5b919050565b60008060008060808587031215620002b257600080fd5b620002bd856200027e565b9350620002cd602086016200027e565b9250620002dd604086016200027e565b6060959095015193969295505050565b80516001600160601b03811681146200029657600080fd5b634e487b7160e01b600052604160045260246000fd5b600080600080600060a086880312156200033457600080fd5b6200033f86620002ed565b9450602062000350818801620002ed565b60408801519095506001600160401b0380821682146200036f57600080fd5b8195506200038060608a016200027e565b945060808901519150808211156200039757600080fd5b818901915089601f830112620003ac57600080fd5b815181811115620003c157620003c162000305565b8060051b604051601f19603f83011681018181108582111715620003e957620003e962000305565b60405291825284820192508381018501918c8311156200040857600080fd5b938501935b82851015620004315762000421856200027e565b845293850193928501926200040d565b8096505050505050509295509295909350565b60805160a05160c0516137986200049e600039600081816104c4015261261601526000818161028b01528181610f1f01528181610fee0152611aca0152600081816101d90152818161171f0152611cb601526137986000f3fe6080604052600436106101c25760003560e01c806379ba5097116100f7578063a4c0ed3611610095578063cdd8d88511610064578063cdd8d88514610734578063f2fde38b1461077a578063fc2a88c31461079a578063fc2dbebc146107b057600080fd5b8063a4c0ed36146105bb578063a608a1e1146105db578063bf17e5591461060e578063c3f909d41461062e57600080fd5b80638ea98117116100d15780638ea98117146105465780639cfc058e146105665780639eccacf614610579578063a3907d71146105a657600080fd5b806379ba5097146104e65780637fb5d19d146104fb5780638da5cb5b1461051b57600080fd5b80633255c456116101645780634b1609351161013e5780634b1609351461043057806351cff8d91461045057806357a8070a1461047057806372e9d565146104b257600080fd5b80633255c456146103255780634306d3541461034557806348baa1c51461036557600080fd5b80631c4695f4116101a05780631c4695f41461027c5780631fe543e3146102d05780632f2770db146102f05780632f622e6b1461030557600080fd5b8063030932bb146101c7578063181f5a771461020e57806318b6f4c81461025a575b600080fd5b3480156101d357600080fd5b506101fb7f000000000000000000000000000000000000000000000000000000000000000081565b6040519081526020015b60405180910390f35b34801561021a57600080fd5b50604080518082018252601281527f56524656325772617070657220312e302e300000000000000000000000000000602082015290516102059190612e2f565b34801561026657600080fd5b5061027a610275366004612f5c565b6107d0565b005b34801561028857600080fd5b507f00000000000000000000000000000000000000000000000000000000000000005b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610205565b3480156102dc57600080fd5b5061027a6102eb366004612fae565b610958565b3480156102fc57600080fd5b5061027a6109d5565b34801561031157600080fd5b5061027a610320366004613084565b610a48565b34801561033157600080fd5b506101fb6103403660046130b3565b610b6f565b34801561035157600080fd5b506101fb6103603660046130dd565b610c95565b34801561037157600080fd5b506103ef6103803660046130f8565b60086020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff81169074010000000000000000000000000000000000000000810463ffffffff16907801000000000000000000000000000000000000000000000000900467ffffffffffffffff1683565b6040805173ffffffffffffffffffffffffffffffffffffffff909416845263ffffffff909216602084015267ffffffffffffffff1690820152606001610205565b34801561043c57600080fd5b506101fb61044b3660046130dd565b610dc9565b34801561045c57600080fd5b5061027a61046b366004613084565b610ee6565b34801561047c57600080fd5b506002546104a29074010000000000000000000000000000000000000000900460ff1681565b6040519015158152602001610205565b3480156104be57600080fd5b506102ab7f000000000000000000000000000000000000000000000000000000000000000081565b3480156104f257600080fd5b5061027a6110e7565b34801561050757600080fd5b506101fb6105163660046130b3565b6111e4565b34801561052757600080fd5b5060005473ffffffffffffffffffffffffffffffffffffffff166102ab565b34801561055257600080fd5b5061027a610561366004613084565b611317565b6101fb61057436600461316c565b6114a2565b34801561058557600080fd5b506002546102ab9073ffffffffffffffffffffffffffffffffffffffff1681565b3480156105b257600080fd5b5061027a61194d565b3480156105c757600080fd5b5061027a6105d63660046131e2565b6119a8565b3480156105e757600080fd5b506002546104a2907501000000000000000000000000000000000000000000900460ff1681565b34801561061a57600080fd5b5061027a6106293660046130dd565b611f15565b34801561063a57600080fd5b506005546006546007546003546002546040805195865263ffffffff68010000000000000000860481166020880152780100000000000000000000000000000000000000000000000086048116918701919091527c01000000000000000000000000000000000000000000000000000000008504811660608701526c010000000000000000000000008504811660808701527401000000000000000000000000000000000000000090940490931660a085015260ff80831660c086015261010092839004811660e0860152918401527601000000000000000000000000000000000000000000009091041661012082015261014001610205565b34801561074057600080fd5b5060065461076590700100000000000000000000000000000000900463ffffffff1681565b60405163ffffffff9091168152602001610205565b34801561078657600080fd5b5061027a610795366004613084565b611f96565b3480156107a657600080fd5b506101fb60045481565b3480156107bc57600080fd5b5061027a6107cb36600461324d565b611faa565b81516000036108145780610810576040517f6b81746e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5050565b81516024111561086e5781516040517f51200dce0000000000000000000000000000000000000000000000000000000081526108659160249160040161ffff92831681529116602082015260400190565b60405180910390fd5b600082602381518110610883576108836132f9565b6020910101517fff00000000000000000000000000000000000000000000000000000000000000167f01000000000000000000000000000000000000000000000000000000000000001490508080156108d95750815b15610910576040517f6048aa6800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8015801561091c575081155b15610953576040517f6b81746e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b505050565b60025473ffffffffffffffffffffffffffffffffffffffff1633146109cb576002546040517f1cf993f400000000000000000000000000000000000000000000000000000000815233600482015273ffffffffffffffffffffffffffffffffffffffff9091166024820152604401610865565b610810828261227b565b6109dd61245e565b600280547fffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff1675010000000000000000000000000000000000000000001790556040517f75884cdadc4a89e8b545db800057f06ec7f5338a08183c7ba515f2bfdd9fe1e190600090a1565b610a5061245e565b604051479060009073ffffffffffffffffffffffffffffffffffffffff84169083908381818185875af1925050503d8060008114610aaa576040519150601f19603f3d011682016040523d82523d6000602084013e610aaf565b606091505b5050905080610b1a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f6661696c656420746f207769746864726177206e6174697665000000000000006044820152606401610865565b8273ffffffffffffffffffffffffffffffffffffffff167fc303ca808382409472acbbf899c316cf439f409f6584aae22df86dfa3c9ed50483604051610b6291815260200190565b60405180910390a2505050565b60025460009074010000000000000000000000000000000000000000900460ff16610bf6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f77726170706572206973206e6f7420636f6e66696775726564000000000000006044820152606401610865565b6002547501000000000000000000000000000000000000000000900460ff1615610c7c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f777261707065722069732064697361626c6564000000000000000000000000006044820152606401610865565b610c8c8363ffffffff16836124e1565b90505b92915050565b60025460009074010000000000000000000000000000000000000000900460ff16610d1c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f77726170706572206973206e6f7420636f6e66696775726564000000000000006044820152606401610865565b6002547501000000000000000000000000000000000000000000900460ff1615610da2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f777261707065722069732064697361626c6564000000000000000000000000006044820152606401610865565b6000610dac6125f8565b509050610dc08363ffffffff163a8361274e565b9150505b919050565b60025460009074010000000000000000000000000000000000000000900460ff16610e50576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f77726170706572206973206e6f7420636f6e66696775726564000000000000006044820152606401610865565b6002547501000000000000000000000000000000000000000000900460ff1615610ed6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f777261707065722069732064697361626c6564000000000000000000000000006044820152606401610865565b610c8f8263ffffffff163a6124e1565b610eee61245e565b6040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201526000907f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16906370a0823190602401602060405180830381865afa158015610f7b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f9f9190613328565b6040517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8481166004830152602482018390529192507f00000000000000000000000000000000000000000000000000000000000000009091169063a9059cbb906044016020604051808303816000875af1158015611039573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061105d9190613341565b611093576040517f7c07fc4c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff167f7084f5476618d8e60b11ef0d7d3f06914655adb8793e28ff7f018d4c76d505d5826040516110db91815260200190565b60405180910390a25050565b60015473ffffffffffffffffffffffffffffffffffffffff163314611168576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f4d7573742062652070726f706f736564206f776e6572000000000000000000006044820152606401610865565b60008054337fffffffffffffffffffffffff00000000000000000000000000000000000000008083168217845560018054909116905560405173ffffffffffffffffffffffffffffffffffffffff90921692909183917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a350565b60025460009074010000000000000000000000000000000000000000900460ff1661126b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f77726170706572206973206e6f7420636f6e66696775726564000000000000006044820152606401610865565b6002547501000000000000000000000000000000000000000000900460ff16156112f1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f777261707065722069732064697361626c6564000000000000000000000000006044820152606401610865565b60006112fb6125f8565b50905061130f8463ffffffff16848361274e565b949350505050565b60005473ffffffffffffffffffffffffffffffffffffffff163314801590611357575060025473ffffffffffffffffffffffffffffffffffffffff163314155b156113db573361137c60005473ffffffffffffffffffffffffffffffffffffffff1690565b6002546040517f061db9c100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff93841660048201529183166024830152919091166044820152606401610865565b73ffffffffffffffffffffffffffffffffffffffff8116611428576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600280547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527fd1a6a14209a385a964d036e404cb5cfb71f4000cdb03c9366292430787261be6906020015b60405180910390a150565b60025460009074010000000000000000000000000000000000000000900460ff16611529576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f77726170706572206973206e6f7420636f6e66696775726564000000000000006044820152606401610865565b6002547501000000000000000000000000000000000000000000900460ff16156115af576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f777261707065722069732064697361626c6564000000000000000000000000006044820152606401610865565b6115ee83838080601f016020809104026020016040519081016040528093929190818152602001838380828437600092018290525092506107d0915050565b60006115f9876128ba565b9050600061160d8863ffffffff163a6124e1565b905080341015611679576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f66656520746f6f206c6f770000000000000000000000000000000000000000006044820152606401610865565b600254760100000000000000000000000000000000000000000000900460ff1663ffffffff87161115611708576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f6e756d576f72647320746f6f20686967680000000000000000000000000000006044820152606401610865565b60006040518060c0016040528060035481526020017f000000000000000000000000000000000000000000000000000000000000000081526020018961ffff1681526020016006600c9054906101000a900463ffffffff16858c61176c9190613394565b6117769190613394565b63ffffffff1681526020018863ffffffff16815260200187878080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050509152506002546040517f9b1c385e00000000000000000000000000000000000000000000000000000000815291925073ffffffffffffffffffffffffffffffffffffffff1690639b1c385e9061181c9084906004016133b8565b6020604051808303816000875af115801561183b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061185f9190613328565b6040805160608101825233815263ffffffff808d16602080840191825267ffffffffffffffff3a81168587019081526000888152600890935295909120935184549251955190911678010000000000000000000000000000000000000000000000000277ffffffffffffffffffffffffffffffffffffffffffffffff9590931674010000000000000000000000000000000000000000027fffffffffffffffff00000000000000000000000000000000000000000000000090921673ffffffffffffffffffffffffffffffffffffffff91909116171792909216919091179055935050505095945050505050565b61195561245e565b600280547fffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff1690556040517fc0f961051f97b04c496472d11cb6170d844e4b2c9dfd3b602a4fa0139712d48490600090a1565b60025474010000000000000000000000000000000000000000900460ff16611a2c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f77726170706572206973206e6f7420636f6e66696775726564000000000000006044820152606401610865565b6002547501000000000000000000000000000000000000000000900460ff1615611ab2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f777261707065722069732064697361626c6564000000000000000000000000006044820152606401610865565b3373ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001614611b51576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f6f6e6c792063616c6c61626c652066726f6d204c494e4b0000000000000000006044820152606401610865565b6000808080611b6285870187613415565b9350935093509350611b758160016107d0565b6000611b80856128ba565b9050600080611b8d6125f8565b915091506000611ba48863ffffffff163a8561274e565b9050808b1015611c10576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f66656520746f6f206c6f770000000000000000000000000000000000000000006044820152606401610865565b600254760100000000000000000000000000000000000000000000900460ff1663ffffffff87161115611c9f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f6e756d576f72647320746f6f20686967680000000000000000000000000000006044820152606401610865565b60006040518060c0016040528060035481526020017f000000000000000000000000000000000000000000000000000000000000000081526020018961ffff1681526020016006600c9054906101000a900463ffffffff16878c611d039190613394565b611d0d9190613394565b63ffffffff908116825289166020820152604090810188905260025490517f9b1c385e00000000000000000000000000000000000000000000000000000000815291925060009173ffffffffffffffffffffffffffffffffffffffff90911690639b1c385e90611d819085906004016133b8565b6020604051808303816000875af1158015611da0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611dc49190613328565b905060405180606001604052808f73ffffffffffffffffffffffffffffffffffffffff1681526020018b63ffffffff1681526020013a67ffffffffffffffff168152506008600083815260200190815260200160002060008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060208201518160000160146101000a81548163ffffffff021916908363ffffffff16021790555060408201518160000160186101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550905050806004819055508315611f05576005546040805183815260208101929092527f6ca648a381f22ead7e37773d934e64885dcf861fbfbb26c40354cbf0c4662d1a910160405180910390a15b5050505050505050505050505050565b611f1d61245e565b600680547fffffffffffffffffffffffff00000000ffffffffffffffffffffffffffffffff1670010000000000000000000000000000000063ffffffff8416908102919091179091556040519081527f697b48b8b76cebb09a54ec4ff810e8a181c96f65395d51c744db09c115d1d5d090602001611497565b611f9e61245e565b611fa7816128d2565b50565b611fb261245e565b8163ffffffff168163ffffffff161115612008576040517f2780dcb200000000000000000000000000000000000000000000000000000000815263ffffffff808316600483015283166024820152604401610865565b609b60ff89161115612052576040517f3acc511a00000000000000000000000000000000000000000000000000000000815260ff89166004820152609b6024820152604401610865565b609b60ff8816111561209c576040517f3acc511a00000000000000000000000000000000000000000000000000000000815260ff88166004820152609b6024820152604401610865565b896006600c6101000a81548163ffffffff021916908363ffffffff16021790555088600660146101000a81548163ffffffff021916908363ffffffff16021790555087600760006101000a81548160ff021916908360ff16021790555086600760016101000a81548160ff021916908360ff1602179055508560038190555084600260166101000a81548160ff021916908360ff1602179055506001600260146101000a81548160ff02191690831515021790555083600660086101000a81548163ffffffff021916908363ffffffff1602179055508260058190555081600660186101000a81548163ffffffff021916908363ffffffff160217905550806006601c6101000a81548163ffffffff021916908363ffffffff1602179055507fb18fd84519589131d50ae195b0aea1b042c3c0b25a53bb894d9d81c78980c20f8a8a8a8a8a8a8a8a8a6006601c9054906101000a900463ffffffff166040516122679a9998979695949392919063ffffffff9a8b168152988a1660208a015260ff97881660408a0152958716606089015260808801949094529190941660a086015292851660c085015260e08401929092529083166101008301529091166101208201526101400190565b60405180910390a150505050505050505050565b60008281526008602081815260408084208151606081018352815473ffffffffffffffffffffffffffffffffffffffff808216835274010000000000000000000000000000000000000000820463ffffffff1683870152780100000000000000000000000000000000000000000000000090910467ffffffffffffffff169382019390935287865293909252929055805190918116612376576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f72657175657374206e6f7420666f756e640000000000000000000000000000006044820152606401610865565b600080631fe543e360e01b8686604051602401612394929190613484565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050509050600061240a856020015163ffffffff1685846129c7565b9050806124555760405173ffffffffffffffffffffffffffffffffffffffff85169088907fc551b83c151f2d1c7eeb938ac59008e0409f1c1dc1e2f112449d4d79b458902290600090a35b50505050505050565b60005473ffffffffffffffffffffffffffffffffffffffff1633146124df576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f4f6e6c792063616c6c61626c65206279206f776e6572000000000000000000006044820152606401610865565b565b6006546000908190612509906c01000000000000000000000000900463ffffffff16846134d2565b60065490915060009061253590700100000000000000000000000000000000900463ffffffff16612a13565b6006546125609074010000000000000000000000000000000000000000900463ffffffff16876134e9565b61256a90866134d2565b61257491906134e9565b6006549091506000906125ae907801000000000000000000000000000000000000000000000000900463ffffffff1664e8d4a510006134d2565b6007546064906125c19060ff16826134fc565b6125ce9060ff16856134d2565b6125d89190613544565b6125e291906134e9565b90506125ee81846134e9565b9695505050505050565b6000806000600660089054906101000a900463ffffffff16905060007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663feaf968c6040518163ffffffff1660e01b815260040160a060405180830381865afa15801561267f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126a39190613572565b50919650909250505063ffffffff8216158015906126cf57506126c681426135c2565b8263ffffffff16105b925082156126dd5760055493505b6000841215612748576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f496e76616c6964204c494e4b20776569207072696365000000000000000000006044820152606401610865565b50509091565b6006546000908190612776906c01000000000000000000000000900463ffffffff16856134d2565b6006549091506000906127a290700100000000000000000000000000000000900463ffffffff16612a13565b6006546127cd9074010000000000000000000000000000000000000000900463ffffffff16886134e9565b6127d790876134d2565b6127e191906134e9565b6006549091506000906128389063ffffffff7c0100000000000000000000000000000000000000000000000000000000820481169178010000000000000000000000000000000000000000000000009004166135d5565b61284d9063ffffffff1664e8d4a510006134d2565b60075460649061286590610100900460ff16826134fc565b6128729060ff16856134d2565b61287c9190613544565b61288691906134e9565b90508461289382856134e9565b6128a590670de0b6b3a76400006134d2565b6128af9190613544565b979650505050505050565b60006128c7603f836135f2565b610c8f906001613394565b3373ffffffffffffffffffffffffffffffffffffffff821603612951576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f43616e6e6f74207472616e7366657220746f2073656c660000000000000000006044820152606401610865565b600180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83811691821790925560008054604051929316917fed8889f560326eb138920d842192f0eb3dd22b4f139c87a2c57538e05bae12789190a350565b60005a6113888110156129d957600080fd5b6113888103905084604082048203116129f157600080fd5b50823b6129fd57600080fd5b60008083516020850160008789f1949350505050565b600046612a1f81612ad4565b15612ab4576000606c73ffffffffffffffffffffffffffffffffffffffff166341b247a86040518163ffffffff1660e01b815260040160c060405180830381865afa158015612a72573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a969190613615565b5050505091505083608c612aaa91906134e9565b61130f90826134d2565b612abd81612af7565b15612acb57610dc083612b31565b50600092915050565b600061a4b1821480612ae8575062066eed82145b80610c8f57505062066eee1490565b6000600a821480612b0957506101a482145b80612b16575062aa37dc82145b80612b22575061210582145b80610c8f57505062014a331490565b60008073420000000000000000000000000000000000000f73ffffffffffffffffffffffffffffffffffffffff1663519b4bd36040518163ffffffff1660e01b8152600401602060405180830381865afa158015612b93573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612bb79190613328565b9050600080612bc681866135c2565b90506000612bd58260106134d2565b612be08460046134d2565b612bea91906134e9565b9050600073420000000000000000000000000000000000000f73ffffffffffffffffffffffffffffffffffffffff16630c18c1626040518163ffffffff1660e01b8152600401602060405180830381865afa158015612c4d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c719190613328565b9050600073420000000000000000000000000000000000000f73ffffffffffffffffffffffffffffffffffffffff1663f45e65d86040518163ffffffff1660e01b8152600401602060405180830381865afa158015612cd4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612cf89190613328565b9050600073420000000000000000000000000000000000000f73ffffffffffffffffffffffffffffffffffffffff1663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015612d5b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612d7f9190613328565b90506000612d8e82600a61377f565b905060008184612d9e87896134e9565b612da8908c6134d2565b612db291906134d2565b612dbc9190613544565b9b9a5050505050505050505050565b6000815180845260005b81811015612df157602081850181015186830182015201612dd5565b5060006020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b602081526000610c8c6020830184612dcb565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715612eb857612eb8612e42565b604052919050565b600082601f830112612ed157600080fd5b813567ffffffffffffffff811115612eeb57612eeb612e42565b612f1c60207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f84011601612e71565b818152846020838601011115612f3157600080fd5b816020850160208301376000918101602001919091529392505050565b8015158114611fa757600080fd5b60008060408385031215612f6f57600080fd5b823567ffffffffffffffff811115612f8657600080fd5b612f9285828601612ec0565b9250506020830135612fa381612f4e565b809150509250929050565b60008060408385031215612fc157600080fd5b8235915060208084013567ffffffffffffffff80821115612fe157600080fd5b818601915086601f830112612ff557600080fd5b81358181111561300757613007612e42565b8060051b9150613018848301612e71565b818152918301840191848101908984111561303257600080fd5b938501935b8385101561305057843582529385019390850190613037565b8096505050505050509250929050565b803573ffffffffffffffffffffffffffffffffffffffff81168114610dc457600080fd5b60006020828403121561309657600080fd5b610c8c82613060565b803563ffffffff81168114610dc457600080fd5b600080604083850312156130c657600080fd5b6130cf8361309f565b946020939093013593505050565b6000602082840312156130ef57600080fd5b610c8c8261309f565b60006020828403121561310a57600080fd5b5035919050565b803561ffff81168114610dc457600080fd5b60008083601f84011261313557600080fd5b50813567ffffffffffffffff81111561314d57600080fd5b60208301915083602082850101111561316557600080fd5b9250929050565b60008060008060006080868803121561318457600080fd5b61318d8661309f565b945061319b60208701613111565b93506131a96040870161309f565b9250606086013567ffffffffffffffff8111156131c557600080fd5b6131d188828901613123565b969995985093965092949392505050565b600080600080606085870312156131f857600080fd5b61320185613060565b935060208501359250604085013567ffffffffffffffff81111561322457600080fd5b61323087828801613123565b95989497509550505050565b803560ff81168114610dc457600080fd5b6000806000806000806000806000806101408b8d03121561326d57600080fd5b6132768b61309f565b995061328460208c0161309f565b985061329260408c0161323c565b97506132a060608c0161323c565b965060808b013595506132b560a08c0161323c565b94506132c360c08c0161309f565b935060e08b013592506132d96101008c0161309f565b91506132e86101208c0161309f565b90509295989b9194979a5092959850565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60006020828403121561333a57600080fd5b5051919050565b60006020828403121561335357600080fd5b815161335e81612f4e565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b63ffffffff8181168382160190808211156133b1576133b1613365565b5092915050565b60208152815160208201526020820151604082015261ffff60408301511660608201526000606083015163ffffffff80821660808501528060808601511660a0850152505060a083015160c08084015261130f60e0840182612dcb565b6000806000806080858703121561342b57600080fd5b6134348561309f565b935061344260208601613111565b92506134506040860161309f565b9150606085013567ffffffffffffffff81111561346c57600080fd5b61347887828801612ec0565b91505092959194509250565b6000604082018483526020604081850152818551808452606086019150828701935060005b818110156134c5578451835293830193918301916001016134a9565b5090979650505050505050565b8082028115828204841417610c8f57610c8f613365565b80820180821115610c8f57610c8f613365565b60ff8181168382160190811115610c8f57610c8f613365565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60008261355357613553613515565b500490565b805169ffffffffffffffffffff81168114610dc457600080fd5b600080600080600060a0868803121561358a57600080fd5b61359386613558565b94506020860151935060408601519250606086015191506135b660808701613558565b90509295509295909350565b81810381811115610c8f57610c8f613365565b63ffffffff8281168282160390808211156133b1576133b1613365565b600063ffffffff8084168061360957613609613515565b92169190910492915050565b60008060008060008060c0878903121561362e57600080fd5b865195506020870151945060408701519350606087015192506080870151915060a087015190509295509295509295565b600181815b808511156136b857817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0482111561369e5761369e613365565b808516156136ab57918102915b93841c9390800290613664565b509250929050565b6000826136cf57506001610c8f565b816136dc57506000610c8f565b81600181146136f257600281146136fc57613718565b6001915050610c8f565b60ff84111561370d5761370d613365565b50506001821b610c8f565b5060208310610133831016604e8410600b841016171561373b575081810a610c8f565b613745838361365f565b807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0482111561377757613777613365565b029392505050565b6000610c8c83836136c056fea164736f6c6343000813000a", + ABI: "[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_link\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_linkNativeFeed\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_coordinator\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_subId\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"FailedToTransferLink\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint16\",\"name\":\"expectedMinimumLength\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"actualLength\",\"type\":\"uint16\"}],\"name\":\"IncorrectExtraArgsLength\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"premiumPercentage\",\"type\":\"uint8\"},{\"internalType\":\"uint8\",\"name\":\"max\",\"type\":\"uint8\"}],\"name\":\"InvalidPremiumPercentage\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"LINKPaymentInRequestRandomWordsInNative\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"LinkAlreadySet\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"flatFeeLinkDiscountPPM\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"flatFeeNativePPM\",\"type\":\"uint32\"}],\"name\":\"LinkDiscountTooHigh\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NativePaymentInOnTokenTransfer\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"have\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"want\",\"type\":\"address\"}],\"name\":\"OnlyCoordinatorCanFulfill\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"have\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"coordinator\",\"type\":\"address\"}],\"name\":\"OnlyOwnerOrCoordinator\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SubscriptionIdMissing\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ZeroAddress\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint32\",\"name\":\"wrapperGasOverhead\",\"type\":\"uint32\"},{\"indexed\":false,\"internalType\":\"uint32\",\"name\":\"coordinatorGasOverhead\",\"type\":\"uint32\"},{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"coordinatorNativePremiumPercentage\",\"type\":\"uint8\"},{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"coordinatorLinkPremiumPercentage\",\"type\":\"uint8\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"keyHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"maxNumWords\",\"type\":\"uint8\"},{\"indexed\":false,\"internalType\":\"uint32\",\"name\":\"stalenessSeconds\",\"type\":\"uint32\"},{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"fallbackWeiPerUnitLink\",\"type\":\"int256\"},{\"indexed\":false,\"internalType\":\"uint32\",\"name\":\"fulfillmentFlatFeeNativePPM\",\"type\":\"uint32\"},{\"indexed\":false,\"internalType\":\"uint32\",\"name\":\"fulfillmentFlatFeeLinkDiscountPPM\",\"type\":\"uint32\"}],\"name\":\"ConfigSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"vrfCoordinator\",\"type\":\"address\"}],\"name\":\"CoordinatorSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[],\"name\":\"Disabled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[],\"name\":\"Enabled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"requestId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"fallbackWeiPerUnitLink\",\"type\":\"int256\"}],\"name\":\"FallbackWeiPerUnitLinkUsed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint32\",\"name\":\"size\",\"type\":\"uint32\"}],\"name\":\"FulfillmentTxSizeSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"NativeWithdrawn\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"OwnershipTransferRequested\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"Withdrawn\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"requestId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"consumer\",\"type\":\"address\"}],\"name\":\"WrapperFulfillmentFailed\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"SUBSCRIPTION_ID\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"acceptOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"_callbackGasLimit\",\"type\":\"uint32\"}],\"name\":\"calculateRequestPrice\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"_callbackGasLimit\",\"type\":\"uint32\"}],\"name\":\"calculateRequestPriceNative\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"extraArgs\",\"type\":\"bytes\"},{\"internalType\":\"bool\",\"name\":\"isLinkMode\",\"type\":\"bool\"}],\"name\":\"checkPaymentMode\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"disable\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"enable\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"_callbackGasLimit\",\"type\":\"uint32\"},{\"internalType\":\"uint256\",\"name\":\"_requestGasPriceWei\",\"type\":\"uint256\"}],\"name\":\"estimateRequestPrice\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"_callbackGasLimit\",\"type\":\"uint32\"},{\"internalType\":\"uint256\",\"name\":\"_requestGasPriceWei\",\"type\":\"uint256\"}],\"name\":\"estimateRequestPriceNative\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getConfig\",\"outputs\":[{\"internalType\":\"int256\",\"name\":\"fallbackWeiPerUnitLink\",\"type\":\"int256\"},{\"internalType\":\"uint32\",\"name\":\"stalenessSeconds\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"fulfillmentFlatFeeNativePPM\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"fulfillmentFlatFeeLinkDiscountPPM\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"wrapperGasOverhead\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"coordinatorGasOverhead\",\"type\":\"uint32\"},{\"internalType\":\"uint8\",\"name\":\"wrapperNativePremiumPercentage\",\"type\":\"uint8\"},{\"internalType\":\"uint8\",\"name\":\"wrapperLinkPremiumPercentage\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"keyHash\",\"type\":\"bytes32\"},{\"internalType\":\"uint8\",\"name\":\"maxNumWords\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"i_link_native_feed\",\"outputs\":[{\"internalType\":\"contractAggregatorV3Interface\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"lastRequestId\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"link\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"link_native_feed\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_sender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"_data\",\"type\":\"bytes\"}],\"name\":\"onTokenTransfer\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"requestId\",\"type\":\"uint256\"},{\"internalType\":\"uint256[]\",\"name\":\"randomWords\",\"type\":\"uint256[]\"}],\"name\":\"rawFulfillRandomWords\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"_callbackGasLimit\",\"type\":\"uint32\"},{\"internalType\":\"uint16\",\"name\":\"_requestConfirmations\",\"type\":\"uint16\"},{\"internalType\":\"uint32\",\"name\":\"_numWords\",\"type\":\"uint32\"},{\"internalType\":\"bytes\",\"name\":\"extraArgs\",\"type\":\"bytes\"}],\"name\":\"requestRandomWordsInNative\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"requestId\",\"type\":\"uint256\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"s_callbacks\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"callbackAddress\",\"type\":\"address\"},{\"internalType\":\"uint32\",\"name\":\"callbackGasLimit\",\"type\":\"uint32\"},{\"internalType\":\"uint64\",\"name\":\"requestGasPrice\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"s_configured\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"s_disabled\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"s_fulfillmentTxSizeBytes\",\"outputs\":[{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"s_vrfCoordinator\",\"outputs\":[{\"internalType\":\"contractIVRFCoordinatorV2Plus\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"_wrapperGasOverhead\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"_coordinatorGasOverhead\",\"type\":\"uint32\"},{\"internalType\":\"uint8\",\"name\":\"_coordinatorNativePremiumPercentage\",\"type\":\"uint8\"},{\"internalType\":\"uint8\",\"name\":\"_coordinatorLinkPremiumPercentage\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"_keyHash\",\"type\":\"bytes32\"},{\"internalType\":\"uint8\",\"name\":\"_maxNumWords\",\"type\":\"uint8\"},{\"internalType\":\"uint32\",\"name\":\"_stalenessSeconds\",\"type\":\"uint32\"},{\"internalType\":\"int256\",\"name\":\"_fallbackWeiPerUnitLink\",\"type\":\"int256\"},{\"internalType\":\"uint32\",\"name\":\"_fulfillmentFlatFeeNativePPM\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"_fulfillmentFlatFeeLinkDiscountPPM\",\"type\":\"uint32\"}],\"name\":\"setConfig\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_vrfCoordinator\",\"type\":\"address\"}],\"name\":\"setCoordinator\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"size\",\"type\":\"uint32\"}],\"name\":\"setFulfillmentTxSize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"typeAndVersion\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_recipient\",\"type\":\"address\"}],\"name\":\"withdraw\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_recipient\",\"type\":\"address\"}],\"name\":\"withdrawNative\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", + Bin: "0x60e06040526006805463ffffffff60401b191669024400000000000000001790553480156200002d57600080fd5b5060405162003c6238038062003c628339810160408190526200005091620002a1565b813380600081620000a85760405162461bcd60e51b815260206004820152601860248201527f43616e6e6f7420736574206f776e657220746f207a65726f000000000000000060448201526064015b60405180910390fd5b600080546001600160a01b0319166001600160a01b0384811691909117909155811615620000db57620000db81620001d9565b5050506001600160a01b038116620001065760405163d92e233d60e01b815260040160405180910390fd5b600280546001600160a01b0319166001600160a01b0392831617905584811660a052831660c0526000819003620001505760405163a81c0bef60e01b815260040160405180910390fd5b60025460405163dc311dd360e01b8152600481018390526001600160a01b039091169063dc311dd390602401600060405180830381865afa1580156200019a573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052620001c4919081019062000321565b505050608092909252506200044a9350505050565b336001600160a01b03821603620002335760405162461bcd60e51b815260206004820152601760248201527f43616e6e6f74207472616e7366657220746f2073656c6600000000000000000060448201526064016200009f565b600180546001600160a01b0319166001600160a01b0383811691821790925560008054604051929316917fed8889f560326eb138920d842192f0eb3dd22b4f139c87a2c57538e05bae12789190a350565b80516001600160a01b03811681146200029c57600080fd5b919050565b60008060008060808587031215620002b857600080fd5b620002c38562000284565b9350620002d36020860162000284565b9250620002e36040860162000284565b6060959095015193969295505050565b80516001600160601b03811681146200029c57600080fd5b634e487b7160e01b600052604160045260246000fd5b600080600080600060a086880312156200033a57600080fd5b6200034586620002f3565b9450602062000356818801620002f3565b60408801519095506001600160401b0380821682146200037557600080fd5b8195506200038660608a0162000284565b945060808901519150808211156200039d57600080fd5b818901915089601f830112620003b257600080fd5b815181811115620003c757620003c76200030b565b8060051b604051601f19603f83011681018181108582111715620003ef57620003ef6200030b565b60405291825284820192508381018501918c8311156200040e57600080fd5b938501935b828510156200043757620004278562000284565b8452938501939285019262000413565b8096505050505050509295509295909350565b60805160a05160c0516137b7620004ab600039600081816105f701528181610628015261264501526000818161029601528181610f5a015281816110290152611b050152600081816101e40152818161175a0152611cf101526137b76000f3fe6080604052600436106101cd5760003560e01c80638da5cb5b116100f7578063afeec77411610095578063cdd8d88511610064578063cdd8d88514610777578063f2fde38b146107b5578063fc2a88c3146107d5578063fc2dbebc146107eb57600080fd5b8063afeec774146105e5578063b659e95f14610619578063bf17e5591461064c578063c3f909d41461066c57600080fd5b80639eccacf6116100d15780639eccacf614610550578063a3907d711461057d578063a4c0ed3614610592578063a608a1e1146105b257600080fd5b80638da5cb5b146104f25780638ea981171461051d5780639cfc058e1461053d57600080fd5b80633255c4561161016f57806351cff8d91161013e57806351cff8d91461045b57806357a8070a1461047b57806379ba5097146104bd5780637fb5d19d146104d257600080fd5b80633255c456146103305780634306d3541461035057806348baa1c5146103705780634b1609351461043b57600080fd5b80631c4695f4116101ab5780631c4695f4146102875780631fe543e3146102db5780632f2770db146102fb5780632f622e6b1461031057600080fd5b8063030932bb146101d2578063181f5a771461021957806318b6f4c814610265575b600080fd5b3480156101de57600080fd5b506102067f000000000000000000000000000000000000000000000000000000000000000081565b6040519081526020015b60405180910390f35b34801561022557600080fd5b50604080518082018252601281527f56524656325772617070657220312e302e300000000000000000000000000000602082015290516102109190612e4e565b34801561027157600080fd5b50610285610280366004612f7b565b61080b565b005b34801561029357600080fd5b507f00000000000000000000000000000000000000000000000000000000000000005b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610210565b3480156102e757600080fd5b506102856102f6366004612fcd565b610993565b34801561030757600080fd5b50610285610a10565b34801561031c57600080fd5b5061028561032b3660046130a3565b610a83565b34801561033c57600080fd5b5061020661034b3660046130d2565b610baa565b34801561035c57600080fd5b5061020661036b3660046130fc565b610cd0565b34801561037c57600080fd5b506103fa61038b366004613117565b60076020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff81169074010000000000000000000000000000000000000000810463ffffffff16907801000000000000000000000000000000000000000000000000900467ffffffffffffffff1683565b6040805173ffffffffffffffffffffffffffffffffffffffff909416845263ffffffff909216602084015267ffffffffffffffff1690820152606001610210565b34801561044757600080fd5b506102066104563660046130fc565b610e04565b34801561046757600080fd5b506102856104763660046130a3565b610f21565b34801561048757600080fd5b506002546104ad9074010000000000000000000000000000000000000000900460ff1681565b6040519015158152602001610210565b3480156104c957600080fd5b50610285611122565b3480156104de57600080fd5b506102066104ed3660046130d2565b61121f565b3480156104fe57600080fd5b5060005473ffffffffffffffffffffffffffffffffffffffff166102b6565b34801561052957600080fd5b506102856105383660046130a3565b611352565b61020661054b36600461318b565b6114dd565b34801561055c57600080fd5b506002546102b69073ffffffffffffffffffffffffffffffffffffffff1681565b34801561058957600080fd5b50610285611988565b34801561059e57600080fd5b506102856105ad366004613201565b6119e3565b3480156105be57600080fd5b506002546104ad907501000000000000000000000000000000000000000000900460ff1681565b3480156105f157600080fd5b506102b67f000000000000000000000000000000000000000000000000000000000000000081565b34801561062557600080fd5b507f00000000000000000000000000000000000000000000000000000000000000006102b6565b34801561065857600080fd5b506102856106673660046130fc565b611f50565b34801561067857600080fd5b506005546006546003546002546040805194855263ffffffff80851660208701527001000000000000000000000000000000008504811691860191909152740100000000000000000000000000000000000000008404811660608601526401000000008404811660808601526c0100000000000000000000000084041660a085015260ff78010000000000000000000000000000000000000000000000008404811660c0860152790100000000000000000000000000000000000000000000000000909304831660e085015261010084019190915276010000000000000000000000000000000000000000000090041661012082015261014001610210565b34801561078357600080fd5b506006546107a09068010000000000000000900463ffffffff1681565b60405163ffffffff9091168152602001610210565b3480156107c157600080fd5b506102856107d03660046130a3565b611fc9565b3480156107e157600080fd5b5061020660045481565b3480156107f757600080fd5b5061028561080636600461326c565b611fdd565b815160000361084f578061084b576040517f6b81746e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5050565b8151602411156108a95781516040517f51200dce0000000000000000000000000000000000000000000000000000000081526108a09160249160040161ffff92831681529116602082015260400190565b60405180910390fd5b6000826023815181106108be576108be613318565b6020910101517fff00000000000000000000000000000000000000000000000000000000000000167f01000000000000000000000000000000000000000000000000000000000000001490508080156109145750815b1561094b576040517f6048aa6800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80158015610957575081155b1561098e576040517f6b81746e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b505050565b60025473ffffffffffffffffffffffffffffffffffffffff163314610a06576002546040517f1cf993f400000000000000000000000000000000000000000000000000000000815233600482015273ffffffffffffffffffffffffffffffffffffffff90911660248201526044016108a0565b61084b82826122ae565b610a18612491565b600280547fffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff1675010000000000000000000000000000000000000000001790556040517f75884cdadc4a89e8b545db800057f06ec7f5338a08183c7ba515f2bfdd9fe1e190600090a1565b610a8b612491565b604051479060009073ffffffffffffffffffffffffffffffffffffffff84169083908381818185875af1925050503d8060008114610ae5576040519150601f19603f3d011682016040523d82523d6000602084013e610aea565b606091505b5050905080610b55576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f6661696c656420746f207769746864726177206e61746976650000000000000060448201526064016108a0565b8273ffffffffffffffffffffffffffffffffffffffff167fc303ca808382409472acbbf899c316cf439f409f6584aae22df86dfa3c9ed50483604051610b9d91815260200190565b60405180910390a2505050565b60025460009074010000000000000000000000000000000000000000900460ff16610c31576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f77726170706572206973206e6f7420636f6e666967757265640000000000000060448201526064016108a0565b6002547501000000000000000000000000000000000000000000900460ff1615610cb7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f777261707065722069732064697361626c65640000000000000000000000000060448201526064016108a0565b610cc78363ffffffff1683612514565b90505b92915050565b60025460009074010000000000000000000000000000000000000000900460ff16610d57576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f77726170706572206973206e6f7420636f6e666967757265640000000000000060448201526064016108a0565b6002547501000000000000000000000000000000000000000000900460ff1615610ddd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f777261707065722069732064697361626c65640000000000000000000000000060448201526064016108a0565b6000610de7612627565b509050610dfb8363ffffffff163a8361277d565b9150505b919050565b60025460009074010000000000000000000000000000000000000000900460ff16610e8b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f77726170706572206973206e6f7420636f6e666967757265640000000000000060448201526064016108a0565b6002547501000000000000000000000000000000000000000000900460ff1615610f11576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f777261707065722069732064697361626c65640000000000000000000000000060448201526064016108a0565b610cca8263ffffffff163a612514565b610f29612491565b6040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201526000907f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16906370a0823190602401602060405180830381865afa158015610fb6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fda9190613347565b6040517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8481166004830152602482018390529192507f00000000000000000000000000000000000000000000000000000000000000009091169063a9059cbb906044016020604051808303816000875af1158015611074573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110989190613360565b6110ce576040517f7c07fc4c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff167f7084f5476618d8e60b11ef0d7d3f06914655adb8793e28ff7f018d4c76d505d58260405161111691815260200190565b60405180910390a25050565b60015473ffffffffffffffffffffffffffffffffffffffff1633146111a3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f4d7573742062652070726f706f736564206f776e65720000000000000000000060448201526064016108a0565b60008054337fffffffffffffffffffffffff00000000000000000000000000000000000000008083168217845560018054909116905560405173ffffffffffffffffffffffffffffffffffffffff90921692909183917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a350565b60025460009074010000000000000000000000000000000000000000900460ff166112a6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f77726170706572206973206e6f7420636f6e666967757265640000000000000060448201526064016108a0565b6002547501000000000000000000000000000000000000000000900460ff161561132c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f777261707065722069732064697361626c65640000000000000000000000000060448201526064016108a0565b6000611336612627565b50905061134a8463ffffffff16848361277d565b949350505050565b60005473ffffffffffffffffffffffffffffffffffffffff163314801590611392575060025473ffffffffffffffffffffffffffffffffffffffff163314155b1561141657336113b760005473ffffffffffffffffffffffffffffffffffffffff1690565b6002546040517f061db9c100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff938416600482015291831660248301529190911660448201526064016108a0565b73ffffffffffffffffffffffffffffffffffffffff8116611463576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600280547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527fd1a6a14209a385a964d036e404cb5cfb71f4000cdb03c9366292430787261be6906020015b60405180910390a150565b60025460009074010000000000000000000000000000000000000000900460ff16611564576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f77726170706572206973206e6f7420636f6e666967757265640000000000000060448201526064016108a0565b6002547501000000000000000000000000000000000000000000900460ff16156115ea576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f777261707065722069732064697361626c65640000000000000000000000000060448201526064016108a0565b61162983838080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920182905250925061080b915050565b6000611634876128d9565b905060006116488863ffffffff163a612514565b9050803410156116b4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f66656520746f6f206c6f7700000000000000000000000000000000000000000060448201526064016108a0565b600254760100000000000000000000000000000000000000000000900460ff1663ffffffff87161115611743576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f6e756d576f72647320746f6f206869676800000000000000000000000000000060448201526064016108a0565b60006040518060c0016040528060035481526020017f000000000000000000000000000000000000000000000000000000000000000081526020018961ffff168152602001600660049054906101000a900463ffffffff16858c6117a791906133b3565b6117b191906133b3565b63ffffffff1681526020018863ffffffff16815260200187878080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050509152506002546040517f9b1c385e00000000000000000000000000000000000000000000000000000000815291925073ffffffffffffffffffffffffffffffffffffffff1690639b1c385e906118579084906004016133d7565b6020604051808303816000875af1158015611876573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061189a9190613347565b6040805160608101825233815263ffffffff808d16602080840191825267ffffffffffffffff3a81168587019081526000888152600790935295909120935184549251955190911678010000000000000000000000000000000000000000000000000277ffffffffffffffffffffffffffffffffffffffffffffffff9590931674010000000000000000000000000000000000000000027fffffffffffffffff00000000000000000000000000000000000000000000000090921673ffffffffffffffffffffffffffffffffffffffff91909116171792909216919091179055935050505095945050505050565b611990612491565b600280547fffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff1690556040517fc0f961051f97b04c496472d11cb6170d844e4b2c9dfd3b602a4fa0139712d48490600090a1565b60025474010000000000000000000000000000000000000000900460ff16611a67576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f77726170706572206973206e6f7420636f6e666967757265640000000000000060448201526064016108a0565b6002547501000000000000000000000000000000000000000000900460ff1615611aed576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f777261707065722069732064697361626c65640000000000000000000000000060448201526064016108a0565b3373ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001614611b8c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f6f6e6c792063616c6c61626c652066726f6d204c494e4b00000000000000000060448201526064016108a0565b6000808080611b9d85870187613434565b9350935093509350611bb081600161080b565b6000611bbb856128d9565b9050600080611bc8612627565b915091506000611bdf8863ffffffff163a8561277d565b9050808b1015611c4b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f66656520746f6f206c6f7700000000000000000000000000000000000000000060448201526064016108a0565b600254760100000000000000000000000000000000000000000000900460ff1663ffffffff87161115611cda576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f6e756d576f72647320746f6f206869676800000000000000000000000000000060448201526064016108a0565b60006040518060c0016040528060035481526020017f000000000000000000000000000000000000000000000000000000000000000081526020018961ffff168152602001600660049054906101000a900463ffffffff16878c611d3e91906133b3565b611d4891906133b3565b63ffffffff908116825289166020820152604090810188905260025490517f9b1c385e00000000000000000000000000000000000000000000000000000000815291925060009173ffffffffffffffffffffffffffffffffffffffff90911690639b1c385e90611dbc9085906004016133d7565b6020604051808303816000875af1158015611ddb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611dff9190613347565b905060405180606001604052808f73ffffffffffffffffffffffffffffffffffffffff1681526020018b63ffffffff1681526020013a67ffffffffffffffff168152506007600083815260200190815260200160002060008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060208201518160000160146101000a81548163ffffffff021916908363ffffffff16021790555060408201518160000160186101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550905050806004819055508315611f40576005546040805183815260208101929092527f6ca648a381f22ead7e37773d934e64885dcf861fbfbb26c40354cbf0c4662d1a910160405180910390a15b5050505050505050505050505050565b611f58612491565b600680547fffffffffffffffffffffffffffffffffffffffff00000000ffffffffffffffff166801000000000000000063ffffffff8416908102919091179091556040519081527f697b48b8b76cebb09a54ec4ff810e8a181c96f65395d51c744db09c115d1d5d0906020016114d2565b611fd1612491565b611fda816128f1565b50565b611fe5612491565b8163ffffffff168163ffffffff16111561203b576040517f2780dcb200000000000000000000000000000000000000000000000000000000815263ffffffff8083166004830152831660248201526044016108a0565b609b60ff89161115612085576040517f3acc511a00000000000000000000000000000000000000000000000000000000815260ff89166004820152609b60248201526044016108a0565b609b60ff881611156120cf576040517f3acc511a00000000000000000000000000000000000000000000000000000000815260ff88166004820152609b60248201526044016108a0565b89600660046101000a81548163ffffffff021916908363ffffffff160217905550886006600c6101000a81548163ffffffff021916908363ffffffff16021790555087600660186101000a81548160ff021916908360ff16021790555086600660196101000a81548160ff021916908360ff1602179055508560038190555084600260166101000a81548160ff021916908360ff1602179055506001600260146101000a81548160ff02191690831515021790555083600660006101000a81548163ffffffff021916908363ffffffff1602179055508260058190555081600660106101000a81548163ffffffff021916908363ffffffff16021790555080600660146101000a81548163ffffffff021916908363ffffffff1602179055507fb18fd84519589131d50ae195b0aea1b042c3c0b25a53bb894d9d81c78980c20f8a8a8a8a8a8a8a8a8a600660149054906101000a900463ffffffff1660405161229a9a9998979695949392919063ffffffff9a8b168152988a1660208a015260ff97881660408a0152958716606089015260808801949094529190941660a086015292851660c085015260e08401929092529083166101008301529091166101208201526101400190565b60405180910390a150505050505050505050565b60008281526007602081815260408084208151606081018352815473ffffffffffffffffffffffffffffffffffffffff808216835274010000000000000000000000000000000000000000820463ffffffff1683870152780100000000000000000000000000000000000000000000000090910467ffffffffffffffff1693820193909352878652939092529290558051909181166123a9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f72657175657374206e6f7420666f756e6400000000000000000000000000000060448201526064016108a0565b600080631fe543e360e01b86866040516024016123c79291906134a3565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050509050600061243d856020015163ffffffff1685846129e6565b9050806124885760405173ffffffffffffffffffffffffffffffffffffffff85169088907fc551b83c151f2d1c7eeb938ac59008e0409f1c1dc1e2f112449d4d79b458902290600090a35b50505050505050565b60005473ffffffffffffffffffffffffffffffffffffffff163314612512576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f4f6e6c792063616c6c61626c65206279206f776e65720000000000000000000060448201526064016108a0565b565b600654600090819061253490640100000000900463ffffffff16846134f1565b6006549091506000906125589068010000000000000000900463ffffffff16612a32565b60065461257b906c01000000000000000000000000900463ffffffff1687613508565b61258590866134f1565b61258f9190613508565b6006549091506000906125c190700100000000000000000000000000000000900463ffffffff1664e8d4a510006134f1565b6006546064906125f0907801000000000000000000000000000000000000000000000000900460ff168261351b565b6125fd9060ff16856134f1565b6126079190613563565b6126119190613508565b905061261d8184613508565b9695505050505050565b6000806000600660009054906101000a900463ffffffff16905060007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663feaf968c6040518163ffffffff1660e01b815260040160a060405180830381865afa1580156126ae573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126d29190613591565b50919650909250505063ffffffff8216158015906126fe57506126f581426135e1565b8263ffffffff16105b9250821561270c5760055493505b6000841215612777576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f496e76616c6964204c494e4b207765692070726963650000000000000000000060448201526064016108a0565b50509091565b600654600090819061279d90640100000000900463ffffffff16856134f1565b6006549091506000906127c19068010000000000000000900463ffffffff16612a32565b6006546127e4906c01000000000000000000000000900463ffffffff1688613508565b6127ee90876134f1565b6127f89190613508565b60065490915060009061283f9063ffffffff7401000000000000000000000000000000000000000082048116917001000000000000000000000000000000009004166135f4565b6128549063ffffffff1664e8d4a510006134f1565b60065460649061288490790100000000000000000000000000000000000000000000000000900460ff168261351b565b6128919060ff16856134f1565b61289b9190613563565b6128a59190613508565b9050846128b28285613508565b6128c490670de0b6b3a76400006134f1565b6128ce9190613563565b979650505050505050565b60006128e6603f83613611565b610cca9060016133b3565b3373ffffffffffffffffffffffffffffffffffffffff821603612970576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f43616e6e6f74207472616e7366657220746f2073656c6600000000000000000060448201526064016108a0565b600180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83811691821790925560008054604051929316917fed8889f560326eb138920d842192f0eb3dd22b4f139c87a2c57538e05bae12789190a350565b60005a6113888110156129f857600080fd5b611388810390508460408204820311612a1057600080fd5b50823b612a1c57600080fd5b60008083516020850160008789f1949350505050565b600046612a3e81612af3565b15612ad3576000606c73ffffffffffffffffffffffffffffffffffffffff166341b247a86040518163ffffffff1660e01b815260040160c060405180830381865afa158015612a91573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ab59190613634565b5050505091505083608c612ac99190613508565b61134a90826134f1565b612adc81612b16565b15612aea57610dfb83612b50565b50600092915050565b600061a4b1821480612b07575062066eed82145b80610cca57505062066eee1490565b6000600a821480612b2857506101a482145b80612b35575062aa37dc82145b80612b41575061210582145b80610cca57505062014a331490565b60008073420000000000000000000000000000000000000f73ffffffffffffffffffffffffffffffffffffffff1663519b4bd36040518163ffffffff1660e01b8152600401602060405180830381865afa158015612bb2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612bd69190613347565b9050600080612be581866135e1565b90506000612bf48260106134f1565b612bff8460046134f1565b612c099190613508565b9050600073420000000000000000000000000000000000000f73ffffffffffffffffffffffffffffffffffffffff16630c18c1626040518163ffffffff1660e01b8152600401602060405180830381865afa158015612c6c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c909190613347565b9050600073420000000000000000000000000000000000000f73ffffffffffffffffffffffffffffffffffffffff1663f45e65d86040518163ffffffff1660e01b8152600401602060405180830381865afa158015612cf3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612d179190613347565b9050600073420000000000000000000000000000000000000f73ffffffffffffffffffffffffffffffffffffffff1663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015612d7a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612d9e9190613347565b90506000612dad82600a61379e565b905060008184612dbd8789613508565b612dc7908c6134f1565b612dd191906134f1565b612ddb9190613563565b9b9a5050505050505050505050565b6000815180845260005b81811015612e1057602081850181015186830182015201612df4565b5060006020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b602081526000610cc76020830184612dea565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715612ed757612ed7612e61565b604052919050565b600082601f830112612ef057600080fd5b813567ffffffffffffffff811115612f0a57612f0a612e61565b612f3b60207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f84011601612e90565b818152846020838601011115612f5057600080fd5b816020850160208301376000918101602001919091529392505050565b8015158114611fda57600080fd5b60008060408385031215612f8e57600080fd5b823567ffffffffffffffff811115612fa557600080fd5b612fb185828601612edf565b9250506020830135612fc281612f6d565b809150509250929050565b60008060408385031215612fe057600080fd5b8235915060208084013567ffffffffffffffff8082111561300057600080fd5b818601915086601f83011261301457600080fd5b81358181111561302657613026612e61565b8060051b9150613037848301612e90565b818152918301840191848101908984111561305157600080fd5b938501935b8385101561306f57843582529385019390850190613056565b8096505050505050509250929050565b803573ffffffffffffffffffffffffffffffffffffffff81168114610dff57600080fd5b6000602082840312156130b557600080fd5b610cc78261307f565b803563ffffffff81168114610dff57600080fd5b600080604083850312156130e557600080fd5b6130ee836130be565b946020939093013593505050565b60006020828403121561310e57600080fd5b610cc7826130be565b60006020828403121561312957600080fd5b5035919050565b803561ffff81168114610dff57600080fd5b60008083601f84011261315457600080fd5b50813567ffffffffffffffff81111561316c57600080fd5b60208301915083602082850101111561318457600080fd5b9250929050565b6000806000806000608086880312156131a357600080fd5b6131ac866130be565b94506131ba60208701613130565b93506131c8604087016130be565b9250606086013567ffffffffffffffff8111156131e457600080fd5b6131f088828901613142565b969995985093965092949392505050565b6000806000806060858703121561321757600080fd5b6132208561307f565b935060208501359250604085013567ffffffffffffffff81111561324357600080fd5b61324f87828801613142565b95989497509550505050565b803560ff81168114610dff57600080fd5b6000806000806000806000806000806101408b8d03121561328c57600080fd5b6132958b6130be565b99506132a360208c016130be565b98506132b160408c0161325b565b97506132bf60608c0161325b565b965060808b013595506132d460a08c0161325b565b94506132e260c08c016130be565b935060e08b013592506132f86101008c016130be565b91506133076101208c016130be565b90509295989b9194979a5092959850565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60006020828403121561335957600080fd5b5051919050565b60006020828403121561337257600080fd5b815161337d81612f6d565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b63ffffffff8181168382160190808211156133d0576133d0613384565b5092915050565b60208152815160208201526020820151604082015261ffff60408301511660608201526000606083015163ffffffff80821660808501528060808601511660a0850152505060a083015160c08084015261134a60e0840182612dea565b6000806000806080858703121561344a57600080fd5b613453856130be565b935061346160208601613130565b925061346f604086016130be565b9150606085013567ffffffffffffffff81111561348b57600080fd5b61349787828801612edf565b91505092959194509250565b6000604082018483526020604081850152818551808452606086019150828701935060005b818110156134e4578451835293830193918301916001016134c8565b5090979650505050505050565b8082028115828204841417610cca57610cca613384565b80820180821115610cca57610cca613384565b60ff8181168382160190811115610cca57610cca613384565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60008261357257613572613534565b500490565b805169ffffffffffffffffffff81168114610dff57600080fd5b600080600080600060a086880312156135a957600080fd5b6135b286613577565b94506020860151935060408601519250606086015191506135d560808701613577565b90509295509295909350565b81810381811115610cca57610cca613384565b63ffffffff8281168282160390808211156133d0576133d0613384565b600063ffffffff8084168061362857613628613534565b92169190910492915050565b60008060008060008060c0878903121561364d57600080fd5b865195506020870151945060408701519350606087015192506080870151915060a087015190509295509295509295565b600181815b808511156136d757817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048211156136bd576136bd613384565b808516156136ca57918102915b93841c9390800290613683565b509250929050565b6000826136ee57506001610cca565b816136fb57506000610cca565b8160018114613711576002811461371b57613737565b6001915050610cca565b60ff84111561372c5761372c613384565b50506001821b610cca565b5060208310610133831016604e8410600b841016171561375a575081810a610cca565b613764838361367e565b807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0482111561379657613796613384565b029392505050565b6000610cc783836136df56fea164736f6c6343000813000a", } var VRFV2PlusWrapperABI = VRFV2PlusWrapperMetaData.ABI @@ -171,28 +171,6 @@ func (_VRFV2PlusWrapper *VRFV2PlusWrapperTransactorRaw) Transact(opts *bind.Tran return _VRFV2PlusWrapper.Contract.contract.Transact(opts, method, params...) } -func (_VRFV2PlusWrapper *VRFV2PlusWrapperCaller) LINKNATIVEFEED(opts *bind.CallOpts) (common.Address, error) { - var out []interface{} - err := _VRFV2PlusWrapper.contract.Call(opts, &out, "LINK_NATIVE_FEED") - - if err != nil { - return *new(common.Address), err - } - - out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) - - return out0, err - -} - -func (_VRFV2PlusWrapper *VRFV2PlusWrapperSession) LINKNATIVEFEED() (common.Address, error) { - return _VRFV2PlusWrapper.Contract.LINKNATIVEFEED(&_VRFV2PlusWrapper.CallOpts) -} - -func (_VRFV2PlusWrapper *VRFV2PlusWrapperCallerSession) LINKNATIVEFEED() (common.Address, error) { - return _VRFV2PlusWrapper.Contract.LINKNATIVEFEED(&_VRFV2PlusWrapper.CallOpts) -} - func (_VRFV2PlusWrapper *VRFV2PlusWrapperCaller) SUBSCRIPTIONID(opts *bind.CallOpts) (*big.Int, error) { var out []interface{} err := _VRFV2PlusWrapper.contract.Call(opts, &out, "SUBSCRIPTION_ID") @@ -361,6 +339,28 @@ func (_VRFV2PlusWrapper *VRFV2PlusWrapperCallerSession) GetConfig() (GetConfig, return _VRFV2PlusWrapper.Contract.GetConfig(&_VRFV2PlusWrapper.CallOpts) } +func (_VRFV2PlusWrapper *VRFV2PlusWrapperCaller) ILinkNativeFeed(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _VRFV2PlusWrapper.contract.Call(opts, &out, "i_link_native_feed") + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +func (_VRFV2PlusWrapper *VRFV2PlusWrapperSession) ILinkNativeFeed() (common.Address, error) { + return _VRFV2PlusWrapper.Contract.ILinkNativeFeed(&_VRFV2PlusWrapper.CallOpts) +} + +func (_VRFV2PlusWrapper *VRFV2PlusWrapperCallerSession) ILinkNativeFeed() (common.Address, error) { + return _VRFV2PlusWrapper.Contract.ILinkNativeFeed(&_VRFV2PlusWrapper.CallOpts) +} + func (_VRFV2PlusWrapper *VRFV2PlusWrapperCaller) LastRequestId(opts *bind.CallOpts) (*big.Int, error) { var out []interface{} err := _VRFV2PlusWrapper.contract.Call(opts, &out, "lastRequestId") @@ -405,6 +405,28 @@ func (_VRFV2PlusWrapper *VRFV2PlusWrapperCallerSession) Link() (common.Address, return _VRFV2PlusWrapper.Contract.Link(&_VRFV2PlusWrapper.CallOpts) } +func (_VRFV2PlusWrapper *VRFV2PlusWrapperCaller) LinkNativeFeed(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _VRFV2PlusWrapper.contract.Call(opts, &out, "link_native_feed") + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +func (_VRFV2PlusWrapper *VRFV2PlusWrapperSession) LinkNativeFeed() (common.Address, error) { + return _VRFV2PlusWrapper.Contract.LinkNativeFeed(&_VRFV2PlusWrapper.CallOpts) +} + +func (_VRFV2PlusWrapper *VRFV2PlusWrapperCallerSession) LinkNativeFeed() (common.Address, error) { + return _VRFV2PlusWrapper.Contract.LinkNativeFeed(&_VRFV2PlusWrapper.CallOpts) +} + func (_VRFV2PlusWrapper *VRFV2PlusWrapperCaller) Owner(opts *bind.CallOpts) (common.Address, error) { var out []interface{} err := _VRFV2PlusWrapper.contract.Call(opts, &out, "owner") @@ -2183,8 +2205,6 @@ func (_VRFV2PlusWrapper *VRFV2PlusWrapper) Address() common.Address { } type VRFV2PlusWrapperInterface interface { - LINKNATIVEFEED(opts *bind.CallOpts) (common.Address, error) - SUBSCRIPTIONID(opts *bind.CallOpts) (*big.Int, error) CalculateRequestPrice(opts *bind.CallOpts, _callbackGasLimit uint32) (*big.Int, error) @@ -2201,10 +2221,14 @@ type VRFV2PlusWrapperInterface interface { error) + ILinkNativeFeed(opts *bind.CallOpts) (common.Address, error) + LastRequestId(opts *bind.CallOpts) (*big.Int, error) Link(opts *bind.CallOpts) (common.Address, error) + LinkNativeFeed(opts *bind.CallOpts) (common.Address, error) + Owner(opts *bind.CallOpts) (common.Address, error) SCallbacks(opts *bind.CallOpts, arg0 *big.Int) (SCallbacks, diff --git a/core/gethwrappers/generation/generated-wrapper-dependency-versions-do-not-edit.txt b/core/gethwrappers/generation/generated-wrapper-dependency-versions-do-not-edit.txt index 268971129ed..3aa487059fa 100644 --- a/core/gethwrappers/generation/generated-wrapper-dependency-versions-do-not-edit.txt +++ b/core/gethwrappers/generation/generated-wrapper-dependency-versions-do-not-edit.txt @@ -126,6 +126,6 @@ vrfv2plus_client: ../../contracts/solc/v0.8.19/VRFV2PlusClient/VRFV2PlusClient.a vrfv2plus_consumer_example: ../../contracts/solc/v0.8.19/VRFV2PlusConsumerExample/VRFV2PlusConsumerExample.abi ../../contracts/solc/v0.8.19/VRFV2PlusConsumerExample/VRFV2PlusConsumerExample.bin e25c1981638fb9ea8fdd21600d6954f999bf65b98ba4e4a3f8fb9f7858334e19 vrfv2plus_malicious_migrator: ../../contracts/solc/v0.8.19/VRFV2PlusMaliciousMigrator/VRFV2PlusMaliciousMigrator.abi ../../contracts/solc/v0.8.19/VRFV2PlusMaliciousMigrator/VRFV2PlusMaliciousMigrator.bin 5dff20621fe6ed3bed75fe4b65381b0d4b1f6286ee3571553dbeb57213b53416 vrfv2plus_reverting_example: ../../contracts/solc/v0.8.19/VRFV2PlusRevertingExample/VRFV2PlusRevertingExample.abi ../../contracts/solc/v0.8.19/VRFV2PlusRevertingExample/VRFV2PlusRevertingExample.bin ebc2e96af9bf3aaa8b9cb048f8ecfec9987ee8b90126b740722c6b6427ab128e -vrfv2plus_wrapper: ../../contracts/solc/v0.8.19/VRFV2PlusWrapper/VRFV2PlusWrapper.abi ../../contracts/solc/v0.8.19/VRFV2PlusWrapper/VRFV2PlusWrapper.bin 81b6cd84aa0824f58a04651ef5eae29363c4e77904687b1d226d4dbc4f07030b +vrfv2plus_wrapper: ../../contracts/solc/v0.8.19/VRFV2PlusWrapper/VRFV2PlusWrapper.abi ../../contracts/solc/v0.8.19/VRFV2PlusWrapper/VRFV2PlusWrapper.bin 932e1bd38d750cb9a0fa98b1ddd559cc772ac0358877982e79c771cbb4572182 vrfv2plus_wrapper_consumer_example: ../../contracts/solc/v0.8.19/VRFV2PlusWrapperConsumerExample/VRFV2PlusWrapperConsumerExample.abi ../../contracts/solc/v0.8.19/VRFV2PlusWrapperConsumerExample/VRFV2PlusWrapperConsumerExample.bin 130217ffb341f19d1b3bda27f5c4a10567ac21ac3a49c9933bbdb068e8420177 vrfv2plus_wrapper_load_test_consumer: ../../contracts/solc/v0.8.19/VRFV2PlusWrapperLoadTestConsumer/VRFV2PlusWrapperLoadTestConsumer.abi ../../contracts/solc/v0.8.19/VRFV2PlusWrapperLoadTestConsumer/VRFV2PlusWrapperLoadTestConsumer.bin f2880b0469b82ddd4a11aa81ac12916f2912555dfe64829416a583fd82ebf3ab From 7e51ee55e69285f15a8a2baf0a5b3e5779779fa1 Mon Sep 17 00:00:00 2001 From: Iva Brajer Date: Tue, 26 Mar 2024 17:52:06 +0100 Subject: [PATCH 6/7] Fixed linter issue --- contracts/src/v0.8/vrf/dev/VRFV2PlusWrapper.sol | 2 +- contracts/src/v0.8/vrf/dev/interfaces/IVRFV2PlusWrapper.sol | 2 +- contracts/test/v0.8/foundry/vrf/VRFV2PlusWrapper.t.sol | 2 +- .../generated/vrfv2plus_wrapper/vrfv2plus_wrapper.go | 6 +++--- .../generated-wrapper-dependency-versions-do-not-edit.txt | 2 +- 5 files changed, 7 insertions(+), 7 deletions(-) diff --git a/contracts/src/v0.8/vrf/dev/VRFV2PlusWrapper.sol b/contracts/src/v0.8/vrf/dev/VRFV2PlusWrapper.sol index 05a445fcce3..d1a1c8bee3b 100644 --- a/contracts/src/v0.8/vrf/dev/VRFV2PlusWrapper.sol +++ b/contracts/src/v0.8/vrf/dev/VRFV2PlusWrapper.sol @@ -578,7 +578,7 @@ contract VRFV2PlusWrapper is ConfirmedOwner, TypeAndVersionInterface, VRFConsume return address(i_link); } - function link_native_feed() external view override returns (address) { + function linkNativeFeed() external view override returns (address) { return address(i_link_native_feed); } diff --git a/contracts/src/v0.8/vrf/dev/interfaces/IVRFV2PlusWrapper.sol b/contracts/src/v0.8/vrf/dev/interfaces/IVRFV2PlusWrapper.sol index 7d8895fb5e4..93f6bf0ef11 100644 --- a/contracts/src/v0.8/vrf/dev/interfaces/IVRFV2PlusWrapper.sol +++ b/contracts/src/v0.8/vrf/dev/interfaces/IVRFV2PlusWrapper.sol @@ -89,5 +89,5 @@ interface IVRFV2PlusWrapper { ) external payable returns (uint256 requestId); function link() external view returns (address); - function link_native_feed() external view returns (address); + function linkNativeFeed() external view returns (address); } diff --git a/contracts/test/v0.8/foundry/vrf/VRFV2PlusWrapper.t.sol b/contracts/test/v0.8/foundry/vrf/VRFV2PlusWrapper.t.sol index b4ffadc8613..d9da49c2ca4 100644 --- a/contracts/test/v0.8/foundry/vrf/VRFV2PlusWrapper.t.sol +++ b/contracts/test/v0.8/foundry/vrf/VRFV2PlusWrapper.t.sol @@ -52,7 +52,7 @@ contract VRFV2PlusWrapperTest is BaseTest { uint256(s_wrapperSubscriptionId) ); assertEq(address(s_linkToken), address(s_wrapper.link())); - assertEq(address(s_linkNativeFeed), address(s_wrapper.link_native_feed())); + assertEq(address(s_linkNativeFeed), address(s_wrapper.linkNativeFeed())); // Add wrapper as a consumer to the wrapper's subscription. s_testCoordinator.addConsumer(uint256(s_wrapperSubscriptionId), address(s_wrapper)); diff --git a/core/gethwrappers/generated/vrfv2plus_wrapper/vrfv2plus_wrapper.go b/core/gethwrappers/generated/vrfv2plus_wrapper/vrfv2plus_wrapper.go index 7f86d06d6a6..2f52591259d 100644 --- a/core/gethwrappers/generated/vrfv2plus_wrapper/vrfv2plus_wrapper.go +++ b/core/gethwrappers/generated/vrfv2plus_wrapper/vrfv2plus_wrapper.go @@ -31,8 +31,8 @@ var ( ) var VRFV2PlusWrapperMetaData = &bind.MetaData{ - ABI: "[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_link\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_linkNativeFeed\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_coordinator\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_subId\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"FailedToTransferLink\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint16\",\"name\":\"expectedMinimumLength\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"actualLength\",\"type\":\"uint16\"}],\"name\":\"IncorrectExtraArgsLength\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"premiumPercentage\",\"type\":\"uint8\"},{\"internalType\":\"uint8\",\"name\":\"max\",\"type\":\"uint8\"}],\"name\":\"InvalidPremiumPercentage\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"LINKPaymentInRequestRandomWordsInNative\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"LinkAlreadySet\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"flatFeeLinkDiscountPPM\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"flatFeeNativePPM\",\"type\":\"uint32\"}],\"name\":\"LinkDiscountTooHigh\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NativePaymentInOnTokenTransfer\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"have\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"want\",\"type\":\"address\"}],\"name\":\"OnlyCoordinatorCanFulfill\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"have\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"coordinator\",\"type\":\"address\"}],\"name\":\"OnlyOwnerOrCoordinator\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SubscriptionIdMissing\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ZeroAddress\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint32\",\"name\":\"wrapperGasOverhead\",\"type\":\"uint32\"},{\"indexed\":false,\"internalType\":\"uint32\",\"name\":\"coordinatorGasOverhead\",\"type\":\"uint32\"},{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"coordinatorNativePremiumPercentage\",\"type\":\"uint8\"},{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"coordinatorLinkPremiumPercentage\",\"type\":\"uint8\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"keyHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"maxNumWords\",\"type\":\"uint8\"},{\"indexed\":false,\"internalType\":\"uint32\",\"name\":\"stalenessSeconds\",\"type\":\"uint32\"},{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"fallbackWeiPerUnitLink\",\"type\":\"int256\"},{\"indexed\":false,\"internalType\":\"uint32\",\"name\":\"fulfillmentFlatFeeNativePPM\",\"type\":\"uint32\"},{\"indexed\":false,\"internalType\":\"uint32\",\"name\":\"fulfillmentFlatFeeLinkDiscountPPM\",\"type\":\"uint32\"}],\"name\":\"ConfigSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"vrfCoordinator\",\"type\":\"address\"}],\"name\":\"CoordinatorSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[],\"name\":\"Disabled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[],\"name\":\"Enabled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"requestId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"fallbackWeiPerUnitLink\",\"type\":\"int256\"}],\"name\":\"FallbackWeiPerUnitLinkUsed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint32\",\"name\":\"size\",\"type\":\"uint32\"}],\"name\":\"FulfillmentTxSizeSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"NativeWithdrawn\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"OwnershipTransferRequested\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"Withdrawn\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"requestId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"consumer\",\"type\":\"address\"}],\"name\":\"WrapperFulfillmentFailed\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"SUBSCRIPTION_ID\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"acceptOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"_callbackGasLimit\",\"type\":\"uint32\"}],\"name\":\"calculateRequestPrice\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"_callbackGasLimit\",\"type\":\"uint32\"}],\"name\":\"calculateRequestPriceNative\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"extraArgs\",\"type\":\"bytes\"},{\"internalType\":\"bool\",\"name\":\"isLinkMode\",\"type\":\"bool\"}],\"name\":\"checkPaymentMode\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"disable\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"enable\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"_callbackGasLimit\",\"type\":\"uint32\"},{\"internalType\":\"uint256\",\"name\":\"_requestGasPriceWei\",\"type\":\"uint256\"}],\"name\":\"estimateRequestPrice\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"_callbackGasLimit\",\"type\":\"uint32\"},{\"internalType\":\"uint256\",\"name\":\"_requestGasPriceWei\",\"type\":\"uint256\"}],\"name\":\"estimateRequestPriceNative\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getConfig\",\"outputs\":[{\"internalType\":\"int256\",\"name\":\"fallbackWeiPerUnitLink\",\"type\":\"int256\"},{\"internalType\":\"uint32\",\"name\":\"stalenessSeconds\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"fulfillmentFlatFeeNativePPM\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"fulfillmentFlatFeeLinkDiscountPPM\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"wrapperGasOverhead\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"coordinatorGasOverhead\",\"type\":\"uint32\"},{\"internalType\":\"uint8\",\"name\":\"wrapperNativePremiumPercentage\",\"type\":\"uint8\"},{\"internalType\":\"uint8\",\"name\":\"wrapperLinkPremiumPercentage\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"keyHash\",\"type\":\"bytes32\"},{\"internalType\":\"uint8\",\"name\":\"maxNumWords\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"i_link_native_feed\",\"outputs\":[{\"internalType\":\"contractAggregatorV3Interface\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"lastRequestId\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"link\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"link_native_feed\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_sender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"_data\",\"type\":\"bytes\"}],\"name\":\"onTokenTransfer\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"requestId\",\"type\":\"uint256\"},{\"internalType\":\"uint256[]\",\"name\":\"randomWords\",\"type\":\"uint256[]\"}],\"name\":\"rawFulfillRandomWords\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"_callbackGasLimit\",\"type\":\"uint32\"},{\"internalType\":\"uint16\",\"name\":\"_requestConfirmations\",\"type\":\"uint16\"},{\"internalType\":\"uint32\",\"name\":\"_numWords\",\"type\":\"uint32\"},{\"internalType\":\"bytes\",\"name\":\"extraArgs\",\"type\":\"bytes\"}],\"name\":\"requestRandomWordsInNative\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"requestId\",\"type\":\"uint256\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"s_callbacks\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"callbackAddress\",\"type\":\"address\"},{\"internalType\":\"uint32\",\"name\":\"callbackGasLimit\",\"type\":\"uint32\"},{\"internalType\":\"uint64\",\"name\":\"requestGasPrice\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"s_configured\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"s_disabled\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"s_fulfillmentTxSizeBytes\",\"outputs\":[{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"s_vrfCoordinator\",\"outputs\":[{\"internalType\":\"contractIVRFCoordinatorV2Plus\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"_wrapperGasOverhead\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"_coordinatorGasOverhead\",\"type\":\"uint32\"},{\"internalType\":\"uint8\",\"name\":\"_coordinatorNativePremiumPercentage\",\"type\":\"uint8\"},{\"internalType\":\"uint8\",\"name\":\"_coordinatorLinkPremiumPercentage\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"_keyHash\",\"type\":\"bytes32\"},{\"internalType\":\"uint8\",\"name\":\"_maxNumWords\",\"type\":\"uint8\"},{\"internalType\":\"uint32\",\"name\":\"_stalenessSeconds\",\"type\":\"uint32\"},{\"internalType\":\"int256\",\"name\":\"_fallbackWeiPerUnitLink\",\"type\":\"int256\"},{\"internalType\":\"uint32\",\"name\":\"_fulfillmentFlatFeeNativePPM\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"_fulfillmentFlatFeeLinkDiscountPPM\",\"type\":\"uint32\"}],\"name\":\"setConfig\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_vrfCoordinator\",\"type\":\"address\"}],\"name\":\"setCoordinator\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"size\",\"type\":\"uint32\"}],\"name\":\"setFulfillmentTxSize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"typeAndVersion\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_recipient\",\"type\":\"address\"}],\"name\":\"withdraw\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_recipient\",\"type\":\"address\"}],\"name\":\"withdrawNative\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", - Bin: "0x60e06040526006805463ffffffff60401b191669024400000000000000001790553480156200002d57600080fd5b5060405162003c6238038062003c628339810160408190526200005091620002a1565b813380600081620000a85760405162461bcd60e51b815260206004820152601860248201527f43616e6e6f7420736574206f776e657220746f207a65726f000000000000000060448201526064015b60405180910390fd5b600080546001600160a01b0319166001600160a01b0384811691909117909155811615620000db57620000db81620001d9565b5050506001600160a01b038116620001065760405163d92e233d60e01b815260040160405180910390fd5b600280546001600160a01b0319166001600160a01b0392831617905584811660a052831660c0526000819003620001505760405163a81c0bef60e01b815260040160405180910390fd5b60025460405163dc311dd360e01b8152600481018390526001600160a01b039091169063dc311dd390602401600060405180830381865afa1580156200019a573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052620001c4919081019062000321565b505050608092909252506200044a9350505050565b336001600160a01b03821603620002335760405162461bcd60e51b815260206004820152601760248201527f43616e6e6f74207472616e7366657220746f2073656c6600000000000000000060448201526064016200009f565b600180546001600160a01b0319166001600160a01b0383811691821790925560008054604051929316917fed8889f560326eb138920d842192f0eb3dd22b4f139c87a2c57538e05bae12789190a350565b80516001600160a01b03811681146200029c57600080fd5b919050565b60008060008060808587031215620002b857600080fd5b620002c38562000284565b9350620002d36020860162000284565b9250620002e36040860162000284565b6060959095015193969295505050565b80516001600160601b03811681146200029c57600080fd5b634e487b7160e01b600052604160045260246000fd5b600080600080600060a086880312156200033a57600080fd5b6200034586620002f3565b9450602062000356818801620002f3565b60408801519095506001600160401b0380821682146200037557600080fd5b8195506200038660608a0162000284565b945060808901519150808211156200039d57600080fd5b818901915089601f830112620003b257600080fd5b815181811115620003c757620003c76200030b565b8060051b604051601f19603f83011681018181108582111715620003ef57620003ef6200030b565b60405291825284820192508381018501918c8311156200040e57600080fd5b938501935b828510156200043757620004278562000284565b8452938501939285019262000413565b8096505050505050509295509295909350565b60805160a05160c0516137b7620004ab600039600081816105f701528181610628015261264501526000818161029601528181610f5a015281816110290152611b050152600081816101e40152818161175a0152611cf101526137b76000f3fe6080604052600436106101cd5760003560e01c80638da5cb5b116100f7578063afeec77411610095578063cdd8d88511610064578063cdd8d88514610777578063f2fde38b146107b5578063fc2a88c3146107d5578063fc2dbebc146107eb57600080fd5b8063afeec774146105e5578063b659e95f14610619578063bf17e5591461064c578063c3f909d41461066c57600080fd5b80639eccacf6116100d15780639eccacf614610550578063a3907d711461057d578063a4c0ed3614610592578063a608a1e1146105b257600080fd5b80638da5cb5b146104f25780638ea981171461051d5780639cfc058e1461053d57600080fd5b80633255c4561161016f57806351cff8d91161013e57806351cff8d91461045b57806357a8070a1461047b57806379ba5097146104bd5780637fb5d19d146104d257600080fd5b80633255c456146103305780634306d3541461035057806348baa1c5146103705780634b1609351461043b57600080fd5b80631c4695f4116101ab5780631c4695f4146102875780631fe543e3146102db5780632f2770db146102fb5780632f622e6b1461031057600080fd5b8063030932bb146101d2578063181f5a771461021957806318b6f4c814610265575b600080fd5b3480156101de57600080fd5b506102067f000000000000000000000000000000000000000000000000000000000000000081565b6040519081526020015b60405180910390f35b34801561022557600080fd5b50604080518082018252601281527f56524656325772617070657220312e302e300000000000000000000000000000602082015290516102109190612e4e565b34801561027157600080fd5b50610285610280366004612f7b565b61080b565b005b34801561029357600080fd5b507f00000000000000000000000000000000000000000000000000000000000000005b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610210565b3480156102e757600080fd5b506102856102f6366004612fcd565b610993565b34801561030757600080fd5b50610285610a10565b34801561031c57600080fd5b5061028561032b3660046130a3565b610a83565b34801561033c57600080fd5b5061020661034b3660046130d2565b610baa565b34801561035c57600080fd5b5061020661036b3660046130fc565b610cd0565b34801561037c57600080fd5b506103fa61038b366004613117565b60076020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff81169074010000000000000000000000000000000000000000810463ffffffff16907801000000000000000000000000000000000000000000000000900467ffffffffffffffff1683565b6040805173ffffffffffffffffffffffffffffffffffffffff909416845263ffffffff909216602084015267ffffffffffffffff1690820152606001610210565b34801561044757600080fd5b506102066104563660046130fc565b610e04565b34801561046757600080fd5b506102856104763660046130a3565b610f21565b34801561048757600080fd5b506002546104ad9074010000000000000000000000000000000000000000900460ff1681565b6040519015158152602001610210565b3480156104c957600080fd5b50610285611122565b3480156104de57600080fd5b506102066104ed3660046130d2565b61121f565b3480156104fe57600080fd5b5060005473ffffffffffffffffffffffffffffffffffffffff166102b6565b34801561052957600080fd5b506102856105383660046130a3565b611352565b61020661054b36600461318b565b6114dd565b34801561055c57600080fd5b506002546102b69073ffffffffffffffffffffffffffffffffffffffff1681565b34801561058957600080fd5b50610285611988565b34801561059e57600080fd5b506102856105ad366004613201565b6119e3565b3480156105be57600080fd5b506002546104ad907501000000000000000000000000000000000000000000900460ff1681565b3480156105f157600080fd5b506102b67f000000000000000000000000000000000000000000000000000000000000000081565b34801561062557600080fd5b507f00000000000000000000000000000000000000000000000000000000000000006102b6565b34801561065857600080fd5b506102856106673660046130fc565b611f50565b34801561067857600080fd5b506005546006546003546002546040805194855263ffffffff80851660208701527001000000000000000000000000000000008504811691860191909152740100000000000000000000000000000000000000008404811660608601526401000000008404811660808601526c0100000000000000000000000084041660a085015260ff78010000000000000000000000000000000000000000000000008404811660c0860152790100000000000000000000000000000000000000000000000000909304831660e085015261010084019190915276010000000000000000000000000000000000000000000090041661012082015261014001610210565b34801561078357600080fd5b506006546107a09068010000000000000000900463ffffffff1681565b60405163ffffffff9091168152602001610210565b3480156107c157600080fd5b506102856107d03660046130a3565b611fc9565b3480156107e157600080fd5b5061020660045481565b3480156107f757600080fd5b5061028561080636600461326c565b611fdd565b815160000361084f578061084b576040517f6b81746e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5050565b8151602411156108a95781516040517f51200dce0000000000000000000000000000000000000000000000000000000081526108a09160249160040161ffff92831681529116602082015260400190565b60405180910390fd5b6000826023815181106108be576108be613318565b6020910101517fff00000000000000000000000000000000000000000000000000000000000000167f01000000000000000000000000000000000000000000000000000000000000001490508080156109145750815b1561094b576040517f6048aa6800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80158015610957575081155b1561098e576040517f6b81746e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b505050565b60025473ffffffffffffffffffffffffffffffffffffffff163314610a06576002546040517f1cf993f400000000000000000000000000000000000000000000000000000000815233600482015273ffffffffffffffffffffffffffffffffffffffff90911660248201526044016108a0565b61084b82826122ae565b610a18612491565b600280547fffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff1675010000000000000000000000000000000000000000001790556040517f75884cdadc4a89e8b545db800057f06ec7f5338a08183c7ba515f2bfdd9fe1e190600090a1565b610a8b612491565b604051479060009073ffffffffffffffffffffffffffffffffffffffff84169083908381818185875af1925050503d8060008114610ae5576040519150601f19603f3d011682016040523d82523d6000602084013e610aea565b606091505b5050905080610b55576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f6661696c656420746f207769746864726177206e61746976650000000000000060448201526064016108a0565b8273ffffffffffffffffffffffffffffffffffffffff167fc303ca808382409472acbbf899c316cf439f409f6584aae22df86dfa3c9ed50483604051610b9d91815260200190565b60405180910390a2505050565b60025460009074010000000000000000000000000000000000000000900460ff16610c31576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f77726170706572206973206e6f7420636f6e666967757265640000000000000060448201526064016108a0565b6002547501000000000000000000000000000000000000000000900460ff1615610cb7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f777261707065722069732064697361626c65640000000000000000000000000060448201526064016108a0565b610cc78363ffffffff1683612514565b90505b92915050565b60025460009074010000000000000000000000000000000000000000900460ff16610d57576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f77726170706572206973206e6f7420636f6e666967757265640000000000000060448201526064016108a0565b6002547501000000000000000000000000000000000000000000900460ff1615610ddd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f777261707065722069732064697361626c65640000000000000000000000000060448201526064016108a0565b6000610de7612627565b509050610dfb8363ffffffff163a8361277d565b9150505b919050565b60025460009074010000000000000000000000000000000000000000900460ff16610e8b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f77726170706572206973206e6f7420636f6e666967757265640000000000000060448201526064016108a0565b6002547501000000000000000000000000000000000000000000900460ff1615610f11576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f777261707065722069732064697361626c65640000000000000000000000000060448201526064016108a0565b610cca8263ffffffff163a612514565b610f29612491565b6040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201526000907f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16906370a0823190602401602060405180830381865afa158015610fb6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fda9190613347565b6040517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8481166004830152602482018390529192507f00000000000000000000000000000000000000000000000000000000000000009091169063a9059cbb906044016020604051808303816000875af1158015611074573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110989190613360565b6110ce576040517f7c07fc4c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff167f7084f5476618d8e60b11ef0d7d3f06914655adb8793e28ff7f018d4c76d505d58260405161111691815260200190565b60405180910390a25050565b60015473ffffffffffffffffffffffffffffffffffffffff1633146111a3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f4d7573742062652070726f706f736564206f776e65720000000000000000000060448201526064016108a0565b60008054337fffffffffffffffffffffffff00000000000000000000000000000000000000008083168217845560018054909116905560405173ffffffffffffffffffffffffffffffffffffffff90921692909183917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a350565b60025460009074010000000000000000000000000000000000000000900460ff166112a6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f77726170706572206973206e6f7420636f6e666967757265640000000000000060448201526064016108a0565b6002547501000000000000000000000000000000000000000000900460ff161561132c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f777261707065722069732064697361626c65640000000000000000000000000060448201526064016108a0565b6000611336612627565b50905061134a8463ffffffff16848361277d565b949350505050565b60005473ffffffffffffffffffffffffffffffffffffffff163314801590611392575060025473ffffffffffffffffffffffffffffffffffffffff163314155b1561141657336113b760005473ffffffffffffffffffffffffffffffffffffffff1690565b6002546040517f061db9c100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff938416600482015291831660248301529190911660448201526064016108a0565b73ffffffffffffffffffffffffffffffffffffffff8116611463576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600280547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527fd1a6a14209a385a964d036e404cb5cfb71f4000cdb03c9366292430787261be6906020015b60405180910390a150565b60025460009074010000000000000000000000000000000000000000900460ff16611564576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f77726170706572206973206e6f7420636f6e666967757265640000000000000060448201526064016108a0565b6002547501000000000000000000000000000000000000000000900460ff16156115ea576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f777261707065722069732064697361626c65640000000000000000000000000060448201526064016108a0565b61162983838080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920182905250925061080b915050565b6000611634876128d9565b905060006116488863ffffffff163a612514565b9050803410156116b4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f66656520746f6f206c6f7700000000000000000000000000000000000000000060448201526064016108a0565b600254760100000000000000000000000000000000000000000000900460ff1663ffffffff87161115611743576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f6e756d576f72647320746f6f206869676800000000000000000000000000000060448201526064016108a0565b60006040518060c0016040528060035481526020017f000000000000000000000000000000000000000000000000000000000000000081526020018961ffff168152602001600660049054906101000a900463ffffffff16858c6117a791906133b3565b6117b191906133b3565b63ffffffff1681526020018863ffffffff16815260200187878080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050509152506002546040517f9b1c385e00000000000000000000000000000000000000000000000000000000815291925073ffffffffffffffffffffffffffffffffffffffff1690639b1c385e906118579084906004016133d7565b6020604051808303816000875af1158015611876573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061189a9190613347565b6040805160608101825233815263ffffffff808d16602080840191825267ffffffffffffffff3a81168587019081526000888152600790935295909120935184549251955190911678010000000000000000000000000000000000000000000000000277ffffffffffffffffffffffffffffffffffffffffffffffff9590931674010000000000000000000000000000000000000000027fffffffffffffffff00000000000000000000000000000000000000000000000090921673ffffffffffffffffffffffffffffffffffffffff91909116171792909216919091179055935050505095945050505050565b611990612491565b600280547fffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff1690556040517fc0f961051f97b04c496472d11cb6170d844e4b2c9dfd3b602a4fa0139712d48490600090a1565b60025474010000000000000000000000000000000000000000900460ff16611a67576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f77726170706572206973206e6f7420636f6e666967757265640000000000000060448201526064016108a0565b6002547501000000000000000000000000000000000000000000900460ff1615611aed576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f777261707065722069732064697361626c65640000000000000000000000000060448201526064016108a0565b3373ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001614611b8c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f6f6e6c792063616c6c61626c652066726f6d204c494e4b00000000000000000060448201526064016108a0565b6000808080611b9d85870187613434565b9350935093509350611bb081600161080b565b6000611bbb856128d9565b9050600080611bc8612627565b915091506000611bdf8863ffffffff163a8561277d565b9050808b1015611c4b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f66656520746f6f206c6f7700000000000000000000000000000000000000000060448201526064016108a0565b600254760100000000000000000000000000000000000000000000900460ff1663ffffffff87161115611cda576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f6e756d576f72647320746f6f206869676800000000000000000000000000000060448201526064016108a0565b60006040518060c0016040528060035481526020017f000000000000000000000000000000000000000000000000000000000000000081526020018961ffff168152602001600660049054906101000a900463ffffffff16878c611d3e91906133b3565b611d4891906133b3565b63ffffffff908116825289166020820152604090810188905260025490517f9b1c385e00000000000000000000000000000000000000000000000000000000815291925060009173ffffffffffffffffffffffffffffffffffffffff90911690639b1c385e90611dbc9085906004016133d7565b6020604051808303816000875af1158015611ddb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611dff9190613347565b905060405180606001604052808f73ffffffffffffffffffffffffffffffffffffffff1681526020018b63ffffffff1681526020013a67ffffffffffffffff168152506007600083815260200190815260200160002060008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060208201518160000160146101000a81548163ffffffff021916908363ffffffff16021790555060408201518160000160186101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550905050806004819055508315611f40576005546040805183815260208101929092527f6ca648a381f22ead7e37773d934e64885dcf861fbfbb26c40354cbf0c4662d1a910160405180910390a15b5050505050505050505050505050565b611f58612491565b600680547fffffffffffffffffffffffffffffffffffffffff00000000ffffffffffffffff166801000000000000000063ffffffff8416908102919091179091556040519081527f697b48b8b76cebb09a54ec4ff810e8a181c96f65395d51c744db09c115d1d5d0906020016114d2565b611fd1612491565b611fda816128f1565b50565b611fe5612491565b8163ffffffff168163ffffffff16111561203b576040517f2780dcb200000000000000000000000000000000000000000000000000000000815263ffffffff8083166004830152831660248201526044016108a0565b609b60ff89161115612085576040517f3acc511a00000000000000000000000000000000000000000000000000000000815260ff89166004820152609b60248201526044016108a0565b609b60ff881611156120cf576040517f3acc511a00000000000000000000000000000000000000000000000000000000815260ff88166004820152609b60248201526044016108a0565b89600660046101000a81548163ffffffff021916908363ffffffff160217905550886006600c6101000a81548163ffffffff021916908363ffffffff16021790555087600660186101000a81548160ff021916908360ff16021790555086600660196101000a81548160ff021916908360ff1602179055508560038190555084600260166101000a81548160ff021916908360ff1602179055506001600260146101000a81548160ff02191690831515021790555083600660006101000a81548163ffffffff021916908363ffffffff1602179055508260058190555081600660106101000a81548163ffffffff021916908363ffffffff16021790555080600660146101000a81548163ffffffff021916908363ffffffff1602179055507fb18fd84519589131d50ae195b0aea1b042c3c0b25a53bb894d9d81c78980c20f8a8a8a8a8a8a8a8a8a600660149054906101000a900463ffffffff1660405161229a9a9998979695949392919063ffffffff9a8b168152988a1660208a015260ff97881660408a0152958716606089015260808801949094529190941660a086015292851660c085015260e08401929092529083166101008301529091166101208201526101400190565b60405180910390a150505050505050505050565b60008281526007602081815260408084208151606081018352815473ffffffffffffffffffffffffffffffffffffffff808216835274010000000000000000000000000000000000000000820463ffffffff1683870152780100000000000000000000000000000000000000000000000090910467ffffffffffffffff1693820193909352878652939092529290558051909181166123a9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f72657175657374206e6f7420666f756e6400000000000000000000000000000060448201526064016108a0565b600080631fe543e360e01b86866040516024016123c79291906134a3565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050509050600061243d856020015163ffffffff1685846129e6565b9050806124885760405173ffffffffffffffffffffffffffffffffffffffff85169088907fc551b83c151f2d1c7eeb938ac59008e0409f1c1dc1e2f112449d4d79b458902290600090a35b50505050505050565b60005473ffffffffffffffffffffffffffffffffffffffff163314612512576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f4f6e6c792063616c6c61626c65206279206f776e65720000000000000000000060448201526064016108a0565b565b600654600090819061253490640100000000900463ffffffff16846134f1565b6006549091506000906125589068010000000000000000900463ffffffff16612a32565b60065461257b906c01000000000000000000000000900463ffffffff1687613508565b61258590866134f1565b61258f9190613508565b6006549091506000906125c190700100000000000000000000000000000000900463ffffffff1664e8d4a510006134f1565b6006546064906125f0907801000000000000000000000000000000000000000000000000900460ff168261351b565b6125fd9060ff16856134f1565b6126079190613563565b6126119190613508565b905061261d8184613508565b9695505050505050565b6000806000600660009054906101000a900463ffffffff16905060007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663feaf968c6040518163ffffffff1660e01b815260040160a060405180830381865afa1580156126ae573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126d29190613591565b50919650909250505063ffffffff8216158015906126fe57506126f581426135e1565b8263ffffffff16105b9250821561270c5760055493505b6000841215612777576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f496e76616c6964204c494e4b207765692070726963650000000000000000000060448201526064016108a0565b50509091565b600654600090819061279d90640100000000900463ffffffff16856134f1565b6006549091506000906127c19068010000000000000000900463ffffffff16612a32565b6006546127e4906c01000000000000000000000000900463ffffffff1688613508565b6127ee90876134f1565b6127f89190613508565b60065490915060009061283f9063ffffffff7401000000000000000000000000000000000000000082048116917001000000000000000000000000000000009004166135f4565b6128549063ffffffff1664e8d4a510006134f1565b60065460649061288490790100000000000000000000000000000000000000000000000000900460ff168261351b565b6128919060ff16856134f1565b61289b9190613563565b6128a59190613508565b9050846128b28285613508565b6128c490670de0b6b3a76400006134f1565b6128ce9190613563565b979650505050505050565b60006128e6603f83613611565b610cca9060016133b3565b3373ffffffffffffffffffffffffffffffffffffffff821603612970576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f43616e6e6f74207472616e7366657220746f2073656c6600000000000000000060448201526064016108a0565b600180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83811691821790925560008054604051929316917fed8889f560326eb138920d842192f0eb3dd22b4f139c87a2c57538e05bae12789190a350565b60005a6113888110156129f857600080fd5b611388810390508460408204820311612a1057600080fd5b50823b612a1c57600080fd5b60008083516020850160008789f1949350505050565b600046612a3e81612af3565b15612ad3576000606c73ffffffffffffffffffffffffffffffffffffffff166341b247a86040518163ffffffff1660e01b815260040160c060405180830381865afa158015612a91573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ab59190613634565b5050505091505083608c612ac99190613508565b61134a90826134f1565b612adc81612b16565b15612aea57610dfb83612b50565b50600092915050565b600061a4b1821480612b07575062066eed82145b80610cca57505062066eee1490565b6000600a821480612b2857506101a482145b80612b35575062aa37dc82145b80612b41575061210582145b80610cca57505062014a331490565b60008073420000000000000000000000000000000000000f73ffffffffffffffffffffffffffffffffffffffff1663519b4bd36040518163ffffffff1660e01b8152600401602060405180830381865afa158015612bb2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612bd69190613347565b9050600080612be581866135e1565b90506000612bf48260106134f1565b612bff8460046134f1565b612c099190613508565b9050600073420000000000000000000000000000000000000f73ffffffffffffffffffffffffffffffffffffffff16630c18c1626040518163ffffffff1660e01b8152600401602060405180830381865afa158015612c6c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c909190613347565b9050600073420000000000000000000000000000000000000f73ffffffffffffffffffffffffffffffffffffffff1663f45e65d86040518163ffffffff1660e01b8152600401602060405180830381865afa158015612cf3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612d179190613347565b9050600073420000000000000000000000000000000000000f73ffffffffffffffffffffffffffffffffffffffff1663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015612d7a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612d9e9190613347565b90506000612dad82600a61379e565b905060008184612dbd8789613508565b612dc7908c6134f1565b612dd191906134f1565b612ddb9190613563565b9b9a5050505050505050505050565b6000815180845260005b81811015612e1057602081850181015186830182015201612df4565b5060006020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b602081526000610cc76020830184612dea565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715612ed757612ed7612e61565b604052919050565b600082601f830112612ef057600080fd5b813567ffffffffffffffff811115612f0a57612f0a612e61565b612f3b60207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f84011601612e90565b818152846020838601011115612f5057600080fd5b816020850160208301376000918101602001919091529392505050565b8015158114611fda57600080fd5b60008060408385031215612f8e57600080fd5b823567ffffffffffffffff811115612fa557600080fd5b612fb185828601612edf565b9250506020830135612fc281612f6d565b809150509250929050565b60008060408385031215612fe057600080fd5b8235915060208084013567ffffffffffffffff8082111561300057600080fd5b818601915086601f83011261301457600080fd5b81358181111561302657613026612e61565b8060051b9150613037848301612e90565b818152918301840191848101908984111561305157600080fd5b938501935b8385101561306f57843582529385019390850190613056565b8096505050505050509250929050565b803573ffffffffffffffffffffffffffffffffffffffff81168114610dff57600080fd5b6000602082840312156130b557600080fd5b610cc78261307f565b803563ffffffff81168114610dff57600080fd5b600080604083850312156130e557600080fd5b6130ee836130be565b946020939093013593505050565b60006020828403121561310e57600080fd5b610cc7826130be565b60006020828403121561312957600080fd5b5035919050565b803561ffff81168114610dff57600080fd5b60008083601f84011261315457600080fd5b50813567ffffffffffffffff81111561316c57600080fd5b60208301915083602082850101111561318457600080fd5b9250929050565b6000806000806000608086880312156131a357600080fd5b6131ac866130be565b94506131ba60208701613130565b93506131c8604087016130be565b9250606086013567ffffffffffffffff8111156131e457600080fd5b6131f088828901613142565b969995985093965092949392505050565b6000806000806060858703121561321757600080fd5b6132208561307f565b935060208501359250604085013567ffffffffffffffff81111561324357600080fd5b61324f87828801613142565b95989497509550505050565b803560ff81168114610dff57600080fd5b6000806000806000806000806000806101408b8d03121561328c57600080fd5b6132958b6130be565b99506132a360208c016130be565b98506132b160408c0161325b565b97506132bf60608c0161325b565b965060808b013595506132d460a08c0161325b565b94506132e260c08c016130be565b935060e08b013592506132f86101008c016130be565b91506133076101208c016130be565b90509295989b9194979a5092959850565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60006020828403121561335957600080fd5b5051919050565b60006020828403121561337257600080fd5b815161337d81612f6d565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b63ffffffff8181168382160190808211156133d0576133d0613384565b5092915050565b60208152815160208201526020820151604082015261ffff60408301511660608201526000606083015163ffffffff80821660808501528060808601511660a0850152505060a083015160c08084015261134a60e0840182612dea565b6000806000806080858703121561344a57600080fd5b613453856130be565b935061346160208601613130565b925061346f604086016130be565b9150606085013567ffffffffffffffff81111561348b57600080fd5b61349787828801612edf565b91505092959194509250565b6000604082018483526020604081850152818551808452606086019150828701935060005b818110156134e4578451835293830193918301916001016134c8565b5090979650505050505050565b8082028115828204841417610cca57610cca613384565b80820180821115610cca57610cca613384565b60ff8181168382160190811115610cca57610cca613384565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60008261357257613572613534565b500490565b805169ffffffffffffffffffff81168114610dff57600080fd5b600080600080600060a086880312156135a957600080fd5b6135b286613577565b94506020860151935060408601519250606086015191506135d560808701613577565b90509295509295909350565b81810381811115610cca57610cca613384565b63ffffffff8281168282160390808211156133d0576133d0613384565b600063ffffffff8084168061362857613628613534565b92169190910492915050565b60008060008060008060c0878903121561364d57600080fd5b865195506020870151945060408701519350606087015192506080870151915060a087015190509295509295509295565b600181815b808511156136d757817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048211156136bd576136bd613384565b808516156136ca57918102915b93841c9390800290613683565b509250929050565b6000826136ee57506001610cca565b816136fb57506000610cca565b8160018114613711576002811461371b57613737565b6001915050610cca565b60ff84111561372c5761372c613384565b50506001821b610cca565b5060208310610133831016604e8410600b841016171561375a575081810a610cca565b613764838361367e565b807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0482111561379657613796613384565b029392505050565b6000610cc783836136df56fea164736f6c6343000813000a", + ABI: "[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_link\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_linkNativeFeed\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_coordinator\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_subId\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"FailedToTransferLink\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint16\",\"name\":\"expectedMinimumLength\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"actualLength\",\"type\":\"uint16\"}],\"name\":\"IncorrectExtraArgsLength\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"premiumPercentage\",\"type\":\"uint8\"},{\"internalType\":\"uint8\",\"name\":\"max\",\"type\":\"uint8\"}],\"name\":\"InvalidPremiumPercentage\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"LINKPaymentInRequestRandomWordsInNative\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"LinkAlreadySet\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"flatFeeLinkDiscountPPM\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"flatFeeNativePPM\",\"type\":\"uint32\"}],\"name\":\"LinkDiscountTooHigh\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NativePaymentInOnTokenTransfer\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"have\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"want\",\"type\":\"address\"}],\"name\":\"OnlyCoordinatorCanFulfill\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"have\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"coordinator\",\"type\":\"address\"}],\"name\":\"OnlyOwnerOrCoordinator\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SubscriptionIdMissing\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ZeroAddress\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint32\",\"name\":\"wrapperGasOverhead\",\"type\":\"uint32\"},{\"indexed\":false,\"internalType\":\"uint32\",\"name\":\"coordinatorGasOverhead\",\"type\":\"uint32\"},{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"coordinatorNativePremiumPercentage\",\"type\":\"uint8\"},{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"coordinatorLinkPremiumPercentage\",\"type\":\"uint8\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"keyHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"maxNumWords\",\"type\":\"uint8\"},{\"indexed\":false,\"internalType\":\"uint32\",\"name\":\"stalenessSeconds\",\"type\":\"uint32\"},{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"fallbackWeiPerUnitLink\",\"type\":\"int256\"},{\"indexed\":false,\"internalType\":\"uint32\",\"name\":\"fulfillmentFlatFeeNativePPM\",\"type\":\"uint32\"},{\"indexed\":false,\"internalType\":\"uint32\",\"name\":\"fulfillmentFlatFeeLinkDiscountPPM\",\"type\":\"uint32\"}],\"name\":\"ConfigSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"vrfCoordinator\",\"type\":\"address\"}],\"name\":\"CoordinatorSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[],\"name\":\"Disabled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[],\"name\":\"Enabled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"requestId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"fallbackWeiPerUnitLink\",\"type\":\"int256\"}],\"name\":\"FallbackWeiPerUnitLinkUsed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint32\",\"name\":\"size\",\"type\":\"uint32\"}],\"name\":\"FulfillmentTxSizeSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"NativeWithdrawn\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"OwnershipTransferRequested\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"Withdrawn\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"requestId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"consumer\",\"type\":\"address\"}],\"name\":\"WrapperFulfillmentFailed\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"SUBSCRIPTION_ID\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"acceptOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"_callbackGasLimit\",\"type\":\"uint32\"}],\"name\":\"calculateRequestPrice\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"_callbackGasLimit\",\"type\":\"uint32\"}],\"name\":\"calculateRequestPriceNative\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"extraArgs\",\"type\":\"bytes\"},{\"internalType\":\"bool\",\"name\":\"isLinkMode\",\"type\":\"bool\"}],\"name\":\"checkPaymentMode\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"disable\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"enable\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"_callbackGasLimit\",\"type\":\"uint32\"},{\"internalType\":\"uint256\",\"name\":\"_requestGasPriceWei\",\"type\":\"uint256\"}],\"name\":\"estimateRequestPrice\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"_callbackGasLimit\",\"type\":\"uint32\"},{\"internalType\":\"uint256\",\"name\":\"_requestGasPriceWei\",\"type\":\"uint256\"}],\"name\":\"estimateRequestPriceNative\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getConfig\",\"outputs\":[{\"internalType\":\"int256\",\"name\":\"fallbackWeiPerUnitLink\",\"type\":\"int256\"},{\"internalType\":\"uint32\",\"name\":\"stalenessSeconds\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"fulfillmentFlatFeeNativePPM\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"fulfillmentFlatFeeLinkDiscountPPM\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"wrapperGasOverhead\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"coordinatorGasOverhead\",\"type\":\"uint32\"},{\"internalType\":\"uint8\",\"name\":\"wrapperNativePremiumPercentage\",\"type\":\"uint8\"},{\"internalType\":\"uint8\",\"name\":\"wrapperLinkPremiumPercentage\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"keyHash\",\"type\":\"bytes32\"},{\"internalType\":\"uint8\",\"name\":\"maxNumWords\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"i_link_native_feed\",\"outputs\":[{\"internalType\":\"contractAggregatorV3Interface\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"lastRequestId\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"link\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"linkNativeFeed\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_sender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"_data\",\"type\":\"bytes\"}],\"name\":\"onTokenTransfer\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"requestId\",\"type\":\"uint256\"},{\"internalType\":\"uint256[]\",\"name\":\"randomWords\",\"type\":\"uint256[]\"}],\"name\":\"rawFulfillRandomWords\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"_callbackGasLimit\",\"type\":\"uint32\"},{\"internalType\":\"uint16\",\"name\":\"_requestConfirmations\",\"type\":\"uint16\"},{\"internalType\":\"uint32\",\"name\":\"_numWords\",\"type\":\"uint32\"},{\"internalType\":\"bytes\",\"name\":\"extraArgs\",\"type\":\"bytes\"}],\"name\":\"requestRandomWordsInNative\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"requestId\",\"type\":\"uint256\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"s_callbacks\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"callbackAddress\",\"type\":\"address\"},{\"internalType\":\"uint32\",\"name\":\"callbackGasLimit\",\"type\":\"uint32\"},{\"internalType\":\"uint64\",\"name\":\"requestGasPrice\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"s_configured\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"s_disabled\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"s_fulfillmentTxSizeBytes\",\"outputs\":[{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"s_vrfCoordinator\",\"outputs\":[{\"internalType\":\"contractIVRFCoordinatorV2Plus\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"_wrapperGasOverhead\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"_coordinatorGasOverhead\",\"type\":\"uint32\"},{\"internalType\":\"uint8\",\"name\":\"_coordinatorNativePremiumPercentage\",\"type\":\"uint8\"},{\"internalType\":\"uint8\",\"name\":\"_coordinatorLinkPremiumPercentage\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"_keyHash\",\"type\":\"bytes32\"},{\"internalType\":\"uint8\",\"name\":\"_maxNumWords\",\"type\":\"uint8\"},{\"internalType\":\"uint32\",\"name\":\"_stalenessSeconds\",\"type\":\"uint32\"},{\"internalType\":\"int256\",\"name\":\"_fallbackWeiPerUnitLink\",\"type\":\"int256\"},{\"internalType\":\"uint32\",\"name\":\"_fulfillmentFlatFeeNativePPM\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"_fulfillmentFlatFeeLinkDiscountPPM\",\"type\":\"uint32\"}],\"name\":\"setConfig\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_vrfCoordinator\",\"type\":\"address\"}],\"name\":\"setCoordinator\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"size\",\"type\":\"uint32\"}],\"name\":\"setFulfillmentTxSize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"typeAndVersion\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_recipient\",\"type\":\"address\"}],\"name\":\"withdraw\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_recipient\",\"type\":\"address\"}],\"name\":\"withdrawNative\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", + Bin: "0x60e06040526006805463ffffffff60401b191669024400000000000000001790553480156200002d57600080fd5b5060405162003c6238038062003c628339810160408190526200005091620002a1565b813380600081620000a85760405162461bcd60e51b815260206004820152601860248201527f43616e6e6f7420736574206f776e657220746f207a65726f000000000000000060448201526064015b60405180910390fd5b600080546001600160a01b0319166001600160a01b0384811691909117909155811615620000db57620000db81620001d9565b5050506001600160a01b038116620001065760405163d92e233d60e01b815260040160405180910390fd5b600280546001600160a01b0319166001600160a01b0392831617905584811660a052831660c0526000819003620001505760405163a81c0bef60e01b815260040160405180910390fd5b60025460405163dc311dd360e01b8152600481018390526001600160a01b039091169063dc311dd390602401600060405180830381865afa1580156200019a573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052620001c4919081019062000321565b505050608092909252506200044a9350505050565b336001600160a01b03821603620002335760405162461bcd60e51b815260206004820152601760248201527f43616e6e6f74207472616e7366657220746f2073656c6600000000000000000060448201526064016200009f565b600180546001600160a01b0319166001600160a01b0383811691821790925560008054604051929316917fed8889f560326eb138920d842192f0eb3dd22b4f139c87a2c57538e05bae12789190a350565b80516001600160a01b03811681146200029c57600080fd5b919050565b60008060008060808587031215620002b857600080fd5b620002c38562000284565b9350620002d36020860162000284565b9250620002e36040860162000284565b6060959095015193969295505050565b80516001600160601b03811681146200029c57600080fd5b634e487b7160e01b600052604160045260246000fd5b600080600080600060a086880312156200033a57600080fd5b6200034586620002f3565b9450602062000356818801620002f3565b60408801519095506001600160401b0380821682146200037557600080fd5b8195506200038660608a0162000284565b945060808901519150808211156200039d57600080fd5b818901915089601f830112620003b257600080fd5b815181811115620003c757620003c76200030b565b8060051b604051601f19603f83011681018181108582111715620003ef57620003ef6200030b565b60405291825284820192508381018501918c8311156200040e57600080fd5b938501935b828510156200043757620004278562000284565b8452938501939285019262000413565b8096505050505050509295509295909350565b60805160a05160c0516137b7620004ab6000396000818161030a0152818161062a015261264501526000818161029601528181610f5a015281816110290152611b050152600081816101e40152818161175a0152611cf101526137b76000f3fe6080604052600436106101cd5760003560e01c80637fb5d19d116100f7578063a608a1e111610095578063cdd8d88511610064578063cdd8d88514610777578063f2fde38b146107b5578063fc2a88c3146107d5578063fc2dbebc146107eb57600080fd5b8063a608a1e1146105e5578063afeec77414610618578063bf17e5591461064c578063c3f909d41461066c57600080fd5b80639cfc058e116100d15780639cfc058e146105705780639eccacf614610583578063a3907d71146105b0578063a4c0ed36146105c557600080fd5b80637fb5d19d146105055780638da5cb5b146105255780638ea981171461055057600080fd5b80632f622e6b1161016f5780634b1609351161013e5780634b1609351461046e57806351cff8d91461048e57806357a8070a146104ae57806379ba5097146104f057600080fd5b80632f622e6b146103435780633255c456146103635780634306d3541461038357806348baa1c5146103a357600080fd5b80631c4695f4116101ab5780631c4695f4146102875780631fe543e3146102db5780632808e6c8146102fb5780632f2770db1461032e57600080fd5b8063030932bb146101d2578063181f5a771461021957806318b6f4c814610265575b600080fd5b3480156101de57600080fd5b506102067f000000000000000000000000000000000000000000000000000000000000000081565b6040519081526020015b60405180910390f35b34801561022557600080fd5b50604080518082018252601281527f56524656325772617070657220312e302e300000000000000000000000000000602082015290516102109190612e4e565b34801561027157600080fd5b50610285610280366004612f7b565b61080b565b005b34801561029357600080fd5b507f00000000000000000000000000000000000000000000000000000000000000005b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610210565b3480156102e757600080fd5b506102856102f6366004612fcd565b610993565b34801561030757600080fd5b507f00000000000000000000000000000000000000000000000000000000000000006102b6565b34801561033a57600080fd5b50610285610a10565b34801561034f57600080fd5b5061028561035e3660046130a3565b610a83565b34801561036f57600080fd5b5061020661037e3660046130d2565b610baa565b34801561038f57600080fd5b5061020661039e3660046130fc565b610cd0565b3480156103af57600080fd5b5061042d6103be366004613117565b60076020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff81169074010000000000000000000000000000000000000000810463ffffffff16907801000000000000000000000000000000000000000000000000900467ffffffffffffffff1683565b6040805173ffffffffffffffffffffffffffffffffffffffff909416845263ffffffff909216602084015267ffffffffffffffff1690820152606001610210565b34801561047a57600080fd5b506102066104893660046130fc565b610e04565b34801561049a57600080fd5b506102856104a93660046130a3565b610f21565b3480156104ba57600080fd5b506002546104e09074010000000000000000000000000000000000000000900460ff1681565b6040519015158152602001610210565b3480156104fc57600080fd5b50610285611122565b34801561051157600080fd5b506102066105203660046130d2565b61121f565b34801561053157600080fd5b5060005473ffffffffffffffffffffffffffffffffffffffff166102b6565b34801561055c57600080fd5b5061028561056b3660046130a3565b611352565b61020661057e36600461318b565b6114dd565b34801561058f57600080fd5b506002546102b69073ffffffffffffffffffffffffffffffffffffffff1681565b3480156105bc57600080fd5b50610285611988565b3480156105d157600080fd5b506102856105e0366004613201565b6119e3565b3480156105f157600080fd5b506002546104e0907501000000000000000000000000000000000000000000900460ff1681565b34801561062457600080fd5b506102b67f000000000000000000000000000000000000000000000000000000000000000081565b34801561065857600080fd5b506102856106673660046130fc565b611f50565b34801561067857600080fd5b506005546006546003546002546040805194855263ffffffff80851660208701527001000000000000000000000000000000008504811691860191909152740100000000000000000000000000000000000000008404811660608601526401000000008404811660808601526c0100000000000000000000000084041660a085015260ff78010000000000000000000000000000000000000000000000008404811660c0860152790100000000000000000000000000000000000000000000000000909304831660e085015261010084019190915276010000000000000000000000000000000000000000000090041661012082015261014001610210565b34801561078357600080fd5b506006546107a09068010000000000000000900463ffffffff1681565b60405163ffffffff9091168152602001610210565b3480156107c157600080fd5b506102856107d03660046130a3565b611fc9565b3480156107e157600080fd5b5061020660045481565b3480156107f757600080fd5b5061028561080636600461326c565b611fdd565b815160000361084f578061084b576040517f6b81746e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5050565b8151602411156108a95781516040517f51200dce0000000000000000000000000000000000000000000000000000000081526108a09160249160040161ffff92831681529116602082015260400190565b60405180910390fd5b6000826023815181106108be576108be613318565b6020910101517fff00000000000000000000000000000000000000000000000000000000000000167f01000000000000000000000000000000000000000000000000000000000000001490508080156109145750815b1561094b576040517f6048aa6800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80158015610957575081155b1561098e576040517f6b81746e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b505050565b60025473ffffffffffffffffffffffffffffffffffffffff163314610a06576002546040517f1cf993f400000000000000000000000000000000000000000000000000000000815233600482015273ffffffffffffffffffffffffffffffffffffffff90911660248201526044016108a0565b61084b82826122ae565b610a18612491565b600280547fffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff1675010000000000000000000000000000000000000000001790556040517f75884cdadc4a89e8b545db800057f06ec7f5338a08183c7ba515f2bfdd9fe1e190600090a1565b610a8b612491565b604051479060009073ffffffffffffffffffffffffffffffffffffffff84169083908381818185875af1925050503d8060008114610ae5576040519150601f19603f3d011682016040523d82523d6000602084013e610aea565b606091505b5050905080610b55576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f6661696c656420746f207769746864726177206e61746976650000000000000060448201526064016108a0565b8273ffffffffffffffffffffffffffffffffffffffff167fc303ca808382409472acbbf899c316cf439f409f6584aae22df86dfa3c9ed50483604051610b9d91815260200190565b60405180910390a2505050565b60025460009074010000000000000000000000000000000000000000900460ff16610c31576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f77726170706572206973206e6f7420636f6e666967757265640000000000000060448201526064016108a0565b6002547501000000000000000000000000000000000000000000900460ff1615610cb7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f777261707065722069732064697361626c65640000000000000000000000000060448201526064016108a0565b610cc78363ffffffff1683612514565b90505b92915050565b60025460009074010000000000000000000000000000000000000000900460ff16610d57576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f77726170706572206973206e6f7420636f6e666967757265640000000000000060448201526064016108a0565b6002547501000000000000000000000000000000000000000000900460ff1615610ddd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f777261707065722069732064697361626c65640000000000000000000000000060448201526064016108a0565b6000610de7612627565b509050610dfb8363ffffffff163a8361277d565b9150505b919050565b60025460009074010000000000000000000000000000000000000000900460ff16610e8b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f77726170706572206973206e6f7420636f6e666967757265640000000000000060448201526064016108a0565b6002547501000000000000000000000000000000000000000000900460ff1615610f11576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f777261707065722069732064697361626c65640000000000000000000000000060448201526064016108a0565b610cca8263ffffffff163a612514565b610f29612491565b6040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201526000907f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16906370a0823190602401602060405180830381865afa158015610fb6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fda9190613347565b6040517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8481166004830152602482018390529192507f00000000000000000000000000000000000000000000000000000000000000009091169063a9059cbb906044016020604051808303816000875af1158015611074573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110989190613360565b6110ce576040517f7c07fc4c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff167f7084f5476618d8e60b11ef0d7d3f06914655adb8793e28ff7f018d4c76d505d58260405161111691815260200190565b60405180910390a25050565b60015473ffffffffffffffffffffffffffffffffffffffff1633146111a3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f4d7573742062652070726f706f736564206f776e65720000000000000000000060448201526064016108a0565b60008054337fffffffffffffffffffffffff00000000000000000000000000000000000000008083168217845560018054909116905560405173ffffffffffffffffffffffffffffffffffffffff90921692909183917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a350565b60025460009074010000000000000000000000000000000000000000900460ff166112a6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f77726170706572206973206e6f7420636f6e666967757265640000000000000060448201526064016108a0565b6002547501000000000000000000000000000000000000000000900460ff161561132c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f777261707065722069732064697361626c65640000000000000000000000000060448201526064016108a0565b6000611336612627565b50905061134a8463ffffffff16848361277d565b949350505050565b60005473ffffffffffffffffffffffffffffffffffffffff163314801590611392575060025473ffffffffffffffffffffffffffffffffffffffff163314155b1561141657336113b760005473ffffffffffffffffffffffffffffffffffffffff1690565b6002546040517f061db9c100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff938416600482015291831660248301529190911660448201526064016108a0565b73ffffffffffffffffffffffffffffffffffffffff8116611463576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600280547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527fd1a6a14209a385a964d036e404cb5cfb71f4000cdb03c9366292430787261be6906020015b60405180910390a150565b60025460009074010000000000000000000000000000000000000000900460ff16611564576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f77726170706572206973206e6f7420636f6e666967757265640000000000000060448201526064016108a0565b6002547501000000000000000000000000000000000000000000900460ff16156115ea576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f777261707065722069732064697361626c65640000000000000000000000000060448201526064016108a0565b61162983838080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920182905250925061080b915050565b6000611634876128d9565b905060006116488863ffffffff163a612514565b9050803410156116b4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f66656520746f6f206c6f7700000000000000000000000000000000000000000060448201526064016108a0565b600254760100000000000000000000000000000000000000000000900460ff1663ffffffff87161115611743576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f6e756d576f72647320746f6f206869676800000000000000000000000000000060448201526064016108a0565b60006040518060c0016040528060035481526020017f000000000000000000000000000000000000000000000000000000000000000081526020018961ffff168152602001600660049054906101000a900463ffffffff16858c6117a791906133b3565b6117b191906133b3565b63ffffffff1681526020018863ffffffff16815260200187878080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050509152506002546040517f9b1c385e00000000000000000000000000000000000000000000000000000000815291925073ffffffffffffffffffffffffffffffffffffffff1690639b1c385e906118579084906004016133d7565b6020604051808303816000875af1158015611876573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061189a9190613347565b6040805160608101825233815263ffffffff808d16602080840191825267ffffffffffffffff3a81168587019081526000888152600790935295909120935184549251955190911678010000000000000000000000000000000000000000000000000277ffffffffffffffffffffffffffffffffffffffffffffffff9590931674010000000000000000000000000000000000000000027fffffffffffffffff00000000000000000000000000000000000000000000000090921673ffffffffffffffffffffffffffffffffffffffff91909116171792909216919091179055935050505095945050505050565b611990612491565b600280547fffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff1690556040517fc0f961051f97b04c496472d11cb6170d844e4b2c9dfd3b602a4fa0139712d48490600090a1565b60025474010000000000000000000000000000000000000000900460ff16611a67576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f77726170706572206973206e6f7420636f6e666967757265640000000000000060448201526064016108a0565b6002547501000000000000000000000000000000000000000000900460ff1615611aed576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f777261707065722069732064697361626c65640000000000000000000000000060448201526064016108a0565b3373ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001614611b8c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f6f6e6c792063616c6c61626c652066726f6d204c494e4b00000000000000000060448201526064016108a0565b6000808080611b9d85870187613434565b9350935093509350611bb081600161080b565b6000611bbb856128d9565b9050600080611bc8612627565b915091506000611bdf8863ffffffff163a8561277d565b9050808b1015611c4b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f66656520746f6f206c6f7700000000000000000000000000000000000000000060448201526064016108a0565b600254760100000000000000000000000000000000000000000000900460ff1663ffffffff87161115611cda576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f6e756d576f72647320746f6f206869676800000000000000000000000000000060448201526064016108a0565b60006040518060c0016040528060035481526020017f000000000000000000000000000000000000000000000000000000000000000081526020018961ffff168152602001600660049054906101000a900463ffffffff16878c611d3e91906133b3565b611d4891906133b3565b63ffffffff908116825289166020820152604090810188905260025490517f9b1c385e00000000000000000000000000000000000000000000000000000000815291925060009173ffffffffffffffffffffffffffffffffffffffff90911690639b1c385e90611dbc9085906004016133d7565b6020604051808303816000875af1158015611ddb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611dff9190613347565b905060405180606001604052808f73ffffffffffffffffffffffffffffffffffffffff1681526020018b63ffffffff1681526020013a67ffffffffffffffff168152506007600083815260200190815260200160002060008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060208201518160000160146101000a81548163ffffffff021916908363ffffffff16021790555060408201518160000160186101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550905050806004819055508315611f40576005546040805183815260208101929092527f6ca648a381f22ead7e37773d934e64885dcf861fbfbb26c40354cbf0c4662d1a910160405180910390a15b5050505050505050505050505050565b611f58612491565b600680547fffffffffffffffffffffffffffffffffffffffff00000000ffffffffffffffff166801000000000000000063ffffffff8416908102919091179091556040519081527f697b48b8b76cebb09a54ec4ff810e8a181c96f65395d51c744db09c115d1d5d0906020016114d2565b611fd1612491565b611fda816128f1565b50565b611fe5612491565b8163ffffffff168163ffffffff16111561203b576040517f2780dcb200000000000000000000000000000000000000000000000000000000815263ffffffff8083166004830152831660248201526044016108a0565b609b60ff89161115612085576040517f3acc511a00000000000000000000000000000000000000000000000000000000815260ff89166004820152609b60248201526044016108a0565b609b60ff881611156120cf576040517f3acc511a00000000000000000000000000000000000000000000000000000000815260ff88166004820152609b60248201526044016108a0565b89600660046101000a81548163ffffffff021916908363ffffffff160217905550886006600c6101000a81548163ffffffff021916908363ffffffff16021790555087600660186101000a81548160ff021916908360ff16021790555086600660196101000a81548160ff021916908360ff1602179055508560038190555084600260166101000a81548160ff021916908360ff1602179055506001600260146101000a81548160ff02191690831515021790555083600660006101000a81548163ffffffff021916908363ffffffff1602179055508260058190555081600660106101000a81548163ffffffff021916908363ffffffff16021790555080600660146101000a81548163ffffffff021916908363ffffffff1602179055507fb18fd84519589131d50ae195b0aea1b042c3c0b25a53bb894d9d81c78980c20f8a8a8a8a8a8a8a8a8a600660149054906101000a900463ffffffff1660405161229a9a9998979695949392919063ffffffff9a8b168152988a1660208a015260ff97881660408a0152958716606089015260808801949094529190941660a086015292851660c085015260e08401929092529083166101008301529091166101208201526101400190565b60405180910390a150505050505050505050565b60008281526007602081815260408084208151606081018352815473ffffffffffffffffffffffffffffffffffffffff808216835274010000000000000000000000000000000000000000820463ffffffff1683870152780100000000000000000000000000000000000000000000000090910467ffffffffffffffff1693820193909352878652939092529290558051909181166123a9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f72657175657374206e6f7420666f756e6400000000000000000000000000000060448201526064016108a0565b600080631fe543e360e01b86866040516024016123c79291906134a3565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050509050600061243d856020015163ffffffff1685846129e6565b9050806124885760405173ffffffffffffffffffffffffffffffffffffffff85169088907fc551b83c151f2d1c7eeb938ac59008e0409f1c1dc1e2f112449d4d79b458902290600090a35b50505050505050565b60005473ffffffffffffffffffffffffffffffffffffffff163314612512576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f4f6e6c792063616c6c61626c65206279206f776e65720000000000000000000060448201526064016108a0565b565b600654600090819061253490640100000000900463ffffffff16846134f1565b6006549091506000906125589068010000000000000000900463ffffffff16612a32565b60065461257b906c01000000000000000000000000900463ffffffff1687613508565b61258590866134f1565b61258f9190613508565b6006549091506000906125c190700100000000000000000000000000000000900463ffffffff1664e8d4a510006134f1565b6006546064906125f0907801000000000000000000000000000000000000000000000000900460ff168261351b565b6125fd9060ff16856134f1565b6126079190613563565b6126119190613508565b905061261d8184613508565b9695505050505050565b6000806000600660009054906101000a900463ffffffff16905060007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663feaf968c6040518163ffffffff1660e01b815260040160a060405180830381865afa1580156126ae573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126d29190613591565b50919650909250505063ffffffff8216158015906126fe57506126f581426135e1565b8263ffffffff16105b9250821561270c5760055493505b6000841215612777576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f496e76616c6964204c494e4b207765692070726963650000000000000000000060448201526064016108a0565b50509091565b600654600090819061279d90640100000000900463ffffffff16856134f1565b6006549091506000906127c19068010000000000000000900463ffffffff16612a32565b6006546127e4906c01000000000000000000000000900463ffffffff1688613508565b6127ee90876134f1565b6127f89190613508565b60065490915060009061283f9063ffffffff7401000000000000000000000000000000000000000082048116917001000000000000000000000000000000009004166135f4565b6128549063ffffffff1664e8d4a510006134f1565b60065460649061288490790100000000000000000000000000000000000000000000000000900460ff168261351b565b6128919060ff16856134f1565b61289b9190613563565b6128a59190613508565b9050846128b28285613508565b6128c490670de0b6b3a76400006134f1565b6128ce9190613563565b979650505050505050565b60006128e6603f83613611565b610cca9060016133b3565b3373ffffffffffffffffffffffffffffffffffffffff821603612970576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f43616e6e6f74207472616e7366657220746f2073656c6600000000000000000060448201526064016108a0565b600180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83811691821790925560008054604051929316917fed8889f560326eb138920d842192f0eb3dd22b4f139c87a2c57538e05bae12789190a350565b60005a6113888110156129f857600080fd5b611388810390508460408204820311612a1057600080fd5b50823b612a1c57600080fd5b60008083516020850160008789f1949350505050565b600046612a3e81612af3565b15612ad3576000606c73ffffffffffffffffffffffffffffffffffffffff166341b247a86040518163ffffffff1660e01b815260040160c060405180830381865afa158015612a91573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ab59190613634565b5050505091505083608c612ac99190613508565b61134a90826134f1565b612adc81612b16565b15612aea57610dfb83612b50565b50600092915050565b600061a4b1821480612b07575062066eed82145b80610cca57505062066eee1490565b6000600a821480612b2857506101a482145b80612b35575062aa37dc82145b80612b41575061210582145b80610cca57505062014a331490565b60008073420000000000000000000000000000000000000f73ffffffffffffffffffffffffffffffffffffffff1663519b4bd36040518163ffffffff1660e01b8152600401602060405180830381865afa158015612bb2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612bd69190613347565b9050600080612be581866135e1565b90506000612bf48260106134f1565b612bff8460046134f1565b612c099190613508565b9050600073420000000000000000000000000000000000000f73ffffffffffffffffffffffffffffffffffffffff16630c18c1626040518163ffffffff1660e01b8152600401602060405180830381865afa158015612c6c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c909190613347565b9050600073420000000000000000000000000000000000000f73ffffffffffffffffffffffffffffffffffffffff1663f45e65d86040518163ffffffff1660e01b8152600401602060405180830381865afa158015612cf3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612d179190613347565b9050600073420000000000000000000000000000000000000f73ffffffffffffffffffffffffffffffffffffffff1663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015612d7a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612d9e9190613347565b90506000612dad82600a61379e565b905060008184612dbd8789613508565b612dc7908c6134f1565b612dd191906134f1565b612ddb9190613563565b9b9a5050505050505050505050565b6000815180845260005b81811015612e1057602081850181015186830182015201612df4565b5060006020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b602081526000610cc76020830184612dea565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715612ed757612ed7612e61565b604052919050565b600082601f830112612ef057600080fd5b813567ffffffffffffffff811115612f0a57612f0a612e61565b612f3b60207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f84011601612e90565b818152846020838601011115612f5057600080fd5b816020850160208301376000918101602001919091529392505050565b8015158114611fda57600080fd5b60008060408385031215612f8e57600080fd5b823567ffffffffffffffff811115612fa557600080fd5b612fb185828601612edf565b9250506020830135612fc281612f6d565b809150509250929050565b60008060408385031215612fe057600080fd5b8235915060208084013567ffffffffffffffff8082111561300057600080fd5b818601915086601f83011261301457600080fd5b81358181111561302657613026612e61565b8060051b9150613037848301612e90565b818152918301840191848101908984111561305157600080fd5b938501935b8385101561306f57843582529385019390850190613056565b8096505050505050509250929050565b803573ffffffffffffffffffffffffffffffffffffffff81168114610dff57600080fd5b6000602082840312156130b557600080fd5b610cc78261307f565b803563ffffffff81168114610dff57600080fd5b600080604083850312156130e557600080fd5b6130ee836130be565b946020939093013593505050565b60006020828403121561310e57600080fd5b610cc7826130be565b60006020828403121561312957600080fd5b5035919050565b803561ffff81168114610dff57600080fd5b60008083601f84011261315457600080fd5b50813567ffffffffffffffff81111561316c57600080fd5b60208301915083602082850101111561318457600080fd5b9250929050565b6000806000806000608086880312156131a357600080fd5b6131ac866130be565b94506131ba60208701613130565b93506131c8604087016130be565b9250606086013567ffffffffffffffff8111156131e457600080fd5b6131f088828901613142565b969995985093965092949392505050565b6000806000806060858703121561321757600080fd5b6132208561307f565b935060208501359250604085013567ffffffffffffffff81111561324357600080fd5b61324f87828801613142565b95989497509550505050565b803560ff81168114610dff57600080fd5b6000806000806000806000806000806101408b8d03121561328c57600080fd5b6132958b6130be565b99506132a360208c016130be565b98506132b160408c0161325b565b97506132bf60608c0161325b565b965060808b013595506132d460a08c0161325b565b94506132e260c08c016130be565b935060e08b013592506132f86101008c016130be565b91506133076101208c016130be565b90509295989b9194979a5092959850565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60006020828403121561335957600080fd5b5051919050565b60006020828403121561337257600080fd5b815161337d81612f6d565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b63ffffffff8181168382160190808211156133d0576133d0613384565b5092915050565b60208152815160208201526020820151604082015261ffff60408301511660608201526000606083015163ffffffff80821660808501528060808601511660a0850152505060a083015160c08084015261134a60e0840182612dea565b6000806000806080858703121561344a57600080fd5b613453856130be565b935061346160208601613130565b925061346f604086016130be565b9150606085013567ffffffffffffffff81111561348b57600080fd5b61349787828801612edf565b91505092959194509250565b6000604082018483526020604081850152818551808452606086019150828701935060005b818110156134e4578451835293830193918301916001016134c8565b5090979650505050505050565b8082028115828204841417610cca57610cca613384565b80820180821115610cca57610cca613384565b60ff8181168382160190811115610cca57610cca613384565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60008261357257613572613534565b500490565b805169ffffffffffffffffffff81168114610dff57600080fd5b600080600080600060a086880312156135a957600080fd5b6135b286613577565b94506020860151935060408601519250606086015191506135d560808701613577565b90509295509295909350565b81810381811115610cca57610cca613384565b63ffffffff8281168282160390808211156133d0576133d0613384565b600063ffffffff8084168061362857613628613534565b92169190910492915050565b60008060008060008060c0878903121561364d57600080fd5b865195506020870151945060408701519350606087015192506080870151915060a087015190509295509295509295565b600181815b808511156136d757817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048211156136bd576136bd613384565b808516156136ca57918102915b93841c9390800290613683565b509250929050565b6000826136ee57506001610cca565b816136fb57506000610cca565b8160018114613711576002811461371b57613737565b6001915050610cca565b60ff84111561372c5761372c613384565b50506001821b610cca565b5060208310610133831016604e8410600b841016171561375a575081810a610cca565b613764838361367e565b807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0482111561379657613796613384565b029392505050565b6000610cc783836136df56fea164736f6c6343000813000a", } var VRFV2PlusWrapperABI = VRFV2PlusWrapperMetaData.ABI @@ -407,7 +407,7 @@ func (_VRFV2PlusWrapper *VRFV2PlusWrapperCallerSession) Link() (common.Address, func (_VRFV2PlusWrapper *VRFV2PlusWrapperCaller) LinkNativeFeed(opts *bind.CallOpts) (common.Address, error) { var out []interface{} - err := _VRFV2PlusWrapper.contract.Call(opts, &out, "link_native_feed") + err := _VRFV2PlusWrapper.contract.Call(opts, &out, "linkNativeFeed") if err != nil { return *new(common.Address), err diff --git a/core/gethwrappers/generation/generated-wrapper-dependency-versions-do-not-edit.txt b/core/gethwrappers/generation/generated-wrapper-dependency-versions-do-not-edit.txt index 3aa487059fa..c0c340ee81f 100644 --- a/core/gethwrappers/generation/generated-wrapper-dependency-versions-do-not-edit.txt +++ b/core/gethwrappers/generation/generated-wrapper-dependency-versions-do-not-edit.txt @@ -126,6 +126,6 @@ vrfv2plus_client: ../../contracts/solc/v0.8.19/VRFV2PlusClient/VRFV2PlusClient.a vrfv2plus_consumer_example: ../../contracts/solc/v0.8.19/VRFV2PlusConsumerExample/VRFV2PlusConsumerExample.abi ../../contracts/solc/v0.8.19/VRFV2PlusConsumerExample/VRFV2PlusConsumerExample.bin e25c1981638fb9ea8fdd21600d6954f999bf65b98ba4e4a3f8fb9f7858334e19 vrfv2plus_malicious_migrator: ../../contracts/solc/v0.8.19/VRFV2PlusMaliciousMigrator/VRFV2PlusMaliciousMigrator.abi ../../contracts/solc/v0.8.19/VRFV2PlusMaliciousMigrator/VRFV2PlusMaliciousMigrator.bin 5dff20621fe6ed3bed75fe4b65381b0d4b1f6286ee3571553dbeb57213b53416 vrfv2plus_reverting_example: ../../contracts/solc/v0.8.19/VRFV2PlusRevertingExample/VRFV2PlusRevertingExample.abi ../../contracts/solc/v0.8.19/VRFV2PlusRevertingExample/VRFV2PlusRevertingExample.bin ebc2e96af9bf3aaa8b9cb048f8ecfec9987ee8b90126b740722c6b6427ab128e -vrfv2plus_wrapper: ../../contracts/solc/v0.8.19/VRFV2PlusWrapper/VRFV2PlusWrapper.abi ../../contracts/solc/v0.8.19/VRFV2PlusWrapper/VRFV2PlusWrapper.bin 932e1bd38d750cb9a0fa98b1ddd559cc772ac0358877982e79c771cbb4572182 +vrfv2plus_wrapper: ../../contracts/solc/v0.8.19/VRFV2PlusWrapper/VRFV2PlusWrapper.abi ../../contracts/solc/v0.8.19/VRFV2PlusWrapper/VRFV2PlusWrapper.bin e94985ecbc68ad2f6b0819af265fc97f86122251c4e06b497658692efff1fe6a vrfv2plus_wrapper_consumer_example: ../../contracts/solc/v0.8.19/VRFV2PlusWrapperConsumerExample/VRFV2PlusWrapperConsumerExample.abi ../../contracts/solc/v0.8.19/VRFV2PlusWrapperConsumerExample/VRFV2PlusWrapperConsumerExample.bin 130217ffb341f19d1b3bda27f5c4a10567ac21ac3a49c9933bbdb068e8420177 vrfv2plus_wrapper_load_test_consumer: ../../contracts/solc/v0.8.19/VRFV2PlusWrapperLoadTestConsumer/VRFV2PlusWrapperLoadTestConsumer.abi ../../contracts/solc/v0.8.19/VRFV2PlusWrapperLoadTestConsumer/VRFV2PlusWrapperLoadTestConsumer.bin f2880b0469b82ddd4a11aa81ac12916f2912555dfe64829416a583fd82ebf3ab From b00c63b6c47e751f76bc63f3a1b00f9e6da9a403 Mon Sep 17 00:00:00 2001 From: Iva Brajer Date: Tue, 26 Mar 2024 18:35:08 +0100 Subject: [PATCH 7/7] Link native feed address variable set to internal --- .../src/v0.8/vrf/dev/VRFV2PlusWrapper.sol | 2 +- .../vrfv2plus_wrapper/vrfv2plus_wrapper.go | 28 ++----------------- ...rapper-dependency-versions-do-not-edit.txt | 2 +- 3 files changed, 4 insertions(+), 28 deletions(-) diff --git a/contracts/src/v0.8/vrf/dev/VRFV2PlusWrapper.sol b/contracts/src/v0.8/vrf/dev/VRFV2PlusWrapper.sol index d1a1c8bee3b..078d934e5e3 100644 --- a/contracts/src/v0.8/vrf/dev/VRFV2PlusWrapper.sol +++ b/contracts/src/v0.8/vrf/dev/VRFV2PlusWrapper.sol @@ -30,7 +30,7 @@ contract VRFV2PlusWrapper is ConfirmedOwner, TypeAndVersionInterface, VRFConsume // solhint-disable-next-line chainlink-solidity/prefix-immutable-variables-with-i uint256 public immutable SUBSCRIPTION_ID; LinkTokenInterface internal immutable i_link; - AggregatorV3Interface public immutable i_link_native_feed; + AggregatorV3Interface internal immutable i_link_native_feed; error LinkAlreadySet(); error LinkDiscountTooHigh(uint32 flatFeeLinkDiscountPPM, uint32 flatFeeNativePPM); diff --git a/core/gethwrappers/generated/vrfv2plus_wrapper/vrfv2plus_wrapper.go b/core/gethwrappers/generated/vrfv2plus_wrapper/vrfv2plus_wrapper.go index 2f52591259d..68553db104e 100644 --- a/core/gethwrappers/generated/vrfv2plus_wrapper/vrfv2plus_wrapper.go +++ b/core/gethwrappers/generated/vrfv2plus_wrapper/vrfv2plus_wrapper.go @@ -31,8 +31,8 @@ var ( ) var VRFV2PlusWrapperMetaData = &bind.MetaData{ - ABI: "[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_link\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_linkNativeFeed\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_coordinator\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_subId\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"FailedToTransferLink\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint16\",\"name\":\"expectedMinimumLength\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"actualLength\",\"type\":\"uint16\"}],\"name\":\"IncorrectExtraArgsLength\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"premiumPercentage\",\"type\":\"uint8\"},{\"internalType\":\"uint8\",\"name\":\"max\",\"type\":\"uint8\"}],\"name\":\"InvalidPremiumPercentage\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"LINKPaymentInRequestRandomWordsInNative\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"LinkAlreadySet\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"flatFeeLinkDiscountPPM\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"flatFeeNativePPM\",\"type\":\"uint32\"}],\"name\":\"LinkDiscountTooHigh\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NativePaymentInOnTokenTransfer\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"have\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"want\",\"type\":\"address\"}],\"name\":\"OnlyCoordinatorCanFulfill\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"have\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"coordinator\",\"type\":\"address\"}],\"name\":\"OnlyOwnerOrCoordinator\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SubscriptionIdMissing\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ZeroAddress\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint32\",\"name\":\"wrapperGasOverhead\",\"type\":\"uint32\"},{\"indexed\":false,\"internalType\":\"uint32\",\"name\":\"coordinatorGasOverhead\",\"type\":\"uint32\"},{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"coordinatorNativePremiumPercentage\",\"type\":\"uint8\"},{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"coordinatorLinkPremiumPercentage\",\"type\":\"uint8\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"keyHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"maxNumWords\",\"type\":\"uint8\"},{\"indexed\":false,\"internalType\":\"uint32\",\"name\":\"stalenessSeconds\",\"type\":\"uint32\"},{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"fallbackWeiPerUnitLink\",\"type\":\"int256\"},{\"indexed\":false,\"internalType\":\"uint32\",\"name\":\"fulfillmentFlatFeeNativePPM\",\"type\":\"uint32\"},{\"indexed\":false,\"internalType\":\"uint32\",\"name\":\"fulfillmentFlatFeeLinkDiscountPPM\",\"type\":\"uint32\"}],\"name\":\"ConfigSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"vrfCoordinator\",\"type\":\"address\"}],\"name\":\"CoordinatorSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[],\"name\":\"Disabled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[],\"name\":\"Enabled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"requestId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"fallbackWeiPerUnitLink\",\"type\":\"int256\"}],\"name\":\"FallbackWeiPerUnitLinkUsed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint32\",\"name\":\"size\",\"type\":\"uint32\"}],\"name\":\"FulfillmentTxSizeSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"NativeWithdrawn\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"OwnershipTransferRequested\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"Withdrawn\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"requestId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"consumer\",\"type\":\"address\"}],\"name\":\"WrapperFulfillmentFailed\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"SUBSCRIPTION_ID\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"acceptOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"_callbackGasLimit\",\"type\":\"uint32\"}],\"name\":\"calculateRequestPrice\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"_callbackGasLimit\",\"type\":\"uint32\"}],\"name\":\"calculateRequestPriceNative\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"extraArgs\",\"type\":\"bytes\"},{\"internalType\":\"bool\",\"name\":\"isLinkMode\",\"type\":\"bool\"}],\"name\":\"checkPaymentMode\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"disable\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"enable\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"_callbackGasLimit\",\"type\":\"uint32\"},{\"internalType\":\"uint256\",\"name\":\"_requestGasPriceWei\",\"type\":\"uint256\"}],\"name\":\"estimateRequestPrice\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"_callbackGasLimit\",\"type\":\"uint32\"},{\"internalType\":\"uint256\",\"name\":\"_requestGasPriceWei\",\"type\":\"uint256\"}],\"name\":\"estimateRequestPriceNative\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getConfig\",\"outputs\":[{\"internalType\":\"int256\",\"name\":\"fallbackWeiPerUnitLink\",\"type\":\"int256\"},{\"internalType\":\"uint32\",\"name\":\"stalenessSeconds\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"fulfillmentFlatFeeNativePPM\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"fulfillmentFlatFeeLinkDiscountPPM\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"wrapperGasOverhead\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"coordinatorGasOverhead\",\"type\":\"uint32\"},{\"internalType\":\"uint8\",\"name\":\"wrapperNativePremiumPercentage\",\"type\":\"uint8\"},{\"internalType\":\"uint8\",\"name\":\"wrapperLinkPremiumPercentage\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"keyHash\",\"type\":\"bytes32\"},{\"internalType\":\"uint8\",\"name\":\"maxNumWords\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"i_link_native_feed\",\"outputs\":[{\"internalType\":\"contractAggregatorV3Interface\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"lastRequestId\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"link\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"linkNativeFeed\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_sender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"_data\",\"type\":\"bytes\"}],\"name\":\"onTokenTransfer\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"requestId\",\"type\":\"uint256\"},{\"internalType\":\"uint256[]\",\"name\":\"randomWords\",\"type\":\"uint256[]\"}],\"name\":\"rawFulfillRandomWords\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"_callbackGasLimit\",\"type\":\"uint32\"},{\"internalType\":\"uint16\",\"name\":\"_requestConfirmations\",\"type\":\"uint16\"},{\"internalType\":\"uint32\",\"name\":\"_numWords\",\"type\":\"uint32\"},{\"internalType\":\"bytes\",\"name\":\"extraArgs\",\"type\":\"bytes\"}],\"name\":\"requestRandomWordsInNative\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"requestId\",\"type\":\"uint256\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"s_callbacks\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"callbackAddress\",\"type\":\"address\"},{\"internalType\":\"uint32\",\"name\":\"callbackGasLimit\",\"type\":\"uint32\"},{\"internalType\":\"uint64\",\"name\":\"requestGasPrice\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"s_configured\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"s_disabled\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"s_fulfillmentTxSizeBytes\",\"outputs\":[{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"s_vrfCoordinator\",\"outputs\":[{\"internalType\":\"contractIVRFCoordinatorV2Plus\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"_wrapperGasOverhead\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"_coordinatorGasOverhead\",\"type\":\"uint32\"},{\"internalType\":\"uint8\",\"name\":\"_coordinatorNativePremiumPercentage\",\"type\":\"uint8\"},{\"internalType\":\"uint8\",\"name\":\"_coordinatorLinkPremiumPercentage\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"_keyHash\",\"type\":\"bytes32\"},{\"internalType\":\"uint8\",\"name\":\"_maxNumWords\",\"type\":\"uint8\"},{\"internalType\":\"uint32\",\"name\":\"_stalenessSeconds\",\"type\":\"uint32\"},{\"internalType\":\"int256\",\"name\":\"_fallbackWeiPerUnitLink\",\"type\":\"int256\"},{\"internalType\":\"uint32\",\"name\":\"_fulfillmentFlatFeeNativePPM\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"_fulfillmentFlatFeeLinkDiscountPPM\",\"type\":\"uint32\"}],\"name\":\"setConfig\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_vrfCoordinator\",\"type\":\"address\"}],\"name\":\"setCoordinator\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"size\",\"type\":\"uint32\"}],\"name\":\"setFulfillmentTxSize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"typeAndVersion\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_recipient\",\"type\":\"address\"}],\"name\":\"withdraw\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_recipient\",\"type\":\"address\"}],\"name\":\"withdrawNative\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", - Bin: "0x60e06040526006805463ffffffff60401b191669024400000000000000001790553480156200002d57600080fd5b5060405162003c6238038062003c628339810160408190526200005091620002a1565b813380600081620000a85760405162461bcd60e51b815260206004820152601860248201527f43616e6e6f7420736574206f776e657220746f207a65726f000000000000000060448201526064015b60405180910390fd5b600080546001600160a01b0319166001600160a01b0384811691909117909155811615620000db57620000db81620001d9565b5050506001600160a01b038116620001065760405163d92e233d60e01b815260040160405180910390fd5b600280546001600160a01b0319166001600160a01b0392831617905584811660a052831660c0526000819003620001505760405163a81c0bef60e01b815260040160405180910390fd5b60025460405163dc311dd360e01b8152600481018390526001600160a01b039091169063dc311dd390602401600060405180830381865afa1580156200019a573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052620001c4919081019062000321565b505050608092909252506200044a9350505050565b336001600160a01b03821603620002335760405162461bcd60e51b815260206004820152601760248201527f43616e6e6f74207472616e7366657220746f2073656c6600000000000000000060448201526064016200009f565b600180546001600160a01b0319166001600160a01b0383811691821790925560008054604051929316917fed8889f560326eb138920d842192f0eb3dd22b4f139c87a2c57538e05bae12789190a350565b80516001600160a01b03811681146200029c57600080fd5b919050565b60008060008060808587031215620002b857600080fd5b620002c38562000284565b9350620002d36020860162000284565b9250620002e36040860162000284565b6060959095015193969295505050565b80516001600160601b03811681146200029c57600080fd5b634e487b7160e01b600052604160045260246000fd5b600080600080600060a086880312156200033a57600080fd5b6200034586620002f3565b9450602062000356818801620002f3565b60408801519095506001600160401b0380821682146200037557600080fd5b8195506200038660608a0162000284565b945060808901519150808211156200039d57600080fd5b818901915089601f830112620003b257600080fd5b815181811115620003c757620003c76200030b565b8060051b604051601f19603f83011681018181108582111715620003ef57620003ef6200030b565b60405291825284820192508381018501918c8311156200040e57600080fd5b938501935b828510156200043757620004278562000284565b8452938501939285019262000413565b8096505050505050509295509295909350565b60805160a05160c0516137b7620004ab6000396000818161030a0152818161062a015261264501526000818161029601528181610f5a015281816110290152611b050152600081816101e40152818161175a0152611cf101526137b76000f3fe6080604052600436106101cd5760003560e01c80637fb5d19d116100f7578063a608a1e111610095578063cdd8d88511610064578063cdd8d88514610777578063f2fde38b146107b5578063fc2a88c3146107d5578063fc2dbebc146107eb57600080fd5b8063a608a1e1146105e5578063afeec77414610618578063bf17e5591461064c578063c3f909d41461066c57600080fd5b80639cfc058e116100d15780639cfc058e146105705780639eccacf614610583578063a3907d71146105b0578063a4c0ed36146105c557600080fd5b80637fb5d19d146105055780638da5cb5b146105255780638ea981171461055057600080fd5b80632f622e6b1161016f5780634b1609351161013e5780634b1609351461046e57806351cff8d91461048e57806357a8070a146104ae57806379ba5097146104f057600080fd5b80632f622e6b146103435780633255c456146103635780634306d3541461038357806348baa1c5146103a357600080fd5b80631c4695f4116101ab5780631c4695f4146102875780631fe543e3146102db5780632808e6c8146102fb5780632f2770db1461032e57600080fd5b8063030932bb146101d2578063181f5a771461021957806318b6f4c814610265575b600080fd5b3480156101de57600080fd5b506102067f000000000000000000000000000000000000000000000000000000000000000081565b6040519081526020015b60405180910390f35b34801561022557600080fd5b50604080518082018252601281527f56524656325772617070657220312e302e300000000000000000000000000000602082015290516102109190612e4e565b34801561027157600080fd5b50610285610280366004612f7b565b61080b565b005b34801561029357600080fd5b507f00000000000000000000000000000000000000000000000000000000000000005b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610210565b3480156102e757600080fd5b506102856102f6366004612fcd565b610993565b34801561030757600080fd5b507f00000000000000000000000000000000000000000000000000000000000000006102b6565b34801561033a57600080fd5b50610285610a10565b34801561034f57600080fd5b5061028561035e3660046130a3565b610a83565b34801561036f57600080fd5b5061020661037e3660046130d2565b610baa565b34801561038f57600080fd5b5061020661039e3660046130fc565b610cd0565b3480156103af57600080fd5b5061042d6103be366004613117565b60076020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff81169074010000000000000000000000000000000000000000810463ffffffff16907801000000000000000000000000000000000000000000000000900467ffffffffffffffff1683565b6040805173ffffffffffffffffffffffffffffffffffffffff909416845263ffffffff909216602084015267ffffffffffffffff1690820152606001610210565b34801561047a57600080fd5b506102066104893660046130fc565b610e04565b34801561049a57600080fd5b506102856104a93660046130a3565b610f21565b3480156104ba57600080fd5b506002546104e09074010000000000000000000000000000000000000000900460ff1681565b6040519015158152602001610210565b3480156104fc57600080fd5b50610285611122565b34801561051157600080fd5b506102066105203660046130d2565b61121f565b34801561053157600080fd5b5060005473ffffffffffffffffffffffffffffffffffffffff166102b6565b34801561055c57600080fd5b5061028561056b3660046130a3565b611352565b61020661057e36600461318b565b6114dd565b34801561058f57600080fd5b506002546102b69073ffffffffffffffffffffffffffffffffffffffff1681565b3480156105bc57600080fd5b50610285611988565b3480156105d157600080fd5b506102856105e0366004613201565b6119e3565b3480156105f157600080fd5b506002546104e0907501000000000000000000000000000000000000000000900460ff1681565b34801561062457600080fd5b506102b67f000000000000000000000000000000000000000000000000000000000000000081565b34801561065857600080fd5b506102856106673660046130fc565b611f50565b34801561067857600080fd5b506005546006546003546002546040805194855263ffffffff80851660208701527001000000000000000000000000000000008504811691860191909152740100000000000000000000000000000000000000008404811660608601526401000000008404811660808601526c0100000000000000000000000084041660a085015260ff78010000000000000000000000000000000000000000000000008404811660c0860152790100000000000000000000000000000000000000000000000000909304831660e085015261010084019190915276010000000000000000000000000000000000000000000090041661012082015261014001610210565b34801561078357600080fd5b506006546107a09068010000000000000000900463ffffffff1681565b60405163ffffffff9091168152602001610210565b3480156107c157600080fd5b506102856107d03660046130a3565b611fc9565b3480156107e157600080fd5b5061020660045481565b3480156107f757600080fd5b5061028561080636600461326c565b611fdd565b815160000361084f578061084b576040517f6b81746e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5050565b8151602411156108a95781516040517f51200dce0000000000000000000000000000000000000000000000000000000081526108a09160249160040161ffff92831681529116602082015260400190565b60405180910390fd5b6000826023815181106108be576108be613318565b6020910101517fff00000000000000000000000000000000000000000000000000000000000000167f01000000000000000000000000000000000000000000000000000000000000001490508080156109145750815b1561094b576040517f6048aa6800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80158015610957575081155b1561098e576040517f6b81746e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b505050565b60025473ffffffffffffffffffffffffffffffffffffffff163314610a06576002546040517f1cf993f400000000000000000000000000000000000000000000000000000000815233600482015273ffffffffffffffffffffffffffffffffffffffff90911660248201526044016108a0565b61084b82826122ae565b610a18612491565b600280547fffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff1675010000000000000000000000000000000000000000001790556040517f75884cdadc4a89e8b545db800057f06ec7f5338a08183c7ba515f2bfdd9fe1e190600090a1565b610a8b612491565b604051479060009073ffffffffffffffffffffffffffffffffffffffff84169083908381818185875af1925050503d8060008114610ae5576040519150601f19603f3d011682016040523d82523d6000602084013e610aea565b606091505b5050905080610b55576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f6661696c656420746f207769746864726177206e61746976650000000000000060448201526064016108a0565b8273ffffffffffffffffffffffffffffffffffffffff167fc303ca808382409472acbbf899c316cf439f409f6584aae22df86dfa3c9ed50483604051610b9d91815260200190565b60405180910390a2505050565b60025460009074010000000000000000000000000000000000000000900460ff16610c31576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f77726170706572206973206e6f7420636f6e666967757265640000000000000060448201526064016108a0565b6002547501000000000000000000000000000000000000000000900460ff1615610cb7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f777261707065722069732064697361626c65640000000000000000000000000060448201526064016108a0565b610cc78363ffffffff1683612514565b90505b92915050565b60025460009074010000000000000000000000000000000000000000900460ff16610d57576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f77726170706572206973206e6f7420636f6e666967757265640000000000000060448201526064016108a0565b6002547501000000000000000000000000000000000000000000900460ff1615610ddd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f777261707065722069732064697361626c65640000000000000000000000000060448201526064016108a0565b6000610de7612627565b509050610dfb8363ffffffff163a8361277d565b9150505b919050565b60025460009074010000000000000000000000000000000000000000900460ff16610e8b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f77726170706572206973206e6f7420636f6e666967757265640000000000000060448201526064016108a0565b6002547501000000000000000000000000000000000000000000900460ff1615610f11576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f777261707065722069732064697361626c65640000000000000000000000000060448201526064016108a0565b610cca8263ffffffff163a612514565b610f29612491565b6040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201526000907f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16906370a0823190602401602060405180830381865afa158015610fb6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fda9190613347565b6040517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8481166004830152602482018390529192507f00000000000000000000000000000000000000000000000000000000000000009091169063a9059cbb906044016020604051808303816000875af1158015611074573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110989190613360565b6110ce576040517f7c07fc4c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff167f7084f5476618d8e60b11ef0d7d3f06914655adb8793e28ff7f018d4c76d505d58260405161111691815260200190565b60405180910390a25050565b60015473ffffffffffffffffffffffffffffffffffffffff1633146111a3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f4d7573742062652070726f706f736564206f776e65720000000000000000000060448201526064016108a0565b60008054337fffffffffffffffffffffffff00000000000000000000000000000000000000008083168217845560018054909116905560405173ffffffffffffffffffffffffffffffffffffffff90921692909183917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a350565b60025460009074010000000000000000000000000000000000000000900460ff166112a6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f77726170706572206973206e6f7420636f6e666967757265640000000000000060448201526064016108a0565b6002547501000000000000000000000000000000000000000000900460ff161561132c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f777261707065722069732064697361626c65640000000000000000000000000060448201526064016108a0565b6000611336612627565b50905061134a8463ffffffff16848361277d565b949350505050565b60005473ffffffffffffffffffffffffffffffffffffffff163314801590611392575060025473ffffffffffffffffffffffffffffffffffffffff163314155b1561141657336113b760005473ffffffffffffffffffffffffffffffffffffffff1690565b6002546040517f061db9c100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff938416600482015291831660248301529190911660448201526064016108a0565b73ffffffffffffffffffffffffffffffffffffffff8116611463576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600280547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527fd1a6a14209a385a964d036e404cb5cfb71f4000cdb03c9366292430787261be6906020015b60405180910390a150565b60025460009074010000000000000000000000000000000000000000900460ff16611564576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f77726170706572206973206e6f7420636f6e666967757265640000000000000060448201526064016108a0565b6002547501000000000000000000000000000000000000000000900460ff16156115ea576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f777261707065722069732064697361626c65640000000000000000000000000060448201526064016108a0565b61162983838080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920182905250925061080b915050565b6000611634876128d9565b905060006116488863ffffffff163a612514565b9050803410156116b4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f66656520746f6f206c6f7700000000000000000000000000000000000000000060448201526064016108a0565b600254760100000000000000000000000000000000000000000000900460ff1663ffffffff87161115611743576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f6e756d576f72647320746f6f206869676800000000000000000000000000000060448201526064016108a0565b60006040518060c0016040528060035481526020017f000000000000000000000000000000000000000000000000000000000000000081526020018961ffff168152602001600660049054906101000a900463ffffffff16858c6117a791906133b3565b6117b191906133b3565b63ffffffff1681526020018863ffffffff16815260200187878080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050509152506002546040517f9b1c385e00000000000000000000000000000000000000000000000000000000815291925073ffffffffffffffffffffffffffffffffffffffff1690639b1c385e906118579084906004016133d7565b6020604051808303816000875af1158015611876573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061189a9190613347565b6040805160608101825233815263ffffffff808d16602080840191825267ffffffffffffffff3a81168587019081526000888152600790935295909120935184549251955190911678010000000000000000000000000000000000000000000000000277ffffffffffffffffffffffffffffffffffffffffffffffff9590931674010000000000000000000000000000000000000000027fffffffffffffffff00000000000000000000000000000000000000000000000090921673ffffffffffffffffffffffffffffffffffffffff91909116171792909216919091179055935050505095945050505050565b611990612491565b600280547fffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff1690556040517fc0f961051f97b04c496472d11cb6170d844e4b2c9dfd3b602a4fa0139712d48490600090a1565b60025474010000000000000000000000000000000000000000900460ff16611a67576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f77726170706572206973206e6f7420636f6e666967757265640000000000000060448201526064016108a0565b6002547501000000000000000000000000000000000000000000900460ff1615611aed576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f777261707065722069732064697361626c65640000000000000000000000000060448201526064016108a0565b3373ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001614611b8c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f6f6e6c792063616c6c61626c652066726f6d204c494e4b00000000000000000060448201526064016108a0565b6000808080611b9d85870187613434565b9350935093509350611bb081600161080b565b6000611bbb856128d9565b9050600080611bc8612627565b915091506000611bdf8863ffffffff163a8561277d565b9050808b1015611c4b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f66656520746f6f206c6f7700000000000000000000000000000000000000000060448201526064016108a0565b600254760100000000000000000000000000000000000000000000900460ff1663ffffffff87161115611cda576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f6e756d576f72647320746f6f206869676800000000000000000000000000000060448201526064016108a0565b60006040518060c0016040528060035481526020017f000000000000000000000000000000000000000000000000000000000000000081526020018961ffff168152602001600660049054906101000a900463ffffffff16878c611d3e91906133b3565b611d4891906133b3565b63ffffffff908116825289166020820152604090810188905260025490517f9b1c385e00000000000000000000000000000000000000000000000000000000815291925060009173ffffffffffffffffffffffffffffffffffffffff90911690639b1c385e90611dbc9085906004016133d7565b6020604051808303816000875af1158015611ddb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611dff9190613347565b905060405180606001604052808f73ffffffffffffffffffffffffffffffffffffffff1681526020018b63ffffffff1681526020013a67ffffffffffffffff168152506007600083815260200190815260200160002060008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060208201518160000160146101000a81548163ffffffff021916908363ffffffff16021790555060408201518160000160186101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550905050806004819055508315611f40576005546040805183815260208101929092527f6ca648a381f22ead7e37773d934e64885dcf861fbfbb26c40354cbf0c4662d1a910160405180910390a15b5050505050505050505050505050565b611f58612491565b600680547fffffffffffffffffffffffffffffffffffffffff00000000ffffffffffffffff166801000000000000000063ffffffff8416908102919091179091556040519081527f697b48b8b76cebb09a54ec4ff810e8a181c96f65395d51c744db09c115d1d5d0906020016114d2565b611fd1612491565b611fda816128f1565b50565b611fe5612491565b8163ffffffff168163ffffffff16111561203b576040517f2780dcb200000000000000000000000000000000000000000000000000000000815263ffffffff8083166004830152831660248201526044016108a0565b609b60ff89161115612085576040517f3acc511a00000000000000000000000000000000000000000000000000000000815260ff89166004820152609b60248201526044016108a0565b609b60ff881611156120cf576040517f3acc511a00000000000000000000000000000000000000000000000000000000815260ff88166004820152609b60248201526044016108a0565b89600660046101000a81548163ffffffff021916908363ffffffff160217905550886006600c6101000a81548163ffffffff021916908363ffffffff16021790555087600660186101000a81548160ff021916908360ff16021790555086600660196101000a81548160ff021916908360ff1602179055508560038190555084600260166101000a81548160ff021916908360ff1602179055506001600260146101000a81548160ff02191690831515021790555083600660006101000a81548163ffffffff021916908363ffffffff1602179055508260058190555081600660106101000a81548163ffffffff021916908363ffffffff16021790555080600660146101000a81548163ffffffff021916908363ffffffff1602179055507fb18fd84519589131d50ae195b0aea1b042c3c0b25a53bb894d9d81c78980c20f8a8a8a8a8a8a8a8a8a600660149054906101000a900463ffffffff1660405161229a9a9998979695949392919063ffffffff9a8b168152988a1660208a015260ff97881660408a0152958716606089015260808801949094529190941660a086015292851660c085015260e08401929092529083166101008301529091166101208201526101400190565b60405180910390a150505050505050505050565b60008281526007602081815260408084208151606081018352815473ffffffffffffffffffffffffffffffffffffffff808216835274010000000000000000000000000000000000000000820463ffffffff1683870152780100000000000000000000000000000000000000000000000090910467ffffffffffffffff1693820193909352878652939092529290558051909181166123a9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f72657175657374206e6f7420666f756e6400000000000000000000000000000060448201526064016108a0565b600080631fe543e360e01b86866040516024016123c79291906134a3565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050509050600061243d856020015163ffffffff1685846129e6565b9050806124885760405173ffffffffffffffffffffffffffffffffffffffff85169088907fc551b83c151f2d1c7eeb938ac59008e0409f1c1dc1e2f112449d4d79b458902290600090a35b50505050505050565b60005473ffffffffffffffffffffffffffffffffffffffff163314612512576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f4f6e6c792063616c6c61626c65206279206f776e65720000000000000000000060448201526064016108a0565b565b600654600090819061253490640100000000900463ffffffff16846134f1565b6006549091506000906125589068010000000000000000900463ffffffff16612a32565b60065461257b906c01000000000000000000000000900463ffffffff1687613508565b61258590866134f1565b61258f9190613508565b6006549091506000906125c190700100000000000000000000000000000000900463ffffffff1664e8d4a510006134f1565b6006546064906125f0907801000000000000000000000000000000000000000000000000900460ff168261351b565b6125fd9060ff16856134f1565b6126079190613563565b6126119190613508565b905061261d8184613508565b9695505050505050565b6000806000600660009054906101000a900463ffffffff16905060007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663feaf968c6040518163ffffffff1660e01b815260040160a060405180830381865afa1580156126ae573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126d29190613591565b50919650909250505063ffffffff8216158015906126fe57506126f581426135e1565b8263ffffffff16105b9250821561270c5760055493505b6000841215612777576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f496e76616c6964204c494e4b207765692070726963650000000000000000000060448201526064016108a0565b50509091565b600654600090819061279d90640100000000900463ffffffff16856134f1565b6006549091506000906127c19068010000000000000000900463ffffffff16612a32565b6006546127e4906c01000000000000000000000000900463ffffffff1688613508565b6127ee90876134f1565b6127f89190613508565b60065490915060009061283f9063ffffffff7401000000000000000000000000000000000000000082048116917001000000000000000000000000000000009004166135f4565b6128549063ffffffff1664e8d4a510006134f1565b60065460649061288490790100000000000000000000000000000000000000000000000000900460ff168261351b565b6128919060ff16856134f1565b61289b9190613563565b6128a59190613508565b9050846128b28285613508565b6128c490670de0b6b3a76400006134f1565b6128ce9190613563565b979650505050505050565b60006128e6603f83613611565b610cca9060016133b3565b3373ffffffffffffffffffffffffffffffffffffffff821603612970576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f43616e6e6f74207472616e7366657220746f2073656c6600000000000000000060448201526064016108a0565b600180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83811691821790925560008054604051929316917fed8889f560326eb138920d842192f0eb3dd22b4f139c87a2c57538e05bae12789190a350565b60005a6113888110156129f857600080fd5b611388810390508460408204820311612a1057600080fd5b50823b612a1c57600080fd5b60008083516020850160008789f1949350505050565b600046612a3e81612af3565b15612ad3576000606c73ffffffffffffffffffffffffffffffffffffffff166341b247a86040518163ffffffff1660e01b815260040160c060405180830381865afa158015612a91573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ab59190613634565b5050505091505083608c612ac99190613508565b61134a90826134f1565b612adc81612b16565b15612aea57610dfb83612b50565b50600092915050565b600061a4b1821480612b07575062066eed82145b80610cca57505062066eee1490565b6000600a821480612b2857506101a482145b80612b35575062aa37dc82145b80612b41575061210582145b80610cca57505062014a331490565b60008073420000000000000000000000000000000000000f73ffffffffffffffffffffffffffffffffffffffff1663519b4bd36040518163ffffffff1660e01b8152600401602060405180830381865afa158015612bb2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612bd69190613347565b9050600080612be581866135e1565b90506000612bf48260106134f1565b612bff8460046134f1565b612c099190613508565b9050600073420000000000000000000000000000000000000f73ffffffffffffffffffffffffffffffffffffffff16630c18c1626040518163ffffffff1660e01b8152600401602060405180830381865afa158015612c6c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c909190613347565b9050600073420000000000000000000000000000000000000f73ffffffffffffffffffffffffffffffffffffffff1663f45e65d86040518163ffffffff1660e01b8152600401602060405180830381865afa158015612cf3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612d179190613347565b9050600073420000000000000000000000000000000000000f73ffffffffffffffffffffffffffffffffffffffff1663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015612d7a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612d9e9190613347565b90506000612dad82600a61379e565b905060008184612dbd8789613508565b612dc7908c6134f1565b612dd191906134f1565b612ddb9190613563565b9b9a5050505050505050505050565b6000815180845260005b81811015612e1057602081850181015186830182015201612df4565b5060006020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b602081526000610cc76020830184612dea565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715612ed757612ed7612e61565b604052919050565b600082601f830112612ef057600080fd5b813567ffffffffffffffff811115612f0a57612f0a612e61565b612f3b60207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f84011601612e90565b818152846020838601011115612f5057600080fd5b816020850160208301376000918101602001919091529392505050565b8015158114611fda57600080fd5b60008060408385031215612f8e57600080fd5b823567ffffffffffffffff811115612fa557600080fd5b612fb185828601612edf565b9250506020830135612fc281612f6d565b809150509250929050565b60008060408385031215612fe057600080fd5b8235915060208084013567ffffffffffffffff8082111561300057600080fd5b818601915086601f83011261301457600080fd5b81358181111561302657613026612e61565b8060051b9150613037848301612e90565b818152918301840191848101908984111561305157600080fd5b938501935b8385101561306f57843582529385019390850190613056565b8096505050505050509250929050565b803573ffffffffffffffffffffffffffffffffffffffff81168114610dff57600080fd5b6000602082840312156130b557600080fd5b610cc78261307f565b803563ffffffff81168114610dff57600080fd5b600080604083850312156130e557600080fd5b6130ee836130be565b946020939093013593505050565b60006020828403121561310e57600080fd5b610cc7826130be565b60006020828403121561312957600080fd5b5035919050565b803561ffff81168114610dff57600080fd5b60008083601f84011261315457600080fd5b50813567ffffffffffffffff81111561316c57600080fd5b60208301915083602082850101111561318457600080fd5b9250929050565b6000806000806000608086880312156131a357600080fd5b6131ac866130be565b94506131ba60208701613130565b93506131c8604087016130be565b9250606086013567ffffffffffffffff8111156131e457600080fd5b6131f088828901613142565b969995985093965092949392505050565b6000806000806060858703121561321757600080fd5b6132208561307f565b935060208501359250604085013567ffffffffffffffff81111561324357600080fd5b61324f87828801613142565b95989497509550505050565b803560ff81168114610dff57600080fd5b6000806000806000806000806000806101408b8d03121561328c57600080fd5b6132958b6130be565b99506132a360208c016130be565b98506132b160408c0161325b565b97506132bf60608c0161325b565b965060808b013595506132d460a08c0161325b565b94506132e260c08c016130be565b935060e08b013592506132f86101008c016130be565b91506133076101208c016130be565b90509295989b9194979a5092959850565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60006020828403121561335957600080fd5b5051919050565b60006020828403121561337257600080fd5b815161337d81612f6d565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b63ffffffff8181168382160190808211156133d0576133d0613384565b5092915050565b60208152815160208201526020820151604082015261ffff60408301511660608201526000606083015163ffffffff80821660808501528060808601511660a0850152505060a083015160c08084015261134a60e0840182612dea565b6000806000806080858703121561344a57600080fd5b613453856130be565b935061346160208601613130565b925061346f604086016130be565b9150606085013567ffffffffffffffff81111561348b57600080fd5b61349787828801612edf565b91505092959194509250565b6000604082018483526020604081850152818551808452606086019150828701935060005b818110156134e4578451835293830193918301916001016134c8565b5090979650505050505050565b8082028115828204841417610cca57610cca613384565b80820180821115610cca57610cca613384565b60ff8181168382160190811115610cca57610cca613384565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60008261357257613572613534565b500490565b805169ffffffffffffffffffff81168114610dff57600080fd5b600080600080600060a086880312156135a957600080fd5b6135b286613577565b94506020860151935060408601519250606086015191506135d560808701613577565b90509295509295909350565b81810381811115610cca57610cca613384565b63ffffffff8281168282160390808211156133d0576133d0613384565b600063ffffffff8084168061362857613628613534565b92169190910492915050565b60008060008060008060c0878903121561364d57600080fd5b865195506020870151945060408701519350606087015192506080870151915060a087015190509295509295509295565b600181815b808511156136d757817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048211156136bd576136bd613384565b808516156136ca57918102915b93841c9390800290613683565b509250929050565b6000826136ee57506001610cca565b816136fb57506000610cca565b8160018114613711576002811461371b57613737565b6001915050610cca565b60ff84111561372c5761372c613384565b50506001821b610cca565b5060208310610133831016604e8410600b841016171561375a575081810a610cca565b613764838361367e565b807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0482111561379657613796613384565b029392505050565b6000610cc783836136df56fea164736f6c6343000813000a", + ABI: "[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_link\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_linkNativeFeed\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_coordinator\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_subId\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"FailedToTransferLink\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint16\",\"name\":\"expectedMinimumLength\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"actualLength\",\"type\":\"uint16\"}],\"name\":\"IncorrectExtraArgsLength\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"premiumPercentage\",\"type\":\"uint8\"},{\"internalType\":\"uint8\",\"name\":\"max\",\"type\":\"uint8\"}],\"name\":\"InvalidPremiumPercentage\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"LINKPaymentInRequestRandomWordsInNative\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"LinkAlreadySet\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"flatFeeLinkDiscountPPM\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"flatFeeNativePPM\",\"type\":\"uint32\"}],\"name\":\"LinkDiscountTooHigh\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NativePaymentInOnTokenTransfer\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"have\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"want\",\"type\":\"address\"}],\"name\":\"OnlyCoordinatorCanFulfill\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"have\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"coordinator\",\"type\":\"address\"}],\"name\":\"OnlyOwnerOrCoordinator\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SubscriptionIdMissing\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ZeroAddress\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint32\",\"name\":\"wrapperGasOverhead\",\"type\":\"uint32\"},{\"indexed\":false,\"internalType\":\"uint32\",\"name\":\"coordinatorGasOverhead\",\"type\":\"uint32\"},{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"coordinatorNativePremiumPercentage\",\"type\":\"uint8\"},{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"coordinatorLinkPremiumPercentage\",\"type\":\"uint8\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"keyHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"maxNumWords\",\"type\":\"uint8\"},{\"indexed\":false,\"internalType\":\"uint32\",\"name\":\"stalenessSeconds\",\"type\":\"uint32\"},{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"fallbackWeiPerUnitLink\",\"type\":\"int256\"},{\"indexed\":false,\"internalType\":\"uint32\",\"name\":\"fulfillmentFlatFeeNativePPM\",\"type\":\"uint32\"},{\"indexed\":false,\"internalType\":\"uint32\",\"name\":\"fulfillmentFlatFeeLinkDiscountPPM\",\"type\":\"uint32\"}],\"name\":\"ConfigSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"vrfCoordinator\",\"type\":\"address\"}],\"name\":\"CoordinatorSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[],\"name\":\"Disabled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[],\"name\":\"Enabled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"requestId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"fallbackWeiPerUnitLink\",\"type\":\"int256\"}],\"name\":\"FallbackWeiPerUnitLinkUsed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint32\",\"name\":\"size\",\"type\":\"uint32\"}],\"name\":\"FulfillmentTxSizeSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"NativeWithdrawn\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"OwnershipTransferRequested\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"Withdrawn\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"requestId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"consumer\",\"type\":\"address\"}],\"name\":\"WrapperFulfillmentFailed\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"SUBSCRIPTION_ID\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"acceptOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"_callbackGasLimit\",\"type\":\"uint32\"}],\"name\":\"calculateRequestPrice\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"_callbackGasLimit\",\"type\":\"uint32\"}],\"name\":\"calculateRequestPriceNative\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"extraArgs\",\"type\":\"bytes\"},{\"internalType\":\"bool\",\"name\":\"isLinkMode\",\"type\":\"bool\"}],\"name\":\"checkPaymentMode\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"disable\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"enable\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"_callbackGasLimit\",\"type\":\"uint32\"},{\"internalType\":\"uint256\",\"name\":\"_requestGasPriceWei\",\"type\":\"uint256\"}],\"name\":\"estimateRequestPrice\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"_callbackGasLimit\",\"type\":\"uint32\"},{\"internalType\":\"uint256\",\"name\":\"_requestGasPriceWei\",\"type\":\"uint256\"}],\"name\":\"estimateRequestPriceNative\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getConfig\",\"outputs\":[{\"internalType\":\"int256\",\"name\":\"fallbackWeiPerUnitLink\",\"type\":\"int256\"},{\"internalType\":\"uint32\",\"name\":\"stalenessSeconds\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"fulfillmentFlatFeeNativePPM\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"fulfillmentFlatFeeLinkDiscountPPM\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"wrapperGasOverhead\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"coordinatorGasOverhead\",\"type\":\"uint32\"},{\"internalType\":\"uint8\",\"name\":\"wrapperNativePremiumPercentage\",\"type\":\"uint8\"},{\"internalType\":\"uint8\",\"name\":\"wrapperLinkPremiumPercentage\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"keyHash\",\"type\":\"bytes32\"},{\"internalType\":\"uint8\",\"name\":\"maxNumWords\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"lastRequestId\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"link\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"linkNativeFeed\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_sender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"_data\",\"type\":\"bytes\"}],\"name\":\"onTokenTransfer\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"requestId\",\"type\":\"uint256\"},{\"internalType\":\"uint256[]\",\"name\":\"randomWords\",\"type\":\"uint256[]\"}],\"name\":\"rawFulfillRandomWords\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"_callbackGasLimit\",\"type\":\"uint32\"},{\"internalType\":\"uint16\",\"name\":\"_requestConfirmations\",\"type\":\"uint16\"},{\"internalType\":\"uint32\",\"name\":\"_numWords\",\"type\":\"uint32\"},{\"internalType\":\"bytes\",\"name\":\"extraArgs\",\"type\":\"bytes\"}],\"name\":\"requestRandomWordsInNative\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"requestId\",\"type\":\"uint256\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"s_callbacks\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"callbackAddress\",\"type\":\"address\"},{\"internalType\":\"uint32\",\"name\":\"callbackGasLimit\",\"type\":\"uint32\"},{\"internalType\":\"uint64\",\"name\":\"requestGasPrice\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"s_configured\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"s_disabled\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"s_fulfillmentTxSizeBytes\",\"outputs\":[{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"s_vrfCoordinator\",\"outputs\":[{\"internalType\":\"contractIVRFCoordinatorV2Plus\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"_wrapperGasOverhead\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"_coordinatorGasOverhead\",\"type\":\"uint32\"},{\"internalType\":\"uint8\",\"name\":\"_coordinatorNativePremiumPercentage\",\"type\":\"uint8\"},{\"internalType\":\"uint8\",\"name\":\"_coordinatorLinkPremiumPercentage\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"_keyHash\",\"type\":\"bytes32\"},{\"internalType\":\"uint8\",\"name\":\"_maxNumWords\",\"type\":\"uint8\"},{\"internalType\":\"uint32\",\"name\":\"_stalenessSeconds\",\"type\":\"uint32\"},{\"internalType\":\"int256\",\"name\":\"_fallbackWeiPerUnitLink\",\"type\":\"int256\"},{\"internalType\":\"uint32\",\"name\":\"_fulfillmentFlatFeeNativePPM\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"_fulfillmentFlatFeeLinkDiscountPPM\",\"type\":\"uint32\"}],\"name\":\"setConfig\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_vrfCoordinator\",\"type\":\"address\"}],\"name\":\"setCoordinator\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"size\",\"type\":\"uint32\"}],\"name\":\"setFulfillmentTxSize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"typeAndVersion\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_recipient\",\"type\":\"address\"}],\"name\":\"withdraw\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_recipient\",\"type\":\"address\"}],\"name\":\"withdrawNative\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", + Bin: "0x60e06040526006805463ffffffff60401b191669024400000000000000001790553480156200002d57600080fd5b5060405162003c1c38038062003c1c8339810160408190526200005091620002a1565b813380600081620000a85760405162461bcd60e51b815260206004820152601860248201527f43616e6e6f7420736574206f776e657220746f207a65726f000000000000000060448201526064015b60405180910390fd5b600080546001600160a01b0319166001600160a01b0384811691909117909155811615620000db57620000db81620001d9565b5050506001600160a01b038116620001065760405163d92e233d60e01b815260040160405180910390fd5b600280546001600160a01b0319166001600160a01b0392831617905584811660a052831660c0526000819003620001505760405163a81c0bef60e01b815260040160405180910390fd5b60025460405163dc311dd360e01b8152600481018390526001600160a01b039091169063dc311dd390602401600060405180830381865afa1580156200019a573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052620001c4919081019062000321565b505050608092909252506200044a9350505050565b336001600160a01b03821603620002335760405162461bcd60e51b815260206004820152601760248201527f43616e6e6f74207472616e7366657220746f2073656c6600000000000000000060448201526064016200009f565b600180546001600160a01b0319166001600160a01b0383811691821790925560008054604051929316917fed8889f560326eb138920d842192f0eb3dd22b4f139c87a2c57538e05bae12789190a350565b80516001600160a01b03811681146200029c57600080fd5b919050565b60008060008060808587031215620002b857600080fd5b620002c38562000284565b9350620002d36020860162000284565b9250620002e36040860162000284565b6060959095015193969295505050565b80516001600160601b03811681146200029c57600080fd5b634e487b7160e01b600052604160045260246000fd5b600080600080600060a086880312156200033a57600080fd5b6200034586620002f3565b9450602062000356818801620002f3565b60408801519095506001600160401b0380821682146200037557600080fd5b8195506200038660608a0162000284565b945060808901519150808211156200039d57600080fd5b818901915089601f830112620003b257600080fd5b815181811115620003c757620003c76200030b565b8060051b604051601f19603f83011681018181108582111715620003ef57620003ef6200030b565b60405291825284820192508381018501918c8311156200040e57600080fd5b938501935b828510156200043757620004278562000284565b8452938501939285019262000413565b8096505050505050509295509295909350565b60805160a05160c051613778620004a4600039600081816102ff015261260601526000818161028b01528181610f1b01528181610fea0152611ac60152600081816101d90152818161171b0152611cb201526137786000f3fe6080604052600436106101c25760003560e01c806379ba5097116100f7578063a4c0ed3611610095578063cdd8d88511610064578063cdd8d88514610738578063f2fde38b14610776578063fc2a88c314610796578063fc2dbebc146107ac57600080fd5b8063a4c0ed36146105ba578063a608a1e1146105da578063bf17e5591461060d578063c3f909d41461062d57600080fd5b80638ea98117116100d15780638ea98117146105455780639cfc058e146105655780639eccacf614610578578063a3907d71146105a557600080fd5b806379ba5097146104e55780637fb5d19d146104fa5780638da5cb5b1461051a57600080fd5b80632f622e6b1161016457806348baa1c51161013e57806348baa1c5146103985780634b1609351461046357806351cff8d91461048357806357a8070a146104a357600080fd5b80632f622e6b146103385780633255c456146103585780634306d3541461037857600080fd5b80631c4695f4116101a05780631c4695f41461027c5780631fe543e3146102d05780632808e6c8146102f05780632f2770db1461032357600080fd5b8063030932bb146101c7578063181f5a771461020e57806318b6f4c81461025a575b600080fd5b3480156101d357600080fd5b506101fb7f000000000000000000000000000000000000000000000000000000000000000081565b6040519081526020015b60405180910390f35b34801561021a57600080fd5b50604080518082018252601281527f56524656325772617070657220312e302e300000000000000000000000000000602082015290516102059190612e0f565b34801561026657600080fd5b5061027a610275366004612f3c565b6107cc565b005b34801561028857600080fd5b507f00000000000000000000000000000000000000000000000000000000000000005b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610205565b3480156102dc57600080fd5b5061027a6102eb366004612f8e565b610954565b3480156102fc57600080fd5b507f00000000000000000000000000000000000000000000000000000000000000006102ab565b34801561032f57600080fd5b5061027a6109d1565b34801561034457600080fd5b5061027a610353366004613064565b610a44565b34801561036457600080fd5b506101fb610373366004613093565b610b6b565b34801561038457600080fd5b506101fb6103933660046130bd565b610c91565b3480156103a457600080fd5b506104226103b33660046130d8565b60076020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff81169074010000000000000000000000000000000000000000810463ffffffff16907801000000000000000000000000000000000000000000000000900467ffffffffffffffff1683565b6040805173ffffffffffffffffffffffffffffffffffffffff909416845263ffffffff909216602084015267ffffffffffffffff1690820152606001610205565b34801561046f57600080fd5b506101fb61047e3660046130bd565b610dc5565b34801561048f57600080fd5b5061027a61049e366004613064565b610ee2565b3480156104af57600080fd5b506002546104d59074010000000000000000000000000000000000000000900460ff1681565b6040519015158152602001610205565b3480156104f157600080fd5b5061027a6110e3565b34801561050657600080fd5b506101fb610515366004613093565b6111e0565b34801561052657600080fd5b5060005473ffffffffffffffffffffffffffffffffffffffff166102ab565b34801561055157600080fd5b5061027a610560366004613064565b611313565b6101fb61057336600461314c565b61149e565b34801561058457600080fd5b506002546102ab9073ffffffffffffffffffffffffffffffffffffffff1681565b3480156105b157600080fd5b5061027a611949565b3480156105c657600080fd5b5061027a6105d53660046131c2565b6119a4565b3480156105e657600080fd5b506002546104d5907501000000000000000000000000000000000000000000900460ff1681565b34801561061957600080fd5b5061027a6106283660046130bd565b611f11565b34801561063957600080fd5b506005546006546003546002546040805194855263ffffffff80851660208701527001000000000000000000000000000000008504811691860191909152740100000000000000000000000000000000000000008404811660608601526401000000008404811660808601526c0100000000000000000000000084041660a085015260ff78010000000000000000000000000000000000000000000000008404811660c0860152790100000000000000000000000000000000000000000000000000909304831660e085015261010084019190915276010000000000000000000000000000000000000000000090041661012082015261014001610205565b34801561074457600080fd5b506006546107619068010000000000000000900463ffffffff1681565b60405163ffffffff9091168152602001610205565b34801561078257600080fd5b5061027a610791366004613064565b611f8a565b3480156107a257600080fd5b506101fb60045481565b3480156107b857600080fd5b5061027a6107c736600461322d565b611f9e565b8151600003610810578061080c576040517f6b81746e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5050565b81516024111561086a5781516040517f51200dce0000000000000000000000000000000000000000000000000000000081526108619160249160040161ffff92831681529116602082015260400190565b60405180910390fd5b60008260238151811061087f5761087f6132d9565b6020910101517fff00000000000000000000000000000000000000000000000000000000000000167f01000000000000000000000000000000000000000000000000000000000000001490508080156108d55750815b1561090c576040517f6048aa6800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80158015610918575081155b1561094f576040517f6b81746e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b505050565b60025473ffffffffffffffffffffffffffffffffffffffff1633146109c7576002546040517f1cf993f400000000000000000000000000000000000000000000000000000000815233600482015273ffffffffffffffffffffffffffffffffffffffff9091166024820152604401610861565b61080c828261226f565b6109d9612452565b600280547fffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff1675010000000000000000000000000000000000000000001790556040517f75884cdadc4a89e8b545db800057f06ec7f5338a08183c7ba515f2bfdd9fe1e190600090a1565b610a4c612452565b604051479060009073ffffffffffffffffffffffffffffffffffffffff84169083908381818185875af1925050503d8060008114610aa6576040519150601f19603f3d011682016040523d82523d6000602084013e610aab565b606091505b5050905080610b16576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f6661696c656420746f207769746864726177206e6174697665000000000000006044820152606401610861565b8273ffffffffffffffffffffffffffffffffffffffff167fc303ca808382409472acbbf899c316cf439f409f6584aae22df86dfa3c9ed50483604051610b5e91815260200190565b60405180910390a2505050565b60025460009074010000000000000000000000000000000000000000900460ff16610bf2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f77726170706572206973206e6f7420636f6e66696775726564000000000000006044820152606401610861565b6002547501000000000000000000000000000000000000000000900460ff1615610c78576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f777261707065722069732064697361626c6564000000000000000000000000006044820152606401610861565b610c888363ffffffff16836124d5565b90505b92915050565b60025460009074010000000000000000000000000000000000000000900460ff16610d18576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f77726170706572206973206e6f7420636f6e66696775726564000000000000006044820152606401610861565b6002547501000000000000000000000000000000000000000000900460ff1615610d9e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f777261707065722069732064697361626c6564000000000000000000000000006044820152606401610861565b6000610da86125e8565b509050610dbc8363ffffffff163a8361273e565b9150505b919050565b60025460009074010000000000000000000000000000000000000000900460ff16610e4c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f77726170706572206973206e6f7420636f6e66696775726564000000000000006044820152606401610861565b6002547501000000000000000000000000000000000000000000900460ff1615610ed2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f777261707065722069732064697361626c6564000000000000000000000000006044820152606401610861565b610c8b8263ffffffff163a6124d5565b610eea612452565b6040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201526000907f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16906370a0823190602401602060405180830381865afa158015610f77573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f9b9190613308565b6040517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8481166004830152602482018390529192507f00000000000000000000000000000000000000000000000000000000000000009091169063a9059cbb906044016020604051808303816000875af1158015611035573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110599190613321565b61108f576040517f7c07fc4c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff167f7084f5476618d8e60b11ef0d7d3f06914655adb8793e28ff7f018d4c76d505d5826040516110d791815260200190565b60405180910390a25050565b60015473ffffffffffffffffffffffffffffffffffffffff163314611164576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f4d7573742062652070726f706f736564206f776e6572000000000000000000006044820152606401610861565b60008054337fffffffffffffffffffffffff00000000000000000000000000000000000000008083168217845560018054909116905560405173ffffffffffffffffffffffffffffffffffffffff90921692909183917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a350565b60025460009074010000000000000000000000000000000000000000900460ff16611267576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f77726170706572206973206e6f7420636f6e66696775726564000000000000006044820152606401610861565b6002547501000000000000000000000000000000000000000000900460ff16156112ed576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f777261707065722069732064697361626c6564000000000000000000000000006044820152606401610861565b60006112f76125e8565b50905061130b8463ffffffff16848361273e565b949350505050565b60005473ffffffffffffffffffffffffffffffffffffffff163314801590611353575060025473ffffffffffffffffffffffffffffffffffffffff163314155b156113d7573361137860005473ffffffffffffffffffffffffffffffffffffffff1690565b6002546040517f061db9c100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff93841660048201529183166024830152919091166044820152606401610861565b73ffffffffffffffffffffffffffffffffffffffff8116611424576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600280547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527fd1a6a14209a385a964d036e404cb5cfb71f4000cdb03c9366292430787261be6906020015b60405180910390a150565b60025460009074010000000000000000000000000000000000000000900460ff16611525576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f77726170706572206973206e6f7420636f6e66696775726564000000000000006044820152606401610861565b6002547501000000000000000000000000000000000000000000900460ff16156115ab576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f777261707065722069732064697361626c6564000000000000000000000000006044820152606401610861565b6115ea83838080601f016020809104026020016040519081016040528093929190818152602001838380828437600092018290525092506107cc915050565b60006115f58761289a565b905060006116098863ffffffff163a6124d5565b905080341015611675576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f66656520746f6f206c6f770000000000000000000000000000000000000000006044820152606401610861565b600254760100000000000000000000000000000000000000000000900460ff1663ffffffff87161115611704576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f6e756d576f72647320746f6f20686967680000000000000000000000000000006044820152606401610861565b60006040518060c0016040528060035481526020017f000000000000000000000000000000000000000000000000000000000000000081526020018961ffff168152602001600660049054906101000a900463ffffffff16858c6117689190613374565b6117729190613374565b63ffffffff1681526020018863ffffffff16815260200187878080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050509152506002546040517f9b1c385e00000000000000000000000000000000000000000000000000000000815291925073ffffffffffffffffffffffffffffffffffffffff1690639b1c385e90611818908490600401613398565b6020604051808303816000875af1158015611837573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061185b9190613308565b6040805160608101825233815263ffffffff808d16602080840191825267ffffffffffffffff3a81168587019081526000888152600790935295909120935184549251955190911678010000000000000000000000000000000000000000000000000277ffffffffffffffffffffffffffffffffffffffffffffffff9590931674010000000000000000000000000000000000000000027fffffffffffffffff00000000000000000000000000000000000000000000000090921673ffffffffffffffffffffffffffffffffffffffff91909116171792909216919091179055935050505095945050505050565b611951612452565b600280547fffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff1690556040517fc0f961051f97b04c496472d11cb6170d844e4b2c9dfd3b602a4fa0139712d48490600090a1565b60025474010000000000000000000000000000000000000000900460ff16611a28576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f77726170706572206973206e6f7420636f6e66696775726564000000000000006044820152606401610861565b6002547501000000000000000000000000000000000000000000900460ff1615611aae576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f777261707065722069732064697361626c6564000000000000000000000000006044820152606401610861565b3373ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001614611b4d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f6f6e6c792063616c6c61626c652066726f6d204c494e4b0000000000000000006044820152606401610861565b6000808080611b5e858701876133f5565b9350935093509350611b718160016107cc565b6000611b7c8561289a565b9050600080611b896125e8565b915091506000611ba08863ffffffff163a8561273e565b9050808b1015611c0c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f66656520746f6f206c6f770000000000000000000000000000000000000000006044820152606401610861565b600254760100000000000000000000000000000000000000000000900460ff1663ffffffff87161115611c9b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f6e756d576f72647320746f6f20686967680000000000000000000000000000006044820152606401610861565b60006040518060c0016040528060035481526020017f000000000000000000000000000000000000000000000000000000000000000081526020018961ffff168152602001600660049054906101000a900463ffffffff16878c611cff9190613374565b611d099190613374565b63ffffffff908116825289166020820152604090810188905260025490517f9b1c385e00000000000000000000000000000000000000000000000000000000815291925060009173ffffffffffffffffffffffffffffffffffffffff90911690639b1c385e90611d7d908590600401613398565b6020604051808303816000875af1158015611d9c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611dc09190613308565b905060405180606001604052808f73ffffffffffffffffffffffffffffffffffffffff1681526020018b63ffffffff1681526020013a67ffffffffffffffff168152506007600083815260200190815260200160002060008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060208201518160000160146101000a81548163ffffffff021916908363ffffffff16021790555060408201518160000160186101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550905050806004819055508315611f01576005546040805183815260208101929092527f6ca648a381f22ead7e37773d934e64885dcf861fbfbb26c40354cbf0c4662d1a910160405180910390a15b5050505050505050505050505050565b611f19612452565b600680547fffffffffffffffffffffffffffffffffffffffff00000000ffffffffffffffff166801000000000000000063ffffffff8416908102919091179091556040519081527f697b48b8b76cebb09a54ec4ff810e8a181c96f65395d51c744db09c115d1d5d090602001611493565b611f92612452565b611f9b816128b2565b50565b611fa6612452565b8163ffffffff168163ffffffff161115611ffc576040517f2780dcb200000000000000000000000000000000000000000000000000000000815263ffffffff808316600483015283166024820152604401610861565b609b60ff89161115612046576040517f3acc511a00000000000000000000000000000000000000000000000000000000815260ff89166004820152609b6024820152604401610861565b609b60ff88161115612090576040517f3acc511a00000000000000000000000000000000000000000000000000000000815260ff88166004820152609b6024820152604401610861565b89600660046101000a81548163ffffffff021916908363ffffffff160217905550886006600c6101000a81548163ffffffff021916908363ffffffff16021790555087600660186101000a81548160ff021916908360ff16021790555086600660196101000a81548160ff021916908360ff1602179055508560038190555084600260166101000a81548160ff021916908360ff1602179055506001600260146101000a81548160ff02191690831515021790555083600660006101000a81548163ffffffff021916908363ffffffff1602179055508260058190555081600660106101000a81548163ffffffff021916908363ffffffff16021790555080600660146101000a81548163ffffffff021916908363ffffffff1602179055507fb18fd84519589131d50ae195b0aea1b042c3c0b25a53bb894d9d81c78980c20f8a8a8a8a8a8a8a8a8a600660149054906101000a900463ffffffff1660405161225b9a9998979695949392919063ffffffff9a8b168152988a1660208a015260ff97881660408a0152958716606089015260808801949094529190941660a086015292851660c085015260e08401929092529083166101008301529091166101208201526101400190565b60405180910390a150505050505050505050565b60008281526007602081815260408084208151606081018352815473ffffffffffffffffffffffffffffffffffffffff808216835274010000000000000000000000000000000000000000820463ffffffff1683870152780100000000000000000000000000000000000000000000000090910467ffffffffffffffff16938201939093528786529390925292905580519091811661236a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f72657175657374206e6f7420666f756e640000000000000000000000000000006044820152606401610861565b600080631fe543e360e01b8686604051602401612388929190613464565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050905060006123fe856020015163ffffffff1685846129a7565b9050806124495760405173ffffffffffffffffffffffffffffffffffffffff85169088907fc551b83c151f2d1c7eeb938ac59008e0409f1c1dc1e2f112449d4d79b458902290600090a35b50505050505050565b60005473ffffffffffffffffffffffffffffffffffffffff1633146124d3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f4f6e6c792063616c6c61626c65206279206f776e6572000000000000000000006044820152606401610861565b565b60065460009081906124f590640100000000900463ffffffff16846134b2565b6006549091506000906125199068010000000000000000900463ffffffff166129f3565b60065461253c906c01000000000000000000000000900463ffffffff16876134c9565b61254690866134b2565b61255091906134c9565b60065490915060009061258290700100000000000000000000000000000000900463ffffffff1664e8d4a510006134b2565b6006546064906125b1907801000000000000000000000000000000000000000000000000900460ff16826134dc565b6125be9060ff16856134b2565b6125c89190613524565b6125d291906134c9565b90506125de81846134c9565b9695505050505050565b6000806000600660009054906101000a900463ffffffff16905060007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663feaf968c6040518163ffffffff1660e01b815260040160a060405180830381865afa15801561266f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126939190613552565b50919650909250505063ffffffff8216158015906126bf57506126b681426135a2565b8263ffffffff16105b925082156126cd5760055493505b6000841215612738576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f496e76616c6964204c494e4b20776569207072696365000000000000000000006044820152606401610861565b50509091565b600654600090819061275e90640100000000900463ffffffff16856134b2565b6006549091506000906127829068010000000000000000900463ffffffff166129f3565b6006546127a5906c01000000000000000000000000900463ffffffff16886134c9565b6127af90876134b2565b6127b991906134c9565b6006549091506000906128009063ffffffff7401000000000000000000000000000000000000000082048116917001000000000000000000000000000000009004166135b5565b6128159063ffffffff1664e8d4a510006134b2565b60065460649061284590790100000000000000000000000000000000000000000000000000900460ff16826134dc565b6128529060ff16856134b2565b61285c9190613524565b61286691906134c9565b90508461287382856134c9565b61288590670de0b6b3a76400006134b2565b61288f9190613524565b979650505050505050565b60006128a7603f836135d2565b610c8b906001613374565b3373ffffffffffffffffffffffffffffffffffffffff821603612931576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f43616e6e6f74207472616e7366657220746f2073656c660000000000000000006044820152606401610861565b600180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83811691821790925560008054604051929316917fed8889f560326eb138920d842192f0eb3dd22b4f139c87a2c57538e05bae12789190a350565b60005a6113888110156129b957600080fd5b6113888103905084604082048203116129d157600080fd5b50823b6129dd57600080fd5b60008083516020850160008789f1949350505050565b6000466129ff81612ab4565b15612a94576000606c73ffffffffffffffffffffffffffffffffffffffff166341b247a86040518163ffffffff1660e01b815260040160c060405180830381865afa158015612a52573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a7691906135f5565b5050505091505083608c612a8a91906134c9565b61130b90826134b2565b612a9d81612ad7565b15612aab57610dbc83612b11565b50600092915050565b600061a4b1821480612ac8575062066eed82145b80610c8b57505062066eee1490565b6000600a821480612ae957506101a482145b80612af6575062aa37dc82145b80612b02575061210582145b80610c8b57505062014a331490565b60008073420000000000000000000000000000000000000f73ffffffffffffffffffffffffffffffffffffffff1663519b4bd36040518163ffffffff1660e01b8152600401602060405180830381865afa158015612b73573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b979190613308565b9050600080612ba681866135a2565b90506000612bb58260106134b2565b612bc08460046134b2565b612bca91906134c9565b9050600073420000000000000000000000000000000000000f73ffffffffffffffffffffffffffffffffffffffff16630c18c1626040518163ffffffff1660e01b8152600401602060405180830381865afa158015612c2d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c519190613308565b9050600073420000000000000000000000000000000000000f73ffffffffffffffffffffffffffffffffffffffff1663f45e65d86040518163ffffffff1660e01b8152600401602060405180830381865afa158015612cb4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612cd89190613308565b9050600073420000000000000000000000000000000000000f73ffffffffffffffffffffffffffffffffffffffff1663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015612d3b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612d5f9190613308565b90506000612d6e82600a61375f565b905060008184612d7e87896134c9565b612d88908c6134b2565b612d9291906134b2565b612d9c9190613524565b9b9a5050505050505050505050565b6000815180845260005b81811015612dd157602081850181015186830182015201612db5565b5060006020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b602081526000610c886020830184612dab565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715612e9857612e98612e22565b604052919050565b600082601f830112612eb157600080fd5b813567ffffffffffffffff811115612ecb57612ecb612e22565b612efc60207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f84011601612e51565b818152846020838601011115612f1157600080fd5b816020850160208301376000918101602001919091529392505050565b8015158114611f9b57600080fd5b60008060408385031215612f4f57600080fd5b823567ffffffffffffffff811115612f6657600080fd5b612f7285828601612ea0565b9250506020830135612f8381612f2e565b809150509250929050565b60008060408385031215612fa157600080fd5b8235915060208084013567ffffffffffffffff80821115612fc157600080fd5b818601915086601f830112612fd557600080fd5b813581811115612fe757612fe7612e22565b8060051b9150612ff8848301612e51565b818152918301840191848101908984111561301257600080fd5b938501935b8385101561303057843582529385019390850190613017565b8096505050505050509250929050565b803573ffffffffffffffffffffffffffffffffffffffff81168114610dc057600080fd5b60006020828403121561307657600080fd5b610c8882613040565b803563ffffffff81168114610dc057600080fd5b600080604083850312156130a657600080fd5b6130af8361307f565b946020939093013593505050565b6000602082840312156130cf57600080fd5b610c888261307f565b6000602082840312156130ea57600080fd5b5035919050565b803561ffff81168114610dc057600080fd5b60008083601f84011261311557600080fd5b50813567ffffffffffffffff81111561312d57600080fd5b60208301915083602082850101111561314557600080fd5b9250929050565b60008060008060006080868803121561316457600080fd5b61316d8661307f565b945061317b602087016130f1565b93506131896040870161307f565b9250606086013567ffffffffffffffff8111156131a557600080fd5b6131b188828901613103565b969995985093965092949392505050565b600080600080606085870312156131d857600080fd5b6131e185613040565b935060208501359250604085013567ffffffffffffffff81111561320457600080fd5b61321087828801613103565b95989497509550505050565b803560ff81168114610dc057600080fd5b6000806000806000806000806000806101408b8d03121561324d57600080fd5b6132568b61307f565b995061326460208c0161307f565b985061327260408c0161321c565b975061328060608c0161321c565b965060808b0135955061329560a08c0161321c565b94506132a360c08c0161307f565b935060e08b013592506132b96101008c0161307f565b91506132c86101208c0161307f565b90509295989b9194979a5092959850565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60006020828403121561331a57600080fd5b5051919050565b60006020828403121561333357600080fd5b815161333e81612f2e565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b63ffffffff81811683821601908082111561339157613391613345565b5092915050565b60208152815160208201526020820151604082015261ffff60408301511660608201526000606083015163ffffffff80821660808501528060808601511660a0850152505060a083015160c08084015261130b60e0840182612dab565b6000806000806080858703121561340b57600080fd5b6134148561307f565b9350613422602086016130f1565b92506134306040860161307f565b9150606085013567ffffffffffffffff81111561344c57600080fd5b61345887828801612ea0565b91505092959194509250565b6000604082018483526020604081850152818551808452606086019150828701935060005b818110156134a557845183529383019391830191600101613489565b5090979650505050505050565b8082028115828204841417610c8b57610c8b613345565b80820180821115610c8b57610c8b613345565b60ff8181168382160190811115610c8b57610c8b613345565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600082613533576135336134f5565b500490565b805169ffffffffffffffffffff81168114610dc057600080fd5b600080600080600060a0868803121561356a57600080fd5b61357386613538565b945060208601519350604086015192506060860151915061359660808701613538565b90509295509295909350565b81810381811115610c8b57610c8b613345565b63ffffffff82811682821603908082111561339157613391613345565b600063ffffffff808416806135e9576135e96134f5565b92169190910492915050565b60008060008060008060c0878903121561360e57600080fd5b865195506020870151945060408701519350606087015192506080870151915060a087015190509295509295509295565b600181815b8085111561369857817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0482111561367e5761367e613345565b8085161561368b57918102915b93841c9390800290613644565b509250929050565b6000826136af57506001610c8b565b816136bc57506000610c8b565b81600181146136d257600281146136dc576136f8565b6001915050610c8b565b60ff8411156136ed576136ed613345565b50506001821b610c8b565b5060208310610133831016604e8410600b841016171561371b575081810a610c8b565b613725838361363f565b807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0482111561375757613757613345565b029392505050565b6000610c8883836136a056fea164736f6c6343000813000a", } var VRFV2PlusWrapperABI = VRFV2PlusWrapperMetaData.ABI @@ -339,28 +339,6 @@ func (_VRFV2PlusWrapper *VRFV2PlusWrapperCallerSession) GetConfig() (GetConfig, return _VRFV2PlusWrapper.Contract.GetConfig(&_VRFV2PlusWrapper.CallOpts) } -func (_VRFV2PlusWrapper *VRFV2PlusWrapperCaller) ILinkNativeFeed(opts *bind.CallOpts) (common.Address, error) { - var out []interface{} - err := _VRFV2PlusWrapper.contract.Call(opts, &out, "i_link_native_feed") - - if err != nil { - return *new(common.Address), err - } - - out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) - - return out0, err - -} - -func (_VRFV2PlusWrapper *VRFV2PlusWrapperSession) ILinkNativeFeed() (common.Address, error) { - return _VRFV2PlusWrapper.Contract.ILinkNativeFeed(&_VRFV2PlusWrapper.CallOpts) -} - -func (_VRFV2PlusWrapper *VRFV2PlusWrapperCallerSession) ILinkNativeFeed() (common.Address, error) { - return _VRFV2PlusWrapper.Contract.ILinkNativeFeed(&_VRFV2PlusWrapper.CallOpts) -} - func (_VRFV2PlusWrapper *VRFV2PlusWrapperCaller) LastRequestId(opts *bind.CallOpts) (*big.Int, error) { var out []interface{} err := _VRFV2PlusWrapper.contract.Call(opts, &out, "lastRequestId") @@ -2221,8 +2199,6 @@ type VRFV2PlusWrapperInterface interface { error) - ILinkNativeFeed(opts *bind.CallOpts) (common.Address, error) - LastRequestId(opts *bind.CallOpts) (*big.Int, error) Link(opts *bind.CallOpts) (common.Address, error) diff --git a/core/gethwrappers/generation/generated-wrapper-dependency-versions-do-not-edit.txt b/core/gethwrappers/generation/generated-wrapper-dependency-versions-do-not-edit.txt index c0c340ee81f..f7585434f70 100644 --- a/core/gethwrappers/generation/generated-wrapper-dependency-versions-do-not-edit.txt +++ b/core/gethwrappers/generation/generated-wrapper-dependency-versions-do-not-edit.txt @@ -126,6 +126,6 @@ vrfv2plus_client: ../../contracts/solc/v0.8.19/VRFV2PlusClient/VRFV2PlusClient.a vrfv2plus_consumer_example: ../../contracts/solc/v0.8.19/VRFV2PlusConsumerExample/VRFV2PlusConsumerExample.abi ../../contracts/solc/v0.8.19/VRFV2PlusConsumerExample/VRFV2PlusConsumerExample.bin e25c1981638fb9ea8fdd21600d6954f999bf65b98ba4e4a3f8fb9f7858334e19 vrfv2plus_malicious_migrator: ../../contracts/solc/v0.8.19/VRFV2PlusMaliciousMigrator/VRFV2PlusMaliciousMigrator.abi ../../contracts/solc/v0.8.19/VRFV2PlusMaliciousMigrator/VRFV2PlusMaliciousMigrator.bin 5dff20621fe6ed3bed75fe4b65381b0d4b1f6286ee3571553dbeb57213b53416 vrfv2plus_reverting_example: ../../contracts/solc/v0.8.19/VRFV2PlusRevertingExample/VRFV2PlusRevertingExample.abi ../../contracts/solc/v0.8.19/VRFV2PlusRevertingExample/VRFV2PlusRevertingExample.bin ebc2e96af9bf3aaa8b9cb048f8ecfec9987ee8b90126b740722c6b6427ab128e -vrfv2plus_wrapper: ../../contracts/solc/v0.8.19/VRFV2PlusWrapper/VRFV2PlusWrapper.abi ../../contracts/solc/v0.8.19/VRFV2PlusWrapper/VRFV2PlusWrapper.bin e94985ecbc68ad2f6b0819af265fc97f86122251c4e06b497658692efff1fe6a +vrfv2plus_wrapper: ../../contracts/solc/v0.8.19/VRFV2PlusWrapper/VRFV2PlusWrapper.abi ../../contracts/solc/v0.8.19/VRFV2PlusWrapper/VRFV2PlusWrapper.bin da748a6722ce461d27af39b4c3ebbadbd6672a9a9cd5b055ffc8c6d34df6d4f1 vrfv2plus_wrapper_consumer_example: ../../contracts/solc/v0.8.19/VRFV2PlusWrapperConsumerExample/VRFV2PlusWrapperConsumerExample.abi ../../contracts/solc/v0.8.19/VRFV2PlusWrapperConsumerExample/VRFV2PlusWrapperConsumerExample.bin 130217ffb341f19d1b3bda27f5c4a10567ac21ac3a49c9933bbdb068e8420177 vrfv2plus_wrapper_load_test_consumer: ../../contracts/solc/v0.8.19/VRFV2PlusWrapperLoadTestConsumer/VRFV2PlusWrapperLoadTestConsumer.abi ../../contracts/solc/v0.8.19/VRFV2PlusWrapperLoadTestConsumer/VRFV2PlusWrapperLoadTestConsumer.bin f2880b0469b82ddd4a11aa81ac12916f2912555dfe64829416a583fd82ebf3ab