From 7f34448e283e53dfc096de3625bcf7727a195452 Mon Sep 17 00:00:00 2001 From: jinhoonbang Date: Wed, 13 Mar 2024 14:34:34 -0700 Subject: [PATCH] address comments --- .../src/v0.8/vrf/dev/SubscriptionAPI.sol | 10 +-- .../test/v0.8/foundry/vrf/VRFV2Plus.t.sol | 79 +++++++++++++++++-- .../vrf_coordinator_v2_5.go | 7 +- .../vrf_v2plus_upgraded_version.go | 2 +- ...rapper-dependency-versions-do-not-edit.txt | 15 +--- core/scripts/vrfv2plus/testnet/proofs.go | 2 +- 6 files changed, 82 insertions(+), 33 deletions(-) diff --git a/contracts/src/v0.8/vrf/dev/SubscriptionAPI.sol b/contracts/src/v0.8/vrf/dev/SubscriptionAPI.sol index 4c008607c53..0ac1e903d42 100644 --- a/contracts/src/v0.8/vrf/dev/SubscriptionAPI.sol +++ b/contracts/src/v0.8/vrf/dev/SubscriptionAPI.sol @@ -405,17 +405,17 @@ abstract contract SubscriptionAPI is ConfirmedOwner, IERC677Receiver, IVRFSubscr * @inheritdoc IVRFSubscriptionV2Plus */ function addConsumer(uint256 subId, address consumer) external override onlySubOwner(subId) nonReentrant { - // Already maxed, cannot add any more consumers. - address[] storage consumers = s_subscriptionConfigs[subId].consumers; - if (consumers.length == MAX_CONSUMERS) { - revert TooManyConsumers(); - } ConsumerConfig storage consumerConfig = s_consumers[consumer][subId]; if (consumerConfig.active) { // Idempotence - do nothing if already added. // Ensures uniqueness in s_subscriptions[subId].consumers. return; } + // Already maxed, cannot add any more consumers. + address[] storage consumers = s_subscriptionConfigs[subId].consumers; + if (consumers.length == MAX_CONSUMERS) { + revert TooManyConsumers(); + } // consumerConfig.nonce is 0 if the consumer had never sent a request to this subscription // otherwise, consumerConfig.nonce is non-zero // in both cases, use consumerConfig.nonce as is and set active status to true diff --git a/contracts/test/v0.8/foundry/vrf/VRFV2Plus.t.sol b/contracts/test/v0.8/foundry/vrf/VRFV2Plus.t.sol index 513cdf6d7f5..25143b7e3d1 100644 --- a/contracts/test/v0.8/foundry/vrf/VRFV2Plus.t.sol +++ b/contracts/test/v0.8/foundry/vrf/VRFV2Plus.t.sol @@ -230,6 +230,7 @@ contract VRFV2Plus is BaseTest { assertTrue(exists); assertEq(GAS_LANE_MAX_GAS, maxGas); assertEq(s_testCoordinator.s_provingKeyHashes(0), keyHash); + assertEq(keyHash, vrfKeyHash); } function testDeregisterProvingKey() public { @@ -785,14 +786,21 @@ contract VRFV2Plus is BaseTest { } function testRequestRandomWords_ReAddConsumer_AssertRequestID() public { + // 1. setup consumer and subscription setConfig(); + registerProvingKey(); address subOwner = makeAddr("subOwner"); changePrank(subOwner); uint256 subId = s_testCoordinator.createSubscription(); VRFV2PlusLoadTestWithMetrics consumer = new VRFV2PlusLoadTestWithMetrics(address(s_testCoordinator)); s_testCoordinator.addConsumer(subId, address(consumer)); + uint32 requestBlock = 10; + vm.roll(requestBlock); + changePrank(LINK_WHALE); + s_testCoordinator.fundSubscriptionWithNative{value: 10 ether}(subId); - // Request random words. + // 2. Request random words. + changePrank(subOwner); vm.expectEmit(true, true, false, true); uint256 requestId; uint256 preSeed; @@ -805,20 +813,77 @@ contract VRFV2Plus is BaseTest { MIN_CONFIRMATIONS, CALLBACK_GAS_LIMIT, NUM_WORDS, - VRFV2PlusClient._argsToBytes(VRFV2PlusClient.ExtraArgsV1({nativePayment: false})), // nativePayment, // nativePayment - address(s_testConsumer) // requester + VRFV2PlusClient._argsToBytes(VRFV2PlusClient.ExtraArgsV1({nativePayment: true})), + address(consumer) // requester ); consumer.requestRandomWords( subId, MIN_CONFIRMATIONS, vrfKeyHash, CALLBACK_GAS_LIMIT, - false /* nativePayment */, + true /* nativePayment */, NUM_WORDS, 1 /* requestCount */ ); + assertTrue(s_testCoordinator.pendingRequestExists(subId)); + + // 3. Fulfill the request above + //console.log("requestId: ", requestId); + //console.log("preSeed: ", preSeed); + //console.log("sender: ", address(consumer)); + + // Move on to the next block. + // Store the previous block's blockhash, and assert that it is as expected. + vm.roll(requestBlock + 1); + s_bhs.store(requestBlock); + assertEq(hex"000000000000000000000000000000000000000000000000000000000000000a", s_bhs.getBlockhash(requestBlock)); + + // Fulfill the request. + // Proof generated via the generate-proof-v2-plus script command. Example usage: + /* + go run . generate-proof-v2-plus \ + -key-hash 0x9f2353bde94264dbc3d554a94cceba2d7d2b4fdce4304d3e09a1fea9fbeb1528 \ + -pre-seed 94043941380654896554739370173616551044559721638888689173752661912204412136884 \ + -block-hash 0x000000000000000000000000000000000000000000000000000000000000000a \ + -block-num 10 \ + -sender 0x44CAfC03154A0708F9DCf988681821f648dA74aF \ + -native-payment true + */ + VRF.Proof memory proof = VRF.Proof({ + pk: [ + 72488970228380509287422715226575535698893157273063074627791787432852706183111, + 62070622898698443831883535403436258712770888294397026493185421712108624767191 + ], + gamma: [ + 18593555375562408458806406536059989757338587469093035962641476877033456068708, + 55675218112764789548330682504442195066741636758414578491295297591596761905475 + ], + c: 56595337384472359782910435918403237878894172750128610188222417200315739516270, + s: 60666722370046279064490737533582002977678558769715798604164042022636022215663, + seed: 94043941380654896554739370173616551044559721638888689173752661912204412136884, + uWitness: 0xEdbE15fd105cfEFb9CCcbBD84403d1F62719E50d, + cGammaWitness: [ + 11752391553651713021860307604522059957920042356542944931263270793211985356642, + 14713353048309058367510422609936133400473710094544154206129568172815229277104 + ], + sHashWitness: [ + 109716108880570827107616596438987062129934448629902940427517663799192095060206, + 79378277044196229730810703755304140279837983575681427317104232794580059801930 + ], + zInv: 18898957977631212231148068121702167284572066246731769473720131179584458697812 + }); + VRFCoordinatorV2_5.RequestCommitment memory rc = VRFCoordinatorV2_5.RequestCommitment({ + blockNum: requestBlock, + subId: subId, + callbackGasLimit: CALLBACK_GAS_LIMIT, + numWords: NUM_WORDS, + sender: address(consumer), + extraArgs: VRFV2PlusClient._argsToBytes(VRFV2PlusClient.ExtraArgsV1({nativePayment: true})) + }); + s_testCoordinator.fulfillRandomWords(proof, rc, true /* onlyPremium */); + assertFalse(s_testCoordinator.pendingRequestExists(subId)); - // remove consumer and verify request random words doesn't work + // 4. remove consumer and verify request random words doesn't work s_testCoordinator.removeConsumer(subId, address(consumer)); vm.expectRevert(abi.encodeWithSelector(SubscriptionAPI.InvalidConsumer.selector, subId, address(consumer))); consumer.requestRandomWords( @@ -831,7 +896,7 @@ contract VRFV2Plus is BaseTest { 1 /* requestCount */ ); - // re-add consumer + // 5. re-add consumer and assert requestID nonce starts from 2 (nonce 1 was used before consumer removal) s_testCoordinator.addConsumer(subId, address(consumer)); vm.expectEmit(true, true, false, true); uint256 requestId2; @@ -846,7 +911,7 @@ contract VRFV2Plus is BaseTest { CALLBACK_GAS_LIMIT, NUM_WORDS, VRFV2PlusClient._argsToBytes(VRFV2PlusClient.ExtraArgsV1({nativePayment: false})), // nativePayment, // nativePayment - address(s_testConsumer) // requester + address(consumer) // requester ); consumer.requestRandomWords( subId, diff --git a/core/gethwrappers/generated/vrf_coordinator_v2_5/vrf_coordinator_v2_5.go b/core/gethwrappers/generated/vrf_coordinator_v2_5/vrf_coordinator_v2_5.go index 4c584f7a2e5..119fba7d2e4 100644 --- a/core/gethwrappers/generated/vrf_coordinator_v2_5/vrf_coordinator_v2_5.go +++ b/core/gethwrappers/generated/vrf_coordinator_v2_5/vrf_coordinator_v2_5.go @@ -61,13 +61,8 @@ type VRFV2PlusClientRandomWordsRequest struct { } var VRFCoordinatorV25MetaData = &bind.MetaData{ -<<<<<<< HEAD - ABI: "[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"blockhashStore\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"internalBalance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"externalBalance\",\"type\":\"uint256\"}],\"name\":\"BalanceInvariantViolated\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"blockNum\",\"type\":\"uint256\"}],\"name\":\"BlockhashNotInStore\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"coordinatorAddress\",\"type\":\"address\"}],\"name\":\"CoordinatorAlreadyRegistered\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"coordinatorAddress\",\"type\":\"address\"}],\"name\":\"CoordinatorNotRegistered\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FailedToSendNative\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FailedToTransferLink\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"have\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"want\",\"type\":\"uint32\"}],\"name\":\"GasLimitTooBig\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"gasPrice\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxGas\",\"type\":\"uint256\"}],\"name\":\"GasPriceExceeded\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"IncorrectCommitment\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"IndexOutOfRange\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InsufficientBalance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"have\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"want\",\"type\":\"uint256\"}],\"name\":\"InsufficientGasForConsumer\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidCalldata\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"subId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"consumer\",\"type\":\"address\"}],\"name\":\"InvalidConsumer\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidExtraArgsTag\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"int256\",\"name\":\"linkWei\",\"type\":\"int256\"}],\"name\":\"InvalidLinkWeiPrice\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"premiumPercentage\",\"type\":\"uint8\"},{\"internalType\":\"uint8\",\"name\":\"max\",\"type\":\"uint8\"}],\"name\":\"InvalidPremiumPercentage\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint16\",\"name\":\"have\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"min\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"max\",\"type\":\"uint16\"}],\"name\":\"InvalidRequestConfirmations\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidSubscription\",\"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\":\"LinkNotSet\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"have\",\"type\":\"uint256\"},{\"internalType\":\"uint32\",\"name\":\"max\",\"type\":\"uint32\"}],\"name\":\"MsgDataTooBig\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"proposedOwner\",\"type\":\"address\"}],\"name\":\"MustBeRequestedOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"MustBeSubOwner\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NoCorrespondingRequest\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"keyHash\",\"type\":\"bytes32\"}],\"name\":\"NoSuchProvingKey\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"have\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"want\",\"type\":\"uint32\"}],\"name\":\"NumWordsTooBig\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OnlyCallableFromLink\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"PaymentTooLarge\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"PendingRequestExists\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"keyHash\",\"type\":\"bytes32\"}],\"name\":\"ProvingKeyAlreadyRegistered\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"Reentrant\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"TooManyConsumers\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint16\",\"name\":\"minimumRequestConfirmations\",\"type\":\"uint16\"},{\"indexed\":false,\"internalType\":\"uint32\",\"name\":\"maxGasLimit\",\"type\":\"uint32\"},{\"indexed\":false,\"internalType\":\"uint32\",\"name\":\"stalenessSeconds\",\"type\":\"uint32\"},{\"indexed\":false,\"internalType\":\"uint32\",\"name\":\"gasAfterPaymentCalculation\",\"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\"},{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"nativePremiumPercentage\",\"type\":\"uint8\"},{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"linkPremiumPercentage\",\"type\":\"uint8\"}],\"name\":\"ConfigSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"coordinatorAddress\",\"type\":\"address\"}],\"name\":\"CoordinatorDeregistered\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"coordinatorAddress\",\"type\":\"address\"}],\"name\":\"CoordinatorRegistered\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"FundsRecovered\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"newCoordinator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"subId\",\"type\":\"uint256\"}],\"name\":\"MigrationCompleted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"NativeFundsRecovered\",\"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\":false,\"internalType\":\"bytes32\",\"name\":\"keyHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"maxGas\",\"type\":\"uint64\"}],\"name\":\"ProvingKeyDeregistered\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"keyHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"maxGas\",\"type\":\"uint64\"}],\"name\":\"ProvingKeyRegistered\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"requestId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"outputSeed\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"subId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint96\",\"name\":\"payment\",\"type\":\"uint96\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"nativePayment\",\"type\":\"bool\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"success\",\"type\":\"bool\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"onlyPremium\",\"type\":\"bool\"}],\"name\":\"RandomWordsFulfilled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"keyHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"requestId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"preSeed\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"subId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint16\",\"name\":\"minimumRequestConfirmations\",\"type\":\"uint16\"},{\"indexed\":false,\"internalType\":\"uint32\",\"name\":\"callbackGasLimit\",\"type\":\"uint32\"},{\"indexed\":false,\"internalType\":\"uint32\",\"name\":\"numWords\",\"type\":\"uint32\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"extraArgs\",\"type\":\"bytes\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"RandomWordsRequested\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"subId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amountLink\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amountNative\",\"type\":\"uint256\"}],\"name\":\"SubscriptionCanceled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"subId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"consumer\",\"type\":\"address\"}],\"name\":\"SubscriptionConsumerAdded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"subId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"consumer\",\"type\":\"address\"}],\"name\":\"SubscriptionConsumerRemoved\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"subId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"SubscriptionCreated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"subId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"oldBalance\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"newBalance\",\"type\":\"uint256\"}],\"name\":\"SubscriptionFunded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"subId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"oldNativeBalance\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"newNativeBalance\",\"type\":\"uint256\"}],\"name\":\"SubscriptionFundedWithNative\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"subId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"SubscriptionOwnerTransferRequested\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"subId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"SubscriptionOwnerTransferred\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"BLOCKHASH_STORE\",\"outputs\":[{\"internalType\":\"contractBlockhashStoreInterface\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"LINK\",\"outputs\":[{\"internalType\":\"contractLinkTokenInterface\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"LINK_NATIVE_FEED\",\"outputs\":[{\"internalType\":\"contractAggregatorV3Interface\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MAX_CONSUMERS\",\"outputs\":[{\"internalType\":\"uint16\",\"name\":\"\",\"type\":\"uint16\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MAX_NUM_WORDS\",\"outputs\":[{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MAX_REQUEST_CONFIRMATIONS\",\"outputs\":[{\"internalType\":\"uint16\",\"name\":\"\",\"type\":\"uint16\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"acceptOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"subId\",\"type\":\"uint256\"}],\"name\":\"acceptSubscriptionOwnerTransfer\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"subId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"consumer\",\"type\":\"address\"}],\"name\":\"addConsumer\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"subId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"cancelSubscription\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"createSubscription\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"subId\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"}],\"name\":\"deregisterMigratableCoordinator\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256[2]\",\"name\":\"publicProvingKey\",\"type\":\"uint256[2]\"}],\"name\":\"deregisterProvingKey\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint256[2]\",\"name\":\"pk\",\"type\":\"uint256[2]\"},{\"internalType\":\"uint256[2]\",\"name\":\"gamma\",\"type\":\"uint256[2]\"},{\"internalType\":\"uint256\",\"name\":\"c\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"s\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"seed\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"uWitness\",\"type\":\"address\"},{\"internalType\":\"uint256[2]\",\"name\":\"cGammaWitness\",\"type\":\"uint256[2]\"},{\"internalType\":\"uint256[2]\",\"name\":\"sHashWitness\",\"type\":\"uint256[2]\"},{\"internalType\":\"uint256\",\"name\":\"zInv\",\"type\":\"uint256\"}],\"internalType\":\"structVRF.Proof\",\"name\":\"proof\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint64\",\"name\":\"blockNum\",\"type\":\"uint64\"},{\"internalType\":\"uint256\",\"name\":\"subId\",\"type\":\"uint256\"},{\"internalType\":\"uint32\",\"name\":\"callbackGasLimit\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"numWords\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"extraArgs\",\"type\":\"bytes\"}],\"internalType\":\"structVRFCoordinatorV2_5.RequestCommitment\",\"name\":\"rc\",\"type\":\"tuple\"},{\"internalType\":\"bool\",\"name\":\"onlyPremium\",\"type\":\"bool\"}],\"name\":\"fulfillRandomWords\",\"outputs\":[{\"internalType\":\"uint96\",\"name\":\"payment\",\"type\":\"uint96\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"subId\",\"type\":\"uint256\"}],\"name\":\"fundSubscriptionWithNative\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"startIndex\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxCount\",\"type\":\"uint256\"}],\"name\":\"getActiveSubscriptionIds\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"ids\",\"type\":\"uint256[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"subId\",\"type\":\"uint256\"}],\"name\":\"getSubscription\",\"outputs\":[{\"internalType\":\"uint96\",\"name\":\"balance\",\"type\":\"uint96\"},{\"internalType\":\"uint96\",\"name\":\"nativeBalance\",\"type\":\"uint96\"},{\"internalType\":\"uint64\",\"name\":\"reqCount\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address[]\",\"name\":\"consumers\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256[2]\",\"name\":\"publicKey\",\"type\":\"uint256[2]\"}],\"name\":\"hashOfKey\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"subId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"newCoordinator\",\"type\":\"address\"}],\"name\":\"migrate\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"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\":\"subId\",\"type\":\"uint256\"}],\"name\":\"ownerCancelSubscription\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"subId\",\"type\":\"uint256\"}],\"name\":\"pendingRequestExists\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"recoverFunds\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"addresspayable\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"recoverNativeFunds\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"}],\"name\":\"registerMigratableCoordinator\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256[2]\",\"name\":\"publicProvingKey\",\"type\":\"uint256[2]\"},{\"internalType\":\"uint64\",\"name\":\"maxGas\",\"type\":\"uint64\"}],\"name\":\"registerProvingKey\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"subId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"consumer\",\"type\":\"address\"}],\"name\":\"removeConsumer\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"keyHash\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"subId\",\"type\":\"uint256\"},{\"internalType\":\"uint16\",\"name\":\"requestConfirmations\",\"type\":\"uint16\"},{\"internalType\":\"uint32\",\"name\":\"callbackGasLimit\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"numWords\",\"type\":\"uint32\"},{\"internalType\":\"bytes\",\"name\":\"extraArgs\",\"type\":\"bytes\"}],\"internalType\":\"structVRFV2PlusClient.RandomWordsRequest\",\"name\":\"req\",\"type\":\"tuple\"}],\"name\":\"requestRandomWords\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"requestId\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"subId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"requestSubscriptionOwnerTransfer\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"s_config\",\"outputs\":[{\"internalType\":\"uint16\",\"name\":\"minimumRequestConfirmations\",\"type\":\"uint16\"},{\"internalType\":\"uint32\",\"name\":\"maxGasLimit\",\"type\":\"uint32\"},{\"internalType\":\"bool\",\"name\":\"reentrancyLock\",\"type\":\"bool\"},{\"internalType\":\"uint32\",\"name\":\"stalenessSeconds\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"gasAfterPaymentCalculation\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"fulfillmentFlatFeeNativePPM\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"fulfillmentFlatFeeLinkDiscountPPM\",\"type\":\"uint32\"},{\"internalType\":\"uint8\",\"name\":\"nativePremiumPercentage\",\"type\":\"uint8\"},{\"internalType\":\"uint8\",\"name\":\"linkPremiumPercentage\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"s_currentSubNonce\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"s_fallbackWeiPerUnitLink\",\"outputs\":[{\"internalType\":\"int256\",\"name\":\"\",\"type\":\"int256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"s_provingKeyHashes\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"s_provingKeys\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"exists\",\"type\":\"bool\"},{\"internalType\":\"uint64\",\"name\":\"maxGas\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"s_requestCommitments\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"s_totalBalance\",\"outputs\":[{\"internalType\":\"uint96\",\"name\":\"\",\"type\":\"uint96\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"s_totalNativeBalance\",\"outputs\":[{\"internalType\":\"uint96\",\"name\":\"\",\"type\":\"uint96\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint16\",\"name\":\"minimumRequestConfirmations\",\"type\":\"uint16\"},{\"internalType\":\"uint32\",\"name\":\"maxGasLimit\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"stalenessSeconds\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"gasAfterPaymentCalculation\",\"type\":\"uint32\"},{\"internalType\":\"int256\",\"name\":\"fallbackWeiPerUnitLink\",\"type\":\"int256\"},{\"internalType\":\"uint32\",\"name\":\"fulfillmentFlatFeeNativePPM\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"fulfillmentFlatFeeLinkDiscountPPM\",\"type\":\"uint32\"},{\"internalType\":\"uint8\",\"name\":\"nativePremiumPercentage\",\"type\":\"uint8\"},{\"internalType\":\"uint8\",\"name\":\"linkPremiumPercentage\",\"type\":\"uint8\"}],\"name\":\"setConfig\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"link\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"linkNativeFeed\",\"type\":\"address\"}],\"name\":\"setLINKAndLINKNativeFeed\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"}],\"name\":\"withdraw\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"addresspayable\",\"name\":\"recipient\",\"type\":\"address\"}],\"name\":\"withdrawNative\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", - Bin: "0x60a06040523480156200001157600080fd5b5060405162005e6938038062005e69833981016040819052620000349162000183565b33806000816200008b5760405162461bcd60e51b815260206004820152601860248201527f43616e6e6f7420736574206f776e657220746f207a65726f000000000000000060448201526064015b60405180910390fd5b600080546001600160a01b0319166001600160a01b0384811691909117909155811615620000be57620000be81620000d7565b50505060601b6001600160601b031916608052620001b5565b6001600160a01b038116331415620001325760405162461bcd60e51b815260206004820152601760248201527f43616e6e6f74207472616e7366657220746f2073656c66000000000000000000604482015260640162000082565b600180546001600160a01b0319166001600160a01b0383811691821790925560008054604051929316917fed8889f560326eb138920d842192f0eb3dd22b4f139c87a2c57538e05bae12789190a350565b6000602082840312156200019657600080fd5b81516001600160a01b0381168114620001ae57600080fd5b9392505050565b60805160601c615c8e620001db6000396000818161055001526132af0152615c8e6000f3fe60806040526004361061021c5760003560e01c80638402595e11610124578063b2a7cac5116100a6578063b2a7cac514610732578063bec4c08c14610752578063caf70c4a14610772578063cb63179714610792578063d98e620e146107b2578063da2f2610146107d2578063dac83d2914610831578063dc311dd314610851578063e72f6e3014610882578063ee9d2d38146108a2578063f2fde38b146108cf57600080fd5b80638402595e146105c757806386fe91c7146105e75780638da5cb5b1461060757806395b55cfc146106255780639b1c385e146106385780639d40a6fd14610658578063a21a23e414610690578063a4c0ed36146106a5578063a63e0bfb146106c5578063aa433aff146106e5578063aefb212f1461070557600080fd5b8063405b84fa116101ad578063405b84fa1461044e57806340d6bb821461046e57806341af6c871461049957806351cff8d9146104c95780635d06b4ab146104e957806364d51a2a14610509578063659827441461051e578063689c45171461053e57806372e9d5651461057257806379ba5097146105925780637a5a2aef146105a757600080fd5b806304104edb14610221578063043bd6ae14610243578063088070f51461026c57806308821d581461033a5780630ae095401461035a57806315c48b841461037a57806318e3dd27146103a25780631b6b6d23146103e15780632f622e6b1461040e578063301f42e91461042e575b600080fd5b34801561022d57600080fd5b5061024161023c36600461505a565b6108ef565b005b34801561024f57600080fd5b5061025960105481565b6040519081526020015b60405180910390f35b34801561027857600080fd5b50600c546102dd9061ffff81169063ffffffff62010000820481169160ff600160301b8204811692600160381b8304811692600160581b8104821692600160781b8204831692600160981b83041691600160b81b8104821691600160c01b9091041689565b6040805161ffff909a168a5263ffffffff98891660208b01529615159689019690965293861660608801529185166080870152841660a08601529290921660c084015260ff91821660e08401521661010082015261012001610263565b34801561034657600080fd5b50610241610355366004615138565b610a5c565b34801561036657600080fd5b50610241610375366004615422565b610c06565b34801561038657600080fd5b5061038f60c881565b60405161ffff9091168152602001610263565b3480156103ae57600080fd5b50600a546103c990600160601b90046001600160601b031681565b6040516001600160601b039091168152602001610263565b3480156103ed57600080fd5b50600254610401906001600160a01b031681565b6040516102639190615653565b34801561041a57600080fd5b5061024161042936600461505a565b610c4e565b34801561043a57600080fd5b506103c961044936600461523e565b610d9a565b34801561045a57600080fd5b50610241610469366004615422565b611001565b34801561047a57600080fd5b506104846101f481565b60405163ffffffff9091168152602001610263565b3480156104a557600080fd5b506104b96104b43660046151c1565b6113b3565b6040519015158152602001610263565b3480156104d557600080fd5b506102416104e436600461505a565b6114c9565b3480156104f557600080fd5b5061024161050436600461505a565b611657565b34801561051557600080fd5b5061038f606481565b34801561052a57600080fd5b50610241610539366004615077565b61170e565b34801561054a57600080fd5b506104017f000000000000000000000000000000000000000000000000000000000000000081565b34801561057e57600080fd5b50600354610401906001600160a01b031681565b34801561059e57600080fd5b5061024161176e565b3480156105b357600080fd5b506102416105c2366004615154565b611818565b3480156105d357600080fd5b506102416105e236600461505a565b611948565b3480156105f357600080fd5b50600a546103c9906001600160601b031681565b34801561061357600080fd5b506000546001600160a01b0316610401565b6102416106333660046151c1565b611a5a565b34801561064457600080fd5b5061025961065336600461532c565b611b7e565b34801561066457600080fd5b50600754610678906001600160401b031681565b6040516001600160401b039091168152602001610263565b34801561069c57600080fd5b50610259611f15565b3480156106b157600080fd5b506102416106c03660046150b0565b6120e9565b3480156106d157600080fd5b506102416106e0366004615381565b612265565b3480156106f157600080fd5b506102416107003660046151c1565b612531565b34801561071157600080fd5b50610725610720366004615447565b612579565b60405161026391906156ca565b34801561073e57600080fd5b5061024161074d3660046151c1565b61267b565b34801561075e57600080fd5b5061024161076d366004615422565b612770565b34801561077e57600080fd5b5061025961078d366004615188565b612863565b34801561079e57600080fd5b506102416107ad366004615422565b612893565b3480156107be57600080fd5b506102596107cd3660046151c1565b612af6565b3480156107de57600080fd5b506108126107ed3660046151c1565b600d6020526000908152604090205460ff81169061010090046001600160401b031682565b6040805192151583526001600160401b03909116602083015201610263565b34801561083d57600080fd5b5061024161084c366004615422565b612b17565b34801561085d57600080fd5b5061087161086c3660046151c1565b612bae565b60405161026395949392919061589f565b34801561088e57600080fd5b5061024161089d36600461505a565b612c9c565b3480156108ae57600080fd5b506102596108bd3660046151c1565b600f6020526000908152604090205481565b3480156108db57600080fd5b506102416108ea36600461505a565b612e6f565b6108f7612e80565b60115460005b81811015610a3457826001600160a01b03166011828154811061092257610922615bea565b6000918252602090912001546001600160a01b03161415610a2457601161094a600184615a9a565b8154811061095a5761095a615bea565b600091825260209091200154601180546001600160a01b03909216918390811061098657610986615bea565b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060118054806109c5576109c5615bd4565b600082815260209020810160001990810180546001600160a01b03191690550190556040517ff80a1a97fd42251f3c33cda98635e7399253033a6774fe37cd3f650b5282af3790610a17908590615653565b60405180910390a1505050565b610a2d81615b52565b90506108fd565b5081604051635428d44960e01b8152600401610a509190615653565b60405180910390fd5b50565b610a64612e80565b604080518082018252600091610a93919084906002908390839080828437600092019190915250612863915050565b6000818152600d602090815260409182902082518084019093525460ff811615158084526101009091046001600160401b03169183019190915291925090610af157604051631dfd6e1360e21b815260048101839052602401610a50565b6000828152600d6020526040812080546001600160481b0319169055600e54905b81811015610bc25783600e8281548110610b2e57610b2e615bea565b90600052602060002001541415610bb257600e610b4c600184615a9a565b81548110610b5c57610b5c615bea565b9060005260206000200154600e8281548110610b7a57610b7a615bea565b600091825260209091200155600e805480610b9757610b97615bd4565b60019003818190600052602060002001600090559055610bc2565b610bbb81615b52565b9050610b12565b507f9b6868e0eb737bcd72205360baa6bfd0ba4e4819a33ade2db384e8a8025639a5838360200151604051610bf89291906156dd565b60405180910390a150505050565b81610c1081612ed5565b610c18612f36565b610c21836113b3565b15610c3f57604051631685ecdd60e31b815260040160405180910390fd5b610c498383612f61565b505050565b610c56612f36565b610c5e612e80565b600b54600160601b90046001600160601b0316610c8e57604051631e9acf1760e31b815260040160405180910390fd5b600b8054600160601b90046001600160601b0316908190600c610cb18380615ad6565b92506101000a8154816001600160601b0302191690836001600160601b0316021790555080600a600c8282829054906101000a90046001600160601b0316610cf99190615ad6565b92506101000a8154816001600160601b0302191690836001600160601b031602179055506000826001600160a01b0316826001600160601b031660405160006040518083038185875af1925050503d8060008114610d73576040519150601f19603f3d011682016040523d82523d6000602084013e610d78565b606091505b5050905080610c495760405163950b247960e01b815260040160405180910390fd5b6000610da4612f36565b60005a9050610324361115610dd657604051630f28961b60e01b81523660048201526103246024820152604401610a50565b6000610de28686613115565b90506000610df8858360000151602001516133d1565b60408301516060888101519293509163ffffffff16806001600160401b03811115610e2557610e25615c00565b604051908082528060200260200182016040528015610e4e578160200160208202803683370190505b50925060005b81811015610eb65760408051602081018590529081018290526060016040516020818303038152906040528051906020012060001c848281518110610e9b57610e9b615bea565b6020908102919091010152610eaf81615b52565b9050610e54565b5050602080850180516000908152600f9092526040822082905551610edc908a8561341f565b60208a8101516000908152600690915260409020805491925090601890610f1290600160c01b90046001600160401b0316615b6d565b91906101000a8154816001600160401b0302191690836001600160401b0316021790555060008960a0015160018b60a0015151610f4f9190615a9a565b81518110610f5f57610f5f615bea565b60209101015160f81c6001149050610f798786838c6134ba565b9750610f8a88828c602001516134ea565b6020808b015187820151604080518781526001600160601b038d16948101949094528415159084015284151560608401528b1515608084015290917faeb4b4786571e184246d39587f659abf0e26f41f6a3358692250382c0cdb47b79060a00160405180910390a3505050505050505b9392505050565b611009612f36565b6110128161363d565b6110315780604051635428d44960e01b8152600401610a509190615653565b60008060008061104086612bae565b945094505093509350336001600160a01b0316826001600160a01b0316146110a35760405162461bcd60e51b81526020600482015260166024820152752737ba1039bab139b1b934b83a34b7b71037bbb732b960511b6044820152606401610a50565b6110ac866113b3565b156110f25760405162461bcd60e51b815260206004820152601660248201527550656e64696e6720726571756573742065786973747360501b6044820152606401610a50565b6040805160c0810182526001815260208082018990526001600160a01b03851682840152606082018490526001600160601b038088166080840152861660a08301529151909160009161114791849101615707565b6040516020818303038152906040529050611161886136a9565b505060405163ce3f471960e01b81526001600160a01b0388169063ce3f4719906001600160601b0388169061119a9085906004016156f4565b6000604051808303818588803b1580156111b357600080fd5b505af11580156111c7573d6000803e3d6000fd5b50506002546001600160a01b0316158015935091506111f0905057506001600160601b03861615155b156112ba5760025460405163a9059cbb60e01b81526001600160a01b039091169063a9059cbb90611227908a908a9060040161569a565b602060405180830381600087803b15801561124157600080fd5b505af1158015611255573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061127991906151a4565b6112ba5760405162461bcd60e51b8152602060048201526012602482015271696e73756666696369656e742066756e647360701b6044820152606401610a50565b600c805460ff60301b1916600160301b17905560005b8351811015611361578381815181106112eb576112eb615bea565b60200260200101516001600160a01b0316638ea98117896040518263ffffffff1660e01b815260040161131e9190615653565b600060405180830381600087803b15801561133857600080fd5b505af115801561134c573d6000803e3d6000fd5b505050508061135a90615b52565b90506112d0565b50600c805460ff60301b191690556040517fd63ca8cb945956747ee69bfdc3ea754c24a4caf7418db70e46052f7850be4187906113a19089908b90615667565b60405180910390a15050505050505050565b60008181526005602052604081206002018054806113d5575060009392505050565b600e5460005b828110156114bd5760008482815481106113f7576113f7615bea565b60009182526020822001546001600160a01b031691505b838110156114aa576000611472600e838154811061142e5761142e615bea565b60009182526020808320909101546001600160a01b03871683526004825260408084208e855290925291205485908c906001600160401b0361010090910416613851565b506000818152600f6020526040902054909150156114995750600198975050505050505050565b506114a381615b52565b905061140e565b5050806114b690615b52565b90506113db565b50600095945050505050565b6114d1612f36565b6114d9612e80565b6002546001600160a01b03166115025760405163c1f0c0a160e01b815260040160405180910390fd5b600b546001600160601b031661152b57604051631e9acf1760e31b815260040160405180910390fd5b600b80546001600160601b031690819060006115478380615ad6565b92506101000a8154816001600160601b0302191690836001600160601b0316021790555080600a60008282829054906101000a90046001600160601b031661158f9190615ad6565b82546001600160601b039182166101009390930a92830291909202199091161790555060025460405163a9059cbb60e01b81526001600160a01b039091169063a9059cbb906115e4908590859060040161569a565b602060405180830381600087803b1580156115fe57600080fd5b505af1158015611612573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061163691906151a4565b61165357604051631e9acf1760e31b815260040160405180910390fd5b5050565b61165f612e80565b6116688161363d565b15611688578060405163ac8a27ef60e01b8152600401610a509190615653565b601180546001810182556000919091527f31ecc21a745e3968a04e9570e4425bc18fa8019c68028196b546d1669c200c680180546001600160a01b0319166001600160a01b0383161790556040517fb7cabbfc11e66731fc77de0444614282023bcbd41d16781c753a431d0af0162590611703908390615653565b60405180910390a150565b611716612e80565b6002546001600160a01b03161561174057604051631688c53760e11b815260040160405180910390fd5b600280546001600160a01b039384166001600160a01b03199182161790915560038054929093169116179055565b6001546001600160a01b031633146117c15760405162461bcd60e51b815260206004820152601660248201527526bab9ba10313290383937b837b9b2b21037bbb732b960511b6044820152606401610a50565b60008054336001600160a01b0319808316821784556001805490911690556040516001600160a01b0390921692909183917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a350565b611820612e80565b60408051808201825260009161184f919085906002908390839080828437600092019190915250612863915050565b6000818152600d602052604090205490915060ff161561188557604051634a0b8fa760e01b815260048101829052602401610a50565b60408051808201825260018082526001600160401b0385811660208085019182526000878152600d9091528581209451855492516001600160481b031990931690151568ffffffffffffffff00191617610100929093169190910291909117909255600e805491820181559091527fbb7b4a454dc3493923482f07822329ed19e8244eff582cc204f8554c3620c3fd01829055517f9b911b2c240bfbef3b6a8f7ed6ee321d1258bb2a3fe6becab52ac1cd3210afd390610a1790839085906156dd565b611950612e80565b600a544790600160601b90046001600160601b031681811115611990576040516354ced18160e11b81526004810182905260248101839052604401610a50565b81811015610c495760006119a48284615a9a565b90506000846001600160a01b03168260405160006040518083038185875af1925050503d80600081146119f3576040519150601f19603f3d011682016040523d82523d6000602084013e6119f8565b606091505b5050905080611a1a5760405163950b247960e01b815260040160405180910390fd5b7f4aed7c8eed0496c8c19ea2681fcca25741c1602342e38b045d9f1e8e905d2e9c8583604051611a4b929190615667565b60405180910390a15050505050565b611a62612f36565b6000818152600560205260409020546001600160a01b0316611a9757604051630fb532db60e11b815260040160405180910390fd5b60008181526006602052604090208054600160601b90046001600160601b0316903490600c611ac68385615a45565b92506101000a8154816001600160601b0302191690836001600160601b0316021790555034600a600c8282829054906101000a90046001600160601b0316611b0e9190615a45565b92506101000a8154816001600160601b0302191690836001600160601b03160217905550817f7603b205d03651ee812f803fccde89f1012e545a9c99f0abfea9cedd0fd8e902823484611b6191906159e6565b604080519283526020830191909152015b60405180910390a25050565b6000611b88612f36565b602080830135600081815260059092526040909120546001600160a01b0316611bc457604051630fb532db60e11b815260040160405180910390fd5b3360009081526004602090815260408083208484528083529281902081518083019092525460ff811615158083526101009091046001600160401b03169282019290925290611c2a5782336040516379bfd40160e01b8152600401610a5092919061577c565b600c5461ffff16611c416060870160408801615366565b61ffff161080611c64575060c8611c5e6060870160408801615366565b61ffff16115b15611caa57611c796060860160408701615366565b600c5460405163539c34bb60e11b815261ffff92831660048201529116602482015260c86044820152606401610a50565b600c5462010000900463ffffffff16611cc96080870160608801615469565b63ffffffff161115611d1957611ce56080860160608701615469565b600c54604051637aebf00f60e11b815263ffffffff9283166004820152620100009091049091166024820152604401610a50565b6101f4611d2c60a0870160808801615469565b63ffffffff161115611d7257611d4860a0860160808701615469565b6040516311ce1afb60e21b815263ffffffff90911660048201526101f46024820152604401610a50565b806020018051611d8190615b6d565b6001600160401b031690526020810151600090611da49087359033908790613851565b90955090506000611dc8611dc3611dbe60a08a018a6158f4565b6138ca565b613947565b905085611dd36139b8565b86611de460808b0160608c01615469565b611df460a08c0160808d01615469565b3386604051602001611e0c97969594939291906157ff565b60405160208183030381529060405280519060200120600f600088815260200190815260200160002081905550336001600160a01b03168588600001357feb0e3652e0f44f417695e6e90f2f42c99b65cd7169074c5a654b16b9748c3a4e89868c6040016020810190611e7f9190615366565b8d6060016020810190611e929190615469565b8e6080016020810190611ea59190615469565b89604051611eb8969594939291906157c0565b60405180910390a450506000928352602091825260409092208251815492909301516001600160401b03166101000268ffffffffffffffff0019931515939093166001600160481b0319909216919091179190911790555b919050565b6000611f1f612f36565b6007546001600160401b031633611f37600143615a9a565b6040516001600160601b0319606093841b81166020830152914060348201523090921b1660548201526001600160c01b031960c083901b16606882015260700160408051601f1981840301815291905280516020909101209150611f9c8160016159fe565b6007805467ffffffffffffffff19166001600160401b03928316179055604080516000808252608082018352602080830182815283850183815260608086018581528a86526006855287862093518454935191516001600160601b039182166001600160c01b031990951694909417600160601b9190921602176001600160c01b0316600160c01b9290981691909102969096179055835194850184523385528481018281528585018481528884526005835294909220855181546001600160a01b03199081166001600160a01b03928316178355935160018301805490951691161790925592518051929493919261209b9260028501920190614d74565b506120ab91506008905084613a48565b50827f1d3015d7ba850fa198dc7b1a3f5d42779313a681035f77c8c03764c61005518d336040516120dc9190615653565b60405180910390a2505090565b6120f1612f36565b6002546001600160a01b0316331461211c576040516344b0e3c360e01b815260040160405180910390fd5b6020811461213d57604051638129bbcd60e01b815260040160405180910390fd5b600061214b828401846151c1565b6000818152600560205260409020549091506001600160a01b031661218357604051630fb532db60e11b815260040160405180910390fd5b600081815260066020526040812080546001600160601b0316918691906121aa8385615a45565b92506101000a8154816001600160601b0302191690836001600160601b0316021790555084600a60008282829054906101000a90046001600160601b03166121f29190615a45565b92506101000a8154816001600160601b0302191690836001600160601b03160217905550817f1ced9348ff549fceab2ac57cd3a9de38edaaab274b725ee82c23e8fc8c4eec7a82878461224591906159e6565b6040805192835260208301919091520160405180910390a2505050505050565b61226d612e80565b60c861ffff8a1611156122a75760405163539c34bb60e11b815261ffff8a1660048201819052602482015260c86044820152606401610a50565b600085136122cb576040516321ea67b360e11b815260048101869052602401610a50565b8363ffffffff168363ffffffff161115612308576040516313c06e5960e11b815263ffffffff808516600483015285166024820152604401610a50565b609b60ff8316111561233957604051631d66288d60e11b815260ff83166004820152609b6024820152604401610a50565b609b60ff8216111561236a57604051631d66288d60e11b815260ff82166004820152609b6024820152604401610a50565b604080516101208101825261ffff8b1680825263ffffffff808c16602084018190526000848601528b8216606085018190528b8316608086018190528a841660a08701819052938a1660c0870181905260ff808b1660e08901819052908a16610100909801889052600c8054600160c01b90990260ff60c01b19600160b81b9093029290921661ffff60b81b19600160981b90940263ffffffff60981b19600160781b9099029890981667ffffffffffffffff60781b19600160581b90960263ffffffff60581b19600160381b9098029790971668ffffffffffffffffff60301b196201000090990265ffffffffffff19909c16909a179a909a1796909616979097179390931791909116959095179290921793909316929092179190911790556010869055517f2c6b6b12413678366b05b145c5f00745bdd00e739131ab5de82484a50c9d78b69061251e908b908b908b908b908b908b908b908b908b9061ffff99909916895263ffffffff97881660208a0152958716604089015293861660608801526080870192909252841660a086015290921660c084015260ff91821660e0840152166101008201526101200190565b60405180910390a1505050505050505050565b612539612e80565b6000818152600560205260409020546001600160a01b03168061256f57604051630fb532db60e11b815260040160405180910390fd5b6116538282612f61565b606060006125876008613a54565b90508084106125a957604051631390f2a160e01b815260040160405180910390fd5b60006125b584866159e6565b9050818111806125c3575083155b6125cd57806125cf565b815b905060006125dd8683615a9a565b9050806001600160401b038111156125f7576125f7615c00565b604051908082528060200260200182016040528015612620578160200160208202803683370190505b50935060005b818110156126705761264361263b88836159e6565b600890613a5e565b85828151811061265557612655615bea565b602090810291909101015261266981615b52565b9050612626565b505050505b92915050565b612683612f36565b6000818152600560205260409020546001600160a01b0316806126b957604051630fb532db60e11b815260040160405180910390fd5b6000828152600560205260409020600101546001600160a01b03163314612710576000828152600560205260409081902060010154905163d084e97560e01b8152610a50916001600160a01b031690600401615653565b600082815260056020526040908190208054336001600160a01b031991821681178355600190920180549091169055905183917fd4114ab6e9af9f597c52041f32d62dc57c5c4e4c0d4427006069635e216c938691611b72918591615680565b8161277a81612ed5565b612782612f36565b60008381526005602052604090206002018054606414156127b6576040516305a48e0f60e01b815260040160405180910390fd5b6001600160a01b03831660009081526004602090815260408083208784529091529020805460ff16156127ea575050505050565b8054600160ff1990911681178255825490810183556000838152602090200180546001600160a01b0319166001600160a01b03861617905560405185907f1e980d04aa7648e205713e5e8ea3808672ac163d10936d36f91b2c88ac1575e190612854908790615653565b60405180910390a25050505050565b60008160405160200161287691906156bc565b604051602081830303815290604052805190602001209050919050565b8161289d81612ed5565b6128a5612f36565b6128ae836113b3565b156128cc57604051631685ecdd60e31b815260040160405180910390fd5b6001600160a01b038216600090815260046020908152604080832086845290915290205460ff166129145782826040516379bfd40160e01b8152600401610a5092919061577c565b60008381526005602090815260408083206002018054825181850281018501909352808352919290919083018282801561297757602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311612959575b5050505050905060006001825161298e9190615a9a565b905060005b8251811015612a9857846001600160a01b03168382815181106129b8576129b8615bea565b60200260200101516001600160a01b03161415612a885760008383815181106129e3576129e3615bea565b6020026020010151905080600560008981526020019081526020016000206002018381548110612a1557612a15615bea565b600091825260208083209190910180546001600160a01b0319166001600160a01b039490941693909317909255888152600590915260409020600201805480612a6057612a60615bd4565b600082815260209020810160001990810180546001600160a01b031916905501905550612a98565b612a9181615b52565b9050612993565b506001600160a01b038416600090815260046020908152604080832088845290915290819020805460ff191690555185907f32158c6058347c1601b2d12bc696ac6901d8a9a9aa3ba10c27ab0a983e8425a790612854908790615653565b600e8181548110612b0657600080fd5b600091825260209091200154905081565b81612b2181612ed5565b612b29612f36565b600083815260056020526040902060018101546001600160a01b03848116911614612ba8576001810180546001600160a01b0319166001600160a01b03851617905560405184907f21a4dad170a6bf476c31bbcf4a16628295b0e450672eec25d7c93308e05344a190612b9f9033908790615680565b60405180910390a25b50505050565b600081815260056020526040812054819081906001600160a01b0316606081612bea57604051630fb532db60e11b815260040160405180910390fd5b600086815260066020908152604080832054600583529281902060020180548251818502810185019093528083526001600160601b0380861695600160601b810490911694600160c01b9091046001600160401b0316938893929091839190830182828015612c8257602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311612c64575b505050505090509450945094509450945091939590929450565b612ca4612e80565b6002546001600160a01b0316612ccd5760405163c1f0c0a160e01b815260040160405180910390fd5b6002546040516370a0823160e01b81526000916001600160a01b0316906370a0823190612cfe903090600401615653565b60206040518083038186803b158015612d1657600080fd5b505afa158015612d2a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612d4e91906151da565b600a549091506001600160601b031681811115612d88576040516354ced18160e11b81526004810182905260248101839052604401610a50565b81811015610c49576000612d9c8284615a9a565b60025460405163a9059cbb60e01b81529192506001600160a01b03169063a9059cbb90612dcf9087908590600401615667565b602060405180830381600087803b158015612de957600080fd5b505af1158015612dfd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612e2191906151a4565b612e3e57604051631f01ff1360e21b815260040160405180910390fd5b7f59bfc682b673f8cbf945f1e454df9334834abf7dfe7f92237ca29ecb9b4366008482604051610bf8929190615667565b612e77612e80565b610a5981613a6a565b6000546001600160a01b03163314612ed35760405162461bcd60e51b815260206004820152601660248201527527b7363c9031b0b63630b1363290313c9037bbb732b960511b6044820152606401610a50565b565b6000818152600560205260409020546001600160a01b031680612f0b57604051630fb532db60e11b815260040160405180910390fd5b336001600160a01b038216146116535780604051636c51fda960e11b8152600401610a509190615653565b600c54600160301b900460ff1615612ed35760405163769dd35360e11b815260040160405180910390fd5b600080612f6d846136a9565b60025491935091506001600160a01b031615801590612f9457506001600160601b03821615155b156130435760025460405163a9059cbb60e01b81526001600160a01b039091169063a9059cbb90612fd49086906001600160601b03871690600401615667565b602060405180830381600087803b158015612fee57600080fd5b505af1158015613002573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061302691906151a4565b61304357604051631e9acf1760e31b815260040160405180910390fd5b6000836001600160a01b0316826001600160601b031660405160006040518083038185875af1925050503d8060008114613099576040519150601f19603f3d011682016040523d82523d6000602084013e61309e565b606091505b50509050806130c05760405163950b247960e01b815260040160405180910390fd5b604080516001600160a01b03861681526001600160601b03808616602083015284169181019190915285907f8c74ce8b8cf87f5eb001275c8be27eb34ea2b62bfab6814fcc62192bb63e81c490606001612854565b6040805160a0810182526000606082018181526080830182905282526020820181905291810191909152600061314e8460000151612863565b6000818152600d602090815260409182902082518084019093525460ff811615158084526101009091046001600160401b031691830191909152919250906131ac57604051631dfd6e1360e21b815260048101839052602401610a50565b60008286608001516040516020016131ce929190918252602082015260400190565b60408051601f1981840301815291815281516020928301206000818152600f9093529120549091508061321457604051631b44092560e11b815260040160405180910390fd5b85516020808801516040808a015160608b015160808c015160a08d01519351613243978a97909695910161584b565b6040516020818303038152906040528051906020012081146132785760405163354a450b60e21b815260040160405180910390fd5b60006132878760000151613b0e565b90508061335f578651604051631d2827a760e31b81526001600160401b0390911660048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063e9413d389060240160206040518083038186803b1580156132f957600080fd5b505afa15801561330d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061333191906151da565b90508061335f57865160405163175dadad60e01b81526001600160401b039091166004820152602401610a50565b6000886080015182604051602001613381929190918252602082015260400190565b6040516020818303038152906040528051906020012060001c905060006133a88a83613bf0565b604080516060810182529788526020880196909652948601949094525092979650505050505050565b6000816001600160401b03163a11156134175782156133fa57506001600160401b038116612675565b3a8260405163435e532d60e11b8152600401610a509291906156dd565b503a92915050565b6000806000631fe543e360e01b868560405160240161343f9291906157a7565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b031990941693909317909252600c805460ff60301b1916600160301b1790559086015160808701519192506134a39163ffffffff9091169083613c5b565b600c805460ff60301b191690559695505050505050565b600082156134d4576134cd858584613ca7565b90506134e2565b6134df858584613db8565b90505b949350505050565b600081815260066020526040902082156135a95780546001600160601b03600160601b909104811690851681101561353557604051631e9acf1760e31b815260040160405180910390fd5b61353f8582615ad6565b8254600160601b600160c01b031916600160601b6001600160601b039283168102919091178455600b805488939192600c9261357f928692900416615a45565b92506101000a8154816001600160601b0302191690836001600160601b0316021790555050612ba8565b80546001600160601b039081169085168110156135d957604051631e9acf1760e31b815260040160405180910390fd5b6135e38582615ad6565b82546001600160601b0319166001600160601b03918216178355600b8054879260009161361291859116615a45565b92506101000a8154816001600160601b0302191690836001600160601b031602179055505050505050565b601154600090815b8181101561369f57836001600160a01b03166011828154811061366a5761366a615bea565b6000918252602090912001546001600160a01b0316141561368f575060019392505050565b61369881615b52565b9050613645565b5060009392505050565b60008181526005602090815260408083206006909252822054600290910180546001600160601b0380841694600160601b90940416925b8181101561374b57600460008483815481106136fe576136fe615bea565b60009182526020808320909101546001600160a01b031683528281019390935260409182018120898252909252902080546001600160481b031916905561374481615b52565b90506136e0565b50600085815260056020526040812080546001600160a01b031990811682556001820180549091169055906137836002830182614dd9565b505060008581526006602052604081205561379f600886613fa1565b506001600160601b038416156137f257600a80548591906000906137cd9084906001600160601b0316615ad6565b92506101000a8154816001600160601b0302191690836001600160601b031602179055505b6001600160601b0383161561384a5782600a600c8282829054906101000a90046001600160601b03166138259190615ad6565b92506101000a8154816001600160601b0302191690836001600160601b031602179055505b5050915091565b6040805160208082018790526001600160a01b03959095168183015260608101939093526001600160401b03919091166080808401919091528151808403909101815260a08301825280519084012060c083019490945260e0808301859052815180840390910181526101009092019052805191012091565b604080516020810190915260008152816138f35750604080516020810190915260008152612675565b63125fa26760e31b6139058385615af6565b6001600160e01b0319161461392d57604051632923fee760e11b815260040160405180910390fd5b61393a82600481866159bc565b810190610ffa91906151f3565b60607f92fd13387c7fe7befbc38d303d6468778fb9731bc4583f17d92989c6fcfdeaaa8260405160240161398091511515815260200190565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b03199093169290921790915292915050565b6000466139c481613fad565b15613a415760646001600160a01b031663a3b1b31d6040518163ffffffff1660e01b815260040160206040518083038186803b158015613a0357600080fd5b505afa158015613a17573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613a3b91906151da565b91505090565b4391505090565b6000610ffa8383613fd0565b6000612675825490565b6000610ffa838361401f565b6001600160a01b038116331415613abd5760405162461bcd60e51b815260206004820152601760248201527621b0b73737ba103a3930b739b332b9103a379039b2b63360491b6044820152606401610a50565b600180546001600160a01b0319166001600160a01b0383811691821790925560008054604051929316917fed8889f560326eb138920d842192f0eb3dd22b4f139c87a2c57538e05bae12789190a350565b600046613b1a81613fad565b15613be157610100836001600160401b0316613b346139b8565b613b3e9190615a9a565b1180613b5a5750613b4d6139b8565b836001600160401b031610155b15613b685750600092915050565b6040516315a03d4160e11b81526001600160401b0384166004820152606490632b407a82906024015b60206040518083038186803b158015613ba957600080fd5b505afa158015613bbd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ffa91906151da565b50506001600160401b03164090565b6000613c248360000151846020015185604001518660600151868860a001518960c001518a60e001518b6101000151614049565b60038360200151604051602001613c3c929190615793565b60408051601f1981840301815291905280516020909101209392505050565b60005a611388811015613c6d57600080fd5b611388810390508460408204820311613c8557600080fd5b50823b613c9157600080fd5b60008083516020850160008789f1949350505050565b600080613cea6000368080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061426592505050565b905060005a600c54613d0a908890600160581b900463ffffffff166159e6565b613d149190615a9a565b613d1e9086615a7b565b600c54909150600090613d4390600160781b900463ffffffff1664e8d4a51000615a7b565b90508415613d8f57600c548190606490600160b81b900460ff16613d6785876159e6565b613d719190615a7b565b613d7b9190615a67565b613d8591906159e6565b9350505050610ffa565b600c548190606490613dab90600160b81b900460ff1682615a20565b60ff16613d6785876159e6565b600080613dc3614333565b905060008113613de9576040516321ea67b360e11b815260048101829052602401610a50565b6000613e2b6000368080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061426592505050565b9050600082825a600c54613e4d908b90600160581b900463ffffffff166159e6565b613e579190615a9a565b613e619089615a7b565b613e6b91906159e6565b613e7d90670de0b6b3a7640000615a7b565b613e879190615a67565b600c54909150600090613eb09063ffffffff600160981b8204811691600160781b900416615ab1565b613ec59063ffffffff1664e8d4a51000615a7b565b9050600084613edc83670de0b6b3a7640000615a7b565b613ee69190615a67565b905060008715613f2757600c548290606490613f0c90600160c01b900460ff1687615a7b565b613f169190615a67565b613f2091906159e6565b9050613f67565b600c548290606490613f4390600160c01b900460ff1682615a20565b613f509060ff1687615a7b565b613f5a9190615a67565b613f6491906159e6565b90505b6b033b2e3c9fd0803ce8000000811115613f945760405163e80fa38160e01b815260040160405180910390fd5b9998505050505050505050565b6000610ffa8383614402565b600061a4b1821480613fc1575062066eed82145b8061267557505062066eee1490565b600081815260018301602052604081205461401757508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155612675565b506000612675565b600082600001828154811061403657614036615bea565b9060005260206000200154905092915050565b614052896144f5565b61409b5760405162461bcd60e51b815260206004820152601a6024820152797075626c6963206b6579206973206e6f74206f6e20637572766560301b6044820152606401610a50565b6140a4886144f5565b6140e85760405162461bcd60e51b815260206004820152601560248201527467616d6d61206973206e6f74206f6e20637572766560581b6044820152606401610a50565b6140f1836144f5565b61413d5760405162461bcd60e51b815260206004820152601d60248201527f6347616d6d615769746e657373206973206e6f74206f6e2063757276650000006044820152606401610a50565b614146826144f5565b6141925760405162461bcd60e51b815260206004820152601c60248201527f73486173685769746e657373206973206e6f74206f6e206375727665000000006044820152606401610a50565b61419e878a88876145b8565b6141e65760405162461bcd60e51b81526020600482015260196024820152786164647228632a706b2b732a6729213d5f755769746e65737360381b6044820152606401610a50565b60006141f28a876146db565b90506000614205898b878b86898961473f565b90506000614216838d8d8a8661485e565b9050808a146142575760405162461bcd60e51b815260206004820152600d60248201526c34b73b30b634b210383937b7b360991b6044820152606401610a50565b505050505050505050505050565b60004661427181613fad565b156142b057606c6001600160a01b031663c6f7de0e6040518163ffffffff1660e01b815260040160206040518083038186803b158015613ba957600080fd5b6142b98161489e565b1561432a57600f602160991b016001600160a01b03166349948e0e84604051806080016040528060488152602001615c3a604891396040516020016142ff9291906155a9565b6040516020818303038152906040526040518263ffffffff1660e01b8152600401613b9191906156f4565b50600092915050565b600c5460035460408051633fabe5a360e21b81529051600093600160381b900463ffffffff169284926001600160a01b039091169163feaf968c9160048082019260a092909190829003018186803b15801561438e57600080fd5b505afa1580156143a2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906143c69190615484565b50919550909250505063ffffffff8216158015906143f257506143e98142615a9a565b8263ffffffff16105b156143fd5760105492505b505090565b600081815260018301602052604081205480156144eb576000614426600183615a9a565b855490915060009061443a90600190615a9a565b905081811461449f57600086600001828154811061445a5761445a615bea565b906000526020600020015490508087600001848154811061447d5761447d615bea565b6000918252602080832090910192909255918252600188019052604090208390555b85548690806144b0576144b0615bd4565b600190038181906000526020600020016000905590558560010160008681526020019081526020016000206000905560019350505050612675565b6000915050612675565b80516000906401000003d019116145435760405162461bcd60e51b8152602060048201526012602482015271696e76616c696420782d6f7264696e61746560701b6044820152606401610a50565b60208201516401000003d019116145915760405162461bcd60e51b8152602060048201526012602482015271696e76616c696420792d6f7264696e61746560701b6044820152606401610a50565b60208201516401000003d0199080096145b18360005b60200201516148d8565b1492915050565b60006001600160a01b0382166145fe5760405162461bcd60e51b815260206004820152600b60248201526a626164207769746e65737360a81b6044820152606401610a50565b60208401516000906001161561461557601c614618565b601b5b9050600070014551231950b75fc4402da1732fc9bebe1985876000602002015109865170014551231950b75fc4402da1732fc9bebe19918203925060009190890987516040805160008082526020820180845287905260ff88169282019290925260608101929092526080820183905291925060019060a0016020604051602081039080840390855afa1580156146b3573d6000803e3d6000fd5b5050604051601f1901516001600160a01b039081169088161495505050505050949350505050565b6146e3614df7565b614710600184846040516020016146fc93929190615632565b6040516020818303038152906040526148fc565b90505b61471c816144f5565b61267557805160408051602081019290925261473891016146fc565b9050614713565b614747614df7565b825186516401000003d01990819006910614156147a65760405162461bcd60e51b815260206004820152601e60248201527f706f696e747320696e2073756d206d7573742062652064697374696e637400006044820152606401610a50565b6147b187898861494a565b6147f65760405162461bcd60e51b8152602060048201526016602482015275119a5c9cdd081b5d5b0818da1958dac819985a5b195960521b6044820152606401610a50565b61480184868561494a565b6148475760405162461bcd60e51b815260206004820152601760248201527614d958dbdb99081b5d5b0818da1958dac819985a5b1959604a1b6044820152606401610a50565b614852868484614a72565b98975050505050505050565b60006002868686858760405160200161487c969594939291906155d8565b60408051601f1981840301815291905280516020909101209695505050505050565b6000600a8214806148b057506101a482145b806148bd575062aa37dc82145b806148c9575061210582145b8061267557505062014a331490565b6000806401000003d01980848509840990506401000003d019600782089392505050565b614904614df7565b61490d82614b35565b815261492261491d8260006145a7565b614b70565b602082018190526002900660011415611f10576020810180516401000003d019039052919050565b6000826149875760405162461bcd60e51b815260206004820152600b60248201526a3d32b9379039b1b0b630b960a91b6044820152606401610a50565b8351602085015160009061499d90600290615b94565b156149a957601c6149ac565b601b5b9050600070014551231950b75fc4402da1732fc9bebe198387096040805160008082526020820180845281905260ff86169282019290925260608101869052608081018390529192509060019060a0016020604051602081039080840390855afa158015614a1e573d6000803e3d6000fd5b505050602060405103519050600086604051602001614a3d9190615597565b60408051601f1981840301815291905280516020909101206001600160a01b0392831692169190911498975050505050505050565b614a7a614df7565b835160208086015185519186015160009384938493614a9b93909190614b90565b919450925090506401000003d019858209600114614af75760405162461bcd60e51b815260206004820152601960248201527834b73b2d1036bab9ba1031329034b73b32b939b29037b3103d60391b6044820152606401610a50565b60405180604001604052806401000003d01980614b1657614b16615bbe565b87860981526020016401000003d0198785099052979650505050505050565b805160208201205b6401000003d0198110611f1057604080516020808201939093528151808203840181529082019091528051910120614b3d565b6000612675826002614b896401000003d01960016159e6565b901c614c70565b60008080600180826401000003d019896401000003d019038808905060006401000003d0198b6401000003d019038a0890506000614bd083838585614d07565b9098509050614be188828e88614d2b565b9098509050614bf288828c87614d2b565b90985090506000614c058d878b85614d2b565b9098509050614c1688828686614d07565b9098509050614c2788828e89614d2b565b9098509050818114614c5c576401000003d019818a0998506401000003d01982890997506401000003d0198183099650614c60565b8196505b5050505050509450945094915050565b600080614c7b614e15565b6020808252818101819052604082015260608101859052608081018490526401000003d01960a0820152614cad614e33565b60208160c0846005600019fa925082614cfd5760405162461bcd60e51b81526020600482015260126024820152716269674d6f64457870206661696c7572652160701b6044820152606401610a50565b5195945050505050565b6000806401000003d0198487096401000003d0198487099097909650945050505050565b600080806401000003d019878509905060006401000003d01987876401000003d019030990506401000003d0198183086401000003d01986890990999098509650505050505050565b828054828255906000526020600020908101928215614dc9579160200282015b82811115614dc957825182546001600160a01b0319166001600160a01b03909116178255602090920191600190910190614d94565b50614dd5929150614e51565b5090565b5080546000825590600052602060002090810190610a599190614e51565b60405180604001604052806002906020820280368337509192915050565b6040518060c001604052806006906020820280368337509192915050565b60405180602001604052806001906020820280368337509192915050565b5b80821115614dd55760008155600101614e52565b8035611f1081615c16565b806040810183101561267557600080fd5b600082601f830112614e9357600080fd5b604051604081018181106001600160401b0382111715614eb557614eb5615c00565b8060405250808385604086011115614ecc57600080fd5b60005b6002811015614eee578135835260209283019290910190600101614ecf565b509195945050505050565b8035611f1081615c2b565b600060c08284031215614f1657600080fd5b614f1e615941565b9050614f2982615018565b815260208083013581830152614f4160408401615004565b6040830152614f5260608401615004565b60608301526080830135614f6581615c16565b608083015260a08301356001600160401b0380821115614f8457600080fd5b818501915085601f830112614f9857600080fd5b813581811115614faa57614faa615c00565b614fbc601f8201601f1916850161598c565b91508082528684828501011115614fd257600080fd5b80848401858401376000848284010152508060a085015250505092915050565b803561ffff81168114611f1057600080fd5b803563ffffffff81168114611f1057600080fd5b80356001600160401b0381168114611f1057600080fd5b803560ff81168114611f1057600080fd5b805169ffffffffffffffffffff81168114611f1057600080fd5b60006020828403121561506c57600080fd5b8135610ffa81615c16565b6000806040838503121561508a57600080fd5b823561509581615c16565b915060208301356150a581615c16565b809150509250929050565b600080600080606085870312156150c657600080fd5b84356150d181615c16565b93506020850135925060408501356001600160401b03808211156150f457600080fd5b818701915087601f83011261510857600080fd5b81358181111561511757600080fd5b88602082850101111561512957600080fd5b95989497505060200194505050565b60006040828403121561514a57600080fd5b610ffa8383614e71565b6000806060838503121561516757600080fd5b6151718484614e71565b915061517f60408401615018565b90509250929050565b60006040828403121561519a57600080fd5b610ffa8383614e82565b6000602082840312156151b657600080fd5b8151610ffa81615c2b565b6000602082840312156151d357600080fd5b5035919050565b6000602082840312156151ec57600080fd5b5051919050565b60006020828403121561520557600080fd5b604051602081018181106001600160401b038211171561522757615227615c00565b604052823561523581615c2b565b81529392505050565b60008060008385036101e081121561525557600080fd5b6101a08082121561526557600080fd5b61526d615969565b91506152798787614e82565b82526152888760408801614e82565b60208301526080860135604083015260a0860135606083015260c086013560808301526152b760e08701614e66565b60a08301526101006152cb88828901614e82565b60c08401526152de886101408901614e82565b60e0840152610180870135908301529093508401356001600160401b0381111561530757600080fd5b61531386828701614f04565b9250506153236101c08501614ef9565b90509250925092565b60006020828403121561533e57600080fd5b81356001600160401b0381111561535457600080fd5b820160c08185031215610ffa57600080fd5b60006020828403121561537857600080fd5b610ffa82614ff2565b60008060008060008060008060006101208a8c0312156153a057600080fd5b6153a98a614ff2565b98506153b760208b01615004565b97506153c560408b01615004565b96506153d360608b01615004565b955060808a013594506153e860a08b01615004565b93506153f660c08b01615004565b925061540460e08b0161502f565b91506154136101008b0161502f565b90509295985092959850929598565b6000806040838503121561543557600080fd5b8235915060208301356150a581615c16565b6000806040838503121561545a57600080fd5b50508035926020909101359150565b60006020828403121561547b57600080fd5b610ffa82615004565b600080600080600060a0868803121561549c57600080fd5b6154a586615040565b94506020860151935060408601519250606086015191506154c860808701615040565b90509295509295909350565b600081518084526020808501945080840160005b8381101561550d5781516001600160a01b0316875295820195908201906001016154e8565b509495945050505050565b8060005b6002811015612ba857815184526020938401939091019060010161551c565b600081518084526020808501945080840160005b8381101561550d5781518752958201959082019060010161554f565b60008151808452615583816020860160208601615b26565b601f01601f19169290920160200192915050565b6155a18183615518565b604001919050565b600083516155bb818460208801615b26565b8351908301906155cf818360208801615b26565b01949350505050565b8681526155e86020820187615518565b6155f56060820186615518565b61560260a0820185615518565b61560f60e0820184615518565b60609190911b6001600160601b0319166101208201526101340195945050505050565b8381526156426020820184615518565b606081019190915260800192915050565b6001600160a01b0391909116815260200190565b6001600160a01b03929092168252602082015260400190565b6001600160a01b0392831681529116602082015260400190565b6001600160a01b039290921682526001600160601b0316602082015260400190565b604081016126758284615518565b602081526000610ffa602083018461553b565b9182526001600160401b0316602082015260400190565b602081526000610ffa602083018461556b565b6020815260ff82511660208201526020820151604082015260018060a01b0360408301511660608201526000606083015160c0608084015261574c60e08401826154d4565b60808501516001600160601b0390811660a0868101919091529095015190941660c0909301929092525090919050565b9182526001600160a01b0316602082015260400190565b82815260608101610ffa6020830184615518565b8281526040602082015260006134e2604083018461553b565b86815285602082015261ffff85166040820152600063ffffffff808616606084015280851660808401525060c060a083015261485260c083018461556b565b878152602081018790526040810186905263ffffffff8581166060830152841660808201526001600160a01b03831660a082015260e060c08201819052600090613f949083018461556b565b8781526001600160401b03871660208201526040810186905263ffffffff8581166060830152841660808201526001600160a01b03831660a082015260e060c08201819052600090613f949083018461556b565b6001600160601b038681168252851660208201526001600160401b03841660408201526001600160a01b038316606082015260a0608082018190526000906158e9908301846154d4565b979650505050505050565b6000808335601e1984360301811261590b57600080fd5b8301803591506001600160401b0382111561592557600080fd5b60200191503681900382131561593a57600080fd5b9250929050565b60405160c081016001600160401b038111828210171561596357615963615c00565b60405290565b60405161012081016001600160401b038111828210171561596357615963615c00565b604051601f8201601f191681016001600160401b03811182821017156159b4576159b4615c00565b604052919050565b600080858511156159cc57600080fd5b838611156159d957600080fd5b5050820193919092039150565b600082198211156159f9576159f9615ba8565b500190565b60006001600160401b038083168185168083038211156155cf576155cf615ba8565b600060ff821660ff84168060ff03821115615a3d57615a3d615ba8565b019392505050565b60006001600160601b038281168482168083038211156155cf576155cf615ba8565b600082615a7657615a76615bbe565b500490565b6000816000190483118215151615615a9557615a95615ba8565b500290565b600082821015615aac57615aac615ba8565b500390565b600063ffffffff83811690831681811015615ace57615ace615ba8565b039392505050565b60006001600160601b0383811690831681811015615ace57615ace615ba8565b6001600160e01b03198135818116916004851015615b1e5780818660040360031b1b83161692505b505092915050565b60005b83811015615b41578181015183820152602001615b29565b83811115612ba85750506000910152565b6000600019821415615b6657615b66615ba8565b5060010190565b60006001600160401b0380831681811415615b8a57615b8a615ba8565b6001019392505050565b600082615ba357615ba3615bbe565b500690565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052601260045260246000fd5b634e487b7160e01b600052603160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6001600160a01b0381168114610a5957600080fd5b8015158114610a5957600080fdfe307866666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666a164736f6c6343000806000a", -======= ABI: "[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"blockhashStore\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"internalBalance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"externalBalance\",\"type\":\"uint256\"}],\"name\":\"BalanceInvariantViolated\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"blockNum\",\"type\":\"uint256\"}],\"name\":\"BlockhashNotInStore\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"coordinatorAddress\",\"type\":\"address\"}],\"name\":\"CoordinatorAlreadyRegistered\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"coordinatorAddress\",\"type\":\"address\"}],\"name\":\"CoordinatorNotRegistered\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FailedToSendNative\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FailedToTransferLink\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"have\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"want\",\"type\":\"uint32\"}],\"name\":\"GasLimitTooBig\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"gasPrice\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxGas\",\"type\":\"uint256\"}],\"name\":\"GasPriceExceeded\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"IncorrectCommitment\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"IndexOutOfRange\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InsufficientBalance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"have\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"want\",\"type\":\"uint256\"}],\"name\":\"InsufficientGasForConsumer\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidCalldata\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"subId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"consumer\",\"type\":\"address\"}],\"name\":\"InvalidConsumer\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidExtraArgsTag\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"int256\",\"name\":\"linkWei\",\"type\":\"int256\"}],\"name\":\"InvalidLinkWeiPrice\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"premiumPercentage\",\"type\":\"uint8\"},{\"internalType\":\"uint8\",\"name\":\"max\",\"type\":\"uint8\"}],\"name\":\"InvalidPremiumPercentage\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint16\",\"name\":\"have\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"min\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"max\",\"type\":\"uint16\"}],\"name\":\"InvalidRequestConfirmations\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidSubscription\",\"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\":\"LinkNotSet\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"have\",\"type\":\"uint256\"},{\"internalType\":\"uint32\",\"name\":\"max\",\"type\":\"uint32\"}],\"name\":\"MsgDataTooBig\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"proposedOwner\",\"type\":\"address\"}],\"name\":\"MustBeRequestedOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"MustBeSubOwner\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NoCorrespondingRequest\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"keyHash\",\"type\":\"bytes32\"}],\"name\":\"NoSuchProvingKey\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"have\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"want\",\"type\":\"uint32\"}],\"name\":\"NumWordsTooBig\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OnlyCallableFromLink\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"PaymentTooLarge\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"PendingRequestExists\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"keyHash\",\"type\":\"bytes32\"}],\"name\":\"ProvingKeyAlreadyRegistered\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"Reentrant\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"TooManyConsumers\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint16\",\"name\":\"minimumRequestConfirmations\",\"type\":\"uint16\"},{\"indexed\":false,\"internalType\":\"uint32\",\"name\":\"maxGasLimit\",\"type\":\"uint32\"},{\"indexed\":false,\"internalType\":\"uint32\",\"name\":\"stalenessSeconds\",\"type\":\"uint32\"},{\"indexed\":false,\"internalType\":\"uint32\",\"name\":\"gasAfterPaymentCalculation\",\"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\"},{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"nativePremiumPercentage\",\"type\":\"uint8\"},{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"linkPremiumPercentage\",\"type\":\"uint8\"}],\"name\":\"ConfigSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"coordinatorAddress\",\"type\":\"address\"}],\"name\":\"CoordinatorDeregistered\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"coordinatorAddress\",\"type\":\"address\"}],\"name\":\"CoordinatorRegistered\",\"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\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"FundsRecovered\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"newCoordinator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"subId\",\"type\":\"uint256\"}],\"name\":\"MigrationCompleted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"NativeFundsRecovered\",\"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\":false,\"internalType\":\"bytes32\",\"name\":\"keyHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"maxGas\",\"type\":\"uint64\"}],\"name\":\"ProvingKeyDeregistered\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"keyHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"maxGas\",\"type\":\"uint64\"}],\"name\":\"ProvingKeyRegistered\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"requestId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"outputSeed\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"subId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint96\",\"name\":\"payment\",\"type\":\"uint96\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"nativePayment\",\"type\":\"bool\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"success\",\"type\":\"bool\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"onlyPremium\",\"type\":\"bool\"}],\"name\":\"RandomWordsFulfilled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"keyHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"requestId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"preSeed\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"subId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint16\",\"name\":\"minimumRequestConfirmations\",\"type\":\"uint16\"},{\"indexed\":false,\"internalType\":\"uint32\",\"name\":\"callbackGasLimit\",\"type\":\"uint32\"},{\"indexed\":false,\"internalType\":\"uint32\",\"name\":\"numWords\",\"type\":\"uint32\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"extraArgs\",\"type\":\"bytes\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"RandomWordsRequested\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"subId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amountLink\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amountNative\",\"type\":\"uint256\"}],\"name\":\"SubscriptionCanceled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"subId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"consumer\",\"type\":\"address\"}],\"name\":\"SubscriptionConsumerAdded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"subId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"consumer\",\"type\":\"address\"}],\"name\":\"SubscriptionConsumerRemoved\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"subId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"SubscriptionCreated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"subId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"oldBalance\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"newBalance\",\"type\":\"uint256\"}],\"name\":\"SubscriptionFunded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"subId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"oldNativeBalance\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"newNativeBalance\",\"type\":\"uint256\"}],\"name\":\"SubscriptionFundedWithNative\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"subId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"SubscriptionOwnerTransferRequested\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"subId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"SubscriptionOwnerTransferred\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"BLOCKHASH_STORE\",\"outputs\":[{\"internalType\":\"contractBlockhashStoreInterface\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"LINK\",\"outputs\":[{\"internalType\":\"contractLinkTokenInterface\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"LINK_NATIVE_FEED\",\"outputs\":[{\"internalType\":\"contractAggregatorV3Interface\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MAX_CONSUMERS\",\"outputs\":[{\"internalType\":\"uint16\",\"name\":\"\",\"type\":\"uint16\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MAX_NUM_WORDS\",\"outputs\":[{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MAX_REQUEST_CONFIRMATIONS\",\"outputs\":[{\"internalType\":\"uint16\",\"name\":\"\",\"type\":\"uint16\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"acceptOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"subId\",\"type\":\"uint256\"}],\"name\":\"acceptSubscriptionOwnerTransfer\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"subId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"consumer\",\"type\":\"address\"}],\"name\":\"addConsumer\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"subId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"cancelSubscription\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"createSubscription\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"subId\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"}],\"name\":\"deregisterMigratableCoordinator\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256[2]\",\"name\":\"publicProvingKey\",\"type\":\"uint256[2]\"}],\"name\":\"deregisterProvingKey\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint256[2]\",\"name\":\"pk\",\"type\":\"uint256[2]\"},{\"internalType\":\"uint256[2]\",\"name\":\"gamma\",\"type\":\"uint256[2]\"},{\"internalType\":\"uint256\",\"name\":\"c\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"s\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"seed\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"uWitness\",\"type\":\"address\"},{\"internalType\":\"uint256[2]\",\"name\":\"cGammaWitness\",\"type\":\"uint256[2]\"},{\"internalType\":\"uint256[2]\",\"name\":\"sHashWitness\",\"type\":\"uint256[2]\"},{\"internalType\":\"uint256\",\"name\":\"zInv\",\"type\":\"uint256\"}],\"internalType\":\"structVRF.Proof\",\"name\":\"proof\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint64\",\"name\":\"blockNum\",\"type\":\"uint64\"},{\"internalType\":\"uint256\",\"name\":\"subId\",\"type\":\"uint256\"},{\"internalType\":\"uint32\",\"name\":\"callbackGasLimit\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"numWords\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"extraArgs\",\"type\":\"bytes\"}],\"internalType\":\"structVRFCoordinatorV2_5.RequestCommitment\",\"name\":\"rc\",\"type\":\"tuple\"},{\"internalType\":\"bool\",\"name\":\"onlyPremium\",\"type\":\"bool\"}],\"name\":\"fulfillRandomWords\",\"outputs\":[{\"internalType\":\"uint96\",\"name\":\"payment\",\"type\":\"uint96\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"subId\",\"type\":\"uint256\"}],\"name\":\"fundSubscriptionWithNative\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"startIndex\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxCount\",\"type\":\"uint256\"}],\"name\":\"getActiveSubscriptionIds\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"ids\",\"type\":\"uint256[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"subId\",\"type\":\"uint256\"}],\"name\":\"getSubscription\",\"outputs\":[{\"internalType\":\"uint96\",\"name\":\"balance\",\"type\":\"uint96\"},{\"internalType\":\"uint96\",\"name\":\"nativeBalance\",\"type\":\"uint96\"},{\"internalType\":\"uint64\",\"name\":\"reqCount\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address[]\",\"name\":\"consumers\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256[2]\",\"name\":\"publicKey\",\"type\":\"uint256[2]\"}],\"name\":\"hashOfKey\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"subId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"newCoordinator\",\"type\":\"address\"}],\"name\":\"migrate\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"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\":\"subId\",\"type\":\"uint256\"}],\"name\":\"ownerCancelSubscription\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"subId\",\"type\":\"uint256\"}],\"name\":\"pendingRequestExists\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"recoverFunds\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"addresspayable\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"recoverNativeFunds\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"}],\"name\":\"registerMigratableCoordinator\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256[2]\",\"name\":\"publicProvingKey\",\"type\":\"uint256[2]\"},{\"internalType\":\"uint64\",\"name\":\"maxGas\",\"type\":\"uint64\"}],\"name\":\"registerProvingKey\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"subId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"consumer\",\"type\":\"address\"}],\"name\":\"removeConsumer\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"keyHash\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"subId\",\"type\":\"uint256\"},{\"internalType\":\"uint16\",\"name\":\"requestConfirmations\",\"type\":\"uint16\"},{\"internalType\":\"uint32\",\"name\":\"callbackGasLimit\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"numWords\",\"type\":\"uint32\"},{\"internalType\":\"bytes\",\"name\":\"extraArgs\",\"type\":\"bytes\"}],\"internalType\":\"structVRFV2PlusClient.RandomWordsRequest\",\"name\":\"req\",\"type\":\"tuple\"}],\"name\":\"requestRandomWords\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"requestId\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"subId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"requestSubscriptionOwnerTransfer\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"s_config\",\"outputs\":[{\"internalType\":\"uint16\",\"name\":\"minimumRequestConfirmations\",\"type\":\"uint16\"},{\"internalType\":\"uint32\",\"name\":\"maxGasLimit\",\"type\":\"uint32\"},{\"internalType\":\"bool\",\"name\":\"reentrancyLock\",\"type\":\"bool\"},{\"internalType\":\"uint32\",\"name\":\"stalenessSeconds\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"gasAfterPaymentCalculation\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"fulfillmentFlatFeeNativePPM\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"fulfillmentFlatFeeLinkDiscountPPM\",\"type\":\"uint32\"},{\"internalType\":\"uint8\",\"name\":\"nativePremiumPercentage\",\"type\":\"uint8\"},{\"internalType\":\"uint8\",\"name\":\"linkPremiumPercentage\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"s_currentSubNonce\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"s_fallbackWeiPerUnitLink\",\"outputs\":[{\"internalType\":\"int256\",\"name\":\"\",\"type\":\"int256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"s_provingKeyHashes\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"s_provingKeys\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"exists\",\"type\":\"bool\"},{\"internalType\":\"uint64\",\"name\":\"maxGas\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"s_requestCommitments\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"s_totalBalance\",\"outputs\":[{\"internalType\":\"uint96\",\"name\":\"\",\"type\":\"uint96\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"s_totalNativeBalance\",\"outputs\":[{\"internalType\":\"uint96\",\"name\":\"\",\"type\":\"uint96\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint16\",\"name\":\"minimumRequestConfirmations\",\"type\":\"uint16\"},{\"internalType\":\"uint32\",\"name\":\"maxGasLimit\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"stalenessSeconds\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"gasAfterPaymentCalculation\",\"type\":\"uint32\"},{\"internalType\":\"int256\",\"name\":\"fallbackWeiPerUnitLink\",\"type\":\"int256\"},{\"internalType\":\"uint32\",\"name\":\"fulfillmentFlatFeeNativePPM\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"fulfillmentFlatFeeLinkDiscountPPM\",\"type\":\"uint32\"},{\"internalType\":\"uint8\",\"name\":\"nativePremiumPercentage\",\"type\":\"uint8\"},{\"internalType\":\"uint8\",\"name\":\"linkPremiumPercentage\",\"type\":\"uint8\"}],\"name\":\"setConfig\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"link\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"linkNativeFeed\",\"type\":\"address\"}],\"name\":\"setLINKAndLINKNativeFeed\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"}],\"name\":\"withdraw\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"addresspayable\",\"name\":\"recipient\",\"type\":\"address\"}],\"name\":\"withdrawNative\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", - Bin: "0x60a06040523480156200001157600080fd5b5060405162005eaa38038062005eaa833981016040819052620000349162000183565b33806000816200008b5760405162461bcd60e51b815260206004820152601860248201527f43616e6e6f7420736574206f776e657220746f207a65726f000000000000000060448201526064015b60405180910390fd5b600080546001600160a01b0319166001600160a01b0384811691909117909155811615620000be57620000be81620000d7565b50505060601b6001600160601b031916608052620001b5565b6001600160a01b038116331415620001325760405162461bcd60e51b815260206004820152601760248201527f43616e6e6f74207472616e7366657220746f2073656c66000000000000000000604482015260640162000082565b600180546001600160a01b0319166001600160a01b0383811691821790925560008054604051929316917fed8889f560326eb138920d842192f0eb3dd22b4f139c87a2c57538e05bae12789190a350565b6000602082840312156200019657600080fd5b81516001600160a01b0381168114620001ae57600080fd5b9392505050565b60805160601c615ccf620001db6000396000818161055001526132c30152615ccf6000f3fe60806040526004361061021c5760003560e01c80638402595e11610124578063b2a7cac5116100a6578063b2a7cac514610732578063bec4c08c14610752578063caf70c4a14610772578063cb63179714610792578063d98e620e146107b2578063da2f2610146107d2578063dac83d2914610831578063dc311dd314610851578063e72f6e3014610882578063ee9d2d38146108a2578063f2fde38b146108cf57600080fd5b80638402595e146105c757806386fe91c7146105e75780638da5cb5b1461060757806395b55cfc146106255780639b1c385e146106385780639d40a6fd14610658578063a21a23e414610690578063a4c0ed36146106a5578063a63e0bfb146106c5578063aa433aff146106e5578063aefb212f1461070557600080fd5b8063405b84fa116101ad578063405b84fa1461044e57806340d6bb821461046e57806341af6c871461049957806351cff8d9146104c95780635d06b4ab146104e957806364d51a2a14610509578063659827441461051e578063689c45171461053e57806372e9d5651461057257806379ba5097146105925780637a5a2aef146105a757600080fd5b806304104edb14610221578063043bd6ae14610243578063088070f51461026c57806308821d581461033a5780630ae095401461035a57806315c48b841461037a57806318e3dd27146103a25780631b6b6d23146103e15780632f622e6b1461040e578063301f42e91461042e575b600080fd5b34801561022d57600080fd5b5061024161023c366004615086565b6108ef565b005b34801561024f57600080fd5b5061025960105481565b6040519081526020015b60405180910390f35b34801561027857600080fd5b50600c546102dd9061ffff81169063ffffffff62010000820481169160ff600160301b8204811692600160381b8304811692600160581b8104821692600160781b8204831692600160981b83041691600160b81b8104821691600160c01b9091041689565b6040805161ffff909a168a5263ffffffff98891660208b01529615159689019690965293861660608801529185166080870152841660a08601529290921660c084015260ff91821660e08401521661010082015261012001610263565b34801561034657600080fd5b50610241610355366004615164565b610a5c565b34801561036657600080fd5b5061024161037536600461544e565b610c06565b34801561038657600080fd5b5061038f60c881565b60405161ffff9091168152602001610263565b3480156103ae57600080fd5b50600a546103c990600160601b90046001600160601b031681565b6040516001600160601b039091168152602001610263565b3480156103ed57600080fd5b50600254610401906001600160a01b031681565b604051610263919061567f565b34801561041a57600080fd5b50610241610429366004615086565b610c4e565b34801561043a57600080fd5b506103c961044936600461526a565b610d9a565b34801561045a57600080fd5b5061024161046936600461544e565b61104d565b34801561047a57600080fd5b506104846101f481565b60405163ffffffff9091168152602001610263565b3480156104a557600080fd5b506104b96104b43660046151ed565b6113ff565b6040519015158152602001610263565b3480156104d557600080fd5b506102416104e4366004615086565b61150f565b3480156104f557600080fd5b50610241610504366004615086565b61169d565b34801561051557600080fd5b5061038f606481565b34801561052a57600080fd5b506102416105393660046150a3565b611754565b34801561054a57600080fd5b506104017f000000000000000000000000000000000000000000000000000000000000000081565b34801561057e57600080fd5b50600354610401906001600160a01b031681565b34801561059e57600080fd5b506102416117b4565b3480156105b357600080fd5b506102416105c2366004615180565b61185e565b3480156105d357600080fd5b506102416105e2366004615086565b61198e565b3480156105f357600080fd5b50600a546103c9906001600160601b031681565b34801561061357600080fd5b506000546001600160a01b0316610401565b6102416106333660046151ed565b611aa0565b34801561064457600080fd5b50610259610653366004615358565b611bc4565b34801561066457600080fd5b50600754610678906001600160401b031681565b6040516001600160401b039091168152602001610263565b34801561069c57600080fd5b50610259611f05565b3480156106b157600080fd5b506102416106c03660046150dc565b6120d8565b3480156106d157600080fd5b506102416106e03660046153ad565b612254565b3480156106f157600080fd5b506102416107003660046151ed565b612520565b34801561071157600080fd5b50610725610720366004615473565b612568565b60405161026391906156f6565b34801561073e57600080fd5b5061024161074d3660046151ed565b61266a565b34801561075e57600080fd5b5061024161076d36600461544e565b61275f565b34801561077e57600080fd5b5061025961078d3660046151b4565b61286b565b34801561079e57600080fd5b506102416107ad36600461544e565b61289b565b3480156107be57600080fd5b506102596107cd3660046151ed565b612b0a565b3480156107de57600080fd5b506108126107ed3660046151ed565b600d6020526000908152604090205460ff81169061010090046001600160401b031682565b6040805192151583526001600160401b03909116602083015201610263565b34801561083d57600080fd5b5061024161084c36600461544e565b612b2b565b34801561085d57600080fd5b5061087161086c3660046151ed565b612bc2565b6040516102639594939291906158e0565b34801561088e57600080fd5b5061024161089d366004615086565b612cb0565b3480156108ae57600080fd5b506102596108bd3660046151ed565b600f6020526000908152604090205481565b3480156108db57600080fd5b506102416108ea366004615086565b612e83565b6108f7612e94565b60115460005b81811015610a3457826001600160a01b03166011828154811061092257610922615c2b565b6000918252602090912001546001600160a01b03161415610a2457601161094a600184615adb565b8154811061095a5761095a615c2b565b600091825260209091200154601180546001600160a01b03909216918390811061098657610986615c2b565b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060118054806109c5576109c5615c15565b600082815260209020810160001990810180546001600160a01b03191690550190556040517ff80a1a97fd42251f3c33cda98635e7399253033a6774fe37cd3f650b5282af3790610a1790859061567f565b60405180910390a1505050565b610a2d81615b93565b90506108fd565b5081604051635428d44960e01b8152600401610a50919061567f565b60405180910390fd5b50565b610a64612e94565b604080518082018252600091610a9391908490600290839083908082843760009201919091525061286b915050565b6000818152600d602090815260409182902082518084019093525460ff811615158084526101009091046001600160401b03169183019190915291925090610af157604051631dfd6e1360e21b815260048101839052602401610a50565b6000828152600d6020526040812080546001600160481b0319169055600e54905b81811015610bc25783600e8281548110610b2e57610b2e615c2b565b90600052602060002001541415610bb257600e610b4c600184615adb565b81548110610b5c57610b5c615c2b565b9060005260206000200154600e8281548110610b7a57610b7a615c2b565b600091825260209091200155600e805480610b9757610b97615c15565b60019003818190600052602060002001600090559055610bc2565b610bbb81615b93565b9050610b12565b507f9b6868e0eb737bcd72205360baa6bfd0ba4e4819a33ade2db384e8a8025639a5838360200151604051610bf8929190615709565b60405180910390a150505050565b81610c1081612ee9565b610c18612f4a565b610c21836113ff565b15610c3f57604051631685ecdd60e31b815260040160405180910390fd5b610c498383612f75565b505050565b610c56612f4a565b610c5e612e94565b600b54600160601b90046001600160601b0316610c8e57604051631e9acf1760e31b815260040160405180910390fd5b600b8054600160601b90046001600160601b0316908190600c610cb18380615b17565b92506101000a8154816001600160601b0302191690836001600160601b0316021790555080600a600c8282829054906101000a90046001600160601b0316610cf99190615b17565b92506101000a8154816001600160601b0302191690836001600160601b031602179055506000826001600160a01b0316826001600160601b031660405160006040518083038185875af1925050503d8060008114610d73576040519150601f19603f3d011682016040523d82523d6000602084013e610d78565b606091505b5050905080610c495760405163950b247960e01b815260040160405180910390fd5b6000610da4612f4a565b60005a9050610324361115610dd657604051630f28961b60e01b81523660048201526103246024820152604401610a50565b6000610de28686613129565b90506000610df8858360000151602001516133e5565b60408301516060888101519293509163ffffffff16806001600160401b03811115610e2557610e25615c41565b604051908082528060200260200182016040528015610e4e578160200160208202803683370190505b50925060005b81811015610eb65760408051602081018590529081018290526060016040516020818303038152906040528051906020012060001c848281518110610e9b57610e9b615c2b565b6020908102919091010152610eaf81615b93565b9050610e54565b5050602080850180516000908152600f9092526040822082905551610edc908a85613433565b60208a8101516000908152600690915260409020805491925090601890610f1290600160c01b90046001600160401b0316615bae565b91906101000a8154816001600160401b0302191690836001600160401b0316021790555060008960a0015160018b60a0015151610f4f9190615adb565b81518110610f5f57610f5f615c2b565b60209101015160f81c60011490506000610f7b8887848d6134ce565b90995090508015610fc65760208088015160105460408051928352928201527f6ca648a381f22ead7e37773d934e64885dcf861fbfbb26c40354cbf0c4662d1a910160405180910390a15b50610fd688828c60200151613506565b6020808b015187820151604080518781526001600160601b038d16948101949094528415159084015284151560608401528b1515608084015290917faeb4b4786571e184246d39587f659abf0e26f41f6a3358692250382c0cdb47b79060a00160405180910390a3505050505050505b9392505050565b611055612f4a565b61105e81613659565b61107d5780604051635428d44960e01b8152600401610a50919061567f565b60008060008061108c86612bc2565b945094505093509350336001600160a01b0316826001600160a01b0316146110ef5760405162461bcd60e51b81526020600482015260166024820152752737ba1039bab139b1b934b83a34b7b71037bbb732b960511b6044820152606401610a50565b6110f8866113ff565b1561113e5760405162461bcd60e51b815260206004820152601660248201527550656e64696e6720726571756573742065786973747360501b6044820152606401610a50565b6040805160c0810182526001815260208082018990526001600160a01b03851682840152606082018490526001600160601b038088166080840152861660a08301529151909160009161119391849101615733565b60405160208183030381529060405290506111ad886136c5565b505060405163ce3f471960e01b81526001600160a01b0388169063ce3f4719906001600160601b038816906111e6908590600401615720565b6000604051808303818588803b1580156111ff57600080fd5b505af1158015611213573d6000803e3d6000fd5b50506002546001600160a01b03161580159350915061123c905057506001600160601b03861615155b156113065760025460405163a9059cbb60e01b81526001600160a01b039091169063a9059cbb90611273908a908a906004016156c6565b602060405180830381600087803b15801561128d57600080fd5b505af11580156112a1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112c591906151d0565b6113065760405162461bcd60e51b8152602060048201526012602482015271696e73756666696369656e742066756e647360701b6044820152606401610a50565b600c805460ff60301b1916600160301b17905560005b83518110156113ad5783818151811061133757611337615c2b565b60200260200101516001600160a01b0316638ea98117896040518263ffffffff1660e01b815260040161136a919061567f565b600060405180830381600087803b15801561138457600080fd5b505af1158015611398573d6000803e3d6000fd5b50505050806113a690615b93565b905061131c565b50600c805460ff60301b191690556040517fd63ca8cb945956747ee69bfdc3ea754c24a4caf7418db70e46052f7850be4187906113ed9089908b90615693565b60405180910390a15050505050505050565b6000818152600560205260408120600201805480611421575060009392505050565b600e5460005b8281101561150357600084828154811061144357611443615c2b565b60009182526020822001546001600160a01b031691505b838110156114f05760006114b8600e838154811061147a5761147a615c2b565b60009182526020808320909101546001600160a01b03871683526004825260408084208e855290925291205485908c906001600160401b031661386d565b506000818152600f6020526040902054909150156114df5750600198975050505050505050565b506114e981615b93565b905061145a565b5050806114fc90615b93565b9050611427565b50600095945050505050565b611517612f4a565b61151f612e94565b6002546001600160a01b03166115485760405163c1f0c0a160e01b815260040160405180910390fd5b600b546001600160601b031661157157604051631e9acf1760e31b815260040160405180910390fd5b600b80546001600160601b0316908190600061158d8380615b17565b92506101000a8154816001600160601b0302191690836001600160601b0316021790555080600a60008282829054906101000a90046001600160601b03166115d59190615b17565b82546001600160601b039182166101009390930a92830291909202199091161790555060025460405163a9059cbb60e01b81526001600160a01b039091169063a9059cbb9061162a90859085906004016156c6565b602060405180830381600087803b15801561164457600080fd5b505af1158015611658573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061167c91906151d0565b61169957604051631e9acf1760e31b815260040160405180910390fd5b5050565b6116a5612e94565b6116ae81613659565b156116ce578060405163ac8a27ef60e01b8152600401610a50919061567f565b601180546001810182556000919091527f31ecc21a745e3968a04e9570e4425bc18fa8019c68028196b546d1669c200c680180546001600160a01b0319166001600160a01b0383161790556040517fb7cabbfc11e66731fc77de0444614282023bcbd41d16781c753a431d0af016259061174990839061567f565b60405180910390a150565b61175c612e94565b6002546001600160a01b03161561178657604051631688c53760e11b815260040160405180910390fd5b600280546001600160a01b039384166001600160a01b03199182161790915560038054929093169116179055565b6001546001600160a01b031633146118075760405162461bcd60e51b815260206004820152601660248201527526bab9ba10313290383937b837b9b2b21037bbb732b960511b6044820152606401610a50565b60008054336001600160a01b0319808316821784556001805490911690556040516001600160a01b0390921692909183917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a350565b611866612e94565b60408051808201825260009161189591908590600290839083908082843760009201919091525061286b915050565b6000818152600d602052604090205490915060ff16156118cb57604051634a0b8fa760e01b815260048101829052602401610a50565b60408051808201825260018082526001600160401b0385811660208085019182526000878152600d9091528581209451855492516001600160481b031990931690151568ffffffffffffffff00191617610100929093169190910291909117909255600e805491820181559091527fbb7b4a454dc3493923482f07822329ed19e8244eff582cc204f8554c3620c3fd01829055517f9b911b2c240bfbef3b6a8f7ed6ee321d1258bb2a3fe6becab52ac1cd3210afd390610a179083908590615709565b611996612e94565b600a544790600160601b90046001600160601b0316818111156119d6576040516354ced18160e11b81526004810182905260248101839052604401610a50565b81811015610c495760006119ea8284615adb565b90506000846001600160a01b03168260405160006040518083038185875af1925050503d8060008114611a39576040519150601f19603f3d011682016040523d82523d6000602084013e611a3e565b606091505b5050905080611a605760405163950b247960e01b815260040160405180910390fd5b7f4aed7c8eed0496c8c19ea2681fcca25741c1602342e38b045d9f1e8e905d2e9c8583604051611a91929190615693565b60405180910390a15050505050565b611aa8612f4a565b6000818152600560205260409020546001600160a01b0316611add57604051630fb532db60e11b815260040160405180910390fd5b60008181526006602052604090208054600160601b90046001600160601b0316903490600c611b0c8385615a86565b92506101000a8154816001600160601b0302191690836001600160601b0316021790555034600a600c8282829054906101000a90046001600160601b0316611b549190615a86565b92506101000a8154816001600160601b0302191690836001600160601b03160217905550817f7603b205d03651ee812f803fccde89f1012e545a9c99f0abfea9cedd0fd8e902823484611ba79190615a27565b604080519283526020830191909152015b60405180910390a25050565b6000611bce612f4a565b602080830135600081815260059092526040909120546001600160a01b0316611c0a57604051630fb532db60e11b815260040160405180910390fd5b33600090815260046020908152604080832084845291829052909120546001600160401b031680611c525782336040516379bfd40160e01b8152600401610a509291906157a8565b600c5461ffff16611c696060870160408801615392565b61ffff161080611c8c575060c8611c866060870160408801615392565b61ffff16115b15611cd257611ca16060860160408701615392565b600c5460405163539c34bb60e11b815261ffff92831660048201529116602482015260c86044820152606401610a50565b600c5462010000900463ffffffff16611cf16080870160608801615495565b63ffffffff161115611d4157611d0d6080860160608701615495565b600c54604051637aebf00f60e11b815263ffffffff9283166004820152620100009091049091166024820152604401610a50565b6101f4611d5460a0870160808801615495565b63ffffffff161115611d9a57611d7060a0860160808701615495565b6040516311ce1afb60e21b815263ffffffff90911660048201526101f46024820152604401610a50565b611da381615bae565b90506000611db4863533868561386d565b90955090506000611dd8611dd3611dce60a08a018a615935565b6138e6565b613963565b905085611de36139d4565b86611df460808b0160608c01615495565b611e0460a08c0160808d01615495565b3386604051602001611e1c9796959493929190615833565b60405160208183030381529060405280519060200120600f600088815260200190815260200160002081905550336001600160a01b03168588600001357feb0e3652e0f44f417695e6e90f2f42c99b65cd7169074c5a654b16b9748c3a4e89868c6040016020810190611e8f9190615392565b8d6060016020810190611ea29190615495565b8e6080016020810190611eb59190615495565b89604051611ec8969594939291906157f4565b60405180910390a450506000928352602091909152604090912080546001600160401b0319166001600160401b039092169190911790555b919050565b6000611f0f612f4a565b6007546001600160401b031633611f27600143615adb565b6040516001600160601b0319606093841b81166020830152914060348201523090921b1660548201526001600160c01b031960c083901b16606882015260700160408051601f1981840301815291905280516020909101209150611f8c816001615a3f565b600780546001600160401b0319166001600160401b03928316179055604080516000808252608082018352602080830182815283850183815260608086018581528a86526006855287862093518454935191516001600160601b039182166001600160c01b031990951694909417600160601b9190921602176001600160c01b0316600160c01b9290981691909102969096179055835194850184523385528481018281528585018481528884526005835294909220855181546001600160a01b03199081166001600160a01b03928316178355935160018301805490951691161790925592518051929493919261208a9260028501920190614da0565b5061209a91506008905084613a64565b50827f1d3015d7ba850fa198dc7b1a3f5d42779313a681035f77c8c03764c61005518d336040516120cb919061567f565b60405180910390a2505090565b6120e0612f4a565b6002546001600160a01b0316331461210b576040516344b0e3c360e01b815260040160405180910390fd5b6020811461212c57604051638129bbcd60e01b815260040160405180910390fd5b600061213a828401846151ed565b6000818152600560205260409020549091506001600160a01b031661217257604051630fb532db60e11b815260040160405180910390fd5b600081815260066020526040812080546001600160601b0316918691906121998385615a86565b92506101000a8154816001600160601b0302191690836001600160601b0316021790555084600a60008282829054906101000a90046001600160601b03166121e19190615a86565b92506101000a8154816001600160601b0302191690836001600160601b03160217905550817f1ced9348ff549fceab2ac57cd3a9de38edaaab274b725ee82c23e8fc8c4eec7a8287846122349190615a27565b6040805192835260208301919091520160405180910390a2505050505050565b61225c612e94565b60c861ffff8a1611156122965760405163539c34bb60e11b815261ffff8a1660048201819052602482015260c86044820152606401610a50565b600085136122ba576040516321ea67b360e11b815260048101869052602401610a50565b8363ffffffff168363ffffffff1611156122f7576040516313c06e5960e11b815263ffffffff808516600483015285166024820152604401610a50565b609b60ff8316111561232857604051631d66288d60e11b815260ff83166004820152609b6024820152604401610a50565b609b60ff8216111561235957604051631d66288d60e11b815260ff82166004820152609b6024820152604401610a50565b604080516101208101825261ffff8b1680825263ffffffff808c16602084018190526000848601528b8216606085018190528b8316608086018190528a841660a08701819052938a1660c0870181905260ff808b1660e08901819052908a16610100909801889052600c8054600160c01b90990260ff60c01b19600160b81b9093029290921661ffff60b81b19600160981b90940263ffffffff60981b19600160781b9099029890981667ffffffffffffffff60781b19600160581b90960263ffffffff60581b19600160381b9098029790971668ffffffffffffffffff60301b196201000090990265ffffffffffff19909c16909a179a909a1796909616979097179390931791909116959095179290921793909316929092179190911790556010869055517f2c6b6b12413678366b05b145c5f00745bdd00e739131ab5de82484a50c9d78b69061250d908b908b908b908b908b908b908b908b908b9061ffff99909916895263ffffffff97881660208a0152958716604089015293861660608801526080870192909252841660a086015290921660c084015260ff91821660e0840152166101008201526101200190565b60405180910390a1505050505050505050565b612528612e94565b6000818152600560205260409020546001600160a01b03168061255e57604051630fb532db60e11b815260040160405180910390fd5b6116998282612f75565b606060006125766008613a70565b905080841061259857604051631390f2a160e01b815260040160405180910390fd5b60006125a48486615a27565b9050818111806125b2575083155b6125bc57806125be565b815b905060006125cc8683615adb565b9050806001600160401b038111156125e6576125e6615c41565b60405190808252806020026020018201604052801561260f578160200160208202803683370190505b50935060005b8181101561265f5761263261262a8883615a27565b600890613a7a565b85828151811061264457612644615c2b565b602090810291909101015261265881615b93565b9050612615565b505050505b92915050565b612672612f4a565b6000818152600560205260409020546001600160a01b0316806126a857604051630fb532db60e11b815260040160405180910390fd5b6000828152600560205260409020600101546001600160a01b031633146126ff576000828152600560205260409081902060010154905163d084e97560e01b8152610a50916001600160a01b03169060040161567f565b600082815260056020526040908190208054336001600160a01b031991821681178355600190920180549091169055905183917fd4114ab6e9af9f597c52041f32d62dc57c5c4e4c0d4427006069635e216c938691611bb89185916156ac565b8161276981612ee9565b612771612f4a565b60008381526005602052604090206002018054606414156127a5576040516305a48e0f60e01b815260040160405180910390fd5b6001600160a01b038316600090815260046020908152604080832087845291829052909120546001600160401b0316156127e0575050505050565b600085815260208281526040808320805460016001600160401b0319909116811790915585549081018655858452919092200180546001600160a01b0319166001600160a01b0387161790555185907f1e980d04aa7648e205713e5e8ea3808672ac163d10936d36f91b2c88ac1575e19061285c90879061567f565b60405180910390a25050505050565b60008160405160200161287e91906156e8565b604051602081830303815290604052805190602001209050919050565b816128a581612ee9565b6128ad612f4a565b6128b6836113ff565b156128d457604051631685ecdd60e31b815260040160405180910390fd5b6001600160a01b03821660009081526004602090815260408083208684529091529020546001600160401b03166129225782826040516379bfd40160e01b8152600401610a509291906157a8565b60008381526005602090815260408083206002018054825181850281018501909352808352919290919083018282801561298557602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311612967575b5050505050905060006001825161299c9190615adb565b905060005b8251811015612aa657846001600160a01b03168382815181106129c6576129c6615c2b565b60200260200101516001600160a01b03161415612a965760008383815181106129f1576129f1615c2b565b6020026020010151905080600560008981526020019081526020016000206002018381548110612a2357612a23615c2b565b600091825260208083209190910180546001600160a01b0319166001600160a01b039490941693909317909255888152600590915260409020600201805480612a6e57612a6e615c15565b600082815260209020810160001990810180546001600160a01b031916905501905550612aa6565b612a9f81615b93565b90506129a1565b506001600160a01b03841660009081526004602090815260408083208884529091529081902080546001600160401b03191690555185907f32158c6058347c1601b2d12bc696ac6901d8a9a9aa3ba10c27ab0a983e8425a79061285c90879061567f565b600e8181548110612b1a57600080fd5b600091825260209091200154905081565b81612b3581612ee9565b612b3d612f4a565b600083815260056020526040902060018101546001600160a01b03848116911614612bbc576001810180546001600160a01b0319166001600160a01b03851617905560405184907f21a4dad170a6bf476c31bbcf4a16628295b0e450672eec25d7c93308e05344a190612bb390339087906156ac565b60405180910390a25b50505050565b600081815260056020526040812054819081906001600160a01b0316606081612bfe57604051630fb532db60e11b815260040160405180910390fd5b600086815260066020908152604080832054600583529281902060020180548251818502810185019093528083526001600160601b0380861695600160601b810490911694600160c01b9091046001600160401b0316938893929091839190830182828015612c9657602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311612c78575b505050505090509450945094509450945091939590929450565b612cb8612e94565b6002546001600160a01b0316612ce15760405163c1f0c0a160e01b815260040160405180910390fd5b6002546040516370a0823160e01b81526000916001600160a01b0316906370a0823190612d1290309060040161567f565b60206040518083038186803b158015612d2a57600080fd5b505afa158015612d3e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612d629190615206565b600a549091506001600160601b031681811115612d9c576040516354ced18160e11b81526004810182905260248101839052604401610a50565b81811015610c49576000612db08284615adb565b60025460405163a9059cbb60e01b81529192506001600160a01b03169063a9059cbb90612de39087908590600401615693565b602060405180830381600087803b158015612dfd57600080fd5b505af1158015612e11573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612e3591906151d0565b612e5257604051631f01ff1360e21b815260040160405180910390fd5b7f59bfc682b673f8cbf945f1e454df9334834abf7dfe7f92237ca29ecb9b4366008482604051610bf8929190615693565b612e8b612e94565b610a5981613a86565b6000546001600160a01b03163314612ee75760405162461bcd60e51b815260206004820152601660248201527527b7363c9031b0b63630b1363290313c9037bbb732b960511b6044820152606401610a50565b565b6000818152600560205260409020546001600160a01b031680612f1f57604051630fb532db60e11b815260040160405180910390fd5b336001600160a01b038216146116995780604051636c51fda960e11b8152600401610a50919061567f565b600c54600160301b900460ff1615612ee75760405163769dd35360e11b815260040160405180910390fd5b600080612f81846136c5565b60025491935091506001600160a01b031615801590612fa857506001600160601b03821615155b156130575760025460405163a9059cbb60e01b81526001600160a01b039091169063a9059cbb90612fe89086906001600160601b03871690600401615693565b602060405180830381600087803b15801561300257600080fd5b505af1158015613016573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061303a91906151d0565b61305757604051631e9acf1760e31b815260040160405180910390fd5b6000836001600160a01b0316826001600160601b031660405160006040518083038185875af1925050503d80600081146130ad576040519150601f19603f3d011682016040523d82523d6000602084013e6130b2565b606091505b50509050806130d45760405163950b247960e01b815260040160405180910390fd5b604080516001600160a01b03861681526001600160601b03808616602083015284169181019190915285907f8c74ce8b8cf87f5eb001275c8be27eb34ea2b62bfab6814fcc62192bb63e81c49060600161285c565b6040805160a08101825260006060820181815260808301829052825260208201819052918101919091526000613162846000015161286b565b6000818152600d602090815260409182902082518084019093525460ff811615158084526101009091046001600160401b031691830191909152919250906131c057604051631dfd6e1360e21b815260048101839052602401610a50565b60008286608001516040516020016131e2929190918252602082015260400190565b60408051601f1981840301815291815281516020928301206000818152600f9093529120549091508061322857604051631b44092560e11b815260040160405180910390fd5b85516020808801516040808a015160608b015160808c015160a08d01519351613257978a97909695910161588c565b60405160208183030381529060405280519060200120811461328c5760405163354a450b60e21b815260040160405180910390fd5b600061329b8760000151613b2a565b905080613373578651604051631d2827a760e31b81526001600160401b0390911660048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063e9413d389060240160206040518083038186803b15801561330d57600080fd5b505afa158015613321573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906133459190615206565b90508061337357865160405163175dadad60e01b81526001600160401b039091166004820152602401610a50565b6000886080015182604051602001613395929190918252602082015260400190565b6040516020818303038152906040528051906020012060001c905060006133bc8a83613c0c565b604080516060810182529788526020880196909652948601949094525092979650505050505050565b6000816001600160401b03163a111561342b57821561340e57506001600160401b038116612664565b3a8260405163435e532d60e11b8152600401610a50929190615709565b503a92915050565b6000806000631fe543e360e01b86856040516024016134539291906157d3565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b031990941693909317909252600c805460ff60301b1916600160301b1790559086015160808701519192506134b79163ffffffff9091169083613c77565b600c805460ff60301b191690559695505050505050565b60008083156134ed576134e2868685613cc3565b6000915091506134fd565b6134f8868685613dd4565b915091505b94509492505050565b600081815260066020526040902082156135c55780546001600160601b03600160601b909104811690851681101561355157604051631e9acf1760e31b815260040160405180910390fd5b61355b8582615b17565b8254600160601b600160c01b031916600160601b6001600160601b039283168102919091178455600b805488939192600c9261359b928692900416615a86565b92506101000a8154816001600160601b0302191690836001600160601b0316021790555050612bbc565b80546001600160601b039081169085168110156135f557604051631e9acf1760e31b815260040160405180910390fd5b6135ff8582615b17565b82546001600160601b0319166001600160601b03918216178355600b8054879260009161362e91859116615a86565b92506101000a8154816001600160601b0302191690836001600160601b031602179055505050505050565b601154600090815b818110156136bb57836001600160a01b03166011828154811061368657613686615c2b565b6000918252602090912001546001600160a01b031614156136ab575060019392505050565b6136b481615b93565b9050613661565b5060009392505050565b60008181526005602090815260408083206006909252822054600290910180546001600160601b0380841694600160601b90940416925b81811015613767576004600084838154811061371a5761371a615c2b565b60009182526020808320909101546001600160a01b031683528281019390935260409182018120898252909252902080546001600160401b031916905561376081615b93565b90506136fc565b50600085815260056020526040812080546001600160a01b0319908116825560018201805490911690559061379f6002830182614e05565b50506000858152600660205260408120556137bb600886613fc6565b506001600160601b0384161561380e57600a80548591906000906137e99084906001600160601b0316615b17565b92506101000a8154816001600160601b0302191690836001600160601b031602179055505b6001600160601b038316156138665782600a600c8282829054906101000a90046001600160601b03166138419190615b17565b92506101000a8154816001600160601b0302191690836001600160601b031602179055505b5050915091565b6040805160208082018790526001600160a01b03959095168183015260608101939093526001600160401b03919091166080808401919091528151808403909101815260a08301825280519084012060c083019490945260e0808301859052815180840390910181526101009092019052805191012091565b6040805160208101909152600081528161390f5750604080516020810190915260008152612664565b63125fa26760e31b6139218385615b37565b6001600160e01b0319161461394957604051632923fee760e11b815260040160405180910390fd5b61395682600481866159fd565b810190611046919061521f565b60607f92fd13387c7fe7befbc38d303d6468778fb9731bc4583f17d92989c6fcfdeaaa8260405160240161399c91511515815260200190565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b03199093169290921790915292915050565b6000466139e081613fd2565b15613a5d5760646001600160a01b031663a3b1b31d6040518163ffffffff1660e01b815260040160206040518083038186803b158015613a1f57600080fd5b505afa158015613a33573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613a579190615206565b91505090565b4391505090565b60006110468383613ff5565b6000612664825490565b60006110468383614044565b6001600160a01b038116331415613ad95760405162461bcd60e51b815260206004820152601760248201527621b0b73737ba103a3930b739b332b9103a379039b2b63360491b6044820152606401610a50565b600180546001600160a01b0319166001600160a01b0383811691821790925560008054604051929316917fed8889f560326eb138920d842192f0eb3dd22b4f139c87a2c57538e05bae12789190a350565b600046613b3681613fd2565b15613bfd57610100836001600160401b0316613b506139d4565b613b5a9190615adb565b1180613b765750613b696139d4565b836001600160401b031610155b15613b845750600092915050565b6040516315a03d4160e11b81526001600160401b0384166004820152606490632b407a82906024015b60206040518083038186803b158015613bc557600080fd5b505afa158015613bd9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110469190615206565b50506001600160401b03164090565b6000613c408360000151846020015185604001518660600151868860a001518960c001518a60e001518b610100015161406e565b60038360200151604051602001613c589291906157bf565b60408051601f1981840301815291905280516020909101209392505050565b60005a611388811015613c8957600080fd5b611388810390508460408204820311613ca157600080fd5b50823b613cad57600080fd5b60008083516020850160008789f1949350505050565b600080613d066000368080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061428a92505050565b905060005a600c54613d26908890600160581b900463ffffffff16615a27565b613d309190615adb565b613d3a9086615abc565b600c54909150600090613d5f90600160781b900463ffffffff1664e8d4a51000615abc565b90508415613dab57600c548190606490600160b81b900460ff16613d838587615a27565b613d8d9190615abc565b613d979190615aa8565b613da19190615a27565b9350505050611046565b600c548190606490613dc790600160b81b900460ff1682615a61565b60ff16613d838587615a27565b600080600080613de2614358565b9150915060008213613e0a576040516321ea67b360e11b815260048101839052602401610a50565b6000613e4c6000368080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061428a92505050565b9050600083825a600c54613e6e908d90600160581b900463ffffffff16615a27565b613e789190615adb565b613e82908b615abc565b613e8c9190615a27565b613e9e90670de0b6b3a7640000615abc565b613ea89190615aa8565b600c54909150600090613ed19063ffffffff600160981b8204811691600160781b900416615af2565b613ee69063ffffffff1664e8d4a51000615abc565b9050600085613efd83670de0b6b3a7640000615abc565b613f079190615aa8565b905060008915613f4857600c548290606490613f2d90600160c01b900460ff1687615abc565b613f379190615aa8565b613f419190615a27565b9050613f88565b600c548290606490613f6490600160c01b900460ff1682615a61565b613f719060ff1687615abc565b613f7b9190615aa8565b613f859190615a27565b90505b6b033b2e3c9fd0803ce8000000811115613fb55760405163e80fa38160e01b815260040160405180910390fd5b9b949a509398505050505050505050565b6000611046838361442e565b600061a4b1821480613fe6575062066eed82145b8061266457505062066eee1490565b600081815260018301602052604081205461403c57508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155612664565b506000612664565b600082600001828154811061405b5761405b615c2b565b9060005260206000200154905092915050565b61407789614521565b6140c05760405162461bcd60e51b815260206004820152601a6024820152797075626c6963206b6579206973206e6f74206f6e20637572766560301b6044820152606401610a50565b6140c988614521565b61410d5760405162461bcd60e51b815260206004820152601560248201527467616d6d61206973206e6f74206f6e20637572766560581b6044820152606401610a50565b61411683614521565b6141625760405162461bcd60e51b815260206004820152601d60248201527f6347616d6d615769746e657373206973206e6f74206f6e2063757276650000006044820152606401610a50565b61416b82614521565b6141b75760405162461bcd60e51b815260206004820152601c60248201527f73486173685769746e657373206973206e6f74206f6e206375727665000000006044820152606401610a50565b6141c3878a88876145e4565b61420b5760405162461bcd60e51b81526020600482015260196024820152786164647228632a706b2b732a6729213d5f755769746e65737360381b6044820152606401610a50565b60006142178a87614707565b9050600061422a898b878b86898961476b565b9050600061423b838d8d8a8661488a565b9050808a1461427c5760405162461bcd60e51b815260206004820152600d60248201526c34b73b30b634b210383937b7b360991b6044820152606401610a50565b505050505050505050505050565b60004661429681613fd2565b156142d557606c6001600160a01b031663c6f7de0e6040518163ffffffff1660e01b815260040160206040518083038186803b158015613bc557600080fd5b6142de816148ca565b1561434f57600f602160991b016001600160a01b03166349948e0e84604051806080016040528060488152602001615c7b604891396040516020016143249291906155d5565b6040516020818303038152906040526040518263ffffffff1660e01b8152600401613bad9190615720565b50600092915050565b600c5460035460408051633fabe5a360e21b815290516000938493600160381b90910463ffffffff169284926001600160a01b039092169163feaf968c9160048082019260a092909190829003018186803b1580156143b657600080fd5b505afa1580156143ca573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906143ee91906154b0565b50919650909250505063ffffffff82161580159061441a57506144118142615adb565b8263ffffffff16105b925082156144285760105493505b50509091565b60008181526001830160205260408120548015614517576000614452600183615adb565b855490915060009061446690600190615adb565b90508181146144cb57600086600001828154811061448657614486615c2b565b90600052602060002001549050808760000184815481106144a9576144a9615c2b565b6000918252602080832090910192909255918252600188019052604090208390555b85548690806144dc576144dc615c15565b600190038181906000526020600020016000905590558560010160008681526020019081526020016000206000905560019350505050612664565b6000915050612664565b80516000906401000003d0191161456f5760405162461bcd60e51b8152602060048201526012602482015271696e76616c696420782d6f7264696e61746560701b6044820152606401610a50565b60208201516401000003d019116145bd5760405162461bcd60e51b8152602060048201526012602482015271696e76616c696420792d6f7264696e61746560701b6044820152606401610a50565b60208201516401000003d0199080096145dd8360005b6020020151614904565b1492915050565b60006001600160a01b03821661462a5760405162461bcd60e51b815260206004820152600b60248201526a626164207769746e65737360a81b6044820152606401610a50565b60208401516000906001161561464157601c614644565b601b5b9050600070014551231950b75fc4402da1732fc9bebe1985876000602002015109865170014551231950b75fc4402da1732fc9bebe19918203925060009190890987516040805160008082526020820180845287905260ff88169282019290925260608101929092526080820183905291925060019060a0016020604051602081039080840390855afa1580156146df573d6000803e3d6000fd5b5050604051601f1901516001600160a01b039081169088161495505050505050949350505050565b61470f614e23565b61473c600184846040516020016147289392919061565e565b604051602081830303815290604052614928565b90505b61474881614521565b6126645780516040805160208101929092526147649101614728565b905061473f565b614773614e23565b825186516401000003d01990819006910614156147d25760405162461bcd60e51b815260206004820152601e60248201527f706f696e747320696e2073756d206d7573742062652064697374696e637400006044820152606401610a50565b6147dd878988614976565b6148225760405162461bcd60e51b8152602060048201526016602482015275119a5c9cdd081b5d5b0818da1958dac819985a5b195960521b6044820152606401610a50565b61482d848685614976565b6148735760405162461bcd60e51b815260206004820152601760248201527614d958dbdb99081b5d5b0818da1958dac819985a5b1959604a1b6044820152606401610a50565b61487e868484614a9e565b98975050505050505050565b6000600286868685876040516020016148a896959493929190615604565b60408051601f1981840301815291905280516020909101209695505050505050565b6000600a8214806148dc57506101a482145b806148e9575062aa37dc82145b806148f5575061210582145b8061266457505062014a331490565b6000806401000003d01980848509840990506401000003d019600782089392505050565b614930614e23565b61493982614b61565b815261494e6149498260006145d3565b614b9c565b602082018190526002900660011415611f00576020810180516401000003d019039052919050565b6000826149b35760405162461bcd60e51b815260206004820152600b60248201526a3d32b9379039b1b0b630b960a91b6044820152606401610a50565b835160208501516000906149c990600290615bd5565b156149d557601c6149d8565b601b5b9050600070014551231950b75fc4402da1732fc9bebe198387096040805160008082526020820180845281905260ff86169282019290925260608101869052608081018390529192509060019060a0016020604051602081039080840390855afa158015614a4a573d6000803e3d6000fd5b505050602060405103519050600086604051602001614a6991906155c3565b60408051601f1981840301815291905280516020909101206001600160a01b0392831692169190911498975050505050505050565b614aa6614e23565b835160208086015185519186015160009384938493614ac793909190614bbc565b919450925090506401000003d019858209600114614b235760405162461bcd60e51b815260206004820152601960248201527834b73b2d1036bab9ba1031329034b73b32b939b29037b3103d60391b6044820152606401610a50565b60405180604001604052806401000003d01980614b4257614b42615bff565b87860981526020016401000003d0198785099052979650505050505050565b805160208201205b6401000003d0198110611f0057604080516020808201939093528151808203840181529082019091528051910120614b69565b6000612664826002614bb56401000003d0196001615a27565b901c614c9c565b60008080600180826401000003d019896401000003d019038808905060006401000003d0198b6401000003d019038a0890506000614bfc83838585614d33565b9098509050614c0d88828e88614d57565b9098509050614c1e88828c87614d57565b90985090506000614c318d878b85614d57565b9098509050614c4288828686614d33565b9098509050614c5388828e89614d57565b9098509050818114614c88576401000003d019818a0998506401000003d01982890997506401000003d0198183099650614c8c565b8196505b5050505050509450945094915050565b600080614ca7614e41565b6020808252818101819052604082015260608101859052608081018490526401000003d01960a0820152614cd9614e5f565b60208160c0846005600019fa925082614d295760405162461bcd60e51b81526020600482015260126024820152716269674d6f64457870206661696c7572652160701b6044820152606401610a50565b5195945050505050565b6000806401000003d0198487096401000003d0198487099097909650945050505050565b600080806401000003d019878509905060006401000003d01987876401000003d019030990506401000003d0198183086401000003d01986890990999098509650505050505050565b828054828255906000526020600020908101928215614df5579160200282015b82811115614df557825182546001600160a01b0319166001600160a01b03909116178255602090920191600190910190614dc0565b50614e01929150614e7d565b5090565b5080546000825590600052602060002090810190610a599190614e7d565b60405180604001604052806002906020820280368337509192915050565b6040518060c001604052806006906020820280368337509192915050565b60405180602001604052806001906020820280368337509192915050565b5b80821115614e015760008155600101614e7e565b8035611f0081615c57565b806040810183101561266457600080fd5b600082601f830112614ebf57600080fd5b604051604081018181106001600160401b0382111715614ee157614ee1615c41565b8060405250808385604086011115614ef857600080fd5b60005b6002811015614f1a578135835260209283019290910190600101614efb565b509195945050505050565b8035611f0081615c6c565b600060c08284031215614f4257600080fd5b614f4a615982565b9050614f5582615044565b815260208083013581830152614f6d60408401615030565b6040830152614f7e60608401615030565b60608301526080830135614f9181615c57565b608083015260a08301356001600160401b0380821115614fb057600080fd5b818501915085601f830112614fc457600080fd5b813581811115614fd657614fd6615c41565b614fe8601f8201601f191685016159cd565b91508082528684828501011115614ffe57600080fd5b80848401858401376000848284010152508060a085015250505092915050565b803561ffff81168114611f0057600080fd5b803563ffffffff81168114611f0057600080fd5b80356001600160401b0381168114611f0057600080fd5b803560ff81168114611f0057600080fd5b805169ffffffffffffffffffff81168114611f0057600080fd5b60006020828403121561509857600080fd5b813561104681615c57565b600080604083850312156150b657600080fd5b82356150c181615c57565b915060208301356150d181615c57565b809150509250929050565b600080600080606085870312156150f257600080fd5b84356150fd81615c57565b93506020850135925060408501356001600160401b038082111561512057600080fd5b818701915087601f83011261513457600080fd5b81358181111561514357600080fd5b88602082850101111561515557600080fd5b95989497505060200194505050565b60006040828403121561517657600080fd5b6110468383614e9d565b6000806060838503121561519357600080fd5b61519d8484614e9d565b91506151ab60408401615044565b90509250929050565b6000604082840312156151c657600080fd5b6110468383614eae565b6000602082840312156151e257600080fd5b815161104681615c6c565b6000602082840312156151ff57600080fd5b5035919050565b60006020828403121561521857600080fd5b5051919050565b60006020828403121561523157600080fd5b604051602081018181106001600160401b038211171561525357615253615c41565b604052823561526181615c6c565b81529392505050565b60008060008385036101e081121561528157600080fd5b6101a08082121561529157600080fd5b6152996159aa565b91506152a58787614eae565b82526152b48760408801614eae565b60208301526080860135604083015260a0860135606083015260c086013560808301526152e360e08701614e92565b60a08301526101006152f788828901614eae565b60c084015261530a886101408901614eae565b60e0840152610180870135908301529093508401356001600160401b0381111561533357600080fd5b61533f86828701614f30565b92505061534f6101c08501614f25565b90509250925092565b60006020828403121561536a57600080fd5b81356001600160401b0381111561538057600080fd5b820160c0818503121561104657600080fd5b6000602082840312156153a457600080fd5b6110468261501e565b60008060008060008060008060006101208a8c0312156153cc57600080fd5b6153d58a61501e565b98506153e360208b01615030565b97506153f160408b01615030565b96506153ff60608b01615030565b955060808a0135945061541460a08b01615030565b935061542260c08b01615030565b925061543060e08b0161505b565b915061543f6101008b0161505b565b90509295985092959850929598565b6000806040838503121561546157600080fd5b8235915060208301356150d181615c57565b6000806040838503121561548657600080fd5b50508035926020909101359150565b6000602082840312156154a757600080fd5b61104682615030565b600080600080600060a086880312156154c857600080fd5b6154d18661506c565b94506020860151935060408601519250606086015191506154f46080870161506c565b90509295509295909350565b600081518084526020808501945080840160005b838110156155395781516001600160a01b031687529582019590820190600101615514565b509495945050505050565b8060005b6002811015612bbc578151845260209384019390910190600101615548565b600081518084526020808501945080840160005b838110156155395781518752958201959082019060010161557b565b600081518084526155af816020860160208601615b67565b601f01601f19169290920160200192915050565b6155cd8183615544565b604001919050565b600083516155e7818460208801615b67565b8351908301906155fb818360208801615b67565b01949350505050565b8681526156146020820187615544565b6156216060820186615544565b61562e60a0820185615544565b61563b60e0820184615544565b60609190911b6001600160601b0319166101208201526101340195945050505050565b83815261566e6020820184615544565b606081019190915260800192915050565b6001600160a01b0391909116815260200190565b6001600160a01b03929092168252602082015260400190565b6001600160a01b0392831681529116602082015260400190565b6001600160a01b039290921682526001600160601b0316602082015260400190565b604081016126648284615544565b6020815260006110466020830184615567565b9182526001600160401b0316602082015260400190565b6020815260006110466020830184615597565b6020815260ff82511660208201526020820151604082015260018060a01b0360408301511660608201526000606083015160c0608084015261577860e0840182615500565b60808501516001600160601b0390811660a0868101919091529095015190941660c0909301929092525090919050565b9182526001600160a01b0316602082015260400190565b828152606081016110466020830184615544565b8281526040602082015260006157ec6040830184615567565b949350505050565b86815285602082015261ffff85166040820152600063ffffffff808616606084015280851660808401525060c060a083015261487e60c0830184615597565b878152602081018790526040810186905263ffffffff8581166060830152841660808201526001600160a01b03831660a082015260e060c0820181905260009061587f90830184615597565b9998505050505050505050565b8781526001600160401b03871660208201526040810186905263ffffffff8581166060830152841660808201526001600160a01b03831660a082015260e060c0820181905260009061587f90830184615597565b6001600160601b038681168252851660208201526001600160401b03841660408201526001600160a01b038316606082015260a06080820181905260009061592a90830184615500565b979650505050505050565b6000808335601e1984360301811261594c57600080fd5b8301803591506001600160401b0382111561596657600080fd5b60200191503681900382131561597b57600080fd5b9250929050565b60405160c081016001600160401b03811182821017156159a4576159a4615c41565b60405290565b60405161012081016001600160401b03811182821017156159a4576159a4615c41565b604051601f8201601f191681016001600160401b03811182821017156159f5576159f5615c41565b604052919050565b60008085851115615a0d57600080fd5b83861115615a1a57600080fd5b5050820193919092039150565b60008219821115615a3a57615a3a615be9565b500190565b60006001600160401b038083168185168083038211156155fb576155fb615be9565b600060ff821660ff84168060ff03821115615a7e57615a7e615be9565b019392505050565b60006001600160601b038281168482168083038211156155fb576155fb615be9565b600082615ab757615ab7615bff565b500490565b6000816000190483118215151615615ad657615ad6615be9565b500290565b600082821015615aed57615aed615be9565b500390565b600063ffffffff83811690831681811015615b0f57615b0f615be9565b039392505050565b60006001600160601b0383811690831681811015615b0f57615b0f615be9565b6001600160e01b03198135818116916004851015615b5f5780818660040360031b1b83161692505b505092915050565b60005b83811015615b82578181015183820152602001615b6a565b83811115612bbc5750506000910152565b6000600019821415615ba757615ba7615be9565b5060010190565b60006001600160401b0380831681811415615bcb57615bcb615be9565b6001019392505050565b600082615be457615be4615bff565b500690565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052601260045260246000fd5b634e487b7160e01b600052603160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6001600160a01b0381168114610a5957600080fd5b8015158114610a5957600080fdfe307866666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666a164736f6c6343000806000a", ->>>>>>> develop + Bin: "0x60a06040523480156200001157600080fd5b5060405162005ee138038062005ee1833981016040819052620000349162000183565b33806000816200008b5760405162461bcd60e51b815260206004820152601860248201527f43616e6e6f7420736574206f776e657220746f207a65726f000000000000000060448201526064015b60405180910390fd5b600080546001600160a01b0319166001600160a01b0384811691909117909155811615620000be57620000be81620000d7565b50505060601b6001600160601b031916608052620001b5565b6001600160a01b038116331415620001325760405162461bcd60e51b815260206004820152601760248201527f43616e6e6f74207472616e7366657220746f2073656c66000000000000000000604482015260640162000082565b600180546001600160a01b0319166001600160a01b0383811691821790925560008054604051929316917fed8889f560326eb138920d842192f0eb3dd22b4f139c87a2c57538e05bae12789190a350565b6000602082840312156200019657600080fd5b81516001600160a01b0381168114620001ae57600080fd5b9392505050565b60805160601c615d06620001db6000396000818161055001526132fa0152615d066000f3fe60806040526004361061021c5760003560e01c80638402595e11610124578063b2a7cac5116100a6578063b2a7cac514610732578063bec4c08c14610752578063caf70c4a14610772578063cb63179714610792578063d98e620e146107b2578063da2f2610146107d2578063dac83d2914610831578063dc311dd314610851578063e72f6e3014610882578063ee9d2d38146108a2578063f2fde38b146108cf57600080fd5b80638402595e146105c757806386fe91c7146105e75780638da5cb5b1461060757806395b55cfc146106255780639b1c385e146106385780639d40a6fd14610658578063a21a23e414610690578063a4c0ed36146106a5578063a63e0bfb146106c5578063aa433aff146106e5578063aefb212f1461070557600080fd5b8063405b84fa116101ad578063405b84fa1461044e57806340d6bb821461046e57806341af6c871461049957806351cff8d9146104c95780635d06b4ab146104e957806364d51a2a14610509578063659827441461051e578063689c45171461053e57806372e9d5651461057257806379ba5097146105925780637a5a2aef146105a757600080fd5b806304104edb14610221578063043bd6ae14610243578063088070f51461026c57806308821d581461033a5780630ae095401461035a57806315c48b841461037a57806318e3dd27146103a25780631b6b6d23146103e15780632f622e6b1461040e578063301f42e91461042e575b600080fd5b34801561022d57600080fd5b5061024161023c3660046150bd565b6108ef565b005b34801561024f57600080fd5b5061025960105481565b6040519081526020015b60405180910390f35b34801561027857600080fd5b50600c546102dd9061ffff81169063ffffffff62010000820481169160ff600160301b8204811692600160381b8304811692600160581b8104821692600160781b8204831692600160981b83041691600160b81b8104821691600160c01b9091041689565b6040805161ffff909a168a5263ffffffff98891660208b01529615159689019690965293861660608801529185166080870152841660a08601529290921660c084015260ff91821660e08401521661010082015261012001610263565b34801561034657600080fd5b5061024161035536600461519b565b610a5c565b34801561036657600080fd5b50610241610375366004615485565b610c06565b34801561038657600080fd5b5061038f60c881565b60405161ffff9091168152602001610263565b3480156103ae57600080fd5b50600a546103c990600160601b90046001600160601b031681565b6040516001600160601b039091168152602001610263565b3480156103ed57600080fd5b50600254610401906001600160a01b031681565b60405161026391906156b6565b34801561041a57600080fd5b506102416104293660046150bd565b610c4e565b34801561043a57600080fd5b506103c96104493660046152a1565b610d9a565b34801561045a57600080fd5b50610241610469366004615485565b61104d565b34801561047a57600080fd5b506104846101f481565b60405163ffffffff9091168152602001610263565b3480156104a557600080fd5b506104b96104b4366004615224565b6113ff565b6040519015158152602001610263565b3480156104d557600080fd5b506102416104e43660046150bd565b611515565b3480156104f557600080fd5b506102416105043660046150bd565b6116a3565b34801561051557600080fd5b5061038f606481565b34801561052a57600080fd5b506102416105393660046150da565b61175a565b34801561054a57600080fd5b506104017f000000000000000000000000000000000000000000000000000000000000000081565b34801561057e57600080fd5b50600354610401906001600160a01b031681565b34801561059e57600080fd5b506102416117ba565b3480156105b357600080fd5b506102416105c23660046151b7565b611864565b3480156105d357600080fd5b506102416105e23660046150bd565b611994565b3480156105f357600080fd5b50600a546103c9906001600160601b031681565b34801561061357600080fd5b506000546001600160a01b0316610401565b610241610633366004615224565b611aa6565b34801561064457600080fd5b5061025961065336600461538f565b611bca565b34801561066457600080fd5b50600754610678906001600160401b031681565b6040516001600160401b039091168152602001610263565b34801561069c57600080fd5b50610259611f61565b3480156106b157600080fd5b506102416106c0366004615113565b612135565b3480156106d157600080fd5b506102416106e03660046153e4565b6122b1565b3480156106f157600080fd5b50610241610700366004615224565b61257d565b34801561071157600080fd5b506107256107203660046154aa565b6125c5565b604051610263919061572d565b34801561073e57600080fd5b5061024161074d366004615224565b6126c7565b34801561075e57600080fd5b5061024161076d366004615485565b6127bc565b34801561077e57600080fd5b5061025961078d3660046151eb565b6128ae565b34801561079e57600080fd5b506102416107ad366004615485565b6128de565b3480156107be57600080fd5b506102596107cd366004615224565b612b41565b3480156107de57600080fd5b506108126107ed366004615224565b600d6020526000908152604090205460ff81169061010090046001600160401b031682565b6040805192151583526001600160401b03909116602083015201610263565b34801561083d57600080fd5b5061024161084c366004615485565b612b62565b34801561085d57600080fd5b5061087161086c366004615224565b612bf9565b604051610263959493929190615917565b34801561088e57600080fd5b5061024161089d3660046150bd565b612ce7565b3480156108ae57600080fd5b506102596108bd366004615224565b600f6020526000908152604090205481565b3480156108db57600080fd5b506102416108ea3660046150bd565b612eba565b6108f7612ecb565b60115460005b81811015610a3457826001600160a01b03166011828154811061092257610922615c62565b6000918252602090912001546001600160a01b03161415610a2457601161094a600184615b12565b8154811061095a5761095a615c62565b600091825260209091200154601180546001600160a01b03909216918390811061098657610986615c62565b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060118054806109c5576109c5615c4c565b600082815260209020810160001990810180546001600160a01b03191690550190556040517ff80a1a97fd42251f3c33cda98635e7399253033a6774fe37cd3f650b5282af3790610a179085906156b6565b60405180910390a1505050565b610a2d81615bca565b90506108fd565b5081604051635428d44960e01b8152600401610a5091906156b6565b60405180910390fd5b50565b610a64612ecb565b604080518082018252600091610a939190849060029083908390808284376000920191909152506128ae915050565b6000818152600d602090815260409182902082518084019093525460ff811615158084526101009091046001600160401b03169183019190915291925090610af157604051631dfd6e1360e21b815260048101839052602401610a50565b6000828152600d6020526040812080546001600160481b0319169055600e54905b81811015610bc25783600e8281548110610b2e57610b2e615c62565b90600052602060002001541415610bb257600e610b4c600184615b12565b81548110610b5c57610b5c615c62565b9060005260206000200154600e8281548110610b7a57610b7a615c62565b600091825260209091200155600e805480610b9757610b97615c4c565b60019003818190600052602060002001600090559055610bc2565b610bbb81615bca565b9050610b12565b507f9b6868e0eb737bcd72205360baa6bfd0ba4e4819a33ade2db384e8a8025639a5838360200151604051610bf8929190615740565b60405180910390a150505050565b81610c1081612f20565b610c18612f81565b610c21836113ff565b15610c3f57604051631685ecdd60e31b815260040160405180910390fd5b610c498383612fac565b505050565b610c56612f81565b610c5e612ecb565b600b54600160601b90046001600160601b0316610c8e57604051631e9acf1760e31b815260040160405180910390fd5b600b8054600160601b90046001600160601b0316908190600c610cb18380615b4e565b92506101000a8154816001600160601b0302191690836001600160601b0316021790555080600a600c8282829054906101000a90046001600160601b0316610cf99190615b4e565b92506101000a8154816001600160601b0302191690836001600160601b031602179055506000826001600160a01b0316826001600160601b031660405160006040518083038185875af1925050503d8060008114610d73576040519150601f19603f3d011682016040523d82523d6000602084013e610d78565b606091505b5050905080610c495760405163950b247960e01b815260040160405180910390fd5b6000610da4612f81565b60005a9050610324361115610dd657604051630f28961b60e01b81523660048201526103246024820152604401610a50565b6000610de28686613160565b90506000610df88583600001516020015161341c565b60408301516060888101519293509163ffffffff16806001600160401b03811115610e2557610e25615c78565b604051908082528060200260200182016040528015610e4e578160200160208202803683370190505b50925060005b81811015610eb65760408051602081018590529081018290526060016040516020818303038152906040528051906020012060001c848281518110610e9b57610e9b615c62565b6020908102919091010152610eaf81615bca565b9050610e54565b5050602080850180516000908152600f9092526040822082905551610edc908a8561346a565b60208a8101516000908152600690915260409020805491925090601890610f1290600160c01b90046001600160401b0316615be5565b91906101000a8154816001600160401b0302191690836001600160401b0316021790555060008960a0015160018b60a0015151610f4f9190615b12565b81518110610f5f57610f5f615c62565b60209101015160f81c60011490506000610f7b8887848d613505565b90995090508015610fc65760208088015160105460408051928352928201527f6ca648a381f22ead7e37773d934e64885dcf861fbfbb26c40354cbf0c4662d1a910160405180910390a15b50610fd688828c6020015161353d565b6020808b015187820151604080518781526001600160601b038d16948101949094528415159084015284151560608401528b1515608084015290917faeb4b4786571e184246d39587f659abf0e26f41f6a3358692250382c0cdb47b79060a00160405180910390a3505050505050505b9392505050565b611055612f81565b61105e81613690565b61107d5780604051635428d44960e01b8152600401610a5091906156b6565b60008060008061108c86612bf9565b945094505093509350336001600160a01b0316826001600160a01b0316146110ef5760405162461bcd60e51b81526020600482015260166024820152752737ba1039bab139b1b934b83a34b7b71037bbb732b960511b6044820152606401610a50565b6110f8866113ff565b1561113e5760405162461bcd60e51b815260206004820152601660248201527550656e64696e6720726571756573742065786973747360501b6044820152606401610a50565b6040805160c0810182526001815260208082018990526001600160a01b03851682840152606082018490526001600160601b038088166080840152861660a0830152915190916000916111939184910161576a565b60405160208183030381529060405290506111ad886136fc565b505060405163ce3f471960e01b81526001600160a01b0388169063ce3f4719906001600160601b038816906111e6908590600401615757565b6000604051808303818588803b1580156111ff57600080fd5b505af1158015611213573d6000803e3d6000fd5b50506002546001600160a01b03161580159350915061123c905057506001600160601b03861615155b156113065760025460405163a9059cbb60e01b81526001600160a01b039091169063a9059cbb90611273908a908a906004016156fd565b602060405180830381600087803b15801561128d57600080fd5b505af11580156112a1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112c59190615207565b6113065760405162461bcd60e51b8152602060048201526012602482015271696e73756666696369656e742066756e647360701b6044820152606401610a50565b600c805460ff60301b1916600160301b17905560005b83518110156113ad5783818151811061133757611337615c62565b60200260200101516001600160a01b0316638ea98117896040518263ffffffff1660e01b815260040161136a91906156b6565b600060405180830381600087803b15801561138457600080fd5b505af1158015611398573d6000803e3d6000fd5b50505050806113a690615bca565b905061131c565b50600c805460ff60301b191690556040517fd63ca8cb945956747ee69bfdc3ea754c24a4caf7418db70e46052f7850be4187906113ed9089908b906156ca565b60405180910390a15050505050505050565b6000818152600560205260408120600201805480611421575060009392505050565b600e5460005b8281101561150957600084828154811061144357611443615c62565b60009182526020822001546001600160a01b031691505b838110156114f65760006114be600e838154811061147a5761147a615c62565b60009182526020808320909101546001600160a01b03871683526004825260408084208e855290925291205485908c906001600160401b03610100909104166138a4565b506000818152600f6020526040902054909150156114e55750600198975050505050505050565b506114ef81615bca565b905061145a565b50508061150290615bca565b9050611427565b50600095945050505050565b61151d612f81565b611525612ecb565b6002546001600160a01b031661154e5760405163c1f0c0a160e01b815260040160405180910390fd5b600b546001600160601b031661157757604051631e9acf1760e31b815260040160405180910390fd5b600b80546001600160601b031690819060006115938380615b4e565b92506101000a8154816001600160601b0302191690836001600160601b0316021790555080600a60008282829054906101000a90046001600160601b03166115db9190615b4e565b82546001600160601b039182166101009390930a92830291909202199091161790555060025460405163a9059cbb60e01b81526001600160a01b039091169063a9059cbb9061163090859085906004016156fd565b602060405180830381600087803b15801561164a57600080fd5b505af115801561165e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116829190615207565b61169f57604051631e9acf1760e31b815260040160405180910390fd5b5050565b6116ab612ecb565b6116b481613690565b156116d4578060405163ac8a27ef60e01b8152600401610a5091906156b6565b601180546001810182556000919091527f31ecc21a745e3968a04e9570e4425bc18fa8019c68028196b546d1669c200c680180546001600160a01b0319166001600160a01b0383161790556040517fb7cabbfc11e66731fc77de0444614282023bcbd41d16781c753a431d0af016259061174f9083906156b6565b60405180910390a150565b611762612ecb565b6002546001600160a01b03161561178c57604051631688c53760e11b815260040160405180910390fd5b600280546001600160a01b039384166001600160a01b03199182161790915560038054929093169116179055565b6001546001600160a01b0316331461180d5760405162461bcd60e51b815260206004820152601660248201527526bab9ba10313290383937b837b9b2b21037bbb732b960511b6044820152606401610a50565b60008054336001600160a01b0319808316821784556001805490911690556040516001600160a01b0390921692909183917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a350565b61186c612ecb565b60408051808201825260009161189b9190859060029083908390808284376000920191909152506128ae915050565b6000818152600d602052604090205490915060ff16156118d157604051634a0b8fa760e01b815260048101829052602401610a50565b60408051808201825260018082526001600160401b0385811660208085019182526000878152600d9091528581209451855492516001600160481b031990931690151568ffffffffffffffff00191617610100929093169190910291909117909255600e805491820181559091527fbb7b4a454dc3493923482f07822329ed19e8244eff582cc204f8554c3620c3fd01829055517f9b911b2c240bfbef3b6a8f7ed6ee321d1258bb2a3fe6becab52ac1cd3210afd390610a179083908590615740565b61199c612ecb565b600a544790600160601b90046001600160601b0316818111156119dc576040516354ced18160e11b81526004810182905260248101839052604401610a50565b81811015610c495760006119f08284615b12565b90506000846001600160a01b03168260405160006040518083038185875af1925050503d8060008114611a3f576040519150601f19603f3d011682016040523d82523d6000602084013e611a44565b606091505b5050905080611a665760405163950b247960e01b815260040160405180910390fd5b7f4aed7c8eed0496c8c19ea2681fcca25741c1602342e38b045d9f1e8e905d2e9c8583604051611a979291906156ca565b60405180910390a15050505050565b611aae612f81565b6000818152600560205260409020546001600160a01b0316611ae357604051630fb532db60e11b815260040160405180910390fd5b60008181526006602052604090208054600160601b90046001600160601b0316903490600c611b128385615abd565b92506101000a8154816001600160601b0302191690836001600160601b0316021790555034600a600c8282829054906101000a90046001600160601b0316611b5a9190615abd565b92506101000a8154816001600160601b0302191690836001600160601b03160217905550817f7603b205d03651ee812f803fccde89f1012e545a9c99f0abfea9cedd0fd8e902823484611bad9190615a5e565b604080519283526020830191909152015b60405180910390a25050565b6000611bd4612f81565b602080830135600081815260059092526040909120546001600160a01b0316611c1057604051630fb532db60e11b815260040160405180910390fd5b3360009081526004602090815260408083208484528083529281902081518083019092525460ff811615158083526101009091046001600160401b03169282019290925290611c765782336040516379bfd40160e01b8152600401610a509291906157df565b600c5461ffff16611c8d60608701604088016153c9565b61ffff161080611cb0575060c8611caa60608701604088016153c9565b61ffff16115b15611cf657611cc560608601604087016153c9565b600c5460405163539c34bb60e11b815261ffff92831660048201529116602482015260c86044820152606401610a50565b600c5462010000900463ffffffff16611d1560808701606088016154cc565b63ffffffff161115611d6557611d3160808601606087016154cc565b600c54604051637aebf00f60e11b815263ffffffff9283166004820152620100009091049091166024820152604401610a50565b6101f4611d7860a08701608088016154cc565b63ffffffff161115611dbe57611d9460a08601608087016154cc565b6040516311ce1afb60e21b815263ffffffff90911660048201526101f46024820152604401610a50565b806020018051611dcd90615be5565b6001600160401b031690526020810151600090611df090873590339087906138a4565b90955090506000611e14611e0f611e0a60a08a018a61596c565b61391d565b61399a565b905085611e1f613a0b565b86611e3060808b0160608c016154cc565b611e4060a08c0160808d016154cc565b3386604051602001611e58979695949392919061586a565b60405160208183030381529060405280519060200120600f600088815260200190815260200160002081905550336001600160a01b03168588600001357feb0e3652e0f44f417695e6e90f2f42c99b65cd7169074c5a654b16b9748c3a4e89868c6040016020810190611ecb91906153c9565b8d6060016020810190611ede91906154cc565b8e6080016020810190611ef191906154cc565b89604051611f049695949392919061582b565b60405180910390a450506000928352602091825260409092208251815492909301516001600160401b03166101000268ffffffffffffffff0019931515939093166001600160481b0319909216919091179190911790555b919050565b6000611f6b612f81565b6007546001600160401b031633611f83600143615b12565b6040516001600160601b0319606093841b81166020830152914060348201523090921b1660548201526001600160c01b031960c083901b16606882015260700160408051601f1981840301815291905280516020909101209150611fe8816001615a76565b6007805467ffffffffffffffff19166001600160401b03928316179055604080516000808252608082018352602080830182815283850183815260608086018581528a86526006855287862093518454935191516001600160601b039182166001600160c01b031990951694909417600160601b9190921602176001600160c01b0316600160c01b9290981691909102969096179055835194850184523385528481018281528585018481528884526005835294909220855181546001600160a01b03199081166001600160a01b0392831617835593516001830180549095169116179092559251805192949391926120e79260028501920190614dd7565b506120f791506008905084613a9b565b50827f1d3015d7ba850fa198dc7b1a3f5d42779313a681035f77c8c03764c61005518d3360405161212891906156b6565b60405180910390a2505090565b61213d612f81565b6002546001600160a01b03163314612168576040516344b0e3c360e01b815260040160405180910390fd5b6020811461218957604051638129bbcd60e01b815260040160405180910390fd5b600061219782840184615224565b6000818152600560205260409020549091506001600160a01b03166121cf57604051630fb532db60e11b815260040160405180910390fd5b600081815260066020526040812080546001600160601b0316918691906121f68385615abd565b92506101000a8154816001600160601b0302191690836001600160601b0316021790555084600a60008282829054906101000a90046001600160601b031661223e9190615abd565b92506101000a8154816001600160601b0302191690836001600160601b03160217905550817f1ced9348ff549fceab2ac57cd3a9de38edaaab274b725ee82c23e8fc8c4eec7a8287846122919190615a5e565b6040805192835260208301919091520160405180910390a2505050505050565b6122b9612ecb565b60c861ffff8a1611156122f35760405163539c34bb60e11b815261ffff8a1660048201819052602482015260c86044820152606401610a50565b60008513612317576040516321ea67b360e11b815260048101869052602401610a50565b8363ffffffff168363ffffffff161115612354576040516313c06e5960e11b815263ffffffff808516600483015285166024820152604401610a50565b609b60ff8316111561238557604051631d66288d60e11b815260ff83166004820152609b6024820152604401610a50565b609b60ff821611156123b657604051631d66288d60e11b815260ff82166004820152609b6024820152604401610a50565b604080516101208101825261ffff8b1680825263ffffffff808c16602084018190526000848601528b8216606085018190528b8316608086018190528a841660a08701819052938a1660c0870181905260ff808b1660e08901819052908a16610100909801889052600c8054600160c01b90990260ff60c01b19600160b81b9093029290921661ffff60b81b19600160981b90940263ffffffff60981b19600160781b9099029890981667ffffffffffffffff60781b19600160581b90960263ffffffff60581b19600160381b9098029790971668ffffffffffffffffff60301b196201000090990265ffffffffffff19909c16909a179a909a1796909616979097179390931791909116959095179290921793909316929092179190911790556010869055517f2c6b6b12413678366b05b145c5f00745bdd00e739131ab5de82484a50c9d78b69061256a908b908b908b908b908b908b908b908b908b9061ffff99909916895263ffffffff97881660208a0152958716604089015293861660608801526080870192909252841660a086015290921660c084015260ff91821660e0840152166101008201526101200190565b60405180910390a1505050505050505050565b612585612ecb565b6000818152600560205260409020546001600160a01b0316806125bb57604051630fb532db60e11b815260040160405180910390fd5b61169f8282612fac565b606060006125d36008613aa7565b90508084106125f557604051631390f2a160e01b815260040160405180910390fd5b60006126018486615a5e565b90508181118061260f575083155b612619578061261b565b815b905060006126298683615b12565b9050806001600160401b0381111561264357612643615c78565b60405190808252806020026020018201604052801561266c578160200160208202803683370190505b50935060005b818110156126bc5761268f6126878883615a5e565b600890613ab1565b8582815181106126a1576126a1615c62565b60209081029190910101526126b581615bca565b9050612672565b505050505b92915050565b6126cf612f81565b6000818152600560205260409020546001600160a01b03168061270557604051630fb532db60e11b815260040160405180910390fd5b6000828152600560205260409020600101546001600160a01b0316331461275c576000828152600560205260409081902060010154905163d084e97560e01b8152610a50916001600160a01b0316906004016156b6565b600082815260056020526040908190208054336001600160a01b031991821681178355600190920180549091169055905183917fd4114ab6e9af9f597c52041f32d62dc57c5c4e4c0d4427006069635e216c938691611bbe9185916156e3565b816127c681612f20565b6127ce612f81565b6001600160a01b03821660009081526004602090815260408083208684529091529020805460ff16156128015750505050565b6000848152600560205260409020600201805460641415612835576040516305a48e0f60e01b815260040160405180910390fd5b8154600160ff1990911681178355815490810182556000828152602090200180546001600160a01b0319166001600160a01b03861617905560405185907f1e980d04aa7648e205713e5e8ea3808672ac163d10936d36f91b2c88ac1575e19061289f9087906156b6565b60405180910390a25050505050565b6000816040516020016128c1919061571f565b604051602081830303815290604052805190602001209050919050565b816128e881612f20565b6128f0612f81565b6128f9836113ff565b1561291757604051631685ecdd60e31b815260040160405180910390fd5b6001600160a01b038216600090815260046020908152604080832086845290915290205460ff1661295f5782826040516379bfd40160e01b8152600401610a509291906157df565b6000838152600560209081526040808320600201805482518185028101850190935280835291929091908301828280156129c257602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116129a4575b505050505090506000600182516129d99190615b12565b905060005b8251811015612ae357846001600160a01b0316838281518110612a0357612a03615c62565b60200260200101516001600160a01b03161415612ad3576000838381518110612a2e57612a2e615c62565b6020026020010151905080600560008981526020019081526020016000206002018381548110612a6057612a60615c62565b600091825260208083209190910180546001600160a01b0319166001600160a01b039490941693909317909255888152600590915260409020600201805480612aab57612aab615c4c565b600082815260209020810160001990810180546001600160a01b031916905501905550612ae3565b612adc81615bca565b90506129de565b506001600160a01b038416600090815260046020908152604080832088845290915290819020805460ff191690555185907f32158c6058347c1601b2d12bc696ac6901d8a9a9aa3ba10c27ab0a983e8425a79061289f9087906156b6565b600e8181548110612b5157600080fd5b600091825260209091200154905081565b81612b6c81612f20565b612b74612f81565b600083815260056020526040902060018101546001600160a01b03848116911614612bf3576001810180546001600160a01b0319166001600160a01b03851617905560405184907f21a4dad170a6bf476c31bbcf4a16628295b0e450672eec25d7c93308e05344a190612bea90339087906156e3565b60405180910390a25b50505050565b600081815260056020526040812054819081906001600160a01b0316606081612c3557604051630fb532db60e11b815260040160405180910390fd5b600086815260066020908152604080832054600583529281902060020180548251818502810185019093528083526001600160601b0380861695600160601b810490911694600160c01b9091046001600160401b0316938893929091839190830182828015612ccd57602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311612caf575b505050505090509450945094509450945091939590929450565b612cef612ecb565b6002546001600160a01b0316612d185760405163c1f0c0a160e01b815260040160405180910390fd5b6002546040516370a0823160e01b81526000916001600160a01b0316906370a0823190612d499030906004016156b6565b60206040518083038186803b158015612d6157600080fd5b505afa158015612d75573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612d99919061523d565b600a549091506001600160601b031681811115612dd3576040516354ced18160e11b81526004810182905260248101839052604401610a50565b81811015610c49576000612de78284615b12565b60025460405163a9059cbb60e01b81529192506001600160a01b03169063a9059cbb90612e1a90879085906004016156ca565b602060405180830381600087803b158015612e3457600080fd5b505af1158015612e48573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612e6c9190615207565b612e8957604051631f01ff1360e21b815260040160405180910390fd5b7f59bfc682b673f8cbf945f1e454df9334834abf7dfe7f92237ca29ecb9b4366008482604051610bf89291906156ca565b612ec2612ecb565b610a5981613abd565b6000546001600160a01b03163314612f1e5760405162461bcd60e51b815260206004820152601660248201527527b7363c9031b0b63630b1363290313c9037bbb732b960511b6044820152606401610a50565b565b6000818152600560205260409020546001600160a01b031680612f5657604051630fb532db60e11b815260040160405180910390fd5b336001600160a01b0382161461169f5780604051636c51fda960e11b8152600401610a5091906156b6565b600c54600160301b900460ff1615612f1e5760405163769dd35360e11b815260040160405180910390fd5b600080612fb8846136fc565b60025491935091506001600160a01b031615801590612fdf57506001600160601b03821615155b1561308e5760025460405163a9059cbb60e01b81526001600160a01b039091169063a9059cbb9061301f9086906001600160601b038716906004016156ca565b602060405180830381600087803b15801561303957600080fd5b505af115801561304d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906130719190615207565b61308e57604051631e9acf1760e31b815260040160405180910390fd5b6000836001600160a01b0316826001600160601b031660405160006040518083038185875af1925050503d80600081146130e4576040519150601f19603f3d011682016040523d82523d6000602084013e6130e9565b606091505b505090508061310b5760405163950b247960e01b815260040160405180910390fd5b604080516001600160a01b03861681526001600160601b03808616602083015284169181019190915285907f8c74ce8b8cf87f5eb001275c8be27eb34ea2b62bfab6814fcc62192bb63e81c49060600161289f565b6040805160a0810182526000606082018181526080830182905282526020820181905291810191909152600061319984600001516128ae565b6000818152600d602090815260409182902082518084019093525460ff811615158084526101009091046001600160401b031691830191909152919250906131f757604051631dfd6e1360e21b815260048101839052602401610a50565b6000828660800151604051602001613219929190918252602082015260400190565b60408051601f1981840301815291815281516020928301206000818152600f9093529120549091508061325f57604051631b44092560e11b815260040160405180910390fd5b85516020808801516040808a015160608b015160808c015160a08d0151935161328e978a9790969591016158c3565b6040516020818303038152906040528051906020012081146132c35760405163354a450b60e21b815260040160405180910390fd5b60006132d28760000151613b61565b9050806133aa578651604051631d2827a760e31b81526001600160401b0390911660048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063e9413d389060240160206040518083038186803b15801561334457600080fd5b505afa158015613358573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061337c919061523d565b9050806133aa57865160405163175dadad60e01b81526001600160401b039091166004820152602401610a50565b60008860800151826040516020016133cc929190918252602082015260400190565b6040516020818303038152906040528051906020012060001c905060006133f38a83613c43565b604080516060810182529788526020880196909652948601949094525092979650505050505050565b6000816001600160401b03163a111561346257821561344557506001600160401b0381166126c1565b3a8260405163435e532d60e11b8152600401610a50929190615740565b503a92915050565b6000806000631fe543e360e01b868560405160240161348a92919061580a565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b031990941693909317909252600c805460ff60301b1916600160301b1790559086015160808701519192506134ee9163ffffffff9091169083613cae565b600c805460ff60301b191690559695505050505050565b600080831561352457613519868685613cfa565b600091509150613534565b61352f868685613e0b565b915091505b94509492505050565b600081815260066020526040902082156135fc5780546001600160601b03600160601b909104811690851681101561358857604051631e9acf1760e31b815260040160405180910390fd5b6135928582615b4e565b8254600160601b600160c01b031916600160601b6001600160601b039283168102919091178455600b805488939192600c926135d2928692900416615abd565b92506101000a8154816001600160601b0302191690836001600160601b0316021790555050612bf3565b80546001600160601b0390811690851681101561362c57604051631e9acf1760e31b815260040160405180910390fd5b6136368582615b4e565b82546001600160601b0319166001600160601b03918216178355600b8054879260009161366591859116615abd565b92506101000a8154816001600160601b0302191690836001600160601b031602179055505050505050565b601154600090815b818110156136f257836001600160a01b0316601182815481106136bd576136bd615c62565b6000918252602090912001546001600160a01b031614156136e2575060019392505050565b6136eb81615bca565b9050613698565b5060009392505050565b60008181526005602090815260408083206006909252822054600290910180546001600160601b0380841694600160601b90940416925b8181101561379e576004600084838154811061375157613751615c62565b60009182526020808320909101546001600160a01b031683528281019390935260409182018120898252909252902080546001600160481b031916905561379781615bca565b9050613733565b50600085815260056020526040812080546001600160a01b031990811682556001820180549091169055906137d66002830182614e3c565b50506000858152600660205260408120556137f2600886613ffd565b506001600160601b0384161561384557600a80548591906000906138209084906001600160601b0316615b4e565b92506101000a8154816001600160601b0302191690836001600160601b031602179055505b6001600160601b0383161561389d5782600a600c8282829054906101000a90046001600160601b03166138789190615b4e565b92506101000a8154816001600160601b0302191690836001600160601b031602179055505b5050915091565b6040805160208082018790526001600160a01b03959095168183015260608101939093526001600160401b03919091166080808401919091528151808403909101815260a08301825280519084012060c083019490945260e0808301859052815180840390910181526101009092019052805191012091565b6040805160208101909152600081528161394657506040805160208101909152600081526126c1565b63125fa26760e31b6139588385615b6e565b6001600160e01b0319161461398057604051632923fee760e11b815260040160405180910390fd5b61398d8260048186615a34565b8101906110469190615256565b60607f92fd13387c7fe7befbc38d303d6468778fb9731bc4583f17d92989c6fcfdeaaa826040516024016139d391511515815260200190565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b03199093169290921790915292915050565b600046613a1781614009565b15613a945760646001600160a01b031663a3b1b31d6040518163ffffffff1660e01b815260040160206040518083038186803b158015613a5657600080fd5b505afa158015613a6a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613a8e919061523d565b91505090565b4391505090565b6000611046838361402c565b60006126c1825490565b6000611046838361407b565b6001600160a01b038116331415613b105760405162461bcd60e51b815260206004820152601760248201527621b0b73737ba103a3930b739b332b9103a379039b2b63360491b6044820152606401610a50565b600180546001600160a01b0319166001600160a01b0383811691821790925560008054604051929316917fed8889f560326eb138920d842192f0eb3dd22b4f139c87a2c57538e05bae12789190a350565b600046613b6d81614009565b15613c3457610100836001600160401b0316613b87613a0b565b613b919190615b12565b1180613bad5750613ba0613a0b565b836001600160401b031610155b15613bbb5750600092915050565b6040516315a03d4160e11b81526001600160401b0384166004820152606490632b407a82906024015b60206040518083038186803b158015613bfc57600080fd5b505afa158015613c10573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611046919061523d565b50506001600160401b03164090565b6000613c778360000151846020015185604001518660600151868860a001518960c001518a60e001518b61010001516140a5565b60038360200151604051602001613c8f9291906157f6565b60408051601f1981840301815291905280516020909101209392505050565b60005a611388811015613cc057600080fd5b611388810390508460408204820311613cd857600080fd5b50823b613ce457600080fd5b60008083516020850160008789f1949350505050565b600080613d3d6000368080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506142c192505050565b905060005a600c54613d5d908890600160581b900463ffffffff16615a5e565b613d679190615b12565b613d719086615af3565b600c54909150600090613d9690600160781b900463ffffffff1664e8d4a51000615af3565b90508415613de257600c548190606490600160b81b900460ff16613dba8587615a5e565b613dc49190615af3565b613dce9190615adf565b613dd89190615a5e565b9350505050611046565b600c548190606490613dfe90600160b81b900460ff1682615a98565b60ff16613dba8587615a5e565b600080600080613e1961438f565b9150915060008213613e41576040516321ea67b360e11b815260048101839052602401610a50565b6000613e836000368080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506142c192505050565b9050600083825a600c54613ea5908d90600160581b900463ffffffff16615a5e565b613eaf9190615b12565b613eb9908b615af3565b613ec39190615a5e565b613ed590670de0b6b3a7640000615af3565b613edf9190615adf565b600c54909150600090613f089063ffffffff600160981b8204811691600160781b900416615b29565b613f1d9063ffffffff1664e8d4a51000615af3565b9050600085613f3483670de0b6b3a7640000615af3565b613f3e9190615adf565b905060008915613f7f57600c548290606490613f6490600160c01b900460ff1687615af3565b613f6e9190615adf565b613f789190615a5e565b9050613fbf565b600c548290606490613f9b90600160c01b900460ff1682615a98565b613fa89060ff1687615af3565b613fb29190615adf565b613fbc9190615a5e565b90505b6b033b2e3c9fd0803ce8000000811115613fec5760405163e80fa38160e01b815260040160405180910390fd5b9b949a509398505050505050505050565b60006110468383614465565b600061a4b182148061401d575062066eed82145b806126c157505062066eee1490565b6000818152600183016020526040812054614073575081546001818101845560008481526020808220909301849055845484825282860190935260409020919091556126c1565b5060006126c1565b600082600001828154811061409257614092615c62565b9060005260206000200154905092915050565b6140ae89614558565b6140f75760405162461bcd60e51b815260206004820152601a6024820152797075626c6963206b6579206973206e6f74206f6e20637572766560301b6044820152606401610a50565b61410088614558565b6141445760405162461bcd60e51b815260206004820152601560248201527467616d6d61206973206e6f74206f6e20637572766560581b6044820152606401610a50565b61414d83614558565b6141995760405162461bcd60e51b815260206004820152601d60248201527f6347616d6d615769746e657373206973206e6f74206f6e2063757276650000006044820152606401610a50565b6141a282614558565b6141ee5760405162461bcd60e51b815260206004820152601c60248201527f73486173685769746e657373206973206e6f74206f6e206375727665000000006044820152606401610a50565b6141fa878a888761461b565b6142425760405162461bcd60e51b81526020600482015260196024820152786164647228632a706b2b732a6729213d5f755769746e65737360381b6044820152606401610a50565b600061424e8a8761473e565b90506000614261898b878b8689896147a2565b90506000614272838d8d8a866148c1565b9050808a146142b35760405162461bcd60e51b815260206004820152600d60248201526c34b73b30b634b210383937b7b360991b6044820152606401610a50565b505050505050505050505050565b6000466142cd81614009565b1561430c57606c6001600160a01b031663c6f7de0e6040518163ffffffff1660e01b815260040160206040518083038186803b158015613bfc57600080fd5b61431581614901565b1561438657600f602160991b016001600160a01b03166349948e0e84604051806080016040528060488152602001615cb26048913960405160200161435b92919061560c565b6040516020818303038152906040526040518263ffffffff1660e01b8152600401613be49190615757565b50600092915050565b600c5460035460408051633fabe5a360e21b815290516000938493600160381b90910463ffffffff169284926001600160a01b039092169163feaf968c9160048082019260a092909190829003018186803b1580156143ed57600080fd5b505afa158015614401573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061442591906154e7565b50919650909250505063ffffffff82161580159061445157506144488142615b12565b8263ffffffff16105b9250821561445f5760105493505b50509091565b6000818152600183016020526040812054801561454e576000614489600183615b12565b855490915060009061449d90600190615b12565b90508181146145025760008660000182815481106144bd576144bd615c62565b90600052602060002001549050808760000184815481106144e0576144e0615c62565b6000918252602080832090910192909255918252600188019052604090208390555b855486908061451357614513615c4c565b6001900381819060005260206000200160009055905585600101600086815260200190815260200160002060009055600193505050506126c1565b60009150506126c1565b80516000906401000003d019116145a65760405162461bcd60e51b8152602060048201526012602482015271696e76616c696420782d6f7264696e61746560701b6044820152606401610a50565b60208201516401000003d019116145f45760405162461bcd60e51b8152602060048201526012602482015271696e76616c696420792d6f7264696e61746560701b6044820152606401610a50565b60208201516401000003d0199080096146148360005b602002015161493b565b1492915050565b60006001600160a01b0382166146615760405162461bcd60e51b815260206004820152600b60248201526a626164207769746e65737360a81b6044820152606401610a50565b60208401516000906001161561467857601c61467b565b601b5b9050600070014551231950b75fc4402da1732fc9bebe1985876000602002015109865170014551231950b75fc4402da1732fc9bebe19918203925060009190890987516040805160008082526020820180845287905260ff88169282019290925260608101929092526080820183905291925060019060a0016020604051602081039080840390855afa158015614716573d6000803e3d6000fd5b5050604051601f1901516001600160a01b039081169088161495505050505050949350505050565b614746614e5a565b6147736001848460405160200161475f93929190615695565b60405160208183030381529060405261495f565b90505b61477f81614558565b6126c157805160408051602081019290925261479b910161475f565b9050614776565b6147aa614e5a565b825186516401000003d01990819006910614156148095760405162461bcd60e51b815260206004820152601e60248201527f706f696e747320696e2073756d206d7573742062652064697374696e637400006044820152606401610a50565b6148148789886149ad565b6148595760405162461bcd60e51b8152602060048201526016602482015275119a5c9cdd081b5d5b0818da1958dac819985a5b195960521b6044820152606401610a50565b6148648486856149ad565b6148aa5760405162461bcd60e51b815260206004820152601760248201527614d958dbdb99081b5d5b0818da1958dac819985a5b1959604a1b6044820152606401610a50565b6148b5868484614ad5565b98975050505050505050565b6000600286868685876040516020016148df9695949392919061563b565b60408051601f1981840301815291905280516020909101209695505050505050565b6000600a82148061491357506101a482145b80614920575062aa37dc82145b8061492c575061210582145b806126c157505062014a331490565b6000806401000003d01980848509840990506401000003d019600782089392505050565b614967614e5a565b61497082614b98565b815261498561498082600061460a565b614bd3565b602082018190526002900660011415611f5c576020810180516401000003d019039052919050565b6000826149ea5760405162461bcd60e51b815260206004820152600b60248201526a3d32b9379039b1b0b630b960a91b6044820152606401610a50565b83516020850151600090614a0090600290615c0c565b15614a0c57601c614a0f565b601b5b9050600070014551231950b75fc4402da1732fc9bebe198387096040805160008082526020820180845281905260ff86169282019290925260608101869052608081018390529192509060019060a0016020604051602081039080840390855afa158015614a81573d6000803e3d6000fd5b505050602060405103519050600086604051602001614aa091906155fa565b60408051601f1981840301815291905280516020909101206001600160a01b0392831692169190911498975050505050505050565b614add614e5a565b835160208086015185519186015160009384938493614afe93909190614bf3565b919450925090506401000003d019858209600114614b5a5760405162461bcd60e51b815260206004820152601960248201527834b73b2d1036bab9ba1031329034b73b32b939b29037b3103d60391b6044820152606401610a50565b60405180604001604052806401000003d01980614b7957614b79615c36565b87860981526020016401000003d0198785099052979650505050505050565b805160208201205b6401000003d0198110611f5c57604080516020808201939093528151808203840181529082019091528051910120614ba0565b60006126c1826002614bec6401000003d0196001615a5e565b901c614cd3565b60008080600180826401000003d019896401000003d019038808905060006401000003d0198b6401000003d019038a0890506000614c3383838585614d6a565b9098509050614c4488828e88614d8e565b9098509050614c5588828c87614d8e565b90985090506000614c688d878b85614d8e565b9098509050614c7988828686614d6a565b9098509050614c8a88828e89614d8e565b9098509050818114614cbf576401000003d019818a0998506401000003d01982890997506401000003d0198183099650614cc3565b8196505b5050505050509450945094915050565b600080614cde614e78565b6020808252818101819052604082015260608101859052608081018490526401000003d01960a0820152614d10614e96565b60208160c0846005600019fa925082614d605760405162461bcd60e51b81526020600482015260126024820152716269674d6f64457870206661696c7572652160701b6044820152606401610a50565b5195945050505050565b6000806401000003d0198487096401000003d0198487099097909650945050505050565b600080806401000003d019878509905060006401000003d01987876401000003d019030990506401000003d0198183086401000003d01986890990999098509650505050505050565b828054828255906000526020600020908101928215614e2c579160200282015b82811115614e2c57825182546001600160a01b0319166001600160a01b03909116178255602090920191600190910190614df7565b50614e38929150614eb4565b5090565b5080546000825590600052602060002090810190610a599190614eb4565b60405180604001604052806002906020820280368337509192915050565b6040518060c001604052806006906020820280368337509192915050565b60405180602001604052806001906020820280368337509192915050565b5b80821115614e385760008155600101614eb5565b8035611f5c81615c8e565b80604081018310156126c157600080fd5b600082601f830112614ef657600080fd5b604051604081018181106001600160401b0382111715614f1857614f18615c78565b8060405250808385604086011115614f2f57600080fd5b60005b6002811015614f51578135835260209283019290910190600101614f32565b509195945050505050565b8035611f5c81615ca3565b600060c08284031215614f7957600080fd5b614f816159b9565b9050614f8c8261507b565b815260208083013581830152614fa460408401615067565b6040830152614fb560608401615067565b60608301526080830135614fc881615c8e565b608083015260a08301356001600160401b0380821115614fe757600080fd5b818501915085601f830112614ffb57600080fd5b81358181111561500d5761500d615c78565b61501f601f8201601f19168501615a04565b9150808252868482850101111561503557600080fd5b80848401858401376000848284010152508060a085015250505092915050565b803561ffff81168114611f5c57600080fd5b803563ffffffff81168114611f5c57600080fd5b80356001600160401b0381168114611f5c57600080fd5b803560ff81168114611f5c57600080fd5b805169ffffffffffffffffffff81168114611f5c57600080fd5b6000602082840312156150cf57600080fd5b813561104681615c8e565b600080604083850312156150ed57600080fd5b82356150f881615c8e565b9150602083013561510881615c8e565b809150509250929050565b6000806000806060858703121561512957600080fd5b843561513481615c8e565b93506020850135925060408501356001600160401b038082111561515757600080fd5b818701915087601f83011261516b57600080fd5b81358181111561517a57600080fd5b88602082850101111561518c57600080fd5b95989497505060200194505050565b6000604082840312156151ad57600080fd5b6110468383614ed4565b600080606083850312156151ca57600080fd5b6151d48484614ed4565b91506151e26040840161507b565b90509250929050565b6000604082840312156151fd57600080fd5b6110468383614ee5565b60006020828403121561521957600080fd5b815161104681615ca3565b60006020828403121561523657600080fd5b5035919050565b60006020828403121561524f57600080fd5b5051919050565b60006020828403121561526857600080fd5b604051602081018181106001600160401b038211171561528a5761528a615c78565b604052823561529881615ca3565b81529392505050565b60008060008385036101e08112156152b857600080fd5b6101a0808212156152c857600080fd5b6152d06159e1565b91506152dc8787614ee5565b82526152eb8760408801614ee5565b60208301526080860135604083015260a0860135606083015260c0860135608083015261531a60e08701614ec9565b60a083015261010061532e88828901614ee5565b60c0840152615341886101408901614ee5565b60e0840152610180870135908301529093508401356001600160401b0381111561536a57600080fd5b61537686828701614f67565b9250506153866101c08501614f5c565b90509250925092565b6000602082840312156153a157600080fd5b81356001600160401b038111156153b757600080fd5b820160c0818503121561104657600080fd5b6000602082840312156153db57600080fd5b61104682615055565b60008060008060008060008060006101208a8c03121561540357600080fd5b61540c8a615055565b985061541a60208b01615067565b975061542860408b01615067565b965061543660608b01615067565b955060808a0135945061544b60a08b01615067565b935061545960c08b01615067565b925061546760e08b01615092565b91506154766101008b01615092565b90509295985092959850929598565b6000806040838503121561549857600080fd5b82359150602083013561510881615c8e565b600080604083850312156154bd57600080fd5b50508035926020909101359150565b6000602082840312156154de57600080fd5b61104682615067565b600080600080600060a086880312156154ff57600080fd5b615508866150a3565b945060208601519350604086015192506060860151915061552b608087016150a3565b90509295509295909350565b600081518084526020808501945080840160005b838110156155705781516001600160a01b03168752958201959082019060010161554b565b509495945050505050565b8060005b6002811015612bf357815184526020938401939091019060010161557f565b600081518084526020808501945080840160005b83811015615570578151875295820195908201906001016155b2565b600081518084526155e6816020860160208601615b9e565b601f01601f19169290920160200192915050565b615604818361557b565b604001919050565b6000835161561e818460208801615b9e565b835190830190615632818360208801615b9e565b01949350505050565b86815261564b602082018761557b565b615658606082018661557b565b61566560a082018561557b565b61567260e082018461557b565b60609190911b6001600160601b0319166101208201526101340195945050505050565b8381526156a5602082018461557b565b606081019190915260800192915050565b6001600160a01b0391909116815260200190565b6001600160a01b03929092168252602082015260400190565b6001600160a01b0392831681529116602082015260400190565b6001600160a01b039290921682526001600160601b0316602082015260400190565b604081016126c1828461557b565b602081526000611046602083018461559e565b9182526001600160401b0316602082015260400190565b60208152600061104660208301846155ce565b6020815260ff82511660208201526020820151604082015260018060a01b0360408301511660608201526000606083015160c060808401526157af60e0840182615537565b60808501516001600160601b0390811660a0868101919091529095015190941660c0909301929092525090919050565b9182526001600160a01b0316602082015260400190565b82815260608101611046602083018461557b565b828152604060208201526000615823604083018461559e565b949350505050565b86815285602082015261ffff85166040820152600063ffffffff808616606084015280851660808401525060c060a08301526148b560c08301846155ce565b878152602081018790526040810186905263ffffffff8581166060830152841660808201526001600160a01b03831660a082015260e060c082018190526000906158b6908301846155ce565b9998505050505050505050565b8781526001600160401b03871660208201526040810186905263ffffffff8581166060830152841660808201526001600160a01b03831660a082015260e060c082018190526000906158b6908301846155ce565b6001600160601b038681168252851660208201526001600160401b03841660408201526001600160a01b038316606082015260a06080820181905260009061596190830184615537565b979650505050505050565b6000808335601e1984360301811261598357600080fd5b8301803591506001600160401b0382111561599d57600080fd5b6020019150368190038213156159b257600080fd5b9250929050565b60405160c081016001600160401b03811182821017156159db576159db615c78565b60405290565b60405161012081016001600160401b03811182821017156159db576159db615c78565b604051601f8201601f191681016001600160401b0381118282101715615a2c57615a2c615c78565b604052919050565b60008085851115615a4457600080fd5b83861115615a5157600080fd5b5050820193919092039150565b60008219821115615a7157615a71615c20565b500190565b60006001600160401b0380831681851680830382111561563257615632615c20565b600060ff821660ff84168060ff03821115615ab557615ab5615c20565b019392505050565b60006001600160601b0382811684821680830382111561563257615632615c20565b600082615aee57615aee615c36565b500490565b6000816000190483118215151615615b0d57615b0d615c20565b500290565b600082821015615b2457615b24615c20565b500390565b600063ffffffff83811690831681811015615b4657615b46615c20565b039392505050565b60006001600160601b0383811690831681811015615b4657615b46615c20565b6001600160e01b03198135818116916004851015615b965780818660040360031b1b83161692505b505092915050565b60005b83811015615bb9578181015183820152602001615ba1565b83811115612bf35750506000910152565b6000600019821415615bde57615bde615c20565b5060010190565b60006001600160401b0380831681811415615c0257615c02615c20565b6001019392505050565b600082615c1b57615c1b615c36565b500690565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052601260045260246000fd5b634e487b7160e01b600052603160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6001600160a01b0381168114610a5957600080fd5b8015158114610a5957600080fdfe307866666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666a164736f6c6343000806000a", } var VRFCoordinatorV25ABI = VRFCoordinatorV25MetaData.ABI diff --git a/core/gethwrappers/generated/vrf_v2plus_upgraded_version/vrf_v2plus_upgraded_version.go b/core/gethwrappers/generated/vrf_v2plus_upgraded_version/vrf_v2plus_upgraded_version.go index 3909fe24500..472f6acef9a 100644 --- a/core/gethwrappers/generated/vrf_v2plus_upgraded_version/vrf_v2plus_upgraded_version.go +++ b/core/gethwrappers/generated/vrf_v2plus_upgraded_version/vrf_v2plus_upgraded_version.go @@ -62,7 +62,7 @@ type VRFV2PlusClientRandomWordsRequest struct { var VRFCoordinatorV2PlusUpgradedVersionMetaData = &bind.MetaData{ ABI: "[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"blockhashStore\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"internalBalance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"externalBalance\",\"type\":\"uint256\"}],\"name\":\"BalanceInvariantViolated\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"blockNum\",\"type\":\"uint256\"}],\"name\":\"BlockhashNotInStore\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"coordinatorAddress\",\"type\":\"address\"}],\"name\":\"CoordinatorAlreadyRegistered\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"coordinatorAddress\",\"type\":\"address\"}],\"name\":\"CoordinatorNotRegistered\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FailedToSendNative\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FailedToTransferLink\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"have\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"want\",\"type\":\"uint32\"}],\"name\":\"GasLimitTooBig\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"IncorrectCommitment\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"IndexOutOfRange\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InsufficientBalance\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidCalldata\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"subId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"consumer\",\"type\":\"address\"}],\"name\":\"InvalidConsumer\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidExtraArgsTag\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"int256\",\"name\":\"linkWei\",\"type\":\"int256\"}],\"name\":\"InvalidLinkWeiPrice\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"transferredValue\",\"type\":\"uint256\"},{\"internalType\":\"uint96\",\"name\":\"expectedValue\",\"type\":\"uint96\"}],\"name\":\"InvalidNativeBalance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint16\",\"name\":\"have\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"min\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"max\",\"type\":\"uint16\"}],\"name\":\"InvalidRequestConfirmations\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidSubscription\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"requestVersion\",\"type\":\"uint8\"},{\"internalType\":\"uint8\",\"name\":\"expectedVersion\",\"type\":\"uint8\"}],\"name\":\"InvalidVersion\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"LinkAlreadySet\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"LinkNotSet\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"proposedOwner\",\"type\":\"address\"}],\"name\":\"MustBeRequestedOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"MustBeSubOwner\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NoCorrespondingRequest\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"keyHash\",\"type\":\"bytes32\"}],\"name\":\"NoSuchProvingKey\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"have\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"want\",\"type\":\"uint32\"}],\"name\":\"NumWordsTooBig\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OnlyCallableFromLink\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"PaymentTooLarge\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"PendingRequestExists\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"keyHash\",\"type\":\"bytes32\"}],\"name\":\"ProvingKeyAlreadyRegistered\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"Reentrant\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SubscriptionIDCollisionFound\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"TooManyConsumers\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint16\",\"name\":\"minimumRequestConfirmations\",\"type\":\"uint16\"},{\"indexed\":false,\"internalType\":\"uint32\",\"name\":\"maxGasLimit\",\"type\":\"uint32\"},{\"indexed\":false,\"internalType\":\"uint32\",\"name\":\"stalenessSeconds\",\"type\":\"uint32\"},{\"indexed\":false,\"internalType\":\"uint32\",\"name\":\"gasAfterPaymentCalculation\",\"type\":\"uint32\"},{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"fallbackWeiPerUnitLink\",\"type\":\"int256\"},{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"nativePremiumPercentage\",\"type\":\"uint8\"},{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"linkPremiumPercentage\",\"type\":\"uint8\"}],\"name\":\"ConfigSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"coordinatorAddress\",\"type\":\"address\"}],\"name\":\"CoordinatorRegistered\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"FundsRecovered\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"newCoordinator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"subId\",\"type\":\"uint256\"}],\"name\":\"MigrationCompleted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"NativeFundsRecovered\",\"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\":false,\"internalType\":\"bytes32\",\"name\":\"keyHash\",\"type\":\"bytes32\"}],\"name\":\"ProvingKeyRegistered\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"requestId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"outputSeed\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"subID\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint96\",\"name\":\"payment\",\"type\":\"uint96\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"success\",\"type\":\"bool\"}],\"name\":\"RandomWordsFulfilled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"keyHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"requestId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"preSeed\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"subId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint16\",\"name\":\"minimumRequestConfirmations\",\"type\":\"uint16\"},{\"indexed\":false,\"internalType\":\"uint32\",\"name\":\"callbackGasLimit\",\"type\":\"uint32\"},{\"indexed\":false,\"internalType\":\"uint32\",\"name\":\"numWords\",\"type\":\"uint32\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"extraArgs\",\"type\":\"bytes\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"RandomWordsRequested\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"subId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amountLink\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amountNative\",\"type\":\"uint256\"}],\"name\":\"SubscriptionCanceled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"subId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"consumer\",\"type\":\"address\"}],\"name\":\"SubscriptionConsumerAdded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"subId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"consumer\",\"type\":\"address\"}],\"name\":\"SubscriptionConsumerRemoved\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"subId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"SubscriptionCreated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"subId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"oldBalance\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"newBalance\",\"type\":\"uint256\"}],\"name\":\"SubscriptionFunded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"subId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"oldNativeBalance\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"newNativeBalance\",\"type\":\"uint256\"}],\"name\":\"SubscriptionFundedWithNative\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"subId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"SubscriptionOwnerTransferRequested\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"subId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"SubscriptionOwnerTransferred\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"BLOCKHASH_STORE\",\"outputs\":[{\"internalType\":\"contractBlockhashStoreInterface\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"LINK\",\"outputs\":[{\"internalType\":\"contractLinkTokenInterface\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"LINK_NATIVE_FEED\",\"outputs\":[{\"internalType\":\"contractAggregatorV3Interface\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MAX_CONSUMERS\",\"outputs\":[{\"internalType\":\"uint16\",\"name\":\"\",\"type\":\"uint16\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MAX_NUM_WORDS\",\"outputs\":[{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MAX_REQUEST_CONFIRMATIONS\",\"outputs\":[{\"internalType\":\"uint16\",\"name\":\"\",\"type\":\"uint16\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"acceptOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"subId\",\"type\":\"uint256\"}],\"name\":\"acceptSubscriptionOwnerTransfer\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"subId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"consumer\",\"type\":\"address\"}],\"name\":\"addConsumer\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"subId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"cancelSubscription\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"createSubscription\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"subId\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint256[2]\",\"name\":\"pk\",\"type\":\"uint256[2]\"},{\"internalType\":\"uint256[2]\",\"name\":\"gamma\",\"type\":\"uint256[2]\"},{\"internalType\":\"uint256\",\"name\":\"c\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"s\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"seed\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"uWitness\",\"type\":\"address\"},{\"internalType\":\"uint256[2]\",\"name\":\"cGammaWitness\",\"type\":\"uint256[2]\"},{\"internalType\":\"uint256[2]\",\"name\":\"sHashWitness\",\"type\":\"uint256[2]\"},{\"internalType\":\"uint256\",\"name\":\"zInv\",\"type\":\"uint256\"}],\"internalType\":\"structVRF.Proof\",\"name\":\"proof\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint64\",\"name\":\"blockNum\",\"type\":\"uint64\"},{\"internalType\":\"uint256\",\"name\":\"subId\",\"type\":\"uint256\"},{\"internalType\":\"uint32\",\"name\":\"callbackGasLimit\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"numWords\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"extraArgs\",\"type\":\"bytes\"}],\"internalType\":\"structVRFCoordinatorV2PlusUpgradedVersion.RequestCommitment\",\"name\":\"rc\",\"type\":\"tuple\"},{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"name\":\"fulfillRandomWords\",\"outputs\":[{\"internalType\":\"uint96\",\"name\":\"\",\"type\":\"uint96\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"subId\",\"type\":\"uint256\"}],\"name\":\"fundSubscriptionWithNative\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"startIndex\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxCount\",\"type\":\"uint256\"}],\"name\":\"getActiveSubscriptionIds\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"ids\",\"type\":\"uint256[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getRequestConfig\",\"outputs\":[{\"internalType\":\"uint16\",\"name\":\"\",\"type\":\"uint16\"},{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"},{\"internalType\":\"bytes32[]\",\"name\":\"\",\"type\":\"bytes32[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"subId\",\"type\":\"uint256\"}],\"name\":\"getSubscription\",\"outputs\":[{\"internalType\":\"uint96\",\"name\":\"balance\",\"type\":\"uint96\"},{\"internalType\":\"uint96\",\"name\":\"nativeBalance\",\"type\":\"uint96\"},{\"internalType\":\"uint64\",\"name\":\"reqCount\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address[]\",\"name\":\"consumers\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256[2]\",\"name\":\"publicKey\",\"type\":\"uint256[2]\"}],\"name\":\"hashOfKey\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"subId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"newCoordinator\",\"type\":\"address\"}],\"name\":\"migrate\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"migrationVersion\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"version\",\"type\":\"uint8\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"encodedData\",\"type\":\"bytes\"}],\"name\":\"onMigration\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"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\":\"subId\",\"type\":\"uint256\"}],\"name\":\"ownerCancelSubscription\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"subId\",\"type\":\"uint256\"}],\"name\":\"pendingRequestExists\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"recoverFunds\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"addresspayable\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"recoverNativeFunds\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"}],\"name\":\"registerMigratableCoordinator\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256[2]\",\"name\":\"publicProvingKey\",\"type\":\"uint256[2]\"}],\"name\":\"registerProvingKey\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"subId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"consumer\",\"type\":\"address\"}],\"name\":\"removeConsumer\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"keyHash\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"subId\",\"type\":\"uint256\"},{\"internalType\":\"uint16\",\"name\":\"requestConfirmations\",\"type\":\"uint16\"},{\"internalType\":\"uint32\",\"name\":\"callbackGasLimit\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"numWords\",\"type\":\"uint32\"},{\"internalType\":\"bytes\",\"name\":\"extraArgs\",\"type\":\"bytes\"}],\"internalType\":\"structVRFV2PlusClient.RandomWordsRequest\",\"name\":\"req\",\"type\":\"tuple\"}],\"name\":\"requestRandomWords\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"subId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"requestSubscriptionOwnerTransfer\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"s_config\",\"outputs\":[{\"internalType\":\"uint16\",\"name\":\"minimumRequestConfirmations\",\"type\":\"uint16\"},{\"internalType\":\"uint32\",\"name\":\"maxGasLimit\",\"type\":\"uint32\"},{\"internalType\":\"bool\",\"name\":\"reentrancyLock\",\"type\":\"bool\"},{\"internalType\":\"uint32\",\"name\":\"stalenessSeconds\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"gasAfterPaymentCalculation\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"fulfillmentFlatFeeNativePPM\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"fulfillmentFlatFeeLinkDiscountPPM\",\"type\":\"uint32\"},{\"internalType\":\"uint8\",\"name\":\"nativePremiumPercentage\",\"type\":\"uint8\"},{\"internalType\":\"uint8\",\"name\":\"linkPremiumPercentage\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"s_currentSubNonce\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"s_provingKeyHashes\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"s_requestCommitments\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"s_totalBalance\",\"outputs\":[{\"internalType\":\"uint96\",\"name\":\"\",\"type\":\"uint96\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"s_totalNativeBalance\",\"outputs\":[{\"internalType\":\"uint96\",\"name\":\"\",\"type\":\"uint96\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint16\",\"name\":\"minimumRequestConfirmations\",\"type\":\"uint16\"},{\"internalType\":\"uint32\",\"name\":\"maxGasLimit\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"stalenessSeconds\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"gasAfterPaymentCalculation\",\"type\":\"uint32\"},{\"internalType\":\"int256\",\"name\":\"fallbackWeiPerUnitLink\",\"type\":\"int256\"},{\"internalType\":\"uint32\",\"name\":\"fulfillmentFlatFeeNativePPM\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"fulfillmentFlatFeeLinkDiscountPPM\",\"type\":\"uint32\"},{\"internalType\":\"uint8\",\"name\":\"nativePremiumPercentage\",\"type\":\"uint8\"},{\"internalType\":\"uint8\",\"name\":\"linkPremiumPercentage\",\"type\":\"uint8\"}],\"name\":\"setConfig\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"link\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"linkNativeFeed\",\"type\":\"address\"}],\"name\":\"setLINKAndLINKNativeFeed\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"}],\"name\":\"withdraw\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"addresspayable\",\"name\":\"recipient\",\"type\":\"address\"}],\"name\":\"withdrawNative\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", - Bin: "0x60a06040523480156200001157600080fd5b5060405162005e7538038062005e75833981016040819052620000349162000183565b33806000816200008b5760405162461bcd60e51b815260206004820152601860248201527f43616e6e6f7420736574206f776e657220746f207a65726f000000000000000060448201526064015b60405180910390fd5b600080546001600160a01b0319166001600160a01b0384811691909117909155811615620000be57620000be81620000d7565b50505060601b6001600160601b031916608052620001b5565b6001600160a01b038116331415620001325760405162461bcd60e51b815260206004820152601760248201527f43616e6e6f74207472616e7366657220746f2073656c66000000000000000000604482015260640162000082565b600180546001600160a01b0319166001600160a01b0383811691821790925560008054604051929316917fed8889f560326eb138920d842192f0eb3dd22b4f139c87a2c57538e05bae12789190a350565b6000602082840312156200019657600080fd5b81516001600160a01b0381168114620001ae57600080fd5b9392505050565b60805160601c615c9a620001db600039600081816104f4015261345a0152615c9a6000f3fe6080604052600436106101e05760003560e01c8062012291146101e5578063088070f5146102125780630ae09540146102e057806315c48b841461030257806318e3dd271461032a5780631b6b6d2314610369578063294daa49146103965780632f622e6b146103b2578063301f42e9146103d2578063405b84fa146103f257806340d6bb821461041257806341af6c871461043d57806351cff8d91461046d5780635d06b4ab1461048d57806364d51a2a146104ad57806365982744146104c2578063689c4517146104e257806372e9d5651461051657806379ba5097146105365780637bce14d11461054b5780638402595e1461056b57806386fe91c71461058b5780638da5cb5b146105ab57806395b55cfc146105c95780639b1c385e146105dc5780639d40a6fd1461060a578063a21a23e414610637578063a4c0ed361461064c578063a63e0bfb1461066c578063aa433aff1461068c578063aefb212f146106ac578063b2a7cac5146106d9578063bec4c08c146106f9578063caf70c4a14610719578063cb63179714610739578063ce3f471914610759578063d98e620e1461076c578063dac83d291461078c578063dc311dd3146107ac578063e72f6e30146107dd578063ee9d2d38146107fd578063f2fde38b1461082a575b600080fd5b3480156101f157600080fd5b506101fa61084a565b60405161020993929190615747565b60405180910390f35b34801561021e57600080fd5b50600c546102839061ffff81169063ffffffff62010000820481169160ff600160301b8204811692600160381b8304811692600160581b8104821692600160781b8204831692600160981b83041691600160b81b8104821691600160c01b9091041689565b6040805161ffff909a168a5263ffffffff98891660208b01529615159689019690965293861660608801529185166080870152841660a08601529290921660c084015260ff91821660e08401521661010082015261012001610209565b3480156102ec57600080fd5b506103006102fb3660046153ba565b6108c6565b005b34801561030e57600080fd5b5061031760c881565b60405161ffff9091168152602001610209565b34801561033657600080fd5b50600a5461035190600160601b90046001600160601b031681565b6040516001600160601b039091168152602001610209565b34801561037557600080fd5b50600254610389906001600160a01b031681565b60405161020991906155eb565b3480156103a257600080fd5b5060405160028152602001610209565b3480156103be57600080fd5b506103006103cd366004614ed4565b61090e565b3480156103de57600080fd5b506103516103ed36600461508b565b610a5a565b3480156103fe57600080fd5b5061030061040d3660046153ba565b610ef0565b34801561041e57600080fd5b506104286101f481565b60405163ffffffff9091168152602001610209565b34801561044957600080fd5b5061045d6104583660046153a1565b6112c1565b6040519015158152602001610209565b34801561047957600080fd5b50610300610488366004614ed4565b611467565b34801561049957600080fd5b506103006104a8366004614ed4565b6115f5565b3480156104b957600080fd5b50610317606481565b3480156104ce57600080fd5b506103006104dd366004614ef1565b6116ac565b3480156104ee57600080fd5b506103897f000000000000000000000000000000000000000000000000000000000000000081565b34801561052257600080fd5b50600354610389906001600160a01b031681565b34801561054257600080fd5b5061030061170c565b34801561055757600080fd5b50610300610566366004614f85565b6117b6565b34801561057757600080fd5b50610300610586366004614ed4565b6118af565b34801561059757600080fd5b50600a54610351906001600160601b031681565b3480156105b757600080fd5b506000546001600160a01b0316610389565b6103006105d73660046153a1565b6119bb565b3480156105e857600080fd5b506105fc6105f7366004615179565b611adc565b604051908152602001610209565b34801561061657600080fd5b5060075461062a906001600160401b031681565b60405161020991906158e0565b34801561064357600080fd5b506105fc611e7b565b34801561065857600080fd5b50610300610667366004614f2a565b61204e565b34801561067857600080fd5b50610300610687366004615300565b6121c8565b34801561069857600080fd5b506103006106a73660046153a1565b6123d1565b3480156106b857600080fd5b506106cc6106c73660046153df565b612419565b6040516102099190615662565b3480156106e557600080fd5b506103006106f43660046153a1565b61251b565b34801561070557600080fd5b506103006107143660046153ba565b612610565b34801561072557600080fd5b506105fc610734366004614fad565b612703565b34801561074557600080fd5b506103006107543660046153ba565b612733565b610300610767366004614fff565b61299e565b34801561077857600080fd5b506105fc6107873660046153a1565b612cde565b34801561079857600080fd5b506103006107a73660046153ba565b612cff565b3480156107b857600080fd5b506107cc6107c73660046153a1565b612d95565b6040516102099594939291906158f4565b3480156107e957600080fd5b506103006107f8366004614ed4565b612e83565b34801561080957600080fd5b506105fc6108183660046153a1565b600f6020526000908152604090205481565b34801561083657600080fd5b50610300610845366004614ed4565b61305e565b600c54600e805460408051602080840282018101909252828152600094859460609461ffff8316946201000090930463ffffffff169391928391908301828280156108b457602002820191906000526020600020905b8154815260200190600101908083116108a0575b50505050509050925092509250909192565b816108d081613072565b6108d86130d3565b6108e1836112c1565b156108ff57604051631685ecdd60e31b815260040160405180910390fd5b6109098383613100565b505050565b6109166130d3565b61091e6132b4565b600b54600160601b90046001600160601b031661094e57604051631e9acf1760e31b815260040160405180910390fd5b600b8054600160601b90046001600160601b0316908190600c6109718380615ada565b92506101000a8154816001600160601b0302191690836001600160601b0316021790555080600a600c8282829054906101000a90046001600160601b03166109b99190615ada565b92506101000a8154816001600160601b0302191690836001600160601b031602179055506000826001600160a01b0316826001600160601b031660405160006040518083038185875af1925050503d8060008114610a33576040519150601f19603f3d011682016040523d82523d6000602084013e610a38565b606091505b50509050806109095760405163950b247960e01b815260040160405180910390fd5b6000610a646130d3565b60005a90506000610a758686613307565b90506000856060015163ffffffff166001600160401b03811115610a9b57610a9b615c0c565b604051908082528060200260200182016040528015610ac4578160200160208202803683370190505b50905060005b866060015163ffffffff16811015610b3b57826040015181604051602001610af3929190615675565b6040516020818303038152906040528051906020012060001c828281518110610b1e57610b1e615bf6565b602090810291909101015280610b3381615b5e565b915050610aca565b50602080830180516000908152600f9092526040808320839055905190518291631fe543e360e01b91610b73919086906024016157d1565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b031990941693909317909252600c805460ff60301b1916600160301b1790559089015160808a0151919250600091610bd89163ffffffff169084613572565b600c805460ff60301b1916905560208a810151600090815260069091526040902054909150600160c01b90046001600160401b0316610c18816001615a4c565b6020808c0151600090815260069091526040812080546001600160401b0393909316600160c01b026001600160c01b039093169290921790915560a08b01518051610c6590600190615ac3565b81518110610c7557610c75615bf6565b602091010151600c5460f89190911c6001149150600090610ca6908a90600160581b900463ffffffff163a856135be565b90508115610d9e576020808d01516000908152600690915260409020546001600160601b03808316600160601b909204161015610cf657604051631e9acf1760e31b815260040160405180910390fd5b60208c81015160009081526006909152604090208054829190600c90610d2d908490600160601b90046001600160601b0316615ada565b92506101000a8154816001600160601b0302191690836001600160601b0316021790555080600b600c8282829054906101000a90046001600160601b0316610d759190615a6e565b92506101000a8154816001600160601b0302191690836001600160601b03160217905550610e79565b6020808d01516000908152600690915260409020546001600160601b0380831691161015610ddf57604051631e9acf1760e31b815260040160405180910390fd5b6020808d015160009081526006909152604081208054839290610e0c9084906001600160601b0316615ada565b92506101000a8154816001600160601b0302191690836001600160601b0316021790555080600b60008282829054906101000a90046001600160601b0316610e549190615a6e565b92506101000a8154816001600160601b0302191690836001600160601b031602179055505b8b6020015188602001517f49580fdfd9497e1ed5c1b1cec0495087ae8e3f1267470ec2fb015db32e3d6aa78a604001518488604051610ed6939291909283526001600160601b039190911660208301521515604082015260600190565b60405180910390a3985050505050505050505b9392505050565b610ef86130d3565b610f018161360d565b610f295780604051635428d44960e01b8152600401610f2091906155eb565b60405180910390fd5b600080600080610f3886612d95565b945094505093509350336001600160a01b0316826001600160a01b031614610f9b5760405162461bcd60e51b81526020600482015260166024820152752737ba1039bab139b1b934b83a34b7b71037bbb732b960511b6044820152606401610f20565b610fa4866112c1565b15610fea5760405162461bcd60e51b815260206004820152601660248201527550656e64696e6720726571756573742065786973747360501b6044820152606401610f20565b60006040518060c00160405280610fff600290565b60ff168152602001888152602001846001600160a01b03168152602001838152602001866001600160601b03168152602001856001600160601b0316815250905060008160405160200161105391906156b4565b604051602081830303815290604052905061106d88613677565b505060405163ce3f471960e01b81526001600160a01b0388169063ce3f4719906001600160601b038816906110a69085906004016156a1565b6000604051808303818588803b1580156110bf57600080fd5b505af11580156110d3573d6000803e3d6000fd5b50506002546001600160a01b0316158015935091506110fc905057506001600160601b03861615155b156111c65760025460405163a9059cbb60e01b81526001600160a01b039091169063a9059cbb90611133908a908a90600401615632565b602060405180830381600087803b15801561114d57600080fd5b505af1158015611161573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111859190614fc9565b6111c65760405162461bcd60e51b8152602060048201526012602482015271696e73756666696369656e742066756e647360701b6044820152606401610f20565b600c805460ff60301b1916600160301b17905560005b835181101561126f578381815181106111f7576111f7615bf6565b60200260200101516001600160a01b0316638ea98117896040518263ffffffff1660e01b815260040161122a91906155eb565b600060405180830381600087803b15801561124457600080fd5b505af1158015611258573d6000803e3d6000fd5b50505050808061126790615b5e565b9150506111dc565b50600c805460ff60301b191690556040517fd63ca8cb945956747ee69bfdc3ea754c24a4caf7418db70e46052f7850be4187906112af9089908b906155ff565b60405180910390a15050505050505050565b6000818152600560209081526040808320815160608101835281546001600160a01b039081168252600183015416818501526002820180548451818702810187018652818152879693958601939092919083018282801561134b57602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831161132d575b505050505081525050905060005b81604001515181101561145d5760005b600e5481101561144a576000611413600e838154811061138b5761138b615bf6565b9060005260206000200154856040015185815181106113ac576113ac615bf6565b60200260200101518860046000896040015189815181106113cf576113cf615bf6565b6020908102919091018101516001600160a01b0316825281810192909252604090810160009081208d825290925290205461010090046001600160401b031661381f565b506000818152600f6020526040902054909150156114375750600195945050505050565b508061144281615b5e565b915050611369565b508061145581615b5e565b915050611359565b5060009392505050565b61146f6130d3565b6114776132b4565b6002546001600160a01b03166114a05760405163c1f0c0a160e01b815260040160405180910390fd5b600b546001600160601b03166114c957604051631e9acf1760e31b815260040160405180910390fd5b600b80546001600160601b031690819060006114e58380615ada565b92506101000a8154816001600160601b0302191690836001600160601b0316021790555080600a60008282829054906101000a90046001600160601b031661152d9190615ada565b82546001600160601b039182166101009390930a92830291909202199091161790555060025460405163a9059cbb60e01b81526001600160a01b039091169063a9059cbb906115829085908590600401615632565b602060405180830381600087803b15801561159c57600080fd5b505af11580156115b0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115d49190614fc9565b6115f157604051631e9acf1760e31b815260040160405180910390fd5b5050565b6115fd6132b4565b6116068161360d565b15611626578060405163ac8a27ef60e01b8152600401610f2091906155eb565b601280546001810182556000919091527fbb8a6a4669ba250d26cd7a459eca9d215f8307e33aebe50379bc5a3617ec34440180546001600160a01b0319166001600160a01b0383161790556040517fb7cabbfc11e66731fc77de0444614282023bcbd41d16781c753a431d0af01625906116a19083906155eb565b60405180910390a150565b6116b46132b4565b6002546001600160a01b0316156116de57604051631688c53760e11b815260040160405180910390fd5b600280546001600160a01b039384166001600160a01b03199182161790915560038054929093169116179055565b6001546001600160a01b0316331461175f5760405162461bcd60e51b815260206004820152601660248201527526bab9ba10313290383937b837b9b2b21037bbb732b960511b6044820152606401610f20565b60008054336001600160a01b0319808316821784556001805490911690556040516001600160a01b0390921692909183917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a350565b6117be6132b4565b6040805180820182526000916117ed919084906002908390839080828437600092019190915250612703915050565b6000818152600d602052604090205490915060ff161561182357604051634a0b8fa760e01b815260048101829052602401610f20565b6000818152600d6020526040808220805460ff19166001908117909155600e805491820181559092527fbb7b4a454dc3493923482f07822329ed19e8244eff582cc204f8554c3620c3fd909101829055517fc9583fd3afa3d7f16eb0b88d0268e7d05c09bafa4b21e092cbd1320e1bc8089d906118a39083815260200190565b60405180910390a15050565b6118b76132b4565b600a544790600160601b90046001600160601b0316818111156118f15780826040516354ced18160e11b8152600401610f20929190615675565b818110156109095760006119058284615ac3565b90506000846001600160a01b03168260405160006040518083038185875af1925050503d8060008114611954576040519150601f19603f3d011682016040523d82523d6000602084013e611959565b606091505b505090508061197b5760405163950b247960e01b815260040160405180910390fd5b7f4aed7c8eed0496c8c19ea2681fcca25741c1602342e38b045d9f1e8e905d2e9c85836040516119ac9291906155ff565b60405180910390a15050505050565b6119c36130d3565b6000818152600560205260409020546001600160a01b03166119f857604051630fb532db60e11b815260040160405180910390fd5b60008181526006602052604090208054600160601b90046001600160601b0316903490600c611a278385615a6e565b92506101000a8154816001600160601b0302191690836001600160601b0316021790555034600a600c8282829054906101000a90046001600160601b0316611a6f9190615a6e565b92506101000a8154816001600160601b0302191690836001600160601b03160217905550817f7603b205d03651ee812f803fccde89f1012e545a9c99f0abfea9cedd0fd8e902823484611ac29190615a34565b604051611ad0929190615675565b60405180910390a25050565b6000611ae66130d3565b6020808301356000908152600590915260409020546001600160a01b0316611b2157604051630fb532db60e11b815260040160405180910390fd5b3360009081526004602090815260408083208583013584528083529281902081518083019092525460ff811615158083526101009091046001600160401b03169282019290925290611b8e578360200135336040516379bfd40160e01b8152600401610f209291906157a6565b600c5461ffff16611ba560608601604087016152e5565b61ffff161080611bc8575060c8611bc260608601604087016152e5565b61ffff16115b15611c0257611bdd60608501604086016152e5565b600c5460405163539c34bb60e11b8152610f20929161ffff169060c890600401615729565b600c5462010000900463ffffffff16611c216080860160608701615401565b63ffffffff161115611c6757611c3d6080850160608601615401565b600c54604051637aebf00f60e11b8152610f20929162010000900463ffffffff16906004016158c9565b6101f4611c7a60a0860160808701615401565b63ffffffff161115611cb457611c9660a0850160808601615401565b6101f46040516311ce1afb60e21b8152600401610f209291906158c9565b806020018051611cc390615b79565b6001600160401b031690526020818101516000918291611ceb9188359133918a01359061381f565b90925090506000611d07611d0260a0890189615949565b6138a8565b90506000611d1482613925565b905083611d1f613996565b60208a0135611d3460808c0160608d01615401565b611d4460a08d0160808e01615401565b3386604051602001611d5c9796959493929190615829565b60405160208183030381529060405280519060200120600f600086815260200190815260200160002081905550336001600160a01b0316886020013589600001357feb0e3652e0f44f417695e6e90f2f42c99b65cd7169074c5a654b16b9748c3a4e87878d6040016020810190611dd391906152e5565b8e6060016020810190611de69190615401565b8f6080016020810190611df99190615401565b89604051611e0c969594939291906157ea565b60405180910390a4505033600090815260046020908152604080832089830135845282529091208451815492909501516001600160401b031661010002610100600160481b0319951515959095166001600160481b03199092169190911793909317909255925050505b919050565b6000611e856130d3565b6007546001600160401b031633611e9d600143615ac3565b6040516001600160601b0319606093841b81166020830152914060348201523090921b1660548201526001600160c01b031960c083901b16606882015260700160408051601f1981840301815291905280516020909101209150611f02816001615a4c565b600780546001600160401b0319166001600160401b03928316179055604080516000808252608082018352602080830182815283850183815260608086018581528a86526006855287862093518454935191516001600160601b039182166001600160c01b031990951694909417600160601b9190921602176001600160c01b0316600160c01b9290981691909102969096179055835194850184523385528481018281528585018481528884526005835294909220855181546001600160a01b03199081166001600160a01b0392831617835593516001830180549095169116179092559251805192949391926120009260028501920190614b98565b5061201091506008905084613a26565b50827f1d3015d7ba850fa198dc7b1a3f5d42779313a681035f77c8c03764c61005518d3360405161204191906155eb565b60405180910390a2505090565b6120566130d3565b6002546001600160a01b03163314612081576040516344b0e3c360e01b815260040160405180910390fd5b602081146120a257604051638129bbcd60e01b815260040160405180910390fd5b60006120b0828401846153a1565b6000818152600560205260409020549091506001600160a01b03166120e857604051630fb532db60e11b815260040160405180910390fd5b600081815260066020526040812080546001600160601b03169186919061210f8385615a6e565b92506101000a8154816001600160601b0302191690836001600160601b0316021790555084600a60008282829054906101000a90046001600160601b03166121579190615a6e565b92506101000a8154816001600160601b0302191690836001600160601b03160217905550817f1ced9348ff549fceab2ac57cd3a9de38edaaab274b725ee82c23e8fc8c4eec7a8287846121aa9190615a34565b6040516121b8929190615675565b60405180910390a2505050505050565b6121d06132b4565b60c861ffff8a1611156121fd57888960c860405163539c34bb60e11b8152600401610f2093929190615729565b60008513612221576040516321ea67b360e11b815260048101869052602401610f20565b604080516101208101825261ffff8b1680825263ffffffff808c16602084018190526000848601528b8216606085018190528b8316608086018190528a841660a08701819052938a1660c0870181905260ff808b1660e08901819052908a16610100909801889052600c8054600160c01b90990260ff60c01b19600160b81b9093029290921661ffff60b81b19600160981b90940263ffffffff60981b19600160781b90990298909816600160781b600160b81b0319600160581b90960263ffffffff60581b19600160381b90980297909716600160301b600160781b03196201000090990265ffffffffffff19909c16909a179a909a1796909616979097179390931791909116959095179290921793909316929092179190911790556010869055517f95cb2ddab6d2297c29a4861691de69b3969c464aa4a9c44258b101ff02ff375a906123be908b908b908b908b908b908990899061ffff97909716875263ffffffff95861660208801529385166040870152919093166060850152608084019290925260ff91821660a08401521660c082015260e00190565b60405180910390a1505050505050505050565b6123d96132b4565b6000818152600560205260409020546001600160a01b03168061240f57604051630fb532db60e11b815260040160405180910390fd5b6115f18282613100565b606060006124276008613a32565b905080841061244957604051631390f2a160e01b815260040160405180910390fd5b60006124558486615a34565b905081811180612463575083155b61246d578061246f565b815b9050600061247d8683615ac3565b9050806001600160401b0381111561249757612497615c0c565b6040519080825280602002602001820160405280156124c0578160200160208202803683370190505b50935060005b81811015612510576124e36124db8883615a34565b600890613a3c565b8582815181106124f5576124f5615bf6565b602090810291909101015261250981615b5e565b90506124c6565b505050505b92915050565b6125236130d3565b6000818152600560205260409020546001600160a01b03168061255957604051630fb532db60e11b815260040160405180910390fd5b6000828152600560205260409020600101546001600160a01b031633146125b0576000828152600560205260409081902060010154905163d084e97560e01b8152610f20916001600160a01b0316906004016155eb565b600082815260056020526040908190208054336001600160a01b031991821681178355600190920180549091169055905183917fd4114ab6e9af9f597c52041f32d62dc57c5c4e4c0d4427006069635e216c938691611ad0918591615618565b8161261a81613072565b6126226130d3565b6000838152600560205260409020600201805460641415612656576040516305a48e0f60e01b815260040160405180910390fd5b6001600160a01b03831660009081526004602090815260408083208784529091529020805460ff161561268a575050505050565b8054600160ff1990911681178255825490810183556000838152602090200180546001600160a01b0319166001600160a01b03861617905560405185907f1e980d04aa7648e205713e5e8ea3808672ac163d10936d36f91b2c88ac1575e1906126f49087906155eb565b60405180910390a25050505050565b6000816040516020016127169190615654565b604051602081830303815290604052805190602001209050919050565b8161273d81613072565b6127456130d3565b61274e836112c1565b1561276c57604051631685ecdd60e31b815260040160405180910390fd5b6001600160a01b038216600090815260046020908152604080832086845290915290205460ff166127b45782826040516379bfd40160e01b8152600401610f209291906157a6565b60008381526005602090815260408083206002018054825181850281018501909352808352919290919083018282801561281757602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116127f9575b5050505050905060006001825161282e9190615ac3565b905060005b825181101561293a57846001600160a01b031683828151811061285857612858615bf6565b60200260200101516001600160a01b0316141561292857600083838151811061288357612883615bf6565b60200260200101519050806005600089815260200190815260200160002060020183815481106128b5576128b5615bf6565b600091825260208083209190910180546001600160a01b0319166001600160a01b03949094169390931790925588815260059091526040902060020180548061290057612900615be0565b600082815260209020810160001990810180546001600160a01b03191690550190555061293a565b8061293281615b5e565b915050612833565b506001600160a01b03841660009081526004602090815260408083208884529091529081902080546001600160481b03191690555185907f32158c6058347c1601b2d12bc696ac6901d8a9a9aa3ba10c27ab0a983e8425a7906126f49087906155eb565b60006129ac828401846151b3565b9050806000015160ff166001146129e557805160405163237d181f60e21b815260ff909116600482015260016024820152604401610f20565b8060a001516001600160601b03163414612a295760a08101516040516306acf13560e41b81523460048201526001600160601b039091166024820152604401610f20565b6020808201516000908152600590915260409020546001600160a01b031615612a65576040516326afa43560e11b815260040160405180910390fd5b60005b816060015151811015612b2e57604051806040016040528060011515815260200160006001600160401b03168152506004600084606001518481518110612ab157612ab1615bf6565b6020908102919091018101516001600160a01b0316825281810192909252604090810160009081208684015182528352208251815493909201516001600160401b031661010002610100600160481b0319921515929092166001600160481b03199093169290921717905580612b2681615b5e565b915050612a68565b50604080516060808201835260808401516001600160601b03908116835260a0850151811660208085019182526000858701818152828901805183526006845288832097518854955192516001600160401b0316600160c01b026001600160c01b03938816600160601b026001600160c01b0319909716919097161794909417169390931790945584518084018652868601516001600160a01b03908116825281860184815294880151828801908152925184526005865295909220825181549087166001600160a01b0319918216178255935160018201805491909716941693909317909455925180519192612c2d92600285019290910190614b98565b5050506080810151600a8054600090612c509084906001600160601b0316615a6e565b92506101000a8154816001600160601b0302191690836001600160601b031602179055508060a00151600a600c8282829054906101000a90046001600160601b0316612c9c9190615a6e565b92506101000a8154816001600160601b0302191690836001600160601b03160217905550612cd881602001516008613a2690919063ffffffff16565b50505050565b600e8181548110612cee57600080fd5b600091825260209091200154905081565b81612d0981613072565b612d116130d3565b600083815260056020526040902060018101546001600160a01b03848116911614612cd8576001810180546001600160a01b0319166001600160a01b03851617905560405184907f21a4dad170a6bf476c31bbcf4a16628295b0e450672eec25d7c93308e05344a190612d879033908790615618565b60405180910390a250505050565b600081815260056020526040812054819081906001600160a01b0316606081612dd157604051630fb532db60e11b815260040160405180910390fd5b600086815260066020908152604080832054600583529281902060020180548251818502810185019093528083526001600160601b0380861695600160601b810490911694600160c01b9091046001600160401b0316938893929091839190830182828015612e6957602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311612e4b575b505050505090509450945094509450945091939590929450565b612e8b6132b4565b6002546001600160a01b0316612eb45760405163c1f0c0a160e01b815260040160405180910390fd5b6002546040516370a0823160e01b81526000916001600160a01b0316906370a0823190612ee59030906004016155eb565b60206040518083038186803b158015612efd57600080fd5b505afa158015612f11573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612f359190614fe6565b600a549091506001600160601b031681811115612f695780826040516354ced18160e11b8152600401610f20929190615675565b81811015610909576000612f7d8284615ac3565b60025460405163a9059cbb60e01b81529192506001600160a01b03169063a9059cbb90612fb090879085906004016155ff565b602060405180830381600087803b158015612fca57600080fd5b505af1158015612fde573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906130029190614fc9565b61301f57604051631f01ff1360e21b815260040160405180910390fd5b7f59bfc682b673f8cbf945f1e454df9334834abf7dfe7f92237ca29ecb9b43660084826040516130509291906155ff565b60405180910390a150505050565b6130666132b4565b61306f81613a48565b50565b6000818152600560205260409020546001600160a01b0316806130a857604051630fb532db60e11b815260040160405180910390fd5b336001600160a01b038216146115f15780604051636c51fda960e11b8152600401610f2091906155eb565b600c54600160301b900460ff16156130fe5760405163769dd35360e11b815260040160405180910390fd5b565b60008061310c84613677565b60025491935091506001600160a01b03161580159061313357506001600160601b03821615155b156131e25760025460405163a9059cbb60e01b81526001600160a01b039091169063a9059cbb906131739086906001600160601b038716906004016155ff565b602060405180830381600087803b15801561318d57600080fd5b505af11580156131a1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906131c59190614fc9565b6131e257604051631e9acf1760e31b815260040160405180910390fd5b6000836001600160a01b0316826001600160601b031660405160006040518083038185875af1925050503d8060008114613238576040519150601f19603f3d011682016040523d82523d6000602084013e61323d565b606091505b505090508061325f5760405163950b247960e01b815260040160405180910390fd5b604080516001600160a01b03861681526001600160601b03808616602083015284169181019190915285907f8c74ce8b8cf87f5eb001275c8be27eb34ea2b62bfab6814fcc62192bb63e81c4906060016126f4565b6000546001600160a01b031633146130fe5760405162461bcd60e51b815260206004820152601660248201527527b7363c9031b0b63630b1363290313c9037bbb732b960511b6044820152606401610f20565b604080516060810182526000808252602082018190529181019190915260006133338460000151612703565b6000818152600d602052604090205490915060ff1661336857604051631dfd6e1360e21b815260048101829052602401610f20565b6000818560800151604051602001613381929190615675565b60408051601f1981840301815291815281516020928301206000818152600f909352912054909150806133c757604051631b44092560e11b815260040160405180910390fd5b845160208087015160408089015160608a015160808b015160a08c015193516133f6978a979096959101615875565b60405160208183030381529060405280519060200120811461342b5760405163354a450b60e21b815260040160405180910390fd5b600061343a8660000151613aec565b905080613501578551604051631d2827a760e31b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169163e9413d389161348e91906004016158e0565b60206040518083038186803b1580156134a657600080fd5b505afa1580156134ba573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906134de9190614fe6565b90508061350157855160405163175dadad60e01b8152610f2091906004016158e0565b6000876080015182604051602001613523929190918252602082015260400190565b6040516020818303038152906040528051906020012060001c9050600061354a8983613bc9565b6040805160608101825297885260208801969096529486019490945250929695505050505050565b60005a61138881101561358457600080fd5b61138881039050846040820482031161359c57600080fd5b50823b6135a857600080fd5b60008083516020850160008789f1949350505050565b600081156135eb576011546135e49086908690600160201b900463ffffffff1686613c34565b9050613605565b601154613602908690869063ffffffff1686613cd6565b90505b949350505050565b6000805b60125481101561366e57826001600160a01b03166012828154811061363857613638615bf6565b6000918252602090912001546001600160a01b0316141561365c5750600192915050565b8061366681615b5e565b915050613611565b50600092915050565b60008181526005602090815260408083206006909252822054600290910180546001600160601b0380841694600160601b90940416925b8181101561371957600460008483815481106136cc576136cc615bf6565b60009182526020808320909101546001600160a01b031683528281019390935260409182018120898252909252902080546001600160481b031916905561371281615b5e565b90506136ae565b50600085815260056020526040812080546001600160a01b031990811682556001820180549091169055906137516002830182614bfd565b505060008581526006602052604081205561376d600886613dfb565b506001600160601b038416156137c057600a805485919060009061379b9084906001600160601b0316615ada565b92506101000a8154816001600160601b0302191690836001600160601b031602179055505b6001600160601b038316156138185782600a600c8282829054906101000a90046001600160601b03166137f39190615ada565b92506101000a8154816001600160601b0302191690836001600160601b031602179055505b5050915091565b60408051602081018690526001600160a01b03851691810191909152606081018390526001600160401b03821660808201526000908190819060a00160408051601f198184030181529082905280516020918201209250613884918991849101615675565b60408051808303601f19018152919052805160209091012097909650945050505050565b604080516020810190915260008152816138d15750604080516020810190915260008152612515565b63125fa26760e31b6138e38385615b02565b6001600160e01b0319161461390b57604051632923fee760e11b815260040160405180910390fd5b6139188260048186615a0a565b810190610ee99190615040565b60607f92fd13387c7fe7befbc38d303d6468778fb9731bc4583f17d92989c6fcfdeaaa8260405160240161395e91511515815260200190565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b03199093169290921790915292915050565b6000466139a281613e07565b15613a1f5760646001600160a01b031663a3b1b31d6040518163ffffffff1660e01b815260040160206040518083038186803b1580156139e157600080fd5b505afa1580156139f5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613a199190614fe6565b91505090565b4391505090565b6000610ee98383613e2a565b6000612515825490565b6000610ee98383613e79565b6001600160a01b038116331415613a9b5760405162461bcd60e51b815260206004820152601760248201527621b0b73737ba103a3930b739b332b9103a379039b2b63360491b6044820152606401610f20565b600180546001600160a01b0319166001600160a01b0383811691821790925560008054604051929316917fed8889f560326eb138920d842192f0eb3dd22b4f139c87a2c57538e05bae12789190a350565b600046613af881613e07565b15613bba57610100836001600160401b0316613b12613996565b613b1c9190615ac3565b1180613b385750613b2b613996565b836001600160401b031610155b15613b465750600092915050565b6040516315a03d4160e11b8152606490632b407a8290613b6a9086906004016158e0565b60206040518083038186803b158015613b8257600080fd5b505afa158015613b96573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ee99190614fe6565b50506001600160401b03164090565b6000613bfd8360000151846020015185604001518660600151868860a001518960c001518a60e001518b6101000151613ea3565b60038360200151604051602001613c159291906157bd565b60408051601f1981840301815291905280516020909101209392505050565b600080613c776000368080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506140be92505050565b905060005a613c868888615a34565b613c909190615ac3565b613c9a9085615aa4565b90506000613cb363ffffffff871664e8d4a51000615aa4565b905082613cc08284615a34565b613cca9190615a34565b98975050505050505050565b600080613ce1614183565b905060008113613d07576040516321ea67b360e11b815260048101829052602401610f20565b6000613d496000368080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506140be92505050565b9050600082825a613d5a8b8b615a34565b613d649190615ac3565b613d6e9088615aa4565b613d789190615a34565b613d8a90670de0b6b3a7640000615aa4565b613d949190615a90565b90506000613dad63ffffffff881664e8d4a51000615aa4565b9050613dc481676765c793fa10079d601b1b615ac3565b821115613de45760405163e80fa38160e01b815260040160405180910390fd5b613dee8183615a34565b9998505050505050505050565b6000610ee9838361424e565b600061a4b1821480613e1b575062066eed82145b8061251557505062066eee1490565b6000818152600183016020526040812054613e7157508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155612515565b506000612515565b6000826000018281548110613e9057613e90615bf6565b9060005260206000200154905092915050565b613eac89614341565b613ef55760405162461bcd60e51b815260206004820152601a6024820152797075626c6963206b6579206973206e6f74206f6e20637572766560301b6044820152606401610f20565b613efe88614341565b613f425760405162461bcd60e51b815260206004820152601560248201527467616d6d61206973206e6f74206f6e20637572766560581b6044820152606401610f20565b613f4b83614341565b613f975760405162461bcd60e51b815260206004820152601d60248201527f6347616d6d615769746e657373206973206e6f74206f6e2063757276650000006044820152606401610f20565b613fa082614341565b613feb5760405162461bcd60e51b815260206004820152601c60248201527b73486173685769746e657373206973206e6f74206f6e20637572766560201b6044820152606401610f20565b613ff7878a8887614404565b61403f5760405162461bcd60e51b81526020600482015260196024820152786164647228632a706b2b732a6729213d5f755769746e65737360381b6044820152606401610f20565b600061404b8a87614518565b9050600061405e898b878b86898961457c565b9050600061406f838d8d8a8661468f565b9050808a146140b05760405162461bcd60e51b815260206004820152600d60248201526c34b73b30b634b210383937b7b360991b6044820152606401610f20565b505050505050505050505050565b6000466140ca81613e07565b1561410957606c6001600160a01b031663c6f7de0e6040518163ffffffff1660e01b815260040160206040518083038186803b158015613b8257600080fd5b614112816146cf565b1561366e57600f602160991b016001600160a01b03166349948e0e84604051806080016040528060488152602001615c4660489139604051602001614158929190615541565b6040516020818303038152906040526040518263ffffffff1660e01b8152600401613b6a91906156a1565b600c5460035460408051633fabe5a360e21b81529051600093600160381b900463ffffffff169283151592859283926001600160a01b03169163feaf968c9160048083019260a0929190829003018186803b1580156141e157600080fd5b505afa1580156141f5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614219919061541c565b50945090925084915050801561423d57506142348242615ac3565b8463ffffffff16105b156136055750601054949350505050565b60008181526001830160205260408120548015614337576000614272600183615ac3565b855490915060009061428690600190615ac3565b90508181146142eb5760008660000182815481106142a6576142a6615bf6565b90600052602060002001549050808760000184815481106142c9576142c9615bf6565b6000918252602080832090910192909255918252600188019052604090208390555b85548690806142fc576142fc615be0565b600190038181906000526020600020016000905590558560010160008681526020019081526020016000206000905560019350505050612515565b6000915050612515565b80516000906401000003d0191161438f5760405162461bcd60e51b8152602060048201526012602482015271696e76616c696420782d6f7264696e61746560701b6044820152606401610f20565b60208201516401000003d019116143dd5760405162461bcd60e51b8152602060048201526012602482015271696e76616c696420792d6f7264696e61746560701b6044820152606401610f20565b60208201516401000003d0199080096143fd8360005b6020020151614709565b1492915050565b60006001600160a01b03821661444a5760405162461bcd60e51b815260206004820152600b60248201526a626164207769746e65737360a81b6044820152606401610f20565b60208401516000906001161561446157601c614464565b601b5b9050600070014551231950b75fc4402da1732fc9bebe1985876000602002015109865170014551231950b75fc4402da1732fc9bebe19918203925060009190890987516040805160008082526020909101918290529293506001916144ce91869188918790615683565b6020604051602081039080840390855afa1580156144f0573d6000803e3d6000fd5b5050604051601f1901516001600160a01b039081169088161495505050505050949350505050565b614520614c1b565b61454d60018484604051602001614539939291906155ca565b60405160208183030381529060405261472d565b90505b61455981614341565b6125155780516040805160208101929092526145759101614539565b9050614550565b614584614c1b565b825186516401000003d01990819006910614156145e35760405162461bcd60e51b815260206004820152601e60248201527f706f696e747320696e2073756d206d7573742062652064697374696e637400006044820152606401610f20565b6145ee87898861477b565b6146335760405162461bcd60e51b8152602060048201526016602482015275119a5c9cdd081b5d5b0818da1958dac819985a5b195960521b6044820152606401610f20565b61463e84868561477b565b6146845760405162461bcd60e51b815260206004820152601760248201527614d958dbdb99081b5d5b0818da1958dac819985a5b1959604a1b6044820152606401610f20565b613cca868484614896565b6000600286868685876040516020016146ad96959493929190615570565b60408051601f1981840301815291905280516020909101209695505050505050565b6000600a8214806146e157506101a482145b806146ee575062aa37dc82145b806146fa575061210582145b8061251557505062014a331490565b6000806401000003d01980848509840990506401000003d019600782089392505050565b614735614c1b565b61473e82614959565b815261475361474e8260006143f3565b614994565b602082018190526002900660011415611e76576020810180516401000003d019039052919050565b6000826147b85760405162461bcd60e51b815260206004820152600b60248201526a3d32b9379039b1b0b630b960a91b6044820152606401610f20565b835160208501516000906147ce90600290615ba0565b156147da57601c6147dd565b601b5b9050600070014551231950b75fc4402da1732fc9bebe19838709604080516000808252602090910191829052919250600190614820908390869088908790615683565b6020604051602081039080840390855afa158015614842573d6000803e3d6000fd5b505050602060405103519050600086604051602001614861919061552f565b60408051601f1981840301815291905280516020909101206001600160a01b0392831692169190911498975050505050505050565b61489e614c1b565b8351602080860151855191860151600093849384936148bf939091906149b4565b919450925090506401000003d01985820960011461491b5760405162461bcd60e51b815260206004820152601960248201527834b73b2d1036bab9ba1031329034b73b32b939b29037b3103d60391b6044820152606401610f20565b60405180604001604052806401000003d0198061493a5761493a615bca565b87860981526020016401000003d0198785099052979650505050505050565b805160208201205b6401000003d0198110611e7657604080516020808201939093528151808203840181529082019091528051910120614961565b60006125158260026149ad6401000003d0196001615a34565b901c614a94565b60008080600180826401000003d019896401000003d019038808905060006401000003d0198b6401000003d019038a08905060006149f483838585614b2b565b9098509050614a0588828e88614b4f565b9098509050614a1688828c87614b4f565b90985090506000614a298d878b85614b4f565b9098509050614a3a88828686614b2b565b9098509050614a4b88828e89614b4f565b9098509050818114614a80576401000003d019818a0998506401000003d01982890997506401000003d0198183099650614a84565b8196505b5050505050509450945094915050565b600080614a9f614c39565b6020808252818101819052604082015260608101859052608081018490526401000003d01960a0820152614ad1614c57565b60208160c0846005600019fa925082614b215760405162461bcd60e51b81526020600482015260126024820152716269674d6f64457870206661696c7572652160701b6044820152606401610f20565b5195945050505050565b6000806401000003d0198487096401000003d0198487099097909650945050505050565b600080806401000003d019878509905060006401000003d01987876401000003d019030990506401000003d0198183086401000003d01986890990999098509650505050505050565b828054828255906000526020600020908101928215614bed579160200282015b82811115614bed57825182546001600160a01b0319166001600160a01b03909116178255602090920191600190910190614bb8565b50614bf9929150614c75565b5090565b508054600082559060005260206000209081019061306f9190614c75565b60405180604001604052806002906020820280368337509192915050565b6040518060c001604052806006906020820280368337509192915050565b60405180602001604052806001906020820280368337509192915050565b5b80821115614bf95760008155600101614c76565b8035611e7681615c22565b600082601f830112614ca657600080fd5b604080519081016001600160401b0381118282101715614cc857614cc8615c0c565b8060405250808385604086011115614cdf57600080fd5b60005b6002811015614d01578135835260209283019290910190600101614ce2565b509195945050505050565b8035611e7681615c37565b60008083601f840112614d2957600080fd5b5081356001600160401b03811115614d4057600080fd5b602083019150836020828501011115614d5857600080fd5b9250929050565b600082601f830112614d7057600080fd5b81356001600160401b03811115614d8957614d89615c0c565b614d9c601f8201601f19166020016159da565b818152846020838601011115614db157600080fd5b816020850160208301376000918101602001919091529392505050565b600060c08284031215614de057600080fd5b614de861598f565b905081356001600160401b038082168214614e0257600080fd5b81835260208401356020840152614e1b60408501614e81565b6040840152614e2c60608501614e81565b6060840152614e3d60808501614c8a565b608084015260a0840135915080821115614e5657600080fd5b50614e6384828501614d5f565b60a08301525092915050565b803561ffff81168114611e7657600080fd5b803563ffffffff81168114611e7657600080fd5b803560ff81168114611e7657600080fd5b80516001600160501b0381168114611e7657600080fd5b80356001600160601b0381168114611e7657600080fd5b600060208284031215614ee657600080fd5b8135610ee981615c22565b60008060408385031215614f0457600080fd5b8235614f0f81615c22565b91506020830135614f1f81615c22565b809150509250929050565b60008060008060608587031215614f4057600080fd5b8435614f4b81615c22565b93506020850135925060408501356001600160401b03811115614f6d57600080fd5b614f7987828801614d17565b95989497509550505050565b600060408284031215614f9757600080fd5b82604083011115614fa757600080fd5b50919050565b600060408284031215614fbf57600080fd5b610ee98383614c95565b600060208284031215614fdb57600080fd5b8151610ee981615c37565b600060208284031215614ff857600080fd5b5051919050565b6000806020838503121561501257600080fd5b82356001600160401b0381111561502857600080fd5b61503485828601614d17565b90969095509350505050565b60006020828403121561505257600080fd5b604051602081016001600160401b038111828210171561507457615074615c0c565b604052823561508281615c37565b81529392505050565b60008060008385036101e08112156150a257600080fd5b6101a0808212156150b257600080fd5b6150ba6159b7565b91506150c68787614c95565b82526150d58760408801614c95565b60208301526080860135604083015260a0860135606083015260c0860135608083015261510460e08701614c8a565b60a083015261010061511888828901614c95565b60c084015261512b886101408901614c95565b60e0840152610180870135908301529093508401356001600160401b0381111561515457600080fd5b61516086828701614dce565b9250506151706101c08501614d0c565b90509250925092565b60006020828403121561518b57600080fd5b81356001600160401b038111156151a157600080fd5b820160c08185031215610ee957600080fd5b600060208083850312156151c657600080fd5b82356001600160401b03808211156151dd57600080fd5b9084019060c082870312156151f157600080fd5b6151f961598f565b61520283614e95565b81528383013584820152604083013561521a81615c22565b604082015260608301358281111561523157600080fd5b8301601f8101881361524257600080fd5b80358381111561525457615254615c0c565b8060051b93506152658685016159da565b8181528681019083880186850189018c101561528057600080fd5b600096505b838710156152af578035945061529a85615c22565b84835260019690960195918801918801615285565b506060850152506152c591505060808401614ebd565b60808201526152d660a08401614ebd565b60a08201529695505050505050565b6000602082840312156152f757600080fd5b610ee982614e6f565b60008060008060008060008060006101208a8c03121561531f57600080fd5b6153288a614e6f565b985061533660208b01614e81565b975061534460408b01614e81565b965061535260608b01614e81565b955060808a0135945061536760a08b01614e81565b935061537560c08b01614e81565b925061538360e08b01614e95565b91506153926101008b01614e95565b90509295985092959850929598565b6000602082840312156153b357600080fd5b5035919050565b600080604083850312156153cd57600080fd5b823591506020830135614f1f81615c22565b600080604083850312156153f257600080fd5b50508035926020909101359150565b60006020828403121561541357600080fd5b610ee982614e81565b600080600080600060a0868803121561543457600080fd5b61543d86614ea6565b945060208601519350604086015192506060860151915061546060808701614ea6565b90509295509295909350565b600081518084526020808501945080840160005b838110156154a55781516001600160a01b031687529582019590820190600101615480565b509495945050505050565b8060005b6002811015612cd85781518452602093840193909101906001016154b4565b600081518084526020808501945080840160005b838110156154a5578151875295820195908201906001016154e7565b6000815180845261551b816020860160208601615b32565b601f01601f19169290920160200192915050565b61553981836154b0565b604001919050565b60008351615553818460208801615b32565b835190830190615567818360208801615b32565b01949350505050565b86815261558060208201876154b0565b61558d60608201866154b0565b61559a60a08201856154b0565b6155a760e08201846154b0565b60609190911b6001600160601b0319166101208201526101340195945050505050565b8381526155da60208201846154b0565b606081019190915260800192915050565b6001600160a01b0391909116815260200190565b6001600160a01b03929092168252602082015260400190565b6001600160a01b0392831681529116602082015260400190565b6001600160a01b039290921682526001600160601b0316602082015260400190565b6040810161251582846154b0565b602081526000610ee960208301846154d3565b918252602082015260400190565b93845260ff9290921660208401526040830152606082015260800190565b602081526000610ee96020830184615503565b6020815260ff82511660208201526020820151604082015260018060a01b0360408301511660608201526000606083015160c060808401526156f960e084018261546c565b60808501516001600160601b0390811660a0868101919091529095015190941660c0909301929092525090919050565b61ffff93841681529183166020830152909116604082015260600190565b60006060820161ffff86168352602063ffffffff86168185015260606040850152818551808452608086019150828701935060005b818110156157985784518352938301939183019160010161577c565b509098975050505050505050565b9182526001600160a01b0316602082015260400190565b82815260608101610ee960208301846154b0565b82815260406020820152600061360560408301846154d3565b86815285602082015261ffff85166040820152600063ffffffff808616606084015280851660808401525060c060a0830152613cca60c0830184615503565b878152602081018790526040810186905263ffffffff8581166060830152841660808201526001600160a01b03831660a082015260e060c08201819052600090613dee90830184615503565b8781526001600160401b03871660208201526040810186905263ffffffff8581166060830152841660808201526001600160a01b03831660a082015260e060c08201819052600090613dee90830184615503565b63ffffffff92831681529116602082015260400190565b6001600160401b0391909116815260200190565b6001600160601b038681168252851660208201526001600160401b03841660408201526001600160a01b038316606082015260a06080820181905260009061593e9083018461546c565b979650505050505050565b6000808335601e1984360301811261596057600080fd5b8301803591506001600160401b0382111561597a57600080fd5b602001915036819003821315614d5857600080fd5b60405160c081016001600160401b03811182821017156159b1576159b1615c0c565b60405290565b60405161012081016001600160401b03811182821017156159b1576159b1615c0c565b604051601f8201601f191681016001600160401b0381118282101715615a0257615a02615c0c565b604052919050565b60008085851115615a1a57600080fd5b83861115615a2757600080fd5b5050820193919092039150565b60008219821115615a4757615a47615bb4565b500190565b60006001600160401b0382811684821680830382111561556757615567615bb4565b60006001600160601b0382811684821680830382111561556757615567615bb4565b600082615a9f57615a9f615bca565b500490565b6000816000190483118215151615615abe57615abe615bb4565b500290565b600082821015615ad557615ad5615bb4565b500390565b60006001600160601b0383811690831681811015615afa57615afa615bb4565b039392505050565b6001600160e01b03198135818116916004851015615b2a5780818660040360031b1b83161692505b505092915050565b60005b83811015615b4d578181015183820152602001615b35565b83811115612cd85750506000910152565b6000600019821415615b7257615b72615bb4565b5060010190565b60006001600160401b0382811680821415615b9657615b96615bb4565b6001019392505050565b600082615baf57615baf615bca565b500690565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052601260045260246000fd5b634e487b7160e01b600052603160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6001600160a01b038116811461306f57600080fd5b801515811461306f57600080fdfe307866666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666a164736f6c6343000806000a", + Bin: "0x60a06040523480156200001157600080fd5b5060405162005e7438038062005e74833981016040819052620000349162000183565b33806000816200008b5760405162461bcd60e51b815260206004820152601860248201527f43616e6e6f7420736574206f776e657220746f207a65726f000000000000000060448201526064015b60405180910390fd5b600080546001600160a01b0319166001600160a01b0384811691909117909155811615620000be57620000be81620000d7565b50505060601b6001600160601b031916608052620001b5565b6001600160a01b038116331415620001325760405162461bcd60e51b815260206004820152601760248201527f43616e6e6f74207472616e7366657220746f2073656c66000000000000000000604482015260640162000082565b600180546001600160a01b0319166001600160a01b0383811691821790925560008054604051929316917fed8889f560326eb138920d842192f0eb3dd22b4f139c87a2c57538e05bae12789190a350565b6000602082840312156200019657600080fd5b81516001600160a01b0381168114620001ae57600080fd5b9392505050565b60805160601c615c99620001db600039600081816104f401526134590152615c996000f3fe6080604052600436106101e05760003560e01c8062012291146101e5578063088070f5146102125780630ae09540146102e057806315c48b841461030257806318e3dd271461032a5780631b6b6d2314610369578063294daa49146103965780632f622e6b146103b2578063301f42e9146103d2578063405b84fa146103f257806340d6bb821461041257806341af6c871461043d57806351cff8d91461046d5780635d06b4ab1461048d57806364d51a2a146104ad57806365982744146104c2578063689c4517146104e257806372e9d5651461051657806379ba5097146105365780637bce14d11461054b5780638402595e1461056b57806386fe91c71461058b5780638da5cb5b146105ab57806395b55cfc146105c95780639b1c385e146105dc5780639d40a6fd1461060a578063a21a23e414610637578063a4c0ed361461064c578063a63e0bfb1461066c578063aa433aff1461068c578063aefb212f146106ac578063b2a7cac5146106d9578063bec4c08c146106f9578063caf70c4a14610719578063cb63179714610739578063ce3f471914610759578063d98e620e1461076c578063dac83d291461078c578063dc311dd3146107ac578063e72f6e30146107dd578063ee9d2d38146107fd578063f2fde38b1461082a575b600080fd5b3480156101f157600080fd5b506101fa61084a565b60405161020993929190615746565b60405180910390f35b34801561021e57600080fd5b50600c546102839061ffff81169063ffffffff62010000820481169160ff600160301b8204811692600160381b8304811692600160581b8104821692600160781b8204831692600160981b83041691600160b81b8104821691600160c01b9091041689565b6040805161ffff909a168a5263ffffffff98891660208b01529615159689019690965293861660608801529185166080870152841660a08601529290921660c084015260ff91821660e08401521661010082015261012001610209565b3480156102ec57600080fd5b506103006102fb3660046153b9565b6108c6565b005b34801561030e57600080fd5b5061031760c881565b60405161ffff9091168152602001610209565b34801561033657600080fd5b50600a5461035190600160601b90046001600160601b031681565b6040516001600160601b039091168152602001610209565b34801561037557600080fd5b50600254610389906001600160a01b031681565b60405161020991906155ea565b3480156103a257600080fd5b5060405160028152602001610209565b3480156103be57600080fd5b506103006103cd366004614ed3565b61090e565b3480156103de57600080fd5b506103516103ed36600461508a565b610a5a565b3480156103fe57600080fd5b5061030061040d3660046153b9565b610ef0565b34801561041e57600080fd5b506104286101f481565b60405163ffffffff9091168152602001610209565b34801561044957600080fd5b5061045d6104583660046153a0565b6112c1565b6040519015158152602001610209565b34801561047957600080fd5b50610300610488366004614ed3565b611467565b34801561049957600080fd5b506103006104a8366004614ed3565b6115f5565b3480156104b957600080fd5b50610317606481565b3480156104ce57600080fd5b506103006104dd366004614ef0565b6116ac565b3480156104ee57600080fd5b506103897f000000000000000000000000000000000000000000000000000000000000000081565b34801561052257600080fd5b50600354610389906001600160a01b031681565b34801561054257600080fd5b5061030061170c565b34801561055757600080fd5b50610300610566366004614f84565b6117b6565b34801561057757600080fd5b50610300610586366004614ed3565b6118af565b34801561059757600080fd5b50600a54610351906001600160601b031681565b3480156105b757600080fd5b506000546001600160a01b0316610389565b6103006105d73660046153a0565b6119bb565b3480156105e857600080fd5b506105fc6105f7366004615178565b611adc565b604051908152602001610209565b34801561061657600080fd5b5060075461062a906001600160401b031681565b60405161020991906158df565b34801561064357600080fd5b506105fc611e7b565b34801561065857600080fd5b50610300610667366004614f29565b61204e565b34801561067857600080fd5b506103006106873660046152ff565b6121c8565b34801561069857600080fd5b506103006106a73660046153a0565b6123d1565b3480156106b857600080fd5b506106cc6106c73660046153de565b612419565b6040516102099190615661565b3480156106e557600080fd5b506103006106f43660046153a0565b61251b565b34801561070557600080fd5b506103006107143660046153b9565b612610565b34801561072557600080fd5b506105fc610734366004614fac565b612702565b34801561074557600080fd5b506103006107543660046153b9565b612732565b610300610767366004614ffe565b61299d565b34801561077857600080fd5b506105fc6107873660046153a0565b612cdd565b34801561079857600080fd5b506103006107a73660046153b9565b612cfe565b3480156107b857600080fd5b506107cc6107c73660046153a0565b612d94565b6040516102099594939291906158f3565b3480156107e957600080fd5b506103006107f8366004614ed3565b612e82565b34801561080957600080fd5b506105fc6108183660046153a0565b600f6020526000908152604090205481565b34801561083657600080fd5b50610300610845366004614ed3565b61305d565b600c54600e805460408051602080840282018101909252828152600094859460609461ffff8316946201000090930463ffffffff169391928391908301828280156108b457602002820191906000526020600020905b8154815260200190600101908083116108a0575b50505050509050925092509250909192565b816108d081613071565b6108d86130d2565b6108e1836112c1565b156108ff57604051631685ecdd60e31b815260040160405180910390fd5b61090983836130ff565b505050565b6109166130d2565b61091e6132b3565b600b54600160601b90046001600160601b031661094e57604051631e9acf1760e31b815260040160405180910390fd5b600b8054600160601b90046001600160601b0316908190600c6109718380615ad9565b92506101000a8154816001600160601b0302191690836001600160601b0316021790555080600a600c8282829054906101000a90046001600160601b03166109b99190615ad9565b92506101000a8154816001600160601b0302191690836001600160601b031602179055506000826001600160a01b0316826001600160601b031660405160006040518083038185875af1925050503d8060008114610a33576040519150601f19603f3d011682016040523d82523d6000602084013e610a38565b606091505b50509050806109095760405163950b247960e01b815260040160405180910390fd5b6000610a646130d2565b60005a90506000610a758686613306565b90506000856060015163ffffffff166001600160401b03811115610a9b57610a9b615c0b565b604051908082528060200260200182016040528015610ac4578160200160208202803683370190505b50905060005b866060015163ffffffff16811015610b3b57826040015181604051602001610af3929190615674565b6040516020818303038152906040528051906020012060001c828281518110610b1e57610b1e615bf5565b602090810291909101015280610b3381615b5d565b915050610aca565b50602080830180516000908152600f9092526040808320839055905190518291631fe543e360e01b91610b73919086906024016157d0565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b031990941693909317909252600c805460ff60301b1916600160301b1790559089015160808a0151919250600091610bd89163ffffffff169084613571565b600c805460ff60301b1916905560208a810151600090815260069091526040902054909150600160c01b90046001600160401b0316610c18816001615a4b565b6020808c0151600090815260069091526040812080546001600160401b0393909316600160c01b026001600160c01b039093169290921790915560a08b01518051610c6590600190615ac2565b81518110610c7557610c75615bf5565b602091010151600c5460f89190911c6001149150600090610ca6908a90600160581b900463ffffffff163a856135bd565b90508115610d9e576020808d01516000908152600690915260409020546001600160601b03808316600160601b909204161015610cf657604051631e9acf1760e31b815260040160405180910390fd5b60208c81015160009081526006909152604090208054829190600c90610d2d908490600160601b90046001600160601b0316615ad9565b92506101000a8154816001600160601b0302191690836001600160601b0316021790555080600b600c8282829054906101000a90046001600160601b0316610d759190615a6d565b92506101000a8154816001600160601b0302191690836001600160601b03160217905550610e79565b6020808d01516000908152600690915260409020546001600160601b0380831691161015610ddf57604051631e9acf1760e31b815260040160405180910390fd5b6020808d015160009081526006909152604081208054839290610e0c9084906001600160601b0316615ad9565b92506101000a8154816001600160601b0302191690836001600160601b0316021790555080600b60008282829054906101000a90046001600160601b0316610e549190615a6d565b92506101000a8154816001600160601b0302191690836001600160601b031602179055505b8b6020015188602001517f49580fdfd9497e1ed5c1b1cec0495087ae8e3f1267470ec2fb015db32e3d6aa78a604001518488604051610ed6939291909283526001600160601b039190911660208301521515604082015260600190565b60405180910390a3985050505050505050505b9392505050565b610ef86130d2565b610f018161360c565b610f295780604051635428d44960e01b8152600401610f2091906155ea565b60405180910390fd5b600080600080610f3886612d94565b945094505093509350336001600160a01b0316826001600160a01b031614610f9b5760405162461bcd60e51b81526020600482015260166024820152752737ba1039bab139b1b934b83a34b7b71037bbb732b960511b6044820152606401610f20565b610fa4866112c1565b15610fea5760405162461bcd60e51b815260206004820152601660248201527550656e64696e6720726571756573742065786973747360501b6044820152606401610f20565b60006040518060c00160405280610fff600290565b60ff168152602001888152602001846001600160a01b03168152602001838152602001866001600160601b03168152602001856001600160601b0316815250905060008160405160200161105391906156b3565b604051602081830303815290604052905061106d88613676565b505060405163ce3f471960e01b81526001600160a01b0388169063ce3f4719906001600160601b038816906110a69085906004016156a0565b6000604051808303818588803b1580156110bf57600080fd5b505af11580156110d3573d6000803e3d6000fd5b50506002546001600160a01b0316158015935091506110fc905057506001600160601b03861615155b156111c65760025460405163a9059cbb60e01b81526001600160a01b039091169063a9059cbb90611133908a908a90600401615631565b602060405180830381600087803b15801561114d57600080fd5b505af1158015611161573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111859190614fc8565b6111c65760405162461bcd60e51b8152602060048201526012602482015271696e73756666696369656e742066756e647360701b6044820152606401610f20565b600c805460ff60301b1916600160301b17905560005b835181101561126f578381815181106111f7576111f7615bf5565b60200260200101516001600160a01b0316638ea98117896040518263ffffffff1660e01b815260040161122a91906155ea565b600060405180830381600087803b15801561124457600080fd5b505af1158015611258573d6000803e3d6000fd5b50505050808061126790615b5d565b9150506111dc565b50600c805460ff60301b191690556040517fd63ca8cb945956747ee69bfdc3ea754c24a4caf7418db70e46052f7850be4187906112af9089908b906155fe565b60405180910390a15050505050505050565b6000818152600560209081526040808320815160608101835281546001600160a01b039081168252600183015416818501526002820180548451818702810187018652818152879693958601939092919083018282801561134b57602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831161132d575b505050505081525050905060005b81604001515181101561145d5760005b600e5481101561144a576000611413600e838154811061138b5761138b615bf5565b9060005260206000200154856040015185815181106113ac576113ac615bf5565b60200260200101518860046000896040015189815181106113cf576113cf615bf5565b6020908102919091018101516001600160a01b0316825281810192909252604090810160009081208d825290925290205461010090046001600160401b031661381e565b506000818152600f6020526040902054909150156114375750600195945050505050565b508061144281615b5d565b915050611369565b508061145581615b5d565b915050611359565b5060009392505050565b61146f6130d2565b6114776132b3565b6002546001600160a01b03166114a05760405163c1f0c0a160e01b815260040160405180910390fd5b600b546001600160601b03166114c957604051631e9acf1760e31b815260040160405180910390fd5b600b80546001600160601b031690819060006114e58380615ad9565b92506101000a8154816001600160601b0302191690836001600160601b0316021790555080600a60008282829054906101000a90046001600160601b031661152d9190615ad9565b82546001600160601b039182166101009390930a92830291909202199091161790555060025460405163a9059cbb60e01b81526001600160a01b039091169063a9059cbb906115829085908590600401615631565b602060405180830381600087803b15801561159c57600080fd5b505af11580156115b0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115d49190614fc8565b6115f157604051631e9acf1760e31b815260040160405180910390fd5b5050565b6115fd6132b3565b6116068161360c565b15611626578060405163ac8a27ef60e01b8152600401610f2091906155ea565b601280546001810182556000919091527fbb8a6a4669ba250d26cd7a459eca9d215f8307e33aebe50379bc5a3617ec34440180546001600160a01b0319166001600160a01b0383161790556040517fb7cabbfc11e66731fc77de0444614282023bcbd41d16781c753a431d0af01625906116a19083906155ea565b60405180910390a150565b6116b46132b3565b6002546001600160a01b0316156116de57604051631688c53760e11b815260040160405180910390fd5b600280546001600160a01b039384166001600160a01b03199182161790915560038054929093169116179055565b6001546001600160a01b0316331461175f5760405162461bcd60e51b815260206004820152601660248201527526bab9ba10313290383937b837b9b2b21037bbb732b960511b6044820152606401610f20565b60008054336001600160a01b0319808316821784556001805490911690556040516001600160a01b0390921692909183917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a350565b6117be6132b3565b6040805180820182526000916117ed919084906002908390839080828437600092019190915250612702915050565b6000818152600d602052604090205490915060ff161561182357604051634a0b8fa760e01b815260048101829052602401610f20565b6000818152600d6020526040808220805460ff19166001908117909155600e805491820181559092527fbb7b4a454dc3493923482f07822329ed19e8244eff582cc204f8554c3620c3fd909101829055517fc9583fd3afa3d7f16eb0b88d0268e7d05c09bafa4b21e092cbd1320e1bc8089d906118a39083815260200190565b60405180910390a15050565b6118b76132b3565b600a544790600160601b90046001600160601b0316818111156118f15780826040516354ced18160e11b8152600401610f20929190615674565b818110156109095760006119058284615ac2565b90506000846001600160a01b03168260405160006040518083038185875af1925050503d8060008114611954576040519150601f19603f3d011682016040523d82523d6000602084013e611959565b606091505b505090508061197b5760405163950b247960e01b815260040160405180910390fd5b7f4aed7c8eed0496c8c19ea2681fcca25741c1602342e38b045d9f1e8e905d2e9c85836040516119ac9291906155fe565b60405180910390a15050505050565b6119c36130d2565b6000818152600560205260409020546001600160a01b03166119f857604051630fb532db60e11b815260040160405180910390fd5b60008181526006602052604090208054600160601b90046001600160601b0316903490600c611a278385615a6d565b92506101000a8154816001600160601b0302191690836001600160601b0316021790555034600a600c8282829054906101000a90046001600160601b0316611a6f9190615a6d565b92506101000a8154816001600160601b0302191690836001600160601b03160217905550817f7603b205d03651ee812f803fccde89f1012e545a9c99f0abfea9cedd0fd8e902823484611ac29190615a33565b604051611ad0929190615674565b60405180910390a25050565b6000611ae66130d2565b6020808301356000908152600590915260409020546001600160a01b0316611b2157604051630fb532db60e11b815260040160405180910390fd5b3360009081526004602090815260408083208583013584528083529281902081518083019092525460ff811615158083526101009091046001600160401b03169282019290925290611b8e578360200135336040516379bfd40160e01b8152600401610f209291906157a5565b600c5461ffff16611ba560608601604087016152e4565b61ffff161080611bc8575060c8611bc260608601604087016152e4565b61ffff16115b15611c0257611bdd60608501604086016152e4565b600c5460405163539c34bb60e11b8152610f20929161ffff169060c890600401615728565b600c5462010000900463ffffffff16611c216080860160608701615400565b63ffffffff161115611c6757611c3d6080850160608601615400565b600c54604051637aebf00f60e11b8152610f20929162010000900463ffffffff16906004016158c8565b6101f4611c7a60a0860160808701615400565b63ffffffff161115611cb457611c9660a0850160808601615400565b6101f46040516311ce1afb60e21b8152600401610f209291906158c8565b806020018051611cc390615b78565b6001600160401b031690526020818101516000918291611ceb9188359133918a01359061381e565b90925090506000611d07611d0260a0890189615948565b6138a7565b90506000611d1482613924565b905083611d1f613995565b60208a0135611d3460808c0160608d01615400565b611d4460a08d0160808e01615400565b3386604051602001611d5c9796959493929190615828565b60405160208183030381529060405280519060200120600f600086815260200190815260200160002081905550336001600160a01b0316886020013589600001357feb0e3652e0f44f417695e6e90f2f42c99b65cd7169074c5a654b16b9748c3a4e87878d6040016020810190611dd391906152e4565b8e6060016020810190611de69190615400565b8f6080016020810190611df99190615400565b89604051611e0c969594939291906157e9565b60405180910390a4505033600090815260046020908152604080832089830135845282529091208451815492909501516001600160401b031661010002610100600160481b0319951515959095166001600160481b03199092169190911793909317909255925050505b919050565b6000611e856130d2565b6007546001600160401b031633611e9d600143615ac2565b6040516001600160601b0319606093841b81166020830152914060348201523090921b1660548201526001600160c01b031960c083901b16606882015260700160408051601f1981840301815291905280516020909101209150611f02816001615a4b565b600780546001600160401b0319166001600160401b03928316179055604080516000808252608082018352602080830182815283850183815260608086018581528a86526006855287862093518454935191516001600160601b039182166001600160c01b031990951694909417600160601b9190921602176001600160c01b0316600160c01b9290981691909102969096179055835194850184523385528481018281528585018481528884526005835294909220855181546001600160a01b03199081166001600160a01b0392831617835593516001830180549095169116179092559251805192949391926120009260028501920190614b97565b5061201091506008905084613a25565b50827f1d3015d7ba850fa198dc7b1a3f5d42779313a681035f77c8c03764c61005518d3360405161204191906155ea565b60405180910390a2505090565b6120566130d2565b6002546001600160a01b03163314612081576040516344b0e3c360e01b815260040160405180910390fd5b602081146120a257604051638129bbcd60e01b815260040160405180910390fd5b60006120b0828401846153a0565b6000818152600560205260409020549091506001600160a01b03166120e857604051630fb532db60e11b815260040160405180910390fd5b600081815260066020526040812080546001600160601b03169186919061210f8385615a6d565b92506101000a8154816001600160601b0302191690836001600160601b0316021790555084600a60008282829054906101000a90046001600160601b03166121579190615a6d565b92506101000a8154816001600160601b0302191690836001600160601b03160217905550817f1ced9348ff549fceab2ac57cd3a9de38edaaab274b725ee82c23e8fc8c4eec7a8287846121aa9190615a33565b6040516121b8929190615674565b60405180910390a2505050505050565b6121d06132b3565b60c861ffff8a1611156121fd57888960c860405163539c34bb60e11b8152600401610f2093929190615728565b60008513612221576040516321ea67b360e11b815260048101869052602401610f20565b604080516101208101825261ffff8b1680825263ffffffff808c16602084018190526000848601528b8216606085018190528b8316608086018190528a841660a08701819052938a1660c0870181905260ff808b1660e08901819052908a16610100909801889052600c8054600160c01b90990260ff60c01b19600160b81b9093029290921661ffff60b81b19600160981b90940263ffffffff60981b19600160781b90990298909816600160781b600160b81b0319600160581b90960263ffffffff60581b19600160381b90980297909716600160301b600160781b03196201000090990265ffffffffffff19909c16909a179a909a1796909616979097179390931791909116959095179290921793909316929092179190911790556010869055517f95cb2ddab6d2297c29a4861691de69b3969c464aa4a9c44258b101ff02ff375a906123be908b908b908b908b908b908990899061ffff97909716875263ffffffff95861660208801529385166040870152919093166060850152608084019290925260ff91821660a08401521660c082015260e00190565b60405180910390a1505050505050505050565b6123d96132b3565b6000818152600560205260409020546001600160a01b03168061240f57604051630fb532db60e11b815260040160405180910390fd5b6115f182826130ff565b606060006124276008613a31565b905080841061244957604051631390f2a160e01b815260040160405180910390fd5b60006124558486615a33565b905081811180612463575083155b61246d578061246f565b815b9050600061247d8683615ac2565b9050806001600160401b0381111561249757612497615c0b565b6040519080825280602002602001820160405280156124c0578160200160208202803683370190505b50935060005b81811015612510576124e36124db8883615a33565b600890613a3b565b8582815181106124f5576124f5615bf5565b602090810291909101015261250981615b5d565b90506124c6565b505050505b92915050565b6125236130d2565b6000818152600560205260409020546001600160a01b03168061255957604051630fb532db60e11b815260040160405180910390fd5b6000828152600560205260409020600101546001600160a01b031633146125b0576000828152600560205260409081902060010154905163d084e97560e01b8152610f20916001600160a01b0316906004016155ea565b600082815260056020526040908190208054336001600160a01b031991821681178355600190920180549091169055905183917fd4114ab6e9af9f597c52041f32d62dc57c5c4e4c0d4427006069635e216c938691611ad0918591615617565b8161261a81613071565b6126226130d2565b6001600160a01b03821660009081526004602090815260408083208684529091529020805460ff16156126555750505050565b6000848152600560205260409020600201805460641415612689576040516305a48e0f60e01b815260040160405180910390fd5b8154600160ff1990911681178355815490810182556000828152602090200180546001600160a01b0319166001600160a01b03861617905560405185907f1e980d04aa7648e205713e5e8ea3808672ac163d10936d36f91b2c88ac1575e1906126f39087906155ea565b60405180910390a25050505050565b6000816040516020016127159190615653565b604051602081830303815290604052805190602001209050919050565b8161273c81613071565b6127446130d2565b61274d836112c1565b1561276b57604051631685ecdd60e31b815260040160405180910390fd5b6001600160a01b038216600090815260046020908152604080832086845290915290205460ff166127b35782826040516379bfd40160e01b8152600401610f209291906157a5565b60008381526005602090815260408083206002018054825181850281018501909352808352919290919083018282801561281657602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116127f8575b5050505050905060006001825161282d9190615ac2565b905060005b825181101561293957846001600160a01b031683828151811061285757612857615bf5565b60200260200101516001600160a01b0316141561292757600083838151811061288257612882615bf5565b60200260200101519050806005600089815260200190815260200160002060020183815481106128b4576128b4615bf5565b600091825260208083209190910180546001600160a01b0319166001600160a01b0394909416939093179092558881526005909152604090206002018054806128ff576128ff615bdf565b600082815260209020810160001990810180546001600160a01b031916905501905550612939565b8061293181615b5d565b915050612832565b506001600160a01b03841660009081526004602090815260408083208884529091529081902080546001600160481b03191690555185907f32158c6058347c1601b2d12bc696ac6901d8a9a9aa3ba10c27ab0a983e8425a7906126f39087906155ea565b60006129ab828401846151b2565b9050806000015160ff166001146129e457805160405163237d181f60e21b815260ff909116600482015260016024820152604401610f20565b8060a001516001600160601b03163414612a285760a08101516040516306acf13560e41b81523460048201526001600160601b039091166024820152604401610f20565b6020808201516000908152600590915260409020546001600160a01b031615612a64576040516326afa43560e11b815260040160405180910390fd5b60005b816060015151811015612b2d57604051806040016040528060011515815260200160006001600160401b03168152506004600084606001518481518110612ab057612ab0615bf5565b6020908102919091018101516001600160a01b0316825281810192909252604090810160009081208684015182528352208251815493909201516001600160401b031661010002610100600160481b0319921515929092166001600160481b03199093169290921717905580612b2581615b5d565b915050612a67565b50604080516060808201835260808401516001600160601b03908116835260a0850151811660208085019182526000858701818152828901805183526006845288832097518854955192516001600160401b0316600160c01b026001600160c01b03938816600160601b026001600160c01b0319909716919097161794909417169390931790945584518084018652868601516001600160a01b03908116825281860184815294880151828801908152925184526005865295909220825181549087166001600160a01b0319918216178255935160018201805491909716941693909317909455925180519192612c2c92600285019290910190614b97565b5050506080810151600a8054600090612c4f9084906001600160601b0316615a6d565b92506101000a8154816001600160601b0302191690836001600160601b031602179055508060a00151600a600c8282829054906101000a90046001600160601b0316612c9b9190615a6d565b92506101000a8154816001600160601b0302191690836001600160601b03160217905550612cd781602001516008613a2590919063ffffffff16565b50505050565b600e8181548110612ced57600080fd5b600091825260209091200154905081565b81612d0881613071565b612d106130d2565b600083815260056020526040902060018101546001600160a01b03848116911614612cd7576001810180546001600160a01b0319166001600160a01b03851617905560405184907f21a4dad170a6bf476c31bbcf4a16628295b0e450672eec25d7c93308e05344a190612d869033908790615617565b60405180910390a250505050565b600081815260056020526040812054819081906001600160a01b0316606081612dd057604051630fb532db60e11b815260040160405180910390fd5b600086815260066020908152604080832054600583529281902060020180548251818502810185019093528083526001600160601b0380861695600160601b810490911694600160c01b9091046001600160401b0316938893929091839190830182828015612e6857602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311612e4a575b505050505090509450945094509450945091939590929450565b612e8a6132b3565b6002546001600160a01b0316612eb35760405163c1f0c0a160e01b815260040160405180910390fd5b6002546040516370a0823160e01b81526000916001600160a01b0316906370a0823190612ee49030906004016155ea565b60206040518083038186803b158015612efc57600080fd5b505afa158015612f10573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612f349190614fe5565b600a549091506001600160601b031681811115612f685780826040516354ced18160e11b8152600401610f20929190615674565b81811015610909576000612f7c8284615ac2565b60025460405163a9059cbb60e01b81529192506001600160a01b03169063a9059cbb90612faf90879085906004016155fe565b602060405180830381600087803b158015612fc957600080fd5b505af1158015612fdd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906130019190614fc8565b61301e57604051631f01ff1360e21b815260040160405180910390fd5b7f59bfc682b673f8cbf945f1e454df9334834abf7dfe7f92237ca29ecb9b436600848260405161304f9291906155fe565b60405180910390a150505050565b6130656132b3565b61306e81613a47565b50565b6000818152600560205260409020546001600160a01b0316806130a757604051630fb532db60e11b815260040160405180910390fd5b336001600160a01b038216146115f15780604051636c51fda960e11b8152600401610f2091906155ea565b600c54600160301b900460ff16156130fd5760405163769dd35360e11b815260040160405180910390fd5b565b60008061310b84613676565b60025491935091506001600160a01b03161580159061313257506001600160601b03821615155b156131e15760025460405163a9059cbb60e01b81526001600160a01b039091169063a9059cbb906131729086906001600160601b038716906004016155fe565b602060405180830381600087803b15801561318c57600080fd5b505af11580156131a0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906131c49190614fc8565b6131e157604051631e9acf1760e31b815260040160405180910390fd5b6000836001600160a01b0316826001600160601b031660405160006040518083038185875af1925050503d8060008114613237576040519150601f19603f3d011682016040523d82523d6000602084013e61323c565b606091505b505090508061325e5760405163950b247960e01b815260040160405180910390fd5b604080516001600160a01b03861681526001600160601b03808616602083015284169181019190915285907f8c74ce8b8cf87f5eb001275c8be27eb34ea2b62bfab6814fcc62192bb63e81c4906060016126f3565b6000546001600160a01b031633146130fd5760405162461bcd60e51b815260206004820152601660248201527527b7363c9031b0b63630b1363290313c9037bbb732b960511b6044820152606401610f20565b604080516060810182526000808252602082018190529181019190915260006133328460000151612702565b6000818152600d602052604090205490915060ff1661336757604051631dfd6e1360e21b815260048101829052602401610f20565b6000818560800151604051602001613380929190615674565b60408051601f1981840301815291815281516020928301206000818152600f909352912054909150806133c657604051631b44092560e11b815260040160405180910390fd5b845160208087015160408089015160608a015160808b015160a08c015193516133f5978a979096959101615874565b60405160208183030381529060405280519060200120811461342a5760405163354a450b60e21b815260040160405180910390fd5b60006134398660000151613aeb565b905080613500578551604051631d2827a760e31b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169163e9413d389161348d91906004016158df565b60206040518083038186803b1580156134a557600080fd5b505afa1580156134b9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906134dd9190614fe5565b90508061350057855160405163175dadad60e01b8152610f2091906004016158df565b6000876080015182604051602001613522929190918252602082015260400190565b6040516020818303038152906040528051906020012060001c905060006135498983613bc8565b6040805160608101825297885260208801969096529486019490945250929695505050505050565b60005a61138881101561358357600080fd5b61138881039050846040820482031161359b57600080fd5b50823b6135a757600080fd5b60008083516020850160008789f1949350505050565b600081156135ea576011546135e39086908690600160201b900463ffffffff1686613c33565b9050613604565b601154613601908690869063ffffffff1686613cd5565b90505b949350505050565b6000805b60125481101561366d57826001600160a01b03166012828154811061363757613637615bf5565b6000918252602090912001546001600160a01b0316141561365b5750600192915050565b8061366581615b5d565b915050613610565b50600092915050565b60008181526005602090815260408083206006909252822054600290910180546001600160601b0380841694600160601b90940416925b8181101561371857600460008483815481106136cb576136cb615bf5565b60009182526020808320909101546001600160a01b031683528281019390935260409182018120898252909252902080546001600160481b031916905561371181615b5d565b90506136ad565b50600085815260056020526040812080546001600160a01b031990811682556001820180549091169055906137506002830182614bfc565b505060008581526006602052604081205561376c600886613dfa565b506001600160601b038416156137bf57600a805485919060009061379a9084906001600160601b0316615ad9565b92506101000a8154816001600160601b0302191690836001600160601b031602179055505b6001600160601b038316156138175782600a600c8282829054906101000a90046001600160601b03166137f29190615ad9565b92506101000a8154816001600160601b0302191690836001600160601b031602179055505b5050915091565b60408051602081018690526001600160a01b03851691810191909152606081018390526001600160401b03821660808201526000908190819060a00160408051601f198184030181529082905280516020918201209250613883918991849101615674565b60408051808303601f19018152919052805160209091012097909650945050505050565b604080516020810190915260008152816138d05750604080516020810190915260008152612515565b63125fa26760e31b6138e28385615b01565b6001600160e01b0319161461390a57604051632923fee760e11b815260040160405180910390fd5b6139178260048186615a09565b810190610ee9919061503f565b60607f92fd13387c7fe7befbc38d303d6468778fb9731bc4583f17d92989c6fcfdeaaa8260405160240161395d91511515815260200190565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b03199093169290921790915292915050565b6000466139a181613e06565b15613a1e5760646001600160a01b031663a3b1b31d6040518163ffffffff1660e01b815260040160206040518083038186803b1580156139e057600080fd5b505afa1580156139f4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613a189190614fe5565b91505090565b4391505090565b6000610ee98383613e29565b6000612515825490565b6000610ee98383613e78565b6001600160a01b038116331415613a9a5760405162461bcd60e51b815260206004820152601760248201527621b0b73737ba103a3930b739b332b9103a379039b2b63360491b6044820152606401610f20565b600180546001600160a01b0319166001600160a01b0383811691821790925560008054604051929316917fed8889f560326eb138920d842192f0eb3dd22b4f139c87a2c57538e05bae12789190a350565b600046613af781613e06565b15613bb957610100836001600160401b0316613b11613995565b613b1b9190615ac2565b1180613b375750613b2a613995565b836001600160401b031610155b15613b455750600092915050565b6040516315a03d4160e11b8152606490632b407a8290613b699086906004016158df565b60206040518083038186803b158015613b8157600080fd5b505afa158015613b95573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ee99190614fe5565b50506001600160401b03164090565b6000613bfc8360000151846020015185604001518660600151868860a001518960c001518a60e001518b6101000151613ea2565b60038360200151604051602001613c149291906157bc565b60408051601f1981840301815291905280516020909101209392505050565b600080613c766000368080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506140bd92505050565b905060005a613c858888615a33565b613c8f9190615ac2565b613c999085615aa3565b90506000613cb263ffffffff871664e8d4a51000615aa3565b905082613cbf8284615a33565b613cc99190615a33565b98975050505050505050565b600080613ce0614182565b905060008113613d06576040516321ea67b360e11b815260048101829052602401610f20565b6000613d486000368080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506140bd92505050565b9050600082825a613d598b8b615a33565b613d639190615ac2565b613d6d9088615aa3565b613d779190615a33565b613d8990670de0b6b3a7640000615aa3565b613d939190615a8f565b90506000613dac63ffffffff881664e8d4a51000615aa3565b9050613dc381676765c793fa10079d601b1b615ac2565b821115613de35760405163e80fa38160e01b815260040160405180910390fd5b613ded8183615a33565b9998505050505050505050565b6000610ee9838361424d565b600061a4b1821480613e1a575062066eed82145b8061251557505062066eee1490565b6000818152600183016020526040812054613e7057508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155612515565b506000612515565b6000826000018281548110613e8f57613e8f615bf5565b9060005260206000200154905092915050565b613eab89614340565b613ef45760405162461bcd60e51b815260206004820152601a6024820152797075626c6963206b6579206973206e6f74206f6e20637572766560301b6044820152606401610f20565b613efd88614340565b613f415760405162461bcd60e51b815260206004820152601560248201527467616d6d61206973206e6f74206f6e20637572766560581b6044820152606401610f20565b613f4a83614340565b613f965760405162461bcd60e51b815260206004820152601d60248201527f6347616d6d615769746e657373206973206e6f74206f6e2063757276650000006044820152606401610f20565b613f9f82614340565b613fea5760405162461bcd60e51b815260206004820152601c60248201527b73486173685769746e657373206973206e6f74206f6e20637572766560201b6044820152606401610f20565b613ff6878a8887614403565b61403e5760405162461bcd60e51b81526020600482015260196024820152786164647228632a706b2b732a6729213d5f755769746e65737360381b6044820152606401610f20565b600061404a8a87614517565b9050600061405d898b878b86898961457b565b9050600061406e838d8d8a8661468e565b9050808a146140af5760405162461bcd60e51b815260206004820152600d60248201526c34b73b30b634b210383937b7b360991b6044820152606401610f20565b505050505050505050505050565b6000466140c981613e06565b1561410857606c6001600160a01b031663c6f7de0e6040518163ffffffff1660e01b815260040160206040518083038186803b158015613b8157600080fd5b614111816146ce565b1561366d57600f602160991b016001600160a01b03166349948e0e84604051806080016040528060488152602001615c4560489139604051602001614157929190615540565b6040516020818303038152906040526040518263ffffffff1660e01b8152600401613b6991906156a0565b600c5460035460408051633fabe5a360e21b81529051600093600160381b900463ffffffff169283151592859283926001600160a01b03169163feaf968c9160048083019260a0929190829003018186803b1580156141e057600080fd5b505afa1580156141f4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614218919061541b565b50945090925084915050801561423c57506142338242615ac2565b8463ffffffff16105b156136045750601054949350505050565b60008181526001830160205260408120548015614336576000614271600183615ac2565b855490915060009061428590600190615ac2565b90508181146142ea5760008660000182815481106142a5576142a5615bf5565b90600052602060002001549050808760000184815481106142c8576142c8615bf5565b6000918252602080832090910192909255918252600188019052604090208390555b85548690806142fb576142fb615bdf565b600190038181906000526020600020016000905590558560010160008681526020019081526020016000206000905560019350505050612515565b6000915050612515565b80516000906401000003d0191161438e5760405162461bcd60e51b8152602060048201526012602482015271696e76616c696420782d6f7264696e61746560701b6044820152606401610f20565b60208201516401000003d019116143dc5760405162461bcd60e51b8152602060048201526012602482015271696e76616c696420792d6f7264696e61746560701b6044820152606401610f20565b60208201516401000003d0199080096143fc8360005b6020020151614708565b1492915050565b60006001600160a01b0382166144495760405162461bcd60e51b815260206004820152600b60248201526a626164207769746e65737360a81b6044820152606401610f20565b60208401516000906001161561446057601c614463565b601b5b9050600070014551231950b75fc4402da1732fc9bebe1985876000602002015109865170014551231950b75fc4402da1732fc9bebe19918203925060009190890987516040805160008082526020909101918290529293506001916144cd91869188918790615682565b6020604051602081039080840390855afa1580156144ef573d6000803e3d6000fd5b5050604051601f1901516001600160a01b039081169088161495505050505050949350505050565b61451f614c1a565b61454c60018484604051602001614538939291906155c9565b60405160208183030381529060405261472c565b90505b61455881614340565b6125155780516040805160208101929092526145749101614538565b905061454f565b614583614c1a565b825186516401000003d01990819006910614156145e25760405162461bcd60e51b815260206004820152601e60248201527f706f696e747320696e2073756d206d7573742062652064697374696e637400006044820152606401610f20565b6145ed87898861477a565b6146325760405162461bcd60e51b8152602060048201526016602482015275119a5c9cdd081b5d5b0818da1958dac819985a5b195960521b6044820152606401610f20565b61463d84868561477a565b6146835760405162461bcd60e51b815260206004820152601760248201527614d958dbdb99081b5d5b0818da1958dac819985a5b1959604a1b6044820152606401610f20565b613cc9868484614895565b6000600286868685876040516020016146ac9695949392919061556f565b60408051601f1981840301815291905280516020909101209695505050505050565b6000600a8214806146e057506101a482145b806146ed575062aa37dc82145b806146f9575061210582145b8061251557505062014a331490565b6000806401000003d01980848509840990506401000003d019600782089392505050565b614734614c1a565b61473d82614958565b815261475261474d8260006143f2565b614993565b602082018190526002900660011415611e76576020810180516401000003d019039052919050565b6000826147b75760405162461bcd60e51b815260206004820152600b60248201526a3d32b9379039b1b0b630b960a91b6044820152606401610f20565b835160208501516000906147cd90600290615b9f565b156147d957601c6147dc565b601b5b9050600070014551231950b75fc4402da1732fc9bebe1983870960408051600080825260209091019182905291925060019061481f908390869088908790615682565b6020604051602081039080840390855afa158015614841573d6000803e3d6000fd5b505050602060405103519050600086604051602001614860919061552e565b60408051601f1981840301815291905280516020909101206001600160a01b0392831692169190911498975050505050505050565b61489d614c1a565b8351602080860151855191860151600093849384936148be939091906149b3565b919450925090506401000003d01985820960011461491a5760405162461bcd60e51b815260206004820152601960248201527834b73b2d1036bab9ba1031329034b73b32b939b29037b3103d60391b6044820152606401610f20565b60405180604001604052806401000003d0198061493957614939615bc9565b87860981526020016401000003d0198785099052979650505050505050565b805160208201205b6401000003d0198110611e7657604080516020808201939093528151808203840181529082019091528051910120614960565b60006125158260026149ac6401000003d0196001615a33565b901c614a93565b60008080600180826401000003d019896401000003d019038808905060006401000003d0198b6401000003d019038a08905060006149f383838585614b2a565b9098509050614a0488828e88614b4e565b9098509050614a1588828c87614b4e565b90985090506000614a288d878b85614b4e565b9098509050614a3988828686614b2a565b9098509050614a4a88828e89614b4e565b9098509050818114614a7f576401000003d019818a0998506401000003d01982890997506401000003d0198183099650614a83565b8196505b5050505050509450945094915050565b600080614a9e614c38565b6020808252818101819052604082015260608101859052608081018490526401000003d01960a0820152614ad0614c56565b60208160c0846005600019fa925082614b205760405162461bcd60e51b81526020600482015260126024820152716269674d6f64457870206661696c7572652160701b6044820152606401610f20565b5195945050505050565b6000806401000003d0198487096401000003d0198487099097909650945050505050565b600080806401000003d019878509905060006401000003d01987876401000003d019030990506401000003d0198183086401000003d01986890990999098509650505050505050565b828054828255906000526020600020908101928215614bec579160200282015b82811115614bec57825182546001600160a01b0319166001600160a01b03909116178255602090920191600190910190614bb7565b50614bf8929150614c74565b5090565b508054600082559060005260206000209081019061306e9190614c74565b60405180604001604052806002906020820280368337509192915050565b6040518060c001604052806006906020820280368337509192915050565b60405180602001604052806001906020820280368337509192915050565b5b80821115614bf85760008155600101614c75565b8035611e7681615c21565b600082601f830112614ca557600080fd5b604080519081016001600160401b0381118282101715614cc757614cc7615c0b565b8060405250808385604086011115614cde57600080fd5b60005b6002811015614d00578135835260209283019290910190600101614ce1565b509195945050505050565b8035611e7681615c36565b60008083601f840112614d2857600080fd5b5081356001600160401b03811115614d3f57600080fd5b602083019150836020828501011115614d5757600080fd5b9250929050565b600082601f830112614d6f57600080fd5b81356001600160401b03811115614d8857614d88615c0b565b614d9b601f8201601f19166020016159d9565b818152846020838601011115614db057600080fd5b816020850160208301376000918101602001919091529392505050565b600060c08284031215614ddf57600080fd5b614de761598e565b905081356001600160401b038082168214614e0157600080fd5b81835260208401356020840152614e1a60408501614e80565b6040840152614e2b60608501614e80565b6060840152614e3c60808501614c89565b608084015260a0840135915080821115614e5557600080fd5b50614e6284828501614d5e565b60a08301525092915050565b803561ffff81168114611e7657600080fd5b803563ffffffff81168114611e7657600080fd5b803560ff81168114611e7657600080fd5b80516001600160501b0381168114611e7657600080fd5b80356001600160601b0381168114611e7657600080fd5b600060208284031215614ee557600080fd5b8135610ee981615c21565b60008060408385031215614f0357600080fd5b8235614f0e81615c21565b91506020830135614f1e81615c21565b809150509250929050565b60008060008060608587031215614f3f57600080fd5b8435614f4a81615c21565b93506020850135925060408501356001600160401b03811115614f6c57600080fd5b614f7887828801614d16565b95989497509550505050565b600060408284031215614f9657600080fd5b82604083011115614fa657600080fd5b50919050565b600060408284031215614fbe57600080fd5b610ee98383614c94565b600060208284031215614fda57600080fd5b8151610ee981615c36565b600060208284031215614ff757600080fd5b5051919050565b6000806020838503121561501157600080fd5b82356001600160401b0381111561502757600080fd5b61503385828601614d16565b90969095509350505050565b60006020828403121561505157600080fd5b604051602081016001600160401b038111828210171561507357615073615c0b565b604052823561508181615c36565b81529392505050565b60008060008385036101e08112156150a157600080fd5b6101a0808212156150b157600080fd5b6150b96159b6565b91506150c58787614c94565b82526150d48760408801614c94565b60208301526080860135604083015260a0860135606083015260c0860135608083015261510360e08701614c89565b60a083015261010061511788828901614c94565b60c084015261512a886101408901614c94565b60e0840152610180870135908301529093508401356001600160401b0381111561515357600080fd5b61515f86828701614dcd565b92505061516f6101c08501614d0b565b90509250925092565b60006020828403121561518a57600080fd5b81356001600160401b038111156151a057600080fd5b820160c08185031215610ee957600080fd5b600060208083850312156151c557600080fd5b82356001600160401b03808211156151dc57600080fd5b9084019060c082870312156151f057600080fd5b6151f861598e565b61520183614e94565b81528383013584820152604083013561521981615c21565b604082015260608301358281111561523057600080fd5b8301601f8101881361524157600080fd5b80358381111561525357615253615c0b565b8060051b93506152648685016159d9565b8181528681019083880186850189018c101561527f57600080fd5b600096505b838710156152ae578035945061529985615c21565b84835260019690960195918801918801615284565b506060850152506152c491505060808401614ebc565b60808201526152d560a08401614ebc565b60a08201529695505050505050565b6000602082840312156152f657600080fd5b610ee982614e6e565b60008060008060008060008060006101208a8c03121561531e57600080fd5b6153278a614e6e565b985061533560208b01614e80565b975061534360408b01614e80565b965061535160608b01614e80565b955060808a0135945061536660a08b01614e80565b935061537460c08b01614e80565b925061538260e08b01614e94565b91506153916101008b01614e94565b90509295985092959850929598565b6000602082840312156153b257600080fd5b5035919050565b600080604083850312156153cc57600080fd5b823591506020830135614f1e81615c21565b600080604083850312156153f157600080fd5b50508035926020909101359150565b60006020828403121561541257600080fd5b610ee982614e80565b600080600080600060a0868803121561543357600080fd5b61543c86614ea5565b945060208601519350604086015192506060860151915061545f60808701614ea5565b90509295509295909350565b600081518084526020808501945080840160005b838110156154a45781516001600160a01b03168752958201959082019060010161547f565b509495945050505050565b8060005b6002811015612cd75781518452602093840193909101906001016154b3565b600081518084526020808501945080840160005b838110156154a4578151875295820195908201906001016154e6565b6000815180845261551a816020860160208601615b31565b601f01601f19169290920160200192915050565b61553881836154af565b604001919050565b60008351615552818460208801615b31565b835190830190615566818360208801615b31565b01949350505050565b86815261557f60208201876154af565b61558c60608201866154af565b61559960a08201856154af565b6155a660e08201846154af565b60609190911b6001600160601b0319166101208201526101340195945050505050565b8381526155d960208201846154af565b606081019190915260800192915050565b6001600160a01b0391909116815260200190565b6001600160a01b03929092168252602082015260400190565b6001600160a01b0392831681529116602082015260400190565b6001600160a01b039290921682526001600160601b0316602082015260400190565b6040810161251582846154af565b602081526000610ee960208301846154d2565b918252602082015260400190565b93845260ff9290921660208401526040830152606082015260800190565b602081526000610ee96020830184615502565b6020815260ff82511660208201526020820151604082015260018060a01b0360408301511660608201526000606083015160c060808401526156f860e084018261546b565b60808501516001600160601b0390811660a0868101919091529095015190941660c0909301929092525090919050565b61ffff93841681529183166020830152909116604082015260600190565b60006060820161ffff86168352602063ffffffff86168185015260606040850152818551808452608086019150828701935060005b818110156157975784518352938301939183019160010161577b565b509098975050505050505050565b9182526001600160a01b0316602082015260400190565b82815260608101610ee960208301846154af565b82815260406020820152600061360460408301846154d2565b86815285602082015261ffff85166040820152600063ffffffff808616606084015280851660808401525060c060a0830152613cc960c0830184615502565b878152602081018790526040810186905263ffffffff8581166060830152841660808201526001600160a01b03831660a082015260e060c08201819052600090613ded90830184615502565b8781526001600160401b03871660208201526040810186905263ffffffff8581166060830152841660808201526001600160a01b03831660a082015260e060c08201819052600090613ded90830184615502565b63ffffffff92831681529116602082015260400190565b6001600160401b0391909116815260200190565b6001600160601b038681168252851660208201526001600160401b03841660408201526001600160a01b038316606082015260a06080820181905260009061593d9083018461546b565b979650505050505050565b6000808335601e1984360301811261595f57600080fd5b8301803591506001600160401b0382111561597957600080fd5b602001915036819003821315614d5757600080fd5b60405160c081016001600160401b03811182821017156159b0576159b0615c0b565b60405290565b60405161012081016001600160401b03811182821017156159b0576159b0615c0b565b604051601f8201601f191681016001600160401b0381118282101715615a0157615a01615c0b565b604052919050565b60008085851115615a1957600080fd5b83861115615a2657600080fd5b5050820193919092039150565b60008219821115615a4657615a46615bb3565b500190565b60006001600160401b0382811684821680830382111561556657615566615bb3565b60006001600160601b0382811684821680830382111561556657615566615bb3565b600082615a9e57615a9e615bc9565b500490565b6000816000190483118215151615615abd57615abd615bb3565b500290565b600082821015615ad457615ad4615bb3565b500390565b60006001600160601b0383811690831681811015615af957615af9615bb3565b039392505050565b6001600160e01b03198135818116916004851015615b295780818660040360031b1b83161692505b505092915050565b60005b83811015615b4c578181015183820152602001615b34565b83811115612cd75750506000910152565b6000600019821415615b7157615b71615bb3565b5060010190565b60006001600160401b0382811680821415615b9557615b95615bb3565b6001019392505050565b600082615bae57615bae615bc9565b500690565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052601260045260246000fd5b634e487b7160e01b600052603160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6001600160a01b038116811461306e57600080fd5b801515811461306e57600080fdfe307866666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666a164736f6c6343000806000a", } var VRFCoordinatorV2PlusUpgradedVersionABI = VRFCoordinatorV2PlusUpgradedVersionMetaData.ABI 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 16faa00a763..8d4d59b0336 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 @@ -93,11 +93,7 @@ vrf_consumer_v2_upgradeable_example: ../../contracts/solc/v0.8.6/VRFConsumerV2Up vrf_coordinator_mock: ../../contracts/solc/v0.8.6/VRFCoordinatorMock/VRFCoordinatorMock.abi ../../contracts/solc/v0.8.6/VRFCoordinatorMock/VRFCoordinatorMock.bin 5c495cf8df1f46d8736b9150cdf174cce358cb8352f60f0d5bb9581e23920501 vrf_coordinator_test_v2: ../../contracts/solc/v0.8.6/VRFCoordinatorTestV2/VRFCoordinatorTestV2.abi ../../contracts/solc/v0.8.6/VRFCoordinatorTestV2/VRFCoordinatorTestV2.bin eaefd785c38bac67fb11a7fc2737ab2da68c988ca170e7db8ff235c80893e01c vrf_coordinator_v2: ../../contracts/solc/v0.8.6/VRFCoordinatorV2/VRFCoordinatorV2.abi ../../contracts/solc/v0.8.6/VRFCoordinatorV2/VRFCoordinatorV2.bin 295f35ce282060317dfd01f45959f5a2b05ba26913e422fbd4fb6bf90b107006 -<<<<<<< HEAD -vrf_coordinator_v2_5: ../../contracts/solc/v0.8.6/VRFCoordinatorV2_5/VRFCoordinatorV2_5.abi ../../contracts/solc/v0.8.6/VRFCoordinatorV2_5/VRFCoordinatorV2_5.bin fc549a5c3a7ad2cc4a79342f3df500bdf797e9e75527a36ac790d39c705fd43d -======= -vrf_coordinator_v2_5: ../../contracts/solc/v0.8.6/VRFCoordinatorV2_5/VRFCoordinatorV2_5.abi ../../contracts/solc/v0.8.6/VRFCoordinatorV2_5/VRFCoordinatorV2_5.bin 459b97ff4b2e1df90b2e6984afb7fbdf9a683904a0a09c16dddf0aa5d970ebfb ->>>>>>> develop +vrf_coordinator_v2_5: ../../contracts/solc/v0.8.6/VRFCoordinatorV2_5/VRFCoordinatorV2_5.abi ../../contracts/solc/v0.8.6/VRFCoordinatorV2_5/VRFCoordinatorV2_5.bin 6b4c50e8c8bbe877e5450d679e968dbde896f7c9043d29f3ecf79aefc28a0ef3 vrf_coordinator_v2_plus_v2_example: ../../contracts/solc/v0.8.6/VRFCoordinatorV2Plus_V2Example/VRFCoordinatorV2Plus_V2Example.abi ../../contracts/solc/v0.8.6/VRFCoordinatorV2Plus_V2Example/VRFCoordinatorV2Plus_V2Example.bin 4a5b86701983b1b65f0a8dfa116b3f6d75f8f706fa274004b57bdf5992e4cec3 vrf_coordinator_v2plus_interface: ../../contracts/solc/v0.8.6/IVRFCoordinatorV2PlusInternal/IVRFCoordinatorV2PlusInternal.abi ../../contracts/solc/v0.8.6/IVRFCoordinatorV2PlusInternal/IVRFCoordinatorV2PlusInternal.bin 86b8e23aab28c5b98e3d2384dc4f702b093e382dc985c88101278e6e4bf6f7b8 vrf_external_sub_owner_example: ../../contracts/solc/v0.8.6/VRFExternalSubOwnerExample/VRFExternalSubOwnerExample.abi ../../contracts/solc/v0.8.6/VRFExternalSubOwnerExample/VRFExternalSubOwnerExample.bin 14f888eb313930b50233a6f01ea31eba0206b7f41a41f6311670da8bb8a26963 @@ -113,17 +109,10 @@ vrf_owner_test_consumer: ../../contracts/solc/v0.8.6/VRFV2OwnerTestConsumer/VRFV vrf_ownerless_consumer_example: ../../contracts/solc/v0.8.6/VRFOwnerlessConsumerExample/VRFOwnerlessConsumerExample.abi ../../contracts/solc/v0.8.6/VRFOwnerlessConsumerExample/VRFOwnerlessConsumerExample.bin 9893b3805863273917fb282eed32274e32aa3d5c2a67a911510133e1218132be vrf_single_consumer_example: ../../contracts/solc/v0.8.6/VRFSingleConsumerExample/VRFSingleConsumerExample.abi ../../contracts/solc/v0.8.6/VRFSingleConsumerExample/VRFSingleConsumerExample.bin 892a5ed35da2e933f7fd7835cd6f7f70ef3aa63a9c03a22c5b1fd026711b0ece vrf_v2_consumer_wrapper: ../../contracts/solc/v0.8.6/VRFv2Consumer/VRFv2Consumer.abi ../../contracts/solc/v0.8.6/VRFv2Consumer/VRFv2Consumer.bin 12368b3b5e06392440143a13b94c0ea2f79c4c897becc3b060982559e10ace40 -<<<<<<< HEAD -vrf_v2plus_load_test_with_metrics: ../../contracts/solc/v0.8.6/VRFV2PlusLoadTestWithMetrics/VRFV2PlusLoadTestWithMetrics.abi ../../contracts/solc/v0.8.6/VRFV2PlusLoadTestWithMetrics/VRFV2PlusLoadTestWithMetrics.bin dfb5ca62b8017ae5e3f03221bc8acb567fcce426b31b40d57590a76a97d267a2 -vrf_v2plus_single_consumer: ../../contracts/solc/v0.8.6/VRFV2PlusSingleConsumerExample/VRFV2PlusSingleConsumerExample.abi ../../contracts/solc/v0.8.6/VRFV2PlusSingleConsumerExample/VRFV2PlusSingleConsumerExample.bin 6226d05afa1664033b182bfbdde11d5dfb1d4c8e3eb0bd0448c8bfb76f5b96e4 -vrf_v2plus_sub_owner: ../../contracts/solc/v0.8.6/VRFV2PlusExternalSubOwnerExample/VRFV2PlusExternalSubOwnerExample.abi ../../contracts/solc/v0.8.6/VRFV2PlusExternalSubOwnerExample/VRFV2PlusExternalSubOwnerExample.bin 7541f986571b8a5671a256edc27ae9b8df9bcdff45ac3b96e5609bbfcc320e4e -vrf_v2plus_upgraded_version: ../../contracts/solc/v0.8.6/VRFCoordinatorV2PlusUpgradedVersion/VRFCoordinatorV2PlusUpgradedVersion.abi ../../contracts/solc/v0.8.6/VRFCoordinatorV2PlusUpgradedVersion/VRFCoordinatorV2PlusUpgradedVersion.bin 3262273f6d78cea2240e8846734d5dba42488cdc2603b2aa92d6f8dc98284bc9 -======= vrf_v2plus_load_test_with_metrics: ../../contracts/solc/v0.8.6/VRFV2PlusLoadTestWithMetrics/VRFV2PlusLoadTestWithMetrics.abi ../../contracts/solc/v0.8.6/VRFV2PlusLoadTestWithMetrics/VRFV2PlusLoadTestWithMetrics.bin e8c6888df57e63e8b9a835b68e9e575631a2385feeb08c02c59732f699cc1f58 vrf_v2plus_single_consumer: ../../contracts/solc/v0.8.6/VRFV2PlusSingleConsumerExample/VRFV2PlusSingleConsumerExample.abi ../../contracts/solc/v0.8.6/VRFV2PlusSingleConsumerExample/VRFV2PlusSingleConsumerExample.bin 12b5d322db7dbf8af71955699e411109a4cc40811b606273ea0b5ecc8dbc639d vrf_v2plus_sub_owner: ../../contracts/solc/v0.8.6/VRFV2PlusExternalSubOwnerExample/VRFV2PlusExternalSubOwnerExample.abi ../../contracts/solc/v0.8.6/VRFV2PlusExternalSubOwnerExample/VRFV2PlusExternalSubOwnerExample.bin 7b4f5ffe8fc293d2f4294d3d8348ed8dd480e909cef0743393095e5b20dc9c34 -vrf_v2plus_upgraded_version: ../../contracts/solc/v0.8.6/VRFCoordinatorV2PlusUpgradedVersion/VRFCoordinatorV2PlusUpgradedVersion.abi ../../contracts/solc/v0.8.6/VRFCoordinatorV2PlusUpgradedVersion/VRFCoordinatorV2PlusUpgradedVersion.bin 09e4186c64cdaf1e5d36405467fb86996d7e4177cb08ecec425a4352d4246140 ->>>>>>> develop +vrf_v2plus_upgraded_version: ../../contracts/solc/v0.8.6/VRFCoordinatorV2PlusUpgradedVersion/VRFCoordinatorV2PlusUpgradedVersion.abi ../../contracts/solc/v0.8.6/VRFCoordinatorV2PlusUpgradedVersion/VRFCoordinatorV2PlusUpgradedVersion.bin 1695b5f9990dfe1c7d71c6f47f4be3488be15d09def9d984ffbc1db0f207a08a vrfv2_proxy_admin: ../../contracts/solc/v0.8.6/VRFV2ProxyAdmin/VRFV2ProxyAdmin.abi ../../contracts/solc/v0.8.6/VRFV2ProxyAdmin/VRFV2ProxyAdmin.bin 402b1103087ffe1aa598854a8f8b38f8cd3de2e3aaa86369e28017a9157f4980 vrfv2_reverting_example: ../../contracts/solc/v0.8.6/VRFV2RevertingExample/VRFV2RevertingExample.abi ../../contracts/solc/v0.8.6/VRFV2RevertingExample/VRFV2RevertingExample.bin 1ae46f80351d428bd85ba58b9041b2a608a1845300d79a8fed83edf96606de87 vrfv2_transparent_upgradeable_proxy: ../../contracts/solc/v0.8.6/VRFV2TransparentUpgradeableProxy/VRFV2TransparentUpgradeableProxy.abi ../../contracts/solc/v0.8.6/VRFV2TransparentUpgradeableProxy/VRFV2TransparentUpgradeableProxy.bin fe1a8e6852fbd06d91f64315c5cede86d340891f5b5cc981fb5b86563f7eac3f diff --git a/core/scripts/vrfv2plus/testnet/proofs.go b/core/scripts/vrfv2plus/testnet/proofs.go index b0691912ccb..ef35fd3e0ec 100644 --- a/core/scripts/vrfv2plus/testnet/proofs.go +++ b/core/scripts/vrfv2plus/testnet/proofs.go @@ -49,7 +49,7 @@ var rcTemplate = `{ callbackGasLimit: %d, numWords: %d, sender: %s, - nativePayment: %s + extraArgs: %s } `