0 txs
0 calls
constructor
constructor(address _linkToken, address _keeperRegistry, address _automationRegistrar, address _voter, address _pricesOracle, address _upkeepBalanceMonitor, uint96 _newUpkeepFundAmount, uint32 _newUpkeepGasLimit)
functions
automationRegistrar
viewfunction automationRegistrar() view returns (address)
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)
fetchFirstPrice
viewfunction fetchFirstPrice(uint256 _startIndex, uint256 _endIndex) view returns (address, uint256, uint256)
fetchInterval
viewfunction fetchInterval() view returns (uint256)
finishedUpkeeps
viewfunction finishedUpkeeps(uint256) view returns (uint256)
isTokenUpkeep
viewfunction isTokenUpkeep(address) view returns (bool)
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)
pricesOracle
viewfunction pricesOracle() view returns (address)
tokenAt
viewfunction tokenAt(uint256 _index) view returns (address)
tokenCount
viewfunction tokenCount() view returns (uint256)
tokenList
viewfunction tokenList(uint256 _startIndex, uint256 _endIndex) view returns (address[] tokens)
tokenListLength
viewfunction tokenListLength() view returns (uint256)
tokenUpkeep
viewfunction tokenUpkeep(uint256) view returns (address)
trustedForwarder
viewfunction trustedForwarder() view returns (address)
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)
cleanupTokenList
nonpayablefunction cleanupTokenList()
deregisterTokens
nonpayablefunction deregisterTokens(address[] _tokens)
finishUpkeepAndCleanup
nonpayablefunction finishUpkeepAndCleanup(uint256 _lastRun)
performUpkeep
nonpayablefunction performUpkeep(bytes performData)
registerTokens
nonpayablefunction registerTokens(address[] _tokens)
renounceOwnership
nonpayablefunction renounceOwnership()
setNewUpkeepFundAmount
nonpayablefunction setNewUpkeepFundAmount(uint96 _newUpkeepFundAmount)
setNewUpkeepGasLimit
nonpayablefunction setNewUpkeepGasLimit(uint32 _newUpkeepGasLimit)
setPricesOracle
nonpayablefunction setPricesOracle(address _pricesOracle)
setTrustedForwarder
nonpayablefunction setTrustedForwarder(address _trustedForwarder)
setUpkeepBalanceMonitor
nonpayablefunction setUpkeepBalanceMonitor(address _upkeepBalanceMonitor)
storePriceAndCleanup
nonpayablefunction storePriceAndCleanup(address _token, uint256 _price, uint256 _fetchInterval, bool _isLastIndex) returns (bool stored)
transferOwnership
nonpayablefunction transferOwnership(address newOwner)
withdrawCancelledUpkeeps
nonpayablefunction withdrawCancelledUpkeeps(uint256 _startIndex, uint256 _endIndex)
withdrawLinkBalance
nonpayablefunction withdrawLinkBalance()
events
FetchedTokenPrice
event FetchedTokenPrice(address indexed token, uint256 price)
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)
PricesOracleSet
event PricesOracleSet(address indexed pricesOracle)
TokenDeregistered
event TokenDeregistered(address indexed token)
TokenListCleaned
event TokenListCleaned()
TokenRegistered
event TokenRegistered(address indexed token)
TokenUpkeepCancelled
event TokenUpkeepCancelled(uint256 upkeepId)
TokenUpkeepRegistered
event TokenUpkeepRegistered(address indexed tokenUpkeep, uint256 upkeepId, uint256 startIndex, uint256 endIndex)
TokenUpkeepWithdrawn
event TokenUpkeepWithdrawn(uint256 upkeepId)
TrustedForwarderSet
event TrustedForwarderSet(address indexed trustedForwarder)
UpkeepBalanceMonitorSet
event UpkeepBalanceMonitorSet(address indexed upkeepBalanceMonitor)
errors
AddressZeroNotAllowed
error AddressZeroNotAllowed()
AutoApproveDisabled
error AutoApproveDisabled()
InvalidAction
error InvalidAction()
InvalidIndex
error InvalidIndex()
NoLinkBalance
error NoLinkBalance()
TokenAlreadyRegistered
error TokenAlreadyRegistered()
TokenNotRegistered
error TokenNotRegistered()
TokenNotWhitelisted
error TokenNotWhitelisted()
UnauthorizedSender
error UnauthorizedSender()
creation bytecode
0x6101006040523480156200001257600080fd5b5060405162003de038038062003de0833981016040819052620000359162000136565b6200004033620000c9565b606097881b6001600160601b031990811660805296881b871660a05294871b861660c0529290951b90931660e052600180546001600160a01b0319166001600160a01b0394851617905591909216600160a01b6001600160601b039092168202176002556003805463ffffffff60a01b191663ffffffff909316909102919091179055620001f9565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b80516001600160a01b03811681146200013157600080fd5b919050565b600080600080600080600080610100898b0312156200015457600080fd5b6200015f8962000119565b97506200016f60208a0162000119565b96506200017f60408a0162000119565b95506200018f60608a0162000119565b94506200019f60808a0162000119565b9350620001af60a08a0162000119565b60c08a01519093506001600160601b0381168114620001cd57600080fd5b60e08a015190925063ffffffff81168114620001e857600080fd5b809150509295985092959890939650565b60805160601c60a05160601c60c05160601c60e05160601c613b626200027e60003960008181610367015261112f0152600081816102ac01528181611fe8015261206a0152600081816105060152818161182801528181611b160152611dbd0152600081816103b00152818161098101528181610a3601526120180152613b626000f3fe60806040523480156200001157600080fd5b50600436106200026d5760003560e01c80637afc52ff1162000155578063b8ae46e211620000c7578063da7422281162000086578063da742228146200063c578063e7edb16f1462000653578063e8d02706146200065d578063f2fde38b1462000674578063f6cc5f94146200068b57600080fd5b8063b8ae46e21462000586578063ba0f41ee14620005ac578063bc9b96c714620005c3578063c084cfc914620005da578063d01876c3146200060e57600080fd5b806390b85510116200011457806390b85510146200053a57806392a91a3a14620005515780639a552a2914620005685780639f181b5e1462000572578063b1b7d914146200057c57600080fd5b80637afc52ff14620004c15780637da0a87714620004d5578063823860f214620004e957806383e2277414620005005780638da5cb5b146200052857600080fd5b806352916bed11620001ef5780636479de6b11620001ae5780636479de6b146200041457806364aeed3e146200044b578063715018a614620004885780637323f3d014620004925780637a4339a8146200049b57600080fd5b806352916bed146200039357806357970e9314620003aa57806358e25a4914620003d25780635f2b65f814620003e65780636012b30614620003fd57600080fd5b80633704456a116200023c5780633704456a146200030057806340691db414620003235780634585e33b146200034a57806346c96aac14620003615780634ee8270c146200038957600080fd5b806302400b75146200027257806307896a5f146200029c5780630c38187314620002a65780632d25d10514620002e7575b600080fd5b6200028962000283366004620029fb565b620006b7565b6040519081526020015b60405180910390f35b62000289620006d9565b620002ce7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b03909116815260200162000293565b620002fe620002f836600462002a7a565b620006ec565b005b6200028962000311366004620029fb565b60066020526000908152604090205481565b6200033a6200033436600462002910565b62000753565b6040516200029392919062002b7a565b620002fe6200035b3660046200286a565b620008a6565b620002ce7f000000000000000000000000000000000000000000000000000000000000000081565b620002fe6200095f565b620002fe620003a436600462002741565b62000a96565b620002ce7f000000000000000000000000000000000000000000000000000000000000000081565b600254620002ce906001600160a01b031681565b620002fe620003f7366004620027d0565b62000b12565b620002fe6200040e36600462002741565b62000bed565b6200043a6200042536600462002741565b60056020526000908152604090205460ff1681565b604051901515815260200162000293565b620004626200045c36600462002a2f565b62000c69565b604080516001600160a01b03909416845260208401929092529082015260600162000293565b620002fe62000d54565b60075462000289565b620004b2620004ac36600462002a2f565b62000d6c565b60405162000293919062002af1565b600154620002ce906001600160a01b031681565b600354620002ce906001600160a01b031681565b620002fe620004fa36600462002a52565b62000e5a565b620002ce7f000000000000000000000000000000000000000000000000000000000000000081565b6000546001600160a01b0316620002ce565b620002fe6200054b36600462002a2f565b62000eb9565b620002ce62000562366004620029fb565b62000f4b565b6200028962000f60565b6200028962000f6e565b620002fe62000f7c565b6200059d6200059736600462002a2f565b62000f90565b60405162000293919062002b40565b620002fe620005bd366004620029fb565b6200105f565b620002fe620005d4366004620027d0565b6200109e565b600254620005f590600160a01b90046001600160601b031681565b6040516001600160601b03909116815260200162000293565b6003546200062690600160a01b900463ffffffff1681565b60405163ffffffff909116815260200162000293565b620002fe6200064d36600462002741565b6200123f565b62000289620012bb565b6200043a6200066e36600462002781565b6200133c565b620002fe6200068536600462002741565b620014ef565b620002ce6200069c366004620029fb565b6004602052600090815260409020546001600160a01b031681565b60078181548110620006c857600080fd5b600091825260209091200154905081565b6000620006e7600b6200156f565b905090565b620006f66200157a565b600280546001600160a01b0316600160a01b6001600160601b038416908102919091179091556040519081527f6ef019efc5a9aff5b67358a778670503f4eea3eab8b83144ea1ff444010ea975906020015b60405180910390a150565b60006060816200076760c086018662002d08565b60008181106200077b576200077b62002e99565b9050602002013590507f44948130cf88523dbc150908a47dd6332c33a01a3869d7f2fa78e51d5a5f9c5760001b8114156200089d576000620007e3620007c560c088018862002d08565b6002818110620007d957620007d962002e99565b9050602002013590565b905060006200081b620007fa60c089018962002d08565b60038181106200080e576200080e62002e99565b9050602002013560011490565b90508015620008705762000831600883620015d6565b6200086a5760016000836040516020016200084e92919062002b97565b604051602081830303815290604052945094505050506200089f565b6200089a565b6200087d600883620015d6565b156200089a57600180836040516020016200084e92919062002b97565b50505b505b9250929050565b6003546001600160a01b03163314620008d257604051630101292160e31b815260040160405180910390fd5b600080620008e383850185620028cf565b90925090506000826001811115620008ff57620008ff62002e6d565b141562000917576200091181620015fb565b62000959565b60018260018111156200092e576200092e62002e6d565b1415620009405762000911816200166d565b604051634a7f394f60e01b815260040160405180910390fd5b50505050565b620009696200157a565b6040516370a0823160e01b81523060048201526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906370a082319060240160206040518083038186803b158015620009cc57600080fd5b505afa158015620009e1573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000a07919062002a15565b90508062000a2857604051636357978760e01b815260040160405180910390fd5b62000a5e6001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016338362001736565b60405181815233907ffbdec3a5575474c59705a087c0a8047637799a2cebdc03dad0c75ff7c90008af9060200160405180910390a250565b62000aa06200157a565b6001600160a01b03811662000ac8576040516302154e0360e21b815260040160405180910390fd5b600180546001600160a01b0319166001600160a01b0383169081179091556040517f031cf47e1c585397e15c527fb65bed26ae1386bfa09c0f5c196011509f14d4f990600090a250565b62000b1c6200157a565b8060005b8181101562000b955762000b6284848381811062000b425762000b4262002e99565b905060200201602081019062000b59919062002741565b600890620015d6565b62000b805760405163259ba1ad60e01b815260040160405180910390fd5b8062000b8c8162002e0c565b91505062000b20565b5060005b81811015620009595762000bd884848381811062000bbb5762000bbb62002e99565b905060200201602081019062000bd2919062002741565b6200166d565b8062000be48162002e0c565b91505062000b99565b62000bf76200157a565b6001600160a01b03811662000c1f576040516302154e0360e21b815260040160405180910390fd5b600280546001600160a01b0319166001600160a01b0383169081179091556040517f01e23dd79ada5633f2e7a765ad226e50a6a90bff9592881dd5af553c94360b5a90600090a250565b6000808080855b8581101562000d3f5762000c86600882620017a0565b91506001600160a01b0382161562000d2a57600154604051635670bcc760e11b81526001600160a01b0380851660048301528492849291169063ace1798e9060240160206040518083038186803b15801562000ce157600080fd5b505afa15801562000cf6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000d1c919062002a15565b945094509450505062000d4d565b8062000d368162002e0c565b91505062000c70565b506000806000935093509350505b9250925092565b62000d5e6200157a565b62000d6a6000620017ae565b565b6060600062000d7c60086200156f565b905080831162000d8d578262000d8f565b805b9250600062000d9f858562002da9565b90508067ffffffffffffffff81111562000dbd5762000dbd62002eaf565b60405190808252806020026020018201604052801562000de7578160200160208202803683370190505b50925060005b8181101562000e515762000e0f62000e06828862002d55565b600890620017a0565b84828151811062000e245762000e2462002e99565b6001600160a01b03909216602092830291909101909101528062000e488162002e0c565b91505062000ded565b50505092915050565b62000e646200157a565b6003805463ffffffff60a01b1916600160a01b63ffffffff8416908102919091179091556040519081527fa50e633e596676ec061ce7c571f056a11728f3e402130b3892306b8bffbacb459060200162000748565b62000ec36200157a565b600062000ed1600b6200156f565b905080821162000ee2578162000ee4565b805b915081831062000f07576040516363df817160e01b815260040160405180910390fd5b815b83811115620009595762000f3662000f3062000f2760018462002da9565b600b90620017a0565b620017fe565b8062000f428162002df2565b91505062000f09565b600062000f5a600883620017a0565b92915050565b6000620006e760086200156f565b6000620006e76008620018c0565b62000f866200157a565b62000d6a620018cd565b6060600062000fa0600b6200156f565b905080831162000fb1578262000fb3565b805b9250600062000fc3858562002da9565b90508067ffffffffffffffff81111562000fe15762000fe162002eaf565b6040519080825280602002602001820160405280156200100b578160200160208202803683370190505b50925060005b8181101562000e51576200102a62000f27828862002d55565b8482815181106200103f576200103f62002e99565b602090810291909101015280620010568162002e0c565b91505062001011565b3360009081526005602052604090205460ff166200109057604051630101292160e31b815260040160405180910390fd5b6200109b8162001904565b50565b620010a86200157a565b806000805b82811015620011e057848482818110620010cb57620010cb62002e99565b9050602002016020810190620010e2919062002741565b9150620010f1600883620015d6565b156200111057604051633ea7ffd960e11b815260040160405180910390fd5b60405163559bfa4360e11b81526001600160a01b0383811660048301527f0000000000000000000000000000000000000000000000000000000000000000169063ab37f4869060240160206040518083038186803b1580156200117257600080fd5b505afa15801562001187573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620011ad91906200284a565b620011cb576040516307c241ad60e51b815260040160405180910390fd5b80620011d78162002e0c565b915050620010ad565b5060005b8281101562001238576200122385858381811062001206576200120662002e99565b90506020020160208101906200121d919062002741565b620015fb565b806200122f8162002e0c565b915050620011e4565b5050505050565b620012496200157a565b6001600160a01b03811662001271576040516302154e0360e21b815260040160405180910390fd5b600380546001600160a01b0319166001600160a01b0383169081179091556040517fd91237492a9e30cd2faf361fc103998a382ff0ec2b1b07dc1cbebb76ae2f1ea290600090a250565b6001546040805163d2f343c760e01b815290516000926001600160a01b03169163d2f343c7916004808301926020929190829003018186803b1580156200130157600080fd5b505afa15801562001316573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620006e7919062002a15565b3360009081526005602052604081205460ff166200136d57604051630101292160e31b815260040160405180910390fd5b6000836200137c814262002d70565b62001388919062002d87565b6001546040516344338e0b60e11b81526001600160a01b0389811660048301524260248301526044820188905292935091169081906388671c169060640160206040518083038186803b158015620013df57600080fd5b505afa158015620013f4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200141a919062002a15565b620014d35760405163487f0cd760e01b81526001600160a01b038881166004830152602482018890526044820184905282169063487f0cd790606401600060405180830381600087803b1580156200147157600080fd5b505af115801562001486573d6000803e3d6000fd5b5050505060019250866001600160a01b03167fc8d3a0f15960805e52ad92f64dc76c8298701ec374f0c61d6820a44e9b8a442287604051620014ca91815260200190565b60405180910390a25b8315620014e557620014e58262001904565b5050949350505050565b620014f96200157a565b6001600160a01b038116620015645760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b6200109b81620017ae565b600062000f5a825490565b6000546001600160a01b0316331462000d6a5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016200155b565b6001600160a01b038116600090815260018301602052604081205415155b9392505050565b60006200160960086200156f565b90506200161860088362001948565b506200162660648262002e2a565b6200163557620016356200195f565b6040516001600160a01b038316907f158412daecdc1456d01568828bcdb18464cc7f1ce0215ddbc3f3cfede9d1e63d90600090a25050565b6200167a60088262001ca9565b506000620016896008620018c0565b600754909150600090620016a09060019062002da9565b90506000620016af8262001cc0565b905080620016bf60148562002d55565b111580620016cb575082155b15620016fc57620016fc60078381548110620016eb57620016eb62002e99565b906000526020600020015462001ccf565b6040516001600160a01b038516907f1d735ca20b63676dde668b718be78606b061d6bd7534ff815a90a121a6c084b690600090a250505050565b6040516001600160a01b0383166024820152604481018290526200179b90849063a9059cbb60e01b906064015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b03199093169290921790915262001e57565b505050565b6000620015f4838362001f33565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6200180b600b8262001f60565b5060405163744bfe6160e01b8152600481018290523060248201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063744bfe6190604401600060405180830381600087803b1580156200187557600080fd5b505af11580156200188a573d6000803e3d6000fd5b505050507f563bd799ad28659e514073fb29cf7d1b3ab689a84eafd43d6cc562925c41f3e2816040516200074891815260200190565b600062000f5a8262001f6e565b620018d9600862001f83565b6040517f8faec6fb6d1dc03a0bb5d8a051eafdfe2e26466e2dc0bd94ba97dc3bb661020190600090a1565b6000818152600660205260408120805491620019208362002e0c565b909155505060075460008281526006602052604090205414156200109b576200109b620018cd565b6000620015f4836001600160a01b03841662001f8e565b600754600090620019709062001cc0565b905060006200198160648362002d55565b905060008282604051620019959062002733565b9182526020820152604001604051809103906000f080158015620019bd573d6000803e3d6000fd5b506001600160a01b0381166000818152600560209081526040808320805460ff19166001179055805161018081018252600c61014082019081526b0546f6b656e2075706b6565760a41b610160830152815281518084018352848152818401528082019490945260035463ffffffff600160a01b9182900416606086015230608086015260a085018490528151808401835284815260c08601528151808401835284815260e086015281519283019091528282526101008401919091526002546001600160601b03919004166101208301529192509062001a9e8262001fe0565b60078054600181019091557fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c68801819055600081815260046020819052604080832080546001600160a01b0319166001600160a01b038981169190911790915590516379ea994360e01b815291820184905292935090917f000000000000000000000000000000000000000000000000000000000000000016906379ea99439060240160206040518083038186803b15801562001b5957600080fd5b505afa15801562001b6e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001b94919062002761565b604051631b4e844560e31b81526001600160a01b0380831660048301529192509085169063da74222890602401600060405180830381600087803b15801562001bdc57600080fd5b505af115801562001bf1573d6000803e3d6000fd5b505060025460405163c6d62bbf60e01b8152600481018690526001600160a01b03909116925063c6d62bbf9150602401600060405180830381600087803b15801562001c3c57600080fd5b505af115801562001c51573d6000803e3d6000fd5b505060408051858152602081018a90529081018890526001600160a01b03871692507fdce959f4d6a3b4c61e31cd870f61a299096e2bc21d24e80172df1c4ebe2a49f1915060600160405180910390a2505050505050565b6000620015f4836001600160a01b0384166200211f565b600062000f5a60648362002d87565b600780548062001ce35762001ce362002e83565b6000828152602080822083016000199081018390559092019092558282526004808252604080842080546001600160a01b0316855260058452908420805460ff1916905592849052905280546001600160a01b031916905562001d48600b82620021f1565b506002546040516315a7701360e31b8152600481018390526001600160a01b039091169063ad3b809890602401600060405180830381600087803b15801562001d9057600080fd5b505af115801562001da5573d6000803e3d6000fd5b5050604051636402401160e11b8152600481018490527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316925063c80480229150602401600060405180830381600087803b15801562001e0c57600080fd5b505af115801562001e21573d6000803e3d6000fd5b505050507f9748ae4214457c87a5edfaaf51b829bb23efb9460652bd7711ea595bb681bf5e816040516200074891815260200190565b600062001eae826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b0316620021ff9092919063ffffffff16565b905080516000148062001ed257508080602001905181019062001ed291906200284a565b6200179b5760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b60648201526084016200155b565b600082600001828154811062001f4d5762001f4d62002e99565b9060005260206000200154905092915050565b6000620015f4838362002218565b6002810154815460009162000f5a9162002da9565b6200109b816200231c565b600081815260018301602052604081205462001fd75750815460018181018455600084815260208082209093018490558454848252828601909352604090209190915562000f5a565b50600062000f5a565b6000620020507f00000000000000000000000000000000000000000000000000000000000000008361012001516001600160601b03167f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316620024e89092919063ffffffff16565b604051633f678e1160e01b81526000906001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690633f678e1190620020a190869060040162002be7565b602060405180830381600087803b158015620020bc57600080fd5b505af1158015620020d1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620020f7919062002a15565b90508015620021065792915050565b604051631a1d30f560e21b815260040160405180910390fd5b6000818152600183016020526040812054806200214157600091505062000f5a565b60006200215060018362002da9565b8554909150620021639060019062002da9565b8114156200219b5784548590806200217f576200217f62002e83565b60019003818190600052602060002001600090559055620021d9565b846000018181548110620021b357620021b362002e99565b600091825260208083209091018290556002870180546001810182559083529120018190555b50505060009081526001918201602052604081205590565b6000620015f4838362001f8e565b6060620022108484600085620025ac565b949350505050565b60008181526001830160205260408120548015620023115760006200223f60018362002da9565b8554909150600090620022559060019062002da9565b9050818114620022c157600086600001828154811062002279576200227962002e99565b90600052602060002001549050808760000184815481106200229f576200229f62002e99565b6000918252602080832090910192909255918252600188019052604090208390555b8554869080620022d557620022d562002e83565b60019003818190600052602060002001600090559055856001016000868152602001908152602001600020600090556001935050505062000f5a565b600091505062000f5a565b6002810180546200232b575050565b815b8154156200179b57815460009083906200234a9060019062002da9565b815481106200235d576200235d62002e99565b90600052602060002001549050828054806200237d576200237d62002e83565b6001900381819060005260206000200160009055905581805490508110620023a657506200232d565b8154600090620023b99060019062002da9565b905080821415620023f55782805480620023d757620023d762002e83565b6001900381819060005260206000200160009055905550506200232d565b60008382815481106200240c576200240c62002e99565b60009182526020909120015490508062002475578380548062002433576200243362002e83565b6001900381819060005260206000200160009055905583805490508310156200246c578454600181018655600086815260209020018390555b5050506200232d565b808484815481106200248b576200248b62002e99565b600091825260209091200155620024a483600162002d55565b60008281526001880160205260409020558354849080620024c957620024c962002e83565b600190038181906000526020600020016000905590555050506200232d565b604051636eb1769f60e11b81523060048201526001600160a01b0383811660248301526000919085169063dd62ed3e9060440160206040518083038186803b1580156200253457600080fd5b505afa15801562002549573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200256f919062002a15565b9050620009598463095ea7b360e01b856200258b868662002d55565b6040516001600160a01b039092166024830152604482015260640162001763565b6060824710156200260f5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b60648201526084016200155b565b600080866001600160a01b031685876040516200262d919062002ad3565b60006040518083038185875af1925050503d80600081146200266c576040519150601f19603f3d011682016040523d82523d6000602084013e62002671565b606091505b509150915062002684878383876200268f565b979650505050505050565b6060831562002700578251620026f8576001600160a01b0385163b620026f85760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016200155b565b508162002210565b620022108383815115620027175781518083602001fd5b8060405162461bcd60e51b81526004016200155b919062002bd2565b610c428062002eeb83390190565b6000602082840312156200275457600080fd5b8135620015f48162002ec5565b6000602082840312156200277457600080fd5b8151620015f48162002ec5565b600080600080608085870312156200279857600080fd5b8435620027a58162002ec5565b935060208501359250604085013591506060850135620027c58162002edb565b939692955090935050565b60008060208385031215620027e457600080fd5b823567ffffffffffffffff80821115620027fd57600080fd5b818501915085601f8301126200281257600080fd5b8135818111156200282257600080fd5b8660208260051b85010111156200283857600080fd5b60209290920196919550909350505050565b6000602082840312156200285d57600080fd5b8151620015f48162002edb565b600080602083850312156200287e57600080fd5b823567ffffffffffffffff808211156200289757600080fd5b818501915085601f830112620028ac57600080fd5b813581811115620028bc57600080fd5b8660208285010111156200283857600080fd5b60008060408385031215620028e357600080fd5b823560028110620028f357600080fd5b91506020830135620029058162002ec5565b809150509250929050565b600080604083850312156200292457600080fd5b823567ffffffffffffffff808211156200293d57600080fd5b9084019061010082870312156200295357600080fd5b909250602084013590808211156200296a57600080fd5b818501915085601f8301126200297f57600080fd5b81358181111562002994576200299462002eaf565b604051601f8201601f19908116603f01168101908382118183101715620029bf57620029bf62002eaf565b81604052828152886020848701011115620029d957600080fd5b8260208601602083013760006020848301015280955050505050509250929050565b60006020828403121562002a0e57600080fd5b5035919050565b60006020828403121562002a2857600080fd5b5051919050565b6000806040838503121562002a4357600080fd5b50508035926020909101359150565b60006020828403121562002a6557600080fd5b813563ffffffff81168114620015f457600080fd5b60006020828403121562002a8d57600080fd5b81356001600160601b0381168114620015f457600080fd5b6000815180845262002abf81602086016020860162002dc3565b601f01601f19169290920160200192915050565b6000825162002ae781846020870162002dc3565b9190910192915050565b6020808252825182820181905260009190848201906040850190845b8181101562002b345783516001600160a01b03168352928401929184019160010162002b0d565b50909695505050505050565b6020808252825182820181905260009190848201906040850190845b8181101562002b345783518352928401929184019160010162002b5c565b821515815260406020820152600062002210604083018462002aa5565b604081016002841062002bba57634e487b7160e01b600052602160045260246000fd5b9281526001600160a01b039190911660209091015290565b602081526000620015f4602083018462002aa5565b602081526000825161014080602085015262002c0861016085018362002aa5565b91506020850151601f198086850301604087015262002c28848362002aa5565b93506040870151915062002c4760608701836001600160a01b03169052565b606087015163ffffffff81166080880152915060808701516001600160a01b03811660a0880152915060a087015160ff811660c0880152915060c08701519150808685030160e087015262002c9d848362002aa5565b935060e0870151915061010081878603018188015262002cbe858462002aa5565b94508088015192505061012081878603018188015262002cdf858462002aa5565b9450808801519250505062002cfe828601826001600160601b03169052565b5090949350505050565b6000808335601e1984360301811262002d2057600080fd5b83018035915067ffffffffffffffff82111562002d3c57600080fd5b6020019150600581901b36038213156200089f57600080fd5b6000821982111562002d6b5762002d6b62002e41565b500190565b60008262002d825762002d8262002e57565b500490565b600081600019048311821515161562002da45762002da462002e41565b500290565b60008282101562002dbe5762002dbe62002e41565b500390565b60005b8381101562002de057818101518382015260200162002dc6565b83811115620009595750506000910152565b60008162002e045762002e0462002e41565b506000190190565b600060001982141562002e235762002e2362002e41565b5060010190565b60008262002e3c5762002e3c62002e57565b500690565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052601260045260246000fd5b634e487b7160e01b600052602160045260246000fd5b634e487b7160e01b600052603160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6001600160a01b03811681146200109b57600080fd5b80151581146200109b57600080fdfe60e060405234801561001057600080fd5b50604051610c42380380610c4283398101604081905261002f91610046565b3360601b60805260a082905260c05260005561006a565b6000806040838503121561005957600080fd5b505080516020909101519092909150565b60805160601c60a05160c051610b536100ef600039600081816101090152818161088601526108ad01526000818160cd0152818161031a015281816103df01526104fe015260008181610185015281816102990152818161034401528181610441015281816105250152818161060d0152818161073f01526107f30152610b536000f3fe608060405234801561001057600080fd5b506004361061009e5760003560e01c80636ba18f92116100665780636ba18f921461012b5780636e04ff0d146101345780637da0a87714610155578063ac757e0714610180578063da742228146101a757600080fd5b806326987b60146100a3578063363487bc146100bf5780633e0e828b146100c85780634585e33b146100ef5780635ac293c914610104575b600080fd5b6100ac60005481565b6040519081526020015b60405180910390f35b6100ac60015481565b6100ac7f000000000000000000000000000000000000000000000000000000000000000081565b6101026100fd366004610956565b6101ba565b005b6100ac7f000000000000000000000000000000000000000000000000000000000000000081565b6100ac60025481565b610147610142366004610956565b6104f4565b6040516100b6929190610a20565b600354610168906001600160a01b031681565b6040516001600160a01b0390911681526020016100b6565b6101687f000000000000000000000000000000000000000000000000000000000000000081565b6101026101b53660046108d9565b610734565b6003546001600160a01b031633146101e557604051630101292160e31b815260040160405180910390fd5b60006101ef6107ee565b90506000808080610202868801886109e1565b935093509350935042836002546102199190610a7f565b118061022457508484115b156102425760405163865676e360e01b815260040160405180910390fd5b600061024f600187610ad8565b8514905060006001600160a01b0384161561031857604051637468138360e11b81526001600160a01b038581166004830152602482018590526044820187905283151560648301527f0000000000000000000000000000000000000000000000000000000000000000169063e8d0270690608401602060405180830381600087803b1580156102dd57600080fd5b505af11580156102f1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103159190610934565b90505b7f000000000000000000000000000000000000000000000000000000000000000060005414156103d7577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663e7edb16f6040518163ffffffff1660e01b815260040160206040518083038186803b15801561039b57600080fd5b505afa1580156103af573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103d391906109c8565b6001555b81156104ab577f00000000000000000000000000000000000000000000000000000000000000006000558461040c8142610a97565b6104169190610ab9565b6002556001600160a01b0384166104a657600254604051635d07a0f760e11b815260048101919091527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063ba0f41ee90602401600060405180830381600087803b15801561048d57600080fd5b505af11580156104a1573d6000803e3d6000fd5b505050505b6104ba565b6104b6866001610a7f565b6000555b6040518115159087907f1f53608f0561c2211649fe13a5f33e3f481b5bb951ba008e8c6e7805d1ef3b0a90600090a3505050505050505050565b60008054606090827f000000000000000000000000000000000000000000000000000000000000000082116105b9577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663e7edb16f6040518163ffffffff1660e01b815260040160206040518083038186803b15801561057c57600080fd5b505afa158015610590573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105b491906109c8565b6105bd565b6001545b905042816002546105ce9190610a7f565b101561072a5760006105de6107ee565b604051633257769f60e11b81526004810185905260248101829052909150600090819081906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906364aeed3e9060440160606040518083038186803b15801561064f57600080fd5b505afa158015610663573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061068791906108fd565b919450925090506001600160a01b0383166106de5760016106a88186610ad8565b6040805160208101929092528101879052600060608201819052608082015260a00160405160208183030381529060405261071b565b60408051602081018490529081018690526001600160a01b03841660608201526080810182905260019060a0016040516020818303038152906040525b9750975050505050505061072d565b50505b9250929050565b336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461077d57604051630101292160e31b815260040160405180910390fd5b6001600160a01b0381166107a4576040516302154e0360e21b815260040160405180910390fd5b600380546001600160a01b0319166001600160a01b0383169081179091556040517fd91237492a9e30cd2faf361fc103998a382ff0ec2b1b07dc1cbebb76ae2f1ea290600090a250565b6000807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316639a552a296040518163ffffffff1660e01b815260040160206040518083038186803b15801561084a57600080fd5b505afa15801561085e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061088291906109c8565b90507f000000000000000000000000000000000000000000000000000000000000000081106108d1577f00000000000000000000000000000000000000000000000000000000000000006108d3565b805b91505090565b6000602082840312156108eb57600080fd5b81356108f681610b05565b9392505050565b60008060006060848603121561091257600080fd5b835161091d81610b05565b602085015160409095015190969495509392505050565b60006020828403121561094657600080fd5b815180151581146108f657600080fd5b6000806020838503121561096957600080fd5b823567ffffffffffffffff8082111561098157600080fd5b818501915085601f83011261099557600080fd5b8135818111156109a457600080fd5b8660208285010111156109b657600080fd5b60209290920196919550909350505050565b6000602082840312156109da57600080fd5b5051919050565b600080600080608085870312156109f757600080fd5b84359350602085013592506040850135610a1081610b05565b9396929550929360600135925050565b821515815260006020604081840152835180604085015260005b81811015610a5657858101830151858201606001528201610a3a565b81811115610a68576000606083870101525b50601f01601f191692909201606001949350505050565b60008219821115610a9257610a92610aef565b500190565b600082610ab457634e487b7160e01b600052601260045260246000fd5b500490565b6000816000190483118215151615610ad357610ad3610aef565b500290565b600082821015610aea57610aea610aef565b500390565b634e487b7160e01b600052601160045260246000fd5b6001600160a01b0381168114610b1a57600080fd5b5056fea26469706673582212208f21a58a02dd27ede855af6cf27d49133cb248b95d0b184271ed517a852bc49564736f6c63430008060033a26469706673582212201fc2aa3f4d717bdcc2521524d5cdfc5fed0601dac4f78b0c613cb8da0eb0085564736f6c63430008060033000000000000000000000000350a791bfc2c21f9ed5d10980dad2e2638ffa7f6000000000000000000000000696fb0d7d069cc0bb35a7c36115ce63e55cb9aa6000000000000000000000000e601c5837307f07ab39deb0f5516602f045bf14f00000000000000000000000041c914ee0c7e1a5edcd0295623e6dc557b5abf3c000000000000000000000000f5129e7a277a9b897c5ca80346a828b8e88798720000000000000000000000009d360706c7608e85a79c0f6efea554f50e37c871000000000000000000000000000000000000000000000001158e460913d0000000000000000000000000000000000000000000000000000000000000004c4b40