19 txs
1.8k calls
constructor
constructor(address _linkToken, address _keeperRegistry, address _automationRegistrar, address _upkeepBalanceMonitor, address _voter, uint96 _newUpkeepFundAmount, uint32 _newUpkeepGasLimit, uint8 _batchSize, address[] _excludedGaugeFactories)
functions
automationRegistrar
viewfunction automationRegistrar() view returns (address)
batchSize
viewfunction batchSize() view returns (uint8)
cancelledUpkeepCount
viewfunction cancelledUpkeepCount() view returns (uint256)
cancelledUpkeeps
viewfunction cancelledUpkeeps(uint256 _startIndex, uint256 _endIndex) view returns (uint256[] cancelledUpkeepIds)
checkLog
viewfunction checkLog(tuple _log, bytes) view returns (bool upkeepNeeded, bytes performData)
excludedGaugeFactory
viewfunction excludedGaugeFactory(address) view returns (bool)
factoryRegistry
viewfunction factoryRegistry() view returns (address)
gaugeCount
viewfunction gaugeCount() view returns (uint256)
gaugeList
viewfunction gaugeList(uint256 _startIndex, uint256 _endIndex) view returns (address[] gauges)
keeperRegistry
viewfunction keeperRegistry() view returns (address)
linkToken
viewfunction linkToken() view returns (address)
newUpkeepFundAmount
viewfunction newUpkeepFundAmount() view returns (uint96)
newUpkeepGasLimit
viewfunction newUpkeepGasLimit() view returns (uint32)
owner
viewfunction owner() view returns (address)
trustedForwarder
viewfunction trustedForwarder(address) view returns (bool)
upkeepBalanceMonitor
viewfunction upkeepBalanceMonitor() view returns (address)
upkeepCount
viewfunction upkeepCount() view returns (uint256)
upkeepIds
viewfunction upkeepIds(uint256) view returns (uint256)
voter
viewfunction voter() view returns (address)
deregisterGauges
nonpayablefunction deregisterGauges(address[] _gauges)
performUpkeep
nonpayablefunction performUpkeep(bytes _performData)
registerGauges
nonpayablefunction registerGauges(address[] _gauges)
renounceOwnership
nonpayablefunction renounceOwnership()
setBatchSize
nonpayablefunction setBatchSize(uint8 _batchSize)
setExcludedGaugeFactory
nonpayablefunction setExcludedGaugeFactory(address _gaugeFactory, bool _isExcluded)
setNewUpkeepFundAmount
nonpayablefunction setNewUpkeepFundAmount(uint96 _newUpkeepFundAmount)
setNewUpkeepGasLimit
nonpayablefunction setNewUpkeepGasLimit(uint32 _newUpkeepGasLimit)
setTrustedForwarder
nonpayablefunction setTrustedForwarder(address _trustedForwarder, bool _isTrusted)
setUpkeepBalanceMonitor
nonpayablefunction setUpkeepBalanceMonitor(address _upkeepBalanceMonitor)
transferOwnership
nonpayablefunction transferOwnership(address newOwner)
withdrawCancelledUpkeeps
nonpayablefunction withdrawCancelledUpkeeps(uint256 _startIndex, uint256 _endIndex)
withdrawLinkBalance
nonpayablefunction withdrawLinkBalance()
events
BatchSizeSet
event BatchSizeSet(uint8 batchSize)
ExcludedGaugeFactorySet
event ExcludedGaugeFactorySet(address indexed gaugeFactory, bool isExcluded)
GaugeDeregistered
event GaugeDeregistered(address indexed gauge)
GaugeRegistered
event GaugeRegistered(address indexed gauge)
GaugeUpkeepCancelled
event GaugeUpkeepCancelled(uint256 indexed upkeepId)
GaugeUpkeepRegistered
event GaugeUpkeepRegistered(address indexed gaugeUpkeep, uint256 indexed upkeepId, uint256 indexed startIndex, uint256 endIndex)
GaugeUpkeepWithdrawn
event GaugeUpkeepWithdrawn(uint256 indexed upkeepId)
LinkBalanceWithdrawn
event LinkBalanceWithdrawn(address indexed receiver, uint256 amount)
NewUpkeepFundAmountSet
event NewUpkeepFundAmountSet(uint96 newUpkeepFundAmount)
NewUpkeepGasLimitSet
event NewUpkeepGasLimitSet(uint32 newUpkeepGasLimit)
OwnershipTransferred
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
TrustedForwarderSet
event TrustedForwarderSet(address indexed trustedForwarder, bool isTrusted)
UpkeepBalanceMonitorSet
event UpkeepBalanceMonitorSet(address indexed upkeepBalanceMonitor)
errors
AddressZeroNotAllowed
error AddressZeroNotAllowed()
AutoApproveDisabled
error AutoApproveDisabled()
GaugeNotAlive
error GaugeNotAlive(address gauge)
GaugeNotAllowed
error GaugeNotAllowed(address gauge)
GaugeUpkeepExists
error GaugeUpkeepExists(address gauge)
GaugeUpkeepNotFound
error GaugeUpkeepNotFound(address gauge)
InvalidBatchSize
error InvalidBatchSize()
InvalidIndex
error InvalidIndex()
InvalidPerformAction
error InvalidPerformAction()
NoLinkBalance
error NoLinkBalance()
NotGauge
error NotGauge(address gauge)
UnauthorizedSender
error UnauthorizedSender()
creation bytecode
0x6101206040523480156200001257600080fd5b5060405162003cb938038062003cb9833981016040819052620000359162000309565b6200004033620001b2565b6001600160601b031960608a811b821660805289811b821660a05288811b821660c05286901b1660e0526001600160601b038416600160a01b026001600160a01b038716176001556002805460ff84166401000000000264ffffffffff1990911663ffffffff86161717905560005b81518110156200011b57600160046000848481518110620000d457620000d462000423565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff1916911515919091179055806200011281620003f9565b915050620000af565b50846001600160a01b0316633bf0c9fb6040518163ffffffff1660e01b815260040160206040518083038186803b1580156200015657600080fd5b505afa1580156200016b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001919190620002e4565b60601b6001600160601b03191661010052506200044f975050505050505050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b80516001600160a01b03811681146200021a57600080fd5b919050565b600082601f8301126200023157600080fd5b815160206001600160401b038083111562000250576200025062000439565b8260051b604051601f19603f8301168101818110848211171562000278576200027862000439565b604052848152838101925086840182880185018910156200029857600080fd5b600092505b85831015620002c657620002b18162000202565b8452928401926001929092019184016200029d565b50979650505050505050565b805160ff811681146200021a57600080fd5b600060208284031215620002f757600080fd5b620003028262000202565b9392505050565b60008060008060008060008060006101208a8c0312156200032957600080fd5b620003348a62000202565b98506200034460208b0162000202565b97506200035460408b0162000202565b96506200036460608b0162000202565b95506200037460808b0162000202565b60a08b01519095506001600160601b03811681146200039257600080fd5b60c08b015190945063ffffffff81168114620003ad57600080fd5b9250620003bd60e08b01620002d2565b6101008b01519092506001600160401b03811115620003db57600080fd5b620003e98c828d016200021f565b9150509295985092959850929598565b60006000198214156200041c57634e487b7160e01b600052601160045260246000fd5b5060010190565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b60805160601c60a05160601c60c05160601c60e05160601c6101005160601c6137c2620004f7600039600081816102c9015261155901526000818161032f01528181610da7015281816114400152818161160001526119a801526000818161025801528181611e9a0152611f1c015260008181610469015281816118d50152611c9301526000818161039801528181610a6301528181610b100152611eca01526137c26000f3fe60806040523480156200001157600080fd5b5060043610620002195760003560e01c80637341cb6f1162000125578063a644008211620000af578063d01876c3116200007a578063d01876c31462000555578063e691d03b146200057c578063f2fde38b1462000593578063f4daaba114620005aa57600080fd5b8063a644008214620004da578063a9699fbd14620004e4578063b8ae46e214620004fb578063c084cfc9146200052157600080fd5b806383e2277411620000f057806383e2277414620004635780638da5cb5b146200048b57806390b85510146200049d57806392b6e21c14620004b457600080fd5b80637341cb6f14620003f857806376b88024146200040f578063823805ae1462000435578063823860f2146200044c57600080fd5b806346c96aac11620001a757806358e25a49116200017257806358e25a4914620003ba5780636012b30614620003ce578063715018a614620003e55780637323f3d014620003ef57600080fd5b806346c96aac14620003295780634e2dac0514620003515780634ee8270c146200038857806357970e93146200039257600080fd5b80632d25d10511620001e85780632d25d10514620002ac5780633bf0c9fb14620002c357806340691db414620002eb5780634585e33b146200031257600080fd5b806302400b75146200021e57806307896a5f14620002485780630c38187314620002525780631434d0c21462000293575b600080fd5b620002356200022f36600462002747565b620005d3565b6040519081526020015b60405180910390f35b62000235620005f5565b6200027a7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020016200023f565b620002aa620002a4366004620027c6565b62000608565b005b620002aa620002bd366004620027eb565b6200069c565b6200027a7f000000000000000000000000000000000000000000000000000000000000000081565b62000302620002fc366004620026d4565b620006fd565b6040516200023f929190620028eb565b620002aa6200032336600462002639565b6200096b565b6200027a7f000000000000000000000000000000000000000000000000000000000000000081565b62000377620003623660046200246d565b60046020526000908152604090205460ff1681565b60405190151581526020016200023f565b620002aa62000a29565b6200027a7f000000000000000000000000000000000000000000000000000000000000000081565b6001546200027a906001600160a01b031681565b620002aa620003df3660046200246d565b62000b80565b620002aa62000bfc565b60055462000235565b620002aa620004093660046200259f565b62000c14565b62000377620004203660046200246d565b60036020526000908152604090205460ff1681565b620002aa620004463660046200259f565b62000d09565b620002aa6200045d3660046200279e565b62000f1f565b6200027a7f000000000000000000000000000000000000000000000000000000000000000081565b6000546001600160a01b03166200027a565b620002aa620004ae3660046200277b565b62000f72565b620004cb620004c53660046200277b565b62001004565b6040516200023f919062002862565b62000235620010f2565b620002aa620004f53660046200256c565b62001100565b620005126200050c3660046200277b565b6200118b565b6040516200023f9190620028b1565b6001546200053c90600160a01b90046001600160601b031681565b6040516001600160601b0390911681526020016200023f565b600254620005669063ffffffff1681565b60405163ffffffff90911681526020016200023f565b620002aa6200058d3660046200256c565b6200125a565b620002aa620005a43660046200246d565b620012e5565b600254620005c090640100000000900460ff1681565b60405160ff90911681526020016200023f565b60058181548110620005e457600080fd5b600091825260209091200154905081565b600062000603600862001364565b905090565b6200061262001375565b60ff8116158062000626575060648160ff16115b156200064557604051637862e95960e01b815260040160405180910390fd5b6002805464ff00000000191664010000000060ff8416908102919091179091556040519081527f166c385d2e9512ee976f8c8f746c2ff73c711a21c7780869fdfea8ac37eb0bb6906020015b60405180910390a150565b620006a662001375565b600180546001600160a01b0316600160a01b6001600160601b038416908102919091179091556040519081527f6ef019efc5a9aff5b67358a778670503f4eea3eab8b83144ea1ff444010ea9759060200162000691565b60006060816200071160c086018662002a79565b600081811062000725576200072562002d06565b9050602002013590507fef9f7d1ffff3b249c6b9bf2528499e935f7d96bb6d6ec4e7da504d1d3c6279e160001b8114156200081e5760006200078d6200076f60c088018862002a79565b600381811062000783576200078362002d06565b9050602002013590565b90506000620007a6620007a08862002b7e565b620013d1565b9050620007b5600682620013f7565b158015620007dc57506001600160a01b03821660009081526004602052604090205460ff16155b1562000816576001600082604051602001620007fa92919062002908565b6040516020818303038152906040529450945050505062000964565b505062000962565b7f04a5d3f5d80d22d9345acc80618f4a4e7e663cf9e1aed23b57d975acec002ba7811415620008be576000620008706200085c60c088018862002a79565b600181811062000783576200078362002d06565b90506200087f600682620013f7565b15620008b757600180826040516020016200089c92919062002908565b60405160208183030381529060405293509350505062000964565b5062000962565b7fed18e9faa3dccfd8aa45f69c4de40546b2ca9cccc4538a2323531656516db1aa81141562000962576000620008fc6200085c60c088018862002a79565b905060006200090b826200141c565b90506200091a600683620013f7565b1580156200094157506001600160a01b03811660009081526004602052604090205460ff16155b156200095f576001600083604051602001620007fa92919062002908565b50505b505b9250929050565b3360009081526003602052604090205460ff166200099c57604051630101292160e31b815260040160405180910390fd5b600080620009ad838501856200269e565b90925090506000826001811115620009c957620009c962002cda565b1415620009e157620009db81620015e1565b62000a23565b6001826001811115620009f857620009f862002cda565b141562000a0a57620009db816200171a565b6040516305795b8960e11b815260040160405180910390fd5b50505050565b62000a3362001375565b600080546001600160a01b03166040516370a0823160e01b81523060048201529091506000906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906370a082319060240160206040518083038186803b15801562000aa657600080fd5b505afa15801562000abb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000ae1919062002761565b90508062000b0257604051636357978760e01b815260040160405180910390fd5b62000b386001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168383620017e3565b816001600160a01b03167ffbdec3a5575474c59705a087c0a8047637799a2cebdc03dad0c75ff7c90008af8260405162000b7491815260200190565b60405180910390a25050565b62000b8a62001375565b6001600160a01b03811662000bb2576040516302154e0360e21b815260040160405180910390fd5b600180546001600160a01b0319166001600160a01b0383169081179091556040517f01e23dd79ada5633f2e7a765ad226e50a6a90bff9592881dd5af553c94360b5a90600090a250565b62000c0662001375565b62000c1260006200184d565b565b62000c1e62001375565b600081815b8181101562000caa5784848281811062000c415762000c4162002d06565b905060200201602081019062000c5891906200246d565b925062000c67600684620013f7565b62000c955760405163422eaeb160e01b81526001600160a01b03841660048201526024015b60405180910390fd5b8062000ca18162002c83565b91505062000c23565b5060005b8181101562000d025762000ced85858381811062000cd05762000cd062002d06565b905060200201602081019062000ce791906200246d565b6200171a565b8062000cf98162002c83565b91505062000cae565b5050505050565b62000d1362001375565b60008082815b8181101562000ebf5785858281811062000d375762000d3762002d06565b905060200201602081019062000d4e91906200246d565b935062000d5d600685620013f7565b1562000d885760405163a506506560e01b81526001600160a01b038516600482015260240162000c8c565b60405163aa79979b60e01b81526001600160a01b0385811660048301527f0000000000000000000000000000000000000000000000000000000000000000169063aa79979b9060240160206040518083038186803b15801562000dea57600080fd5b505afa15801562000dff573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000e25919062002619565b62000e4f5760405163f6565c4160e01b81526001600160a01b038516600482015260240162000c8c565b62000e5a846200141c565b925062000e7f836001600160a01b031660009081526004602052604090205460ff1690565b1562000eaa5760405163511b03e760e01b81526001600160a01b038516600482015260240162000c8c565b8062000eb68162002c83565b91505062000d19565b5060005b8181101562000f175762000f0286868381811062000ee55762000ee562002d06565b905060200201602081019062000efc91906200246d565b620015e1565b8062000f0e8162002c83565b91505062000ec3565b505050505050565b62000f2962001375565b6002805463ffffffff191663ffffffff83169081179091556040519081527fa50e633e596676ec061ce7c571f056a11728f3e402130b3892306b8bffbacb459060200162000691565b62000f7c62001375565b600062000f8a600862001364565b905080821162000f9b578162000f9d565b805b915081831062000fc0576040516363df817160e01b815260040160405180910390fd5b815b8381111562000a235762000fef62000fe962000fe060018462002b64565b6008906200189d565b620018ab565b8062000ffb8162002c69565b91505062000fc2565b6060600062001014600662001364565b905080831162001025578262001027565b805b9250600062001037858562002b64565b90508067ffffffffffffffff81111562001055576200105562002d1c565b6040519080825280602002602001820160405280156200107f578160200160208202803683370190505b50925060005b81811015620010e957620010a76200109e828862002b27565b6006906200189d565b848281518110620010bc57620010bc62002d06565b6001600160a01b039092166020928302919091019091015280620010e08162002c83565b91505062001085565b50505092915050565b600062000603600662001364565b6200110a62001375565b6001600160a01b03821662001132576040516302154e0360e21b815260040160405180910390fd5b6001600160a01b038216600081815260046020908152604091829020805460ff191685151590811790915591519182527f35e489feb77d2a6cd2c2037660c71c77372f3bb3df4e526c31c8027c4d200fc2910162000b74565b606060006200119b600862001364565b9050808311620011ac5782620011ae565b805b92506000620011be858562002b64565b90508067ffffffffffffffff811115620011dc57620011dc62002d1c565b60405190808252806020026020018201604052801562001206578160200160208202803683370190505b50925060005b81811015620010e9576200122562000fe0828862002b27565b8482815181106200123a576200123a62002d06565b602090810291909101015280620012518162002c83565b9150506200120c565b6200126462001375565b6001600160a01b0382166200128c576040516302154e0360e21b815260040160405180910390fd5b6001600160a01b038216600081815260036020908152604091829020805460ff191685151590811790915591519182527fc284628ecb3f5f7340a26531f005815fc59ddd27f3f0e85953d0d343f00ad428910162000b74565b620012ef62001375565b6001600160a01b038116620013565760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840162000c8c565b62001361816200184d565b50565b60006200136f825490565b92915050565b6000546001600160a01b0316331462000c125760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640162000c8c565b60008160e00151806020019051810190620013ed9190620024ad565b5095945050505050565b6001600160a01b038116600090815260018301602052604081205415155b9392505050565b60405163036b50d960e11b81526001600160a01b03828116600483015260009182917f000000000000000000000000000000000000000000000000000000000000000016906306d6a1b29060240160206040518083038186803b1580156200148357600080fd5b505afa15801562001498573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620014be91906200248d565b90506000816001600160a01b031663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b158015620014fc57600080fd5b505afa15801562001511573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200153791906200248d565b604051631217afdb60e01b81526001600160a01b0380831660048301529192507f000000000000000000000000000000000000000000000000000000000000000090911690631217afdb90602401604080518083038186803b1580156200159d57600080fd5b505afa158015620015b2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620015d891906200252d565b95945050505050565b604051631703e5f960e01b81526001600160a01b0382811660048301527f00000000000000000000000000000000000000000000000000000000000000001690631703e5f99060240160206040518083038186803b1580156200164357600080fd5b505afa15801562001658573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200167e919062002619565b620016a8576040516302b0b9ed60e61b81526001600160a01b038216600482015260240162000c8c565b6000620016b6600662001364565b9050620016c560068362001969565b50620016d360648262002ca1565b620016e257620016e262001980565b6040516001600160a01b038316907f6cc6d54c3fe523f264ed444be1abac0a65a2b2c1839d8cabea67819f08ac0a6090600090a25050565b6200172760068262001bb8565b50600062001736600662001364565b6005549091506000906200174d9060019062002b64565b905060006200175c8262001bcf565b9050806200176c60148562002b27565b11158062001778575082155b15620017a957620017a96005838154811062001798576200179862002d06565b906000526020600020015462001bde565b6040516001600160a01b038516907fb6efb6c4d9cb678be5b5b3e2841bd5d0dfee857bb89e24626955e069c377539390600090a250505050565b6040516001600160a01b0383166024820152604481018290526200184890849063a9059cbb60e01b906064015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b03199093169290921790915262001d29565b505050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b600062001415838362001e05565b620018b860088262001e32565b5060405163744bfe6160e01b8152600481018290523060248201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063744bfe6190604401600060405180830381600087803b1580156200192257600080fd5b505af115801562001937573d6000803e3d6000fd5b50506040518392507fd2bff834f602de1b7d992d905cd88359e05a138ea68d552fefc7eda1a8d583ee9150600090a250565b600062001415836001600160a01b03841662001e40565b600554600090620019919062001bcf565b90506000620019a260648362002b27565b905060007f00000000000000000000000000000000000000000000000000000000000000008383604051620019d79062002347565b6001600160a01b03909316835260208301919091526040820152606001604051809103906000f08015801562001a11573d6000803e3d6000fd5b506040805161018081018252600c61014082019081526b047617567652075706b6565760a41b61016083015281528151602080820184526000808352818401929092526001600160a01b0385168385015260025463ffffffff16606084015230608084015260a083018290528351808201855282815260c08401528351808201855282815260e08401528351908101909352808352610100820192909252600154600160a01b90046001600160601b031661012082015291925062001ad68262001e92565b60058054600180820183556000929092527f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db0018290555460405163c6d62bbf60e01b8152600481018390529192506001600160a01b03169063c6d62bbf90602401600060405180830381600087803b15801562001b5257600080fd5b505af115801562001b67573d6000803e3d6000fd5b505050508481846001600160a01b03167f153938fb6a7f7ecaf2969668de21bf05dfb57874d4f3ee1981c6ddb91efe0bf68760405162001ba991815260200190565b60405180910390a45050505050565b600062001415836001600160a01b03841662001fd1565b60006200136f60648362002b42565b600580548062001bf25762001bf262002cf0565b6001900381819060005260206000200160009055905562001c1e816008620020d590919063ffffffff16565b506001546040516315a7701360e31b8152600481018390526001600160a01b039091169063ad3b809890602401600060405180830381600087803b15801562001c6657600080fd5b505af115801562001c7b573d6000803e3d6000fd5b5050604051636402401160e11b8152600481018490527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316925063c80480229150602401600060405180830381600087803b15801562001ce257600080fd5b505af115801562001cf7573d6000803e3d6000fd5b50506040518392507fdbb166772289085c2e83ec68451ba8158a6effa00f9f28b002f38957c9f78eae9150600090a250565b600062001d80826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b0316620020e39092919063ffffffff16565b905080516000148062001da457508080602001905181019062001da4919062002619565b620018485760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b606482015260840162000c8c565b600082600001828154811062001e1f5762001e1f62002d06565b9060005260206000200154905092915050565b600062001415838362001fd1565b600081815260018301602052604081205462001e89575081546001818101845560008481526020808220909301849055845484825282860190935260409020919091556200136f565b5060006200136f565b600062001f027f00000000000000000000000000000000000000000000000000000000000000008361012001516001600160601b03167f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316620020fc9092919063ffffffff16565b604051633f678e1160e01b81526000906001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690633f678e119062001f5390869060040162002958565b602060405180830381600087803b15801562001f6e57600080fd5b505af115801562001f83573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001fa9919062002761565b9050801562001fb85792915050565b604051631a1d30f560e21b815260040160405180910390fd5b60008181526001830160205260408120548015620020ca57600062001ff860018362002b64565b85549091506000906200200e9060019062002b64565b90508181146200207a57600086600001828154811062002032576200203262002d06565b906000526020600020015490508087600001848154811062002058576200205862002d06565b6000918252602080832090910192909255918252600188019052604090208390555b85548690806200208e576200208e62002cf0565b6001900381819060005260206000200160009055905585600101600086815260200190815260200160002060009055600193505050506200136f565b60009150506200136f565b600062001415838362001e40565b6060620020f48484600085620021c0565b949350505050565b604051636eb1769f60e11b81523060048201526001600160a01b0383811660248301526000919085169063dd62ed3e9060440160206040518083038186803b1580156200214857600080fd5b505afa1580156200215d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002183919062002761565b905062000a238463095ea7b360e01b856200219f868662002b27565b6040516001600160a01b039092166024830152604482015260640162001810565b606082471015620022235760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b606482015260840162000c8c565b600080866001600160a01b0316858760405162002241919062002844565b60006040518083038185875af1925050503d806000811462002280576040519150601f19603f3d011682016040523d82523d6000602084013e62002285565b606091505b50915091506200229887838387620022a3565b979650505050505050565b60608315620023145782516200230c576001600160a01b0385163b6200230c5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640162000c8c565b5081620020f4565b620020f483838151156200232b5781518083602001fd5b8060405162461bcd60e51b815260040162000c8c919062002943565b610a358062002d5883390190565b8035620023628162002d32565b919050565b600082601f8301126200237957600080fd5b8135602067ffffffffffffffff82111562002398576200239862002d1c565b8160051b620023a982820162002af3565b838152828101908684018388018501891015620023c557600080fd5b600093505b85841015620023ea578035835260019390930192918401918401620023ca565b50979650505050505050565b600082601f8301126200240857600080fd5b813567ffffffffffffffff81111562002425576200242562002d1c565b6200243a601f8201601f191660200162002af3565b8181528460208386010111156200245057600080fd5b816020850160208301376000918101602001919091529392505050565b6000602082840312156200248057600080fd5b8135620014158162002d32565b600060208284031215620024a057600080fd5b8151620014158162002d32565b600080600080600060a08688031215620024c657600080fd5b8551620024d38162002d32565b6020870151909550620024e68162002d32565b6040870151909450620024f98162002d32565b60608701519093506200250c8162002d32565b60808701519092506200251f8162002d32565b809150509295509295909350565b600080604083850312156200254157600080fd5b82516200254e8162002d32565b6020840151909250620025618162002d32565b809150509250929050565b600080604083850312156200258057600080fd5b82356200258d8162002d32565b91506020830135620025618162002d48565b60008060208385031215620025b357600080fd5b823567ffffffffffffffff80821115620025cc57600080fd5b818501915085601f830112620025e157600080fd5b813581811115620025f157600080fd5b8660208260051b85010111156200260757600080fd5b60209290920196919550909350505050565b6000602082840312156200262c57600080fd5b8151620014158162002d48565b600080602083850312156200264d57600080fd5b823567ffffffffffffffff808211156200266657600080fd5b818501915085601f8301126200267b57600080fd5b8135818111156200268b57600080fd5b8660208285010111156200260757600080fd5b60008060408385031215620026b257600080fd5b823560028110620026c257600080fd5b91506020830135620025618162002d32565b60008060408385031215620026e857600080fd5b823567ffffffffffffffff808211156200270157600080fd5b9084019061010082870312156200271757600080fd5b909250602084013590808211156200272e57600080fd5b506200273d85828601620023f6565b9150509250929050565b6000602082840312156200275a57600080fd5b5035919050565b6000602082840312156200277457600080fd5b5051919050565b600080604083850312156200278f57600080fd5b50508035926020909101359150565b600060208284031215620027b157600080fd5b813563ffffffff811681146200141557600080fd5b600060208284031215620027d957600080fd5b813560ff811681146200141557600080fd5b600060208284031215620027fe57600080fd5b81356001600160601b03811681146200141557600080fd5b600081518084526200283081602086016020860162002c3a565b601f01601f19169290920160200192915050565b600082516200285881846020870162002c3a565b9190910192915050565b6020808252825182820181905260009190848201906040850190845b81811015620028a55783516001600160a01b0316835292840192918401916001016200287e565b50909695505050505050565b6020808252825182820181905260009190848201906040850190845b81811015620028a557835183529284019291840191600101620028cd565b8215158152604060208201526000620020f4604083018462002816565b60408101600284106200292b57634e487b7160e01b600052602160045260246000fd5b9281526001600160a01b039190911660209091015290565b60208152600062001415602083018462002816565b60208152600082516101408060208501526200297961016085018362002816565b91506020850151601f198086850301604087015262002999848362002816565b935060408701519150620029b860608701836001600160a01b03169052565b606087015163ffffffff81166080880152915060808701516001600160a01b03811660a0880152915060a087015160ff811660c0880152915060c08701519150808685030160e087015262002a0e848362002816565b935060e0870151915061010081878603018188015262002a2f858462002816565b94508088015192505061012081878603018188015262002a50858462002816565b9450808801519250505062002a6f828601826001600160601b03169052565b5090949350505050565b6000808335601e1984360301811262002a9157600080fd5b83018035915067ffffffffffffffff82111562002aad57600080fd5b6020019150600581901b36038213156200096457600080fd5b604051610100810167ffffffffffffffff8111828210171562002aed5762002aed62002d1c565b60405290565b604051601f8201601f1916810167ffffffffffffffff8111828210171562002b1f5762002b1f62002d1c565b604052919050565b6000821982111562002b3d5762002b3d62002cc4565b500190565b600081600019048311821515161562002b5f5762002b5f62002cc4565b500290565b60008282101562002b795762002b7962002cc4565b500390565b6000610100823603121562002b9257600080fd5b62002b9c62002ac6565b823581526020830135602082015260408301356040820152606083013560608201526080830135608082015262002bd660a0840162002355565b60a082015260c083013567ffffffffffffffff8082111562002bf757600080fd5b62002c053683870162002367565b60c084015260e085013591508082111562002c1f57600080fd5b5062002c2e36828601620023f6565b60e08301525092915050565b60005b8381101562002c5757818101518382015260200162002c3d565b8381111562000a235750506000910152565b60008162002c7b5762002c7b62002cc4565b506000190190565b600060001982141562002c9a5762002c9a62002cc4565b5060010190565b60008262002cbf57634e487b7160e01b600052601260045260246000fd5b500690565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052602160045260246000fd5b634e487b7160e01b600052603160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6001600160a01b03811681146200136157600080fd5b80151581146200136157600080fdfe61010060405234801561001157600080fd5b50604051610a35380380610a358339810160408190526100309161008a565b606083811b6001600160601b03191660805233901b60a05260c082905260e0819052600082905561005f61006b565b6001555061011c915050565b600062093a8061007b81426100cd565b61008591906100ef565b905090565b60008060006060848603121561009f57600080fd5b83516001600160a01b03811681146100b657600080fd5b602085015160409095015190969495509392505050565b6000826100ea57634e487b7160e01b600052601260045260246000fd5b500490565b600081600019048311821515161561011757634e487b7160e01b600052601160045260246000fd5b500290565b60805160601c60a05160601c60c05160e0516108ab61018a60003960008181610129015281816103bd01526103e401526000818160ae01526102a301526000818161017a015281816101d60152818161032a015261045801526000818160ea01526104f801526108ab6000f3fe608060405234801561001057600080fd5b50600436106100885760003560e01c80635ac293c91161005b5780635ac293c9146101245780636e04ff0d1461014b578063c04662641461016c578063d7d03f391461017557600080fd5b806326987b601461008d5780633e0e828b146100a95780634585e33b146100d057806346c96aac146100e5575b600080fd5b61009660005481565b6040519081526020015b60405180910390f35b6100967f000000000000000000000000000000000000000000000000000000000000000081565b6100e36100de366004610696565b61019c565b005b61010c7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020016100a0565b6100967f000000000000000000000000000000000000000000000000000000000000000081565b61015e610159366004610696565b610305565b6040516100a0929190610791565b61009660015481565b61010c7f000000000000000000000000000000000000000000000000000000000000000081565b60008054906101a9610325565b90506101b58282610410565b6101d25760405163865676e360e01b815260040160405180910390fd5b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663f4daaba16040518163ffffffff1660e01b815260040160206040518083038186803b15801561022d57600080fd5b505afa158015610241573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102659190610721565b6102729060ff16846107f0565b90508181116102815780610283565b815b905061028f8382610438565b818110156102a15760008190556102d1565b7f00000000000000000000000000000000000000000000000000000000000000006000556102cd61058f565b6001555b604051819084907f24c2a5addc0b3336e068e51a73718f69eb82d2cef5ef47c76bf8ad3a7ac3514e90600090a35050505050565b6000606061031c600054610317610325565b610410565b91509250929050565b6000807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663a64400826040518163ffffffff1660e01b815260040160206040518083038186803b15801561038157600080fd5b505afa158015610395573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103b99190610708565b90507f00000000000000000000000000000000000000000000000000000000000000008110610408577f000000000000000000000000000000000000000000000000000000000000000061040a565b805b91505090565b60004262093a8060015461042491906107f0565b1115801561043157508183105b9392505050565b6040516324adb88760e21b815260048101839052602481018290526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906392b6e21c9060440160006040518083038186803b1580156104a257600080fd5b505afa1580156104b6573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526104de91908101906105ca565b604051636138889b60e01b81529091506001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690636138889b9061052d908490600401610744565b600060405180830381600087803b15801561054757600080fd5b505af1925050508015610558575060015b61058a57604051829084907f1288caf242767a08cc81204e93d9cbd05b24254e00087670c601c33fbc39705a90600090a35b505050565b600062093a8061059f8142610808565b6105a9919061082a565b905090565b80516001600160a01b03811681146105c557600080fd5b919050565b600060208083850312156105dd57600080fd5b825167ffffffffffffffff808211156105f557600080fd5b818501915085601f83011261060957600080fd5b81518181111561061b5761061b61085f565b8060051b604051601f19603f830116810181811085821117156106405761064061085f565b604052828152858101935084860182860187018a101561065f57600080fd5b600095505b8386101561068957610675816105ae565b855260019590950194938601938601610664565b5098975050505050505050565b600080602083850312156106a957600080fd5b823567ffffffffffffffff808211156106c157600080fd5b818501915085601f8301126106d557600080fd5b8135818111156106e457600080fd5b8660208285010111156106f657600080fd5b60209290920196919550909350505050565b60006020828403121561071a57600080fd5b5051919050565b60006020828403121561073357600080fd5b815160ff8116811461043157600080fd5b6020808252825182820181905260009190848201906040850190845b818110156107855783516001600160a01b031683529284019291840191600101610760565b50909695505050505050565b821515815260006020604081840152835180604085015260005b818110156107c7578581018301518582016060015282016107ab565b818111156107d9576000606083870101525b50601f01601f191692909201606001949350505050565b6000821982111561080357610803610849565b500190565b60008261082557634e487b7160e01b600052601260045260246000fd5b500490565b600081600019048311821515161561084457610844610849565b500290565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052604160045260246000fdfea26469706673582212209e871c88b212e56eb1f0d87098feae690a42d78b27e06b348d89594dea0a86b564736f6c63430008060033a264697066735822122039e8434f660ed73ad8161f3bc66702c91df1f395038cde22130a93be912ce1e164736f6c63430008060033000000000000000000000000350a791bfc2c21f9ed5d10980dad2e2638ffa7f6000000000000000000000000696fb0d7d069cc0bb35a7c36115ce63e55cb9aa6000000000000000000000000e601c5837307f07ab39deb0f5516602f045bf14f0000000000000000000000009d360706c7608e85a79c0f6efea554f50e37c87100000000000000000000000041c914ee0c7e1a5edcd0295623e6dc557b5abf3c0000000000000000000000000000000000000000000000008ac7230489e8000000000000000000000000000000000000000000000000000000000000004c4b4000000000000000000000000000000000000000000000000000000000000000050000000000000000000000000000000000000000000000000000000000000120000000000000000000000000000000000000000000000000000000000000000200000000000000000000000042e403b73898320f23109708b0ba1ae85838c445000000000000000000000000ead23f606643e387a073d0ee8718602291ffaaeb